summaryrefslogtreecommitdiffstats
path: root/src/cppcheckplus/control/UIFrame.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cppcheckplus/control/UIFrame.java')
-rw-r--r--src/cppcheckplus/control/UIFrame.java148
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;
34import javax.swing.event.ListSelectionEvent; 34import javax.swing.event.ListSelectionEvent;
35import javax.swing.event.ListSelectionListener; 35import javax.swing.event.ListSelectionListener;
36import javax.swing.plaf.TabbedPaneUI; 36import javax.swing.plaf.TabbedPaneUI;
37import toolsconfig.ToolsConfig;
37import toolsconfig.ToolsRegistry; 38import toolsconfig.ToolsRegistry;
38 39
39
40// 构造界面 40// 构造界面
41public class UIFrame extends JFrame { 41public 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());