]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/SourceFilesDlg.java
1. Wrap text by word when showing a message box
[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
2003a22e 94 private SourceFilesIdentification sfid[] = null;\r
06a19cee 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
2003a22e 271 //this.sfid = inSourceFilesIdentifications;\r
55a2762d 272 this.msaFileName = fileName;\r
06a19cee 273\r
2003a22e 274 if (inSourceFilesIdentifications != null) {\r
275 this.jTextFieldFileName.setText(inSourceFilesIdentifications.getFilename());\r
276 this.jTextFieldTagName.setText(inSourceFilesIdentifications.getTagName());\r
277 this.jTextFieldToolCode.setText(inSourceFilesIdentifications.getToolCode());\r
278 this.jTextFieldToolChainFamily.setText(inSourceFilesIdentifications.getToolChainFamily());\r
279 jTextFieldFeatureFlag.setText(inSourceFilesIdentifications.getFeatureFlag());\r
280 this.jArchCheckBox.setSelectedItems(inSourceFilesIdentifications.getSupArchList());\r
06a19cee 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
2003a22e 379 private SourceFilesIdentification[] getCurrentSourceFiles() {\r
06a19cee 380 String name = this.jTextFieldFileName.getText();\r
2003a22e 381 String s[] = name.split(";");\r
06a19cee 382 String tagName = this.jTextFieldTagName.getText();\r
383 String toolCode = this.jTextFieldToolCode.getText();\r
384 String tcf = this.jTextFieldToolChainFamily.getText();\r
385 String featureFlag = this.jTextFieldFeatureFlag.getText();\r
386 Vector<String> arch = this.jArchCheckBox.getSelectedItemsVector();\r
2003a22e 387 sfid = new SourceFilesIdentification[s.length];\r
388 for (int index = 0; index < s.length; index++) {\r
389 sfid[index] = new SourceFilesIdentification(s[index], tagName, toolCode, tcf, featureFlag, arch);\r
390 }\r
06a19cee 391 return sfid;\r
392 }\r
393\r
394 /**\r
395 Data validation for all fields\r
396 \r
397 @retval true - All datas are valid\r
398 @retval false - At least one data is invalid\r
399 \r
400 **/\r
401 public boolean checkAdd() {\r
402 //\r
403 // Check Filename\r
404 //\r
405 if (isEmpty(this.jTextFieldFileName.getText())) {\r
ed1665f2 406 Log.wrn("Update Source Files", "File Name couldn't be empty");\r
06a19cee 407 return false;\r
408 }\r
409 if (!DataValidation.isFilename(this.jTextFieldFileName.getText())) {\r
ed1665f2 410 Log.wrn("Update Source Files", "Incorrect data type for File Name");\r
06a19cee 411 return false;\r
412 }\r
413\r
414 //\r
415 // Check TagName \r
416 //\r
417 if (!isEmpty(this.jTextFieldTagName.getText())) {\r
418 if (!DataValidation.isTagName(this.jTextFieldTagName.getText())) {\r
ed1665f2 419 Log.wrn("Update Source Files", "Incorrect data type for Tag Name");\r
06a19cee 420 return false;\r
421 }\r
422 }\r
423\r
424 //\r
425 // Check ToolCode \r
426 //\r
427 if (!isEmpty(this.jTextFieldToolCode.getText())) {\r
428 if (!DataValidation.isToolCode(this.jTextFieldToolCode.getText())) {\r
ed1665f2 429 Log.wrn("Update Source Files", "Incorrect data type for Tool Code");\r
06a19cee 430 return false;\r
431 }\r
432 }\r
433\r
434 //\r
435 // Check ToolChainFamily \r
436 //\r
437 if (!isEmpty(this.jTextFieldToolChainFamily.getText())) {\r
438 if (!DataValidation.isToolChainFamily(this.jTextFieldToolChainFamily.getText())) {\r
ed1665f2 439 Log.wrn("Update Source Files", "Incorrect data type for Tool Chain Family");\r
06a19cee 440 return false;\r
441 }\r
442 }\r
443\r
444 //\r
445 // Check FeatureFlag\r
446 //\r
447 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
448 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
ed1665f2 449 Log.wrn("Update Source Files", "Incorrect data type for Feature Flag");\r
06a19cee 450 return false;\r
451 }\r
452 }\r
453\r
454 return true;\r
455 }\r
456\r
457 /**\r
458 Display a file open browser to let user select file\r
459 \r
460 **/\r
461 private void selectFile() {\r
55a2762d 462 JFileChooser fc = new JFileChooser();\r
463 fc.setCurrentDirectory(new File(Tools.getFilePathOnly(msaFileName)));\r
2003a22e 464 fc.setMultiSelectionEnabled(true);\r
06a19cee 465 int result = fc.showOpenDialog(new JPanel());\r
466 if (result == JFileChooser.APPROVE_OPTION) {\r
2003a22e 467 File f[] = fc.getSelectedFiles();\r
468 String s = "";\r
469 for (int index = 0; index < f.length; index++) {\r
470 s = s + f[index].getName() + ";";\r
471 }\r
472 this.jTextFieldFileName.setText(s);\r
06a19cee 473 }\r
474 }\r
475\r
2003a22e 476 public SourceFilesIdentification[] getSfid() {\r
06a19cee 477 return sfid;\r
478 }\r
479\r
2003a22e 480 public void setSfid(SourceFilesIdentification[] sfid) {\r
06a19cee 481 this.sfid = sfid;\r
482 }\r
483}\r