\r
import javax.swing.AbstractAction;\r
import javax.swing.DefaultCellEditor;\r
-import javax.swing.JComponent;\r
import javax.swing.JFileChooser;\r
import javax.swing.JFrame;\r
import javax.swing.JOptionPane;\r
import javax.swing.ListSelectionModel;\r
\r
import org.tianocore.PlatformSurfaceAreaDocument;\r
+import org.tianocore.frameworkwizard.common.GlobalData;\r
import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
-\r
+import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
+import org.tianocore.frameworkwizard.platform.ui.FpdFrameworkModules;\r
+import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
\r
import java.awt.FlowLayout;\r
import java.awt.event.ActionEvent;\r
import java.io.BufferedReader;\r
import java.io.File;\r
import java.io.FileReader;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
import java.util.Iterator;\r
import java.util.LinkedHashMap;\r
import java.util.Map;\r
* \r
*/\r
private static final long serialVersionUID = 1L;\r
+ private final int startIndexOfDynamicTab = 2;\r
static JFrame frame;\r
private JPanel jContentPane = null;\r
private JPanel jPanelContentEast = null;\r
private JScrollPane jScrollPane = null;\r
private JTable jTableFvImageOpts = null;\r
private JButton jButtonUpdateFvImage = null;\r
- private JButton jButtonTest = null;\r
private JPanel jPanelFdfN = null;\r
private JPanel jPanelFdfS = null;\r
private JSplitPane jSplitPaneFdfC = null;\r
private JButton jButtonAddFv = null;\r
private JButton jButtonDelFv = null;\r
private JButton jButtonAddFvOptions = null;\r
+ private int tabIndexForFv = -1;\r
+ private int selectedRowInFvAdditionalTable = -1;\r
+ private String oldFvName = null;\r
\r
- private NonEditableTableModel nonEditableTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
- \r
- private JPanel jPanelModOrder = null;\r
- private JPanel jPanelModOrderN = null;\r
- private JPanel jPanelModOrderS = null;\r
- private JPanel jPanelModOrderC = null;\r
- private JScrollPane jScrollPaneModInFv = null;\r
- private JTable jTableModInFv = null;\r
- private JPanel jPanelController = null;\r
- private JScrollPane jScrollPaneFpdModules = null;\r
- private JTable jTableFpdModules = null;\r
- private JButton jButtonUp = null;\r
- private JButton jButtonInsert = null;\r
- private JButton jButtonRemove = null;\r
- private JButton jButtonDown = null;\r
- private JButton jButtonOk = null;\r
- private JButton jButtonCancel = null;\r
- \r
- /**\r
- * This method initializes jPanelModOrder \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelModOrder() {\r
-// if (jPanelModOrder == null) {\r
- jPanelModOrder = new JPanel();\r
- jPanelModOrder.setLayout(new BorderLayout());\r
- jPanelModOrder.add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH);\r
- jPanelModOrder.add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH);\r
- jPanelModOrder.add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER);\r
- jPanelModOrder.addComponentListener(new java.awt.event.ComponentAdapter() {\r
- public void componentShown(java.awt.event.ComponentEvent e) {\r
- System.out.println("componentShown()" + jTabbedPane.getTitleAt(jTabbedPane.getSelectedIndex())); // TODO Auto-generated Event stub componentShown()\r
- }\r
- });\r
-// }\r
- return jPanelModOrder;\r
- }\r
-\r
- /**\r
- * This method initializes jPanelModOrderN \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelModOrderN() {\r
-// if (jPanelModOrderN == null) {\r
- jPanelModOrderN = new JPanel();\r
-// }\r
- return jPanelModOrderN;\r
- }\r
-\r
- /**\r
- * This method initializes jPanelModOrderS \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelModOrderS() {\r
-// if (jPanelModOrderS == null) {\r
- FlowLayout flowLayout6 = new FlowLayout();\r
- flowLayout6.setAlignment(java.awt.FlowLayout.RIGHT);\r
- jPanelModOrderS = new JPanel();\r
- jPanelModOrderS.setLayout(flowLayout6);\r
- jPanelModOrderS.add(getJButtonOk(), null);\r
- jPanelModOrderS.add(getJButtonCancel(), null);\r
-// }\r
- return jPanelModOrderS;\r
- }\r
-\r
- /**\r
- * This method initializes jPanelModOrderC \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelModOrderC() {\r
-// if (jPanelModOrderC == null) {\r
- jPanelModOrderC = new JPanel();\r
- jPanelModOrderC.add(getJScrollPaneModInFv(), null);\r
- jPanelModOrderC.add(getJPanelController(), null);\r
- jPanelModOrderC.add(getJScrollPaneFpdModules(), null);\r
-// }\r
- return jPanelModOrderC;\r
- }\r
-\r
- /**\r
- * This method initializes jScrollPaneModInFv \r
- * \r
- * @return javax.swing.JScrollPane \r
- */\r
- private JScrollPane getJScrollPaneModInFv() {\r
-// if (jScrollPaneModInFv == null) {\r
- jScrollPaneModInFv = new JScrollPane();\r
- jScrollPaneModInFv.setPreferredSize(new java.awt.Dimension(150,500));\r
- jScrollPaneModInFv.setViewportView(getJTableModInFv());\r
-// }\r
- return jScrollPaneModInFv;\r
- }\r
-\r
- /**\r
- * This method initializes jTableModInFv \r
- * \r
- * @return javax.swing.JTable \r
- */\r
- private JTable getJTableModInFv() {\r
-// if (jTableModInFv == null) {\r
- NonEditableTableModel modInFvTableModel = new NonEditableTableModel();\r
- modInFvTableModel.addColumn("Module Orders in FV");\r
- jTableModInFv = new JTable(modInFvTableModel);\r
- jTableModInFv.setRowHeight(20);\r
-// }\r
- return jTableModInFv;\r
- }\r
-\r
- /**\r
- * This method initializes jPanelController \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelController() {\r
-// if (jPanelController == null) {\r
- FlowLayout flowLayout5 = new FlowLayout();\r
- flowLayout5.setVgap(50);\r
- flowLayout5.setHgap(50);\r
- jPanelController = new JPanel();\r
- jPanelController.setLayout(flowLayout5);\r
- jPanelController.setPreferredSize(new java.awt.Dimension(150,500));\r
- jPanelController.add(getJButtonUp(), null);\r
- jPanelController.add(getJButtonInsert(), null);\r
- jPanelController.add(getJButtonRemove(), null);\r
- jPanelController.add(getJButtonDown(), null);\r
-// }\r
- return jPanelController;\r
- }\r
-\r
- /**\r
- * This method initializes jScrollPaneFpdModules \r
- * \r
- * @return javax.swing.JScrollPane \r
- */\r
- private JScrollPane getJScrollPaneFpdModules() {\r
-// if (jScrollPaneFpdModules == null) {\r
- jScrollPaneFpdModules = new JScrollPane();\r
- jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(150,500));\r
- jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
-// }\r
- return jScrollPaneFpdModules;\r
- }\r
-\r
- /**\r
- * This method initializes jTableFpdModules \r
- * \r
- * @return javax.swing.JTable \r
- */\r
- private JTable getJTableFpdModules() {\r
-// if (jTableFpdModules == null) {\r
- NonEditableTableModel fpdModTableModel = new NonEditableTableModel();\r
- fpdModTableModel.addColumn("Modules in Platform");\r
- jTableFpdModules = new JTable(fpdModTableModel);\r
- jTableFpdModules.setRowHeight(20);\r
-// }\r
- return jTableFpdModules;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonUp \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonUp() {\r
-// if (jButtonUp == null) {\r
- jButtonUp = new JButton();\r
- jButtonUp.setPreferredSize(new java.awt.Dimension(60,20));\r
- jButtonUp.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));\r
- jButtonUp.setText("^");\r
-// }\r
- return jButtonUp;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonInsert \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonInsert() {\r
-// if (jButtonInsert == null) {\r
- jButtonInsert = new JButton();\r
- jButtonInsert.setText("<<");\r
- jButtonInsert.setPreferredSize(new java.awt.Dimension(60,20));\r
-// }\r
- return jButtonInsert;\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.setPreferredSize(new java.awt.Dimension(60,20));\r
- jButtonRemove.setText(">>");\r
-// }\r
- return jButtonRemove;\r
- }\r
-\r
- /**\r
- * This method initializes jButtonDown \r
- * \r
- * @return javax.swing.JButton \r
- */\r
- private JButton getJButtonDown() {\r
-// if (jButtonDown == null) {\r
- jButtonDown = new JButton();\r
- jButtonDown.setPreferredSize(new java.awt.Dimension(60,20));\r
- jButtonDown.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));\r
- jButtonDown.setText("v");\r
-// }\r
- return jButtonDown;\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.setPreferredSize(new java.awt.Dimension(80,20));\r
- jButtonOk.setText("Ok");\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.setPreferredSize(new java.awt.Dimension(80,20));\r
- jButtonCancel.setText("Cancel");\r
- jButtonCancel.addActionListener(new java.awt.event.ActionListener() {\r
- public void actionPerformed(java.awt.event.ActionEvent e) {\r
- getJTabbedPane().setSelectedIndex(0);\r
- }\r
- });\r
-// }\r
- return jButtonCancel;\r
- }\r
-\r
\r
public FpdFlash() {\r
super();\r
if (jTabbedPane == null) {\r
jTabbedPane = new JTabbedPane();\r
jTabbedPane.addTab("General", null, getJPanelFdf(), null);\r
- jTabbedPane.addTab("FV Parameters", null, getJPanelFvImages(), null);\r
+ jTabbedPane.addTab("Advanced", null, getJPanelFvImages(), null);\r
\r
}\r
return jTabbedPane;\r
// jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);\r
jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH);\r
jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER);\r
+ jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() {\r
+ public void componentShown(java.awt.event.ComponentEvent e) {\r
+ fvImageParaTableModel.setRowCount(0);\r
+ fvPropertyTableModel.setRowCount(0);\r
+ \r
+ if (ffc.getFvImagesFvImageCount() == 0) {\r
+ return;\r
+ }\r
+ String[][] saa = new String[ffc.getFvImagesFvImageCount()][2];\r
+ ffc.getFvImagesFvImages(saa);\r
+ \r
+ int i = 0;\r
+ while (i < saa.length) {\r
+ fvImageParaTableModel.addRow(saa[i]);\r
+ ++i;\r
+ }\r
+ \r
+ saa = new String[ffc.getFvImagesNameValueCount()][2];\r
+ ffc.getFvImagesNameValues(saa);\r
+ for (int m = 0; m < saa.length; ++m) {\r
+ fvPropertyTableModel.addRow(saa[m]);\r
+ }\r
+ }\r
+ });\r
\r
}\r
return jPanelFvImages;\r
\r
TableColumn typeCol = jTableFvInfo.getColumnModel().getColumn(1);\r
JComboBox cb = new JComboBox();\r
- cb.addItem("ValidImageNames");\r
+ cb.addItem("ImageName");\r
cb.addItem("Attributes");\r
cb.addItem("Options");\r
cb.addItem("Components");\r
}\r
else{\r
int selectedRow = lsm.getMinSelectionIndex();\r
+ if (fvImageParaTableModel.getValueAt(selectedRow, 1).equals("ImageName")) {\r
+ String[] fvNames = fvImageParaTableModel.getValueAt(selectedRow, 0).toString().split(" ");\r
+ for (int i = 0; i < fvNames.length; ++i) {\r
+ String[] row = {fvNames[i]};\r
+ fvImageNameTableModel.addRow(row);\r
+ }\r
+ return;\r
+ }\r
LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();\r
ffc.getFvImagesFvImageOptions(selectedRow, optionMap);\r
if (optionMap.size() > 0){\r
return;\r
}\r
\r
-// jLabel5.setEnabled(selected);\r
-// jTextField4.setEnabled(selected);\r
-// jLabel6.setEnabled(selected);\r
-// jTextField5.setEnabled(selected);\r
-// jButton7.setEnabled(selected);\r
-// jButton8.setEnabled(selected);\r
-\r
}\r
\r
});\r
jPanelFdf.add(getJPanelFdfN(), java.awt.BorderLayout.NORTH);\r
jPanelFdf.add(getJPanelFdfS(), java.awt.BorderLayout.SOUTH);\r
jPanelFdf.add(getJSplitPaneFdfC(), java.awt.BorderLayout.CENTER);\r
-// jPanelFdf.addComponentListener(new ComponentAdapter(){\r
-// public void componentShown(ComponentEvent e) {\r
+ jPanelFdf.addComponentListener(new ComponentAdapter(){\r
+ public void componentShown(ComponentEvent e) {\r
// if (ffc.getFlashDefinitionFile() != null) {\r
// jTextFieldFdf.setText(ffc.getFlashDefinitionFile());\r
+// initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText());\r
+// \r
// }\r
-// }\r
-// public void componentHidden(ComponentEvent e) {\r
-// if (jCheckBoxFdf.isSelected()) {\r
-// ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
-// }\r
-// }\r
-// });\r
+ }\r
+ public void componentHidden(ComponentEvent e) {\r
+ if (jCheckBoxFdf.isSelected()) {\r
+ ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
+ }\r
+ }\r
+ });\r
}\r
return jPanelFdf;\r
}\r
if (jTextFieldFdf == null) {\r
jTextFieldFdf = new JTextField();\r
jTextFieldFdf.setEnabled(false);\r
+ jTextFieldFdf.setEditable(false);\r
jTextFieldFdf.setPreferredSize(new Dimension(300, 20));\r
jTextFieldFdf.addFocusListener(new java.awt.event.FocusAdapter() {\r
public void focusLost(java.awt.event.FocusEvent e) {\r
jTextFieldFdf.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/'));\r
ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
docConsole.setSaved(false);\r
- Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
- getFvInfoFromFdf(filePath, vFvInfo);\r
- getFvInFdfTableModel().setRowCount(0);\r
- for (int j = 0; j < vFvInfo.size(); ++j) {\r
- FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
- String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
- getFvInFdfTableModel().addRow(row);\r
- }\r
+ initFvInFdfTable(filePath);\r
}\r
}\r
\r
}\r
return jButtonFdfBrowse;\r
}\r
+ \r
+ private void initFvAdditionalTable() {\r
+ \r
+ }\r
\r
+ private void initFvInFdfTable(String fdfPath){\r
+ Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
+ getFvInfoFromFdf(fdfPath, vFvInfo);\r
+ getFvInFdfTableModel().setRowCount(0);\r
+ for (int j = 0; j < vFvInfo.size(); ++j) {\r
+ FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
+ String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
+ getFvInFdfTableModel().addRow(row);\r
+ }\r
+\r
+ for (int k = 0; k < vFvInfo.size(); ++k) {\r
+ FvInfoFromFdf fvInfo = vFvInfo.get(k);\r
+ addTabForFv(fvInfo);\r
+ }\r
+ }\r
+ \r
+ private void addTabForFv (FvInfoFromFdf fvInfo) {\r
+ String fvName = fvInfo.getFvName();\r
+ String outputFile = fvInfo.getEfiFileName();\r
+ int index = jTabbedPane.indexOfTab(fvName);\r
+ if (index >= startIndexOfDynamicTab) {\r
+ return;\r
+ }\r
+ jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null);\r
+ }\r
/**\r
* This method initializes jTextField4 \r
* \r
return jButtonUpdateFvImage;\r
}\r
\r
- /**\r
- * This method initializes jButtonTest \r
- * \r
- * @return javax.swing.JButton \r
- */\r
// private JButton getJButtonTest() {\r
// if (jButtonTest == null) {\r
// jButtonTest = new JButton();\r
if (jButtonFvInFdfOptions == null) {\r
jButtonFvInFdfOptions = new JButton();\r
jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonFvInFdfOptions.setEnabled(false);\r
jButtonFvInFdfOptions.setText("Options");\r
jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() {\r
public void actionPerformed(java.awt.event.ActionEvent e) {\r
int selectedRow = jTableFvInFdf.getSelectedRow();\r
- if (selectedRow <= 0) {\r
+ if (selectedRow < 0) {\r
return;\r
}\r
- fvInFdfTableModel.moveRow(selectedRow, selectedRow, selectedRow - 1);\r
- jTableFvInFdf.changeSelection(selectedRow - 1, 0, false, false);\r
}\r
});\r
}\r
jTableFvAdditional.setRowHeight(20);\r
jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
jTableFvAdditional.setModel(getFvAddtionalTableModel());\r
+ \r
+ jTableFvAdditional.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
+ } else {\r
+ selectedRowInFvAdditionalTable = lsm.getMinSelectionIndex();\r
+ oldFvName = jTableFvAdditional.getValueAt(selectedRowInFvAdditionalTable, 0)+"";\r
+ }\r
+ }\r
+ });\r
+ \r
+ jTableFvAdditional.getModel().addTableModelListener(new TableModelListener() {\r
+ public void tableChanged(TableModelEvent arg0) {\r
+ // TODO Auto-generated method stub\r
+ int row = arg0.getFirstRow();\r
+ int col = arg0.getColumn();\r
+ TableModel m = (TableModel) arg0.getSource();\r
+ if (arg0.getType() == TableModelEvent.UPDATE) {\r
+ if (col == 0) {\r
+ String newFvName = m.getValueAt(row, 0) + "";\r
+ if (newFvName.equals(oldFvName)) {\r
+ return;\r
+ }\r
+ if (fvNameExists(newFvName)) {\r
+ JOptionPane.showMessageDialog(frame, "This FV already exists. Please choose another FV name.");\r
+ m.setValueAt(oldFvName, row, 0);\r
+ return;\r
+ }\r
+ \r
+ tabIndexForFv = jTabbedPane.indexOfTab(oldFvName);\r
+ if (tabIndexForFv >= startIndexOfDynamicTab) {\r
+ jTabbedPane.setTitleAt(tabIndexForFv, newFvName);\r
+ // change FvName in UserExtensions\r
+ ffc.updateBuildOptionsUserExtensions(oldFvName, newFvName);\r
+ // change FvBinding in ModuleSA\r
+ ffc.appendFvBindingFor(oldFvName, newFvName);\r
+ ffc.removeFvBindingAll(oldFvName);\r
+ // change FvImageNames in Flash\r
+ ffc.updateFvImageNameAll(oldFvName, newFvName);\r
+ \r
+ } else {\r
+ jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, ""));\r
+ // Add FvImageNames in Flash\r
+ String[] fvNames = {newFvName};\r
+ ffc.AddFvImageFvImageNames(fvNames);\r
+ }\r
+ \r
+ oldFvName = newFvName;\r
+ }\r
+ docConsole.setSaved(false);\r
+ }\r
+ }\r
+ });\r
}\r
return jTableFvAdditional;\r
}\r
+ \r
+ private boolean fvNameExists (String fvName) {\r
+ for (int i = 0; i < jTableFvInFdf.getRowCount(); ++i) {\r
+ if (fvInFdfTableModel.getValueAt(i, 0).equals(fvName)) {\r
+ return true;\r
+ }\r
+ }\r
+ for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) {\r
+ if (fvAddtionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
\r
/**\r
* This method initializes fvAddtionalTableModel \r
if (jButtonAddFv == null) {\r
jButtonAddFv = new JButton();\r
jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonAddFv.setEnabled(true);\r
jButtonAddFv.setText("New");\r
+ jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ if (jTableFvAdditional.isEditing()) {\r
+ jTableFvAdditional.getCellEditor().stopCellEditing();\r
+ }\r
+ String[] row = {"", "", ""};\r
+ fvAddtionalTableModel.addRow(row);\r
+ }\r
+ });\r
}\r
return jButtonAddFv;\r
}\r
if (jButtonDelFv == null) {\r
jButtonDelFv = new JButton();\r
jButtonDelFv.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonDelFv.setEnabled(false);\r
jButtonDelFv.setText("Delete");\r
+ jButtonDelFv.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()\r
+ }\r
+ });\r
}\r
return jButtonDelFv;\r
}\r
if (jButtonAddFvOptions == null) {\r
jButtonAddFvOptions = new JButton();\r
jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonAddFvOptions.setEnabled(false);\r
jButtonAddFvOptions.setText("Options");\r
+ jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()\r
+ }\r
+ });\r
}\r
return jButtonAddFvOptions;\r
}\r
-\r
- \r
-\r
- /**\r
- * This method initializes nonEditableTableModel \r
- * \r
- * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel \r
- */\r
- private NonEditableTableModel getNonEditableTableModel() {\r
- if (nonEditableTableModel == null) {\r
- nonEditableTableModel = new NonEditableTableModel();\r
- }\r
- return nonEditableTableModel;\r
- }\r
-\r
\r
/**\r
* @param args\r
}\r
\r
private void init(FpdFileContents ffc) {\r
- if (ffc.getFvImagesFvImageCount() == 0) {\r
- return;\r
- }\r
- String[][] saa = new String[ffc.getFvImagesFvImageCount()][2];\r
- ffc.getFvImagesFvImages(saa);\r
- \r
- int i = 0;\r
- while (i < saa.length) {\r
- \r
- fvImageParaTableModel.addRow(saa[i]);\r
- ++i;\r
- }\r
- \r
- saa = new String[ffc.getFvImagesNameValueCount()][2];\r
- ffc.getFvImagesNameValues(saa);\r
- for (int m = 0; m < saa.length; ++m) {\r
- fvPropertyTableModel.addRow(saa[m]);\r
- }\r
\r
jTextFieldFdf.setText("");\r
String fdfFile = ffc.getFlashDefinitionFile();\r
}\r
\r
String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;\r
- Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
- getFvInfoFromFdf(fdfPath, vFvInfo);\r
- getFvInFdfTableModel().setRowCount(0);\r
- for (int j = 0; j < vFvInfo.size(); ++j) {\r
- FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
- String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
- getFvInFdfTableModel().addRow(row);\r
- }\r
- \r
-\r
- for (int k = 0; k < vFvInfo.size(); ++k) {\r
- FvInfoFromFdf fvInfo = vFvInfo.get(k);\r
- getJTabbedPane().addTab(fvInfo.getFvName(), null, getJPanelModOrder(), null);\r
-\r
- }\r
+ initFvInFdfTable(fdfPath);\r
+ initFvAdditionalTable();\r
}\r
\r
private void getOptionNameValue(Map<String, String> m){\r
}\r
\r
}\r
- } catch (Exception e) {\r
+ \r
+ reader.close();\r
+ in.close();\r
+ }\r
+ catch (Exception e) {\r
\r
}\r
\r
}\r
\r
- \r
+ private class ModuleOrderPane extends JPanel {\r
+\r
+ /**\r
+ * \r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+ private JPanel jPanelModOrderN = null;\r
+ private JPanel jPanelModOrderS = null;\r
+ private JPanel jPanelModOrderC = null;\r
+ private JScrollPane jScrollPaneModInFv = null;\r
+ private JTable jTableModInFv = null;\r
+ private JPanel jPanelController = null;\r
+ private JScrollPane jScrollPaneFpdModules = null;\r
+ private JTable jTableFpdModules = null;\r
+ private JButton jButtonUp = null;\r
+ private JButton jButtonInsert = null;\r
+ private JButton jButtonRemove = null;\r
+ private JButton jButtonDown = null;\r
+ private JButton jButtonOk = null;\r
+ private JButton jButtonCancel = null;\r
+ private NonEditableTableModel modInFvTableModel = null;\r
+ private NonEditableTableModel fpdModTableModel = null;\r
+ private HashMap<String, ModuleIdentification> mGuidToModuleId = null;\r
+ private ArrayList<String> listModGuidInFv = null;\r
+ private String title = null;\r
+ private String outputFileName = null;\r
+ \r
+ public ModuleOrderPane(String tabTitle, String file) {\r
+ super(new BorderLayout());\r
+ title = tabTitle;\r
+ outputFileName = file;\r
+ mGuidToModuleId = new HashMap<String, ModuleIdentification>();\r
+ listModGuidInFv = new ArrayList<String>();\r
+ add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH);\r
+ add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH);\r
+ add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER);\r
+ showModulesInFv(title);\r
+ showAllModulesInPlatform();\r
+ }\r
+ \r
+ private void showModulesInFv(String fvName) {\r
+ int size = ffc.getUserExtsIncModCount(fvName);\r
+ \r
+ if (size != -1) {\r
+ String[][] saa = new String[size][2];\r
+ ffc.getUserExtsIncMods(fvName, saa);\r
+\r
+ for (int i = 0; i < size; ++i) {\r
+ listModGuidInFv.add(saa[i][0].toLowerCase());\r
+ String name = getModuleName(saa[i][0]);\r
+ String[] row = { name };\r
+ modInFvTableModel.addRow(row);\r
+ }\r
+ }\r
+ //\r
+ // From ModuleSAs, get module guids with FvBinding = fvName.\r
+ //\r
+ Vector<String> vGuid = new Vector<String>();\r
+ ffc.getFrameworkModuleGuid(fvName, vGuid);\r
+ //\r
+ // If BuildOptions->UserExtensions already contain these module info,\r
+ // no need to add them into table again.\r
+ //\r
+ Iterator<String> iter = vGuid.iterator();\r
+ while (iter.hasNext()){\r
+ String guid = iter.next();\r
+// String moduleName = getModuleName(guid);\r
+// if (existedInTable(moduleName, modInFvTableModel)) {\r
+// vGuid.remove(guid);\r
+// }\r
+ if (!listModGuidInFv.contains(guid.toLowerCase())) {\r
+ String[] row = {getModuleName(guid)};\r
+ modInFvTableModel.addRow(row);\r
+ }\r
+ }\r
+\r
+ }\r
+ \r
+ private void showAllModulesInPlatform() {\r
+ int size = ffc.getFrameworkModulesCount();\r
+ String[][] saa = new String[size][5];\r
+ ffc.getFrameworkModulesInfo(saa);\r
+ \r
+ for (int i = 0; i < size; ++i) {\r
+ String name = getModuleName(saa[i][0]);\r
+ if (existedInTable(name, modInFvTableModel) || existedInTable(name, fpdModTableModel)) {\r
+ continue;\r
+ }\r
+ String[] row = {name};\r
+ fpdModTableModel.addRow(row);\r
+ }\r
+ \r
+ TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
+ sorter.setSortState(0, TableSorter.ASCENDING);\r
+ }\r
+ \r
+ private String getModuleName (String guid) {\r
+ \r
+ for (int i = 0; i < GlobalData.vModuleList.size(); ++i) {\r
+ ModuleIdentification mi = GlobalData.vModuleList.get(i);\r
+ String mg = mi.getGuid();\r
+ if (mg == null) {\r
+ continue;\r
+ }\r
+ if (mg.equalsIgnoreCase(guid)) {\r
+ mGuidToModuleId.put(guid.toLowerCase(), mi);\r
+ return mi.getName();\r
+ }\r
+ }\r
+ \r
+ return "";\r
+ }\r
+ \r
+ private boolean existedInTable (String name, DefaultTableModel model) {\r
+ int size = model.getDataVector().size();\r
+ for (int i = 0; i < size; ++i) {\r
+ if (((Vector)model.getDataVector().elementAt(i)).contains(name)) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ \r
+ \r
+ /**\r
+ * This method initializes jPanelModOrderN \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelModOrderN() {\r
+ if (jPanelModOrderN == null) {\r
+ jPanelModOrderN = new JPanel();\r
+ }\r
+ return jPanelModOrderN;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelModOrderS \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelModOrderS() {\r
+ if (jPanelModOrderS == null) {\r
+ FlowLayout flowLayout6 = new FlowLayout();\r
+ flowLayout6.setAlignment(java.awt.FlowLayout.RIGHT);\r
+ jPanelModOrderS = new JPanel();\r
+ jPanelModOrderS.setLayout(flowLayout6);\r
+ jPanelModOrderS.add(getJButtonOk(), null);\r
+ jPanelModOrderS.add(getJButtonCancel(), null);\r
+ }\r
+ return jPanelModOrderS;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelModOrderC \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelModOrderC() {\r
+ if (jPanelModOrderC == null) {\r
+ jPanelModOrderC = new JPanel();\r
+ jPanelModOrderC.add(getJScrollPaneModInFv(), null);\r
+ jPanelModOrderC.add(getJPanelController(), null);\r
+ jPanelModOrderC.add(getJScrollPaneFpdModules(), null);\r
+ }\r
+ return jPanelModOrderC;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneModInFv \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneModInFv() {\r
+ if (jScrollPaneModInFv == null) {\r
+ jScrollPaneModInFv = new JScrollPane();\r
+ jScrollPaneModInFv.setPreferredSize(new java.awt.Dimension(200,500));\r
+ jScrollPaneModInFv.setViewportView(getJTableModInFv());\r
+ }\r
+ return jScrollPaneModInFv;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTableModInFv \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableModInFv() {\r
+ if (jTableModInFv == null) {\r
+ modInFvTableModel = new NonEditableTableModel();\r
+ modInFvTableModel.addColumn("Module Orders in FV");\r
+ jTableModInFv = new JTable(modInFvTableModel);\r
+ jTableModInFv.setRowHeight(20);\r
+ jTableModInFv.setShowGrid(false);\r
+ \r
+ }\r
+ return jTableModInFv;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jPanelController \r
+ * \r
+ * @return javax.swing.JPanel \r
+ */\r
+ private JPanel getJPanelController() {\r
+ if (jPanelController == null) {\r
+ FlowLayout flowLayout5 = new FlowLayout();\r
+ flowLayout5.setVgap(50);\r
+ flowLayout5.setHgap(50);\r
+ jPanelController = new JPanel();\r
+ jPanelController.setLayout(flowLayout5);\r
+ jPanelController.setPreferredSize(new java.awt.Dimension(150,500));\r
+ jPanelController.add(getJButtonUp(), null);\r
+ jPanelController.add(getJButtonInsert(), null);\r
+ jPanelController.add(getJButtonRemove(), null);\r
+ jPanelController.add(getJButtonDown(), null);\r
+ }\r
+ return jPanelController;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jScrollPaneFpdModules \r
+ * \r
+ * @return javax.swing.JScrollPane \r
+ */\r
+ private JScrollPane getJScrollPaneFpdModules() {\r
+ if (jScrollPaneFpdModules == null) {\r
+ jScrollPaneFpdModules = new JScrollPane();\r
+ jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(200,500));\r
+ jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
+ }\r
+ return jScrollPaneFpdModules;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jTableFpdModules \r
+ * \r
+ * @return javax.swing.JTable \r
+ */\r
+ private JTable getJTableFpdModules() {\r
+ if (jTableFpdModules == null) {\r
+ fpdModTableModel = new NonEditableTableModel();\r
+ TableSorter sorter = new TableSorter(fpdModTableModel);\r
+ jTableFpdModules = new JTable(sorter);\r
+ jTableFpdModules.setRowHeight(20);\r
+ jTableFpdModules.setShowGrid(false);\r
+ fpdModTableModel.addColumn("Modules in Platform");\r
+\r
+ }\r
+ return jTableFpdModules;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonUp \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonUp() {\r
+ if (jButtonUp == null) {\r
+ jButtonUp = new JButton();\r
+ jButtonUp.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonUp.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));\r
+ jButtonUp.setText("^");\r
+ jButtonUp.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRow = jTableModInFv.getSelectedRow();\r
+ if (selectedRow <= 0) {\r
+ return;\r
+ }\r
+ modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow - 1);\r
+ jTableModInFv.changeSelection(selectedRow - 1, 0, false, false);\r
+ }\r
+ });\r
+ }\r
+ return jButtonUp;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonInsert \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonInsert() {\r
+ if (jButtonInsert == null) {\r
+ jButtonInsert = new JButton();\r
+ jButtonInsert.setText("<<");\r
+ jButtonInsert.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonInsert.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRowRight = jTableFpdModules.getSelectedRow();\r
+ if (selectedRowRight < 0) {\r
+ return;\r
+ }\r
+ \r
+ int rowInModel = ((TableSorter)jTableFpdModules.getModel()).getModelRowIndex(selectedRowRight);\r
+ \r
+ String[] row = {jTableFpdModules.getValueAt(selectedRowRight, 0)+""};\r
+ int selectedRowLeft = jTableModInFv.getSelectedRow();\r
+ if (selectedRowLeft < 0) {\r
+ modInFvTableModel.addRow(row);\r
+ jTableModInFv.changeSelection(jTableModInFv.getRowCount() - 1, 0, false, false);\r
+ }\r
+ else {\r
+ modInFvTableModel.insertRow(selectedRowLeft, row);\r
+ jTableModInFv.changeSelection(selectedRowLeft, 0, false, false);\r
+ }\r
+ fpdModTableModel.removeRow(rowInModel);\r
+ }\r
+ });\r
+ }\r
+ return jButtonInsert;\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.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonRemove.setText(">>");\r
+ jButtonRemove.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRowLeft = jTableModInFv.getSelectedRow();\r
+ if (selectedRowLeft < 0) {\r
+ return;\r
+ }\r
+ \r
+ String[] row = {jTableModInFv.getValueAt(selectedRowLeft, 0)+""};\r
+ fpdModTableModel.addRow(row);\r
+ int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules\r
+ .getRowCount() - 1];\r
+ jTableFpdModules.changeSelection(viewIndex, 0, false, false);\r
+ modInFvTableModel.removeRow(selectedRowLeft);\r
+ }\r
+ });\r
+ }\r
+ return jButtonRemove;\r
+ }\r
+\r
+ /**\r
+ * This method initializes jButtonDown \r
+ * \r
+ * @return javax.swing.JButton \r
+ */\r
+ private JButton getJButtonDown() {\r
+ if (jButtonDown == null) {\r
+ jButtonDown = new JButton();\r
+ jButtonDown.setPreferredSize(new java.awt.Dimension(60,20));\r
+ jButtonDown.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));\r
+ jButtonDown.setText("v");\r
+ jButtonDown.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ int selectedRow = jTableModInFv.getSelectedRow();\r
+ if (selectedRow >= jTableModInFv.getRowCount() - 1) {\r
+ return;\r
+ }\r
+ modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow + 1);\r
+ jTableModInFv.changeSelection(selectedRow + 1, 0, false, false);\r
+ }\r
+ });\r
+ }\r
+ return jButtonDown;\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.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonOk.setText("Ok");\r
+ jButtonOk.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ // need reset FvBindings in ModuleSA.\r
+ ffc.removeFvBindingAll(title);\r
+ //\r
+ // collect module order information to store them into <BuildOptions> -> <UserExtensions>.\r
+ // also update the FvBinding info in <ModuleSA>.\r
+ //\r
+ Vector<String[]> vModInFv = new Vector<String[]>();\r
+ for (int i = 0; i < jTableModInFv.getRowCount(); ++i) {\r
+ String moduleName = jTableModInFv.getValueAt(i, 0)+"";\r
+ if (moduleName.length() == 0) {\r
+ continue;\r
+ }\r
+ ModuleIdentification mi = null;\r
+ Set<String> key = mGuidToModuleId.keySet();\r
+ Iterator<String> iter = key.iterator();\r
+ while (iter.hasNext()) {\r
+ String guid = iter.next();\r
+ mi = mGuidToModuleId.get(guid);\r
+ if (mi.getName().equals(moduleName)) {\r
+ String[] sa = {guid, WorkspaceProfile.getModuleBaseName(mi)};\r
+ vModInFv.add(sa);\r
+ ffc.updateFvBindingInModuleSA (mi, title);\r
+ break;\r
+ }\r
+ }\r
+ \r
+ }\r
+ ffc.removeBuildOptionsUserExtensions(title);\r
+ ffc.genBuildOptionsUserExtensions(title, outputFileName, vModInFv);\r
+ \r
+ docConsole.setSaved(false);\r
+ jTabbedPane.setSelectedIndex(0);\r
+ }\r
+ });\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.setPreferredSize(new java.awt.Dimension(80,20));\r
+ jButtonCancel.setText("Cancel");\r
+ jButtonCancel.addActionListener(new java.awt.event.ActionListener() {\r
+ public void actionPerformed(java.awt.event.ActionEvent e) {\r
+ jTabbedPane.setSelectedIndex(0);\r
+ }\r
+ });\r
+ }\r
+ return jButtonCancel;\r
+ }\r
+ }\r
\r
} // @jve:decl-index=0:visual-constraint="10,10"\r
\r