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