make sure all files under the PCD PEIM/Driver direcotry into the MSA file.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdLibClassDecls.java
CommitLineData
a13899c5 1/** @file\r
2 Java class SpdLibClassDecls is GUI for create library 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
a13899c5 15import java.awt.Dimension;\r
a13899c5 16import java.awt.event.ActionEvent;\r
a13899c5 17import java.awt.event.ComponentEvent;\r
a13899c5 18import java.io.File;\r
19import java.util.Vector;\r
20\r
21import javax.swing.AbstractAction;\r
a13899c5 22import javax.swing.JFileChooser;\r
23import javax.swing.JOptionPane;\r
24import javax.swing.JPanel;\r
25import javax.swing.JRadioButton;\r
26import javax.swing.JTable;\r
27import javax.swing.JTextField;\r
28import javax.swing.JComboBox;\r
29import javax.swing.JLabel;\r
a13899c5 30import javax.swing.JScrollPane;\r
31import javax.swing.JButton;\r
32import javax.swing.JFrame;\r
33import javax.swing.ListSelectionModel;\r
34import javax.swing.event.InternalFrameAdapter;\r
35import javax.swing.event.InternalFrameEvent;\r
36import javax.swing.event.ListSelectionEvent;\r
37import 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
42\r
43import org.tianocore.PackageSurfaceAreaDocument;\r
ce73a791 44import org.tianocore.frameworkwizard.common.DataValidation;\r
a13899c5 45import org.tianocore.frameworkwizard.common.Tools;\r
d6d24759 46import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
a13899c5 47import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
48import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
49import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
ce73a791 50import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
a13899c5 51\r
52import javax.swing.JCheckBox;\r
53\r
54/**\r
55 GUI for create library definition elements of spd file.\r
56 \r
57 @since PackageEditor 1.0\r
58**/\r
59public class SpdLibClassDecls extends IInternalFrame implements TableModelListener{\r
ce73a791 60 /**\r
61 * \r
62 */\r
63 private static final long serialVersionUID = 1L;\r
64\r
a13899c5 65 static JFrame frame;\r
66 \r
67 private JTable jTable = null;\r
68\r
69 private DefaultTableModel model = null;\r
70\r
71 private JPanel jContentPane = null;\r
72\r
73 private JRadioButton jRadioButtonAdd = null;\r
74\r
75 private JRadioButton jRadioButtonSelect = null;\r
76\r
77 private JTextField jTextFieldAdd = null;\r
78\r
79 private JComboBox jComboBoxSelect = null;\r
80\r
81 private JScrollPane jScrollPane = null;\r
82\r
83 private JButton jButtonAdd = null;\r
84\r
85 private JButton jButtonRemove = null;\r
86\r
87 private JButton jButtonClearAll = null;\r
88\r
a13899c5 89 private JLabel jLabel = null;\r
90\r
91 private JTextField jTextField = null;\r
92\r
93 private JButton jButtonBrowse = null;\r
94 \r
95 private StarLabel jStarLabel1 = null;\r
96 \r
97 private StarLabel jStarLabel2 = null;\r
98 \r
99 private SpdFileContents sfc = null;\r
d6d24759 100 \r
101 private OpeningPackageType docConsole = null;\r
a13899c5 102\r
103 private JLabel jLabel1 = null;\r
104 \r
105 private JScrollPane topScrollPane = null; // @jve:decl-index=0:visual-constraint="10,53"\r
106 \r
107 private int selectedRow = -1;\r
108\r
109 private StarLabel starLabel = null;\r
110\r
111 private JLabel jLabel2 = null;\r
112\r
113 private JTextField jTextFieldHelp = null;\r
114\r
115 private JLabel jLabel3 = null;\r
116\r
117 private JTextField jTextField1 = null;\r
118\r
119 private JLabel jLabel4 = null;\r
120\r
121 private JTextField jTextField2 = null;\r
122\r
123 private JLabel jLabel5 = null;\r
124\r
125 private JCheckBox jCheckBox = null;\r
126\r
127 private JCheckBox jCheckBox1 = null;\r
128\r
129 private JCheckBox jCheckBox2 = null;\r
130\r
131 private JCheckBox jCheckBox3 = null;\r
132\r
133 private JLabel jLabel6 = null;\r
134 \r
135 private JScrollPane jScrollPaneArch = null;\r
136 \r
137 private ICheckBoxList iCheckBoxListArch = null;\r
138\r
ce73a791 139 private JCheckBox jCheckBox4 = null;\r
140\r
141 private JCheckBox jCheckBox5 = null;\r
142\r
a13899c5 143 /**\r
144 This method initializes this\r
145 \r
146 **/\r
147 private void initialize() {\r
148 \r
149 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
150\r
151 }\r
152\r
153 /**\r
154 This method initializes jRadioButtonAdd \r
155 \r
156 @return javax.swing.JRadioButton \r
157 **/\r
158 private JRadioButton getJRadioButtonAdd() {\r
159 if (jRadioButtonAdd == null) {\r
160 jRadioButtonAdd = new JRadioButton();\r
161 jRadioButtonAdd.setBounds(new java.awt.Rectangle(9,63,197,20));\r
162 jRadioButtonAdd.setText("Library Class Name");\r
163 jRadioButtonAdd.addActionListener(this);\r
164 jRadioButtonAdd.setSelected(true);\r
165 jRadioButtonAdd.setVisible(false);\r
166 }\r
167 return jRadioButtonAdd;\r
168 }\r
169\r
170 /**\r
171 This method initializes jRadioButtonSelect \r
172 \r
173 @return javax.swing.JRadioButton \r
174 **/\r
175 private JRadioButton getJRadioButtonSelect() {\r
176 if (jRadioButtonSelect == null) {\r
177 jRadioButtonSelect = new JRadioButton();\r
178 jRadioButtonSelect.setBounds(new java.awt.Rectangle(9,10,198,20));\r
179 jRadioButtonSelect.setText("Select Existing Library Class");\r
180 jRadioButtonSelect.addActionListener(this);\r
181 jRadioButtonSelect.setSelected(true);\r
182 jRadioButtonSelect.setVisible(false);\r
183 }\r
184 return jRadioButtonSelect;\r
185 }\r
186\r
187 /**\r
188 This method initializes jTextFieldAdd \r
189 \r
190 @return javax.swing.JTextField \r
191 **/\r
192 private JTextField getJTextFieldAdd() {\r
193 if (jTextFieldAdd == null) {\r
194 jTextFieldAdd = new JTextField();\r
ce73a791 195 jTextFieldAdd.setBounds(new java.awt.Rectangle(122,6,390,20));\r
a13899c5 196 jTextFieldAdd.setPreferredSize(new java.awt.Dimension(260,20));\r
197 jTextFieldAdd.setEnabled(true);\r
198 }\r
199 return jTextFieldAdd;\r
200 }\r
201\r
202 /**\r
203 This method initializes jComboBoxSelect \r
204 \r
205 @return javax.swing.JComboBox \r
206 **/\r
207 private JComboBox getJComboBoxSelect() {\r
208 if (jComboBoxSelect == null) {\r
209 jComboBoxSelect = new JComboBox();\r
210 jComboBoxSelect.setBounds(new java.awt.Rectangle(220, 10, 260, 20));\r
211 jComboBoxSelect.setPreferredSize(new java.awt.Dimension(260,22));\r
212 jComboBoxSelect.setEnabled(true);\r
213 jComboBoxSelect.setVisible(false);\r
214 }\r
215 return jComboBoxSelect;\r
216 }\r
217\r
218 /**\r
219 This method initializes jScrollPane \r
220 \r
221 @return javax.swing.JScrollPane \r
222 **/\r
223 private JScrollPane getJScrollPane() {\r
224 if (jScrollPane == null) {\r
225 jScrollPane = new JScrollPane();\r
ce73a791 226 jScrollPane.setBounds(new java.awt.Rectangle(12,351,608,139));\r
a13899c5 227 jScrollPane.setPreferredSize(new java.awt.Dimension(330,150));\r
228 jScrollPane.setViewportView(getJTable());\r
229 }\r
230 return jScrollPane;\r
231 }\r
232\r
233 /**\r
234 This method initializes jTable \r
235 \r
236 @return javax.swing.JTable \r
237 **/\r
238 private JTable getJTable() {\r
239 if (jTable == null) {\r
240 model = new DefaultTableModel();\r
241 jTable = new JTable(model);\r
242 jTable.setRowHeight(20);\r
243 jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
244 model.addColumn("LibraryClass");\r
245 model.addColumn("IncludeHeader");\r
246 model.addColumn("HelpText");\r
247 model.addColumn("RecommendedInstance");\r
248 model.addColumn("InstanceVersion");\r
249 model.addColumn("SupportedArch");\r
250 model.addColumn("SupportedModule");\r
ce73a791 251 \r
252 Vector<String> vArch = new Vector<String>();\r
253 vArch.add("IA32");\r
254 vArch.add("X64");\r
255 vArch.add("IPF");\r
256 vArch.add("EBC");\r
257 vArch.add("ARM");\r
258 vArch.add("PPC");\r
259 jTable.getColumnModel().getColumn(5).setCellEditor(new ListEditor(vArch));\r
260 \r
261 Vector<String> vModule = new Vector<String>();\r
262 vModule.add("BASE");\r
263 vModule.add("SEC");\r
264 vModule.add("PEI_CORE");\r
265 vModule.add("PEIM");\r
266 vModule.add("DXE_CORE");\r
267 vModule.add("DXE_DRIVER");\r
268 vModule.add("DXE_RUNTIME_DRIVER");\r
269 vModule.add("DXE_SAL_DRIVER");\r
270 vModule.add("DXE_SMM_DRIVER");\r
271 vModule.add("UEFI_DRIVER");\r
272 vModule.add("UEFI_APPLICATION");\r
273 vModule.add("USER_DEFINED");\r
274 jTable.getColumnModel().getColumn(6).setCellEditor(new ListEditor(vModule));\r
a13899c5 275 \r
276 jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
277 jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
278 public void valueChanged(ListSelectionEvent e) {\r
279 if (e.getValueIsAdjusting()){\r
280 return;\r
281 }\r
282 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
283 if (lsm.isSelectionEmpty()) {\r
284 return;\r
285 }\r
286 else{\r
287 selectedRow = lsm.getMinSelectionIndex();\r
288 }\r
289 }\r
290 });\r
291 \r
292 jTable.getModel().addTableModelListener(this);\r
293\r
294 }\r
295 return jTable;\r
296 }\r
297 \r
298 \r
299 public void tableChanged(TableModelEvent arg0) {\r
300 // TODO Auto-generated method stub\r
301 int row = arg0.getFirstRow();\r
302 TableModel m = (TableModel)arg0.getSource();\r
303 if (arg0.getType() == TableModelEvent.UPDATE){\r
304 String lib = m.getValueAt(row, 0) + "";\r
305 String hdr = m.getValueAt(row, 1) + "";\r
306 String hlp = m.getValueAt(row, 2) + "";\r
307 String guid = m.getValueAt(row, 3) + "";\r
308 String ver = m.getValueAt(row, 4) + "";\r
309 String arch = null;\r
310 if (m.getValueAt(row, 5) != null) {\r
311 arch = m.getValueAt(row, 5).toString();\r
312 }\r
313 String module = null;\r
314 if (m.getValueAt(row, 6) != null) {\r
315 module = m.getValueAt(row, 6).toString();\r
316 }\r
ce73a791 317 String[] rowData = {lib, hdr, hlp};\r
318 if (!dataValidation(rowData)) {\r
319 return;\r
320 }\r
d6d24759 321 docConsole.setSaved(false);\r
a13899c5 322 sfc.updateSpdLibClass(row, lib, hdr, hlp, guid, ver, arch, module);\r
323 }\r
324 }\r
325\r
326 /**\r
327 This method initializes jButtonAdd \r
328 \r
329 @return javax.swing.JButton \r
330 **/\r
331 private JButton getJButtonAdd() {\r
332 if (jButtonAdd == null) {\r
333 jButtonAdd = new JButton();\r
a13899c5 334 jButtonAdd.setText("Add");\r
ce73a791 335 jButtonAdd.setSize(new java.awt.Dimension(80,20));\r
336 jButtonAdd.setLocation(new java.awt.Point(365,315));\r
a13899c5 337 jButtonAdd.addActionListener(this);\r
338 }\r
339 return jButtonAdd;\r
340 }\r
341\r
342 /**\r
343 This method initializes jButtonRemove \r
344 \r
345 @return javax.swing.JButton \r
346 **/\r
347 private JButton getJButtonRemove() {\r
348 if (jButtonRemove == null) {\r
349 jButtonRemove = new JButton();\r
a13899c5 350 jButtonRemove.setText("Remove");\r
ce73a791 351 jButtonRemove.setSize(new java.awt.Dimension(80,20));\r
352 jButtonRemove.setLocation(new java.awt.Point(449,315));\r
a13899c5 353 jButtonRemove.addActionListener(this);\r
354 }\r
355 return jButtonRemove;\r
356 }\r
357\r
358 /**\r
359 This method initializes jButtonRemoveAll \r
360 \r
361 @return javax.swing.JButton \r
362 **/\r
363 private JButton getJButtonClearAll() {\r
364 if (jButtonClearAll == null) {\r
365 jButtonClearAll = new JButton();\r
a13899c5 366 jButtonClearAll.setText("Clear All");\r
ce73a791 367 jButtonClearAll.setSize(new java.awt.Dimension(86,20));\r
368 jButtonClearAll.setLocation(new java.awt.Point(536,315));\r
a13899c5 369 jButtonClearAll.addActionListener(this);\r
370 }\r
371 return jButtonClearAll;\r
372 }\r
373\r
a13899c5 374 /**\r
375 This is the default constructor\r
376 **/\r
377 public SpdLibClassDecls() {\r
378 super();\r
379 initialize();\r
380 init();\r
381 \r
382 }\r
383\r
384 public SpdLibClassDecls(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa){\r
385 this();\r
386 sfc = new SpdFileContents(inPsa);\r
387 init(sfc);\r
388 }\r
d6d24759 389 \r
390 public SpdLibClassDecls(OpeningPackageType opt) {\r
391 this(opt.getXmlSpd());\r
392 docConsole = opt;\r
393 }\r
a13899c5 394 /**\r
395 This method initializes this\r
396 \r
397 @return void\r
398 **/\r
399 private void init() {\r
400 \r
401 this.setContentPane(getJContentPane());\r
402 this.setTitle("Library Class Declarations");\r
403 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
404 this.setVisible(true);\r
405 this.addInternalFrameListener(new InternalFrameAdapter(){\r
406 public void internalFrameDeactivated(InternalFrameEvent e){\r
407 if (jTable.isEditing()) {\r
408 jTable.getCellEditor().stopCellEditing();\r
409 }\r
410 }\r
411 });\r
412 initFrame();\r
413 }\r
414\r
415 private void init(SpdFileContents sfc) {\r
416 if (sfc.getSpdLibClassDeclarationCount() == 0) {\r
417 return ;\r
418 }\r
419 //\r
420 // initialize table using SpdFileContents object\r
421 //\r
422 String[][] saa = new String[sfc.getSpdLibClassDeclarationCount()][7];\r
423 sfc.getSpdLibClassDeclarations(saa);\r
424 int i = 0;\r
425 while (i < saa.length) {\r
426 model.addRow(saa[i]);\r
427 i++;\r
428 }\r
429 }\r
430 private JScrollPane getJContentPane(){\r
431 if (topScrollPane == null){\r
432 topScrollPane = new JScrollPane();\r
ce73a791 433 topScrollPane.setSize(new java.awt.Dimension(634,500));\r
a13899c5 434 topScrollPane.setViewportView(getJContentPane1());\r
435 }\r
436 return topScrollPane;\r
437 }\r
438 /**\r
439 This method initializes jContentPane\r
440 \r
441 @return javax.swing.JPanel\r
442 **/\r
443 private JPanel getJContentPane1() {\r
444 if (jContentPane == null) {\r
445 jLabel6 = new JLabel();\r
446 jLabel6.setBounds(new java.awt.Rectangle(16,252,108,16));\r
447 jLabel6.setText("Supported Module");\r
448 jLabel6.setEnabled(true);\r
449 jLabel5 = new JLabel();\r
450 jLabel5.setBounds(new java.awt.Rectangle(16,215,93,16));\r
451 jLabel5.setText("Supported Arch");\r
452 jLabel5.setEnabled(true);\r
453 jLabel4 = new JLabel();\r
ce73a791 454 jLabel4.setBounds(new java.awt.Rectangle(16,138,196,16));\r
a13899c5 455 jLabel4.setEnabled(true);\r
456 jLabel4.setText("Recommended Instance Version");\r
457 jLabel3 = new JLabel();\r
ce73a791 458 jLabel3.setBounds(new java.awt.Rectangle(17,112,195,16));\r
a13899c5 459 jLabel3.setEnabled(true);\r
460 jLabel3.setText("Recommended Instance GUID");\r
461 jLabel2 = new JLabel();\r
462 jLabel2.setBounds(new java.awt.Rectangle(16,33,82,20));\r
463 jLabel2.setText("Help Text");\r
464 starLabel = new StarLabel();\r
465 starLabel.setBounds(new java.awt.Rectangle(1,33,10,20));\r
466 jLabel1 = new JLabel();\r
467 jLabel1.setBounds(new java.awt.Rectangle(16,6,82,20));\r
468 jLabel1.setText("Library Class");\r
469 jStarLabel1 = new StarLabel();\r
470 jStarLabel1.setLocation(new java.awt.Point(1,7));\r
471 jStarLabel2 = new StarLabel();\r
ce73a791 472 jStarLabel2.setLocation(new java.awt.Point(-1,74));\r
a13899c5 473 jLabel = new JLabel();\r
ce73a791 474 jLabel.setBounds(new java.awt.Rectangle(14,74,199,22));\r
a13899c5 475 jLabel.setText("Include Header for Specified Class");\r
476 \r
477 jContentPane = new JPanel();\r
478 jContentPane.setPreferredSize(new Dimension(480, 400));\r
479 jContentPane.setLayout(null);\r
480 jContentPane.add(jLabel, null);\r
481 jContentPane.add(jStarLabel1, null);\r
482 jContentPane.add(jStarLabel2, null);\r
483 jContentPane.add(getJRadioButtonAdd(), null);\r
484 jContentPane.add(getJRadioButtonSelect(), null);\r
485 jContentPane.add(getJTextFieldAdd(), null);\r
486 jContentPane.add(getJComboBoxSelect(), null);\r
487 jContentPane.add(getJScrollPane(), null);\r
488 jContentPane.add(getJButtonAdd(), null);\r
489 jContentPane.add(getJButtonRemove(), null);\r
490 jContentPane.add(getJButtonClearAll(), null);\r
a13899c5 491 \r
492 jContentPane.add(getJTextField(), null);\r
493 jContentPane.add(getJButtonBrowse(), null);\r
494 jContentPane.add(jLabel1, null);\r
495 jContentPane.add(starLabel, null);\r
496 jContentPane.add(jLabel2, null);\r
497 jContentPane.add(getJTextFieldHelp(), null);\r
498 jContentPane.add(jLabel3, null);\r
499 jContentPane.add(getJTextField1(), null);\r
500 jContentPane.add(jLabel4, null);\r
501 jContentPane.add(getJTextField2(), null);\r
502 jContentPane.add(jLabel5, null);\r
503 jContentPane.add(getJCheckBox(), null);\r
504 jContentPane.add(getJCheckBox1(), null);\r
505 jContentPane.add(getJCheckBox2(), null);\r
506 jContentPane.add(getJCheckBox3(), null);\r
507 jContentPane.add(jLabel6, null);\r
508 \r
509 jContentPane.add(getJScrollPaneArch(), null);\r
ce73a791 510 jContentPane.add(getJCheckBox4(), null);\r
511 jContentPane.add(getJCheckBox5(), null);\r
a13899c5 512 }\r
513 \r
514 return jContentPane;\r
515 }\r
516\r
517 /**\r
518 fill ComboBoxes with pre-defined contents\r
519 **/\r
520 private void initFrame() {\r
521 jComboBoxSelect.addItem("BaseCpuICacheFlush");\r
522 jComboBoxSelect.addItem("BaseDebugLibNull");\r
523 jComboBoxSelect.addItem("BaseDebugLibReportStatusCode");\r
524 jComboBoxSelect.addItem("BaseIoLibIntrinsic");\r
525 jComboBoxSelect.addItem("BaseLib");\r
526 jComboBoxSelect.addItem("BaseMemoryLib");\r
527 jComboBoxSelect.addItem("BaseMemoryLibMmx");\r
528 jComboBoxSelect.addItem("BaseMemoryLibSse2");\r
529 jComboBoxSelect.addItem("BasePeCoffGetEntryPointLib");\r
530 jComboBoxSelect.addItem("BasePeCoffLib");\r
531 jComboBoxSelect.addItem("BasePrintLib");\r
532 jComboBoxSelect.addItem("BaseReportStatusCodeLibNull");\r
533 jComboBoxSelect.addItem("CommonPciCf8Lib");\r
534 jComboBoxSelect.addItem("CommonPciExpressLib");\r
535 jComboBoxSelect.addItem("CommonPciLibCf8");\r
536 jComboBoxSelect.addItem("CommonPciLibPciExpress");\r
537 jComboBoxSelect.addItem("DxeCoreEntryPoint");\r
538 jComboBoxSelect.addItem("DxeHobLib");\r
539 jComboBoxSelect.addItem("DxeIoLibCpuIo");\r
540 jComboBoxSelect.addItem("DxeLib");\r
541 jComboBoxSelect.addItem("DxePcdLib");\r
542 jComboBoxSelect.addItem("DxeReportStatusCodeLib");\r
543 jComboBoxSelect.addItem("DxeServicesTableLib");\r
544 jComboBoxSelect.addItem("PeiCoreEntryPoint");\r
545 jComboBoxSelect.addItem("PeiMemoryLib");\r
546 jComboBoxSelect.addItem("PeimEntryPoint");\r
547 jComboBoxSelect.addItem("PeiReportStatusCodeLib");\r
548 jComboBoxSelect.addItem("PeiServicesTablePointerLib");\r
549 jComboBoxSelect.addItem("PeiServicesTablePointerLibMm7");\r
550 jComboBoxSelect.addItem("UefiDebugLibConOut");\r
551 jComboBoxSelect.addItem("UefiDebugLibStdErr");\r
552 jComboBoxSelect.addItem("UefiDriverEntryPointMultiple");\r
553 jComboBoxSelect.addItem("UefiDriverEntryPointSingle");\r
554 jComboBoxSelect.addItem("UefiDriverEntryPointSingleUnload");\r
555 jComboBoxSelect.addItem("UefiDriverModelLib");\r
556 jComboBoxSelect.addItem("UefiDriverModelLibNoConfigNoDiag");\r
557 jComboBoxSelect.addItem("UefiLib");\r
558 jComboBoxSelect.addItem("UefiMemoryLib");\r
559\r
560 }\r
561\r
562 /* (non-Javadoc)\r
563 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
564 */\r
565 public void actionPerformed(ActionEvent arg0) {\r
d6d24759 566 \r
a13899c5 567 if (arg0.getSource() == jButtonAdd) {\r
568 \r
569 //ToDo: check before add\r
570 String[] row = {null, null, null, jTextField1.getText(), jTextField2.getText(), null, null};\r
571 row[0] = jTextFieldAdd.getText();\r
572 row[1] = jTextField.getText().replace('\\', '/');\r
573 row[2] = jTextFieldHelp.getText();\r
ce73a791 574 row[5] = booleanToString(jCheckBox.isSelected(), jCheckBox1.isSelected(), jCheckBox2.isSelected(), jCheckBox3.isSelected(), jCheckBox4.isSelected(), jCheckBox5.isSelected());\r
a13899c5 575 if (row[5].length() == 0){\r
576 row[5] = null;\r
577 }\r
578 row[6] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
579 if (row[6].length() == 0){\r
580 row[6] = null;\r
581 }\r
ce73a791 582 if (!dataValidation(row)) {\r
583 return;\r
584 }\r
a13899c5 585 model.addRow(row);\r
908b1c05 586 docConsole.setSaved(false);\r
a13899c5 587 sfc.genSpdLibClassDeclarations(row[0], row[3], row[1], row[2], row[5], null, null, row[4], null, row[6]);\r
588 \r
589 }\r
590 //\r
591 // remove selected line\r
592 //\r
593 if (arg0.getSource() == jButtonRemove) {\r
594 if (jTable.isEditing()){\r
595 jTable.getCellEditor().stopCellEditing();\r
596 }\r
597 int rowSelected = selectedRow;\r
598 if (rowSelected >= 0) {\r
599 model.removeRow(rowSelected);\r
600 sfc.removeSpdLibClass(rowSelected);\r
601 }\r
602 }\r
603\r
604 if (arg0.getSource() == jButtonClearAll) {\r
605 if (model.getRowCount() == 0) {\r
606 return;\r
607 }\r
608 \r
609 model.setRowCount(0);\r
610 sfc.removeSpdLibClass();\r
611 }\r
612\r
613 if (arg0.getSource() == jRadioButtonAdd) {\r
614 if (jRadioButtonAdd.isSelected()) {\r
615 jRadioButtonSelect.setSelected(false);\r
616 jTextFieldAdd.setEnabled(true);\r
617 jComboBoxSelect.setEnabled(false);\r
618 }\r
619 if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) {\r
620 jRadioButtonAdd.setSelected(true);\r
621 jTextFieldAdd.setEnabled(true);\r
622 jComboBoxSelect.setEnabled(false);\r
623 }\r
624 }\r
625\r
626 if (arg0.getSource() == jRadioButtonSelect) {\r
627 if (jRadioButtonSelect.isSelected()) {\r
628 jRadioButtonAdd.setSelected(false);\r
629 jTextFieldAdd.setEnabled(false);\r
630 jComboBoxSelect.setEnabled(true);\r
631 }\r
632 if (!jRadioButtonSelect.isSelected() && !jRadioButtonAdd.isSelected()) {\r
633 jRadioButtonSelect.setSelected(true);\r
634 jTextFieldAdd.setEnabled(false);\r
635 jComboBoxSelect.setEnabled(true);\r
636 }\r
637 }\r
638 }\r
639\r
ce73a791 640 private boolean dataValidation(String[] row) {\r
641 if (!DataValidation.isKeywordType(row[0])) {\r
642 JOptionPane.showMessageDialog(frame, "Library Class is NOT KeyWord Type.");\r
643 return false;\r
644 }\r
645 if (!DataValidation.isPathAndFilename(row[1])) {\r
646 JOptionPane.showMessageDialog(frame, "Include Header is NOT PathAndFilename Type.");\r
647 }\r
648 if (row[2].length() == 0) {\r
649 JOptionPane.showMessageDialog(frame, "HelpText could NOT be empty.");\r
650 }\r
651 return true;\r
652 }\r
a13899c5 653 /**\r
654 Add contents in list to sfc\r
655 **/\r
656 protected void save() {\r
657 \r
658 }\r
659\r
660 /**\r
661 This method initializes jTextField \r
662 \r
663 @return javax.swing.JTextField \r
664 **/\r
665 private JTextField getJTextField() {\r
666 if (jTextField == null) {\r
667 jTextField = new JTextField();\r
ce73a791 668 jTextField.setBounds(new java.awt.Rectangle(221,75,290,21));\r
a13899c5 669 jTextField.setPreferredSize(new java.awt.Dimension(260,20));\r
670 }\r
671 return jTextField;\r
672 }\r
673\r
674 /**\r
675 This method initializes jButtonBrowse \r
676 \r
677 @return javax.swing.JButton \r
678 **/\r
679 private JButton getJButtonBrowse() {\r
680 if (jButtonBrowse == null) {\r
681 jButtonBrowse = new JButton();\r
ce73a791 682 jButtonBrowse.setBounds(new java.awt.Rectangle(528,75,90,20));\r
a13899c5 683 jButtonBrowse.setText("Browse");\r
684 jButtonBrowse.setPreferredSize(new java.awt.Dimension(80,20));\r
685 jButtonBrowse.addActionListener(new AbstractAction() {\r
686 \r
ce73a791 687 /**\r
688 * \r
689 */\r
690 private static final long serialVersionUID = 1L;\r
691\r
a13899c5 692 public void actionPerformed(ActionEvent arg0) {\r
693 //\r
694 // Select files from current pkg\r
695 //\r
696 String dirPrefix = Tools.dirForNewSpd.substring(0, Tools.dirForNewSpd.lastIndexOf(File.separator));\r
697 JFileChooser chooser = new JFileChooser(dirPrefix);\r
698 File theFile = null;\r
699 String headerDest = null;\r
700 \r
701 chooser.setMultiSelectionEnabled(false);\r
702 chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r
703 int retval = chooser.showOpenDialog(frame);\r
704 if (retval == JFileChooser.APPROVE_OPTION) {\r
705\r
706 theFile = chooser.getSelectedFile();\r
707 String file = theFile.getPath();\r
708 if (!file.startsWith(dirPrefix)) {\r
709 JOptionPane.showMessageDialog(frame, "You can only select files in current package!");\r
710 return;\r
711 }\r
712 \r
713 \r
714 }\r
715 else {\r
716 return;\r
717 }\r
718 \r
719 headerDest = theFile.getPath();\r
720 int fileIndex = headerDest.indexOf(System.getProperty("file.separator"), dirPrefix.length());\r
a13899c5 721 jTextField.setText(headerDest.substring(fileIndex + 1).replace('\\', '/'));\r
722 \r
723 }\r
724\r
725 });\r
726 }\r
727 return jButtonBrowse;\r
728 }\r
729 \r
730 public void componentResized(ComponentEvent arg0) {\r
731 int intPreferredWidth = 500;\r
732 \r
733 resizeComponentWidth(this.jTextFieldAdd, this.getWidth(), intPreferredWidth);\r
734 resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
735 resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
a13899c5 736 \r
737 }\r
738 /**\r
739 * This method initializes jTextFieldHelp \r
740 * \r
741 * @return javax.swing.JTextField \r
742 */\r
743 private JTextField getJTextFieldHelp() {\r
744 if (jTextFieldHelp == null) {\r
745 jTextFieldHelp = new JTextField();\r
ce73a791 746 jTextFieldHelp.setBounds(new java.awt.Rectangle(122,33,390,20));\r
a13899c5 747 jTextFieldHelp.setPreferredSize(new java.awt.Dimension(260,20));\r
748 }\r
749 return jTextFieldHelp;\r
750 }\r
751\r
752 /**\r
753 * This method initializes jTextField1 \r
754 * \r
755 * @return javax.swing.JTextField \r
756 */\r
757 private JTextField getJTextField1() {\r
758 if (jTextField1 == null) {\r
759 jTextField1 = new JTextField();\r
ce73a791 760 jTextField1.setBounds(new java.awt.Rectangle(220,110,291,20));\r
a13899c5 761 jTextField1.setEnabled(true);\r
762 }\r
763 return jTextField1;\r
764 }\r
765\r
766 /**\r
767 * This method initializes jTextField2 \r
768 * \r
769 * @return javax.swing.JTextField \r
770 */\r
771 private JTextField getJTextField2() {\r
772 if (jTextField2 == null) {\r
773 jTextField2 = new JTextField();\r
ce73a791 774 jTextField2.setBounds(new java.awt.Rectangle(218,135,292,20));\r
a13899c5 775 jTextField2.setEnabled(true);\r
776 }\r
777 return jTextField2;\r
778 }\r
779\r
780 /**\r
781 * This method initializes jCheckBox \r
782 * \r
783 * @return javax.swing.JCheckBox \r
784 */\r
785 private JCheckBox getJCheckBox() {\r
786 if (jCheckBox == null) {\r
787 jCheckBox = new JCheckBox();\r
788 jCheckBox.setBounds(new java.awt.Rectangle(123,213,57,21));\r
789 jCheckBox.setText("IA32");\r
790 jCheckBox.setPreferredSize(new java.awt.Dimension(21,20));\r
791 }\r
792 return jCheckBox;\r
793 }\r
794\r
795 /**\r
796 * This method initializes jCheckBox1 \r
797 * \r
798 * @return javax.swing.JCheckBox \r
799 */\r
800 private JCheckBox getJCheckBox1() {\r
801 if (jCheckBox1 == null) {\r
802 jCheckBox1 = new JCheckBox();\r
ce73a791 803 jCheckBox1.setBounds(new java.awt.Rectangle(182,213,49,20));\r
a13899c5 804 jCheckBox1.setText("X64");\r
805 jCheckBox1.setPreferredSize(new java.awt.Dimension(21,20));\r
806 }\r
807 return jCheckBox1;\r
808 }\r
809\r
810 /**\r
811 * This method initializes jCheckBox2 \r
812 * \r
813 * @return javax.swing.JCheckBox \r
814 */\r
815 private JCheckBox getJCheckBox2() {\r
816 if (jCheckBox2 == null) {\r
817 jCheckBox2 = new JCheckBox();\r
818 jCheckBox2.setText("IPF");\r
819 jCheckBox2.setSize(new java.awt.Dimension(50,20));\r
ce73a791 820 jCheckBox2.setLocation(new java.awt.Point(237,213));\r
a13899c5 821 jCheckBox2.setPreferredSize(new java.awt.Dimension(21,20));\r
822 }\r
823 return jCheckBox2;\r
824 }\r
825\r
826 /**\r
827 * This method initializes jCheckBox3 \r
828 * \r
829 * @return javax.swing.JCheckBox \r
830 */\r
831 private JCheckBox getJCheckBox3() {\r
832 if (jCheckBox3 == null) {\r
833 jCheckBox3 = new JCheckBox();\r
ce73a791 834 jCheckBox3.setBounds(new java.awt.Rectangle(286,213,50,20));\r
a13899c5 835 jCheckBox3.setText("EBC");\r
836 jCheckBox3.setPreferredSize(new java.awt.Dimension(21,20));\r
837 }\r
838 return jCheckBox3;\r
839 }\r
840\r
841 private JScrollPane getJScrollPaneArch() {\r
842 if (jScrollPaneArch == null) {\r
843 jScrollPaneArch = new JScrollPane();\r
ce73a791 844 jScrollPaneArch.setBounds(new java.awt.Rectangle(130,252,230,88));\r
a13899c5 845 jScrollPaneArch.setPreferredSize(new java.awt.Dimension(320, 80));\r
846 jScrollPaneArch.setViewportView(getICheckBoxListSupportedArchitectures());\r
847 }\r
848 return jScrollPaneArch;\r
849 }\r
850 \r
851 private ICheckBoxList getICheckBoxListSupportedArchitectures() {\r
852 if (iCheckBoxListArch == null) {\r
853 iCheckBoxListArch = new ICheckBoxList();\r
854 Vector<String> v = new Vector<String>();\r
855 v.add("BASE");\r
856 v.add("SEC");\r
857 v.add("PEI_CORE");\r
858 v.add("PEIM");\r
859 v.add("DXE_CORE");\r
860 v.add("DXE_DRIVER");\r
861 v.add("DXE_RUNTIME_DRIVER");\r
862 v.add("DXE_SAL_DRIVER");\r
863 v.add("DXE_SMM_DRIVER");\r
864 v.add("UEFI_DRIVER");\r
865 v.add("UEFI_APPLICATION");\r
866 v.add("USER_DEFINED");\r
867 iCheckBoxListArch.setAllItems(v);\r
868 }\r
869 return iCheckBoxListArch;\r
870 }\r
871 \r
ce73a791 872 private String booleanToString(boolean b1, boolean b2, boolean b3, boolean b4, boolean b5, boolean b6){\r
a13899c5 873 String s = " ";\r
874 if (b1){\r
875 s += "IA32 ";\r
876 }\r
877 if (b2){\r
878 s += "X64 ";\r
879 }\r
880 if (b3){\r
881 s += "IPF ";\r
882 }\r
883 if (b4){\r
884 s += "EBC ";\r
885 }\r
ce73a791 886 if (b5){\r
887 s += "ARM ";\r
888 }\r
889 if (b6){\r
890 s += "PPC ";\r
891 }\r
a13899c5 892 return s.trim();\r
893 }\r
894 \r
895 private String vectorToString(Vector<String> v) {\r
896 String s = " ";\r
897 for (int i = 0; i < v.size(); ++i) {\r
898 s += v.get(i);\r
899 s += " ";\r
900 }\r
901 return s.trim();\r
902 }\r
ce73a791 903 /**\r
904 * This method initializes jCheckBox4 \r
905 * \r
906 * @return javax.swing.JCheckBox \r
907 */\r
908 private JCheckBox getJCheckBox4() {\r
909 if (jCheckBox4 == null) {\r
910 jCheckBox4 = new JCheckBox();\r
911 jCheckBox4.setBounds(new java.awt.Rectangle(343,213,60,20));\r
912 jCheckBox4.setText("ARM");\r
913 jCheckBox4.setPreferredSize(new Dimension(60, 20));\r
914 }\r
915 return jCheckBox4;\r
916 }\r
917\r
918 /**\r
919 * This method initializes jCheckBox5 \r
920 * \r
921 * @return javax.swing.JCheckBox \r
922 */\r
923 private JCheckBox getJCheckBox5() {\r
924 if (jCheckBox5 == null) {\r
925 jCheckBox5 = new JCheckBox();\r
926 jCheckBox5.setBounds(new java.awt.Rectangle(400,213,60,20));\r
927 jCheckBox5.setText("PPC");\r
928 jCheckBox5.setPreferredSize(new Dimension(60, 20));\r
929 }\r
930 return jCheckBox5;\r
931 }\r
932\r
a13899c5 933 public static void main(String[] args){\r
934 new SpdLibClassDecls().setVisible(true);\r
935 }\r
936}\r
937\r
938\r