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