]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFvOptions.java
FV from FDF file options editor.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFvOptions.java
CommitLineData
b411fc1f 1/** @file\r
2 Java class FpdFvOptions is GUI for FV options in FPD file.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.frameworkwizard.platform.ui;\r
14\r
15import java.awt.BorderLayout;\r
16import java.awt.Dimension;\r
17import java.awt.Toolkit;\r
18import java.util.HashMap;\r
19import java.util.Iterator;\r
20import java.util.Set;\r
21\r
22import javax.swing.JPanel;\r
23import javax.swing.JDialog;\r
24import javax.swing.JScrollPane;\r
25import javax.swing.JTable;\r
26import javax.swing.event.TableModelEvent;\r
27import javax.swing.event.TableModelListener;\r
28import javax.swing.table.DefaultTableModel;\r
29import javax.swing.table.TableModel;\r
30import javax.swing.JButton;\r
31\r
32import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
33\r
34/**\r
35 * \r
36 *\r
37 */\r
38public class FpdFvOptions extends JDialog {\r
39\r
40 private JPanel jContentPane = null;\r
41 private JPanel jPanelN = null;\r
42 private JPanel jPanelS = null;\r
43 private JPanel jPanelC = null;\r
44 private JScrollPane jScrollPaneFvOptions = null;\r
45 private JTable jTableFvOptions = null;\r
46 private DefaultTableModel tableModel = null;\r
47 private String fvName = null;\r
48 private FpdFileContents ffc = null;\r
49 private OpeningPlatformType docConsole = null;\r
50 private JButton jButtonNew = null;\r
51 private JButton jButtonDelete = null;\r
52\r
53 /**\r
54 * This is the default constructor\r
55 */\r
56 public FpdFvOptions(String name, DefaultTableModel tm, FpdFileContents ffc, OpeningPlatformType dc) {\r
57 super();\r
58 fvName = name;\r
59 this.ffc = ffc;\r
60 this.docConsole = dc;\r
61 setTableModel(tm);\r
62 initOptions();\r
63 initialize();\r
64 \r
65 }\r
66\r
67 private void initOptions() {\r
68 tableModel.setRowCount(0);\r
69 HashMap<String, String> mOpts = new HashMap<String, String>();\r
70 ffc.getFvImagesFvImageOptions(fvName, mOpts);\r
71 Set<String> sKey = mOpts.keySet();\r
72 Iterator<String> iter = sKey.iterator();\r
73 while (iter.hasNext()) {\r
74 String name = iter.next();\r
75 String value = mOpts.get(name);\r
76 tableModel.addRow(new String[]{name, value});\r
77 }\r
78 }\r
79 /**\r
80 * This method initializes this\r
81 * \r
82 * @return void\r
83 */\r
84 private void initialize() {\r
85 this.setSize(650, 400);\r
86 this.setModal(true);\r
87 this.setTitle("FV Options");\r
88 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
89 this.setContentPane(getJContentPane());\r
90 this.centerWindow();\r
91 this.setVisible(true);\r
92 }\r
93\r
94 /**\r
95 * This method initializes jContentPane\r
96 * \r
97 * @return javax.swing.JPanel\r
98 */\r
99 private JPanel getJContentPane() {\r
100 if (jContentPane == null) {\r
101 jContentPane = new JPanel();\r
102 jContentPane.setLayout(new BorderLayout());\r
103 jContentPane.add(getJPanelN(), java.awt.BorderLayout.NORTH);\r
104 jContentPane.add(getJPanelS(), java.awt.BorderLayout.SOUTH);\r
105 jContentPane.add(getJPanelC(), java.awt.BorderLayout.CENTER);\r
106 }\r
107 return jContentPane;\r
108 }\r
109\r
110 /**\r
111 * This method initializes jPanelN \r
112 * \r
113 * @return javax.swing.JPanel \r
114 */\r
115 private JPanel getJPanelN() {\r
116 if (jPanelN == null) {\r
117 jPanelN = new JPanel();\r
118 }\r
119 return jPanelN;\r
120 }\r
121\r
122 /**\r
123 * This method initializes jPanelS \r
124 * \r
125 * @return javax.swing.JPanel \r
126 */\r
127 private JPanel getJPanelS() {\r
128 if (jPanelS == null) {\r
129 jPanelS = new JPanel();\r
130 jPanelS.add(getJButtonNew(), null);\r
131 jPanelS.add(getJButtonDelete(), null);\r
132 }\r
133 return jPanelS;\r
134 }\r
135\r
136 /**\r
137 * This method initializes jPanelC \r
138 * \r
139 * @return javax.swing.JPanel \r
140 */\r
141 private JPanel getJPanelC() {\r
142 if (jPanelC == null) {\r
143 jPanelC = new JPanel();\r
144 jPanelC.add(getJScrollPaneFvOptions(), null);\r
145 }\r
146 return jPanelC;\r
147 }\r
148\r
149 /**\r
150 * This method initializes jScrollPaneFvOptions \r
151 * \r
152 * @return javax.swing.JScrollPane \r
153 */\r
154 private JScrollPane getJScrollPaneFvOptions() {\r
155 if (jScrollPaneFvOptions == null) {\r
156 jScrollPaneFvOptions = new JScrollPane();\r
157 jScrollPaneFvOptions.setPreferredSize(new java.awt.Dimension(600,320));\r
158 jScrollPaneFvOptions.setViewportView(getJTableFvOptions());\r
159 }\r
160 return jScrollPaneFvOptions;\r
161 }\r
162\r
163 /**\r
164 * This method initializes jTableFvOptions \r
165 * \r
166 * @return javax.swing.JTable \r
167 */\r
168 private JTable getJTableFvOptions() {\r
169 if (jTableFvOptions == null) {\r
170 jTableFvOptions = new JTable();\r
171 jTableFvOptions.setRowHeight(20);\r
172 jTableFvOptions.setModel(getTableModel());\r
173 \r
174 jTableFvOptions.getModel().addTableModelListener(new TableModelListener() {\r
175 public void tableChanged(TableModelEvent arg0) {\r
176 // TODO Auto-generated method stub\r
177 int row = arg0.getFirstRow();\r
178 int col = arg0.getColumn();\r
179 TableModel m = (TableModel) arg0.getSource();\r
180 \r
181 if (arg0.getType() == TableModelEvent.UPDATE) {\r
182 if (m.getValueAt(row, 0).equals("")) {\r
183 return;\r
184 }\r
185 ffc.setTypedNamedFvImageNameValue(fvName, "Options", m.getValueAt(row, 0)+"", m.getValueAt(row, 1)+"");\r
186 docConsole.setSaved(false);\r
187 }\r
188 }\r
189 });\r
190 }\r
191 return jTableFvOptions;\r
192 }\r
193\r
194 protected DefaultTableModel getTableModel() {\r
195 return tableModel;\r
196 }\r
197\r
198 protected void setTableModel(DefaultTableModel tableModel) {\r
199 \r
200 this.tableModel = tableModel;\r
201 \r
202 }\r
203\r
204 /**\r
205 Start the window at the center of screen\r
206 \r
207 **/\r
208 protected void centerWindow(int intWidth, int intHeight) {\r
209 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
210 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
211 }\r
212\r
213 /**\r
214 Start the window at the center of screen\r
215 \r
216 **/\r
217 protected void centerWindow() {\r
218 centerWindow(this.getSize().width, this.getSize().height);\r
219 }\r
220\r
221/**\r
222 * This method initializes jButtonNew \r
223 * \r
224 * @return javax.swing.JButton \r
225 */\r
226private JButton getJButtonNew() {\r
227 if (jButtonNew == null) {\r
228 jButtonNew = new JButton();\r
229 jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));\r
230 jButtonNew.setText("New");\r
231 jButtonNew.addActionListener(new java.awt.event.ActionListener() {\r
232 public void actionPerformed(java.awt.event.ActionEvent e) {\r
233 tableModel.addRow(new String[]{"", ""});\r
234 }\r
235 });\r
236 }\r
237 return jButtonNew;\r
238}\r
239\r
240/**\r
241 * This method initializes jButtonDelete \r
242 * \r
243 * @return javax.swing.JButton \r
244 */\r
245private JButton getJButtonDelete() {\r
246 if (jButtonDelete == null) {\r
247 jButtonDelete = new JButton();\r
248 jButtonDelete.setPreferredSize(new java.awt.Dimension(80,20));\r
249 jButtonDelete.setText("Delete");\r
250 jButtonDelete.addActionListener(new java.awt.event.ActionListener() {\r
251 public void actionPerformed(java.awt.event.ActionEvent e) {\r
252 int selectedRow = jTableFvOptions.getSelectedRow();\r
253 if (selectedRow < 0) {\r
254 return;\r
255 }\r
256 String optName = tableModel.getValueAt(selectedRow, 0)+"";\r
257 if (((FvOptsTableModel)tableModel).getVKeyWords().contains(optName)){\r
258 return;\r
259 }\r
260 \r
261 ffc.removeTypedNamedFvImageNameValue(fvName, "Options", optName);\r
262 tableModel.removeRow(selectedRow);\r
263 docConsole.setSaved(false);\r
264 }\r
265 });\r
266 }\r
267 return jButtonDelete;\r
268}\r
269}\r