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