]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/packaging/ui/SpdPcdDefs.java
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@709 6f19259b...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdPcdDefs.java
CommitLineData
a13899c5 1/** @file\r
2 Java class SpdPcdDefs is GUI for create PCD definition elements of spd file.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.frameworkwizard.packaging.ui;\r
14\r
15import java.awt.Dimension;\r
a13899c5 16import java.awt.event.ActionEvent;\r
a13899c5 17import java.awt.event.ComponentEvent;\r
18\r
a13899c5 19import javax.swing.DefaultCellEditor;\r
20import javax.swing.JFrame;\r
21import javax.swing.JOptionPane;\r
22import javax.swing.JPanel;\r
a13899c5 23import javax.swing.JLabel;\r
24import javax.swing.JTextField;\r
25import javax.swing.JComboBox;\r
26import javax.swing.JButton;\r
27import javax.swing.ListSelectionModel;\r
28\r
29import javax.swing.event.InternalFrameAdapter;\r
30import javax.swing.event.InternalFrameEvent;\r
31import javax.swing.event.ListSelectionEvent;\r
32import javax.swing.event.ListSelectionListener;\r
33import javax.swing.event.TableModelEvent;\r
34import javax.swing.event.TableModelListener;\r
35import javax.swing.table.DefaultTableModel;\r
36import javax.swing.table.TableColumn;\r
37import javax.swing.table.TableModel;\r
38\r
39import org.tianocore.PackageSurfaceAreaDocument;\r
a13899c5 40\r
41import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
42import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
43import javax.swing.JScrollPane;\r
44import javax.swing.JTable;\r
45import javax.swing.JCheckBox;\r
46import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
47import java.awt.Rectangle;\r
48import java.util.Vector;\r
49\r
50/**\r
51 GUI for create PCD definition elements of spd file\r
52 \r
53 @since PackageEditor 1.0\r
54**/\r
55public class SpdPcdDefs extends IInternalFrame implements TableModelListener{\r
56\r
0b5e1cc3 57 /**\r
58 * \r
59 */\r
60 private static final long serialVersionUID = 1L;\r
61\r
a13899c5 62 static JFrame frame;\r
63 \r
64 private JPanel jContentPane = null; \r
65\r
66 private JLabel jLabelItemType = null;\r
67\r
68 private JLabel jLabelC_Name = null;\r
69\r
70 private JTextField jTextFieldC_Name = null;\r
71\r
72 private JLabel jLabelToken = null;\r
73\r
74 private JTextField jTextFieldToken = null;\r
75\r
76 private JLabel jLabelDataType = null;\r
77\r
78 private JButton jButtonOk = null;\r
79\r
80 private JButton jButtonCancel = null;\r
81\r
82 private JComboBox jComboBoxDataType = null;\r
83\r
84 private SpdFileContents sfc = null;\r
85\r
86 private StarLabel jStarLabel2 = null;\r
87\r
88 private StarLabel jStarLabel3 = null;\r
89\r
90 private StarLabel jStarLabel4 = null;\r
91\r
92 private StarLabel jStarLabel = null;\r
93\r
94 private StarLabel jStarLabel1 = null;\r
95\r
96 private JLabel jLabelTokenSpace = null;\r
97\r
98 private JTextField jTextFieldTsGuid = null;\r
99\r
100 private JLabel jLabelVarVal = null;\r
101\r
102 private JTextField jTextField = null;\r
103\r
104 private JLabel jLabelDefVal = null;\r
105\r
106 private JTextField jTextFieldDefaultValue = null;\r
107\r
108 private JButton jButtonAdd = null;\r
109 \r
110 private CheckboxTableModel model = null;\r
111\r
112 private JButton jButtonRemove = null;\r
113\r
114 private JButton jButtonClearAll = null;\r
115\r
116 private JButton jButtonGen = null;\r
117 \r
118 private GenGuidDialog guidDialog = null;\r
119\r
120 private JScrollPane jScrollPane = null;\r
121\r
122 private JTable jTable = null;\r
123 \r
124 private JScrollPane topScrollPane = null; // @jve:decl-index=0:visual-constraint="390,10"\r
125 \r
126 private int selectedRow = -1;\r
127\r
128 private StarLabel starLabel = null;\r
129\r
130 private JCheckBox jCheckBox = null;\r
131\r
132 private JCheckBox jCheckBox1 = null;\r
133\r
134 private JCheckBox jCheckBox2 = null;\r
135\r
136 private JCheckBox jCheckBox3 = null;\r
137\r
138 private JCheckBox jCheckBox4 = null;\r
139\r
140 private JScrollPane jScrollPane1 = null;\r
141\r
142 private ICheckBoxList iCheckBoxList = null;\r
143\r
144 private JScrollPane jScrollPane2 = null;\r
145\r
146 private ICheckBoxList iCheckBoxList1 = null;\r
147\r
148 private JLabel jLabel = null;\r
149\r
150 private JLabel jLabel1 = null;\r
151\r
152 /**\r
153 This method initializes this\r
154 \r
155 **/\r
156 private void initialize() {\r
157 this.setTitle("PCD Definition");\r
158 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
159\r
160 }\r
161\r
162 /**\r
163 This method initializes jTextFieldC_Name \r
164 \r
165 @return javax.swing.JTextField \r
166 **/\r
167 private JTextField getJTextFieldC_Name() {\r
168 if (jTextFieldC_Name == null) {\r
169 jTextFieldC_Name = new JTextField();\r
170 jTextFieldC_Name.setBounds(new java.awt.Rectangle(156,9,317,20));\r
171 jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(315,20));\r
172 }\r
173 return jTextFieldC_Name;\r
174 }\r
175\r
176 /**\r
177 This method initializes jTextFieldToken \r
178 \r
179 @return javax.swing.JTextField \r
180 **/\r
181 private JTextField getJTextFieldToken() {\r
182 if (jTextFieldToken == null) {\r
183 jTextFieldToken = new JTextField();\r
184 jTextFieldToken.setBounds(new java.awt.Rectangle(156,33,317,20));\r
185 jTextFieldToken.setPreferredSize(new java.awt.Dimension(315,20));\r
186 }\r
187 return jTextFieldToken;\r
188 }\r
189\r
190 /**\r
191 This method initializes jButtonOk \r
192 \r
193 @return javax.swing.JButton \r
194 **/\r
195 private JButton getJButtonOk() {\r
196 if (jButtonOk == null) {\r
197 jButtonOk = new JButton();\r
198 jButtonOk.setText("OK");\r
199 jButtonOk.setBounds(new java.awt.Rectangle(279,276,90,20));\r
200 jButtonOk.setVisible(false);\r
201 jButtonOk.addActionListener(this);\r
202 }\r
203 return jButtonOk;\r
204 }\r
205\r
206 /**\r
207 This method initializes jButtonCancel \r
208 \r
209 @return javax.swing.JButton \r
210 **/\r
211 private JButton getJButtonCancel() {\r
212 if (jButtonCancel == null) {\r
213 jButtonCancel = new JButton();\r
214 jButtonCancel.setText("Cancel");\r
215 jButtonCancel.setBounds(new java.awt.Rectangle(389,276,82,20));\r
216 jButtonCancel.setVisible(false);\r
217 jButtonCancel.addActionListener(this);\r
218 }\r
219 return jButtonCancel;\r
220 }\r
221\r
222 /**\r
223 This method initializes jComboBoxDataType \r
224 \r
225 @return javax.swing.JComboBox \r
226 **/\r
227 private JComboBox getJComboBoxDataType() {\r
228 if (jComboBoxDataType == null) {\r
229 jComboBoxDataType = new JComboBox();\r
230 jComboBoxDataType.setBounds(new java.awt.Rectangle(156,84,110,20));\r
231 }\r
232 return jComboBoxDataType;\r
233 }\r
234\r
235 /**\r
236 This is the default constructor\r
237 **/\r
238 public SpdPcdDefs() {\r
239 super();\r
240 init();\r
241 initialize();\r
242 \r
243 }\r
244\r
245 public SpdPcdDefs(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa) {\r
246 this();\r
247 sfc = new SpdFileContents(inPsa);\r
248 init(sfc);\r
249 }\r
250 /**\r
251 This method initializes this\r
252 \r
253 @return void\r
254 **/\r
255 private void init() {\r
256 this.setSize(500, 650);\r
257 this.setContentPane(getJContentPane());\r
258 this.addInternalFrameListener(new InternalFrameAdapter(){\r
259 public void internalFrameDeactivated(InternalFrameEvent e){\r
260 if (jTable.isEditing()) {\r
261 jTable.getCellEditor().stopCellEditing();\r
262 }\r
263 }\r
264 });\r
265 initFrame();\r
266 this.setVisible(true);\r
267 }\r
268\r
269 private void init(SpdFileContents sfc){\r
270 if (sfc.getSpdPcdDefinitionCount() == 0) {\r
271 return ;\r
272 }\r
273 String[][] saa = new String[sfc.getSpdPcdDefinitionCount()][8];\r
274 String[][] usage = new String[sfc.getSpdPcdDefinitionCount()][5];\r
275 Object[] rowData = new Object[13];\r
276 sfc.getSpdPcdDefinitions(saa, usage);\r
277 int i = 0;\r
278 while (i < saa.length) {\r
279 \r
280 for (int k = 0; k < 6; ++k) {\r
281 rowData[k] = saa[i][k];\r
282 }\r
283 for (int m = 7; m < 11; ++m) {\r
284 rowData[m] = new Boolean("false");\r
285 }\r
286 int j = 0;\r
287 while (j < 5) {\r
288 if (usage[i][j] == null || usage[i][j].length()==0){\r
289 ++j;\r
290 continue;\r
291 }\r
292 if (usage[i][j].equals("FEATURE_FLAG")){\r
293 rowData[6] = new Boolean("true");\r
294 }\r
295 if (usage[i][j].equals("FIXED_AT_BUILD")){\r
296 rowData[7] = new Boolean("true");\r
297 }\r
298 if (usage[i][j].equals("PATCHABLE_IN_MODULE")){\r
299 rowData[8] = new Boolean("true");\r
300 }\r
301 if (usage[i][j].equals("DYNAMIC")){\r
302 rowData[9] = new Boolean("true");\r
303 }\r
304 if (usage[i][j].equals("DYNAMIC_EX")){\r
305 rowData[10] = new Boolean("true");\r
306 }\r
307 \r
308 ++j;\r
309 }\r
310 \r
311 rowData[11] = saa[i][6];\r
312 rowData[12] = saa[i][7];\r
313 \r
314 model.addRow(rowData);\r
315 \r
316 i++;\r
317 }\r
318 \r
319 \r
320 \r
321 }\r
322 \r
323 private JScrollPane getJContentPane(){\r
324 if (topScrollPane == null){\r
325 topScrollPane = new JScrollPane();\r
326 topScrollPane.setSize(new java.awt.Dimension(482,451));\r
327 topScrollPane.setViewportView(getJContentPane1());\r
328 }\r
329 return topScrollPane;\r
330 }\r
331 private JPanel getJContentPane1() {\r
332 if (jContentPane == null) { \r
333 \r
334 jLabel1 = new JLabel();\r
335 jLabel1.setBounds(new java.awt.Rectangle(241,192,89,16));\r
336 jLabel1.setText("Supported Arch");\r
337 jLabel1.setEnabled(true);\r
338 jLabel = new JLabel();\r
339 jLabel.setBounds(new java.awt.Rectangle(15,193,103,16));\r
340 jLabel.setText("Supported Module");\r
341 jLabel.setEnabled(true);\r
342 starLabel = new StarLabel();\r
343 starLabel.setBounds(new java.awt.Rectangle(2,134,10,20));\r
344 jLabelDefVal = new JLabel();\r
345 jLabelDefVal.setBounds(new java.awt.Rectangle(277,84,80,20));\r
346 jLabelDefVal.setText("Default Value");\r
347 jLabelVarVal = new JLabel();\r
348 jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,84,20));\r
349 jLabelVarVal.setText("Valid Usage");\r
350 jLabelC_Name = new JLabel();\r
351 jLabelC_Name.setText("C_Name");\r
352 jLabelC_Name.setBounds(new java.awt.Rectangle(11,9,140,20));\r
353 jLabelTokenSpace = new JLabel();\r
354 jLabelTokenSpace.setBounds(new java.awt.Rectangle(11,58,140,20));\r
355 jLabelTokenSpace.setText("Token Space");\r
356 jLabelDataType = new JLabel();\r
357 jLabelDataType.setText("Data Type");\r
358 jLabelDataType.setBounds(new java.awt.Rectangle(11,83,140,20));\r
359 jLabelToken = new JLabel();\r
360 jLabelToken.setText("Token");\r
361 jLabelToken.setBounds(new java.awt.Rectangle(11,33,140,20));\r
362 jLabelItemType = new JLabel();\r
363 jLabelItemType.setText("Help Text");\r
364 jLabelItemType.setBounds(new java.awt.Rectangle(11,108,140,20));\r
365 \r
366 \r
367 jContentPane = new JPanel();\r
368 jContentPane.setLayout(null);\r
369 jContentPane.setPreferredSize(new java.awt.Dimension(479,375));\r
370 \r
371 jContentPane.add(jLabelItemType, null);\r
372 jContentPane.add(jLabelC_Name, null);\r
373 jContentPane.add(jLabelTokenSpace, null);\r
374 jContentPane.add(getJTextFieldTsGuid(), null);\r
375 jContentPane.add(jLabelVarVal, null);\r
376 jContentPane.add(getJTextFieldC_Name(), null);\r
377 jContentPane.add(jLabelToken, null);\r
378 jContentPane.add(getJTextFieldToken(), null);\r
379 jContentPane.add(jLabelDataType, null);\r
380 jContentPane.add(getJButtonOk(), null);\r
381 jContentPane.add(getJButtonCancel(), null);\r
382 jContentPane.add(getJComboBoxDataType(), null);\r
383 \r
384 jStarLabel = new StarLabel();\r
385 jStarLabel1 = new StarLabel();\r
386 jStarLabel1.setBounds(new java.awt.Rectangle(2,8,10,20));\r
387 jStarLabel2 = new StarLabel();\r
388 jStarLabel3 = new StarLabel();\r
389 jStarLabel4 = new StarLabel();\r
390 jStarLabel.setLocation(new java.awt.Point(2,84));\r
391 jStarLabel4.setLocation(new java.awt.Point(2, 109));\r
392 jStarLabel2.setLocation(new java.awt.Point(2,33));\r
393 jStarLabel3.setLocation(new java.awt.Point(2, 58));\r
394 jStarLabel3.setSize(new java.awt.Dimension(8,20));\r
395 jContentPane.add(jStarLabel2, null);\r
396 jContentPane.add(jStarLabel3, null);\r
397 jContentPane.add(jStarLabel, null);\r
398 jContentPane.add(jStarLabel1, null);\r
399 jContentPane.add(jStarLabel4, null);\r
400 jContentPane.add(getJTextField(), null);\r
401 jContentPane.add(jLabelDefVal, null);\r
402 jContentPane.add(getJTextFieldDefaultValue(), null);\r
403 jContentPane.add(getJButtonAdd(), null);\r
404 jContentPane.add(getJButtonRemove(), null);\r
405 jContentPane.add(getJButtonClearAll(), null);\r
406 jContentPane.add(getJButtonGen(), null);\r
407 jContentPane.add(getJScrollPane(), null);\r
408 jContentPane.add(starLabel, null);\r
409 jContentPane.add(getJCheckBox(), null);\r
410 jContentPane.add(getJCheckBox1(), null);\r
411 jContentPane.add(getJCheckBox2(), null);\r
412 jContentPane.add(getJCheckBox3(), null);\r
413 jContentPane.add(getJCheckBox4(), null);\r
414 jContentPane.add(getJScrollPane1(), null);\r
415 jContentPane.add(getJScrollPane2(), null);\r
416 jContentPane.add(jLabel, null);\r
417 jContentPane.add(jLabel1, null);\r
418 }\r
419 return jContentPane;\r
420 }\r
421\r
422 /**\r
423 This method initializes comboboxes \r
424 jContentPane.add(jLabelTokenSpace, null);\r
425 \r
426 **/\r
427 private void initFrame() {\r
428\r
429 jComboBoxDataType.addItem("UINT8");\r
430 jComboBoxDataType.addItem("UINT16");\r
431 jComboBoxDataType.addItem("UINT32");\r
432 jComboBoxDataType.addItem("UINT64");\r
433 jComboBoxDataType.addItem("VOID*");\r
434 jComboBoxDataType.addItem("BOOLEAN");\r
435 jComboBoxDataType.setSelectedIndex(0);\r
436 }\r
437\r
438 public void actionPerformed(ActionEvent arg0) {\r
439 \r
440 if (arg0.getSource() == jButtonOk) {\r
441 this.save();\r
442 this.dispose();\r
443\r
444 }\r
445 if (arg0.getSource() == jButtonCancel) {\r
446 this.dispose();\r
447 }\r
448\r
449 if (arg0.getSource() == jButtonAdd) {\r
450 //ToDo: check before add\r
451 if (!checkValid()) {\r
452 return;\r
453 }\r
454 \r
455 String archList = vectorToString(iCheckBoxList.getAllCheckedItemsString());\r
456 if (archList.length() == 0) {\r
457 archList = null;\r
458 }\r
459 String modTypeList = vectorToString(iCheckBoxList1.getAllCheckedItemsString());\r
460 if (modTypeList.length() == 0) {\r
461 modTypeList = null;\r
462 }\r
463 Object[] row = {jTextFieldC_Name.getText(), jTextFieldToken.getText(),\r
464 jTextFieldTsGuid.getText(), jComboBoxDataType.getSelectedItem(), \r
465 jTextFieldDefaultValue.getText(), jTextField.getText(),\r
466 jCheckBox.isSelected(), jCheckBox1.isSelected(),\r
467 jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected(),\r
468 archList, modTypeList};\r
469 \r
470 model.addRow(row);\r
471 \r
472 String usage = getValidUsage(jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected());\r
473 if (usage.length() == 0) {\r
474 usage = null;\r
475 }\r
476 sfc.genSpdPcdDefinitions(row[0]+"", row[1]+"", row[3]+"", usage, row[2]+"", row[4]+"", row[5]+"", archList, modTypeList);\r
477 }\r
478 //\r
479 // remove selected line\r
480 //\r
481 if (arg0.getSource() == jButtonRemove) {\r
482 if (jTable.isEditing()){\r
483 jTable.getCellEditor().stopCellEditing();\r
484 }\r
485 int rowSelected = selectedRow;\r
486 if (rowSelected >= 0) {\r
487 model.removeRow(rowSelected);\r
488 sfc.removeSpdPcdDefinition(rowSelected);\r
489 }\r
490 }\r
491\r
492 if (arg0.getSource() == jButtonClearAll) {\r
493 if (model.getRowCount() == 0) {\r
494 return;\r
495 }\r
496 model.setRowCount(0);\r
497 sfc.removeSpdPcdDefinition();\r
498 }\r
499 \r
500 if (arg0.getSource() == jButtonGen) {\r
501 guidDialog = new GenGuidDialog(this);\r
502 guidDialog.setGuid(jTextFieldTsGuid.getText());\r
503 guidDialog.setVisible(true);\r
504 }\r
505 \r
506 if (arg0.getActionCommand().equals("GenGuidValue")) {\r
507 jTextFieldTsGuid.setText(guidDialog.getGuid());\r
508 }\r
509\r
510 }\r
511\r
512 protected void save() {\r
513 \r
514 }\r
515\r
516 /**\r
517 * This method initializes jTextFieldTsGuid \r
518 * \r
519 * @return javax.swing.JTextField \r
520 */\r
521 private JTextField getJTextFieldTsGuid() {\r
522 if (jTextFieldTsGuid == null) {\r
523 jTextFieldTsGuid = new JTextField();\r
524 jTextFieldTsGuid.setBounds(new java.awt.Rectangle(156,58,249,20));\r
525 jTextFieldTsGuid.setPreferredSize(new java.awt.Dimension(250,20));\r
526 }\r
527 return jTextFieldTsGuid;\r
528 }\r
529\r
530 /**\r
531 * This method initializes jTextField \r
532 * \r
533 * @return javax.swing.JTextField \r
534 */\r
535 private JTextField getJTextField() {\r
536 if (jTextField == null) {\r
537 jTextField = new JTextField();\r
538 jTextField.setBounds(new java.awt.Rectangle(156,108,317,20));\r
539 jTextField.setPreferredSize(new java.awt.Dimension(315,20));\r
540 }\r
541 return jTextField;\r
542 }\r
543\r
544 /**\r
545 * This method initializes jTextFieldDefaultValue \r
546 * \r
547 * @return javax.swing.JTextField \r
548 */\r
549 private JTextField getJTextFieldDefaultValue() {\r
550 if (jTextFieldDefaultValue == null) {\r
551 jTextFieldDefaultValue = new JTextField();\r
552 jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(368,84,105,20));\r
553 jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(104,20));\r
554 }\r
555 return jTextFieldDefaultValue;\r
556 }\r
557\r
558 /**\r
559 * This method initializes jButtonAdd \r
560 * \r
561 * @return javax.swing.JButton \r
562 */\r
563 private JButton getJButtonAdd() {\r
564 if (jButtonAdd == null) {\r
565 jButtonAdd = new JButton();\r
566 jButtonAdd.setBounds(new java.awt.Rectangle(195,277,71,20));\r
567 jButtonAdd.setPreferredSize(new java.awt.Dimension(70,20));\r
568 jButtonAdd.setText("Add");\r
569 jButtonAdd.addActionListener(this);\r
570 }\r
571 return jButtonAdd; \r
572 \r
573 } \r
574 \r
575 /**\r
576 * This method initializes jButtonRemove \r
577 * \r
578 * @return javax.swing.JButton \r
579 */\r
580 private JButton getJButtonRemove() {\r
581 if (jButtonRemove == null) {\r
582 jButtonRemove = new JButton();\r
583 jButtonRemove.setBounds(new java.awt.Rectangle(278,277,81,20));\r
584 jButtonRemove.setPreferredSize(new java.awt.Dimension(70,20));\r
585 jButtonRemove.setText("Delete");\r
586 jButtonRemove.addActionListener(this);\r
587 }\r
588 return jButtonRemove;\r
589 }\r
590\r
591 /**\r
592 * This method initializes jButtonClearAll \r
593 * \r
594 * @return javax.swing.JButton \r
595 */\r
596 private JButton getJButtonClearAll() {\r
597 if (jButtonClearAll == null) {\r
598 jButtonClearAll = new JButton();\r
599 jButtonClearAll.setBounds(new java.awt.Rectangle(382,277,90,20));\r
600 jButtonClearAll.setPreferredSize(new java.awt.Dimension(81,20));\r
601 jButtonClearAll.setText("Clear All");\r
602 jButtonClearAll.addActionListener(this);\r
603 }\r
604 return jButtonClearAll;\r
605 }\r
606\r
607 /**\r
608 * This method initializes jButtonGen \r
609 * \r
610 * @return javax.swing.JButton \r
611 */\r
612 private JButton getJButtonGen() {\r
613 if (jButtonGen == null) {\r
614 jButtonGen = new JButton();\r
615 jButtonGen.setBounds(new java.awt.Rectangle(414,57,58,20));\r
616 jButtonGen.setPreferredSize(new java.awt.Dimension(56,20));\r
617 jButtonGen.setText("Gen");\r
618 jButtonGen.addActionListener(this);\r
619 }\r
620 return jButtonGen;\r
621 }\r
622 \r
623 public void componentResized(ComponentEvent arg0) {\r
624 int intPreferredWidth = 500;\r
625 \r
626 resizeComponentWidth(this.jTextFieldC_Name, this.getWidth(), intPreferredWidth);\r
627 resizeComponentWidth(this.jTextFieldToken, this.getWidth(), intPreferredWidth);\r
628 resizeComponentWidth(this.jTextFieldTsGuid, this.getWidth(), intPreferredWidth);\r
629 resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
630 resizeComponentWidth(this.jTextField, this.getWidth(), intPreferredWidth);\r
631 resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
632 \r
633 resizeComponentWidth(this.jTextField, this.getWidth(), intPreferredWidth);\r
634 resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
635// relocateComponentX(this.jButtonClearAll, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
636// relocateComponentX(this.jButtonRemove, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
637// relocateComponentX(this.jButtonAdd, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
638 relocateComponentX(this.jButtonGen, this.getWidth(), this.getPreferredSize().width, 30);\r
639 }\r
640\r
641 /**\r
642 * This method initializes jScrollPane \r
643 * \r
644 * @return javax.swing.JScrollPane \r
645 */\r
646 private JScrollPane getJScrollPane() {\r
647 if (jScrollPane == null) {\r
648 jScrollPane = new JScrollPane();\r
649 jScrollPane.setBounds(new java.awt.Rectangle(5,301,1473,137));\r
650 jScrollPane.setViewportView(getJTable());\r
651 }\r
652 return jScrollPane;\r
653 }\r
654\r
655 /**\r
656 * This method initializes jTable \r
657 * \r
658 * @return javax.swing.JTable \r
659 */\r
660 private JTable getJTable() {\r
661 if (jTable == null) {\r
662 model = new CheckboxTableModel();\r
663 jTable = new JTable(model);\r
664 jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
665 jTable.setSize(new Dimension(1000, 300));\r
666 \r
667 model.addColumn("C_Name");\r
668 model.addColumn("Token");\r
669 model.addColumn("TokenSpace");\r
670 model.addColumn("DatumType");\r
671 model.addColumn("DefaultValue");\r
672 model.addColumn("HelpText");\r
673 \r
674 model.addColumn("FeatureFlag");\r
675 model.addColumn("FixedAtBuild");\r
676 model.addColumn("PatchableInModule");\r
677 model.addColumn("Dynamic");\r
678 model.addColumn("DynamicEx");\r
679 model.addColumn("SupportedArch");\r
680 model.addColumn("SupportedModule");\r
681 jTable.getColumnModel().getColumn(2).setCellEditor(new GuidEditor());\r
682 \r
683 //ToDo: add a valid usage editor\r
684 \r
685 JComboBox jComboBoxDataType = new JComboBox();\r
686 jComboBoxDataType.addItem("UINT8");\r
687 jComboBoxDataType.addItem("UINT16");\r
688 jComboBoxDataType.addItem("UINT32");\r
689 jComboBoxDataType.addItem("UINT64");\r
690 jComboBoxDataType.addItem("VOID*");\r
691 jComboBoxDataType.addItem("BOOLEAN");\r
692 TableColumn dataTypeColumn = jTable.getColumnModel().getColumn(3);\r
693 dataTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxDataType));\r
694\r
695 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
696 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
697 public void valueChanged(ListSelectionEvent e) {\r
698 if (e.getValueIsAdjusting()){\r
699 return;\r
700 }\r
701 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
702 if (lsm.isSelectionEmpty()) {\r
703 return;\r
704 }\r
705 else{\r
706 selectedRow = lsm.getMinSelectionIndex();\r
707 }\r
708 }\r
709 });\r
710 \r
711 jTable.getModel().addTableModelListener(this);\r
712 }\r
713 return jTable;\r
714 }\r
715 \r
716 public void tableChanged(TableModelEvent arg0) {\r
717 // TODO Auto-generated method stub\r
718 int row = arg0.getFirstRow();\r
719 TableModel m = (TableModel)arg0.getSource();\r
720 if (arg0.getType() == TableModelEvent.UPDATE){\r
721 \r
722 String cName = m.getValueAt(row, 0) + "";\r
723 String token = m.getValueAt(row, 1) + "";\r
724 String ts = m.getValueAt(row, 2) + "";\r
725 String dataType = m.getValueAt(row, 3) + "";\r
726 String defaultVal = m.getValueAt(row, 4) + "";\r
727 String help = m.getValueAt(row, 5) + "";\r
728 String usage = getValidUsage(new Boolean(m.getValueAt(row, 6)+""), new Boolean(m.getValueAt(row, 7)+""), new Boolean(m.getValueAt(row, 8)+""), new Boolean(m.getValueAt(row, 9)+""), new Boolean(m.getValueAt(row, 10)+""));\r
729 String archList = vectorToString(iCheckBoxList.getAllCheckedItemsString());\r
730 String modTypeList = vectorToString(iCheckBoxList1.getAllCheckedItemsString());\r
731 sfc.updateSpdPcdDefinition(row, cName, token, dataType, usage, ts, defaultVal, help, archList, modTypeList);\r
732 }\r
733 }\r
734\r
735 /**\r
736 * This method initializes jCheckBox \r
737 * \r
738 * @return javax.swing.JCheckBox \r
739 */\r
740 private JCheckBox getJCheckBox() {\r
741 if (jCheckBox == null) {\r
742 jCheckBox = new JCheckBox();\r
743 jCheckBox.setBounds(new java.awt.Rectangle(156,161,100,21));\r
744 jCheckBox.setText("Feature Flag");\r
745 jCheckBox.setPreferredSize(new java.awt.Dimension(21,20));\r
746 }\r
747 return jCheckBox;\r
748 }\r
749\r
750 /**\r
751 * This method initializes jCheckBox1 \r
752 * \r
753 * @return javax.swing.JCheckBox \r
754 */\r
755 private JCheckBox getJCheckBox1() {\r
756 if (jCheckBox1 == null) {\r
757 jCheckBox1 = new JCheckBox();\r
758 jCheckBox1.setBounds(new java.awt.Rectangle(302,133,108,20));\r
759 jCheckBox1.setText("Fixed at Build");\r
760 jCheckBox1.setPreferredSize(new java.awt.Dimension(21,20));\r
761 }\r
762 return jCheckBox1;\r
763 }\r
764\r
765 /**\r
766 * This method initializes jCheckBox2 \r
767 * \r
768 * @return javax.swing.JCheckBox \r
769 */\r
770 private JCheckBox getJCheckBox2() {\r
771 if (jCheckBox2 == null) {\r
772 jCheckBox2 = new JCheckBox();\r
773 jCheckBox2.setBounds(new java.awt.Rectangle(156,133,154,20));\r
774 jCheckBox2.setText("Patchable in Module");\r
775 jCheckBox2.setPreferredSize(new java.awt.Dimension(21,20));\r
776 }\r
777 return jCheckBox2;\r
778 }\r
779\r
780 /**\r
781 * This method initializes jCheckBox3 \r
782 * \r
783 * @return javax.swing.JCheckBox \r
784 */\r
785 private JCheckBox getJCheckBox3() {\r
786 if (jCheckBox3 == null) {\r
787 jCheckBox3 = new JCheckBox();\r
788 jCheckBox3.setBounds(new java.awt.Rectangle(278,161,80,20));\r
789 jCheckBox3.setText("Dynamic");\r
790 jCheckBox3.setPreferredSize(new java.awt.Dimension(21,20));\r
791 }\r
792 return jCheckBox3;\r
793 }\r
794\r
795 /**\r
796 * This method initializes jCheckBox4 \r
797 * \r
798 * @return javax.swing.JCheckBox \r
799 */\r
800 private JCheckBox getJCheckBox4() {\r
801 if (jCheckBox4 == null) {\r
802 jCheckBox4 = new JCheckBox();\r
803 jCheckBox4.setBounds(new java.awt.Rectangle(371,161,99,20));\r
804 jCheckBox4.setText("DynamicEx");\r
805 jCheckBox4.setPreferredSize(new java.awt.Dimension(21,20));\r
806 }\r
807 return jCheckBox4;\r
808 }\r
809 \r
810 private String getValidUsage(boolean ff, boolean fab, boolean pim, boolean d, boolean de) {\r
811 String usage = "";\r
812 if (ff){\r
813 usage += "FEATURE_FLAG ";\r
814 }\r
815 if (fab){\r
816 usage += "FIXED_AT_BUILD ";\r
817 }\r
818 if (pim){\r
819 usage += "PATCHABLE_IN_MODULE ";\r
820 }\r
821 if (d){\r
822 usage += "DYNAMIC ";\r
823 }\r
824 if (de){\r
825 usage += "DYNAMIC_EX ";\r
826 }\r
827 \r
828 return usage.trim();\r
829 }\r
830 \r
831 private boolean checkValid() {\r
832 if (!(jCheckBox.isSelected() || jCheckBox1.isSelected() || jCheckBox2.isSelected() || jCheckBox3.isSelected() || jCheckBox4.isSelected())){\r
833 JOptionPane.showMessageDialog(frame, "You must specify at least one usage.");\r
834 return false;\r
835 }\r
836 return true;\r
837 }\r
838\r
839 /**\r
840 * This method initializes jScrollPane1 \r
841 * \r
842 * @return javax.swing.JScrollPane \r
843 */\r
844 private JScrollPane getJScrollPane1() {\r
845 if (jScrollPane1 == null) {\r
846 jScrollPane1 = new JScrollPane();\r
847 jScrollPane1.setBounds(new java.awt.Rectangle(242,213,188,54));\r
848 jScrollPane1.setViewportView(getICheckBoxList());\r
849 jScrollPane1.setPreferredSize(new Dimension(188, 74));\r
850 }\r
851 return jScrollPane1;\r
852 }\r
853\r
854 /**\r
855 * This method initializes iCheckBoxList \r
856 * \r
857 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
858 */\r
859 private ICheckBoxList getICheckBoxList() {\r
860 if (iCheckBoxList == null) {\r
861 iCheckBoxList = new ICheckBoxList();\r
862 iCheckBoxList.setBounds(new Rectangle(197, 142, 188, 74));\r
863 Vector<String> v = new Vector<String>();\r
864 v.add("IA32");\r
865 v.add("X64");\r
866 v.add("IPF");\r
867 v.add("EBC");\r
868 iCheckBoxList.setAllItems(v);\r
869 }\r
870 return iCheckBoxList;\r
871 }\r
872\r
873 /**\r
874 * This method initializes jScrollPane2 \r
875 * \r
876 * @return javax.swing.JScrollPane \r
877 */\r
878 private JScrollPane getJScrollPane2() {\r
879 if (jScrollPane2 == null) {\r
880 jScrollPane2 = new JScrollPane();\r
881 jScrollPane2.setBounds(new java.awt.Rectangle(15,213,199,55));\r
882 jScrollPane2.setViewportView(getICheckBoxList1());\r
883 jScrollPane2.setPreferredSize(new Dimension(170, 74));\r
884 }\r
885 return jScrollPane2;\r
886 }\r
887\r
888 /**\r
889 * This method initializes iCheckBoxList1 \r
890 * \r
891 * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
892 */\r
893 private ICheckBoxList getICheckBoxList1() {\r
894 if (iCheckBoxList1 == null) {\r
895 iCheckBoxList1 = new ICheckBoxList();\r
896 iCheckBoxList1.setBounds(new Rectangle(14, 142, 170, 74));\r
897 Vector<String> v = new Vector<String>();\r
898 v.add("BASE");\r
899 v.add("SEC");\r
900 v.add("PEI_CORE");\r
901 v.add("PEIM");\r
902 v.add("DXE_CORE");\r
903 v.add("DXE_DRIVER");\r
904 v.add("DXE_RUNTIME_DRIVER");\r
905 v.add("DXE_SAL_DRIVER");\r
906 v.add("DXE_SMM_DRIVER");\r
907 v.add("UEFI_DRIVER");\r
908 v.add("UEFI_APPLICATION");\r
909 v.add("USER_DEFINED");\r
910 iCheckBoxList1.setAllItems(v);\r
911 }\r
912 return iCheckBoxList1;\r
913 }\r
914 \r
915 protected String vectorToString(Vector<String> v) {\r
916 if (v == null) {\r
917 return null;\r
918 }\r
919 String s = " ";\r
920 for (int i = 0; i < v.size(); ++i) {\r
921 s += v.get(i);\r
922 s += " ";\r
923 }\r
924 return s.trim();\r
925 }\r
926} // @jve:decl-index=0:visual-constraint="22,11"\r
927\r
928class CheckboxTableModel extends DefaultTableModel {\r
0b5e1cc3 929 /**\r
930 * \r
931 */\r
932 private static final long serialVersionUID = 1L;\r
933\r
934 public Class<?> getColumnClass (int c) {\r
a13899c5 935 if (getValueAt(0, c) != null){\r
936 return getValueAt(0, c).getClass();\r
937 }\r
938 return String.class;\r
939 }\r
940}\r