156 lines
15 KiB
Plaintext
156 lines
15 KiB
Plaintext
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" version="29.2.4">
|
|
<diagram id="classdiagram" name="类关系图">
|
|
<mxGraphModel dx="1437" dy="882" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1400" pageHeight="1000" math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
<mxCell id="presentation" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;align=left;fontSize=11;" value="<b>Presentation</b><br>- name: String<br>- slides: List&lt;Slide&gt;<br>- currentSlideIndex: int<br>+ getName/setName()<br>+ getSlides()<br>+ addSlide()<br>+ removeSlide()" vertex="1">
|
|
<mxGeometry height="140" width="200" x="50" y="50" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="slide" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;align=left;fontSize=11;" value="<br><b>Slide</b><br>- id: String<br>- name: String<br>- pages: List&lt;SlidePage&gt;<br>- currentPageIndex: int<br>+ getName/setName()<br>+ getPages()<br>+ addPage()<br>+ removePage()" vertex="1">
|
|
<mxGeometry height="140" width="200" x="350" y="50" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="slidepage" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;align=left;fontSize=11;" value="<br><b>SlidePage</b><br>- id: String<br>- title: String<br>- pageContent: PageContent<br>+ getTitle/setTitle()<br>+ getPageContent()" vertex="1">
|
|
<mxGeometry height="130" width="200" x="650" y="50" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="pagecontent" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;align=left;fontSize=11;" value="<b>PageContent</b><br>- drawableObjects: List<br>+ addObject()<br>+ removeObject()<br>+ findObjectAt()<br>+ getDrawableObjects()" vertex="1">
|
|
<mxGeometry height="130" width="200" x="1010" y="70" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="drawableobject" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d4e6f1;strokeColor=#3498db;align=left;fontSize=11;" value="<b>DrawableObject</b><br>- x, y: double<br>- width, height: double<br>- id: String<br>- selected: boolean<br>+ getX/setX()<br>+ contains()<br>+ getTypeName()" vertex="1">
|
|
<mxGeometry height="150" width="220" x="920" y="470" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="textobject" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#c8e6c9;strokeColor=#66bb6a;align=left;fontSize=11;" value="<b>TextObject</b><br>- text: String<br>- fontFamily: String<br>- fontSize: double<br>- fontStyle: String<br>- textColor: String<br>+ getText/setText()<br>+ getLayoutLines()" vertex="1">
|
|
<mxGeometry height="130" width="200" x="390" y="1120" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="shapeobject" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#c8e6c9;strokeColor=#66bb6a;align=left;fontSize=11;" value="<b>ShapeObject</b><br>- shapeType: enum<br>- fillColor: String<br>- strokeColor: String<br>- strokeWidth: double<br>+ getShapeType()<br>+ setFillColor()" vertex="1">
|
|
<mxGeometry height="130" width="200" x="1340" y="910" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="imageobject" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#c8e6c9;strokeColor=#66bb6a;align=left;fontSize=11;" value="<br><b>ImageObject</b><br>- imagePath: String<br>+ getImagePath()<br>+ setImagePath()" vertex="1">
|
|
<mxGeometry height="100" width="180" x="1520" y="490" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="controller" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#bbdefb;strokeColor=#1976d2;align=left;fontSize=10;" value="<b>Controller</b><br><i>implements Initializable</i><br>- currentSlide: Slide<br>- drawingCanvas: DrawingCanvas<br>- commandHistory: CommandHistory<br>- themeManager: ThemeManager<br>+ initialize()<br>+ onNewSlide()<br>+ displayPageContent()" vertex="1">
|
|
<mxGeometry height="150" width="220" x="160" y="360" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="drawingcanvas" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#bbdefb;strokeColor=#1976d2;align=left;fontSize=10;" value="<br><b>DrawingCanvas</b><br><i>extends Pane</i><br>- canvas: Canvas<br>- pageContent: PageContent<br>- selectedObject: DrawableObject<br>- commandHistory: CommandHistory<br>+ redraw()<br>+ handleMousePressed()<br>+ setSelectedObject()" vertex="1">
|
|
<mxGeometry height="150" width="220" x="580" y="770" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="propertypanel" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#bbdefb;strokeColor=#1976d2;align=left;fontSize=10;" value="<b>PropertyPanel</b><br><i>extends VBox</i><br>- objectTypeLabel: Label<br>- fontFamilyCombo: ComboBox<br>- textColorPicker: ColorPicker<br>- canvas: DrawingCanvas<br>+ updateProperty()<br>+ deleteSelectedObject()" vertex="1">
|
|
<mxGeometry height="150" width="220" x="650" y="250" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="presentationwindow" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#bbdefb;strokeColor=#1976d2;align=left;fontSize=10;" value="<b>PresentationWindow</b><br>- slide: Slide<br>- stage: Stage<br>- canvas: Canvas<br>- currentPageIndex: int<br>- currentTransition: TransitionEffect<br>+ show()<br>+ nextPage()<br>+ drawCurrentPage()" vertex="1">
|
|
<mxGeometry height="140" width="220" x="1520" y="710" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="command" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;align=left;fontSize=11;" value="<b>Command</b><br>+ execute()<br>+ undo()" vertex="1">
|
|
<mxGeometry height="100" width="160" x="20" y="1180" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="addcmd" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fce4d6;strokeColor=#ea6b66;align=left;fontSize=10;" value="<br><b>AddObjectCommand</b><br><i>implements Command</i><br>- pageContent: PageContent<br>- object: DrawableObject" vertex="1">
|
|
<mxGeometry height="100" width="200" x="130" y="950" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="deletecmd" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fce4d6;strokeColor=#ea6b66;align=left;fontSize=10;" value="<b>DeleteObjectCommand</b><br><i>implements Command</i><br>- pageContent: PageContent<br>- object: DrawableObject" vertex="1">
|
|
<mxGeometry height="100" width="210" x="210" y="1300" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="modifycmd" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fce4d6;strokeColor=#ea6b66;align=left;fontSize=10;" value="<br><b>ModifyObjectCommand</b><br><i>implements Command</i><br>- object: DrawableObject<br>- oldState/newState" vertex="1">
|
|
<mxGeometry height="100" width="210" x="330" y="830" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="commandhistory" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;align=left;fontSize=10;" value="<br><b>CommandHistory</b><br>- undoStack: Stack<br>- redoStack: Stack<br>+ execute()<br>+ undo()<br>+ redo()<br>+ canUndo/canRedo()" vertex="1">
|
|
<mxGeometry height="130" width="180" x="1160" y="680" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="theme" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f0f4c3;strokeColor=#c0ca33;align=left;fontSize=10;" value="<b>Theme</b><br>- name: String<br>- backgroundColor: Color<br>- menuBarColor: Color<br>- primaryColor: Color<br>- secondaryColor: Color<br>+ getters/setters" vertex="1">
|
|
<mxGeometry height="130" width="200" x="1300" y="50" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="thememanager" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f0f4c3;strokeColor=#c0ca33;align=left;fontSize=10;" value="<b>ThemeManager</b><br><i>(Singleton)</i><br>- instance: ThemeManager<br>- themes: Map&lt;String, Theme&gt;<br>- currentTheme: Theme<br>+ getInstance()<br>+ switchTheme()" vertex="1">
|
|
<mxGeometry height="140" width="200" x="1600" y="300" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge1" edge="1" parent="1" source="presentation" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;" target="slide" value="包含">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge2" edge="1" parent="1" source="slide" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;" target="slidepage" value="包含">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge3" edge="1" parent="1" source="slidepage" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;" target="pagecontent" value="包含">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge4" edge="1" parent="1" source="pagecontent" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;" target="drawableobject" value="包含">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge5" edge="1" parent="1" source="textobject" style="endArrow=block;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;dashed=0;" target="drawableobject" value="继承">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge6" edge="1" parent="1" source="shapeobject" style="endArrow=block;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;dashed=0;" target="drawableobject" value="继承">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="1070" y="975" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="edge7" edge="1" parent="1" source="imageobject" style="endArrow=block;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;dashed=0;" target="drawableobject" value="继承">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge11" edge="1" parent="1" source="controller" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;" target="drawingcanvas" value="使用">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="690" y="480" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="edge12" edge="1" parent="1" source="controller" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;" target="propertypanel" value="使用">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge13" edge="1" parent="1" source="drawingcanvas" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;" target="pagecontent" value="使用">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="1120" y="845" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="edge14" edge="1" parent="1" source="propertypanel" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;" target="drawingcanvas" value="使用">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="760" y="585" />
|
|
<mxPoint x="720" y="585" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="edge15" edge="1" parent="1" source="presentationwindow" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;" target="slide" value="使用">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="450" y="630" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="edge16" edge="1" parent="1" source="addcmd" style="endArrow=block;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;dashed=1;" target="command" value="实现">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge17" edge="1" parent="1" source="deletecmd" style="endArrow=block;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;dashed=1;" target="command" value="实现">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge18" edge="1" parent="1" source="modifycmd" style="endArrow=block;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;dashed=1;" target="command" value="实现">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge19" edge="1" parent="1" source="commandhistory" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;" target="command" value="管理">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge20" edge="1" parent="1" source="controller" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;exitX=1.001;exitY=0.624;exitDx=0;exitDy=0;exitPerimeter=0;" target="commandhistory" value="使用">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge21" edge="1" parent="1" source="drawingcanvas" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;" target="commandhistory" value="使用">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<Array as="points">
|
|
<mxPoint x="980" y="820" />
|
|
<mxPoint x="980" y="760" />
|
|
</Array>
|
|
</mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="edge22" edge="1" parent="1" source="thememanager" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;" target="theme" value="管理">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="edge23" edge="1" parent="1" source="controller" style="endArrow=open;html=1;endSize=12;edgeStyle=orthogonalEdgeStyle;exitX=1.011;exitY=0.326;exitDx=0;exitDy=0;exitPerimeter=0;" target="thememanager" value="使用">
|
|
<mxGeometry relative="1" as="geometry">
|
|
<mxPoint x="390" y="410" as="sourcePoint" />
|
|
</mxGeometry>
|
|
</mxCell>
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|