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