8cdcedd73d3b59e3d4182553d5f26e985657676a
[people/mcb30/edk2.git] / edk2 / Tools / Java / 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 jTextFieldGuid = 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 jLabelCName = null;\r
111 \r
112     private GenGuidDialog guidDialog = null;\r
113 \r
114     private JTextField jTextFieldCName = null;\r
115 \r
116     private JLabel jLabelHelp = null;\r
117 \r
118     private JTextField jTextFieldHelp = null;\r
119 \r
120     private JLabel jLabelSupMod = null;\r
121 \r
122     private JLabel jLabelSupArch = null;\r
123 \r
124     private ICheckBoxList iCheckBoxListArch = null;\r
125 \r
126     private ICheckBoxList iCheckBoxListGuid = null;\r
127 \r
128     private ICheckBoxList iCheckBoxListMod = null;\r
129 \r
130     private JLabel jLabelGuidType = 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 jTextFieldGuid    \r
146         \r
147       @return javax.swing.JTextField    \r
148      **/\r
149     protected JTextField getJTextFieldGuid() {\r
150         if (jTextFieldGuid == null) {\r
151             jTextFieldGuid = new JTextField();\r
152             jTextFieldGuid.setBounds(new java.awt.Rectangle(137,60,435,20));\r
153             jTextFieldGuid.setPreferredSize(new java.awt.Dimension(200,20));\r
154             \r
155         }\r
156         return jTextFieldGuid;\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("The C Name");\r
186            model.addColumn("GUID Value");\r
187            model.addColumn("Help Text");\r
188            model.addColumn("Supported Architectures");\r
189            model.addColumn("Supported Module Types");\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             jLabelGuidType = new JLabel();\r
454             jLabelGuidType.setBounds(new java.awt.Rectangle(400,122,103,16));\r
455             jLabelGuidType.setText("GUID Type List");\r
456             jLabelGuidType.setEnabled(true);\r
457             jLabelSupArch = new JLabel();\r
458             jLabelSupArch.setBounds(new java.awt.Rectangle(197,122,108,16));\r
459             jLabelSupArch.setText("Supported Arch");\r
460             jLabelSupArch.setEnabled(true);\r
461             jLabelSupMod = new JLabel();\r
462             jLabelSupMod.setBounds(new java.awt.Rectangle(14,120,110,16));\r
463             jLabelSupMod.setText("Supported Module");\r
464             jLabelSupMod.setEnabled(true);\r
465             jLabelHelp = new JLabel();\r
466             jLabelHelp.setText("HelpText");\r
467             jLabelHelp.setSize(new java.awt.Dimension(109,20));\r
468             jLabelHelp.setLocation(new java.awt.Point(14,85));\r
469             jLabelCName = new JLabel();\r
470             jLabelCName.setBounds(new java.awt.Rectangle(14,35,111,20));\r
471             jLabelCName.setText("C Name");\r
472             jLabelGuid = new JLabel();\r
473             jLabelGuid.setBounds(new java.awt.Rectangle(15,60,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(jLabelCName, null);\r
495             jContentPane.add(getJTextFieldCName(), null);\r
496             jContentPane.add(getJTextFieldGuid(), 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(jLabelHelp, null);\r
509             jContentPane.add(getJTextFieldHelp(), null);\r
510             jContentPane.add(jLabelSupMod, null);\r
511             jContentPane.add(jLabelSupArch, null);\r
512             jContentPane.add(getJScrollPaneArch(), null);\r
513             jContentPane.add(getJScrollPaneGuid(), null);\r
514             jContentPane.add(getJScrollPaneModule(), null);\r
515             jContentPane.add(jLabelGuidType, 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] = jTextFieldHelp.getText();\r
548             row[2] = jTextFieldGuid.getText();\r
549             row[1] = jTextFieldCName.getText();\r
550             row[0] = jTextFieldName.getText();\r
551             row[4] = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
552             if (row[4].length() == 0) {\r
553                 row[4] = null;\r
554             }\r
555             row[5] = vectorToString(iCheckBoxListMod.getAllCheckedItemsString());\r
556             if (row[5].length() == 0) {\r
557                 row[5] = null;\r
558             }\r
559             row[6] = vectorToString(iCheckBoxListGuid.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             if (addRow(row) == -1) {\r
569                 return;\r
570             }\r
571             model.addRow(row);\r
572             jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
573             \r
574         }\r
575         //\r
576         // remove selected line\r
577         //\r
578         if (arg0.getSource() == jButtonRemove) {\r
579             if (jTable.isEditing()){\r
580                 jTable.getCellEditor().stopCellEditing();\r
581             }\r
582             int rowSelected = selectedRow;\r
583             if (rowSelected >= 0) {\r
584                 model.removeRow(rowSelected);\r
585                 removeRow(rowSelected);\r
586             }\r
587         }\r
588 \r
589         if (arg0.getSource() == jButtonClearAll) {\r
590             if (model.getRowCount() == 0) {\r
591                 return;\r
592             }\r
593             model.setRowCount(0);\r
594             clearAllRow();\r
595         }\r
596         \r
597         if (arg0.getSource() == jButtonGen) {\r
598             jTextFieldGuid.setText(Tools.generateUuidString());\r
599         }\r
600         \r
601         if (arg0.getActionCommand().equals("GenGuidValue")) {\r
602             jTextFieldGuid.setText(guidDialog.getGuid());\r
603         }\r
604         \r
605     }\r
606     \r
607     protected boolean dataValidation(String[] row){\r
608         if (!DataValidation.isUiNameType(row[0])) {\r
609             JOptionPane.showMessageDialog(this, "Name must start with an alpha character.");\r
610             return false;\r
611         }\r
612         if (!DataValidation.isGuid(row[2])) {\r
613             JOptionPane.showMessageDialog(this, "Guid Value must be in registry format, 8-4-4-4-12.");\r
614             return false;\r
615         }\r
616         if (!DataValidation.isC_NameType(row[1])) {\r
617             JOptionPane.showMessageDialog(this, "C Name does not match C Name datatype.");\r
618             return false;\r
619         }\r
620         if (row[3].length() == 0) {\r
621             JOptionPane.showMessageDialog(this, "Help Text must be entered!");\r
622             return false;\r
623         }\r
624         return true;\r
625     }\r
626     \r
627     protected int addRow(String[] row) {\r
628         Vector<String> vArch = iCheckBoxListArch.getAllCheckedItemsString();\r
629         if (vArch.size() == 0) {\r
630             vArch = null;\r
631         }\r
632         Vector<String> vModType = iCheckBoxListMod.getAllCheckedItemsString();\r
633         if (vModType.size() == 0) {\r
634             vModType = null;\r
635         }\r
636         Vector<String> vguidType = iCheckBoxListGuid.getAllCheckedItemsString();\r
637         if (vguidType.size() == 0) {\r
638             vguidType = null;\r
639         }\r
640         if (vguidType == null) {\r
641             JOptionPane.showMessageDialog(this, "You must select one GUID type.");\r
642             return -1;\r
643         }\r
644         if (docConsole != null) {\r
645             docConsole.setSaved(false);\r
646         }\r
647         sfc.genSpdGuidDeclarations(row[0], row[1], row[2], row[3], vArch, vModType, vguidType);\r
648         return 0;\r
649     }\r
650     \r
651     protected void removeRow(int i){\r
652         sfc.removeSpdGuidDeclaration(i);\r
653         if (docConsole != null) {\r
654             docConsole.setSaved(false);\r
655         }\r
656     }\r
657     \r
658     protected void clearAllRow(){\r
659         sfc.removeSpdGuidDeclaration();\r
660         if (docConsole != null) {\r
661             docConsole.setSaved(false);\r
662         }\r
663     }\r
664 \r
665     /**\r
666      Add contents in list to sfc\r
667     **/\r
668     protected void save() {\r
669         \r
670     }\r
671 \r
672     /**\r
673       This method initializes jButtonBrowse     \r
674         \r
675       @return javax.swing.JButton       \r
676      **/\r
677     protected JButton getJButtonGen() {\r
678         if (jButtonGen == null) {\r
679             jButtonGen = new JButton();\r
680             jButtonGen.setBounds(new java.awt.Rectangle(379,58,92,21));\r
681             jButtonGen.setText("Gen GUID");\r
682             jButtonGen.setPreferredSize(new java.awt.Dimension(80,20));\r
683             jButtonGen.addActionListener(this);\r
684         }\r
685         return jButtonGen;\r
686     }\r
687     \r
688     /**\r
689      * This method initializes jTextFieldName   \r
690      *  \r
691      * @return javax.swing.JTextField   \r
692      */\r
693     protected JTextField getJTextFieldName() {\r
694         if (jTextFieldName == null) {\r
695             jTextFieldName = new JTextField();\r
696             jTextFieldName.setBounds(new java.awt.Rectangle(138,10,337,20));\r
697             jTextFieldName.setPreferredSize(new java.awt.Dimension(335,20));\r
698         }\r
699         return jTextFieldName;\r
700     }\r
701 \r
702     /**\r
703      * This method initializes jTextFieldCName  \r
704      *  \r
705      * @return javax.swing.JTextField   \r
706      */\r
707     protected JTextField getJTextFieldCName() {\r
708         if (jTextFieldCName == null) {\r
709             jTextFieldCName = new JTextField();\r
710             jTextFieldCName.setBounds(new java.awt.Rectangle(137,35,337,20));\r
711             jTextFieldCName.setPreferredSize(new java.awt.Dimension(335,20));\r
712         }\r
713         return jTextFieldCName;\r
714     }\r
715 \r
716     public void componentResized(ComponentEvent arg0) {\r
717         int intPreferredWidth = 500;\r
718         \r
719         Tools.resizeComponentWidth(this.jTextFieldName, this.getWidth(), intPreferredWidth);\r
720 \r
721         Tools.resizeComponentWidth(this.jTextFieldCName, this.getWidth(), intPreferredWidth);\r
722         Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
723         Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
724         Tools.relocateComponentX(this.jButtonGen, this.getWidth(), this.getPreferredSize().width, 40);\r
725         \r
726     }\r
727     \r
728     /**\r
729      * This method initializes jTextField       \r
730      *  \r
731      * @return javax.swing.JTextField   \r
732      */\r
733     private JTextField getJTextFieldHelp() {\r
734         if (jTextFieldHelp == null) {\r
735             jTextFieldHelp = new JTextField();\r
736             jTextFieldHelp.setBounds(new java.awt.Rectangle(136,85,337,20));\r
737             jTextFieldHelp.setPreferredSize(new Dimension(335, 20));\r
738         }\r
739         return jTextFieldHelp;\r
740     }\r
741 \r
742     private JScrollPane getJScrollPaneArch() {\r
743         if (jScrollPaneArch == null) {\r
744             jScrollPaneArch = new JScrollPane();\r
745             jScrollPaneArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
746             jScrollPaneArch.setPreferredSize(new java.awt.Dimension(188, 74));\r
747             jScrollPaneArch.setViewportView(getICheckBoxListArch());\r
748         }\r
749         return jScrollPaneArch;\r
750     }\r
751     /**\r
752      * This method initializes iCheckBoxList    \r
753      *  \r
754      * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList      \r
755      */\r
756     private ICheckBoxList getICheckBoxListArch() {\r
757         if (iCheckBoxListArch == null) {\r
758             iCheckBoxListArch = new ICheckBoxList();\r
759             iCheckBoxListArch.setBounds(new java.awt.Rectangle(197,142,188,74));\r
760             Vector<String> v = new Vector<String>();\r
761             v.add("IA32");\r
762             v.add("X64");\r
763             v.add("IPF");\r
764             v.add("EBC");\r
765             v.add("ARM");\r
766             v.add("PPC");\r
767             iCheckBoxListArch.setAllItems(v);\r
768         }\r
769         return iCheckBoxListArch;\r
770     }\r
771 \r
772     protected JScrollPane getJScrollPaneGuid() {\r
773         if (jScrollPaneGuid== null) {\r
774             jScrollPaneGuid = new JScrollPane();\r
775             jScrollPaneGuid.setPreferredSize(new java.awt.Dimension(190,74));\r
776             jScrollPaneGuid.setLocation(new java.awt.Point(400,142));\r
777             jScrollPaneGuid.setSize(new java.awt.Dimension(260,74));\r
778             jScrollPaneGuid.setViewportView(getICheckBoxListGuid());\r
779         }\r
780         return jScrollPaneGuid;\r
781     }\r
782     /**\r
783      * This method initializes iCheckBoxList1   \r
784      *  \r
785      * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList      \r
786      */\r
787     private ICheckBoxList getICheckBoxListGuid() {\r
788         if (iCheckBoxListGuid == null) {\r
789             iCheckBoxListGuid = new ICheckBoxList();\r
790             iCheckBoxListGuid.setBounds(new java.awt.Rectangle(400,142,177,74));\r
791             Vector<String> v = new Vector<String>();\r
792             v.add("DATA_HUB_RECORD");\r
793             v.add("EFI_EVENT");\r
794             v.add("EFI_SYSTEM_CONFIGURATION_TABLE");\r
795             v.add("EFI_VARIABLE");\r
796             v.add("GUID");\r
797             v.add("HII_PACKAGE_LIST");\r
798             v.add("HOB");\r
799             v.add("TOKEN_SPACE_GUID");\r
800           \r
801             iCheckBoxListGuid.setAllItems(v);\r
802         }\r
803         return iCheckBoxListGuid;\r
804     }\r
805 \r
806     private JScrollPane getJScrollPaneModule() {\r
807         if (jScrollPaneModule == null) {\r
808             jScrollPaneModule = new JScrollPane();\r
809             jScrollPaneModule.setBounds(new java.awt.Rectangle(14,142,170,74));\r
810             jScrollPaneModule.setPreferredSize(new java.awt.Dimension(170, 74));\r
811             jScrollPaneModule.setViewportView(getICheckBoxListMod());\r
812         }\r
813         return jScrollPaneModule;\r
814     }\r
815     /**\r
816      * This method initializes iCheckBoxList2   \r
817      *  \r
818      * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList      \r
819      */\r
820     private ICheckBoxList getICheckBoxListMod() {\r
821         if (iCheckBoxListMod == null) {\r
822             iCheckBoxListMod = new ICheckBoxList();\r
823             iCheckBoxListMod.setBounds(new java.awt.Rectangle(14,142,170,74));\r
824             Vector<String> v = new Vector<String>();\r
825             v.add("BASE");\r
826             v.add("SEC");\r
827             v.add("PEI_CORE");\r
828             v.add("PEIM");\r
829             v.add("DXE_CORE");\r
830             v.add("DXE_DRIVER");\r
831             v.add("DXE_RUNTIME_DRIVER");\r
832             v.add("DXE_SAL_DRIVER");\r
833             v.add("DXE_SMM_DRIVER");\r
834             v.add("UEFI_DRIVER");\r
835             v.add("UEFI_APPLICATION");\r
836             v.add("USER_DEFINED");\r
837             iCheckBoxListMod.setAllItems(v);\r
838         }\r
839         return iCheckBoxListMod;\r
840     }\r
841 \r
842     public static void main(String[] args){\r
843         new SpdGuidDecls().setVisible(true);\r
844     }\r
845 \r
846     protected DefaultTableModel getModel() {\r
847         return model;\r
848     }\r
849 \r
850     protected void setModel(DefaultTableModel model) {\r
851         this.model = model;\r
852     }\r
853     \r
854     protected String vectorToString(Vector<String> v) {\r
855         String s = " ";\r
856         for (int i = 0; i < v.size(); ++i) {\r
857             s += v.get(i);\r
858             s += " ";\r
859         }\r
860         return s.trim();\r
861     }\r
862     \r
863     protected Vector<String> stringToVector(String s){\r
864         if (s == null) {\r
865             return null;\r
866         }\r
867         String[] sArray = s.split(" ");\r
868         Vector<String> v = new Vector<String>();\r
869         for (int i = 0; i < sArray.length; ++i) {\r
870             v.add(sArray[i]);\r
871         }\r
872         return v;\r
873     }\r
874 \r
875     protected JLabel getJLabelGuidType() {\r
876         return jLabelGuidType;\r
877     }\r
878 }\r
879 \r
880 \r