]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdPlatformDefs.java
Fix not able to save after change build target.
[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 return;\r
478 }\r
479 ffc.setPlatformDefsSupportedArchs(v);\r
480 }\r
481 });\r
482 }\r
483 return jCheckBoxIa32;\r
484 }\r
485\r
486 /**\r
487 * This method initializes jCheckBox2 \r
488 * \r
489 * @return javax.swing.JCheckBox \r
490 */\r
491 private JCheckBox getJCheckBoxX64() {\r
492 if (jCheckBoxX64 == null) {\r
493 jCheckBoxX64 = new JCheckBox();\r
494 jCheckBoxX64.setText("X64");\r
495 jCheckBoxX64.setBounds(new java.awt.Rectangle(55, 0, 53, 20));\r
496 jCheckBoxX64.addItemListener(new java.awt.event.ItemListener() {\r
497 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
498 Vector<Object> v = new Vector<Object>();\r
499 getSupportedArchitectures(v);\r
500 if (v.size() == 0) {\r
501 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
502 return;\r
503 }\r
504 ffc.setPlatformDefsSupportedArchs(v);\r
505 }\r
506 });\r
507 }\r
508 return jCheckBoxX64;\r
509 }\r
510\r
511 /**\r
512 * This method initializes jCheckBox3 \r
513 * \r
514 * @return javax.swing.JCheckBox \r
515 */\r
516 private JCheckBox getJCheckBoxIpf() {\r
517 if (jCheckBoxIpf == null) {\r
518 jCheckBoxIpf = new JCheckBox();\r
519 jCheckBoxIpf.setText("IPF");\r
520 jCheckBoxIpf.setBounds(new java.awt.Rectangle(108, 0, 52, 20));\r
521 jCheckBoxIpf.addItemListener(new java.awt.event.ItemListener() {\r
522 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
523 Vector<Object> v = new Vector<Object>();\r
524 getSupportedArchitectures(v);\r
525 if (v.size() == 0) {\r
526 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
527 return;\r
528 }\r
529 ffc.setPlatformDefsSupportedArchs(v);\r
530 }\r
531 });\r
532 }\r
533 return jCheckBoxIpf;\r
534 }\r
535\r
536 /**\r
537 * This method initializes jCheckBox \r
538 * \r
539 * @return javax.swing.JCheckBox \r
540 */\r
541 private JCheckBox getJCheckBoxEbc() {\r
542 if (jCheckBoxEbc == null) {\r
543 jCheckBoxEbc = new JCheckBox();\r
544 // jCheckBoxEbc.setPreferredSize(new java.awt.Dimension(50, 20));\r
545 jCheckBoxEbc.setBounds(new java.awt.Rectangle(160, 0, 53, 20));\r
546 jCheckBoxEbc.setText("EBC");\r
547 jCheckBoxEbc.setVisible(true);\r
548 jCheckBoxEbc.addItemListener(new java.awt.event.ItemListener() {\r
549 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
550 Vector<Object> v = new Vector<Object>();\r
551 getSupportedArchitectures(v);\r
552 if (v.size() == 0) {\r
553 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
554 return;\r
555 }\r
556 ffc.setPlatformDefsSupportedArchs(v);\r
557 }\r
558 });\r
559 }\r
560 return jCheckBoxEbc;\r
561 }\r
562\r
563 /**\r
564 * This method initializes jCheckBox5 \r
565 * \r
566 * @return javax.swing.JCheckBox \r
567 */\r
568 private JCheckBox getJCheckBoxArm() {\r
569 if (jCheckBoxArm == null) {\r
570 jCheckBoxArm = new JCheckBox();\r
571 // jCheckBoxArm.setPreferredSize(new java.awt.Dimension(52, 20));\r
572 jCheckBoxArm.setBounds(new java.awt.Rectangle(213, 0, 54, 20));\r
573 jCheckBoxArm.setText("ARM");\r
574 jCheckBoxArm.setVisible(true);\r
575 jCheckBoxArm.addItemListener(new java.awt.event.ItemListener() {\r
576 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
577 Vector<Object> v = new Vector<Object>();\r
578 getSupportedArchitectures(v);\r
579 if (v.size() == 0) {\r
580 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
581 return;\r
582 }\r
583 ffc.setPlatformDefsSupportedArchs(v);\r
584 }\r
585 });\r
586 }\r
587 return jCheckBoxArm;\r
588 }\r
589\r
590 /**\r
591 * This method initializes jCheckBox6 \r
592 * \r
593 * @return javax.swing.JCheckBox \r
594 */\r
595 private JCheckBox getJCheckBoxPpc() {\r
596 if (jCheckBoxPpc == null) {\r
597 jCheckBoxPpc = new JCheckBox();\r
598 // jCheckBoxPpc.setPreferredSize(new Dimension(50, 20));\r
599 jCheckBoxPpc.setBounds(new java.awt.Rectangle(267, 0, 53, 20));\r
600 jCheckBoxPpc.setText("PPC");\r
601 jCheckBoxPpc.setVisible(true);\r
602 jCheckBoxPpc.addItemListener(new java.awt.event.ItemListener() {\r
603 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
604 Vector<Object> v = new Vector<Object>();\r
605 getSupportedArchitectures(v);\r
606 if (v.size() == 0) {\r
607 JOptionPane.showMessageDialog(frame, "Platform must support at least ONE Architecture.");\r
608 return;\r
609 }\r
610 ffc.setPlatformDefsSupportedArchs(v);\r
611 }\r
612 });\r
613 }\r
614 return jCheckBoxPpc;\r
615 }\r
616\r
617 /**\r
618 * Use a ComboBox for BuildTargets\r
619 * \r
620 * @return javax.swing.JComboBox jBuildTargetComboBox\r
621 */\r
622 private JComboBox getJBuildTargetComboBox() {\r
623 if (jBuildTargetComboBox == null) {\r
624 String toolBt = null;\r
625 if (tid.getToolsDefTargetNames() == null)\r
626 toolBt = "DEBUG RELEASE";\r
627 else\r
628 toolBt = tid.getToolsDefTargetNames().trim();\r
629\r
630 if ((toolBt.contains("*")) || (toolBt.length() < 1)) {\r
631 toolBt = "DEBUG RELEASE";\r
632 }\r
633 if (Debug)\r
634 System.out.println("Using Build Targets: " + toolBt.trim());\r
635\r
636 toolBt = toolBt.replaceAll(" ", ":");\r
637 toolBt = " :" + toolBt;\r
638 if (Debug)\r
639 System.out.println("Using Build Targets: " + toolBt.trim());\r
640 String[] buildTargets = toolBt.trim().split(":");\r
641\r
642 jBuildTargetComboBox = new JComboBox(buildTargets);\r
643 jBuildTargetComboBox.setEditable(true);\r
644 jBuildTargetComboBox.setPreferredSize(new Dimension(valueWidth, oneRowHeight));\r
645 jBuildTargetComboBox.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, valueWidth, oneRowHeight));\r
646 jBuildTargetComboBox.setLocation(new java.awt.Point(valueColumn, rowTwo));\r
647 jBuildTargetComboBox.setToolTipText("<html>Select a defined Target and then click Add,<br>"\r
648 + "or enter a new, one word TargetName and then click Add.<br>"\r
649 + "Remember to define the Targetname in the tool defintion file."\r
650 + "</html>");\r
651\r
652 }\r
653 return jBuildTargetComboBox;\r
654 }\r
655\r
656 /**\r
657 * This method initializes jTextField1 \r
658 * \r
659 * @return javax.swing.JTextField \r
660 */\r
661 // private JTextField getJTextFieldBuildTarget() {\r
662 // if (jTextFieldBuildTarget == null) {\r
663 // jTextFieldBuildTarget = new JTextField();\r
664 // jTextFieldBuildTarget.setPreferredSize(new Dimension(valueWidth, oneRowHeight));\r
665 // jTextFieldBuildTarget.setBounds(new java.awt.Rectangle(valueColumn, rowTwo, valueWidth, oneRowHeight));\r
666 // jTextFieldBuildTarget.setLocation(new java.awt.Point(valueColumn, rowTwo));\r
667 // }\r
668 // return jTextFieldBuildTarget;\r
669 // }\r
670 /**\r
671 * This method initializes jButton2 \r
672 * \r
673 * @return javax.swing.JButton \r
674 */\r
675 private JButton getJButtonAddBuildTarget() {\r
676 if (jButtonAddBuildTarget == null) {\r
677 jButtonAddBuildTarget = new JButton();\r
678 jButtonAddBuildTarget.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
679 jButtonAddBuildTarget.setBounds(new java.awt.Rectangle(valueCenter - buttonWidth - 5, rowThree,\r
680 buttonWidth, oneRowHeight));\r
681 jButtonAddBuildTarget.setLocation(new java.awt.Point(valueCenter - buttonWidth - 5, rowThree));\r
682 jButtonAddBuildTarget.setText("Add");\r
683 jButtonAddBuildTarget.setVisible(true);\r
684\r
685 jButtonAddBuildTarget.addActionListener(new java.awt.event.ActionListener() {\r
686 public void actionPerformed(java.awt.event.ActionEvent e) {\r
687 // Used with Text Field\r
688 // if (jTextFieldBuildTarget.getText().length() > 0) {\r
689 // String[] row = { jTextFieldBuildTarget.getText() };\r
690 // jTextFieldBuildTarget.setText("");\r
691 // buildTargetTableModel.addRow(row);\r
692 // Vector<Object> v = new Vector<Object>();\r
693 // for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
694 // v.add(buildTargetTableModel.getValueAt(i, 0));\r
695 // }\r
696 // docConsole.setSaved(false);\r
697 // ffc.setPlatformDefsBuildTargets(v);\r
698 // }\r
699 // Use with ComboBox\r
700 if (jBuildTargetComboBox.getSelectedItem().toString().length() > 0) {\r
701 String[] row = { jBuildTargetComboBox.getSelectedItem().toString() };\r
702 buildTargetTableModel.addRow(row);\r
703 Vector<Object> v = new Vector<Object>();\r
704 for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
705 v.add(buildTargetTableModel.getValueAt(i, 0));\r
706 }\r
707 docConsole.setSaved(false);\r
708 ffc.setPlatformDefsBuildTargets(v);\r
709 }\r
710 }\r
711 });\r
712 }\r
713 return jButtonAddBuildTarget;\r
714 }\r
715\r
716 /**\r
717 * This method initializes jButton3 \r
718 * \r
719 * @return javax.swing.JButton \r
720 */\r
721 private JButton getJButtonDelBuildTarget() {\r
722 if (jButtonDelBuildTarget == null) {\r
723 jButtonDelBuildTarget = new JButton();\r
724 jButtonDelBuildTarget.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
725 jButtonDelBuildTarget\r
726 .setBounds(new java.awt.Rectangle(valueCenter + 5, rowThree, buttonWidth, oneRowHeight));\r
727 jButtonDelBuildTarget.setLocation(new java.awt.Point(valueCenter + 5, rowThree));\r
728 jButtonDelBuildTarget.setText("Delete");\r
729 jButtonDelBuildTarget.setVisible(true);\r
730\r
731 jButtonDelBuildTarget.addActionListener(new java.awt.event.ActionListener() {\r
732 public void actionPerformed(java.awt.event.ActionEvent e) {\r
733 if (jTableBuildTargets.getSelectedRow() < 0 || jTableBuildTargets.getSelectedRow() < 0) {\r
734 return;\r
735 }\r
736 buildTargetTableModel.removeRow(jTableBuildTargets.getSelectedRow());\r
737 Vector<Object> v = new Vector<Object>();\r
738 for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
739 v.remove(buildTargetTableModel.getValueAt(i, 0));\r
740 }\r
741 docConsole.setSaved(false);\r
742 ffc.setPlatformDefsBuildTargets(v);\r
743 }\r
744 });\r
745 }\r
746 return jButtonDelBuildTarget;\r
747 }\r
748\r
749 /**\r
750 * This method initializes jScrollPane2 \r
751 * \r
752 * @return javax.swing.JScrollPane \r
753 */\r
754 private JScrollPane getJScrollPaneBuildTargets() {\r
755 if (jScrollPaneBuildTargets == null) {\r
756 jScrollPaneBuildTargets = new JScrollPane();\r
757 jScrollPaneBuildTargets.setPreferredSize(new Dimension(tableWidth - 20, tableHeight - 20));\r
758 jScrollPaneBuildTargets.setBounds(new java.awt.Rectangle(valueColumn, rowFour, tableWidth - 5,\r
759 tableHeight - 5));\r
760 jScrollPaneBuildTargets.setLocation(new java.awt.Point(valueColumn, rowFour));\r
761 jScrollPaneBuildTargets\r
762 .setBorder(javax.swing.BorderFactory\r
763 .createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
764\r
765 jScrollPaneBuildTargets.setViewportView(getJTableBuildTargets());\r
766 }\r
767 return jScrollPaneBuildTargets;\r
768 }\r
769\r
770 /**\r
771 * This method initializes jTable \r
772 * \r
773 * @return javax.swing.JTable \r
774 */\r
775 private JTable getJTableBuildTargets() {\r
776 if (jTableBuildTargets == null) {\r
777 buildTargetTableModel = new TargetTableModel();\r
778\r
779 jTableBuildTargets = new JTable(buildTargetTableModel);\r
780 jTableBuildTargets.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
781 jTableBuildTargets.setRowHeight(oneRowHeight);\r
782 jTableBuildTargets.setToolTipText("<html>Select one of the Targets from the table and<br>"\r
783 + "click Delete to remove the target from the platform.</html>");\r
784 buildTargetTableModel.addColumn("Build Target");\r
785\r
786 jTableBuildTargets.getModel().addTableModelListener(new TableModelListener() {\r
787 public void tableChanged(TableModelEvent arg0) {\r
788 // TODO Auto-generated method stub\r
789 selectedRow = jTableBuildTargets.getSelectedRow();\r
790 if (selectedRow < 0) {\r
791 return;\r
792 }\r
793 TableModel m = (TableModel) arg0.getSource();\r
794 if (arg0.getType() == TableModelEvent.UPDATE) {\r
795 //ToDo Data Validition check.\r
796 Vector<Object> v = new Vector<Object>();\r
797 for (int i = 0; i < jTableBuildTargets.getRowCount(); ++i) {\r
798 v.add(m.getValueAt(i, 0));\r
799 }\r
800 docConsole.setSaved(false);\r
801 ffc.setPlatformDefsBuildTargets(v);\r
802 }\r
803 }\r
804 });\r
805\r
806 }\r
807 return jTableBuildTargets;\r
808 }\r
809\r
810 /**\r
811 * This method initializes jTextField2 \r
812 * \r
813 * @return javax.swing.JTextField \r
814 */\r
815 private JTextField getJTextFieldSkuId() {\r
816 if (jTextFieldSkuId == null) {\r
817 jTextFieldSkuId = new JTextField();\r
818 jTextFieldSkuId.setPreferredSize(new Dimension(40, oneRowHeight));\r
819 jTextFieldSkuId.setBounds(new java.awt.Rectangle(valueColumn, rowSix, 40, oneRowHeight));\r
820 jTextFieldSkuId.setLocation(new java.awt.Point(valueColumn, rowSix));\r
821 jTextFieldSkuId.setToolTipText("Enter a unique integer value.");\r
822 }\r
823 return jTextFieldSkuId;\r
824 }\r
825\r
826 /**\r
827 * This method initializes jTextField3 \r
828 * \r
829 * @return javax.swing.JTextField \r
830 */\r
831 private JTextField getJTextFieldSkuName() {\r
832 if (jTextFieldSkuName == null) {\r
833 jTextFieldSkuName = new JTextField();\r
834 jTextFieldSkuName.setPreferredSize(new Dimension(valueWidth, oneRowHeight));\r
835 jTextFieldSkuName.setBounds(new java.awt.Rectangle(valueColumn, rowSeven, valueWidth, oneRowHeight));\r
836 jTextFieldSkuName.setLocation(new java.awt.Point(valueColumn, rowSeven));\r
837 jTextFieldSkuName.setToolTipText("<html>Enter a name to help identify this SKU.<br>"\r
838 + "This entry is not used by the build system, it is<br>"\r
839 + "used only by this user interface.</html>");\r
840 }\r
841 return jTextFieldSkuName;\r
842 }\r
843\r
844 /**\r
845 * This method initializes jButton \r
846 * \r
847 * @return javax.swing.JButton \r
848 */\r
849 private JButton getJButtonSkuAdd() {\r
850 if (jButtonSkuAdd == null) {\r
851 jButtonSkuAdd = new JButton();\r
852\r
853 jButtonSkuAdd.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
854 jButtonSkuAdd.setBounds(new java.awt.Rectangle(valueCenter - buttonWidth - 5, rowEight, buttonWidth,\r
855 oneRowHeight));\r
856 jButtonSkuAdd.setLocation(new java.awt.Point(valueCenter - buttonWidth - 5, rowEight));\r
857 jButtonSkuAdd.setText("Add");\r
858 jButtonSkuAdd.setVisible(true);\r
859\r
860 jButtonSkuAdd.addActionListener(new java.awt.event.ActionListener() {\r
861 public void actionPerformed(java.awt.event.ActionEvent e) {\r
862 if (jTextFieldSkuId.getText().length() > 0) {\r
863 String[] row = { jTextFieldSkuId.getText(), jTextFieldSkuName.getText() };\r
864 skuInfoTableModel.addRow(row);\r
865 docConsole.setSaved(false);\r
866 ffc.genPlatformDefsSkuInfo(row[0], row[1]);\r
867 }\r
868 }\r
869 });\r
870 }\r
871 return jButtonSkuAdd;\r
872 }\r
873\r
874 /**\r
875 * This method initializes jButton1 \r
876 * \r
877 * @return javax.swing.JButton \r
878 */\r
879 private JButton getJButtonSkuDel() {\r
880 if (jButtonSkuDel == null) {\r
881 jButtonSkuDel = new JButton();\r
882 jButtonSkuDel.setPreferredSize(new Dimension(buttonWidth, oneRowHeight));\r
883 jButtonSkuDel.setBounds(new java.awt.Rectangle(valueCenter + 5, rowEight, buttonWidth, oneRowHeight));\r
884 jButtonSkuDel.setLocation(new java.awt.Point(valueCenter + 5, rowEight));\r
885 jButtonSkuDel.setText("Delete");\r
886 jButtonSkuDel.setVisible(true);\r
887 jButtonSkuDel.addActionListener(new java.awt.event.ActionListener() {\r
888 public void actionPerformed(java.awt.event.ActionEvent e) {\r
889 if (jTableSkuInfo.isEditing()) {\r
890 jTableSkuInfo.getCellEditor().stopCellEditing();\r
891 }\r
892 if (jTableSkuInfo.getSelectedRow() < 1) {\r
893 return;\r
894 }\r
895 docConsole.setSaved(false);\r
896 ffc.removePlatformDefsSkuInfo(jTableSkuInfo.getSelectedRow());\r
897 skuInfoTableModel.removeRow(jTableSkuInfo.getSelectedRow());\r
898 }\r
899 });\r
900 }\r
901 return jButtonSkuDel;\r
902 }\r
903\r
904 /**\r
905 * This method initializes jScrollPane3 \r
906 * \r
907 * @return javax.swing.JScrollPane \r
908 */\r
909 private JScrollPane getJScrollPaneSkuInfo() {\r
910 if (jScrollPaneSkuInfo == null) {\r
911 jScrollPaneSkuInfo = new JScrollPane();\r
912 jScrollPaneSkuInfo.setPreferredSize(new Dimension(tableWidth - 20, tableHeight - 20));\r
913 jScrollPaneSkuInfo.setBounds(new java.awt.Rectangle(valueColumn, rowNine, tableWidth - 5, tableHeight - 5));\r
914 jScrollPaneSkuInfo.setLocation(new java.awt.Point(valueColumn, rowNine));\r
915\r
916 jScrollPaneSkuInfo\r
917 .setBorder(javax.swing.BorderFactory\r
918 .createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
919\r
920 jScrollPaneSkuInfo.setViewportView(getJTableSkuInfo());\r
921 }\r
922 return jScrollPaneSkuInfo;\r
923 }\r
924\r
925 /**\r
926 * This method initializes jTable2 \r
927 * \r
928 * @return javax.swing.JTable \r
929 */\r
930 private JTable getJTableSkuInfo() {\r
931 if (jTableSkuInfo == null) {\r
932 skuInfoTableModel = new SkuInfoTableModel();\r
933 skuInfoTableModel.addColumn("SKU ID");\r
934 skuInfoTableModel.addColumn("Name");\r
935 jTableSkuInfo = new JTable(skuInfoTableModel);\r
936 jTableSkuInfo.setToolTipText("<html>SKU ID 0 must always be defined as the default.<br>"\r
937 + "0 can mean either SKU disabled, or it can be the<br>"\r
938 + "default value if more than one SKU is defined, and the<br>"\r
939 + "platform is not jumpered to use one of the other SKU values.</html>");\r
940\r
941 jTableSkuInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
942\r
943 jTableSkuInfo.getModel().addTableModelListener(new TableModelListener() {\r
944 public void tableChanged(TableModelEvent arg0) {\r
945 // TODO Auto-generated method stub\r
946 int row = arg0.getFirstRow();\r
947 TableModel m = (TableModel) arg0.getSource();\r
948 if (arg0.getType() == TableModelEvent.UPDATE) {\r
949 //ToDo Data Validition check.\r
950 String id = m.getValueAt(row, 0) + "";\r
951 String name = m.getValueAt(row, 1) + "";\r
952 docConsole.setSaved(false);\r
953 ffc.updatePlatformDefsSkuInfo(row, id, name);\r
954 }\r
955 }\r
956 });\r
957 }\r
958 return jTableSkuInfo;\r
959 }\r
960\r
961 /**\r
962 * This method initializes jComboBox \r
963 * \r
964 * @return javax.swing.JComboBox \r
965 */\r
966 private JComboBox getJComboBoxInterDir() {\r
967 if (jComboBoxInterDir == null) {\r
968 jComboBoxInterDir = new JComboBox();\r
969 jComboBoxInterDir.setPreferredSize(new Dimension(75, oneRowHeight));\r
970 jComboBoxInterDir.setBounds(new java.awt.Rectangle(valueColumn + offsetWidth, rowEleven, 95, oneRowHeight));\r
971 jComboBoxInterDir.setLocation(new java.awt.Point(valueColumn + offsetWidth, rowEleven));\r
972 jComboBoxInterDir.addItem("UNIFIED");\r
973 jComboBoxInterDir.addItem("MODULE");\r
974 jComboBoxInterDir.setSelectedIndex(0);\r
975 jComboBoxInterDir.setToolTipText("<html>Select UNIFIED to generate intermediate directories under<br>"\r
976 + "under platform directory tree.<br>"\r
977 + "Select MODULE to generate intermediate directories under the<br>"\r
978 + "individual module directories.</html>");\r
979 jComboBoxInterDir.addItemListener(new java.awt.event.ItemListener() {\r
980 public void itemStateChanged(java.awt.event.ItemEvent e) {\r
981 if (docConsole != null) {\r
982 docConsole.setSaved(false);\r
983 }\r
984 ffc.setPlatformDefsInterDir(jComboBoxInterDir.getSelectedItem() + "");\r
985 }\r
986 });\r
987 }\r
988 return jComboBoxInterDir;\r
989 }\r
990\r
991 /**\r
992 * This method initializes jTextField \r
993 * \r
994 * @return javax.swing.JTextField Row Twelve \r
995 */\r
996 private JTextField getJTextFieldOutputDir() {\r
997 if (jTextFieldOutputDir == null) {\r
998 jTextFieldOutputDir = new JTextField();\r
999 jTextFieldOutputDir.setPreferredSize(new java.awt.Dimension(290, 20));\r
1000 jTextFieldOutputDir.setBounds(new java.awt.Rectangle(valueColumn + offsetWidth, rowTwelve, valueWidth - 30,\r
1001 oneRowHeight));\r
1002 jTextFieldOutputDir.setLocation(new java.awt.Point(valueColumn + offsetWidth, rowTwelve));\r
1003 jTextFieldOutputDir.setToolTipText("Select the name or URL for the output directory tree.");\r
1004 jTextFieldOutputDir.addFocusListener(new java.awt.event.FocusAdapter() {\r
1005 public void focusLost(java.awt.event.FocusEvent e) {\r
1006 docConsole.setSaved(false);\r
1007 ffc.setPlatformDefsOutputDir(jTextFieldOutputDir.getText());\r
1008 }\r
1009 });\r
1010 }\r
1011 return jTextFieldOutputDir;\r
1012 }\r
1013\r
1014} // @jve:decl-index=0:visual-constraint="10,10"\r
1015\r
1016class SkuInfoTableModel extends DefaultTableModel {\r
1017 private static final long serialVersionUID = 1L;\r
1018\r
1019 public boolean isCellEditable(int row, int column) {\r
1020 if (row == 0) {\r
1021 return false;\r
1022 }\r
1023 return true;\r
1024 }\r
1025}\r
1026\r
1027class TargetTableModel extends DefaultTableModel {\r
1028 private static final long serialVersionUID = 1L;\r
1029\r
1030 public boolean isCellEditable(int row, int column) {\r
1031 if (row < 2) {\r
1032 return false;\r
1033 }\r
1034 return true;\r
1035 }\r
1036}\r