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