+++ /dev/null
-/** @file\r
- Java class FpdFvOptions is GUI for FV options in FPD 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.platform.ui;\r
-\r
-import java.awt.BorderLayout;\r
-import java.awt.Dimension;\r
-import java.awt.Toolkit;\r
-import java.awt.event.MouseEvent;\r
-import java.awt.event.WindowEvent;\r
-import java.util.Iterator;\r
-import java.util.LinkedHashMap;\r
-import java.util.Set;\r
-\r
-import javax.swing.JFrame;\r
-import javax.swing.JOptionPane;\r
-import javax.swing.JPanel;\r
-import javax.swing.JDialog;\r
-import javax.swing.JScrollPane;\r
-import javax.swing.JTable;\r
-import javax.swing.ListSelectionModel;\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.TableModel;\r
-import javax.swing.JButton;\r
-\r
-import org.tianocore.frameworkwizard.FrameworkWizardUI;\r
-import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
-\r
-/**\r
- * \r
- *\r
- */\r
-public class FpdFvOptions extends JDialog {\r
-\r
- /**\r
- * \r
- */\r
- private static final long serialVersionUID = 1L;\r
- private static JFrame frame;\r
- private JPanel jContentPane = null;\r
- private JPanel jPanelN = null;\r
- private JPanel jPanelS = null;\r
- private JPanel jPanelC = null;\r
- private JScrollPane jScrollPaneFvOptions = null;\r
- private JTable jTableFvOptions = null;\r
- private DefaultTableModel tableModel = null;\r
- private String fvName = null;\r
- private FpdFileContents ffc = null;\r
- private OpeningPlatformType docConsole = null;\r
- private JButton jButtonNew = null;\r
- private JButton jButtonDelete = null;\r
- private String oldOptionName = "";\r
- private int selectedRow = -1;\r
- private TableModelListener tableModelListener = null;\r
-\r
- /**\r
- * This is the default constructor\r
- */\r
- public FpdFvOptions(String name, DefaultTableModel tm, FpdFileContents ffc, OpeningPlatformType dc) {\r
- super(FrameworkWizardUI.getInstance());\r
- fvName = name;\r
- this.ffc = ffc;\r
- this.docConsole = dc;\r
- setTableModel(tm);\r
- initOptions();\r
- initialize();\r
- \r
- }\r
- \r
- protected void processWindowEvent (WindowEvent e) {\r
- if (e.getID() == WindowEvent.WINDOW_CLOSING) {\r
- if (jTableFvOptions.isEditing()) {\r
- jTableFvOptions.getCellEditor().stopCellEditing();\r
- }\r
- tableModel.removeTableModelListener(tableModelListener);\r
- this.dispose();\r
- }\r
- }\r
-\r
- private void initOptions() {\r
- tableModel.setRowCount(0);\r
- LinkedHashMap<String, String> mOpts = new LinkedHashMap<String, String>();\r
- ffc.getFvImagesFvImageOptions(fvName, mOpts);\r
- Set<String> sKey = mOpts.keySet();\r
- Iterator<String> iter = sKey.iterator();\r
- while (iter.hasNext()) {\r
- String name = iter.next();\r
- String value = mOpts.get(name);\r
- tableModel.addRow(new String[]{name, value});\r
- }\r
- }\r
- \r
- private boolean fvOptionNameExists (String name) {\r
- int count = 0;\r
- for (int i = 0; i < jTableFvOptions.getRowCount(); ++i) {\r
- if (getTableModel().getValueAt(i, 0).equals(name)) {\r
- ++count;\r
- }\r
- }\r
- if (count > 1) {\r
- return true;\r
- }\r
- return false;\r
- }\r
- /**\r
- * This method initializes this\r
- * \r
- * @return void\r
- */\r
- private void initialize() {\r
- this.setSize(650, 400);\r
- this.setModal(true);\r
- this.setTitle("FV Options");\r
- this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);\r
- this.setContentPane(getJContentPane());\r
- this.centerWindow();\r
- this.setVisible(true);\r
- \r
- }\r
-\r
- /**\r
- * This method initializes jContentPane\r
- * \r
- * @return javax.swing.JPanel\r
- */\r
- private JPanel getJContentPane() {\r
- if (jContentPane == null) {\r
- jContentPane = new JPanel();\r
- jContentPane.setLayout(new BorderLayout());\r
- jContentPane.add(getJPanelN(), java.awt.BorderLayout.NORTH);\r
- jContentPane.add(getJPanelS(), java.awt.BorderLayout.SOUTH);\r
- jContentPane.add(getJPanelC(), java.awt.BorderLayout.CENTER);\r
- }\r
- return jContentPane;\r
- }\r
-\r
- /**\r
- * This method initializes jPanelN \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelN() {\r
- if (jPanelN == null) {\r
- jPanelN = new JPanel();\r
- }\r
- return jPanelN;\r
- }\r
-\r
- /**\r
- * This method initializes jPanelS \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelS() {\r
- if (jPanelS == null) {\r
- jPanelS = new JPanel();\r
- jPanelS.add(getJButtonNew(), null);\r
- jPanelS.add(getJButtonDelete(), null);\r
- }\r
- return jPanelS;\r
- }\r
-\r
- /**\r
- * This method initializes jPanelC \r
- * \r
- * @return javax.swing.JPanel \r
- */\r
- private JPanel getJPanelC() {\r
- if (jPanelC == null) {\r
- jPanelC = new JPanel();\r
- jPanelC.add(getJScrollPaneFvOptions(), null);\r
- }\r
- return jPanelC;\r
- }\r
-\r
- /**\r
- * This method initializes jScrollPaneFvOptions \r
- * \r
- * @return javax.swing.JScrollPane \r
- */\r
- private JScrollPane getJScrollPaneFvOptions() {\r
- if (jScrollPaneFvOptions == null) {\r
- jScrollPaneFvOptions = new JScrollPane();\r
- jScrollPaneFvOptions.setPreferredSize(new java.awt.Dimension(600,320));\r
- jScrollPaneFvOptions.setViewportView(getJTableFvOptions());\r
- }\r
- return jScrollPaneFvOptions;\r
- }\r
-\r
- /**\r
- * This method initializes jTableFvOptions \r
- * \r
- * @return javax.swing.JTable \r
- */\r
- private JTable getJTableFvOptions() {\r
- if (jTableFvOptions == null) {\r
- jTableFvOptions = new JTable(getTableModel()) {\r
- /**\r
- * \r
- */\r
- private static final long serialVersionUID = -1941328952828651192L;\r
-\r
- public String getToolTipText(MouseEvent e) {\r
- String tip = null;\r
- java.awt.Point p = e.getPoint();\r
- int rowIndex = rowAtPoint(p);\r
-// int colIndex = columnAtPoint(p);\r
-// int realColumnIndex = convertColumnIndexToModel(colIndex);\r
-\r
- TableModel model = getModel();\r
- String optName = (String) model.getValueAt(rowIndex, 0);\r
- if (((FvOptsTableModel)model).getVKeyWords().contains(optName)){\r
- tip = optName + " is from Flash Definition File and it is NOT editable.";\r
- }\r
- \r
- return tip;\r
- }\r
-\r
- };\r
- \r
- jTableFvOptions.setRowHeight(20);\r
- \r
- jTableFvOptions.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
- selectedRow = lsm.getMinSelectionIndex();\r
- oldOptionName = getTableModel().getValueAt(selectedRow, 0)+"";\r
- }\r
- }\r
- });\r
- \r
- tableModelListener = 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
- \r
- if (arg0.getType() == TableModelEvent.UPDATE) {\r
- String newOptionName = m.getValueAt(row, 0) + "";\r
- if (col == 0) {\r
- if (newOptionName.equals(oldOptionName)) {\r
- return;\r
- }\r
- if (fvOptionNameExists(newOptionName)) {\r
- JOptionPane.showMessageDialog(frame, "This Option already exists. Please choose another Option name.");\r
- m.setValueAt(oldOptionName, row, 0);\r
- return;\r
- }\r
- \r
- ffc.setTypedNamedFvImageNameValue(fvName, "Options", oldOptionName, m.getValueAt(row, 1)+"", newOptionName);\r
- docConsole.setSaved(false);\r
- oldOptionName = newOptionName;\r
- }\r
- \r
- if (col == 1) {\r
- ffc.setTypedNamedFvImageNameValue(fvName, "Options", oldOptionName, m.getValueAt(row, 1)+"", newOptionName);\r
- docConsole.setSaved(false); \r
- }\r
- \r
- }\r
- }\r
- };\r
- \r
- jTableFvOptions.getModel().addTableModelListener(tableModelListener);\r
- }\r
- return jTableFvOptions;\r
- }\r
-\r
- protected DefaultTableModel getTableModel() {\r
- return tableModel;\r
- }\r
-\r
- protected void setTableModel(DefaultTableModel tableModel) {\r
- \r
- this.tableModel = tableModel;\r
- \r
- }\r
-\r
- /**\r
- Start the window at the center of screen\r
- \r
- **/\r
- protected void centerWindow(int intWidth, int intHeight) {\r
- Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
- this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
- }\r
-\r
- /**\r
- Start the window at the center of screen\r
- \r
- **/\r
- protected void centerWindow() {\r
- centerWindow(this.getSize().width, this.getSize().height);\r
- }\r
-\r
-/**\r
- * This method initializes jButtonNew \r
- * \r
- * @return javax.swing.JButton \r
- */\r
-private JButton getJButtonNew() {\r
- if (jButtonNew == null) {\r
- jButtonNew = new JButton();\r
- jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
- jButtonNew.setText("New");\r
- jButtonNew.addActionListener(new java.awt.event.ActionListener() {\r
- public void actionPerformed(java.awt.event.ActionEvent e) {\r
- tableModel.addRow(new String[]{"", ""});\r
- oldOptionName = "";\r
- }\r
- });\r
- }\r
- return jButtonNew;\r
-}\r
-\r
-/**\r
- * This method initializes jButtonDelete \r
- * \r
- * @return javax.swing.JButton \r
- */\r
-private JButton getJButtonDelete() {\r
- if (jButtonDelete == null) {\r
- jButtonDelete = new JButton();\r
- jButtonDelete.setPreferredSize(new java.awt.Dimension(80,20));\r
- jButtonDelete.setText("Delete");\r
- jButtonDelete.addActionListener(new java.awt.event.ActionListener() {\r
- public void actionPerformed(java.awt.event.ActionEvent e) {\r
- int selectedRow = jTableFvOptions.getSelectedRow();\r
- if (selectedRow < 0) {\r
- return;\r
- }\r
- String optName = tableModel.getValueAt(selectedRow, 0)+"";\r
- if (((FvOptsTableModel)tableModel).getVKeyWords().contains(optName)){\r
- return;\r
- }\r
- if (((FvOptsTableModel)tableModel).getVNonEditableName().contains(optName)){\r
- return;\r
- }\r
- \r
- ffc.removeTypedNamedFvImageNameValue(fvName, "Options", optName);\r
- tableModel.removeRow(selectedRow);\r
- docConsole.setSaved(false);\r
- }\r
- });\r
- }\r
- return jButtonDelete;\r
-}\r
-}\r