]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SourceFilesDlg.java
Add some comments for translator parameter in Sync/AsyncInterruptTransfer.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / SourceFilesDlg.java
CommitLineData
06a19cee 1/** @file\r
2 \r
3 The file is used to create, update SourceFile of MSA/MBD file\r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15package org.tianocore.frameworkwizard.module.ui.dialog;\r
16\r
17import java.awt.event.ActionEvent;\r
55a2762d 18import java.io.File;\r
06a19cee 19import java.util.Vector;\r
20\r
21import javax.swing.JButton;\r
22import javax.swing.JFileChooser;\r
23import javax.swing.JLabel;\r
24import javax.swing.JPanel;\r
25import javax.swing.JScrollPane;\r
26import javax.swing.JTextField;\r
27\r
28import org.tianocore.frameworkwizard.common.DataType;\r
29import org.tianocore.frameworkwizard.common.DataValidation;\r
30import org.tianocore.frameworkwizard.common.Log;\r
55a2762d 31import org.tianocore.frameworkwizard.common.Tools;\r
06a19cee 32import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
33import org.tianocore.frameworkwizard.common.ui.IDialog;\r
34import org.tianocore.frameworkwizard.common.ui.IFrame;\r
35import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
36import org.tianocore.frameworkwizard.module.Identifications.SourceFiles.SourceFilesIdentification;\r
06a19cee 37\r
38/**\r
39 The class is used to create, update SourceFile of MSA/MBD file\r
40 It extends IInternalFrame\r
41 \r
42\r
43\r
44 **/\r
45public class SourceFilesDlg extends IDialog {\r
46\r
47 ///\r
48 /// Define class Serial Version UID\r
49 ///\r
50 private static final long serialVersionUID = -6765742852142775378L;\r
51\r
52 //\r
53 // Define class members\r
54 //\r
55 private JPanel jContentPane = null;\r
56\r
57 private JLabel jLabelFileName = null;\r
58\r
59 private JTextField jTextFieldFileName = null;\r
60\r
61 private JButton jButtonOpenFile = null;\r
62\r
63 private JLabel jLabelToolChainFamily = null;\r
64\r
65 private StarLabel jStarLabel1 = null;\r
66\r
67 private JLabel jLabelArch = null;\r
68\r
69 private JScrollPane jScrollPane = null;\r
70\r
71 private JLabel jLabelTagName = null;\r
72\r
73 private JTextField jTextFieldTagName = null;\r
74\r
75 private JLabel jLabelToolCode = null;\r
76\r
77 private JTextField jTextFieldToolCode = null;\r
78\r
79 private JTextField jTextFieldToolChainFamily = null;\r
80\r
81 private JLabel jLabelFeatureFlag = null;\r
82\r
83 private JTextField jTextFieldFeatureFlag = null;\r
84\r
85 private ArchCheckBox jArchCheckBox = null;\r
55a2762d 86 \r
87 private JButton jButtonOk = null;\r
88\r
89 private JButton jButtonCancel = null;\r
06a19cee 90\r
91 //\r
92 // Not used by UI\r
93 //\r
94 private SourceFilesIdentification sfid = null;\r
95\r
55a2762d 96 private String msaFileName = "";\r
06a19cee 97\r
98 /**\r
99 This method initializes jTextFieldFileName \r
100 \r
101 @return javax.swing.JTextField jTextFieldFileName\r
102 \r
103 **/\r
104 private JTextField getJTextFieldSourceFilesDirectory() {\r
105 if (jTextFieldFileName == null) {\r
106 jTextFieldFileName = new JTextField();\r
107 jTextFieldFileName.setBounds(new java.awt.Rectangle(140, 10, 250, 20));\r
108 jTextFieldFileName.setPreferredSize(new java.awt.Dimension(250, 20));\r
109 jTextFieldFileName.setToolTipText("Path is relative to the MSA file and must include the file name");\r
110 }\r
111 return jTextFieldFileName;\r
112 }\r
113\r
114 /**\r
115 This method initializes jButtonOpenFile \r
116 \r
117 @return javax.swing.JButton jButtonOpenFile\r
118 \r
119 **/\r
120 private JButton getJButtonOpenFile() {\r
121 if (jButtonOpenFile == null) {\r
122 jButtonOpenFile = new JButton();\r
123 jButtonOpenFile.setText("Browse");\r
124 jButtonOpenFile.setBounds(new java.awt.Rectangle(395, 10, 85, 20));\r
125 jButtonOpenFile.setPreferredSize(new java.awt.Dimension(85, 20));\r
126 jButtonOpenFile.addActionListener(this);\r
127 }\r
128 return jButtonOpenFile;\r
129 }\r
130\r
131 /**\r
132 This method initializes jScrollPane \r
133 \r
134 @return javax.swing.JScrollPane \r
135 */\r
136 private JScrollPane getJScrollPane() {\r
137 if (jScrollPane == null) {\r
138 jScrollPane = new JScrollPane();\r
139 jScrollPane.setViewportView(getJContentPane());\r
140 }\r
141 return jScrollPane;\r
142 }\r
143\r
144 /**\r
145 * This method initializes jTextFieldTagName \r
146 * \r
147 * @return javax.swing.JTextField \r
148 */\r
149 private JTextField getJTextFieldTagName() {\r
150 if (jTextFieldTagName == null) {\r
151 jTextFieldTagName = new JTextField();\r
152 jTextFieldTagName.setBounds(new java.awt.Rectangle(140, 35, 340, 20));\r
153 jTextFieldTagName.setPreferredSize(new java.awt.Dimension(340, 20));\r
154 jTextFieldTagName.setToolTipText("You may specify a specific tool chain tag name, such as BILL1");\r
155 }\r
156 return jTextFieldTagName;\r
157 }\r
158\r
159 /**\r
160 * This method initializes jTextFieldToolCode \r
161 * \r
162 * @return javax.swing.JTextField \r
163 */\r
164 private JTextField getJTextFieldToolCode() {\r
165 if (jTextFieldToolCode == null) {\r
166 jTextFieldToolCode = new JTextField();\r
167 jTextFieldToolCode.setBounds(new java.awt.Rectangle(140, 60, 340, 20));\r
168 jTextFieldToolCode.setPreferredSize(new java.awt.Dimension(340, 20));\r
169 jTextFieldToolCode.setToolTipText("You may specify a specific tool command, such as ASM");\r
170 }\r
171 return jTextFieldToolCode;\r
172 }\r
173\r
174 /**\r
175 * This method initializes jTextFieldToolChainFamily \r
176 * \r
177 * @return javax.swing.JTextField \r
178 */\r
179 private JTextField getJTextFieldToolChainFamily() {\r
180 if (jTextFieldToolChainFamily == null) {\r
181 jTextFieldToolChainFamily = new JTextField();\r
182 jTextFieldToolChainFamily.setBounds(new java.awt.Rectangle(140, 85, 340, 20));\r
183 jTextFieldToolChainFamily.setPreferredSize(new java.awt.Dimension(340, 20));\r
184 jTextFieldToolChainFamily.setToolTipText("You may specify a specific tool chain family, such as GCC");\r
185 }\r
186 return jTextFieldToolChainFamily;\r
187 }\r
188\r
189 /**\r
190 * This method initializes jTextFieldFeatureFlag \r
191 * \r
192 * @return javax.swing.JTextField \r
193 */\r
194 private JTextField getJTextFieldFeatureFlag() {\r
195 if (jTextFieldFeatureFlag == null) {\r
196 jTextFieldFeatureFlag = new JTextField();\r
197 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(140, 110, 340, 20));\r
198 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(340, 20));\r
199 jTextFieldFeatureFlag.setToolTipText("RESERVED FOR FUTURE USE");\r
200 }\r
201 return jTextFieldFeatureFlag;\r
202 }\r
203\r
204 /**\r
205 This method initializes jButtonOk \r
206 \r
207 @return javax.swing.JButton \r
208 \r
209 **/\r
210 private JButton getJButtonOk() {\r
211 if (jButtonOk == null) {\r
212 jButtonOk = new JButton();\r
213 jButtonOk.setBounds(new java.awt.Rectangle(290, 165, 90, 20));\r
214 jButtonOk.setText("Ok");\r
215 jButtonOk.addActionListener(this);\r
216 }\r
217 return jButtonOk;\r
218 }\r
219\r
220 /**\r
221 This method initializes jButtonCancel \r
222 \r
223 @return javax.swing.JButton \r
224 \r
225 **/\r
226 private JButton getJButtonCancel() {\r
227 if (jButtonCancel == null) {\r
228 jButtonCancel = new JButton();\r
229 jButtonCancel.setBounds(new java.awt.Rectangle(390, 165, 90, 20));\r
230 jButtonCancel.setText("Cancel");\r
231 jButtonCancel.addActionListener(this);\r
232 }\r
233 return jButtonCancel;\r
234 }\r
235\r
236 public static void main(String[] args) {\r
237\r
238 }\r
239\r
240 /**\r
241 This is the default constructor\r
242 \r
243 **/\r
55a2762d 244 public SourceFilesDlg(SourceFilesIdentification inSourceFilesIdentification, IFrame iFrame, String fileName) {\r
06a19cee 245 super(iFrame, true);\r
55a2762d 246 init(inSourceFilesIdentification, fileName);\r
06a19cee 247 }\r
248\r
249 /**\r
250 This method initializes this\r
251 \r
252 **/\r
253 private void init() {\r
254 this.setSize(500, 235);\r
255 this.setContentPane(getJScrollPane());\r
256 this.setTitle("Source Files");\r
257 this.setViewMode(false);\r
258 this.centerWindow();\r
259 }\r
260\r
261 /** \r
262 This method initializes this\r
263 Fill values to all fields if these values are not empty\r
264 \r
265 \r
266 @param inSourceFiles The input data of SourceFilesDocument.SourceFiles\r
267 \r
268 **/\r
55a2762d 269 private void init(SourceFilesIdentification inSourceFilesIdentifications, String fileName) {\r
06a19cee 270 init();\r
271 this.sfid = inSourceFilesIdentifications;\r
55a2762d 272 this.msaFileName = fileName;\r
06a19cee 273\r
274 if (this.sfid != null) {\r
275 this.jTextFieldFileName.setText(sfid.getFilename());\r
276 this.jTextFieldTagName.setText(sfid.getTagName());\r
277 this.jTextFieldToolCode.setText(sfid.getToolCode());\r
278 this.jTextFieldToolChainFamily.setText(sfid.getToolChainFamily());\r
279 jTextFieldFeatureFlag.setText(sfid.getFeatureFlag());\r
280 this.jArchCheckBox.setSelectedItems(sfid.getSupArchList());\r
281 }\r
282 }\r
283\r
284 /**\r
285 Disable all components when the mode is view\r
286 \r
287 @param isView true - The view mode; false - The non-view mode\r
288 \r
289 **/\r
290 public void setViewMode(boolean isView) {\r
291 if (isView) {\r
292 this.jTextFieldFileName.setEnabled(!isView);\r
293 this.jButtonOpenFile.setEnabled(!isView);\r
294 }\r
295 }\r
296\r
297 /**\r
298 This method initializes jContentPane\r
299 \r
300 @return javax.swing.JPanel jContentPane\r
301 \r
302 **/\r
303 private JPanel getJContentPane() {\r
304 if (jContentPane == null) {\r
305 jArchCheckBox = new ArchCheckBox();\r
306 jArchCheckBox.setBounds(new java.awt.Rectangle(140, 135, 340, 20));\r
307 jArchCheckBox.setPreferredSize(new java.awt.Dimension(340, 20));\r
308 jLabelFeatureFlag = new JLabel();\r
309 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 110, 120, 20));\r
310 jLabelFeatureFlag.setText("Feature Flag");\r
311 jLabelToolCode = new JLabel();\r
312 jLabelToolCode.setBounds(new java.awt.Rectangle(15, 60, 120, 20));\r
313 jLabelToolCode.setText("Tool Code");\r
314 jLabelTagName = new JLabel();\r
315 jLabelTagName.setBounds(new java.awt.Rectangle(15, 35, 120, 20));\r
316 jLabelTagName.setText("Tag Name");\r
317 jLabelArch = new JLabel();\r
318 jLabelArch.setBounds(new java.awt.Rectangle(15, 135, 120, 20));\r
319 jLabelArch.setText("Sup Arch List");\r
320 jLabelToolChainFamily = new JLabel();\r
321 jLabelToolChainFamily.setBounds(new java.awt.Rectangle(15, 85, 120, 20));\r
322 jLabelToolChainFamily.setText("Tool Chain Family");\r
323 jLabelFileName = new JLabel();\r
324 jLabelFileName.setText("File Name");\r
325 jLabelFileName.setBounds(new java.awt.Rectangle(15, 10, 120, 20));\r
326\r
327 jContentPane = new JPanel();\r
328 jContentPane.setLayout(null);\r
329 jContentPane.setPreferredSize(new java.awt.Dimension(490, 185));\r
330\r
331 jContentPane.add(jLabelFileName, null);\r
332 jContentPane.add(getJTextFieldSourceFilesDirectory(), null);\r
333 jContentPane.add(getJButtonOpenFile(), null);\r
334 jContentPane.add(jLabelToolChainFamily, null);\r
335 jStarLabel1 = new StarLabel();\r
336 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
337\r
338 jContentPane.add(jStarLabel1, null);\r
339 jContentPane.add(jLabelArch, null);\r
340 jContentPane.add(jLabelTagName, null);\r
341 jContentPane.add(getJTextFieldTagName(), null);\r
342 jContentPane.add(jLabelToolCode, null);\r
343 jContentPane.add(getJTextFieldToolCode(), null);\r
344 jContentPane.add(getJTextFieldToolChainFamily(), null);\r
345 jContentPane.add(jLabelFeatureFlag, null);\r
346 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
347 jContentPane.add(jArchCheckBox, null);\r
348 jContentPane.add(getJButtonOk(), null);\r
349 jContentPane.add(getJButtonCancel(), null);\r
350 }\r
351 return jContentPane;\r
352 }\r
353\r
354 /* (non-Javadoc)\r
355 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
356 *\r
357 * Override actionPerformed to listen all actions\r
358 * \r
359 */\r
360 public void actionPerformed(ActionEvent arg0) {\r
361 if (arg0.getSource() == jButtonOpenFile) {\r
362 selectFile();\r
363 }\r
364\r
365 if (arg0.getSource() == jButtonOk) {\r
366 if (checkAdd()) {\r
367 getCurrentSourceFiles();\r
368 this.returnType = DataType.RETURN_TYPE_OK;\r
369 this.setVisible(false);\r
370 }\r
371 }\r
372\r
373 if (arg0.getSource() == jButtonCancel) {\r
374 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
375 this.setVisible(false);\r
376 }\r
377 }\r
378\r
379 private SourceFilesIdentification getCurrentSourceFiles() {\r
380 String name = this.jTextFieldFileName.getText();\r
381 String tagName = this.jTextFieldTagName.getText();\r
382 String toolCode = this.jTextFieldToolCode.getText();\r
383 String tcf = this.jTextFieldToolChainFamily.getText();\r
384 String featureFlag = this.jTextFieldFeatureFlag.getText();\r
385 Vector<String> arch = this.jArchCheckBox.getSelectedItemsVector();\r
386 sfid = new SourceFilesIdentification(name, tagName, toolCode, tcf, featureFlag, arch);\r
387 return sfid;\r
388 }\r
389\r
390 /**\r
391 Data validation for all fields\r
392 \r
393 @retval true - All datas are valid\r
394 @retval false - At least one data is invalid\r
395 \r
396 **/\r
397 public boolean checkAdd() {\r
398 //\r
399 // Check Filename\r
400 //\r
401 if (isEmpty(this.jTextFieldFileName.getText())) {\r
402 Log.err("File Name couldn't be empty");\r
403 return false;\r
404 }\r
405 if (!DataValidation.isFilename(this.jTextFieldFileName.getText())) {\r
406 Log.err("Incorrect data type for File Name");\r
407 return false;\r
408 }\r
409\r
410 //\r
411 // Check TagName \r
412 //\r
413 if (!isEmpty(this.jTextFieldTagName.getText())) {\r
414 if (!DataValidation.isTagName(this.jTextFieldTagName.getText())) {\r
415 Log.err("Incorrect data type for Tag Name");\r
416 return false;\r
417 }\r
418 }\r
419\r
420 //\r
421 // Check ToolCode \r
422 //\r
423 if (!isEmpty(this.jTextFieldToolCode.getText())) {\r
424 if (!DataValidation.isToolCode(this.jTextFieldToolCode.getText())) {\r
425 Log.err("Incorrect data type for Tool Code");\r
426 return false;\r
427 }\r
428 }\r
429\r
430 //\r
431 // Check ToolChainFamily \r
432 //\r
433 if (!isEmpty(this.jTextFieldToolChainFamily.getText())) {\r
434 if (!DataValidation.isToolChainFamily(this.jTextFieldToolChainFamily.getText())) {\r
435 Log.err("Incorrect data type for Tool Chain Family");\r
436 return false;\r
437 }\r
438 }\r
439\r
440 //\r
441 // Check FeatureFlag\r
442 //\r
443 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
444 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
445 Log.err("Incorrect data type for Feature Flag");\r
446 return false;\r
447 }\r
448 }\r
449\r
450 return true;\r
451 }\r
452\r
453 /**\r
454 Display a file open browser to let user select file\r
455 \r
456 **/\r
457 private void selectFile() {\r
55a2762d 458 JFileChooser fc = new JFileChooser();\r
459 fc.setCurrentDirectory(new File(Tools.getFilePathOnly(msaFileName)));\r
06a19cee 460 int result = fc.showOpenDialog(new JPanel());\r
461 if (result == JFileChooser.APPROVE_OPTION) {\r
462 this.jTextFieldFileName.setText(fc.getSelectedFile().getName());\r
463 }\r
464 }\r
465\r
466 public SourceFilesIdentification getSfid() {\r
467 return sfid;\r
468 }\r
469\r
470 public void setSfid(SourceFilesIdentification sfid) {\r
471 this.sfid = sfid;\r
472 }\r
473}\r