]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/MigrationTools/org/tianocore/migration/FirstPanel.java
\t 2 \ \ \ \
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / FirstPanel.java
CommitLineData
b0282412 1/** @file\r
2 \r
3 Copyright (c) 2006, Intel Corporation\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8 \r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 **/\r
0dc8c589 13package org.tianocore.migration;\r
14\r
15import java.awt.*;\r
16import java.awt.event.*;\r
17import java.io.*;\r
18import java.util.*;\r
19import javax.swing.*;\r
20\r
778d35c9 21public final class FirstPanel extends JPanel implements ActionListener, ItemListener, UI {\r
27e0221a 22 /**\r
23 * Define class Serial Version UID\r
24 */\r
25 private static final long serialVersionUID = 207759413522910399L;\r
26 \r
27 private static final FirstPanel INSTANCE = FirstPanel.init();\r
28 \r
29 private String startpath;\r
30 \r
31 private JButton moduleButton, goButton, msaEditorButton, criticButton, specifyCommentButton;\r
32 private JTextField moduletext;\r
33 private JTextArea log;\r
34 private JFileChooser fc = new JFileChooser();\r
35 private JCheckBox filebox, screenbox, mibox, criticbox, defaultpathbox;\r
36 \r
37 private boolean tofile = true, toscreen = true;\r
38 private PrintWriter logfile;\r
0dc8c589 39\r
27e0221a 40 FirstPanel() {\r
778d35c9 41 GridBagLayout gridbag = new GridBagLayout();\r
42 setLayout(gridbag);\r
43 \r
27e0221a 44 GridBagConstraints cst = new GridBagConstraints();\r
45 \r
46 goButton = new JButton("Go");\r
47 goButton.addActionListener(this);\r
48 goButton.setActionCommand("go");\r
49 \r
50 moduleButton = new JButton("Choose ModulePath");\r
51 moduleButton.addActionListener(this);\r
0dc8c589 52\r
27e0221a 53 msaEditorButton = new JButton("MsaEditor");\r
54 msaEditorButton.addActionListener(this);\r
55 \r
56 criticButton = new JButton("Critic");\r
57 criticButton.addActionListener(this);\r
58 \r
59 specifyCommentButton = new JButton("Comment Style");\r
60 specifyCommentButton.addActionListener(this);\r
61 \r
62 moduletext = new JTextField(30);\r
63 \r
64 filebox = new JCheckBox("Output to logfile", true);\r
65 filebox.addItemListener(this);\r
66 \r
67 screenbox = new JCheckBox("Specify logfile", false);\r
68 screenbox.addItemListener(this);\r
69 \r
70 mibox = new JCheckBox("Print ModuleInfo", false);\r
71 mibox.addItemListener(this);\r
72 MigrationTool.printModuleInfo = false;\r
73 \r
74 criticbox = new JCheckBox("Run Critic", true);\r
75 criticbox.addItemListener(this);\r
76 MigrationTool.doCritic = true;\r
77 \r
78 defaultpathbox = new JCheckBox("Use Default Output Path", true);\r
79 defaultpathbox.addItemListener(this);\r
80 MigrationTool.defaultoutput = true;\r
81 \r
0dc8c589 82 JPanel modulePanel = new JPanel();\r
83 modulePanel.add(moduleButton);\r
84 modulePanel.add(moduletext);\r
0dc8c589 85 modulePanel.add(goButton);\r
5ea254f6 86 //modulePanel.add(msaEditorButton);\r
778d35c9 87 cst.gridx = 0;\r
88 cst.gridy = 0;\r
89 //cst.gridwidth = GridBagConstraints.REMAINDER;\r
90 gridbag.setConstraints(modulePanel, cst);\r
0dc8c589 91 add(modulePanel);\r
92\r
778d35c9 93 cst.gridx = 1;\r
94 cst.gridy = 0;\r
e3e8956d 95 gridbag.setConstraints(specifyCommentButton, cst);\r
96 add(specifyCommentButton);\r
97 //gridbag.setConstraints(criticButton, cst);\r
437ffb07 98 //add(criticButton);\r
778d35c9 99 \r
100 JPanel checkboxPanel = new JPanel();\r
101 checkboxPanel.setLayout(new BoxLayout(checkboxPanel, BoxLayout.Y_AXIS));\r
102 checkboxPanel.add(filebox);\r
103 checkboxPanel.add(screenbox);\r
104 checkboxPanel.add(mibox);\r
105 checkboxPanel.add(criticbox);\r
106 checkboxPanel.add(defaultpathbox);\r
107 cst.gridx = 1;\r
108 cst.gridy = 1;\r
109 //cst.gridheight = 2;\r
110 gridbag.setConstraints(checkboxPanel, cst);\r
111 add(checkboxPanel);\r
112 \r
113 log = new JTextArea(10,20);\r
0dc8c589 114 log.setMargin(new Insets(5,5,5,5));\r
115 log.setEditable(false);\r
116 JScrollPane logScrollPane = new JScrollPane(log);\r
778d35c9 117 cst.gridx = 0;\r
118 cst.gridy = 1;\r
119 cst.fill = GridBagConstraints.BOTH;\r
120 gridbag.setConstraints(logScrollPane, cst);\r
0dc8c589 121 add(logScrollPane);\r
27e0221a 122 }\r
123 \r
124 //---------------------------------------------------------------------------------------//\r
125 \r
126 public boolean yesOrNo(String question) {\r
127 return JOptionPane.showConfirmDialog(this, question, "Yes or No", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;\r
128 }\r
129 \r
130 public void print(String message) {\r
131 if (toscreen == true) {\r
132 log.append(message);\r
133 System.out.print(message);\r
134 }\r
135 if (tofile == true) {\r
136 logfile.append(message);\r
137 }\r
138 }\r
139 \r
140 public void println(String message) {\r
141 print(message + "\n");\r
142 }\r
0dc8c589 143\r
27e0221a 144 public void println(Set<String> hash) {\r
145 if (toscreen == true) {\r
146 log.append(hash + "\n");\r
147 System.out.println(hash);\r
148 }\r
149 if (tofile == true) {\r
150 logfile.append(hash + "\n");\r
151 }\r
152 }\r
0dc8c589 153\r
27e0221a 154 public String choose(String message, Object[] choicelist) {\r
155 return (String)JOptionPane.showInputDialog(this, message,"Choose",JOptionPane.PLAIN_MESSAGE,null,choicelist,choicelist[0]);\r
156 }\r
157 \r
158 public String getInput(String message) {\r
159 return (String)JOptionPane.showInputDialog(message);\r
160 }\r
90503bad 161\r
27e0221a 162 //---------------------------------------------------------------------------------------//\r
90503bad 163\r
27e0221a 164 public String getFilepath(String title, int mode) {\r
165 fc.setDialogTitle(title);\r
166 fc.setFileSelectionMode(mode);\r
167 if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {\r
168 log.append(fc.getSelectedFile().getAbsolutePath() + "\n");\r
169 return fc.getSelectedFile().getAbsolutePath();\r
170 }\r
171 return null;\r
172 }\r
5ea254f6 173\r
27e0221a 174 //---------------------------------------------------------------------------------------//\r
5ea254f6 175\r
0dc8c589 176 public void actionPerformed(ActionEvent e) {\r
177 if ( e.getSource() == moduleButton ) {\r
27e0221a 178 startpath = getFilepath("Please choose a starting path", JFileChooser.DIRECTORIES_ONLY);\r
179 moduletext.setText(startpath);\r
0dc8c589 180 }\r
181 if ( e.getSource() == goButton ) {\r
27e0221a 182 try {\r
183 logfile = new PrintWriter(new BufferedWriter(new FileWriter(startpath.replaceAll(Common.strseparate, "$1") + File.separator + "migration.log")));\r
184 MigrationTool.startMigrateAll(startpath);\r
185 logfile.flush();\r
186 logfile.close();\r
187 } catch (Exception en) {\r
188 println(en.getMessage());\r
189 }\r
0dc8c589 190 }\r
90503bad 191 if ( e.getSource() == msaEditorButton) {\r
27e0221a 192 try {\r
193 MsaTreeEditor.init();\r
194 } catch (Exception en) {\r
195 println(en.getMessage());\r
196 }\r
90503bad 197 }\r
fed802b1 198 if ( e.getSource() == criticButton) {\r
27e0221a 199 try {\r
200 Critic.fireAt(startpath);\r
201 } catch (Exception en) {\r
202 println(en.getMessage());\r
203 }\r
fed802b1 204 }\r
e3e8956d 205 if ( e.getSource() == specifyCommentButton) {\r
27e0221a 206 try { // input examine is not imposed but should be added\r
207 MigrationTool.MIGRATIONCOMMENT = getInput("Please type in wanted comment style used by the tool\nbe sure to start with '//', or you won't enjoy the result");\r
208 //MsaWriter.parse("C:\\tianocore\\edk2\\MdePkg\\Library\\BaseLib\\BaseLib.msa");\r
209 } catch (Exception en) {\r
210 println(en.getMessage());\r
211 }\r
e3e8956d 212 }\r
0dc8c589 213 }\r
214 \r
215 public void itemStateChanged(ItemEvent e) {\r
27e0221a 216 if (e.getSource() == filebox) {\r
217 if (e.getStateChange() == ItemEvent.DESELECTED) {\r
218 System.out.println("filebox DESELECTED");\r
219 } else if (e.getStateChange() == ItemEvent.SELECTED) {\r
220 System.out.println("filebox SELECTED");\r
221 }\r
222 } else if (e.getSource() == screenbox) {\r
223 if (e.getStateChange() == ItemEvent.DESELECTED) {\r
224 System.out.println("screenbox DESELECTED");\r
225 } else if (e.getStateChange() == ItemEvent.SELECTED) {\r
226 System.out.println("screenbox SELECTED");\r
227 }\r
228 } else if (e.getSource() == mibox) {\r
229 if (e.getStateChange() == ItemEvent.DESELECTED) {\r
230 MigrationTool.printModuleInfo = false;\r
231 } else if (e.getStateChange() == ItemEvent.SELECTED) {\r
232 MigrationTool.printModuleInfo = true;\r
233 }\r
234 } else if (e.getSource() == criticbox) {\r
235 if (e.getStateChange() == ItemEvent.DESELECTED) {\r
236 MigrationTool.doCritic = false;\r
237 } else if (e.getStateChange() == ItemEvent.SELECTED) {\r
238 MigrationTool.doCritic = true;\r
239 }\r
240 } else if (e.getSource() == defaultpathbox) {\r
241 if (e.getStateChange() == ItemEvent.DESELECTED) {\r
242 MigrationTool.defaultoutput = false;\r
243 } else if (e.getStateChange() == ItemEvent.SELECTED) {\r
244 MigrationTool.defaultoutput = true;\r
245 }\r
246 }\r
0dc8c589 247 }\r
248\r
249 //---------------------------------------------------------------------------------------//\r
250 \r
4f60c26f 251 private static final FirstPanel init() {\r
27e0221a 252 try {\r
253 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());\r
254 //UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());\r
255 //UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");\r
256 //UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");\r
257 //UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");\r
258 //UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");\r
259 } catch (Exception e) {\r
260 System.out.println(e.getMessage());\r
261 }\r
262 \r
263 JFrame frame = new JFrame("MigrationTools");\r
264 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
0dc8c589 265\r
266 FirstPanel fp = new FirstPanel();\r
27e0221a 267 //fp.setLayout(new GridBagLayout());\r
268 //fp.setLayout(new BoxLayout(fp, BoxLayout.Y_AXIS));\r
269 fp.setOpaque(true);\r
0dc8c589 270 frame.setContentPane(fp);\r
271\r
27e0221a 272 frame.pack();\r
273 frame.setVisible(true);\r
274 \r
275 return fp;\r
0dc8c589 276 }\r
4f60c26f 277 \r
278 public static final FirstPanel getInstance() {\r
27e0221a 279 return INSTANCE;\r
4f60c26f 280 }\r
0dc8c589 281}