summaryrefslogtreecommitdiffstats
path: root/src/cppcheckplus/shortcut/MyTree.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cppcheckplus/shortcut/MyTree.java')
-rw-r--r--src/cppcheckplus/shortcut/MyTree.java71
1 files changed, 42 insertions, 29 deletions
diff --git a/src/cppcheckplus/shortcut/MyTree.java b/src/cppcheckplus/shortcut/MyTree.java
index 775e3a2..5286dde 100644
--- a/src/cppcheckplus/shortcut/MyTree.java
+++ b/src/cppcheckplus/shortcut/MyTree.java
@@ -1,7 +1,8 @@
1package cppcheckplus.shortcut; 1package cppcheckplus.shortcut;
2 2
3import cppcheckplus.control.UIFrame;
4import cppcheckplus.text.FileTools;
3import java.io.File; 5import java.io.File;
4
5import javax.swing.JPanel; 6import javax.swing.JPanel;
6import javax.swing.JScrollPane; 7import javax.swing.JScrollPane;
7import javax.swing.JTextArea; 8import javax.swing.JTextArea;
@@ -14,15 +15,13 @@ import javax.swing.tree.DefaultMutableTreeNode;
14import javax.swing.tree.DefaultTreeModel; 15import javax.swing.tree.DefaultTreeModel;
15import javax.swing.tree.MutableTreeNode; 16import javax.swing.tree.MutableTreeNode;
16 17
17import cppcheckplus.control.Main;
18import cppcheckplus.text.FileTools;
19
20public class MyTree extends JPanel { 18public class MyTree extends JPanel {
21 private JTree tree;
22 public File result; 19 public File result;
23 public String src; 20 public String src;
24 private Main jf; 21 private final JTree tree;
22 private UIFrame jf;
25 private JTextArea textCode; 23 private JTextArea textCode;
24
26 public MyTree() { 25 public MyTree() {
27 tree = new JTree(); 26 tree = new JTree();
28 tree.addTreeExpansionListener(new TreeExpansionAction()); 27 tree.addTreeExpansionListener(new TreeExpansionAction());
@@ -36,25 +35,28 @@ public class MyTree extends JPanel {
36 setRootDir(new File("c:/")); 35 setRootDir(new File("c:/"));
37 setVisible(true); 36 setVisible(true);
38 } 37 }
39 38
40 public void setCode(JTextArea textCode, Main jf){ 39 public void setCode(JTextArea textCode, UIFrame jf) {
41 this.textCode = textCode; 40 this.textCode = textCode;
42 this.jf=jf; 41 this.jf = jf;
43 } 42 }
44 43
45 public void setRootDir(File dir) { 44 public void setRootDir(File dir) {
46 if(dir==null) 45 if (dir == null) {
47 return; 46 return;
47 }
48 tree.setModel(new DefaultTreeModel(createNode(dir))); 48 tree.setModel(new DefaultTreeModel(createNode(dir)));
49 MutableTreeNode rootNode = (MutableTreeNode) tree.getModel().getRoot(); 49 MutableTreeNode rootNode = (MutableTreeNode) tree.getModel().getRoot();
50 rootNode.setUserObject(dir); 50 rootNode.setUserObject(dir);
51 updateNode(rootNode); 51 updateNode(rootNode);
52 tree.updateUI(); 52 tree.updateUI();
53 } 53 }
54
54 private void updateNode(Object object) { 55 private void updateNode(Object object) {
55 DefaultMutableTreeNode node = (DefaultMutableTreeNode) object; 56 DefaultMutableTreeNode node = (DefaultMutableTreeNode) object;
56 for (int i = 0; i < node.getChildCount(); i++) { 57 for (int i = 0; i < node.getChildCount(); i++) {
57 DefaultMutableTreeNode node2 = (DefaultMutableTreeNode) node.getChildAt(i); 58 DefaultMutableTreeNode node2 =
59 (DefaultMutableTreeNode) node.getChildAt(i);
58 FileObject fileObject = (FileObject) node2.getUserObject(); 60 FileObject fileObject = (FileObject) node2.getUserObject();
59 if (!fileObject.isUpdated()) { 61 if (!fileObject.isUpdated()) {
60 fileObject.setUpdated(true); 62 fileObject.setUpdated(true);
@@ -65,27 +67,30 @@ public class MyTree extends JPanel {
65 } 67 }
66 } 68 }
67 } 69 }
68 70
69 private void jTreeValueChanged(TreeSelectionEvent evt) { 71 private void jTreeValueChanged(TreeSelectionEvent evt) {
70 DefaultMutableTreeNode selectedNode=(DefaultMutableTreeNode) tree.getLastSelectedPathComponent();//返回最后选定的节点 72 DefaultMutableTreeNode selectedNode =
71 if(selectedNode!=null && selectedNode.isLeaf()){ 73 (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();//返回最后选定的节点
72 result = ((FileObject) selectedNode.getUserObject()).file; 74 if (selectedNode != null && selectedNode.isLeaf()) {
73 jf.src = result.getAbsolutePath(); 75 result = ((FileObject) selectedNode.getUserObject()).file;
74 if (!jf.centerTabPanel.isSelectTabComponents("代码")) { 76 jf.src = result.getAbsolutePath();
75 jf.centerTabPanel.addTab("代码", jf.testCode); 77 if (!jf.centerTabPanel.isSelectTabComponents("代码")) {
76 jf.centerTabPanel.isSelectTabComponents("代码"); 78 jf.centerTabPanel.addTab("代码", jf.testCode);
77 } 79 jf.centerTabPanel.isSelectTabComponents("代码");
78 textCode.setText(FileTools.readFile(result)); 80 }
81 textCode.setText(FileTools.readFile(result));
79 } 82 }
80 } 83 }
81 84
82 public MutableTreeNode createNode(File dir) { 85 public MutableTreeNode createNode(File dir) {
83 DefaultMutableTreeNode node = new DefaultMutableTreeNode(new FileObject(dir)); 86 DefaultMutableTreeNode node =
87 new DefaultMutableTreeNode(new FileObject(dir));
84 if (dir.isDirectory()) { 88 if (dir.isDirectory()) {
85 addSubFile(node, dir); 89 addSubFile(node, dir);
86 } 90 }
87 return node; 91 return node;
88 } 92 }
93
89 private void addSubFile(DefaultMutableTreeNode node, File dir) { 94 private void addSubFile(DefaultMutableTreeNode node, File dir) {
90 File[] files = dir.listFiles(); 95 File[] files = dir.listFiles();
91 if (files != null) { 96 if (files != null) {
@@ -94,29 +99,37 @@ public class MyTree extends JPanel {
94 } 99 }
95 } 100 }
96 } 101 }
102
97 public class TreeExpansionAction implements TreeExpansionListener { 103 public class TreeExpansionAction implements TreeExpansionListener {
98 public void treeExpanded(TreeExpansionEvent event) { 104 public void treeExpanded(TreeExpansionEvent event) {
99 updateNode(event.getPath().getLastPathComponent()); 105 updateNode(event.getPath().getLastPathComponent());
100 } 106 }
107
101 public void treeCollapsed(TreeExpansionEvent event) { 108 public void treeCollapsed(TreeExpansionEvent event) {
102 109
103 } 110 }
104 } 111 }
112
105 public class FileObject { 113 public class FileObject {
106 private File file; 114 private final File file;
107 private boolean updated; 115 private boolean updated;
116
108 public FileObject(File file) { 117 public FileObject(File file) {
109 this.file = file; 118 this.file = file;
110 } 119 }
120
111 public File getFile() { 121 public File getFile() {
112 return file; 122 return file;
113 } 123 }
124
114 public boolean isUpdated() { 125 public boolean isUpdated() {
115 return updated; 126 return updated;
116 } 127 }
128
117 public void setUpdated(boolean updated) { 129 public void setUpdated(boolean updated) {
118 this.updated = updated; 130 this.updated = updated;
119 } 131 }
132
120 public String toString() { 133 public String toString() {
121 return file.getName(); 134 return file.getName();
122 } 135 }