120c52845b7a677a615ca9a000671a8422204ff7
[people/mcb30/edk2.git] / edk2 / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / packaging / ui / SpdGuidDecls.java
1 /** @file\r
2   Java class SpdGuidDecls is GUI for create library definition elements of spd file.\r
3  \r
4 Copyright (c) 2006, Intel Corporation\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution.  The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9 \r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12 **/\r
13 package org.tianocore.frameworkwizard.packaging.ui;\r
14 \r
15 import java.awt.Dimension;\r
16 import java.awt.event.ActionEvent;\r
17 import java.awt.event.ComponentEvent;\r
18 import java.util.Vector;\r
19 \r
20 import javax.swing.JOptionPane;\r
21 import javax.swing.JPanel;\r
22 import javax.swing.JTable;\r
23 import javax.swing.JTextField;\r
24 import javax.swing.JLabel;\r
25 import javax.swing.JScrollPane;\r
26 import javax.swing.JButton;\r
27 import javax.swing.JFrame;\r
28 import javax.swing.ListSelectionModel;\r
29 import javax.swing.event.InternalFrameAdapter;\r
30 import javax.swing.event.InternalFrameEvent;\r
31 import javax.swing.event.ListSelectionEvent;\r
32 import javax.swing.event.ListSelectionListener;\r
33 import javax.swing.event.TableModelEvent;\r
34 import javax.swing.event.TableModelListener;\r
35 import javax.swing.table.DefaultTableModel;\r
36 import javax.swing.table.TableModel;\r
37 \r
38 import org.tianocore.PackageSurfaceAreaDocument;\r
39 import org.tianocore.frameworkwizard.common.DataValidation;\r
40 import org.tianocore.frameworkwizard.common.Tools;\r
41 import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
42 import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
43 import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
44 import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
45 import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
46 \r
47 /**\r
48  GUI for create library definition elements of spd file.\r
49   \r
50  @since PackageEditor 1.0\r
51 **/\r
52 public class SpdGuidDecls extends IInternalFrame implements TableModelListener{\r
53     /**\r
54      * \r
55      */\r
56     private static final long serialVersionUID = 1L;\r
57 \r
58     static JFrame frame;\r
59     \r
60     private SpdFileContents sfc = null;\r
61     \r
62     private OpeningPackageType docConsole = null;\r
63 \r
64     private JTable jTable = null;\r
65 \r
66     private DefaultTableModel model = null;\r
67 \r
68     private JPanel jContentPane = null;\r
69 \r
70     private JTextField jTextFieldAdd = null;\r
71 \r
72     private JScrollPane jScrollPane = null;\r
73 \r
74     private JButton jButtonAdd = null;\r
75 \r
76     private JButton jButtonRemove = null;\r
77 \r
78     private JButton jButtonClearAll = null;\r
79 \r
80     private JButton jButtonCancel = null;\r
81 \r
82     private JButton jButtonOk = null;\r
83 \r
84     private JButton jButtonGen = null;\r
85     \r
86     private StarLabel jStarLabel1 = null;\r
87     \r
88     private StarLabel jStarLabel2 = null;\r
89     \r
90     private StarLabel jStarLabel3 = null;\r
91     \r
92     private StarLabel jStarLabel4 = null;\r
93 \r
94     protected int selectedRow = -1;\r
95 \r
96     private JLabel jLabelName = null;\r
97 \r
98     private JScrollPane jScrollPaneModule = null;\r
99 \r
100     private JTextField jTextFieldName = null;\r
101 \r
102     private JScrollPane jScrollPaneArch = null;\r
103     \r
104     private JScrollPane jScrollPaneGuid = null;\r
105 \r
106     private JLabel jLabelGuid = null;\r
107 \r
108     private JScrollPane topScrollPane = null;  //  @jve:decl-index=0:visual-constraint="10,213"\r
109 \r
110     private JLabel jLabelVer = null;\r
111 \r
112     private GenGuidDialog guidDialog = null;\r
113 \r
114     private JTextField jTextFieldVersion = null;\r
115 \r
116     private JLabel jLabel = null;\r
117 \r
118     private JTextField jTextField = null;\r
119 \r
120     private JLabel jLabel1 = null;\r
121 \r
122     private JLabel jLabel2 = null;\r
123 \r
124     private ICheckBoxList iCheckBoxList = null;\r
125 \r
126     private ICheckBoxList iCheckBoxList1 = null;\r
127 \r
128     private ICheckBoxList iCheckBoxList2 = null;\r
129 \r
130     private JLabel jLabel3 = null;\r
131 \r
132     protected String[][] saa = null;\r
133 \r
134     /**\r
135       This method initializes this\r
136      \r
137      **/\r
138     protected void initialize() {\r
139         \r
140         this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
141 \r
142     }\r
143 \r
144     /**\r
145       This method initializes jTextFieldAdd     \r
146         \r
147       @return javax.swing.JTextField    \r
148      **/\r
149     protected JTextField getJTextFieldAdd() {\r
150         if (jTextFieldAdd == null) {\r
151             jTextFieldAdd = new JTextField();\r
152             jTextFieldAdd.setBounds(new java.awt.Rectangle(137,35,337,20));\r
153             jTextFieldAdd.setPreferredSize(new java.awt.Dimension(335,20));\r
154             \r
155         }\r
156         return jTextFieldAdd;\r
157     }\r
158 \r
159     /**\r
160       This method initializes jScrollPane       \r
161         \r
162       @return javax.swing.JScrollPane   \r
163      **/\r
164     protected JScrollPane getJScrollPane() {\r
165         if (jScrollPane == null) {\r
166             jScrollPane = new JScrollPane();\r
167             jScrollPane.setBounds(new java.awt.Rectangle(5,256,472,292));\r
168             jScrollPane.setViewportView(getJTable());\r
169         }\r
170         return jScrollPane;\r
171     }\r
172 \r
173     /**\r
174     This method initializes jTable  \r
175         \r
176     @return javax.swing.JTable  \r
177     **/\r
178    protected JTable getJTable() {\r
179        if (jTable == null) {\r
180            model = new DefaultTableModel();\r
181            jTable = new JTable(model);\r
182            jTable.setRowHeight(20);\r
183            jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);\r
184            model.addColumn("Name");\r
185            model.addColumn("C_Name");\r
186            model.addColumn("GUID Value");\r
187            model.addColumn("HelpText");\r
188            model.addColumn("SupportedArch");\r
189            model.addColumn("SupportedModuleType");\r
190            model.addColumn("GuidTypes");\r
191            jTable.getColumnModel().getColumn(2).setCellEditor(new GuidEditor());\r
192 \r
193            Vector<String> vArch = new Vector<String>();\r
194            vArch.add("IA32");\r
195            vArch.add("X64");\r
196            vArch.add("IPF");\r
197            vArch.add("EBC");\r
198            vArch.add("ARM");\r
199            vArch.add("PPC");\r
200            jTable.getColumnModel().getColumn(4).setCellEditor(new ListEditor(vArch));\r
201            \r
202            Vector<String> vModule = new Vector<String>();\r
203            vModule.add("BASE");\r
204            vModule.add("SEC");\r
205            vModule.add("PEI_CORE");\r
206            vModule.add("PEIM");\r
207            vModule.add("DXE_CORE");\r
208            vModule.add("DXE_DRIVER");\r
209            vModule.add("DXE_RUNTIME_DRIVER");\r
210            vModule.add("DXE_SAL_DRIVER");\r
211            vModule.add("DXE_SMM_DRIVER");\r
212            vModule.add("UEFI_DRIVER");\r
213            vModule.add("UEFI_APPLICATION");\r
214            vModule.add("USER_DEFINED");\r
215            jTable.getColumnModel().getColumn(5).setCellEditor(new ListEditor(vModule));\r
216            \r
217            Vector<String> vGuid = new Vector<String>();\r
218            vGuid.add("DATA_HUB_RECORD");\r
219            vGuid.add("EFI_EVENT");\r
220            vGuid.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
221            vGuid.add("EFI_VARIABLE");\r
222            vGuid.add("GUID");\r
223            vGuid.add("HII_PACKAGE_LIST");\r
224            vGuid.add("HOB");\r
225            vGuid.add("TOKEN_SPACE_GUID");\r
226            jTable.getColumnModel().getColumn(6).setCellEditor(new ListEditor(vGuid));\r
227            \r
228            jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
229            jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
230                public void valueChanged(ListSelectionEvent e) {\r
231                    if (e.getValueIsAdjusting()){\r
232                        return;\r
233                    }\r
234                    ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
235                    if (lsm.isSelectionEmpty()) {\r
236                        return;\r
237                    }\r
238                    else{\r
239                        selectedRow = lsm.getMinSelectionIndex();\r
240                        \r
241                    }\r
242                }\r
243            });\r
244            \r
245            jTable.getModel().addTableModelListener(this);\r
246        }\r
247        return jTable;\r
248    }\r
249    \r
250 \r
251    public void tableChanged(TableModelEvent arg0) {\r
252        // TODO Auto-generated method stub\r
253        int row = arg0.getFirstRow();\r
254        int column = arg0.getColumn();\r
255        TableModel m = (TableModel)arg0.getSource();\r
256        if (arg0.getType() == TableModelEvent.UPDATE){\r
257            \r
258            updateRow(row, column, m);\r
259        }\r
260    }\r
261    \r
262    protected void updateRow(int row, int column, TableModel m){\r
263        String[] sa = new String[7];\r
264        sfc.getSpdGuidDeclaration(sa, row);\r
265        Object cellData = m.getValueAt(row, column);\r
266        if (cellData == null) {\r
267            cellData = "";\r
268        }\r
269        if (cellData.equals(sa[column])) {\r
270            return;\r
271        }\r
272        if (cellData.toString().length() == 0 && sa[column] == null) {\r
273            return;\r
274        }\r
275        \r
276        String name = m.getValueAt(row, 0) + "";\r
277        String cName = m.getValueAt(row, 1) + "";\r
278        String guid = m.getValueAt(row, 2) + "";\r
279        String help = m.getValueAt(row, 3) + "";\r
280        String archList = null;\r
281        if (m.getValueAt(row, 4) != null){\r
282            archList = m.getValueAt(row, 4).toString();\r
283        }\r
284        String modTypeList = null;\r
285        if (m.getValueAt(row, 5) != null) {\r
286            modTypeList = m.getValueAt(row, 5).toString(); \r
287        }\r
288        String guidTypeList = null;\r
289        if (m.getValueAt(row, 6) != null){\r
290            guidTypeList = m.getValueAt(row, 6).toString();\r
291        }\r
292        String[] rowData = {name, cName, guid, help};\r
293        if (!dataValidation(rowData)){\r
294            return;\r
295        }\r
296        if (docConsole != null) {\r
297            docConsole.setSaved(false);\r
298        }\r
299        sfc.updateSpdGuidDecl(row, name, cName, guid, help, archList, modTypeList, guidTypeList);\r
300    }\r
301     /**\r
302       This method initializes jButtonAdd        \r
303         \r
304       @return javax.swing.JButton       \r
305      **/\r
306     protected JButton getJButtonAdd() {\r
307         if (jButtonAdd == null) {\r
308             jButtonAdd = new JButton();\r
309             jButtonAdd.setBounds(new java.awt.Rectangle(167,227,90,20));\r
310             jButtonAdd.setText("Add");\r
311             jButtonAdd.addActionListener(this);\r
312         }\r
313         return jButtonAdd;\r
314     }\r
315 \r
316     /**\r
317       This method initializes jButtonRemove     \r
318         \r
319       @return javax.swing.JButton       \r
320      **/\r
321     protected JButton getJButtonRemove() {\r
322         if (jButtonRemove == null) {\r
323             jButtonRemove = new JButton();\r
324             jButtonRemove.setBounds(new java.awt.Rectangle(270,227,90,20));\r
325             jButtonRemove.setText("Remove");\r
326             jButtonRemove.addActionListener(this);\r
327         }\r
328         return jButtonRemove;\r
329     }\r
330 \r
331     /**\r
332       This method initializes jButtonRemoveAll  \r
333         \r
334       @return javax.swing.JButton       \r
335      **/\r
336     protected JButton getJButtonClearAll() {\r
337         if (jButtonClearAll == null) {\r
338             jButtonClearAll = new JButton();\r
339             jButtonClearAll.setBounds(new java.awt.Rectangle(380,227,90,20));\r
340             jButtonClearAll.setText("Clear All");\r
341             jButtonClearAll.addActionListener(this);\r
342         }\r
343         return jButtonClearAll;\r
344     }\r
345 \r
346     /**\r
347       This method initializes jButtonCancel     \r
348         \r
349       @return javax.swing.JButton       \r
350      **/\r
351     protected JButton getJButtonCancel() {\r
352         if (jButtonCancel == null) {\r
353             jButtonCancel = new JButton();\r
354             jButtonCancel.setPreferredSize(new java.awt.Dimension(90, 20));\r
355             jButtonCancel.setLocation(new java.awt.Point(390, 305));\r
356             jButtonCancel.setText("Cancel");\r
357             jButtonCancel.setSize(new java.awt.Dimension(90, 20));\r
358             jButtonCancel.setVisible(false);\r
359             jButtonCancel.addActionListener(this);\r
360         }\r
361         return jButtonCancel;\r
362     }\r
363 \r
364     /**\r
365       This method initializes jButton   \r
366         \r
367       @return javax.swing.JButton       \r
368      **/\r
369     protected JButton getJButtonOk() {\r
370         if (jButtonOk == null) {\r
371             jButtonOk = new JButton();\r
372             jButtonOk.setSize(new java.awt.Dimension(90, 20));\r
373             jButtonOk.setText("OK");\r
374             jButtonOk.setLocation(new java.awt.Point(290, 305));\r
375             jButtonOk.setVisible(false);\r
376             jButtonOk.addActionListener(this);\r
377         }\r
378         return jButtonOk;\r
379     }\r
380 \r
381     /**\r
382       This is the default constructor\r
383      **/\r
384     public SpdGuidDecls() {\r
385         super();\r
386         initialize();\r
387         init();\r
388         \r
389     }\r
390 \r
391     public SpdGuidDecls(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa){\r
392         this();\r
393         sfc = new SpdFileContents(inPsa);\r
394         init(sfc);\r
395     }\r
396     \r
397     public SpdGuidDecls(OpeningPackageType opt) {\r
398         this(opt.getXmlSpd());\r
399         docConsole = opt;\r
400     }\r
401     /**\r
402       This method initializes this\r
403       \r
404       @return void\r
405      **/\r
406     protected void init() {\r
407         this.setContentPane(getJContentPane());\r
408         this.addInternalFrameListener(new InternalFrameAdapter(){\r
409             public void internalFrameDeactivated(InternalFrameEvent e){\r
410                 if (jTable.isEditing()) {\r
411                     jTable.getCellEditor().stopCellEditing();\r
412                 }\r
413             }\r
414         });\r
415         this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
416         this.setVisible(true);\r
417         initFrame();\r
418     }\r
419 \r
420     protected void init(SpdFileContents sfc){\r
421         if (sfc.getSpdGuidDeclarationCount() == 0) {\r
422             return ;\r
423         }\r
424         //\r
425         // initialize table using SpdFileContents object\r
426         //\r
427         saa = new String[sfc.getSpdGuidDeclarationCount()][7];\r
428         sfc.getSpdGuidDeclarations(saa);\r
429         int i = 0;\r
430         while (i < saa.length) {\r
431             model.addRow(saa[i]);\r
432             i++;\r
433         }\r
434     }\r
435     \r
436     protected JScrollPane getJContentPane(){\r
437         if (topScrollPane == null){\r
438             topScrollPane = new JScrollPane();\r
439             topScrollPane.setSize(new java.awt.Dimension(617,500));\r
440             topScrollPane.setPreferredSize(new java.awt.Dimension(498,500));\r
441             topScrollPane.setViewportView(getJContentPane1());\r
442         }\r
443         return topScrollPane;\r
444     }\r
445     \r
446     /**\r
447       This method initializes jContentPane\r
448       \r
449       @return javax.swing.JPanel\r
450      **/\r
451     protected JPanel getJContentPane1() {\r
452         if (jContentPane == null) {\r
453             jLabel3 = new JLabel();\r
454             jLabel3.setBounds(new java.awt.Rectangle(400,122,103,16));\r
455             jLabel3.setText("GUID Type List");\r
456             jLabel3.setEnabled(true);\r
457             jLabel2 = new JLabel();\r
458             jLabel2.setBounds(new java.awt.Rectangle(197,122,108,16));\r
459             jLabel2.setText("Supported Arch");\r
460             jLabel2.setEnabled(true);\r
461             jLabel1 = new JLabel();\r
462             jLabel1.setBounds(new java.awt.Rectangle(14,120,110,16));\r
463             jLabel1.setText("Supported Module");\r
464             jLabel1.setEnabled(true);\r
465             jLabel = new JLabel();\r
466             jLabel.setText("HelpText");\r
467             jLabel.setSize(new java.awt.Dimension(109,20));\r
468             jLabel.setLocation(new java.awt.Point(14,85));\r
469             jLabelVer = new JLabel();\r
470             jLabelVer.setBounds(new java.awt.Rectangle(14,60,111,20));\r
471             jLabelVer.setText("C_Name");\r
472             jLabelGuid = new JLabel();\r
473             jLabelGuid.setBounds(new java.awt.Rectangle(15,35,112,20));\r
474             jLabelGuid.setText("Guid Value");\r
475             jLabelName = new JLabel();\r
476             jLabelName.setBounds(new java.awt.Rectangle(15,10,113,20));\r
477             jLabelName.setText("Name");\r
478             jStarLabel1 = new StarLabel();\r
479             jStarLabel1.setLocation(new java.awt.Point(0, 10));\r
480             jStarLabel3 = new StarLabel();\r
481             jStarLabel3.setLocation(new java.awt.Point(0, 35));\r
482             jStarLabel4 = new StarLabel();\r
483             jStarLabel4.setLocation(new java.awt.Point(0, 60));\r
484             jStarLabel2 = new StarLabel();\r
485             jStarLabel2.setLocation(new java.awt.Point(0, 85));\r
486             jStarLabel2.setVisible(true);\r
487             jContentPane = new JPanel();\r
488             jContentPane.setLayout(null);\r
489             jContentPane.setPreferredSize(new Dimension(480, 375));\r
490             jContentPane.add(jStarLabel1, null);\r
491             jContentPane.add(jStarLabel2, null);\r
492             jContentPane.add(jStarLabel3, null);\r
493             jContentPane.add(jStarLabel4, null);\r
494             jContentPane.add(jLabelVer, null);\r
495             jContentPane.add(getJTextFieldVersion(), null);\r
496             jContentPane.add(getJTextFieldAdd(), 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
501             jContentPane.add(getJButtonCancel(), null);\r
502             jContentPane.add(getJButtonOk(), null);\r
503             \r
504             jContentPane.add(getJButtonGen(), null);\r
505             jContentPane.add(jLabelName, null);\r
506             jContentPane.add(getJTextFieldName(), null);\r
507             jContentPane.add(jLabelGuid, null);\r
508             jContentPane.add(jLabel, null);\r
509             jContentPane.add(getJTextField(), null);\r
510             jContentPane.add(jLabel1, null);\r
511             jContentPane.add(jLabel2, null);\r
512             jContentPane.add(getJScrollPaneArch(), null);\r
513             jContentPane.add(getJScrollPaneGuid(), null);\r
514             jContentPane.add(getJScrollPaneModule(), null);\r
515             jContentPane.add(jLabel3, null);\r
516         }\r
517         return jContentPane;\r
518     }\r
519 \r
520     /**\r
521      fill ComboBoxes with pre-defined contents\r
522     **/\r
523     protected void initFrame() {\r
524         \r
525         this.setTitle("GUID Declarations");\r
526 \r
527     }\r
528 \r
529     /* (non-Javadoc)\r
530      * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
531      */\r
532     public void actionPerformed(ActionEvent arg0) {\r
533         \r
534         if (arg0.getSource() == jButtonOk) {\r
535             this.save();\r
536             this.dispose();\r
537 \r
538         }\r
539         if (arg0.getSource() == jButtonCancel) {\r
540             this.dispose();\r
541         }\r
542 \r
543         if (arg0.getSource() == jButtonAdd) {\r
544             \r
545             //ToDo: check before add\r
546             String[] row = {"", "", "", "", "", "", ""};\r
547             row[3] = jTextField.getText();\r
548             row[2] = jTextFieldAdd.getText();\r
549             row[1] = jTextFieldVersion.getText();\r
550             row[0] = jTextFieldName.getText();\r
551             row[4] = vectorToString(iCheckBoxList.getAllCheckedItemsString());\r
552             if (row[4].length() == 0) {\r
553                 row[4] = null;\r
554             }\r
555             row[5] = vectorToString(iCheckBoxList2.getAllCheckedItemsString());\r
556             if (row[5].length() == 0) {\r
557                 row[5] = null;\r
558             }\r
559             row[6] = vectorToString(iCheckBoxList1.getAllCheckedItemsString());\r
560             if (row[6].length() == 0) {\r
561                 row[6] = null;\r
562             }\r
563             \r
564             if (!dataValidation(row)) {\r
565                 return;\r
566             }\r
567             \r
568             model.addRow(row);\r
569             jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
570             addRow(row);\r
571         }\r
572         //\r
573         // remove selected line\r
574         //\r
575         if (arg0.getSource() == jButtonRemove) {\r
576             if (jTable.isEditing()){\r
577                 jTable.getCellEditor().stopCellEditing();\r
578             }\r
579             int rowSelected = selectedRow;\r
580             if (rowSelected >= 0) {\r
581                 model.removeRow(rowSelected);\r
582                 removeRow(rowSelected);\r
583             }\r
584         }\r
585 \r
586         if (arg0.getSource() == jButtonClearAll) {\r
587             if (model.getRowCount() == 0) {\r
588                 return;\r
589             }\r
590             model.setRowCount(0);\r
591             clearAllRow();\r
592         }\r
593         \r
594         if (arg0.getSource() == jButtonGen) {\r
595             jTextFieldAdd.setText(Tools.generateUuidString());\r
596         }\r
597         \r
598         if (arg0.getActionCommand().equals("GenGuidValue")) {\r
599             jTextFieldAdd.setText(guidDialog.getGuid());\r
600         }\r
601         \r
602     }\r
603     \r
604     protected boolean dataValidation(String[] row){\r
605         if (!DataValidation.isUiNameType(row[0])) {\r
606             JOptionPane.showMessageDialog(this, "Name is NOT UiNameType.");\r
607             return false;\r
608         }\r
609         if (!DataValidation.isGuid(row[2])) {\r
610             JOptionPane.showMessageDialog(this, "Guid Value is NOT GuidType.");\r
611             return false;\r
612         }\r
613         if (!DataValidation.isC_NameType(row[1])) {\r
614             JOptionPane.showMessageDialog(this, "C_Name is NOT C_NameType.");\r
615             return false;\r
616         }\r
617         if (row[3].length() == 0) {\r
618             JOptionPane.showMessageDialog(this, "HelpText could NOT be empty.");\r
619             return false;\r
620         }\r
621         return true;\r
622     }\r
623     \r
624     protected void addRow(String[] row) {\r
625         Vector<String> vArch = iCheckBoxList.getAllCheckedItemsString();\r
626         if (vArch.size() == 0) {\r
627             vArch = null;\r
628         }\r
629         Vector<String> vModType = iCheckBoxList2.getAllCheckedItemsString();\r
630         if (vModType.size() == 0) {\r
631             vModType = null;\r
632         }\r
633         Vector<String> vguidType = iCheckBoxList1.getAllCheckedItemsString();\r
634         if (vguidType.size() == 0) {\r
635             vguidType = null;\r
636         }\r
637         if (docConsole != null) {\r
638             docConsole.setSaved(false);\r
639         }\r
640         sfc.genSpdGuidDeclarations(row[0], row[1], row[2], row[3], vArch, vModType, vguidType);\r
641     }\r
642     \r
643     protected void removeRow(int i){\r
644         sfc.removeSpdGuidDeclaration(i);\r
645         if (docConsole != null) {\r
646             docConsole.setSaved(false);\r
647         }\r
648     }\r
649     \r
650     protected void clearAllRow(){\r
651         sfc.removeSpdGuidDeclaration();\r
652         if (docConsole != null) {\r
653             docConsole.setSaved(false);\r
654         }\r
655     }\r
656 \r
657     /**\r
658      Add contents in list to sfc\r
659     **/\r
660     protected void save() {\r
661         \r
662     }\r
663 \r
664     /**\r
665       This method initializes jButtonBrowse     \r
666         \r
667       @return javax.swing.JButton       \r
668      **/\r
669     protected JButton getJButtonGen() {\r
670         if (jButtonGen == null) {\r
671             jButtonGen = new JButton();\r
672             jButtonGen.setBounds(new java.awt.Rectangle(379,58,92,21));\r
673             jButtonGen.setText("Gen GUID");\r
674             jButtonGen.setPreferredSize(new java.awt.Dimension(80,20));\r
675             jButtonGen.addActionListener(this);\r
676         }\r
677         return jButtonGen;\r
678     }\r
679     \r
680     /**\r
681      * This method initializes jTextFieldName   \r
682      *  \r
683      * @return javax.swing.JTextField   \r
684      */\r
685     protected JTextField getJTextFieldName() {\r
686         if (jTextFieldName == null) {\r
687             jTextFieldName = new JTextField();\r
688             jTextFieldName.setBounds(new java.awt.Rectangle(138,10,337,20));\r
689             jTextFieldName.setPreferredSize(new java.awt.Dimension(335,20));\r
690         }\r
691         return jTextFieldName;\r
692     }\r
693 \r
694     /**\r
695      * This method initializes jTextFieldVersion        \r
696      *  \r
697      * @return javax.swing.JTextField   \r
698      */\r
699     protected JTextField getJTextFieldVersion() {\r
700         if (jTextFieldVersion == null) {\r
701             jTextFieldVersion = new JTextField();\r
702             jTextFieldVersion.setBounds(new java.awt.Rectangle(137,60,225,20));\r
703             jTextFieldVersion.setPreferredSize(new java.awt.Dimension(225,20));\r
704         }\r
705         return jTextFieldVersion;\r
706     }\r
707 \r
708     public void componentResized(ComponentEvent arg0) {\r
709         int intPreferredWidth = 500;\r
710         \r
711         resizeComponentWidth(this.jTextFieldName, this.getWidth(), intPreferredWidth);\r
712         resizeComponentWidth(this.jTextFieldAdd, this.getWidth(), intPreferredWidth);\r
713         resizeComponentWidth(this.jTextFieldVersion, this.getWidth(), intPreferredWidth);\r
714         resizeComponentWidth(this.jTextField, this.getWidth(), intPreferredWidth);\r
715         resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
716         relocateComponentX(this.jButtonGen, this.getWidth(), this.getPreferredSize().width, 40);\r
717         \r
718     }\r
719     \r
720     /**\r
721      * This method initializes jTextField       \r
722      *  \r
723      * @return javax.swing.JTextField   \r
724      */\r
725     private JTextField getJTextField() {\r
726         if (jTextField == null) {\r
727             jTextField = new JTextField();\r
728             jTextField.setBounds(new java.awt.Rectangle(136,85,337,20));\r
729             jTextField.setPreferredSize(new Dimension(335, 20));\r
730         }\r
731         return jTextField;\r
732     }\r
733 \r
734     private JScrollPane getJScrollPaneArch() {\r
735         if (jScrollPaneArch == null) {\r
736             jScrollPaneArch = new JScrollPane();\r
737             jScrollPaneArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
738             jScrollPaneArch.setPreferredSize(new java.awt.Dimension(188, 74));\r
739             jScrollPaneArch.setViewportView(getICheckBoxList());\r
740         }\r
741         return jScrollPaneArch;\r
742     }\r
743     /**\r
744      * This method initializes iCheckBoxList    \r
745      *  \r
746      * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList      \r
747      */\r
748     private ICheckBoxList getICheckBoxList() {\r
749         if (iCheckBoxList == null) {\r
750             iCheckBoxList = new ICheckBoxList();\r
751             iCheckBoxList.setBounds(new java.awt.Rectangle(197,142,188,74));\r
752             Vector<String> v = new Vector<String>();\r
753             v.add("IA32");\r
754             v.add("X64");\r
755             v.add("IPF");\r
756             v.add("EBC");\r
757             v.add("ARM");\r
758             v.add("PPC");\r
759             iCheckBoxList.setAllItems(v);\r
760         }\r
761         return iCheckBoxList;\r
762     }\r
763 \r
764     protected JScrollPane getJScrollPaneGuid() {\r
765         if (jScrollPaneGuid== null) {\r
766             jScrollPaneGuid = new JScrollPane();\r
767             jScrollPaneGuid.setPreferredSize(new java.awt.Dimension(190,74));\r
768             jScrollPaneGuid.setLocation(new java.awt.Point(400,142));\r
769             jScrollPaneGuid.setSize(new java.awt.Dimension(260,74));\r
770             jScrollPaneGuid.setViewportView(getICheckBoxList1());\r
771         }\r
772         return jScrollPaneGuid;\r
773     }\r
774     /**\r
775      * This method initializes iCheckBoxList1   \r
776      *  \r
777      * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList      \r
778      */\r
779     private ICheckBoxList getICheckBoxList1() {\r
780         if (iCheckBoxList1 == null) {\r
781             iCheckBoxList1 = new ICheckBoxList();\r
782             iCheckBoxList1.setBounds(new java.awt.Rectangle(400,142,177,74));\r
783             Vector<String> v = new Vector<String>();\r
784             v.add("DATA_HUB_RECORD");\r
785             v.add("EFI_EVENT");\r
786             v.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
787             v.add("EFI_VARIABLE");\r
788             v.add("GUID");\r
789             v.add("HII_PACKAGE_LIST");\r
790             v.add("HOB");\r
791             v.add("TOKEN_SPACE_GUID");\r
792           \r
793             iCheckBoxList1.setAllItems(v);\r
794         }\r
795         return iCheckBoxList1;\r
796     }\r
797 \r
798     private JScrollPane getJScrollPaneModule() {\r
799         if (jScrollPaneModule == null) {\r
800             jScrollPaneModule = new JScrollPane();\r
801             jScrollPaneModule.setBounds(new java.awt.Rectangle(14,142,170,74));\r
802             jScrollPaneModule.setPreferredSize(new java.awt.Dimension(170, 74));\r
803             jScrollPaneModule.setViewportView(getICheckBoxList2());\r
804         }\r
805         return jScrollPaneModule;\r
806     }\r
807     /**\r
808      * This method initializes iCheckBoxList2   \r
809      *  \r
810      * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList      \r
811      */\r
812     private ICheckBoxList getICheckBoxList2() {\r
813         if (iCheckBoxList2 == null) {\r
814             iCheckBoxList2 = new ICheckBoxList();\r
815             iCheckBoxList2.setBounds(new java.awt.Rectangle(14,142,170,74));\r
816             Vector<String> v = new Vector<String>();\r
817             v.add("BASE");\r
818             v.add("SEC");\r
819             v.add("PEI_CORE");\r
820             v.add("PEIM");\r
821             v.add("DXE_CORE");\r
822             v.add("DXE_DRIVER");\r
823             v.add("DXE_RUNTIME_DRIVER");\r
824             v.add("DXE_SAL_DRIVER");\r
825             v.add("DXE_SMM_DRIVER");\r
826             v.add("UEFI_DRIVER");\r
827             v.add("UEFI_APPLICATION");\r
828             v.add("USER_DEFINED");\r
829             iCheckBoxList2.setAllItems(v);\r
830         }\r
831         return iCheckBoxList2;\r
832     }\r
833 \r
834     public static void main(String[] args){\r
835         new SpdGuidDecls().setVisible(true);\r
836     }\r
837 \r
838     protected DefaultTableModel getModel() {\r
839         return model;\r
840     }\r
841 \r
842     protected void setModel(DefaultTableModel model) {\r
843         this.model = model;\r
844     }\r
845     \r
846     protected String vectorToString(Vector<String> v) {\r
847         String s = " ";\r
848         for (int i = 0; i < v.size(); ++i) {\r
849             s += v.get(i);\r
850             s += " ";\r
851         }\r
852         return s.trim();\r
853     }\r
854     \r
855     protected Vector<String> stringToVector(String s){\r
856         if (s == null) {\r
857             return null;\r
858         }\r
859         String[] sArray = s.split(" ");\r
860         Vector<String> v = new Vector<String>();\r
861         for (int i = 0; i < sArray.length; ++i) {\r
862             v.add(sArray[i]);\r
863         }\r
864         return v;\r
865     }\r
866 \r
867     protected JLabel getJLabel3() {\r
868         return jLabel3;\r
869     }\r
870 }\r
871 \r
872 \r