]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/SelectModuleBelong.java
1. Fix EDKT501: New MSA get "Please type a complete file path" waring and can't proceed
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / SelectModuleBelong.java
CommitLineData
a13899c5 1/** @file\r
2 \r
3 The file is used to let user choose to create module in an existing package\r
4 or to create a new package first.\r
5 \r
6 Copyright (c) 2006, Intel Corporation\r
7 All rights reserved. This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11 \r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14 \r
15 **/\r
16package org.tianocore.frameworkwizard;\r
17\r
92e29378 18import java.awt.Component;\r
a13899c5 19import java.awt.event.ActionEvent;\r
20import java.io.File;\r
21import java.util.Vector;\r
22\r
92e29378 23import javax.swing.ButtonGroup;\r
a13899c5 24import javax.swing.JButton;\r
25import javax.swing.JComboBox;\r
26import javax.swing.JFileChooser;\r
27import javax.swing.JLabel;\r
28import javax.swing.JPanel;\r
29import javax.swing.JTextField;\r
30\r
d1760183 31import org.tianocore.ModuleTypeDef;\r
a13899c5 32import org.tianocore.MsaHeaderDocument;\r
33import org.tianocore.SpdHeaderDocument;\r
739c6b04 34import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
a13899c5 35import org.tianocore.PackageSurfaceAreaDocument.PackageSurfaceArea;\r
36import org.tianocore.PlatformHeaderDocument.PlatformHeader;\r
37import org.tianocore.PlatformSurfaceAreaDocument.PlatformSurfaceArea;\r
38import org.tianocore.frameworkwizard.common.DataType;\r
39import org.tianocore.frameworkwizard.common.DataValidation;\r
fc87d0ba 40import org.tianocore.frameworkwizard.common.GlobalData;\r
a13899c5 41import org.tianocore.frameworkwizard.common.IFileFilter;\r
42import org.tianocore.frameworkwizard.common.Log;\r
43import org.tianocore.frameworkwizard.common.SaveFile;\r
44import org.tianocore.frameworkwizard.common.Tools;\r
45import org.tianocore.frameworkwizard.common.ui.IDialog;\r
46import org.tianocore.frameworkwizard.common.ui.IFrame;\r
47import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
79cb6fdb 48import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
a13899c5 49import org.tianocore.frameworkwizard.packaging.PackageIdentification;\r
50import org.tianocore.frameworkwizard.platform.PlatformIdentification;\r
51import org.tianocore.frameworkwizard.workspace.Workspace;\r
52import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
92e29378 53import javax.swing.JRadioButton;\r
a13899c5 54\r
55public class SelectModuleBelong extends IDialog {\r
56\r
57 /**\r
58 Define class members\r
59 \r
60 **/\r
61 private static final long serialVersionUID = 4171355136991448972L;\r
62\r
f9d0ab92 63 private JPanel jContentPane = null;\r
a13899c5 64\r
65 private JComboBox jComboBoxExistingPackage = null;\r
66\r
67 private JButton jButtonOk = null;\r
68\r
69 private JButton jButtonCancel = null;\r
70\r
71 private Vector<PackageIdentification> packages = null;\r
72\r
73 private JLabel jLabelPackage = null;\r
74\r
75 private JLabel jLabelFilePath = null;\r
76\r
77 private JTextField jTextFieldFilePath = null;\r
78\r
79 private JButton jButtonBrowse = null;\r
80\r
81 private JLabel jLabelName = null;\r
82\r
83 private JTextField jTextFieldName = null;\r
84\r
85 private JLabel jLabelGuid = null;\r
86\r
87 private JTextField jTextFieldGuid = null;\r
88\r
89 private JButton jButtonGen = null;\r
90\r
91 private JLabel jLabelVersion = null;\r
92\r
93 private JTextField jTextFieldVersion = null;\r
94\r
95 private StarLabel jStarLabel1 = null;\r
96\r
97 private StarLabel jStarLabel2 = null;\r
98\r
99 private StarLabel jStarLabel3 = null;\r
100\r
101 private StarLabel jStarLabel4 = null;\r
102\r
103 private StarLabel jStarLabel5 = null;\r
f9d0ab92 104\r
92e29378 105 private ButtonGroup bg = new ButtonGroup();\r
a13899c5 106\r
107 private WorkspaceTools wt = new WorkspaceTools();\r
108\r
109 private ModuleIdentification mid = null;\r
110\r
111 private PackageIdentification pid = null;\r
112\r
113 private PlatformIdentification fid = null;\r
739c6b04 114 \r
115 private ModuleSurfaceArea msa = null;\r
116 \r
117 private PackageSurfaceArea spd = null;\r
118 \r
119 private PlatformSurfaceArea fpd = null;\r
a13899c5 120\r
121 private int mode = -1;\r
122\r
92e29378 123 private JLabel jLabelIsLibrary = null;\r
124\r
125 private JRadioButton jRadioButtonYes = null;\r
126\r
127 private JRadioButton jRadioButtonNo = null;\r
128\r
a13899c5 129 /**\r
130 * This method initializes jComboBoxExistingPackage \r
131 * \r
132 * @return javax.swing.JComboBox \r
133 */\r
134 private JComboBox getJComboBoxExistingPackage() {\r
135 if (jComboBoxExistingPackage == null) {\r
136 jComboBoxExistingPackage = new JComboBox();\r
137 jComboBoxExistingPackage.setBounds(new java.awt.Rectangle(140, 10, 340, 20));\r
138 }\r
139 return jComboBoxExistingPackage;\r
140 }\r
141\r
142 /**\r
143 * This method initializes jButtonNext \r
144 * \r
145 * @return javax.swing.JButton \r
146 */\r
147 private JButton getJButtonOk() {\r
148 if (jButtonOk == null) {\r
149 jButtonOk = new JButton();\r
92e29378 150 jButtonOk.setBounds(new java.awt.Rectangle(310, 165, 80, 20));\r
a13899c5 151 jButtonOk.setText("Ok");\r
152 jButtonOk.addActionListener(this);\r
153 }\r
154 return jButtonOk;\r
155 }\r
156\r
157 /**\r
158 * This method initializes jButtonCancel \r
159 * \r
160 * @return javax.swing.JButton \r
161 */\r
162 private JButton getJButtonCancel() {\r
163 if (jButtonCancel == null) {\r
164 jButtonCancel = new JButton();\r
92e29378 165 jButtonCancel.setBounds(new java.awt.Rectangle(395, 165, 80, 20));\r
a13899c5 166 jButtonCancel.setText("Cancel");\r
167 jButtonCancel.addActionListener(this);\r
168 }\r
169 return jButtonCancel;\r
170 }\r
171\r
172 /**\r
173 * This method initializes jTextFieldFilePath \r
174 * \r
175 * @return javax.swing.JTextField \r
176 */\r
177 private JTextField getJTextFieldFilePath() {\r
178 if (jTextFieldFilePath == null) {\r
179 jTextFieldFilePath = new JTextField();\r
92e29378 180 jTextFieldFilePath.setBounds(new java.awt.Rectangle(140, 60, 250, 20));\r
a13899c5 181 }\r
182 return jTextFieldFilePath;\r
183 }\r
184\r
185 /**\r
186 * This method initializes jButtonBrowse \r
187 * \r
188 * @return javax.swing.JButton \r
189 */\r
190 private JButton getJButtonBrowse() {\r
191 if (jButtonBrowse == null) {\r
192 jButtonBrowse = new JButton();\r
92e29378 193 jButtonBrowse.setBounds(new java.awt.Rectangle(395, 60, 85, 20));\r
a13899c5 194 jButtonBrowse.setText("Browse");\r
195 jButtonBrowse.addActionListener(this);\r
196 }\r
197 return jButtonBrowse;\r
198 }\r
199\r
200 /**\r
201 * This method initializes jTextFieldModuleName \r
202 * \r
203 * @return javax.swing.JTextField \r
204 */\r
205 private JTextField getJTextFieldName() {\r
206 if (jTextFieldName == null) {\r
207 jTextFieldName = new JTextField();\r
92e29378 208 jTextFieldName.setBounds(new java.awt.Rectangle(140, 85, 340, 20));\r
a13899c5 209 }\r
210 return jTextFieldName;\r
211 }\r
212\r
213 /**\r
214 * This method initializes jTextFieldGuid \r
215 * \r
216 * @return javax.swing.JTextField \r
217 */\r
218 private JTextField getJTextFieldGuid() {\r
219 if (jTextFieldGuid == null) {\r
220 jTextFieldGuid = new JTextField();\r
92e29378 221 jTextFieldGuid.setBounds(new java.awt.Rectangle(140, 110, 250, 20));\r
a13899c5 222 }\r
223 return jTextFieldGuid;\r
224 }\r
225\r
226 /**\r
227 * This method initializes jButtonGen \r
228 * \r
229 * @return javax.swing.JButton \r
230 */\r
231 private JButton getJButtonGen() {\r
232 if (jButtonGen == null) {\r
233 jButtonGen = new JButton();\r
92e29378 234 jButtonGen.setBounds(new java.awt.Rectangle(395, 110, 85, 20));\r
a13899c5 235 jButtonGen.setText("GEN");\r
236 jButtonGen.addActionListener(this);\r
237 }\r
238 return jButtonGen;\r
239 }\r
240\r
241 /**\r
242 * This method initializes jTextFieldVersion \r
243 * \r
244 * @return javax.swing.JTextField \r
245 */\r
246 private JTextField getJTextFieldVersion() {\r
247 if (jTextFieldVersion == null) {\r
248 jTextFieldVersion = new JTextField();\r
92e29378 249 jTextFieldVersion.setBounds(new java.awt.Rectangle(140, 135, 340, 20));\r
a13899c5 250 }\r
251 return jTextFieldVersion;\r
252 }\r
253\r
92e29378 254 /**\r
255 * This method initializes jRadioButtonYes \r
256 * \r
257 * @return javax.swing.JRadioButton \r
258 */\r
259 private JRadioButton getJRadioButtonYes() {\r
260 if (jRadioButtonYes == null) {\r
261 jRadioButtonYes = new JRadioButton();\r
f9d0ab92 262 jRadioButtonYes.setBounds(new java.awt.Rectangle(140, 35, 100, 20));\r
263 jRadioButtonYes.setSelected(false);\r
92e29378 264 jRadioButtonYes.setText("Yes");\r
265 }\r
266 return jRadioButtonYes;\r
267 }\r
268\r
269 /**\r
270 * This method initializes jRadioButtonNo \r
271 * \r
272 * @return javax.swing.JRadioButton \r
273 */\r
274 private JRadioButton getJRadioButtonNo() {\r
275 if (jRadioButtonNo == null) {\r
276 jRadioButtonNo = new JRadioButton();\r
f9d0ab92 277 jRadioButtonNo.setBounds(new java.awt.Rectangle(300, 35, 110, 20));\r
278 jRadioButtonNo.setSelected(true);\r
92e29378 279 jRadioButtonNo.setText("No");\r
280 }\r
281 return jRadioButtonNo;\r
282 }\r
283\r
a13899c5 284 /**\r
285 * @param args\r
286 */\r
287 public static void main(String[] args) {\r
288 SelectModuleBelong smb = new SelectModuleBelong();\r
289 smb.setVisible(true);\r
290 }\r
291\r
292 /**\r
293 * This is the default constructor\r
294 */\r
295 public SelectModuleBelong() {\r
296 super();\r
297 init();\r
298 }\r
299\r
300 /**\r
301 * This is the default constructor\r
302 */\r
303 public SelectModuleBelong(IFrame parentFrame, boolean modal, int fileType) {\r
304 super(parentFrame, modal);\r
305 this.mode = fileType;\r
306 init();\r
307 initExistingPackage();\r
308 if (mode != DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
309 this.jStarLabel1.setVisible(false);\r
310 this.jLabelPackage.setVisible(false);\r
311 this.jComboBoxExistingPackage.setVisible(false);\r
92e29378 312 this.jLabelIsLibrary.setVisible(false);\r
313 this.jRadioButtonYes.setVisible(false);\r
314 this.jRadioButtonNo.setVisible(false);\r
315 upLocation(this.jStarLabel2, 50);\r
316 upLocation(this.jStarLabel3, 50);\r
317 upLocation(this.jStarLabel4, 50);\r
318 upLocation(this.jStarLabel5, 50);\r
319 upLocation(this.jLabelFilePath, 50);\r
320 upLocation(this.jLabelName, 50);\r
321 upLocation(this.jLabelGuid, 50);\r
322 upLocation(this.jLabelVersion, 50);\r
323 upLocation(this.jTextFieldFilePath, 50);\r
324 upLocation(this.jTextFieldName, 50);\r
325 upLocation(this.jTextFieldGuid, 50);\r
326 upLocation(this.jTextFieldVersion, 50);\r
327 upLocation(this.jButtonBrowse, 50);\r
328 upLocation(this.jButtonGen, 50);\r
a13899c5 329 }\r
330 }\r
331\r
332 /**\r
333 * This method initializes this\r
334 * \r
335 * @return void\r
336 */\r
337 private void init() {\r
92e29378 338 this.setSize(500, 230);\r
a13899c5 339 this.setContentPane(getJContentPane());\r
8f4f211c 340 this.setTitle("New");\r
a13899c5 341 this.centerWindow();\r
342 }\r
343\r
344 /**\r
345 * This method initializes jContentPane\r
346 * \r
347 * @return javax.swing.JPanel\r
348 */\r
349 private JPanel getJContentPane() {\r
350 if (jContentPane == null) {\r
92e29378 351 jLabelIsLibrary = new JLabel();\r
f9d0ab92 352 jLabelIsLibrary.setBounds(new java.awt.Rectangle(15, 35, 120, 20));\r
ea7f8a93 353 jLabelIsLibrary.setText("Is this a Library");\r
a13899c5 354 jLabelVersion = new JLabel();\r
92e29378 355 jLabelVersion.setBounds(new java.awt.Rectangle(15, 135, 120, 20));\r
a13899c5 356 jLabelVersion.setText("Version");\r
357 jLabelGuid = new JLabel();\r
92e29378 358 jLabelGuid.setBounds(new java.awt.Rectangle(15, 110, 120, 20));\r
a13899c5 359 jLabelGuid.setText("Guid");\r
360 jLabelName = new JLabel();\r
92e29378 361 jLabelName.setBounds(new java.awt.Rectangle(15, 85, 120, 20));\r
ea7f8a93 362 jLabelName.setText("Module Name");\r
a13899c5 363 jLabelFilePath = new JLabel();\r
92e29378 364 jLabelFilePath.setBounds(new java.awt.Rectangle(15, 60, 120, 20));\r
a13899c5 365 jLabelFilePath.setText("File Path");\r
366 jLabelPackage = new JLabel();\r
367 jLabelPackage.setBounds(new java.awt.Rectangle(15, 10, 120, 20));\r
ea7f8a93 368 jLabelPackage.setText("Choose a Package");\r
a13899c5 369 jContentPane = new JPanel();\r
370 jContentPane.setLayout(null);\r
f9d0ab92 371 jContentPane.setSize(new java.awt.Dimension(490, 198));\r
a13899c5 372 jContentPane.add(getJComboBoxExistingPackage(), null);\r
373 jContentPane.add(getJButtonOk(), null);\r
374 jContentPane.add(getJButtonCancel(), null);\r
375 jContentPane.add(jLabelPackage, null);\r
376 jContentPane.add(jLabelFilePath, null);\r
377 jContentPane.add(getJTextFieldFilePath(), null);\r
378 jContentPane.add(getJButtonBrowse(), null);\r
379 jContentPane.add(jLabelName, null);\r
380 jContentPane.add(getJTextFieldName(), null);\r
381 jContentPane.add(jLabelGuid, null);\r
382 jContentPane.add(getJTextFieldGuid(), null);\r
383 jContentPane.add(getJButtonGen(), null);\r
384 jContentPane.add(jLabelVersion, null);\r
385 jContentPane.add(getJTextFieldVersion(), null);\r
386\r
387 jStarLabel1 = new StarLabel();\r
388 jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
389 jStarLabel2 = new StarLabel();\r
92e29378 390 jStarLabel2.setLocation(new java.awt.Point(0, 60));\r
a13899c5 391 jStarLabel3 = new StarLabel();\r
92e29378 392 jStarLabel3.setLocation(new java.awt.Point(0, 85));\r
a13899c5 393 jStarLabel4 = new StarLabel();\r
92e29378 394 jStarLabel4.setLocation(new java.awt.Point(0, 110));\r
a13899c5 395 jStarLabel5 = new StarLabel();\r
92e29378 396 jStarLabel5.setLocation(new java.awt.Point(0, 135));\r
a13899c5 397 jContentPane.add(jStarLabel1, null);\r
398 jContentPane.add(jStarLabel2, null);\r
399 jContentPane.add(jStarLabel3, null);\r
400 jContentPane.add(jStarLabel4, null);\r
401 jContentPane.add(jStarLabel5, null);\r
92e29378 402 jContentPane.add(jLabelIsLibrary, null);\r
403 jContentPane.add(getJRadioButtonYes(), null);\r
404 jContentPane.add(getJRadioButtonNo(), null);\r
405 bg.add(getJRadioButtonNo());\r
406 bg.add(getJRadioButtonYes());\r
a13899c5 407 }\r
408 return jContentPane;\r
409 }\r
410\r
411 /**\r
412 Query all existing packages and fill them into combox\r
413 \r
414 **/\r
415 private void initExistingPackage() {\r
416 packages = wt.getAllPackages();\r
417 for (int index = 0; index < packages.size(); index++) {\r
418 this.jComboBoxExistingPackage.addItem(packages.elementAt(index).getName());\r
419 }\r
420 }\r
421\r
422 /* (non-Javadoc)\r
423 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
424 * \r
425 * Override actionPerformed to listen all actions\r
426 */\r
427 public void actionPerformed(ActionEvent arg0) {\r
428 if (arg0.getSource() == jButtonCancel) {\r
429 this.setVisible(false);\r
430 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
431 }\r
432\r
433 if (arg0.getSource() == jButtonOk) {\r
434 if (this.check()) {\r
435 this.save();\r
436 } else {\r
437 return;\r
438 }\r
439 this.setVisible(false);\r
440 this.returnType = DataType.RETURN_TYPE_OK;\r
441 }\r
442\r
443 if (arg0.getSource() == this.jButtonGen) {\r
444 this.jTextFieldGuid.setText(Tools.generateUuidString());\r
445 }\r
446\r
447 if (arg0.getSource() == this.jButtonBrowse) {\r
448 JFileChooser fc = new JFileChooser();\r
449 fc.setAcceptAllFileFilterUsed(false);\r
450\r
451 if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
452 fc.setCurrentDirectory(new File(packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex())\r
453 .getPath()));\r
454 fc.addChoosableFileFilter(new IFileFilter(DataType.MODULE_SURFACE_AREA_EXT));\r
455 }\r
456 if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
457 fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
458 fc.addChoosableFileFilter(new IFileFilter(DataType.PACKAGE_SURFACE_AREA_EXT));\r
459 }\r
460 if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
461 fc.setCurrentDirectory(new File(Workspace.getCurrentWorkspace()));\r
462 fc.addChoosableFileFilter(new IFileFilter(DataType.PLATFORM_SURFACE_AREA_EXT));\r
463 }\r
464 int result = fc.showSaveDialog(new JPanel());\r
465 if (result == JFileChooser.APPROVE_OPTION) {\r
466 this.jTextFieldFilePath.setText(Tools.addPathExt(fc.getSelectedFile().getPath(), mode));\r
467 }\r
468 }\r
469 }\r
470\r
471 /**\r
472 Data validation for all fields\r
473 \r
474 @retval true - All datas are valid\r
475 @retval false - At least one data is invalid\r
476 \r
477 **/\r
478 public boolean check() {\r
fc87d0ba 479 String path = this.jTextFieldFilePath.getText();\r
c942b0e8 480 path = Tools.addPathExt(path, mode);\r
fc87d0ba 481 String guid = this.jTextFieldGuid.getText();\r
482 String version = this.jTextFieldVersion.getText();\r
483 \r
a13899c5 484 //\r
485 // Check if all required fields are not empty\r
486 //\r
fc87d0ba 487 if (isEmpty(path)) {\r
ea7f8a93 488 Log.wrn("New File", "A File Path must be entered!");\r
a13899c5 489 return false;\r
490 }\r
491 if (isEmpty(this.jTextFieldName.getText())) {\r
ea7f8a93 492 Log.wrn("New File", "A Name must be entered");\r
a13899c5 493 return false;\r
494 }\r
fc87d0ba 495 if (isEmpty(guid)) {\r
ea7f8a93 496 Log.wrn("New File", "The Guid must be entered!");\r
a13899c5 497 return false;\r
498 }\r
fc87d0ba 499 if (isEmpty(version)) {\r
ea7f8a93 500 Log.wrn("New File", "A Version number must be entered!");\r
a13899c5 501 return false;\r
502 }\r
503\r
504 //\r
505 // Check if all fields have correct data types \r
506 //\r
507 if (!DataValidation.isBaseName(this.jTextFieldName.getText())) {\r
ea7f8a93 508 Log.wrn("New File", "Incorrect data type for the Name!");\r
a13899c5 509 return false;\r
510 }\r
fc87d0ba 511 if (!DataValidation.isGuid((guid))) {\r
ea7f8a93 512 Log.wrn("New File", "Incorrect data type for Guid, which must be in registry format! (8-4-4-4-12)");\r
a13899c5 513 return false;\r
514 }\r
fc87d0ba 515 \r
c942b0e8 516 //\r
517 // Check if path is valid\r
518 //\r
519 File f = new File(path);\r
c271c132 520 if (!f.isAbsolute()) {\r
c942b0e8 521 Log.wrn("New File", "Please type a complete file path!");\r
522 return false;\r
523 }\r
524 f = null;\r
a13899c5 525\r
526 if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
527 //\r
528 // Check if the module is already existed in current package\r
529 //\r
530 String packagePath = packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex()).getPath();\r
fc87d0ba 531 String modulePath = Tools.convertPathToCurrentOsType(path);\r
a13899c5 532 Vector<String> msaFile = wt.getAllModulesOfPackage(packagePath);\r
a13899c5 533\r
534 for (int index = 0; index < msaFile.size(); index++) {\r
79cb6fdb 535 if (msaFile.elementAt(index).equals(modulePath)) {\r
ea7f8a93 536 Log.wrn("New File", "This module is already exists in the selected package!");\r
a13899c5 537 return false;\r
538 }\r
539 }\r
fc87d0ba 540 \r
541 //\r
c271c132 542 // Check if the module is in selected package\r
fc87d0ba 543 //\r
c271c132 544 if (Tools.getFilePathOnly(modulePath).indexOf(Tools.getFilePathOnly(packagePath)) < 0) {\r
545 Log.wrn("New File", "This module should be in the directory of selected package!");\r
546 return false;\r
547 }\r
548 \r
fc87d0ba 549 //\r
550 // Check if Guid+Version is unique\r
551 //\r
552 String packageGuid = packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex()).getGuid();\r
553 String packageVersion = packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex()).getVersion();\r
554 if (GlobalData.findModuleId(guid, version, packageGuid, packageVersion) != null) {\r
555 Log.wrn("New File", "A module with same Guid and same Version already exists, please selece a new Guid or Version!");\r
556 return false;\r
557 }\r
a13899c5 558 }\r
559\r
560 if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
561 //\r
562 // Check if the package is already existed in database\r
563 //\r
fc87d0ba 564 path = Tools.convertPathToCurrentOsType(path);\r
a13899c5 565 Vector<PackageIdentification> vPackageList = wt.getAllPackages();\r
566 if (vPackageList != null && vPackageList.size() > 0) {\r
567 for (int index = 0; index < vPackageList.size(); index++) {\r
568 if (vPackageList.get(index).getPath().equals(path)) {\r
ea7f8a93 569 Log.wrn("New File", "This package is already exists in this workspace!");\r
a13899c5 570 return false;\r
571 }\r
572 }\r
573 }\r
fc87d0ba 574 \r
575 //\r
576 // Check if path already exists\r
577 //\r
578 if (GlobalData.isDuplicateRelativePath(Tools.getFilePathOnly(path), mode)) {\r
579 Log.wrn("New File", "There already exists a same directory with a package");\r
580 return false;\r
581 }\r
582 \r
583 //\r
584 // Check if Guid+Version is unique\r
585 //\r
586 if (GlobalData.findPackageId(guid, version) != null) {\r
587 Log.wrn("New File", "A package with same Guid and same Version already exists, please selece a new Guid or Version!");\r
588 return false;\r
589 }\r
a13899c5 590 }\r
591\r
592 if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
593 //\r
594 // Check if the platform is already existed in database\r
595 //\r
fc87d0ba 596 path = Tools.convertPathToCurrentOsType(path);\r
a13899c5 597 Vector<PlatformIdentification> vPlatfromList = wt.getAllPlatforms();\r
598 if (vPlatfromList != null && vPlatfromList.size() > 0) {\r
599 for (int index = 0; index < vPlatfromList.size(); index++) {\r
600 if (vPlatfromList.get(index).getPath().equals(path)) {\r
ea7f8a93 601 Log.wrn("New File", "This platform is already exists in this workspace!");\r
a13899c5 602 return false;\r
603 }\r
604 }\r
605 }\r
fc87d0ba 606 \r
607 //\r
608 // Check if path already exists\r
609 //\r
610 if (GlobalData.isDuplicateRelativePath(Tools.getFilePathOnly(path), mode)) {\r
611 Log.wrn("New File", "There already exists a same directory with a platform");\r
612 return false;\r
613 }\r
614 \r
615 //\r
616 // Check if Guid+Version is unique\r
617 //\r
618 if (GlobalData.findPlatformId(guid, version) != null) {\r
619 Log.wrn("New File", "A platform with same Guid and same Version already exists, please selece a new Guid or Version!");\r
620 return false;\r
621 }\r
a13899c5 622 }\r
623\r
624 return true;\r
625 }\r
626\r
627 /**\r
628 Save file\r
629 \r
630 **/\r
631 public void save() {\r
632 if (mode == DataType.RETURN_TYPE_MODULE_SURFACE_AREA) {\r
633 this.saveModule();\r
634 }\r
635 if (mode == DataType.RETURN_TYPE_PACKAGE_SURFACE_AREA) {\r
636 this.savePackage();\r
637 }\r
638 if (mode == DataType.RETURN_TYPE_PLATFORM_SURFACE_AREA) {\r
639 this.savePlatform();\r
640 }\r
641 }\r
642\r
643 /**\r
644 Save all components of Msa Header\r
645 \r
646 **/\r
647 private void saveModule() {\r
739c6b04 648 msa = null;\r
a13899c5 649 String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
650\r
651 //\r
652 // Save to memory\r
653 //\r
654 try {\r
655 MsaHeaderDocument.MsaHeader msaHeader = null;\r
656\r
739c6b04 657 msa = ModuleSurfaceArea.Factory.newInstance();\r
a13899c5 658 msaHeader = MsaHeaderDocument.MsaHeader.Factory.newInstance();\r
659\r
660 msaHeader.setModuleName(this.jTextFieldName.getText());\r
661 msaHeader.setGuidValue(this.jTextFieldGuid.getText());\r
662 msaHeader.setVersion(this.jTextFieldVersion.getText());\r
d1760183 663 msaHeader.setModuleType(ModuleTypeDef.BASE);\r
a13899c5 664\r
665 msa.setMsaHeader(msaHeader);\r
666 } catch (Exception e) {\r
667 Log.err("Save ModuleSurfaceArea Document", e.getMessage());\r
668 return;\r
669 }\r
670\r
671 //\r
672 // Save to real file\r
673 //\r
674 try {\r
675 SaveFile.saveMsaFile(path, msa);\r
a13899c5 676 } catch (Exception e) {\r
ed1665f2 677 Log.wrn("Save Module to file system", e.getMessage());\r
a13899c5 678 Log.err("Save Module to file system", e.getMessage());\r
679 return;\r
680 }\r
681\r
682 //\r
683 // Save to identification\r
684 //\r
685 mid = new ModuleIdentification(this.jTextFieldName.getText(), this.jTextFieldGuid.getText(),\r
92e29378 686 this.jTextFieldVersion.getText(), path, jRadioButtonYes.isSelected());\r
a13899c5 687 mid.setPackageId(packages.elementAt(this.jComboBoxExistingPackage.getSelectedIndex()));\r
688 }\r
689\r
690 /**\r
691 Save all components of Spd Header\r
692 \r
693 **/\r
694 private void savePackage() {\r
739c6b04 695 spd = null;\r
a13899c5 696 String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
697\r
698 //\r
699 // Save to memory\r
700 //\r
701 try {\r
702 SpdHeaderDocument.SpdHeader spdHeader = null;\r
703\r
704 spd = PackageSurfaceArea.Factory.newInstance();\r
705 spdHeader = SpdHeaderDocument.SpdHeader.Factory.newInstance();\r
706\r
707 spdHeader.setPackageName(this.jTextFieldName.getText());\r
708 spdHeader.setGuidValue(this.jTextFieldGuid.getText());\r
709 spdHeader.setVersion(this.jTextFieldVersion.getText());\r
710\r
711 spd.setSpdHeader(spdHeader);\r
712 } catch (Exception e) {\r
ea7f8a93 713 Log.wrn("Save Package Surface Area Description Document", e.getMessage());\r
a13899c5 714 return;\r
715 }\r
716\r
717 //\r
718 // Save to real file\r
719 //\r
720 try {\r
721 SaveFile.saveSpdFile(path, spd);\r
722\r
723 } catch (Exception e) {\r
ed1665f2 724 Log.wrn("Save Package to file system", e.getMessage());\r
a13899c5 725 Log.err("Save Package to file system", e.getMessage());\r
726 return;\r
727 }\r
728\r
729 //\r
730 // Save to identification\r
731 //\r
732 pid = new PackageIdentification(this.jTextFieldName.getText(), this.jTextFieldGuid.getText(),\r
733 this.jTextFieldVersion.getText(), path);\r
734 }\r
735\r
736 /**\r
737 Save all components of Fpd Header\r
738 \r
739 **/\r
740 private void savePlatform() {\r
739c6b04 741 fpd = null;\r
a13899c5 742 String path = Tools.convertPathToCurrentOsType(this.jTextFieldFilePath.getText());\r
743\r
744 //\r
745 // Save to memory\r
746 //\r
747 try {\r
748 PlatformHeader fpdHeader = null;\r
749\r
750 fpd = PlatformSurfaceArea.Factory.newInstance();\r
751 fpdHeader = PlatformHeader.Factory.newInstance();\r
752\r
753 fpdHeader.setPlatformName(this.jTextFieldName.getText());\r
754 fpdHeader.setGuidValue(this.jTextFieldGuid.getText());\r
755 fpdHeader.setVersion(this.jTextFieldVersion.getText());\r
756\r
757 fpd.setPlatformHeader(fpdHeader);\r
758 } catch (Exception e) {\r
ea7f8a93 759 Log.wrn("Save Framework Platform Description Document", e.getMessage());\r
a13899c5 760 return;\r
761 }\r
762\r
763 //\r
764 // Save to real file\r
765 //\r
766 try {\r
767 SaveFile.saveFpdFile(path, fpd);\r
768\r
769 } catch (Exception e) {\r
ed1665f2 770 Log.wrn("Save Platform to file system", e.getMessage());\r
a13899c5 771 Log.err("Save Platform to file system", e.getMessage());\r
772 return;\r
773 }\r
774\r
775 //\r
776 // Save to identification\r
777 //\r
778 fid = new PlatformIdentification(this.jTextFieldName.getText(), this.jTextFieldGuid.getText(),\r
779 this.jTextFieldVersion.getText(), path);\r
780 }\r
781\r
782 public ModuleIdentification getMid() {\r
783 return mid;\r
784 }\r
785\r
a13899c5 786 public PlatformIdentification getFid() {\r
787 return fid;\r
788 }\r
789\r
a13899c5 790 public PackageIdentification getPid() {\r
791 return pid;\r
792 }\r
793\r
92e29378 794 private void upLocation(Component c, int size) {\r
795 c.setLocation(c.getLocation().x, c.getLocation().y - size);\r
796 }\r
739c6b04 797\r
798 public PlatformSurfaceArea getFpd() {\r
799 return fpd;\r
800 }\r
801\r
802 public ModuleSurfaceArea getMsa() {\r
803 return msa;\r
804 }\r
805\r
806 public PackageSurfaceArea getSpd() {\r
807 return spd;\r
808 }\r
a13899c5 809}\r