import java.awt.BorderLayout;\r
import java.awt.Dimension;\r
import java.awt.Toolkit;\r
-import java.util.HashMap;\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
* \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 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
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
- HashMap<String, String> mOpts = new HashMap<String, String>();\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
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
*/\r
private void initialize() {\r
this.setSize(650, 400);\r
- this.setModal(true);\r
+// this.setModal(true);\r
this.setTitle("FV Options");\r
- this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
+ this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);\r
this.setContentPane(getJContentPane());\r
this.centerWindow();\r
this.setVisible(true);\r
+ \r
}\r
\r
/**\r
*/\r
private JTable getJTableFvOptions() {\r
if (jTableFvOptions == null) {\r
- jTableFvOptions = new JTable();\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
- jTableFvOptions.setModel(getTableModel());\r
\r
- jTableFvOptions.getModel().addTableModelListener(new TableModelListener() {\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
+ int col = arg0.getColumn();\r
TableModel m = (TableModel) arg0.getSource();\r
\r
if (arg0.getType() == TableModelEvent.UPDATE) {\r
- if (m.getValueAt(row, 0).equals("")) {\r
- return;\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
- ffc.setTypedNamedFvImageNameValue(fvName, "Options", m.getValueAt(row, 0)+"", m.getValueAt(row, 1)+"");\r
- docConsole.setSaved(false);\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
+ \r
+ jTableFvOptions.getModel().addTableModelListener(tableModelListener);\r
}\r
return jTableFvOptions;\r
}\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