+++ /dev/null
-/** @file\r
- Java class SpdPcdDefs is GUI for create PCD definition elements of spd file.\r
- \r
-Copyright (c) 2006, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-**/\r
-package org.tianocore.frameworkwizard.packaging.ui;\r
-\r
-import java.awt.Dimension;\r
-import java.awt.FontMetrics;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ComponentEvent;\r
-\r
-import javax.swing.DefaultCellEditor;\r
-import javax.swing.JFrame;\r
-import javax.swing.JOptionPane;\r
-import javax.swing.JPanel;\r
-import javax.swing.JLabel;\r
-import javax.swing.JTextField;\r
-import javax.swing.JComboBox;\r
-import javax.swing.JButton;\r
-import javax.swing.ListSelectionModel;\r
-\r
-import javax.swing.event.InternalFrameAdapter;\r
-import javax.swing.event.InternalFrameEvent;\r
-import javax.swing.event.ListSelectionEvent;\r
-import javax.swing.event.ListSelectionListener;\r
-import javax.swing.event.TableModelEvent;\r
-import javax.swing.event.TableModelListener;\r
-import javax.swing.table.DefaultTableModel;\r
-import javax.swing.table.TableColumn;\r
-import javax.swing.table.TableModel;\r
-\r
-import org.tianocore.PackageSurfaceAreaDocument;\r
-\r
-import org.tianocore.frameworkwizard.common.DataValidation;\r
-import org.tianocore.frameworkwizard.common.Tools;\r
-import org.tianocore.frameworkwizard.common.Identifications.OpeningPackageType;\r
-import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
-import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
-import javax.swing.JScrollPane;\r
-import javax.swing.JTable;\r
-import javax.swing.JCheckBox;\r
-import org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList;\r
-import org.tianocore.frameworkwizard.platform.ui.ListEditor;\r
-import org.tianocore.frameworkwizard.platform.ui.LongTextEditor;\r
-\r
-import java.awt.Rectangle;\r
-import java.util.Vector;\r
-\r
-/**\r
- GUI for create PCD definition elements of spd file\r
- \r
- @since PackageEditor 1.0\r
-**/\r
-public class SpdPcdDefs extends IInternalFrame implements TableModelListener{\r
-\r
- /**\r
- * \r
- */\r
- private static final long serialVersionUID = 1L;\r
-\r
- private JFrame topFrame;\r
- \r
- private JPanel jContentPane = null; \r
-\r
- private JLabel jLabelItemType = null;\r
-\r
- private JLabel jLabelC_Name = null;\r
-\r
- private JTextField jTextFieldC_Name = null;\r
-\r
- private JLabel jLabelToken = null;\r
-\r
- private JTextField jTextFieldToken = null;\r
-\r
- private JLabel jLabelDataType = null;\r
-\r
- private JButton jButtonOk = null;\r
-\r
- private JButton jButtonCancel = null;\r
-\r
- private JComboBox jComboBoxDataType = null;\r
-\r
- private SpdFileContents sfc = null;\r
- \r
- private OpeningPackageType docConsole = null;\r
-\r
- private StarLabel jStarLabel2 = null;\r
-\r
- private StarLabel jStarLabel3 = null;\r
-\r
- private StarLabel jStarLabel4 = null;\r
-\r
- private StarLabel jStarLabel = null;\r
-\r
- private StarLabel jStarLabel1 = null;\r
-\r
- private JLabel jLabelTokenSpace = null;\r
-\r
- private JComboBox jComboBoxTsGuid = null;\r
-\r
- private JLabel jLabelVarVal = null;\r
-\r
- private JTextField jTextFieldHelp = null;\r
-\r
- private JLabel jLabelDefVal = null;\r
-\r
- private JTextField jTextFieldDefaultValue = null;\r
-\r
- private JButton jButtonAdd = null;\r
- \r
- private CheckboxTableModel model = null;\r
-\r
- private JButton jButtonRemove = null;\r
-\r
- private JButton jButtonClearAll = null;\r
-\r
- private JScrollPane jScrollPane = null;\r
-\r
- private JTable jTable = null;\r
- \r
- private JScrollPane topScrollPane = null; // @jve:decl-index=0:visual-constraint="390,10"\r
- \r
- private int selectedRow = -1;\r
-\r
- private StarLabel starLabel = null;\r
-\r
- private JCheckBox jCheckBoxFeatureFlag = null;\r
-\r
- private JCheckBox jCheckBoxFixedAtBuild = null;\r
-\r
- private JCheckBox jCheckBoxPatchInMod = null;\r
-\r
- private JCheckBox jCheckBoxDyn = null;\r
-\r
- private JCheckBox jCheckBoxDynEx = null;\r
-\r
- private JScrollPane jScrollPaneArch = null;\r
-\r
- private ICheckBoxList iCheckBoxListArch = null;\r
-\r
- private JScrollPane jScrollPaneMod = null;\r
-\r
- private ICheckBoxList iCheckBoxListMod = null;\r
-\r
- private JLabel jLabelSupMod = null;\r
-\r
- private JLabel jLabelSupArch = null;\r
- \r
- private final int pcdCNameMinWidth = 200;\r
- private final int pcdTokenMinWidth = 100;\r
- private final int pcdTokenSpaceMinWidth = 200;\r
- private final int datumTypeMinWidth = 80;\r
- private final int defaultValueMinWidth = 100;\r
- private final int helpTextMinWidth = 200;\r
- private final int usageMinWidth = 60;\r
- private final int supArchMinWidth = 200;\r
- private final int supModMinWidth = 200;\r
- \r
-// private Object boolModifyLock = new Object();\r
-// private boolean exclusiveUsage = false;\r
-\r
- /**\r
- This method initializes this\r
- \r
- **/\r
- private void initialize() {\r
- this.setTitle("PCD Declarations");\r
- this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
-\r
- int xPos = jCheckBoxPatchInMod.getX() + jCheckBoxPatchInMod.getWidth();\r
- jCheckBoxFixedAtBuild.setLocation(xPos,133);\r
- \r
- xPos = jCheckBoxFeatureFlag.getX() + jCheckBoxFeatureFlag.getWidth();\r
- jCheckBoxDyn.setLocation(xPos,161);\r
- \r
- xPos = jCheckBoxDyn.getX() + jCheckBoxDyn.getWidth();\r
- jCheckBoxDynEx.setLocation(xPos,161);\r
- \r
- }\r
-\r
- /**\r
- This method initializes jTextFieldC_Name \r
- \r
- @return javax.swing.JTextField \r
- **/\r
- private JTextField getJTextFieldC_Name() {\r
- if (jTextFieldC_Name == null) {\r
- jTextFieldC_Name = new JTextField();\r
- jTextFieldC_Name.setBounds(new java.awt.Rectangle(156,9,317,20));\r
- jTextFieldC_Name.setPreferredSize(new java.awt.Dimension(315,20));\r
- }\r
- return jTextFieldC_Name;\r
- }\r
-\r
- /**\r
- This method initializes jTextFieldToken \r
- \r
- @return javax.swing.JTextField \r
- **/\r
- private JTextField getJTextFieldToken() {\r
- if (jTextFieldToken == null) {\r
- jTextFieldToken = new JTextField();\r
- jTextFieldToken.setBounds(new java.awt.Rectangle(156,33,317,20));\r
- jTextFieldToken.setPreferredSize(new java.awt.Dimension(315,20));\r
- }\r
- return jTextFieldToken;\r
- }\r
-\r
- /**\r
- This method initializes jButtonOk \r
- \r
- @return javax.swing.JButton \r
- **/\r
- private JButton getJButtonOk() {\r
- if (jButtonOk == null) {\r
- jButtonOk = new JButton();\r
- jButtonOk.setText("OK");\r
- jButtonOk.setBounds(new java.awt.Rectangle(279,276,90,20));\r
- jButtonOk.setVisible(false);\r
- jButtonOk.addActionListener(this);\r
- }\r
- return jButtonOk;\r
- }\r
-\r
- /**\r
- This method initializes jButtonCancel \r
- \r
- @return javax.swing.JButton \r
- **/\r
- private JButton getJButtonCancel() {\r
- if (jButtonCancel == null) {\r
- jButtonCancel = new JButton();\r
- jButtonCancel.setText("Cancel");\r
- jButtonCancel.setBounds(new java.awt.Rectangle(389,276,82,20));\r
- jButtonCancel.setVisible(false);\r
- jButtonCancel.addActionListener(this);\r
- }\r
- return jButtonCancel;\r
- }\r
-\r
- /**\r
- This method initializes jComboBoxDataType \r
- \r
- @return javax.swing.JComboBox \r
- **/\r
- private JComboBox getJComboBoxDataType() {\r
- if (jComboBoxDataType == null) {\r
- jComboBoxDataType = new JComboBox();\r
- jComboBoxDataType.setBounds(new java.awt.Rectangle(156,84,110,20));\r
- }\r
- return jComboBoxDataType;\r
- }\r
-\r
- /**\r
- This is the default constructor\r
- **/\r
- public SpdPcdDefs(JFrame frame) {\r
- super();\r
- init();\r
- initialize();\r
- topFrame = frame;\r
- }\r
-\r
- public SpdPcdDefs(PackageSurfaceAreaDocument.PackageSurfaceArea inPsa, JFrame frame) {\r
- this(frame);\r
- sfc = new SpdFileContents(inPsa);\r
- init(sfc);\r
- }\r
- \r
- public SpdPcdDefs(OpeningPackageType opt, JFrame frame) {\r
- this(opt.getXmlSpd(), frame);\r
- docConsole = opt;\r
- }\r
- /**\r
- This method initializes this\r
- \r
- @return void\r
- **/\r
- private void init() {\r
- this.setSize(500, 650);\r
- this.setContentPane(getJContentPane());\r
- this.addInternalFrameListener(new InternalFrameAdapter(){\r
- public void internalFrameDeactivated(InternalFrameEvent e){\r
- if (jTable.isEditing()) {\r
- jTable.getCellEditor().stopCellEditing();\r
- }\r
- }\r
- });\r
- \r
- this.setVisible(true);\r
- }\r
-\r
- private void init(SpdFileContents sfc){\r
- \r
- if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
- JOptionPane.showMessageDialog(topFrame, "This is a read-only package. You will not be able to edit contents in table.");\r
- }\r
- initFrame();\r
- \r
- if (sfc.getSpdPcdDefinitionCount() == 0) {\r
- return ;\r
- }\r
- String[][] saa = new String[sfc.getSpdPcdDefinitionCount()][8];\r
- String[][] usage = new String[sfc.getSpdPcdDefinitionCount()][5];\r
- Object[] rowData = new Object[13];\r
- sfc.getSpdPcdDefinitions(saa, usage);\r
- int i = 0;\r
- while (i < saa.length) {\r
- \r
- for (int k = 0; k < 6; ++k) {\r
- rowData[k] = saa[i][k];\r
- }\r
- for (int m = 6; m < 11; ++m) {\r
- rowData[m] = new Boolean("false");\r
- }\r
- int j = 0;\r
- while (j < 5) {\r
- if (usage[i][j] == null || usage[i][j].length()==0){\r
- ++j;\r
- continue;\r
- }\r
- if (usage[i][j].equals("FEATURE_FLAG")){\r
- rowData[6] = new Boolean("true");\r
- }\r
- if (usage[i][j].equals("FIXED_AT_BUILD")){\r
- rowData[7] = new Boolean("true");\r
- }\r
- if (usage[i][j].equals("PATCHABLE_IN_MODULE")){\r
- rowData[8] = new Boolean("true");\r
- }\r
- if (usage[i][j].equals("DYNAMIC")){\r
- rowData[9] = new Boolean("true");\r
- }\r
- if (usage[i][j].equals("DYNAMIC_EX")){\r
- rowData[10] = new Boolean("true");\r
- }\r
- \r
- ++j;\r
- }\r
- \r
- rowData[11] = saa[i][6];\r
- rowData[12] = saa[i][7];\r
- \r
- model.addRow(rowData);\r
- \r
- i++;\r
- }\r
- \r
- }\r
- \r
- private JScrollPane getJContentPane(){\r
- if (topScrollPane == null){\r
- topScrollPane = new JScrollPane();\r
- topScrollPane.setSize(new java.awt.Dimension(482,451));\r
- topScrollPane.setViewportView(getJContentPane1());\r
- }\r
- return topScrollPane;\r
- }\r
- private JPanel getJContentPane1() {\r
- if (jContentPane == null) { \r
- \r
- jLabelSupArch = new JLabel();\r
- jLabelSupArch.setBounds(new java.awt.Rectangle(241,192,89,16));\r
- jLabelSupArch.setText("Supported Architectures");\r
- jLabelSupArch.setEnabled(true);\r
- FontMetrics fm = jLabelSupArch.getFontMetrics(jLabelSupArch.getFont());\r
- jLabelSupArch.setSize(fm.stringWidth(jLabelSupArch.getText()) + 10, 20);\r
- jLabelSupMod = new JLabel();\r
- jLabelSupMod.setBounds(new java.awt.Rectangle(15,193,103,16));\r
- jLabelSupMod.setText("Supported Module types");\r
- jLabelSupMod.setEnabled(true);\r
- fm = jLabelSupMod.getFontMetrics(jLabelSupMod.getFont());\r
- jLabelSupMod.setSize(fm.stringWidth(jLabelSupMod.getText()) + 10, 20);\r
- starLabel = new StarLabel();\r
- starLabel.setBounds(new java.awt.Rectangle(2,134,10,20));\r
- jLabelDefVal = new JLabel();\r
- jLabelDefVal.setBounds(new java.awt.Rectangle(277,84,80,20));\r
- jLabelDefVal.setText("Default Value");\r
- fm = jLabelDefVal.getFontMetrics(jLabelDefVal.getFont());\r
- jLabelDefVal.setSize(fm.stringWidth(jLabelDefVal.getText()) + 10, 20);\r
- jLabelVarVal = new JLabel();\r
- jLabelVarVal.setBounds(new java.awt.Rectangle(11,133,100,20));\r
- jLabelVarVal.setText("Valid Usage");\r
- jLabelC_Name = new JLabel();\r
- jLabelC_Name.setText("C Name");\r
- jLabelC_Name.setBounds(new java.awt.Rectangle(11,9,140,20));\r
- jLabelTokenSpace = new JLabel();\r
- jLabelTokenSpace.setBounds(new java.awt.Rectangle(11,58,140,20));\r
- jLabelTokenSpace.setText("Token Space");\r
- jLabelDataType = new JLabel();\r
- jLabelDataType.setText("Data Type");\r
- jLabelDataType.setBounds(new java.awt.Rectangle(11,83,140,20));\r
- jLabelToken = new JLabel();\r
- jLabelToken.setText("Token Number");\r
- jLabelToken.setBounds(new java.awt.Rectangle(11,33,140,20));\r
- jLabelItemType = new JLabel();\r
- jLabelItemType.setText("Help Text");\r
- jLabelItemType.setBounds(new java.awt.Rectangle(11,108,140,20));\r
- \r
- \r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(null);\r
- jContentPane.setPreferredSize(new java.awt.Dimension(479,375));\r
- \r
- jContentPane.add(jLabelItemType, null);\r
- jContentPane.add(jLabelC_Name, null);\r
- jContentPane.add(jLabelTokenSpace, null);\r
- jContentPane.add(getJComboBoxTsGuid(), null);\r
- jContentPane.add(jLabelVarVal, null);\r
- jContentPane.add(getJTextFieldC_Name(), null);\r
- jContentPane.add(jLabelToken, null);\r
- jContentPane.add(getJTextFieldToken(), null);\r
- jContentPane.add(jLabelDataType, null);\r
- jContentPane.add(getJButtonOk(), null);\r
- jContentPane.add(getJButtonCancel(), null);\r
- jContentPane.add(getJComboBoxDataType(), null);\r
- \r
- jStarLabel = new StarLabel();\r
- jStarLabel1 = new StarLabel();\r
- jStarLabel1.setBounds(new java.awt.Rectangle(2,8,10,20));\r
- jStarLabel2 = new StarLabel();\r
- jStarLabel3 = new StarLabel();\r
- jStarLabel4 = new StarLabel();\r
- jStarLabel.setLocation(new java.awt.Point(2,84));\r
- jStarLabel4.setLocation(new java.awt.Point(2, 109));\r
- jStarLabel2.setLocation(new java.awt.Point(2,33));\r
- jStarLabel3.setLocation(new java.awt.Point(2, 58));\r
- jStarLabel3.setSize(new java.awt.Dimension(8,20));\r
- jContentPane.add(jStarLabel2, null);\r
- jContentPane.add(jStarLabel3, null);\r
- jContentPane.add(jStarLabel, null);\r
- jContentPane.add(jStarLabel1, null);\r
- jContentPane.add(jStarLabel4, null);\r
- jContentPane.add(getJTextFieldHelp(), null);\r
- jContentPane.add(jLabelDefVal, null);\r
- jContentPane.add(getJTextFieldDefaultValue(), null);\r
- jContentPane.add(getJButtonAdd(), null);\r
- jContentPane.add(getJButtonRemove(), null);\r
- jContentPane.add(getJButtonClearAll(), null);\r
- jContentPane.add(getJScrollPane(), null);\r
- jContentPane.add(starLabel, null);\r
- jContentPane.add(getJCheckBoxFeatureFlag(), null);\r
- jContentPane.add(getJCheckBoxFixedAtBuild(), null);\r
- jContentPane.add(getJCheckBoxPatchInMod(), null);\r
- jContentPane.add(getJCheckBoxDyn(), null);\r
- jContentPane.add(getJCheckBoxDynEx(), null);\r
- jContentPane.add(getJScrollPaneArch(), null);\r
- jContentPane.add(getJScrollPaneMod(), null);\r
- jContentPane.add(jLabelSupMod, null);\r
- jContentPane.add(jLabelSupArch, null);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- /**\r
- This method initializes comboboxes \r
- jContentPane.add(jLabelTokenSpace, null);\r
- \r
- **/\r
- private void initFrame() {\r
-\r
- jComboBoxDataType.addItem("UINT8");\r
- jComboBoxDataType.addItem("UINT16");\r
- jComboBoxDataType.addItem("UINT32");\r
- jComboBoxDataType.addItem("UINT64");\r
- jComboBoxDataType.addItem("VOID*");\r
- jComboBoxDataType.addItem("BOOLEAN");\r
- jComboBoxDataType.setSelectedIndex(0);\r
- \r
- Vector<String> vGuidCName = new Vector<String>();\r
- sfc.getSpdGuidDeclWithType(vGuidCName, "TOKEN_SPACE_GUID");\r
- for (int i = 0; i < vGuidCName.size(); ++i) {\r
- jComboBoxTsGuid.addItem(vGuidCName.get(i));\r
- }\r
- \r
- boolean editable = true;\r
- if (sfc.getSpdPkgDefsRdOnly().equals("true")) {\r
- editable = false;\r
- }\r
- \r
- jButtonAdd.setEnabled(editable);\r
- jButtonRemove.setEnabled(editable);\r
- jButtonClearAll.setEnabled(editable);\r
- jTable.setEnabled(editable);\r
- }\r
-\r
- public void actionPerformed(ActionEvent arg0) {\r
- \r
- \r
- if (arg0.getSource() == jButtonOk) {\r
- this.save();\r
- this.dispose();\r
- }\r
- if (arg0.getSource() == jButtonCancel) {\r
- this.dispose();\r
- }\r
-\r
- if (arg0.getSource() == jButtonAdd) {\r
- //ToDo: check before add\r
- \r
- boolean[] b = {jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(), jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected()};\r
- if (!checkValidUsage(b)) {\r
- return;\r
- }\r
- String archList = vectorToString(iCheckBoxListArch.getAllCheckedItemsString());\r
- if (archList.length() == 0) {\r
- archList = null;\r
- }\r
- String modTypeList = vectorToString(iCheckBoxListMod.getAllCheckedItemsString());\r
- if (modTypeList.length() == 0) {\r
- modTypeList = null;\r
- }\r
- Object[] row = {jTextFieldC_Name.getText(), jTextFieldToken.getText(),\r
- jComboBoxTsGuid.getSelectedItem(), jComboBoxDataType.getSelectedItem(), \r
- jTextFieldDefaultValue.getText(), jTextFieldHelp.getText(),\r
- jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(),\r
- jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected(),\r
- archList, modTypeList};\r
- try {\r
- if (!dataValidation(row)) {\r
- return;\r
- }\r
- \r
- if (tokenCNameExisted(jTextFieldToken.getText(), jTextFieldC_Name.getText())) {\r
- return;\r
- }\r
- } catch (Exception e) {\r
- JOptionPane.showMessageDialog(this, "Illegal Token:"+ e.getCause());\r
- return;\r
- }\r
- \r
- model.addRow(row);\r
- jTable.changeSelection(model.getRowCount()-1, 0, false, false);\r
- String usage = getValidUsage(jCheckBoxFeatureFlag.isSelected(), jCheckBoxFixedAtBuild.isSelected(), jCheckBoxPatchInMod.isSelected(), jCheckBoxDyn.isSelected(), jCheckBoxDynEx.isSelected());\r
- if (usage.length() == 0) {\r
- usage = null;\r
- }\r
- sfc.genSpdPcdDefinitions(row[0]+"", row[1]+"", row[3]+"", usage, row[2]+"", row[4]+"", row[5]+"", archList, modTypeList);\r
- docConsole.setSaved(false);\r
- }\r
- //\r
- // remove selected line\r
- //\r
- if (arg0.getSource() == jButtonRemove) {\r
- if (jTable.isEditing()){\r
- jTable.getCellEditor().stopCellEditing();\r
- }\r
- int rowSelected = selectedRow;\r
- if (rowSelected >= 0) {\r
- model.removeRow(rowSelected);\r
- sfc.removeSpdPcdDefinition(rowSelected);\r
- docConsole.setSaved(false);\r
- }\r
- }\r
-\r
- if (arg0.getSource() == jButtonClearAll) {\r
- if (model.getRowCount() == 0) {\r
- return;\r
- }\r
- model.setRowCount(0);\r
- sfc.removeSpdPcdDefinition();\r
- docConsole.setSaved(false);\r
- }\r
- \r
- }\r
-\r
- protected void save() {\r
- \r
- }\r
-\r
- /**\r
- * This method initializes jComboBoxTsGuid \r
- * \r
- * @return javax.swing.JComboBox \r
- */\r
- private JComboBox getJComboBoxTsGuid() {\r
- if (jComboBoxTsGuid == null) {\r
- jComboBoxTsGuid = new JComboBox();\r
- jComboBoxTsGuid.setBounds(new java.awt.Rectangle(156,58,315,20));\r
- \r
- }\r
- return jComboBoxTsGuid;\r
- }\r
-\r
- /**\r
- * This method initializes jTextField \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldHelp() {\r
- if (jTextFieldHelp == null) {\r
- jTextFieldHelp = new JTextField();\r
- jTextFieldHelp.setBounds(new java.awt.Rectangle(156,108,317,20));\r
- jTextFieldHelp.setPreferredSize(new java.awt.Dimension(315,20));\r
- }\r
- return jTextFieldHelp;\r
- }\r
-\r
- /**\r
- * This method initializes jTextFieldDefaultValue \r
- * \r
- * @return javax.swing.JTextField \r
- */\r
- private JTextField getJTextFieldDefaultValue() {\r
- if (jTextFieldDefaultValue == null) {\r
- jTextFieldDefaultValue = new JTextField();\r
- int xPos = jLabelDefVal.getX() + jLabelDefVal.getWidth();\r
- jTextFieldDefaultValue.setBounds(new java.awt.Rectangle(xPos,84,105,20));\r
- jTextFieldDefaultValue.setPreferredSize(new java.awt.Dimension(104,20));\r
- }\r
- return jTextFieldDefaultValue;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonAdd \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonAdd() {\r
- if (jButtonAdd == null) {\r
- jButtonAdd = new JButton();\r
- jButtonAdd.setBounds(new java.awt.Rectangle(195,277,71,20));\r
- jButtonAdd.setPreferredSize(new java.awt.Dimension(70,20));\r
- jButtonAdd.setText("Add");\r
- jButtonAdd.addActionListener(this);\r
- }\r
- return jButtonAdd; \r
- \r
- } \r
- \r
- /**\r
- * This method initializes jButtonRemove \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonRemove() {\r
- if (jButtonRemove == null) {\r
- jButtonRemove = new JButton();\r
- jButtonRemove.setBounds(new java.awt.Rectangle(278,277,81,20));\r
- jButtonRemove.setPreferredSize(new java.awt.Dimension(70,20));\r
- jButtonRemove.setText("Delete");\r
- jButtonRemove.addActionListener(this);\r
- }\r
- return jButtonRemove;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonClearAll \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonClearAll() {\r
- if (jButtonClearAll == null) {\r
- jButtonClearAll = new JButton();\r
- jButtonClearAll.setBounds(new java.awt.Rectangle(382,277,90,20));\r
- jButtonClearAll.setPreferredSize(new java.awt.Dimension(81,20));\r
- jButtonClearAll.setText("Clear All");\r
- jButtonClearAll.addActionListener(this);\r
- }\r
- return jButtonClearAll;\r
- }\r
-\r
- public void componentResized(ComponentEvent arg0) {\r
- int intPreferredWidth = 500;\r
- \r
- Tools.resizeComponentWidth(this.jTextFieldC_Name, this.getWidth(), intPreferredWidth);\r
- Tools.resizeComponentWidth(this.jTextFieldToken, this.getWidth(), intPreferredWidth);\r
- Tools.resizeComponentWidth(this.jComboBoxTsGuid, this.getWidth(), intPreferredWidth);\r
- Tools.resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
- Tools.resizeComponentWidth(this.jTextFieldHelp, this.getWidth(), intPreferredWidth);\r
- Tools.resizeComponentWidth(this.jScrollPane, this.getWidth(), intPreferredWidth);\r
- \r
- Tools.resizeComponentWidth(this.jTextFieldDefaultValue, this.getWidth(), intPreferredWidth);\r
-// relocateComponentX(this.jButtonClearAll, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
-// relocateComponentX(this.jButtonRemove, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
-// relocateComponentX(this.jButtonAdd, this.getWidth(), DataType.SPACE_TO_RIGHT_FOR_GENERATE_BUTTON);\r
- }\r
-\r
- /**\r
- * This method initializes jScrollPane \r
- * \r
- * @return javax.swing.JScrollPane \r
- */\r
- private JScrollPane getJScrollPane() {\r
- if (jScrollPane == null) {\r
- jScrollPane = new JScrollPane();\r
- jScrollPane.setBounds(new java.awt.Rectangle(5,301,1473,259));\r
- jScrollPane.setViewportView(getJTable());\r
- }\r
- return jScrollPane;\r
- }\r
-\r
- /**\r
- * This method initializes jTable \r
- * \r
- * @return javax.swing.JTable \r
- */\r
- private JTable getJTable() {\r
- if (jTable == null) {\r
- model = new CheckboxTableModel();\r
- jTable = new JTable(model);\r
- jTable.setRowHeight(20);\r
- jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);\r
- jTable.setSize(new Dimension(1000, 300));\r
- \r
- model.addColumn("C_Name");\r
- model.addColumn("Token");\r
- model.addColumn("TokenSpace");\r
- model.addColumn("DatumType");\r
- model.addColumn("DefaultValue");\r
- model.addColumn("HelpText");\r
- \r
- model.addColumn("FeatureFlag");\r
- model.addColumn("FixedAtBuild");\r
- model.addColumn("PatchableInModule");\r
- model.addColumn("Dynamic");\r
- model.addColumn("DynamicEx");\r
- model.addColumn("SupportedArch");\r
- model.addColumn("SupportedModule");\r
- \r
- TableColumn column = jTable.getColumnModel().getColumn(0);\r
- column.setMinWidth(this.pcdCNameMinWidth);\r
- column = jTable.getColumnModel().getColumn(1);\r
- column.setMinWidth(this.pcdTokenMinWidth);\r
- column = jTable.getColumnModel().getColumn(2);\r
- column.setMinWidth(this.pcdTokenSpaceMinWidth);\r
- column = jTable.getColumnModel().getColumn(3);\r
- column.setMinWidth(this.datumTypeMinWidth);\r
- column = jTable.getColumnModel().getColumn(4);\r
- column.setMinWidth(this.defaultValueMinWidth);\r
- column = jTable.getColumnModel().getColumn(5);\r
- column.setMinWidth(this.helpTextMinWidth);\r
- column = jTable.getColumnModel().getColumn(6);\r
- column.setMinWidth(this.usageMinWidth);\r
- column = jTable.getColumnModel().getColumn(7);\r
- column.setMinWidth(this.usageMinWidth);\r
- column = jTable.getColumnModel().getColumn(8);\r
- column.setMinWidth(this.usageMinWidth);\r
- column = jTable.getColumnModel().getColumn(9);\r
- column.setMinWidth(this.usageMinWidth);\r
- column = jTable.getColumnModel().getColumn(10);\r
- column.setMinWidth(this.usageMinWidth);\r
- column = jTable.getColumnModel().getColumn(11);\r
- column.setMinWidth(this.supArchMinWidth);\r
- column = jTable.getColumnModel().getColumn(12);\r
- column.setMinWidth(this.supModMinWidth);\r
- \r
- //ToDo: add a valid usage editor\r
- \r
- JComboBox jComboBoxDataType = new JComboBox();\r
- jComboBoxDataType.addItem("UINT8");\r
- jComboBoxDataType.addItem("UINT16");\r
- jComboBoxDataType.addItem("UINT32");\r
- jComboBoxDataType.addItem("UINT64");\r
- jComboBoxDataType.addItem("VOID*");\r
- jComboBoxDataType.addItem("BOOLEAN");\r
- TableColumn dataTypeColumn = jTable.getColumnModel().getColumn(3);\r
- dataTypeColumn.setCellEditor(new DefaultCellEditor(jComboBoxDataType));\r
- \r
- jTable.getColumnModel().getColumn(5).setCellEditor(new LongTextEditor(topFrame));\r
-\r
- Vector<String> vArch = new Vector<String>();\r
- vArch.add("IA32");\r
- vArch.add("X64");\r
- vArch.add("IPF");\r
- vArch.add("EBC");\r
- vArch.add("ARM");\r
- vArch.add("PPC");\r
- jTable.getColumnModel().getColumn(11).setCellEditor(new ListEditor(vArch, topFrame));\r
- \r
- Vector<String> vModule = new Vector<String>();\r
- vModule.add("BASE");\r
- vModule.add("SEC");\r
- vModule.add("PEI_CORE");\r
- vModule.add("PEIM");\r
- vModule.add("DXE_CORE");\r
- vModule.add("DXE_DRIVER");\r
- vModule.add("DXE_RUNTIME_DRIVER");\r
- vModule.add("DXE_SAL_DRIVER");\r
- vModule.add("DXE_SMM_DRIVER");\r
- vModule.add("UEFI_DRIVER");\r
- vModule.add("UEFI_APPLICATION");\r
- vModule.add("USER_DEFINED");\r
- jTable.getColumnModel().getColumn(12).setCellEditor(new ListEditor(vModule, topFrame));\r
- \r
- jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
- jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
- public void valueChanged(ListSelectionEvent e) {\r
- if (e.getValueIsAdjusting()){\r
- return;\r
- }\r
- ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
- if (lsm.isSelectionEmpty()) {\r
- return;\r
- }\r
- else{\r
- selectedRow = lsm.getMinSelectionIndex();\r
- }\r
- }\r
- });\r
- \r
- jTable.getModel().addTableModelListener(this);\r
- }\r
- return jTable;\r
- }\r
- \r
- public void tableChanged(TableModelEvent arg0) {\r
- // TODO Auto-generated method stub\r
- int row = arg0.getFirstRow();\r
- int column = arg0.getColumn();\r
- TableModel m = (TableModel)arg0.getSource();\r
- if (arg0.getType() == TableModelEvent.UPDATE){\r
- String[] sa = new String[9];\r
- sfc.getSpdPcdDeclaration(sa, row);\r
- Object cellData = m.getValueAt(row, column);\r
- if (column < 6) {\r
- \r
- if (cellData == null) {\r
- cellData = "";\r
- }\r
- if (cellData.equals(sa[column])) {\r
- return;\r
- }\r
- if (cellData.toString().length() == 0 && sa[column] == null) {\r
- return;\r
- }\r
- }\r
- \r
- String usage = getValidUsage(new Boolean(m.getValueAt(row, 6)+""), new Boolean(m.getValueAt(row, 7)+""), new Boolean(m.getValueAt(row, 8)+""), new Boolean(m.getValueAt(row, 9)+""), new Boolean(m.getValueAt(row, 10)+""));\r
- if (usage.length() == 0) {\r
- JOptionPane.showMessageDialog(this, "You must choose at least one usage for PCD entry.");\r
- return;\r
- }\r
-\r
- if (column <= 10 && column >= 6) {\r
- Vector<String> v = stringToVector(usage);\r
- if (compareTwoVectors(v, stringToVector(sa[6]))) {\r
- return;\r
- }\r
- if (v.contains("FEATURE_FLAG")/* && v.size() > 1 && !exclusiveUsage*/) {\r
- if (v.size() > 1) {\r
- JOptionPane.showMessageDialog(this, "Usage Feature Flag can NOT co-exist with others.");\r
- return;\r
- }\r
-// synchronized (boolModifyLock){\r
-// exclusiveUsage = true;\r
-// }\r
-// m.setValueAt(false, row, 7);\r
-// m.setValueAt(false, row, 8);\r
-// m.setValueAt(false, row, 9);\r
-// m.setValueAt(false, row, 10);\r
- else {\r
- m.setValueAt("BOOLEAN", row, 3);\r
- }\r
- \r
- }\r
- }\r
- \r
- if (column == 11) {\r
- if (cellData == null) {\r
- cellData = "";\r
- }\r
- if (cellData.equals(sa[7])) {\r
- return;\r
- }\r
- if (cellData.toString().length() == 0 && sa[7] == null) {\r
- return;\r
- }\r
- }\r
- \r
- if (column == 12) {\r
- if (cellData == null) {\r
- cellData = "";\r
- }\r
- if (cellData.equals(sa[8])) {\r
- return;\r
- }\r
- if (cellData.toString().length() == 0 && sa[8] == null) {\r
- return;\r
- }\r
- }\r
- String cName = m.getValueAt(row, 0) + "";\r
- String token = m.getValueAt(row, 1) + "";\r
- String ts = m.getValueAt(row, 2) + "";\r
- String dataType = m.getValueAt(row, 3) + "";\r
- String defaultVal = m.getValueAt(row, 4) + "";\r
- String help = m.getValueAt(row, 5) + "";\r
- \r
- \r
- String archList = null;\r
- if (m.getValueAt(row, 11) != null){\r
- archList = m.getValueAt(row, 11).toString();\r
- }\r
- String modTypeList = null;\r
- if (m.getValueAt(row, 12) != null) {\r
- modTypeList = m.getValueAt(row, 12).toString(); \r
- }\r
- \r
- Object[] o = {cName, token, ts, dataType, defaultVal, help};\r
- try {\r
- if (!dataValidation(o)){\r
- return;\r
- }\r
- }\r
- catch (Exception e) {\r
- JOptionPane.showMessageDialog(this, "Illegal Token:" + e.getCause());\r
- return;\r
- }\r
- docConsole.setSaved(false);\r
- sfc.updateSpdPcdDefinition(row, cName, token, dataType, usage, ts, defaultVal, help, archList, modTypeList);\r
- }\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBoxFeatureFlag() {\r
- if (jCheckBoxFeatureFlag == null) {\r
- jCheckBoxFeatureFlag = new JCheckBox();\r
- jCheckBoxFeatureFlag.setBounds(new java.awt.Rectangle(156,161,100,21));\r
- jCheckBoxFeatureFlag.setText("Feature Flag");\r
- FontMetrics fm = jCheckBoxFeatureFlag.getFontMetrics(jCheckBoxFeatureFlag.getFont());\r
- jCheckBoxFeatureFlag.setSize(fm.stringWidth(jCheckBoxFeatureFlag.getText()) + 30, 20);\r
- jCheckBoxFeatureFlag.addItemListener(new java.awt.event.ItemListener() {\r
- public void itemStateChanged(java.awt.event.ItemEvent e) {\r
- if (jCheckBoxFeatureFlag.isSelected()) {\r
- jCheckBoxPatchInMod.setSelected(false);\r
- jCheckBoxFixedAtBuild.setSelected(false);\r
- jCheckBoxDyn.setSelected(false);\r
- jCheckBoxDynEx.setSelected(false);\r
- jComboBoxDataType.setSelectedItem("BOOLEAN");\r
- }\r
- }\r
- });\r
- }\r
- return jCheckBoxFeatureFlag;\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox1 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBoxFixedAtBuild() {\r
- if (jCheckBoxFixedAtBuild == null) {\r
- jCheckBoxFixedAtBuild = new JCheckBox();\r
- \r
- jCheckBoxFixedAtBuild.setText("Fixed at Build");\r
- FontMetrics fm = jCheckBoxFixedAtBuild.getFontMetrics(jCheckBoxFixedAtBuild.getFont());\r
- jCheckBoxFixedAtBuild.setSize(fm.stringWidth(jCheckBoxFixedAtBuild.getText()) + 30, 20);\r
- jCheckBoxFixedAtBuild.addItemListener(new java.awt.event.ItemListener() {\r
- public void itemStateChanged(java.awt.event.ItemEvent e) {\r
- if (jCheckBoxFixedAtBuild.isSelected()) {\r
- jCheckBoxFeatureFlag.setSelected(false);\r
- }\r
- }\r
- });\r
- }\r
- return jCheckBoxFixedAtBuild;\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox2 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBoxPatchInMod() {\r
- if (jCheckBoxPatchInMod == null) {\r
- jCheckBoxPatchInMod = new JCheckBox();\r
- \r
- jCheckBoxPatchInMod.setBounds(new java.awt.Rectangle(156,133,154,20));\r
- jCheckBoxPatchInMod.setText("Patchable in Module");\r
- FontMetrics fm = jCheckBoxPatchInMod.getFontMetrics(jCheckBoxPatchInMod.getFont());\r
- jCheckBoxPatchInMod.setSize(fm.stringWidth(jCheckBoxPatchInMod.getText()) + 30, 20);\r
- jCheckBoxPatchInMod.addItemListener(new java.awt.event.ItemListener() {\r
- public void itemStateChanged(java.awt.event.ItemEvent e) {\r
- if (jCheckBoxPatchInMod.isSelected()) {\r
- jCheckBoxFeatureFlag.setSelected(false);\r
- }\r
- }\r
- });\r
- }\r
- return jCheckBoxPatchInMod;\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox3 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBoxDyn() {\r
- if (jCheckBoxDyn == null) {\r
- jCheckBoxDyn = new JCheckBox();\r
- \r
- jCheckBoxDyn.setText("Dynamic");\r
- FontMetrics fm = jCheckBoxDyn.getFontMetrics(jCheckBoxDyn.getFont());\r
- jCheckBoxDyn.setSize(fm.stringWidth(jCheckBoxDyn.getText()) + 30, 20);\r
- jCheckBoxDyn.addItemListener(new java.awt.event.ItemListener() {\r
- public void itemStateChanged(java.awt.event.ItemEvent e) {\r
- if (jCheckBoxDyn.isSelected()) {\r
- jCheckBoxFeatureFlag.setSelected(false);\r
- }\r
- }\r
- });\r
- }\r
- return jCheckBoxDyn;\r
- }\r
-\r
- /**\r
- * This method initializes jCheckBox4 \r
- * \r
- * @return javax.swing.JCheckBox \r
- */\r
- private JCheckBox getJCheckBoxDynEx() {\r
- if (jCheckBoxDynEx == null) {\r
- jCheckBoxDynEx = new JCheckBox();\r
- \r
- jCheckBoxDynEx.setText("DynamicEx");\r
- FontMetrics fm = jCheckBoxDynEx.getFontMetrics(jCheckBoxDynEx.getFont());\r
- jCheckBoxDynEx.setSize(fm.stringWidth(jCheckBoxDynEx.getText()) + 30, 20);\r
- jCheckBoxDynEx.addItemListener(new java.awt.event.ItemListener() {\r
- public void itemStateChanged(java.awt.event.ItemEvent e) {\r
- if (jCheckBoxDynEx.isSelected()) {\r
- jCheckBoxFeatureFlag.setSelected(false);\r
- }\r
- }\r
- });\r
- }\r
- return jCheckBoxDynEx;\r
- }\r
- \r
- private String getValidUsage(boolean ff, boolean fab, boolean pim, boolean d, boolean de) {\r
- String usage = "";\r
- if (ff){\r
- usage += "FEATURE_FLAG ";\r
- }\r
- if (fab){\r
- usage += "FIXED_AT_BUILD ";\r
- }\r
- if (pim){\r
- usage += "PATCHABLE_IN_MODULE ";\r
- }\r
- if (d){\r
- usage += "DYNAMIC ";\r
- }\r
- if (de){\r
- usage += "DYNAMIC_EX ";\r
- }\r
- \r
- return usage.trim();\r
- }\r
- \r
- private boolean tokenCNameExisted(String token, String cName) throws Exception{\r
- Long inputToken = Long.decode(token);\r
- \r
- for (int i = 0; i < model.getRowCount(); ++i) {\r
- if (model.getValueAt(i, 0).equals(cName)) {\r
- JOptionPane.showMessageDialog(this, "C_Name already existed in table.");\r
- return true;\r
- }\r
- if (model.getValueAt(i, 1).equals(token)) {\r
- JOptionPane.showMessageDialog(this, "Token already existed in table.");\r
- return true;\r
- }\r
- Long tokenValue = Long.decode(model.getValueAt(i, 1)+"");\r
- if (tokenValue.equals(inputToken)) {\r
- JOptionPane.showMessageDialog(this, "Same token value already existed in table.");\r
- return true;\r
- }\r
- \r
- }\r
- return false;\r
- }\r
- \r
- private boolean checkValidUsage(boolean[] b) {\r
- if (!(b[0] || b[1] || b[2] || b[3] || b[4])){\r
- JOptionPane.showMessageDialog(this, "You must specify at least one usage.");\r
- return false;\r
- }\r
- return true;\r
- }\r
- private boolean dataValidation(Object[] row) throws Exception{\r
- \r
- if (!DataValidation.isC_NameType(row[0].toString())) {\r
- JOptionPane.showMessageDialog(this, "C_Name is NOT C_NameType.");\r
- return false;\r
- }\r
- if (!DataValidation.isHexDoubleWordDataType(row[1].toString()) && \r
- !DataValidation.isLongInt(row[1].toString(), 1, Long.MAX_VALUE)) {\r
- JOptionPane.showMessageDialog(this, "Token is NOT correct.");\r
- return false;\r
- }\r
- if (!DataValidation.isC_NameType(row[2].toString())) {\r
- JOptionPane.showMessageDialog(this, "Token Space is NOT C_NameType");\r
- return false;\r
- }\r
- if (row[5].toString().length() == 0) {\r
- JOptionPane.showMessageDialog(this, "HelpText could NOT be empty.");\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- /**\r
- * This method initializes jScrollPane1 \r
- * \r
- * @return javax.swing.JScrollPane \r
- */\r
- private JScrollPane getJScrollPaneArch() {\r
- if (jScrollPaneArch == null) {\r
- jScrollPaneArch = new JScrollPane();\r
- jScrollPaneArch.setBounds(new java.awt.Rectangle(242,213,188,54));\r
- jScrollPaneArch.setViewportView(getICheckBoxListArch());\r
- jScrollPaneArch.setPreferredSize(new Dimension(188, 74));\r
- }\r
- return jScrollPaneArch;\r
- }\r
-\r
- /**\r
- * This method initializes iCheckBoxList \r
- * \r
- * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
- */\r
- private ICheckBoxList getICheckBoxListArch() {\r
- if (iCheckBoxListArch == null) {\r
- iCheckBoxListArch = new ICheckBoxList();\r
- iCheckBoxListArch.setBounds(new Rectangle(197, 142, 188, 74));\r
- Vector<String> v = new Vector<String>();\r
- v.add("IA32");\r
- v.add("X64");\r
- v.add("IPF");\r
- v.add("EBC");\r
- v.add("ARM");\r
- v.add("PPC");\r
- iCheckBoxListArch.setAllItems(v);\r
- }\r
- return iCheckBoxListArch;\r
- }\r
-\r
- /**\r
- * This method initializes jScrollPane2 \r
- * \r
- * @return javax.swing.JScrollPane \r
- */\r
- private JScrollPane getJScrollPaneMod() {\r
- if (jScrollPaneMod == null) {\r
- jScrollPaneMod = new JScrollPane();\r
- jScrollPaneMod.setBounds(new java.awt.Rectangle(15,213,199,55));\r
- jScrollPaneMod.setViewportView(getICheckBoxListMod());\r
- jScrollPaneMod.setPreferredSize(new Dimension(170, 74));\r
- }\r
- return jScrollPaneMod;\r
- }\r
-\r
- /**\r
- * This method initializes iCheckBoxList1 \r
- * \r
- * @return org.tianocore.frameworkwizard.common.ui.iCheckBoxList.ICheckBoxList \r
- */\r
- private ICheckBoxList getICheckBoxListMod() {\r
- if (iCheckBoxListMod == null) {\r
- iCheckBoxListMod = new ICheckBoxList();\r
- iCheckBoxListMod.setBounds(new Rectangle(14, 142, 170, 74));\r
- Vector<String> v = new Vector<String>();\r
- v.add("BASE");\r
- v.add("SEC");\r
- v.add("PEI_CORE");\r
- v.add("PEIM");\r
- v.add("DXE_CORE");\r
- v.add("DXE_DRIVER");\r
- v.add("DXE_RUNTIME_DRIVER");\r
- v.add("DXE_SAL_DRIVER");\r
- v.add("DXE_SMM_DRIVER");\r
- v.add("UEFI_DRIVER");\r
- v.add("UEFI_APPLICATION");\r
- v.add("USER_DEFINED");\r
- iCheckBoxListMod.setAllItems(v);\r
- }\r
- return iCheckBoxListMod;\r
- }\r
- \r
- protected String vectorToString(Vector<String> v) {\r
- if (v == null) {\r
- return null;\r
- }\r
- String s = " ";\r
- for (int i = 0; i < v.size(); ++i) {\r
- s += v.get(i);\r
- s += " ";\r
- }\r
- return s.trim();\r
- }\r
- \r
- protected Vector<String> stringToVector(String s){\r
- Vector<String> v = new Vector<String>();\r
- if (s == null) {\r
- return v;\r
- }\r
- String[] sArray = s.split(" ");\r
- \r
- for (int i = 0; i < sArray.length; ++i) {\r
- v.add(sArray[i]);\r
- }\r
- return v;\r
- }\r
- \r
- private boolean compareTwoVectors(Vector v1, Vector v2) {\r
- if (v1.size() != v2.size()) {\r
- return false;\r
- }\r
- for (int i = 0; i < v1.size(); ++i) {\r
- if (!v2.contains(v1.get(i))) {\r
- return false;\r
- }\r
- }\r
- return true;\r
- }\r
-} // @jve:decl-index=0:visual-constraint="22,11"\r
-\r
-class CheckboxTableModel extends DefaultTableModel {\r
- /**\r
- * \r
- */\r
- private static final long serialVersionUID = 1L;\r
-\r
- public Class<?> getColumnClass (int c) {\r
- if (getValueAt(0, c) != null){\r
- return getValueAt(0, c).getClass();\r
- }\r
- return String.class;\r
- }\r
-}\r