]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java
Fix the invalid warning message when user add a module that does not support platform...
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdPlatformDefs.java
... / ...
CommitLineData
1/** @file\r
2 Java class FpdPlatformDefs is GUI for Flash element operation in SPD file.\r
3 \r
4 Copyright (c) 2006, Intel Corporation\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12 **/\r
13package org.tianocore.frameworkwizard.platform.ui;\r
14\r
15import java.awt.BorderLayout;\r
16import javax.swing.JPanel;\r
17\r
18import javax.swing.JFrame;\r
19import javax.swing.JTabbedPane;\r
20import javax.swing.JButton;\r
21import javax.swing.ListSelectionModel;\r
22\r
23import org.tianocore.PlatformSurfaceAreaDocument;\r
24import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
25import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
26import org.tianocore.frameworkwizard.toolchain.ToolChainId;\r
27\r
28import javax.swing.JCheckBox;\r
29import javax.swing.JOptionPane;\r
30import javax.swing.JTextField;\r
31import javax.swing.JLabel;\r
32import javax.swing.JScrollPane;\r
33import javax.swing.JTable;\r
34import javax.swing.event.InternalFrameAdapter;\r
35import javax.swing.event.InternalFrameEvent;\r
36//import javax.swing.event.ListSelectionEvent;\r
37//import javax.swing.event.ListSelectionListener;\r
38import javax.swing.event.TableModelEvent;\r
39import javax.swing.event.TableModelListener;\r
40import javax.swing.table.DefaultTableModel;\r
41import javax.swing.table.TableModel;\r
42import javax.swing.JComboBox;\r
43import java.awt.Dimension;\r
44import java.util.Vector;\r
45\r
46public class FpdPlatformDefs extends IInternalFrame {\r
47\r
48 private static boolean Debug = false;\r
49\r
50 private final int dialogWidth = 600;\r
51\r
52 private final int oneRowHeight = 20;\r
53\r
54 private final int twoRowHeight = 40;\r
55\r
56 // private final int threeRowHeight = 60;\r
57\r
58 private final int fourRowHeight = 80;\r
59\r
60 private final int sepHeight = 6;\r
61\r
62 // private final int sepWidth = 10;\r
63\r
64 private final int offsetWidth = 70;\r
65\r
66 private final int buttonWidth = 90;\r
67\r
68 private final int rowOne = 12;\r
69\r
70 private final int rowTwo = rowOne + oneRowHeight + sepHeight * 3;\r
71\r
72 private final int rowThree = rowTwo + oneRowHeight + sepHeight;\r
73\r
74 private final int rowFour = rowThree + oneRowHeight + sepHeight;\r
75\r
76 private final int rowFive = rowFour + fourRowHeight + sepHeight * 3;\r
77\r
78 private final int rowSix = rowFive + oneRowHeight + sepHeight;\r
79\r
80 private final int rowSeven = rowSix + oneRowHeight + sepHeight;\r
81\r
82 private final int rowEight = rowSeven + oneRowHeight + sepHeight;\r
83\r
84 private final int rowNine = rowEight + oneRowHeight + sepHeight;\r
85\r
86 private final int rowTen = rowNine + fourRowHeight + sepHeight + sepHeight * 3;\r
87\r
88 private final int rowEleven = rowTen + oneRowHeight + sepHeight;\r
89\r
90 private final int rowTwelve = rowEleven + oneRowHeight + sepHeight;\r
91\r
92 private final int dialogHeight = rowTwelve + twoRowHeight;\r
93\r
94 private final int labelColumn = 12;\r
95\r
96 private final int valueColumn = 168;\r
97\r
98 private final int labelWidth = 155;\r
99\r
100 private final int valueWidth = 320;\r
101\r
102 private final int valueCenter = valueColumn + (valueWidth / 2);\r
103\r
104 private final int tableHeight = fourRowHeight;\r
105\r
106 private final int tableWidth = valueWidth;\r
107\r
108 static JFrame frame;\r
109\r
110 private JPanel jContentPane = null;\r
111\r
112 private JTabbedPane jTabbedPane = null;\r
113\r
114 private TargetTableModel buildTargetTableModel = null;\r
115\r
116 private SkuInfoTableModel skuInfoTableModel = null;\r
117\r
118 private OpeningPlatformType docConsole = null;\r
119\r
120 private FpdFileContents ffc = null;\r
121\r
122 private JPanel jPanelGeneralTab = null;\r
123\r
124 private JPanel jPanelGeneralContainer = null;\r
125\r
126 private JLabel jLabelSupArch = null;\r
127\r
128 private JCheckBox jCheckBoxIa32 = null;\r
129\r
130 private JCheckBox jCheckBoxX64 = null;\r
131\r
132 private JCheckBox jCheckBoxIpf = null;\r
133\r
134 private JComboBox jComboBoxInterDir = null;\r
135\r
136 private JComboBox jBuildTargetComboBox = null;\r
137\r
138 private JTable jTableBuildTargets = null;\r
139\r
140 private JPanel jArchitectureSelections = null;\r
141\r
142 private JLabel jLabelBuildTargets = null;\r
143\r
144 // private JTextField jTextFieldBuildTarget = null;\r
145\r
146 private JButton jButtonAddBuildTarget = null;\r
147\r
148 private JButton jButtonDelBuildTarget = null;\r
149\r
150 private JScrollPane jScrollPaneBuildTargets = null;\r
151\r
152 private JScrollPane jScrollPaneSkuInfo = null;\r
153\r
154 private JTable jTableSkuInfo = null;\r
155\r
156 private JCheckBox jCheckBoxEbc = null;\r
157\r
158 private JCheckBox jCheckBoxArm = null;\r
159\r
160 private JCheckBox jCheckBoxPpc = null;\r
161\r
162 private JLabel jLabelSkuInfo = null;\r
163\r
164 private JLabel jLabelSkuId = null;\r
165\r
166 private JTextField jTextFieldSkuId = null;\r
167\r
168 private JLabel jLabelSkuName = null;\r
169\r
170 private JTextField jTextFieldSkuName = null;\r
171\r
172 private JButton jButtonSkuAdd = null;\r
173\r
174 private JButton jButtonSkuDel = null;\r
175\r
176 private JLabel jLabelIntermediateDirs = null;\r
177\r
178 private JLabel jLabelOutputDir = null;\r
179\r
180 private JTextField jTextFieldOutputDir = null;\r
181\r
182 private JLabel jLabelOutputInfo = null;\r
183\r
184 private int selectedRow = -1;\r
185\r
186 /**\r
187 * The following are not used by the UI \r
188 */\r
189 private static final long serialVersionUID = 1L;\r
190\r
191 private ToolChainId tid = new ToolChainId();\r
192\r
193 public FpdPlatformDefs() {\r
194 super();\r
195 initialize();\r
196 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
197 this.setVisible(true);\r
198 }\r
199\r
200 public FpdPlatformDefs(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd) {\r
201 this();\r
202 ffc = new FpdFileContents(fpd);\r
203 init(ffc);\r
204 }\r
205\r
206 public FpdPlatformDefs(OpeningPlatformType opt) {\r
207 this(opt.getXmlFpd());\r
208 docConsole = opt;\r
209 }\r
210\r
211 /**\r
212 * This method initializes jTabbedPane \r
213 * \r
214 * @return javax.swing.JTabbedPane \r
215 */\r
216 private JTabbedPane getJTabbedPane() {\r
217 if (jTabbedPane == null) {\r
218 jTabbedPane = new JTabbedPane();\r
219 jTabbedPane.addTab("General", null, getJPanelGeneralTab(), null);\r
220 }\r
221 return jTabbedPane;\r
222 }\r
223\r
224 /**\r
225 * This method initializes this\r
226 * \r
227 * @return void\r
228 */\r
229 private void initialize() {\r
230 this.setSize(dialogWidth, dialogHeight);\r
231 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
232 this.setTitle("FPD Platform Definitions");\r
233 this.setContentPane(getJContentPane());\r
234 this.addInternalFrameListener(new InternalFrameAdapter() {\r
235 public void internalFrameDeactivated(InternalFrameEvent e) {\r
236 if (jTableBuildTargets.isEditing()) {\r
237 jTableBuildTargets.getCellEditor().stopCellEditing();\r
238 }\r
239 if (jTableSkuInfo.isEditing()) {\r
240 jTableSkuInfo.getCellEditor().stopCellEditing();\r
241 }\r
242\r
243 }\r
244 });\r
245 }\r
246\r
247 private void init(FpdFileContents ffc) {\r
248 Vector<Object> v = new Vector<Object>();\r
249 ffc.getPlatformDefsSupportedArchs(v);\r
250 showSupportedArchitectures(v);\r
251 v.removeAllElements();\r
252\r
253 ffc.getPlatformDefsBuildTargets(v);\r
254 buildTargetTableModel.setRowCount(0);\r
255 for (int i = 0; i < v.size(); ++i) {\r
256 Object[] row = { v.get(i) };\r
257 buildTargetTableModel.addRow(row);\r
258 }\r
259\r
260 String[][] saa = new String[ffc.getPlatformDefsSkuInfoCount()][2];\r
261 ffc.getPlatformDefsSkuInfos(saa);\r
262 for (int i = 0; i < saa.length; ++i) {\r
263 skuInfoTableModel.addRow(saa[i]);\r
264 }\r
265\r
266 String interDir = ffc.getPlatformDefsInterDir();\r
267 if (interDir != null) {\r
268 jComboBoxInterDir.setSelectedItem(interDir);\r
269 }\r
270\r
271 String outputDir = ffc.getPlatformDefsOutputDir();\r
272 if (outputDir != null) {\r
273 jTextFieldOutputDir.setText(outputDir);\r
274 }\r
275 }\r
276\r
277 private void showSupportedArchitectures(Vector<Object> v) {\r
278 if (v.contains("IA32")) {\r
279 jCheckBoxIa32.setSelected(true);\r
280 } else {\r
281 jCheckBoxIa32.setSelected(false);\r
282 }\r
283 if (v.contains("X64")) {\r
284 jCheckBoxX64.setSelected(true);\r
285 } else {\r
286 jCheckBoxX64.setSelected(false);\r
287 }\r
288 if (v.contains("IPF")) {\r
289 jCheckBoxIpf.setSelected(true);\r
290 } else {\r
291 jCheckBoxIpf.setSelected(false);\r
292 }\r
293 if (v.contains("EBC")) {\r
294 jCheckBoxEbc.setSelected(true);\r
295 } else {\r
296 jCheckBoxEbc.setSelected(false);\r
297 }\r
298 if (v.contains("ARM")) {\r
299 jCheckBoxArm.setSelected(true);\r
300 } else {\r
301 jCheckBoxArm.setSelected(false);\r
302 }\r
303 if (v.contains("PPC")) {\r
304 jCheckBoxPpc.setSelected(true);\r
305 } else {\r
306 jCheckBoxPpc.setSelected(false);\r
307 }\r
308 }\r
309\r
310 private void getSupportedArchitectures(Vector<Object> v) {\r
311 if (docConsole != null) {\r
312 docConsole.setSaved(false);\r
313 }\r
314 v.removeAllElements();\r
315 if (jCheckBoxIa32.isSelected()) {\r
316 v.add("IA32");\r
317 }\r
318 if (jCheckBoxX64.isSelected()) {\r
319 v.add("X64");\r
320 }\r
321 if (jCheckBoxIpf.isSelected()) {\r
322 v.add("IPF");\r
323 }\r
324 if (jCheckBoxEbc.isSelected()) {\r
325 v.add("EBC");\r
326 }\r
327 if (jCheckBoxArm.isSelected()) {\r
328 v.add("ARM");\r
329 }\r
330 if (jCheckBoxPpc.isSelected()) {\r
331 v.add("PPC");\r
332 }\r
333\r
334 }\r
335\r
336 /**\r
337 * This method initializes jContentPane\r
338 * \r
339 * @return javax.swing.JPanel\r
340 */\r
341 private JPanel getJContentPane() {\r
342 if (jContentPane == null) {\r
343 jContentPane = new JPanel();\r
344 jContentPane.setLayout(new BorderLayout());\r
345 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
346 }\r
347 return jContentPane;\r
348 }\r
349\r
350 /**\r
351 * This method initializes jPanel4 \r
352 * \r
353 * @return javax.swing.JPanel \r
354 */\r
355 private JPanel getJPanelGeneralTab() {\r
356 if (jPanelGeneralTab == null) {\r
357 jPanelGeneralTab = new JPanel();\r
358 jPanelGeneralTab.setBounds(new java.awt.Rectangle(0, 0, dialogWidth * 2, dialogHeight * 3));\r
359 jPanelGeneralTab.setPreferredSize(new java.awt.Dimension(dialogWidth + 10, (dialogHeight * 3) + 10));\r
360 jPanelGeneralTab.setAutoscrolls(true);\r
361 jPanelGeneralTab.setLocation(0, 0);\r
362 jPanelGeneralTab.setLayout(null);\r
363 jPanelGeneralTab.add(getJPanelGeneralContainer(), null);\r
364 }\r
365 return jPanelGeneralTab;\r
366 }\r
367\r
368 /**\r
369 * This method initializes jPanel5 \r
370 * \r
371 * @return javax.swing.JPanel \r
372 */\r
373 private JPanel getJPanelGeneralContainer() {\r
374 if (jPanelGeneralContainer == null) {\r
375 jLabelSupArch = new JLabel();\r
376 jLabelSupArch.setText("Supported Architectures");\r
377 jLabelSupArch.setBounds(new java.awt.Rectangle(labelColumn, rowOne, labelWidth, oneRowHeight));\r
378 jLabelBuildTargets = new JLabel();\r
379 jLabelBuildTargets.setText("Build Targets");\r
380 jLabelBuildTargets.setBounds(new java.awt.Rectangle(labelColumn, rowTwo, labelWidth, oneRowHeight));\r
381 jLabelSkuInfo = new JLabel();\r
382 jLabelSkuInfo.setText("SKU Information");\r
383 jLabelSkuInfo.setBounds(new java.awt.Rectangle(labelColumn, rowFive, labelWidth, oneRowHeight));\r
384 jLabelSkuId = new JLabel();\r
385 jLabelSkuId.setText("SKU ID Number");\r
386 jLabelSkuId.setBounds(new java.awt.Rectangle(labelColumn + 10, rowSix, labelWidth, oneRowHeight));\r
387 jLabelSkuName = new JLabel();\r
388 jLabelSkuName.setText("SKU Name");\r
389 jLabelSkuName.setBounds(new java.awt.Rectangle(labelColumn + 10, rowSeven, labelWidth, oneRowHeight));\r
390 jLabelOutputInfo = new JLabel();\r
391 jLabelOutputInfo.setText("Output Directory Configuration");\r
392 jLabelOutputInfo.setBounds(new java.awt.Rectangle(labelColumn, rowTen, valueWidth, oneRowHeight));\r
393 jLabelIntermediateDirs = new JLabel();\r
394 jLabelIntermediateDirs.setText("Intermediate Build Directories");\r
395 jLabelIntermediateDirs.setBounds(new java.awt.Rectangle(labelColumn + 10, rowEleven, valueWidth,\r
396 oneRowHeight));\r
397 jLabelOutputDir = new JLabel();\r
398 jLabelOutputDir.setText("Name of the Output Directory");\r
399 jLabelOutputDir.setBounds(new java.awt.Rectangle(labelColumn + 10, rowTwelve, valueWidth, oneRowHeight));\r
400\r
401 jPanelGeneralContainer = new JPanel();\r
402 jPanelGeneralContainer.setLayout(null);\r
403 jPanelGeneralContainer.setLocation(new java.awt.Point(2, 2));\r
404 jPanelGeneralContainer.setBounds(new java.awt.Rectangle(2, 2, dialogWidth * 2, dialogHeight));\r
405 jPanelGeneralContainer.setPreferredSize(new java.awt.Dimension(dialogWidth, dialogHeight));\r
406\r
407 jPanelGeneralContainer.add(jLabelSupArch, null);\r
408 jPanelGeneralContainer.add(getArchitectureSelections(), null);\r
409\r
410 jPanelGeneralContainer.add(jLabelBuildTargets, null);\r
411 // jPanelGeneralContainer.add(getJTextFieldBuildTarget(), null);\r
412 jPanelGeneralContainer.add(getJBuildTargetComboBox(), null);\r
413\r
414 jPanelGeneralContainer.add(getJButtonAddBuildTarget(), null);\r
415 jPanelGeneralContainer.add(getJButtonDelBuildTarget(), null);\r
416 jPanelGeneralContainer.add(getJScrollPaneBuildTargets(), null);\r
417\r
418 jPanelGeneralContainer.add(jLabelSkuInfo, null);\r
419 jPanelGeneralContainer.add(jLabelSkuId, null);\r
420 jPanelGeneralContainer.add(getJTextFieldSkuId(), null);\r
421 jPanelGeneralContainer.add(jLabelSkuName, null);\r
422 jPanelGeneralContainer.add(getJTextFieldSkuName(), null);\r
423 jPanelGeneralContainer.add(getJButtonSkuAdd(), null);\r
424 jPanelGeneralContainer.add(getJButtonSkuDel(), null);\r
425 jPanelGeneralContainer.add(getJScrollPaneSkuInfo(), null);\r
426\r
427 jPanelGeneralContainer.add(jLabelOutputInfo, null);\r
428 jPanelGeneralContainer.add(jLabelIntermediateDirs, null);\r
429 jPanelGeneralContainer.add(getJComboBoxInterDir(), null);\r
430 jPanelGeneralContainer.add(jLabelOutputDir, null);\r
431 jPanelGeneralContainer.add(getJTextFieldOutputDir(), null);\r
432\r
433 }\r
434 return jPanelGeneralContainer;\r
435 }\r
436\r
437 /**\r
438 * This method initializes jArchitectureSelections Row 4\r
439 * \r
440 * @return jArchitectureSelections\r
441 */\r
442 private JPanel getArchitectureSelections() {\r
443 if (jArchitectureSelections == null) {\r
444 jArchitectureSelections = new JPanel();\r
445 jArchitectureSelections.setLayout(null);\r
446 jArchitectureSelections.add(getJCheckBoxIa32(), null);\r
447 jArchitectureSelections.add(getJCheckBoxX64(), null);\r
448 jArchitectureSelections.add(getJCheckBoxIpf(), null);\r
449 jArchitectureSelections.add(getJCheckBoxEbc(), null);\r
450 jArchitectureSelections.add(getJCheckBoxArm(), null);\r
451 jArchitectureSelections.add(getJCheckBoxPpc(), null);\r
452 jArchitectureSelections.setBounds(new java.awt.Rectangle(valueColumn, rowOne, valueWidth, oneRowHeight));\r
453 jArchitectureSelections.setPreferredSize(new java.awt.Dimension(valueWidth, oneRowHeight));\r
454 jArchitectureSelections.setLocation(new java.awt.Point(valueColumn, rowOne));\r
455 jArchitectureSelections.setToolTipText("<html>A Platform may support one or more architectures," \r
456 + "<br>at least one architecture must be selected!</html>");\r
457 }\r
458 return jArchitectureSelections;\r
459 }\r
460\r
461 /**\r
462 * This method initializes jCheckBox1 \r
463 * \r
464 * @return javax.swing.JCheckBox \r
465 */\r
466 private JCheckBox getJCheckBoxIa32() {\r
467 if (jCheckBoxIa32 == null) {\r
468 jCheckBoxIa32 = new JCheckBox();\r
469 jCheckBoxIa32.setText("IA32");\r
470 jCheckBoxIa32.setBounds(new java.awt.Rectangle(0, 0, 55, 20));\r
471 jCheckBoxIa32.addItemListener(new java.awt.event.ItemListener() {\r
472 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
473 Vector<Object> v = new Vector<Object>();\r
474 getSupportedArchitectures(v);\r
475 if (v.size() == 0) {\r
476 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
477 jCheckBoxIa32.setSelected(true);\r
478 return;\r
479 }\r
480 ffc.setPlatformDefsSupportedArchs(v);\r
481 }\r
482 });\r
483 }\r
484 return jCheckBoxIa32;\r
485 }\r
486\r
487 /**\r
488 * This method initializes jCheckBox2 \r
489 * \r
490 * @return javax.swing.JCheckBox \r
491 */\r
492 private JCheckBox getJCheckBoxX64() {\r
493 if (jCheckBoxX64 == null) {\r
494 jCheckBoxX64 = new JCheckBox();\r
495 jCheckBoxX64.setText("X64");\r
496 jCheckBoxX64.setBounds(new java.awt.Rectangle(55, 0, 53, 20));\r
497 jCheckBoxX64.addItemListener(new java.awt.event.ItemListener() {\r
498 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
499 Vector<Object> v = new Vector<Object>();\r
500 getSupportedArchitectures(v);\r
501 if (v.size() == 0) {\r
502 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
503 jCheckBoxX64.setSelected(true);\r
504 return;\r
505 }\r
506 ffc.setPlatformDefsSupportedArchs(v);\r
507 }\r
508 });\r
509 }\r
510 return jCheckBoxX64;\r
511 }\r
512\r
513 /**\r
514 * This method initializes jCheckBox3 \r
515 * \r
516 * @return javax.swing.JCheckBox \r
517 */\r
518 private JCheckBox getJCheckBoxIpf() {\r
519 if (jCheckBoxIpf == null) {\r
520 jCheckBoxIpf = new JCheckBox();\r
521 jCheckBoxIpf.setText("IPF");\r
522 jCheckBoxIpf.setBounds(new java.awt.Rectangle(108, 0, 52, 20));\r
523 jCheckBoxIpf.addItemListener(new java.awt.event.ItemListener() {\r
524 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
525 Vector<Object> v = new Vector<Object>();\r
526 getSupportedArchitectures(v);\r
527 if (v.size() == 0) {\r
528 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
529 jCheckBoxIpf.setSelected(true);\r
530 return;\r
531 }\r
532 ffc.setPlatformDefsSupportedArchs(v);\r
533 }\r
534 });\r
535 }\r
536 return jCheckBoxIpf;\r
537 }\r
538\r
539 /**\r
540 * This method initializes jCheckBox \r
541 * \r
542 * @return javax.swing.JCheckBox \r
543 */\r
544 private JCheckBox getJCheckBoxEbc() {\r
545 if (jCheckBoxEbc == null) {\r
546 jCheckBoxEbc = new JCheckBox();\r
547 // jCheckBoxEbc.setPreferredSize(new java.awt.Dimension(50, 20));\r
548 jCheckBoxEbc.setBounds(new java.awt.Rectangle(160, 0, 53, 20));\r
549 jCheckBoxEbc.setText("EBC");\r
550 jCheckBoxEbc.setVisible(true);\r
551 jCheckBoxEbc.addItemListener(new java.awt.event.ItemListener() {\r
552 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
553 Vector<Object> v = new Vector<Object>();\r
554 getSupportedArchitectures(v);\r
555 if (v.size() == 0) {\r
556 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
557 jCheckBoxEbc.setSelected(true);\r
558 return;\r
559 }\r
560 ffc.setPlatformDefsSupportedArchs(v);\r
561 }\r
562 });\r
563 }\r
564 return jCheckBoxEbc;\r
565 }\r
566\r
567 /**\r
568 * This method initializes jCheckBox5 \r
569 * \r
570 * @return javax.swing.JCheckBox \r
571 */\r
572 private JCheckBox getJCheckBoxArm() {\r
573 if (jCheckBoxArm == null) {\r
574 jCheckBoxArm = new JCheckBox();\r
575 // jCheckBoxArm.setPreferredSize(new java.awt.Dimension(52, 20));\r
576 jCheckBoxArm.setBounds(new java.awt.Rectangle(213, 0, 54, 20));\r
577 jCheckBoxArm.setText("ARM");\r
578 jCheckBoxArm.setVisible(true);\r
579 jCheckBoxArm.addItemListener(new java.awt.event.ItemListener() {\r
580 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
581 Vector<Object> v = new Vector<Object>();\r
582 getSupportedArchitectures(v);\r
583 if (v.size() == 0) {\r
584 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
585 jCheckBoxArm.setSelected(true);\r
586 return;\r
587 }\r
588 ffc.setPlatformDefsSupportedArchs(v);\r
589 }\r
590 });\r
591 }\r
592 return jCheckBoxArm;\r
593 }\r
594\r
595 /**\r
596 * This method initializes jCheckBox6 \r
597 * \r
598 * @return javax.swing.JCheckBox \r
599 */\r
600 private JCheckBox getJCheckBoxPpc() {\r
601 if (jCheckBoxPpc == null) {\r
602 jCheckBoxPpc = new JCheckBox();\r
603 // jCheckBoxPpc.setPreferredSize(new Dimension(50, 20));\r
604 jCheckBoxPpc.setBounds(new java.awt.Rectangle(267, 0, 53, 20));\r
605 jCheckBoxPpc.setText("PPC");\r
606 jCheckBoxPpc.setVisible(true);\r
607 jCheckBoxPpc.addItemListener(new java.awt.event.ItemListener() {\r
608 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
609 Vector<Object> v = new Vector<Object>();\r
610 getSupportedArchitectures(v);\r
611 if (v.size() == 0) {\r
612 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
613 jCheckBoxPpc.setSelected(true);\r
614 return;\r
615 }\r
616 ffc.setPlatformDefsSupportedArchs(v);\r
617 }\r
618 });\r
619 }\r
620 return jCheckBoxPpc;\r
621 }\r
622\r
623 /**\r
624 * Use a ComboBox for BuildTargets\r
625 * \r
626 * @return javax.swing.JComboBox jBuildTargetComboBox\r
627 */\r
628 private JComboBox getJBuildTargetComboBox() {\r
629 if (jBuildTargetComboBox == null) {\r
630 String toolBt = null;\r
631 if (tid.getToolsDefTargetNames() == null)\r
632 toolBt = "DEBUG RELEASE";\r
633 else\r
634 toolBt = tid.getToolsDefTargetNames().trim();\r
635\r
636 if ((toolBt.contains("*")) || (toolBt.length() < 1)) {\r
637 toolBt = "DEBUG RELEASE";\r
638 }\r
639 if (Debug)\r
640 System.out.println("Using Build Targets: " + toolBt.trim());\r
641\r
642 toolBt = toolBt.replaceAll(" ", ":");\r
643 toolBt = " :" + toolBt;\r
644 if (Debug)\r
645 System.out.println("Using Build Targets: " + toolBt.trim());\r
646 String[] buildTargets = toolBt.trim().split(":");\r
647\r
648 jBuildTargetComboBox = new JComboBox(buildTargets);\r
649 jBuildTargetComboBox.setEditable(true);\r
650 jBuildTargetComboBox.setPreferredSize(new Dimension(valueWidth, oneRowHeight));\r
651 jBuildTargetComboBox.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, valueWidth, oneRowHeight));\r
652 jBuildTargetComboBox.setLocation(new java.awt.Point(valueColumn, rowTwo));\r
653 jBuildTargetComboBox.setToolTipText("<html>Select a defined Target and then click Add,<br>"\r
654 + "or enter a new, one word TargetName and then click Add.<br>"\r
655 + "Remember to define the Targetname in the tool defintion file."\r
656 + "</html>");\r
657\r
658 }\r
659 return jBuildTargetComboBox;\r
660 }\r
661\r
662 /**\r
663 * This method initializes jTextField1 \r
664 * \r
665 * @return javax.swing.JTextField \r
666 */\r
667 // private JTextField getJTextFieldBuildTarget() {\r
668 // if (jTextFieldBuildTarget == null) {\r
669 // jTextFieldBuildTarget = new JTextField();\r
670 // jTextFieldBuildTarget.setPreferredSize(new Dimension(valueWidth, oneRowHeight));\r
671 // jTextFieldBuildTarget.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, valueWidth, oneRowHeight));\r
672 // jTextFieldBuildTarget.setLocation(new java.awt.Point(valueColumn, rowTwo));\r
673 // }\r
674 // return jTextFieldBuildTarget;\r
675 // }\r
676 /**\r
677 * This method initializes jButton2 \r
678 * \r
679 * @return javax.swing.JButton \r
680 */\r
681 private JButton getJButtonAddBuildTarget() {\r
682 if (jButtonAddBuildTarget == null) {\r
683 jButtonAddBuildTarget = new JButton();\r
684 jButtonAddBuildTarget.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
685 jButtonAddBuildTarget.setBounds(new java.awt.Rectangle(valueCenter - buttonWidth - 5, rowThree,\r
686 buttonWidth, oneRowHeight));\r
687 jButtonAddBuildTarget.setLocation(new java.awt.Point(valueCenter - buttonWidth - 5, rowThree));\r
688 jButtonAddBuildTarget.setText("Add");\r
689 jButtonAddBuildTarget.setVisible(true);\r
690\r
691 jButtonAddBuildTarget.addActionListener(new java.awt.event.ActionListener() {\r
692 public void actionPerformed(java.awt.event.ActionEvent e) {\r
693 // Used with Text Field\r
694 // if (jTextFieldBuildTarget.getText().length() > 0) {\r
695 // String[] row = { jTextFieldBuildTarget.getText() };\r
696 // jTextFieldBuildTarget.setText("");\r
697 // buildTargetTableModel.addRow(row);\r
698 // Vector<Object> v = new Vector<Object>();\r
699 // for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
700 // v.add(buildTargetTableModel.getValueAt(i, 0));\r
701 // }\r
702 // docConsole.setSaved(false);\r
703 // ffc.setPlatformDefsBuildTargets(v);\r
704 // }\r
705 // Use with ComboBox\r
706 if (jBuildTargetComboBox.getSelectedItem().toString().length() > 0) {\r
707 String[] row = { jBuildTargetComboBox.getSelectedItem().toString() };\r
708 buildTargetTableModel.addRow(row);\r
709 Vector<Object> v = new Vector<Object>();\r
710 for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
711 v.add(buildTargetTableModel.getValueAt(i, 0));\r
712 }\r
713 docConsole.setSaved(false);\r
714 ffc.setPlatformDefsBuildTargets(v);\r
715 }\r
716 }\r
717 });\r
718 }\r
719 return jButtonAddBuildTarget;\r
720 }\r
721\r
722 /**\r
723 * This method initializes jButton3 \r
724 * \r
725 * @return javax.swing.JButton \r
726 */\r
727 private JButton getJButtonDelBuildTarget() {\r
728 if (jButtonDelBuildTarget == null) {\r
729 jButtonDelBuildTarget = new JButton();\r
730 jButtonDelBuildTarget.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
731 jButtonDelBuildTarget\r
732 .setBounds(new java.awt.Rectangle(valueCenter + 5, rowThree, buttonWidth, oneRowHeight));\r
733 jButtonDelBuildTarget.setLocation(new java.awt.Point(valueCenter + 5, rowThree));\r
734 jButtonDelBuildTarget.setText("Delete");\r
735 jButtonDelBuildTarget.setVisible(true);\r
736\r
737 jButtonDelBuildTarget.addActionListener(new java.awt.event.ActionListener() {\r
738 public void actionPerformed(java.awt.event.ActionEvent e) {\r
739 if (jTableBuildTargets.getSelectedRow() < 0) {\r
740 return;\r
741 }\r
742 if (jTableBuildTargets.getRowCount() == 1) {\r
743 JOptionPane.showMessageDialog(frame, "At least one build target should be set for this platform.");\r
744 return;\r
745 }\r
746 buildTargetTableModel.removeRow(jTableBuildTargets.getSelectedRow());\r
747 Vector<Object> v = new Vector<Object>();\r
748 for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
749 v.add(buildTargetTableModel.getValueAt(i, 0));\r
750 }\r
751 docConsole.setSaved(false);\r
752 ffc.setPlatformDefsBuildTargets(v);\r
753 }\r
754 });\r
755 }\r
756 return jButtonDelBuildTarget;\r
757 }\r
758\r
759 /**\r
760 * This method initializes jScrollPane2 \r
761 * \r
762 * @return javax.swing.JScrollPane \r
763 */\r
764 private JScrollPane getJScrollPaneBuildTargets() {\r
765 if (jScrollPaneBuildTargets == null) {\r
766 jScrollPaneBuildTargets = new JScrollPane();\r
767 jScrollPaneBuildTargets.setPreferredSize(new Dimension(tableWidth - 20, tableHeight - 20));\r
768 jScrollPaneBuildTargets.setBounds(new java.awt.Rectangle(valueColumn, rowFour, tableWidth - 5,\r
769 tableHeight - 5));\r
770 jScrollPaneBuildTargets.setLocation(new java.awt.Point(valueColumn, rowFour));\r
771 jScrollPaneBuildTargets\r
772 .setBorder(javax.swing.BorderFactory\r
773 .createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
774\r
775 jScrollPaneBuildTargets.setViewportView(getJTableBuildTargets());\r
776 }\r
777 return jScrollPaneBuildTargets;\r
778 }\r
779\r
780 /**\r
781 * This method initializes jTable \r
782 * \r
783 * @return javax.swing.JTable \r
784 */\r
785 private JTable getJTableBuildTargets() {\r
786 if (jTableBuildTargets == null) {\r
787 buildTargetTableModel = new TargetTableModel();\r
788\r
789 jTableBuildTargets = new JTable(buildTargetTableModel);\r
790 jTableBuildTargets.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
791 jTableBuildTargets.setRowHeight(oneRowHeight);\r
792 jTableBuildTargets.setToolTipText("<html>Select one of the Targets from the table and<br>"\r
793 + "click Delete to remove the target from the platform.</html>");\r
794 buildTargetTableModel.addColumn("Build Target");\r
795\r
796 jTableBuildTargets.getModel().addTableModelListener(new TableModelListener() {\r
797 public void tableChanged(TableModelEvent arg0) {\r
798 // TODO Auto-generated method stub\r
799 selectedRow = jTableBuildTargets.getSelectedRow();\r
800 if (selectedRow < 0) {\r
801 return;\r
802 }\r
803 TableModel m = (TableModel) arg0.getSource();\r
804 if (arg0.getType() == TableModelEvent.UPDATE) {\r
805 //ToDo Data Validition check.\r
806 Vector<Object> v = new Vector<Object>();\r
807 for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
808 v.add(m.getValueAt(i, 0));\r
809 }\r
810 docConsole.setSaved(false);\r
811 ffc.setPlatformDefsBuildTargets(v);\r
812 }\r
813 }\r
814 });\r
815\r
816 }\r
817 return jTableBuildTargets;\r
818 }\r
819\r
820 /**\r
821 * This method initializes jTextField2 \r
822 * \r
823 * @return javax.swing.JTextField \r
824 */\r
825 private JTextField getJTextFieldSkuId() {\r
826 if (jTextFieldSkuId == null) {\r
827 jTextFieldSkuId = new JTextField();\r
828 jTextFieldSkuId.setPreferredSize(new Dimension(40, oneRowHeight));\r
829 jTextFieldSkuId.setBounds(new java.awt.Rectangle(valueColumn, rowSix, 40, oneRowHeight));\r
830 jTextFieldSkuId.setLocation(new java.awt.Point(valueColumn, rowSix));\r
831 jTextFieldSkuId.setToolTipText("Enter a unique integer value.");\r
832 }\r
833 return jTextFieldSkuId;\r
834 }\r
835\r
836 /**\r
837 * This method initializes jTextField3 \r
838 * \r
839 * @return javax.swing.JTextField \r
840 */\r
841 private JTextField getJTextFieldSkuName() {\r
842 if (jTextFieldSkuName == null) {\r
843 jTextFieldSkuName = new JTextField();\r
844 jTextFieldSkuName.setPreferredSize(new Dimension(valueWidth, oneRowHeight));\r
845 jTextFieldSkuName.setBounds(new java.awt.Rectangle(valueColumn, rowSeven, valueWidth, oneRowHeight));\r
846 jTextFieldSkuName.setLocation(new java.awt.Point(valueColumn, rowSeven));\r
847 jTextFieldSkuName.setToolTipText("<html>Enter a name to help identify this SKU.<br>"\r
848 + "This entry is not used by the build system, it is<br>"\r
849 + "used only by this user interface.</html>");\r
850 }\r
851 return jTextFieldSkuName;\r
852 }\r
853\r
854 /**\r
855 * This method initializes jButton \r
856 * \r
857 * @return javax.swing.JButton \r
858 */\r
859 private JButton getJButtonSkuAdd() {\r
860 if (jButtonSkuAdd == null) {\r
861 jButtonSkuAdd = new JButton();\r
862\r
863 jButtonSkuAdd.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
864 jButtonSkuAdd.setBounds(new java.awt.Rectangle(valueCenter - buttonWidth - 5, rowEight, buttonWidth,\r
865 oneRowHeight));\r
866 jButtonSkuAdd.setLocation(new java.awt.Point(valueCenter - buttonWidth - 5, rowEight));\r
867 jButtonSkuAdd.setText("Add");\r
868 jButtonSkuAdd.setVisible(true);\r
869\r
870 jButtonSkuAdd.addActionListener(new java.awt.event.ActionListener() {\r
871 public void actionPerformed(java.awt.event.ActionEvent e) {\r
872 if (jTextFieldSkuId.getText().length() > 0) {\r
873 String[] row = { jTextFieldSkuId.getText(), jTextFieldSkuName.getText() };\r
874 skuInfoTableModel.addRow(row);\r
875 docConsole.setSaved(false);\r
876 ffc.genPlatformDefsSkuInfo(row[0], row[1]);\r
877 }\r
878 }\r
879 });\r
880 }\r
881 return jButtonSkuAdd;\r
882 }\r
883\r
884 /**\r
885 * This method initializes jButton1 \r
886 * \r
887 * @return javax.swing.JButton \r
888 */\r
889 private JButton getJButtonSkuDel() {\r
890 if (jButtonSkuDel == null) {\r
891 jButtonSkuDel = new JButton();\r
892 jButtonSkuDel.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
893 jButtonSkuDel.setBounds(new java.awt.Rectangle(valueCenter + 5, rowEight, buttonWidth, oneRowHeight));\r
894 jButtonSkuDel.setLocation(new java.awt.Point(valueCenter + 5, rowEight));\r
895 jButtonSkuDel.setText("Delete");\r
896 jButtonSkuDel.setVisible(true);\r
897 jButtonSkuDel.addActionListener(new java.awt.event.ActionListener() {\r
898 public void actionPerformed(java.awt.event.ActionEvent e) {\r
899 if (jTableSkuInfo.isEditing()) {\r
900 jTableSkuInfo.getCellEditor().stopCellEditing();\r
901 }\r
902 if (jTableSkuInfo.getSelectedRow() < 1) {\r
903 return;\r
904 }\r
905 docConsole.setSaved(false);\r
906 ffc.removePlatformDefsSkuInfo(jTableSkuInfo.getSelectedRow());\r
907 skuInfoTableModel.removeRow(jTableSkuInfo.getSelectedRow());\r
908 }\r
909 });\r
910 }\r
911 return jButtonSkuDel;\r
912 }\r
913\r
914 /**\r
915 * This method initializes jScrollPane3 \r
916 * \r
917 * @return javax.swing.JScrollPane \r
918 */\r
919 private JScrollPane getJScrollPaneSkuInfo() {\r
920 if (jScrollPaneSkuInfo == null) {\r
921 jScrollPaneSkuInfo = new JScrollPane();\r
922 jScrollPaneSkuInfo.setPreferredSize(new Dimension(tableWidth - 20, tableHeight - 20));\r
923 jScrollPaneSkuInfo.setBounds(new java.awt.Rectangle(valueColumn, rowNine, tableWidth - 5, tableHeight - 5));\r
924 jScrollPaneSkuInfo.setLocation(new java.awt.Point(valueColumn, rowNine));\r
925\r
926 jScrollPaneSkuInfo\r
927 .setBorder(javax.swing.BorderFactory\r
928 .createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
929\r
930 jScrollPaneSkuInfo.setViewportView(getJTableSkuInfo());\r
931 }\r
932 return jScrollPaneSkuInfo;\r
933 }\r
934\r
935 /**\r
936 * This method initializes jTable2 \r
937 * \r
938 * @return javax.swing.JTable \r
939 */\r
940 private JTable getJTableSkuInfo() {\r
941 if (jTableSkuInfo == null) {\r
942 skuInfoTableModel = new SkuInfoTableModel();\r
943 skuInfoTableModel.addColumn("SKU ID");\r
944 skuInfoTableModel.addColumn("Name");\r
945 jTableSkuInfo = new JTable(skuInfoTableModel);\r
946 jTableSkuInfo.setToolTipText("<html>SKU ID 0 must always be defined as the default.<br>"\r
947 + "0 can mean either SKU disabled, or it can be the<br>"\r
948 + "default value if more than one SKU is defined, and the<br>"\r
949 + "platform is not jumpered to use one of the other SKU values.</html>");\r
950\r
951 jTableSkuInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
952\r
953 jTableSkuInfo.getModel().addTableModelListener(new TableModelListener() {\r
954 public void tableChanged(TableModelEvent arg0) {\r
955 // TODO Auto-generated method stub\r
956 int row = arg0.getFirstRow();\r
957 TableModel m = (TableModel) arg0.getSource();\r
958 if (arg0.getType() == TableModelEvent.UPDATE) {\r
959 //ToDo Data Validition check.\r
960 String id = m.getValueAt(row, 0) + "";\r
961 String name = m.getValueAt(row, 1) + "";\r
962 docConsole.setSaved(false);\r
963 ffc.updatePlatformDefsSkuInfo(row, id, name);\r
964 }\r
965 }\r
966 });\r
967 }\r
968 return jTableSkuInfo;\r
969 }\r
970\r
971 /**\r
972 * This method initializes jComboBox \r
973 * \r
974 * @return javax.swing.JComboBox \r
975 */\r
976 private JComboBox getJComboBoxInterDir() {\r
977 if (jComboBoxInterDir == null) {\r
978 jComboBoxInterDir = new JComboBox();\r
979 jComboBoxInterDir.setPreferredSize(new Dimension(75, oneRowHeight));\r
980 jComboBoxInterDir.setBounds(new java.awt.Rectangle(valueColumn + offsetWidth, rowEleven, 95, oneRowHeight));\r
981 jComboBoxInterDir.setLocation(new java.awt.Point(valueColumn + offsetWidth, rowEleven));\r
982 jComboBoxInterDir.addItem("UNIFIED");\r
983 jComboBoxInterDir.addItem("MODULE");\r
984 jComboBoxInterDir.setSelectedIndex(0);\r
985 jComboBoxInterDir.setToolTipText("<html>Select UNIFIED to generate intermediate directories under<br>"\r
986 + "under platform directory tree.<br>"\r
987 + "Select MODULE to generate intermediate directories under the<br>"\r
988 + "individual module directories.</html>");\r
989 jComboBoxInterDir.addItemListener(new java.awt.event.ItemListener() {\r
990 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
991 if (docConsole != null) {\r
992 docConsole.setSaved(false);\r
993 }\r
994 ffc.setPlatformDefsInterDir(jComboBoxInterDir.getSelectedItem() + "");\r
995 }\r
996 });\r
997 }\r
998 return jComboBoxInterDir;\r
999 }\r
1000\r
1001 /**\r
1002 * This method initializes jTextField \r
1003 * \r
1004 * @return javax.swing.JTextField Row Twelve \r
1005 */\r
1006 private JTextField getJTextFieldOutputDir() {\r
1007 if (jTextFieldOutputDir == null) {\r
1008 jTextFieldOutputDir = new JTextField();\r
1009 jTextFieldOutputDir.setPreferredSize(new java.awt.Dimension(290, 20));\r
1010 jTextFieldOutputDir.setBounds(new java.awt.Rectangle(valueColumn + offsetWidth, rowTwelve, valueWidth - 30,\r
1011 oneRowHeight));\r
1012 jTextFieldOutputDir.setLocation(new java.awt.Point(valueColumn + offsetWidth, rowTwelve));\r
1013 jTextFieldOutputDir.setToolTipText("Select the name or URL for the output directory tree.");\r
1014 jTextFieldOutputDir.addFocusListener(new java.awt.event.FocusAdapter() {\r
1015 public void focusLost(java.awt.event.FocusEvent e) {\r
1016 docConsole.setSaved(false);\r
1017 ffc.setPlatformDefsOutputDir(jTextFieldOutputDir.getText());\r
1018 }\r
1019 });\r
1020 }\r
1021 return jTextFieldOutputDir;\r
1022 }\r
1023\r
1024} // @jve:decl-index=0:visual-constraint="10,10"\r
1025\r
1026class SkuInfoTableModel extends DefaultTableModel {\r
1027 private static final long serialVersionUID = 1L;\r
1028\r
1029 public boolean isCellEditable(int row, int column) {\r
1030 if (row == 0) {\r
1031 return false;\r
1032 }\r
1033 return true;\r
1034 }\r
1035}\r
1036\r
1037class TargetTableModel extends DefaultTableModel {\r
1038 private static final long serialVersionUID = 1L;\r
1039\r
1040 public boolean isCellEditable(int row, int column) {\r
1041 if (row < 2) {\r
1042 return false;\r
1043 }\r
1044 return true;\r
1045 }\r
1046}\r