diff options
Diffstat (limited to 'src/cppcheckplus/control/UIFrame.java')
-rw-r--r-- | src/cppcheckplus/control/UIFrame.java | 148 |
1 files changed, 44 insertions, 104 deletions
diff --git a/src/cppcheckplus/control/UIFrame.java b/src/cppcheckplus/control/UIFrame.java index bb15707..499d056 100644 --- a/src/cppcheckplus/control/UIFrame.java +++ b/src/cppcheckplus/control/UIFrame.java | |||
@@ -34,19 +34,19 @@ import javax.swing.JTextArea; | |||
34 | import javax.swing.event.ListSelectionEvent; | 34 | import javax.swing.event.ListSelectionEvent; |
35 | import javax.swing.event.ListSelectionListener; | 35 | import javax.swing.event.ListSelectionListener; |
36 | import javax.swing.plaf.TabbedPaneUI; | 36 | import javax.swing.plaf.TabbedPaneUI; |
37 | import toolsconfig.ToolsConfig; | ||
37 | import toolsconfig.ToolsRegistry; | 38 | import toolsconfig.ToolsRegistry; |
38 | 39 | ||
39 | |||
40 | // 构造界面 | 40 | // 构造界面 |
41 | public class UIFrame extends JFrame { | 41 | public class UIFrame extends JFrame { |
42 | public final MyMenuBar mymenubar; | ||
42 | // XML配置文件路径 | 43 | // XML配置文件路径 |
43 | private final String menuBarXML; | 44 | private final String menuBarXML = "cppcheckplus/control/menubar.xml"; |
44 | private final String outlookPanelXML; | 45 | private final String outlookPanelXML = "cppcheckplus/control/outlook.xml"; |
45 | private final String settingsXML; | 46 | private final String settingsXML = "toolsconfig/settings.xml"; |
46 | private final String stdclangXML; | 47 | private final String stdclangXML = "cppcheckplus/control/stdclang.xml"; |
47 | // 界面组件 | 48 | // 界面组件 |
48 | private final MyContentPanel contentPanel; | 49 | private final MyContentPanel contentPanel; |
49 | private final MyMenuBar menubar; | ||
50 | private final JFileChooser jfc = new JFileChooser();// 文件选择器 | 50 | private final JFileChooser jfc = new JFileChooser();// 文件选择器 |
51 | private final JFileChooser jfsettings = new JFileChooser();// 配置设定 | 51 | private final JFileChooser jfsettings = new JFileChooser();// 配置设定 |
52 | private final String projectPath; | 52 | private final String projectPath; |
@@ -57,50 +57,39 @@ public class UIFrame extends JFrame { | |||
57 | public creatTable ct = new creatTable(); // 生成表格 | 57 | public creatTable ct = new creatTable(); // 生成表格 |
58 | public TextArea textCheck;// 显示检查进度输出 | 58 | public TextArea textCheck;// 显示检查进度输出 |
59 | private MyOutlookPanel outlookPanel; | 59 | private MyOutlookPanel outlookPanel; |
60 | private MyTabPanel1 footTabPanel; | 60 | private MyTabPanel1 footTabPanel; // 底部标签页 |
61 | private MyShortcutPanel shortcutPanel; | 61 | private MyShortcutPanel shortcutPanel; |
62 | private MyTree tree; | 62 | private MyTree tree; |
63 | private MyTextPanel1 testPanel; | 63 | private MyTextPanel1 testPanel; |
64 | private ViewPanel viewPanel; | 64 | private ViewPanel viewPanel; |
65 | // 显示代码和检查进程的文本区域 | ||
66 | private JTextArea textCode;// 显示代码内容 | 65 | private JTextArea textCode;// 显示代码内容 |
67 | // 文件操作相关 | 66 | |
68 | private File result; // 存储打开的文件 | ||
69 | private File report; // 导出报告时选择的文件 | 67 | private File report; // 导出报告时选择的文件 |
70 | private File dir; // 存储打开的目录 | ||
71 | 68 | ||
72 | // 构造函数:初始化各个组件,加载配置文件,建立界面布局 | ||
73 | public UIFrame() { | 69 | public UIFrame() { |
74 | projectPath = System.getProperty("user.dir"); | 70 | projectPath = System.getProperty("user.dir"); |
75 | // 文件选择器初始目录 | 71 | // 文件选择器初始目录 |
76 | jfc.setCurrentDirectory(new File("d://")); | 72 | jfc.setCurrentDirectory(new File("d://")); |
77 | jfsettings.setCurrentDirectory(new File("d://")); | 73 | jfsettings.setCurrentDirectory(new File("d://")); |
78 | 74 | ||
79 | // 配置文件路径 | ||
80 | menuBarXML = "cppcheckplus/control/menubar.xml"; | ||
81 | outlookPanelXML = "cppcheckplus/control/outlook.xml"; | ||
82 | settingsXML = "toolsconfig/settings.xml"; | ||
83 | stdclangXML = "cppcheckplus/control/stdclang.xml"; | ||
84 | |||
85 | MyContorlUtil.loadToolsRoad(settingsXML, this);// 加载工具路径设置到当前对象中 | ||
86 | ct.initSTDClang(stdclangXML);// 设置clang配置 | 75 | ct.initSTDClang(stdclangXML);// 设置clang配置 |
87 | 76 | ||
88 | // 加载菜单栏,注册事件监听 | 77 | // 加载菜单栏,注册事件监听 |
89 | menubar = MyContorlUtil.loadMenuBar(menuBarXML, new ActionListener() { | 78 | mymenubar = MyContorlUtil.loadMenuBar(menuBarXML, new ActionListener() { |
90 | public void actionPerformed(ActionEvent e) { | 79 | public void actionPerformed(ActionEvent e) { |
91 | String command = e.getActionCommand(); | 80 | String command = e.getActionCommand(); |
81 | File res = null; | ||
92 | switch (command) { | 82 | switch (command) { |
93 | case "onMenuOpen": | 83 | case "onMenuOpen": |
94 | // 打开文件 | ||
95 | jfc.setFileSelectionMode(JFileChooser.FILES_ONLY); | 84 | jfc.setFileSelectionMode(JFileChooser.FILES_ONLY); |
96 | if (jfc.showOpenDialog(null) == | 85 | if (jfc.showOpenDialog(null) == |
97 | JFileChooser.CANCEL_OPTION) { | 86 | JFileChooser.CANCEL_OPTION) { |
98 | return; | 87 | return; |
99 | } | 88 | } |
100 | result = jfc.getSelectedFile();// result为选择到的文件 | 89 | res = jfc.getSelectedFile(); |
101 | src = result.getAbsolutePath(); | 90 | src = res.getAbsolutePath(); |
102 | // 读取文件内容并显示到代码区 | 91 | textCode.setText( |
103 | textCode.setText(FileTools.readFile(result)); | 92 | FileTools.readFile(res)); // 读取文件内容并显示到代码区 |
104 | // 如果代码标签页不存在,则创建一个 | 93 | // 如果代码标签页不存在,则创建一个 |
105 | if (!centerTabPanel.isSelectTabComponents("代码")) { | 94 | if (!centerTabPanel.isSelectTabComponents("代码")) { |
106 | centerTabPanel.addTab("代码", testCode); | 95 | centerTabPanel.addTab("代码", testCode); |
@@ -114,14 +103,15 @@ public class UIFrame extends JFrame { | |||
114 | JFileChooser.CANCEL_OPTION) { | 103 | JFileChooser.CANCEL_OPTION) { |
115 | return; | 104 | return; |
116 | } | 105 | } |
117 | dir = jfc.getSelectedFile();// 选择到的目录 | 106 | res = jfc.getSelectedFile(); |
118 | src = dir.getAbsolutePath(); | 107 | src = res.getAbsolutePath(); |
119 | tree.setRootDir(dir);// 更新目录树 | 108 | tree.setRootDir(res);// 更新目录树 |
120 | break; | 109 | break; |
121 | case "onMenuSave": | 110 | case "onMenuSave": |
122 | // 保存文件 | 111 | if (res != null && res.isFile()) { |
123 | if (result != null) { | 112 | FileTools.writeFile(res, textCode.getText()); |
124 | FileTools.writeFile(result, textCode.getText()); | 113 | JOptionPane.showMessageDialog(null, "保存成功", |
114 | "提示", 2); | ||
125 | } | 115 | } |
126 | break; | 116 | break; |
127 | case "onMenuClose": | 117 | case "onMenuClose": |
@@ -148,51 +138,10 @@ public class UIFrame extends JFrame { | |||
148 | if (r == JFileChooser.APPROVE_OPTION) { | 138 | if (r == JFileChooser.APPROVE_OPTION) { |
149 | report = dialog.getSelectedFile(); | 139 | report = dialog.getSelectedFile(); |
150 | FileTools.writeFile(report, ct.results); | 140 | FileTools.writeFile(report, ct.results); |
151 | } else { | 141 | JOptionPane.showMessageDialog(null, "导出成功", |
152 | JOptionPane.showMessageDialog(null, "路径错误", | ||
153 | "提示", 2); | 142 | "提示", 2); |
154 | } | ||
155 | break; | ||
156 | case "onCppcheck": | ||
157 | // cppcheck检查 | ||
158 | if (src != null && src.length() != 0) { | ||
159 | new Thread() { | ||
160 | public void run() { | ||
161 | ToolsRegistry.executeTool("cppcheck", src); | ||
162 | viewResult("cppcheck"); | ||
163 | } | ||
164 | }.start(); | ||
165 | } else { | 143 | } else { |
166 | JOptionPane.showMessageDialog(null, "目标路径错误", | 144 | JOptionPane.showMessageDialog(null, "路径错误", |
167 | "提示", 2); | ||
168 | } | ||
169 | break; | ||
170 | case "onClang": | ||
171 | // clang/clang-tidy检查 | ||
172 | if (src != null && src.length() != 0) { | ||
173 | new Thread() { | ||
174 | public void run() { | ||
175 | ToolsRegistry.executeTool("clangTidy", src); | ||
176 | viewResult("clangTidy"); | ||
177 | } | ||
178 | }.start(); | ||
179 | } else { | ||
180 | JOptionPane.showMessageDialog(null, "目标路径错误", | ||
181 | "提示", 2); | ||
182 | } | ||
183 | break; | ||
184 | case "onFlawfinder": | ||
185 | // flawfinder检查 | ||
186 | if (src != null && src.length() != 0) { | ||
187 | new Thread() { | ||
188 | public void run() { | ||
189 | ToolsRegistry.executeTool("flawfinder", | ||
190 | src); | ||
191 | viewResult("flawfinder"); | ||
192 | } | ||
193 | }.start(); | ||
194 | } else { | ||
195 | JOptionPane.showMessageDialog(null, "目标路径错误", | ||
196 | "提示", 2); | 145 | "提示", 2); |
197 | } | 146 | } |
198 | break; | 147 | break; |
@@ -240,37 +189,28 @@ public class UIFrame extends JFrame { | |||
240 | viewPanel.update(ct.results); | 189 | viewPanel.update(ct.results); |
241 | } | 190 | } |
242 | break; | 191 | break; |
243 | case "onSetCppcheckRoad": | 192 | default: |
244 | // cppcheck路径 | 193 | System.out.println("未知命令"); |
245 | jfsettings.setFileSelectionMode( | ||
246 | JFileChooser.FILES_ONLY); | ||
247 | if (jfsettings.showOpenDialog(null) == | ||
248 | JFileChooser.CANCEL_OPTION) { | ||
249 | return; | ||
250 | } else { | ||
251 | File cppcheckFile = jfsettings.getSelectedFile(); | ||
252 | String cppcheckPathTemp = | ||
253 | cppcheckFile.getAbsolutePath(); | ||
254 | MyContorlUtil.fixSettingPath(settingsXML, | ||
255 | "cppcheck", cppcheckPathTemp); | ||
256 | // changedpathcpp = true; | ||
257 | } | ||
258 | break; | 194 | break; |
259 | case "onSetFlawfinderRoad": | 195 | } |
260 | // flawfinder路径 | 196 | } |
261 | jfsettings.setFileSelectionMode( | 197 | }); |
262 | JFileChooser.FILES_ONLY); | 198 | |
263 | if (jfsettings.showOpenDialog(null) == | 199 | MyContorlUtil.loadToolsRoad(settingsXML, this, new ActionListener() { |
264 | JFileChooser.CANCEL_OPTION) { | 200 | @Override |
265 | return;// 撤销则返回 | 201 | public void actionPerformed(ActionEvent e) { |
202 | String toolName = e.getActionCommand(); | ||
203 | if (src != null && src.length() != 0) { | ||
204 | new Thread() { | ||
205 | public void run() { | ||
206 | ct.clearall(); | ||
207 | ToolsRegistry.executeTool(toolName, src); | ||
208 | viewResult(toolName); | ||
266 | } | 209 | } |
267 | File flawfinderFile = jfsettings.getSelectedFile(); | 210 | }.start(); |
268 | String flawfinderPathTemp = | 211 | } else { |
269 | flawfinderFile.getAbsolutePath(); | 212 | JOptionPane.showMessageDialog(null, "目标路径错误", "提示", |
270 | MyContorlUtil.fixSettingPath(settingsXML, "flawfinder", | 213 | 2); |
271 | flawfinderPathTemp); | ||
272 | // changedpathflaw = true; | ||
273 | break; | ||
274 | } | 214 | } |
275 | } | 215 | } |
276 | }); | 216 | }); |
@@ -293,7 +233,7 @@ public class UIFrame extends JFrame { | |||
293 | setIconImage(MyContorlUtil.getImage("control/images/logo2.png")); | 233 | setIconImage(MyContorlUtil.getImage("control/images/logo2.png")); |
294 | setContentPane(contentPanel); | 234 | setContentPane(contentPanel); |
295 | // 菜单栏在最上方 | 235 | // 菜单栏在最上方 |
296 | contentPanel.add(menubar, "North"); | 236 | contentPanel.add(mymenubar, "North"); |
297 | 237 | ||
298 | // 除却菜单栏之外的面板 | 238 | // 除却菜单栏之外的面板 |
299 | //JPanel centerPane = new JPanel(new BorderLayout()); | 239 | //JPanel centerPane = new JPanel(new BorderLayout()); |