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