diff --git a/.idea/libraries/lib.xml b/.idea/libraries/lib.xml new file mode 100644 index 0000000000000000000000000000000000000000..11cd899108c88a78a3215a30f91e6cf45d683465 --- /dev/null +++ b/.idea/libraries/lib.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 3b6732132dace40f5014f39118f757c329d8e1e5..2283c5415ce7c1c419148a823122279689f97dcf 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,7 +7,7 @@ - + \ No newline at end of file diff --git a/Mark-Map-SCAU.iml b/Mark-Map-SCAU.iml index b99096fe283842f91a0d12dabaef40e80ddbc703..636d0f33f93215656d70d4ecc7cd568fd0e93e41 100644 --- a/Mark-Map-SCAU.iml +++ b/Mark-Map-SCAU.iml @@ -25,5 +25,6 @@ + \ No newline at end of file diff --git a/src/main/java/scau/markmapscau/Control/Controller.java b/src/main/java/scau/markmapscau/Control/Controller.java index 092c6ed345a7d1f5b786507e6edc566b54c04c39..48df7f152cdefb0079f022035ed281e8afc0368c 100644 --- a/src/main/java/scau/markmapscau/Control/Controller.java +++ b/src/main/java/scau/markmapscau/Control/Controller.java @@ -1,16 +1,40 @@ package scau.markmapscau.Control; +import javafx.embed.swing.SwingFXUtils; import javafx.event.ActionEvent; import javafx.fxml.FXML; + +import java.awt.event.MouseEvent; +import java.awt.image.RenderedImage; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import javafx.geometry.Insets; +import javafx.scene.SnapshotParameters; import javafx.scene.control.ScrollPane; +import javafx.scene.image.WritableImage; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Pane; +import javafx.scene.image.WritableImage; +import javafx.scene.layout.VBox; +import javafx.stage.FileChooser; +import javafx.stage.Stage; +import javafx.scene.Scene; import scau.markmapscau.LaunchMain; import scau.markmapscau.Model.Enum.ArrangeMode; import scau.markmapscau.Model.Node.NodeArranger; import scau.markmapscau.View.ViewerArranger; +import scau.markmapscau.Model.Tool.ToolArranger; import scau.markmapscau.Model.Node.Node; +import javax.imageio.ImageIO; +import java.awt.*; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.logging.Level; +import java.util.logging.Logger; + //controller调用写好的工具类,完成各项功能 public class Controller { @@ -78,6 +102,68 @@ public class Controller { MindMarkZone.setPrefWidth(viewerArranger.nodeArranger.getMinWidth()+EXTRA); } + @FXML + void openFile(ActionEvent event){ + ViewerArranger viewerArranger = LaunchMain.viewerArranger; + //返回从文件读到的哈希表信息 + LinkedHashMap nodeList=viewerArranger.toolArranger.openFile(); + System.out.println(nodeList); + //清除绘图区 + MindMarkZone.getChildren().clear(); + //根据返回的信息哈希表,读取每个结点信息画框和结构树 + viewerArranger.nodeArranger.setNodeList(nodeList); + viewerArranger.drawNodes(nodeList); + //画线 +// arrangeMode = ArrangeMode.RIGHT; + viewerArranger.getLayout(arrangeMode); + viewerArranger.drawLines(arrangeMode); + MindMapScrollPane.setVvalue(0.45); + MindMapScrollPane.setHvalue(0); +// 根据结点来读 +// for(int i=0;i< nodeList.size();i++) { +// Node node = (Node)nodeList.get(i); + //输出看看有没有读取成功每一个结点信息 +// System.out.println(nodeList); +// viewerArranger.newNodeByParent(node.getId()); + } +// } + + @FXML + void saveFile(ActionEvent event){ + ViewerArranger viewerArranger = LaunchMain.viewerArranger; + //需要获取一个保存的目标文件的绝对路径 + LinkedHashMap nodeList = viewerArranger.nodeArranger.getNodeList(); + viewerArranger.toolArranger.saveFile(nodeList); + } + + + @FXML + void exportPicture(ActionEvent event) { + //注意:在Tool类无法获得绘图区面板MindMarkZone,所以直接在这实现 + ViewerArranger viewerArranger = LaunchMain.viewerArranger; + //获取返回文件 + File exportFileChooser = viewerArranger.toolArranger.exportPicture(); +// String exportFilePath = exportFileChooser.getAbsolutePath(); + //以快照snapshot的形式读取 + //缓存保存字节数组 + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + //TODO:调整整个绘图区面板的的大小,适应结点数量和大小 + WritableImage writableImage =new WritableImage((int)MindMarkZone.getWidth(),(int)MindMarkZone.getHeight()); + writableImage = MindMarkZone.snapshot(null,writableImage); + if(exportFileChooser != null){ + try{ + ImageIO.write(SwingFXUtils.fromFXImage(writableImage,null),"PNG",byteArrayOutputStream); + ImageIO.write(SwingFXUtils.fromFXImage(writableImage,null),"JPG",byteArrayOutputStream); + FileOutputStream fileOutputStream = new FileOutputStream(exportFileChooser); + fileOutputStream.write((byteArrayOutputStream.toByteArray())); + fileOutputStream.close(); + byteArrayOutputStream.close(); + }catch (IOException e){ + System.out.println("Couldn't Export As a Picture!"); + } + } + } + @FXML void onChaneLayoutRight(ActionEvent event) {//重新布局,改为右侧布局 arrangeMode = ArrangeMode.RIGHT; diff --git a/src/main/java/scau/markmapscau/LaunchMain.java b/src/main/java/scau/markmapscau/LaunchMain.java index 9907d82fc2a7facafa334607814b36e86d5ad5a0..cb81d55d740e3ecca987344818d70ec561cc3afa 100644 --- a/src/main/java/scau/markmapscau/LaunchMain.java +++ b/src/main/java/scau/markmapscau/LaunchMain.java @@ -8,6 +8,7 @@ import javafx.scene.control.ScrollPane; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Pane; import javafx.stage.Stage; +import javafx.stage.FileChooser; import scau.markmapscau.Model.Node.NodeArranger; import scau.markmapscau.Model.Tool.ToolArranger; diff --git a/src/main/java/scau/markmapscau/Model/Node/Node.java b/src/main/java/scau/markmapscau/Model/Node/Node.java index ab4625700b6ae63be92d5c403fa3a0e9623dc8f2..cabec225d849253ed5a10f6f46bcdc66a293ae80 100644 --- a/src/main/java/scau/markmapscau/Model/Node/Node.java +++ b/src/main/java/scau/markmapscau/Model/Node/Node.java @@ -1,9 +1,10 @@ package scau.markmapscau.Model.Node; +import java.io.Serializable; import java.util.List; import java.util.LinkedList; -public class Node { +public class Node implements Serializable { /*数据域*/ private int id;//1.该节点的唯一标识号 private int parentId;//2.该节点所对应的父节点的编号 diff --git a/src/main/java/scau/markmapscau/Model/Node/NodeArranger.java b/src/main/java/scau/markmapscau/Model/Node/NodeArranger.java index 60584d3e4c3ab54f8ce6c751672700345f29ebb4..55f62ed6c786c6201bbcb11664ce834c970e4b8b 100644 --- a/src/main/java/scau/markmapscau/Model/Node/NodeArranger.java +++ b/src/main/java/scau/markmapscau/Model/Node/NodeArranger.java @@ -106,7 +106,10 @@ public class NodeArranger implements NodeUtilInterface{ } @Override - public HashMap getNodeList() {return nodeList;} + public LinkedHashMap getNodeList() {return nodeList;} + public void setNodeList(LinkedHashMap nodeList){ + this.nodeList=nodeList; + } public double getNodeWidth(int depth){return WIDTH*scaleList.get(depth);} diff --git a/src/main/java/scau/markmapscau/Model/Tool/Tool.java b/src/main/java/scau/markmapscau/Model/Tool/Tool.java index f16ce7e3aa08543c772986faf930c7e0a1e1bc67..70b29d4e9e83b56f98d6b948775f8c2148e1e2f5 100644 --- a/src/main/java/scau/markmapscau/Model/Tool/Tool.java +++ b/src/main/java/scau/markmapscau/Model/Tool/Tool.java @@ -1,5 +1,25 @@ package scau.markmapscau.Model.Tool; +import javafx.stage.FileChooser; +import javafx.stage.Stage; +import scau.markmapscau.Model.Node.Node; +import scau.markmapscau.Model.Node.NodeArranger; +import java.io.*; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Properties; + public class Tool { + //没用到,因为不会用这个方法... + private static Properties properties = new Properties(); + private static InputStream inputStream = Object.class.getResourceAsStream("/FileProperty.properties"); + static { + try { + properties.load(inputStream); + } catch (Exception e) { + e.printStackTrace(); + } + } } + diff --git a/src/main/java/scau/markmapscau/Model/Tool/ToolArranger.java b/src/main/java/scau/markmapscau/Model/Tool/ToolArranger.java index ed3c7b82ee5e2b18e8d1f00ae2912585d5cff7b2..edf85b967bf74257f2010839080106a6d2366bdc 100644 --- a/src/main/java/scau/markmapscau/Model/Tool/ToolArranger.java +++ b/src/main/java/scau/markmapscau/Model/Tool/ToolArranger.java @@ -1,5 +1,143 @@ package scau.markmapscau.Model.Tool; -public class ToolArranger { +import java.awt.*; +import java.io.*; +import java.util.HashMap; +import java.util.LinkedHashMap; +import javafx.embed.swing.SwingFXUtils; +import javafx.scene.SnapshotParameters; +import javafx.scene.image.WritableImage; +import javafx.scene.layout.AnchorPane; +import javafx.stage.FileChooser; +import javafx.stage.Stage; +import scau.markmapscau.LaunchMain; +import scau.markmapscau.View.ViewerArranger; +import scau.markmapscau.Model.Node.Node; +import scau.markmapscau.Model.Node.NodeArranger; +import javax.imageio.ImageIO; +import javax.swing.*; -} + +public class ToolArranger implements Serializable{ + //打开桌面路径 + private final Desktop desktop = Desktop.getDesktop(); + + /*导出为.jpg或者png图像保存到本地*/ + public File exportPicture(){ + //选定保存路径,返回 + Stage exportStage = new Stage(); + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Export As Image"); + fileChooser.getExtensionFilters().addAll( + new FileChooser.ExtensionFilter("JPG","*.jpg"), + new FileChooser.ExtensionFilter("PNG","*.png") + ); + File exportFileChooser = fileChooser.showSaveDialog(exportStage); +// String exportFilePath = exportFileChooser.getAbsolutePath(); +// System.out.println(exportFilePath); + return exportFileChooser; + } + + /*保存思维导图文件*/ + public void saveFile(LinkedHashMap nodeList) { + /* + 1.先读取nodeList(所有结点的所有信息) + 2.把读取到的信息写进一个可自定义后缀的文件 + * */ + //TODO:实现自定义后缀 + Stage saveStage = new Stage(); + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Save the MindMap As a File"); + FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files(*.txt)","*.txt"); + fileChooser.getExtensionFilters().add(extFilter); + File fileSaveChooser = fileChooser.showSaveDialog(saveStage); +// System.out.println(fileSaveChooser); + //TODO:手动创建弹窗窗口 + if (fileSaveChooser == null) { + //当没有选择文件时,提示“未选择文件” + JOptionPane.showMessageDialog(null, "没有选择文件"); + }else if(fileSaveChooser.exists()){ + //当文件以存在时,则删除,覆盖保存 + fileSaveChooser.delete(); + }else { + //保存 + try { +// String saveFilePath = fileSaveChooser.getAbsolutePath(); +// System.out.println("保存文件的路径"+saveFilePath); + //根据要保存的文件创建对象输出流,序列化输出 + FileOutputStream fileOutputStream = new FileOutputStream(fileSaveChooser); + ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); + //将容器里所绘制的利用对象全部写入选中的文件中 + //注意:终端输出没问题,但是用IDEA保存用UTF-8在.txt是以二进制编码输出,所以打开文件会出现乱码 + System.out.println(nodeList.values()); + objectOutputStream.writeObject(nodeList); +// for(Node node:nodeList.values()){ +// System.out.println(node); +// objectOutputStream.writeObject(node); +// } + JOptionPane.showMessageDialog(null, "保存成功!"); + objectOutputStream.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (Exception e){ + e.printStackTrace(); + } + } + } + + /*打开思维导图文件*/ + public LinkedHashMap openFile() { + //TODO:判断当前是否为空,如果原有思维导图,则提示是否要保存,再打开 + /*其实一共就做两件事: + 1.获取打开路径 + 2.判断当前面板是否有思维导图 + 3.根据nodeList的信息画出每一个结点 + */ + LinkedHashMap nodeList = new LinkedHashMap(); + Integer isSave = JOptionPane.showConfirmDialog(null,"是否保存当前已有思维导图"); + if (isSave == 0){ + //这里有点问题 + //获取当前链表信息,再调用本类的saveFile() + saveFile(new NodeArranger().getNodeList()); + } + if(isSave == 1){ + //清空绘图区里的东西,或直接在controller实现 +// ViewerArranger viewerArranger = LaunchMain.viewerArranger; +// viewerArranger.cleanAnchorPane(); + try { + Stage openStage = new Stage(); + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Open a MindMap"); + FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("All files","*.*"); + fileChooser.getExtensionFilters().add(extFilter); + File fileOpenChooser = fileChooser.showOpenDialog(openStage); + System.out.println(fileOpenChooser); + //TODO:手动创建弹窗窗口 + if (fileOpenChooser == null) { + JOptionPane.showMessageDialog(null, "没有选中文件"); + } else { + //看一下打开的文件路径 +// String fileOpenPath = fileOpenChooser.getAbsolutePath(); +// System.out.println("打开文件的路径"+fileOpenPath); + FileInputStream fileInputStream = new FileInputStream(fileOpenChooser); + ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); + //将读出来的对象转换为哈希表类型进行接受 + nodeList = (LinkedHashMap)objectInputStream.readObject(); + System.out.println(nodeList); + //遍历文件里面的结点信息,将每一节点信息取出来保存 +// for(int i=0;i< nodeList.size();i++) { +// Node node = (Node)nodeList.get(i); +// ViewerArranger drawNode = LaunchMain.viewerArranger; +// drawNode.newNodeByParent(node.getId()); + //输出看看有没有读取成功每一个结点信息 +// System.out.println(node); +// } + objectInputStream.close(); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + return nodeList; + } +} \ No newline at end of file diff --git a/src/main/java/scau/markmapscau/View/ViewerArranger.java b/src/main/java/scau/markmapscau/View/ViewerArranger.java index e74792c38c0210f5029f8920a022b2a98941c339..54eff1202ba396463a2f545d739986419b15f7c7 100644 --- a/src/main/java/scau/markmapscau/View/ViewerArranger.java +++ b/src/main/java/scau/markmapscau/View/ViewerArranger.java @@ -8,7 +8,7 @@ import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.Pane; - +import javafx.application.Platform; import javafx.scene.shape.Line; import javafx.scene.text.Font; @@ -55,6 +55,7 @@ public class ViewerArranger { this.pane=pane;//结构区 } + /*以下是思维导图的绘画工作函数*/ //画出单个节点 public void drawSingleNode(Node node){ @@ -114,10 +115,11 @@ public class ViewerArranger { this.anchorPane.getChildren().clear(); //遍历节点链表,画图 this.nodeArranger.deBug(); - this.nodeArranger.getNodeList().forEach((key,value)->{ +// this.nodeArranger.getNodeList().forEach((key,value)->{ + nodeList.forEach((key,value)->{ this.drawSingleNode(value); }); - drawTree(); + drawTree(nodeList); } public void newNodeByParent(int parentId){ @@ -185,7 +187,12 @@ public class ViewerArranger { } } for(Line line:lineArray){ - this.anchorPane.getChildren().add(line); + //对绘图图进行修改时,不能同时进行 + new Thread(()->{ + Platform.runLater(()->{ + this.anchorPane.getChildren().add(line); + }); + }).start(); } } @@ -228,7 +235,12 @@ public class ViewerArranger { } } for(Line line:lineArray){ - this.anchorPane.getChildren().add(line); + //对绘图图进行修改时,不能同时进行 + new Thread(()->{ + Platform.runLater(()->{ + this.anchorPane.getChildren().add(line); + }); + }).start(); } } @@ -242,11 +254,16 @@ public class ViewerArranger { Node parentNode = this.nodeArranger.getNodeList().get(0); for(int id:parentNode.getSonNodeList()){ Node node = this.nodeArranger.getNodeList().get(id); - if(parentNode.getNodeLocationX()>node.getNodeLocationX()){//当父亲节点的X坐标大于孩子节点坐标,就是左侧布局 - hasLeftChild =true;//左侧布局就有左孩子 - }else{ - hasRightChild = true; - } + //对绘图图进行修改时,不能同时进行 + new Thread(()->{ + Platform.runLater(()->{ + if(parentNode.getNodeLocationX()>node.getNodeLocationX()){//当父亲节点的X坐标大于孩子节点坐标,就是左侧布局 + hasLeftChild =true;//左侧布局就有左孩子 + }else{ + hasRightChild = true; + } + }); + }).start(); } connectLineRight(0); connectLineLeft(0); @@ -292,35 +309,47 @@ public class ViewerArranger { //zzzz /*结构区绘图*/ //每删除、添加节点就遍历链表并画图 - public void drawTree() { + public void drawTree(HashMap nodeList) { //1.先清空pane this.pane.getChildren().clear(); //2.遍历节点,画图 - HashMap nodelist=this.nodeArranger.getNodeList(); - System.out.println(nodelist); - TreeItem treeItem=new TreeItem<>(nodelist.get(0).getContent());//该节点为根部节点 - treeItem.setExpanded(true); - goThrough(nodelist.get(0),treeItem);//从第一个节点开始遍历 - TreeView treeView=new TreeView<>(treeItem); - treeView.setPrefWidth(this.pane.getPrefWidth()); - System.out.println(this.pane.getHeight()); - treeView.setPrefHeight(this.pane.getHeight()); - this.pane.getChildren().add(treeView); +// HashMap nodelist=this.nodeArranger.getNodeList(); + System.out.println(nodeList); + //因为直接对Pane进行了设置,直接刷新了UI,但操作只能在JavaFX Application Thread(单线程)上 + //调用方法在任何现线程执行场景元素的操作,可能会出现结点序号错误的的情况 + new Thread(() ->{ + Platform.runLater(() ->{ + TreeItem treeItem=new TreeItem<>(nodeList.get(0).getContent());//该节点为根部节点 + treeItem.setExpanded(true); + goThrough(nodeList,nodeList.get(0),treeItem);//从第一个节点开始遍历 + TreeView treeView=new TreeView<>(treeItem); + treeView.setPrefWidth(this.pane.getPrefWidth()); + System.out.println(this.pane.getHeight()); + treeView.setPrefHeight(this.pane.getHeight()); + this.pane.getChildren().add(treeView); + }); + }).start(); //3.遍历完后要全部再重置 - for(Node node:nodelist.values()){ + for(Node node:nodeList.values()){ node.setIsTraverse(false); } } - public void goThrough(Node node,TreeItem treeItem){ + public void goThrough(HashMap nodeList,Node node,TreeItem treeItem){ for(int i=0;i(this.nodeArranger.getNodeList().get((int)node.getSonNodeList().get(i)).getContent()); + TreeItem item =new TreeItem<>(nodeList.get((int)node.getSonNodeList().get(i)).getContent()); treeItem.getChildren().add(item); item.setExpanded(true); node.setIsTraverse(true); - goThrough(this.nodeArranger.getNodeList().get((int)node.getSonNodeList().get(i)),item); + //打开时:这里需要通过得到nodeList直接画树 + goThrough(nodeList,nodeList.get((int)node.getSonNodeList().get(i)),item); } } + //清空绘图区 + public void cleanAnchorPane(){ + this.anchorPane.getChildren().clear(); + } + //不会用迭代器,随便了反正也没人看。 // public void goThrough(Node node){//节点和展示的第几个 // this.sum++; diff --git a/src/main/resources/scau/markmapscau/scau-markmap.fxml b/src/main/resources/scau/markmapscau/scau-markmap.fxml index 5f45269e6fdc08d0ff42c7745f423b8292a998df..bab44b607252d81a7a0b2950c84e031bc04396a0 100644 --- a/src/main/resources/scau/markmapscau/scau-markmap.fxml +++ b/src/main/resources/scau/markmapscau/scau-markmap.fxml @@ -122,22 +122,34 @@ - - - - - - - - - - - - - - - - + + diff --git a/target/classes/scau/markmapscau/Control/Controller.class b/target/classes/scau/markmapscau/Control/Controller.class index 3d6b30b2a6005a018354688115a51bbd36db2fd5..272ef9875d1c96f9001a9711e3355b25eab3795e 100644 Binary files a/target/classes/scau/markmapscau/Control/Controller.class and b/target/classes/scau/markmapscau/Control/Controller.class differ diff --git a/target/classes/scau/markmapscau/LaunchMain.class b/target/classes/scau/markmapscau/LaunchMain.class index 41c66e13417bfaa86c411363f1eca5b597346b44..5b0d382c38771749becd7f09257c43fc53f583cd 100644 Binary files a/target/classes/scau/markmapscau/LaunchMain.class and b/target/classes/scau/markmapscau/LaunchMain.class differ diff --git a/target/classes/scau/markmapscau/Model/Enum/ArrangeMode.class b/target/classes/scau/markmapscau/Model/Enum/ArrangeMode.class new file mode 100644 index 0000000000000000000000000000000000000000..04b71f3e0d62fff85dce929faf28af356e20bd47 Binary files /dev/null and b/target/classes/scau/markmapscau/Model/Enum/ArrangeMode.class differ diff --git a/target/classes/scau/markmapscau/Model/Node/Node.class b/target/classes/scau/markmapscau/Model/Node/Node.class index 7019142a85592f5f9d742027eee0110054a046e2..f5927749898aed703ecffb7e2a44cf46ca32eff8 100644 Binary files a/target/classes/scau/markmapscau/Model/Node/Node.class and b/target/classes/scau/markmapscau/Model/Node/Node.class differ diff --git a/target/classes/scau/markmapscau/Model/Node/NodeArranger$1.class b/target/classes/scau/markmapscau/Model/Node/NodeArranger$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8df651bd30e6c49fa1466f8d094efbf994207332 Binary files /dev/null and b/target/classes/scau/markmapscau/Model/Node/NodeArranger$1.class differ diff --git a/target/classes/scau/markmapscau/Model/Node/NodeArranger.class b/target/classes/scau/markmapscau/Model/Node/NodeArranger.class index 0c611d5c050a588ce23e0527c382f476aa47f3be..fe0d1f261669355845135b777637dd37fdb3341d 100644 Binary files a/target/classes/scau/markmapscau/Model/Node/NodeArranger.class and b/target/classes/scau/markmapscau/Model/Node/NodeArranger.class differ diff --git a/target/classes/scau/markmapscau/Model/Tool/Tool.class b/target/classes/scau/markmapscau/Model/Tool/Tool.class index 34f4dfaaaf47603579a984643bcd636c3dec8dfe..460cc9f142a2d0f171325d079b63f7c074475d71 100644 Binary files a/target/classes/scau/markmapscau/Model/Tool/Tool.class and b/target/classes/scau/markmapscau/Model/Tool/Tool.class differ diff --git a/target/classes/scau/markmapscau/Model/Tool/ToolArranger.class b/target/classes/scau/markmapscau/Model/Tool/ToolArranger.class index 1a1d818011221a8202490e0dba9842990462e5ce..58cb425013b1491a45eaaf0a77c3060297584854 100644 Binary files a/target/classes/scau/markmapscau/Model/Tool/ToolArranger.class and b/target/classes/scau/markmapscau/Model/Tool/ToolArranger.class differ diff --git a/target/classes/scau/markmapscau/View/ViewerArranger$1.class b/target/classes/scau/markmapscau/View/ViewerArranger$1.class new file mode 100644 index 0000000000000000000000000000000000000000..24fde3daf2667fa3c36ed1eb06c2ea3ca630b195 Binary files /dev/null and b/target/classes/scau/markmapscau/View/ViewerArranger$1.class differ diff --git a/target/classes/scau/markmapscau/View/ViewerArranger$2.class b/target/classes/scau/markmapscau/View/ViewerArranger$2.class new file mode 100644 index 0000000000000000000000000000000000000000..2f4a1cd66abc4b149504281c4a99cbc2005e5630 Binary files /dev/null and b/target/classes/scau/markmapscau/View/ViewerArranger$2.class differ diff --git a/target/classes/scau/markmapscau/View/ViewerArranger.class b/target/classes/scau/markmapscau/View/ViewerArranger.class index 5ee4985fe71d7d9ee718ba12e535d58ba25f9ec8..fe5cb04987d1d770f9ba87c96a1a90b16e06d922 100644 Binary files a/target/classes/scau/markmapscau/View/ViewerArranger.class and b/target/classes/scau/markmapscau/View/ViewerArranger.class differ diff --git a/target/classes/scau/markmapscau/scau-markmap.fxml b/target/classes/scau/markmapscau/scau-markmap.fxml index 5f45269e6fdc08d0ff42c7745f423b8292a998df..bab44b607252d81a7a0b2950c84e031bc04396a0 100644 --- a/target/classes/scau/markmapscau/scau-markmap.fxml +++ b/target/classes/scau/markmapscau/scau-markmap.fxml @@ -122,22 +122,34 @@ - - - - - - - - - - - - - - - - + +