]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFvOptions.java
b09394127d35412890e01940a10cc230449206cf
[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 private JPanel jContentPane = null;
41 private JPanel jPanelN = null;
42 private JPanel jPanelS = null;
43 private JPanel jPanelC = null;
44 private JScrollPane jScrollPaneFvOptions = null;
45 private JTable jTableFvOptions = null;
46 private DefaultTableModel tableModel = null;
47 private String fvName = null;
48 private FpdFileContents ffc = null;
49 private OpeningPlatformType docConsole = null;
50 private JButton jButtonNew = null;
51 private JButton jButtonDelete = null;
52
53 /**
54 * This is the default constructor
55 */
56 public FpdFvOptions(String name, DefaultTableModel tm, FpdFileContents ffc, OpeningPlatformType dc) {
57 super();
58 fvName = name;
59 this.ffc = ffc;
60 this.docConsole = dc;
61 setTableModel(tm);
62 initOptions();
63 initialize();
64
65 }
66
67 private void initOptions() {
68 tableModel.setRowCount(0);
69 HashMap<String, String> mOpts = new HashMap<String, String>();
70 ffc.getFvImagesFvImageOptions(fvName, mOpts);
71 Set<String> sKey = mOpts.keySet();
72 Iterator<String> iter = sKey.iterator();
73 while (iter.hasNext()) {
74 String name = iter.next();
75 String value = mOpts.get(name);
76 tableModel.addRow(new String[]{name, value});
77 }
78 }
79 /**
80 * This method initializes this
81 *
82 * @return void
83 */
84 private void initialize() {
85 this.setSize(650, 400);
86 this.setModal(true);
87 this.setTitle("FV Options");
88 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
89 this.setContentPane(getJContentPane());
90 this.centerWindow();
91 this.setVisible(true);
92 }
93
94 /**
95 * This method initializes jContentPane
96 *
97 * @return javax.swing.JPanel
98 */
99 private JPanel getJContentPane() {
100 if (jContentPane == null) {
101 jContentPane = new JPanel();
102 jContentPane.setLayout(new BorderLayout());
103 jContentPane.add(getJPanelN(), java.awt.BorderLayout.NORTH);
104 jContentPane.add(getJPanelS(), java.awt.BorderLayout.SOUTH);
105 jContentPane.add(getJPanelC(), java.awt.BorderLayout.CENTER);
106 }
107 return jContentPane;
108 }
109
110 /**
111 * This method initializes jPanelN
112 *
113 * @return javax.swing.JPanel
114 */
115 private JPanel getJPanelN() {
116 if (jPanelN == null) {
117 jPanelN = new JPanel();
118 }
119 return jPanelN;
120 }
121
122 /**
123 * This method initializes jPanelS
124 *
125 * @return javax.swing.JPanel
126 */
127 private JPanel getJPanelS() {
128 if (jPanelS == null) {
129 jPanelS = new JPanel();
130 jPanelS.add(getJButtonNew(), null);
131 jPanelS.add(getJButtonDelete(), null);
132 }
133 return jPanelS;
134 }
135
136 /**
137 * This method initializes jPanelC
138 *
139 * @return javax.swing.JPanel
140 */
141 private JPanel getJPanelC() {
142 if (jPanelC == null) {
143 jPanelC = new JPanel();
144 jPanelC.add(getJScrollPaneFvOptions(), null);
145 }
146 return jPanelC;
147 }
148
149 /**
150 * This method initializes jScrollPaneFvOptions
151 *
152 * @return javax.swing.JScrollPane
153 */
154 private JScrollPane getJScrollPaneFvOptions() {
155 if (jScrollPaneFvOptions == null) {
156 jScrollPaneFvOptions = new JScrollPane();
157 jScrollPaneFvOptions.setPreferredSize(new java.awt.Dimension(600,320));
158 jScrollPaneFvOptions.setViewportView(getJTableFvOptions());
159 }
160 return jScrollPaneFvOptions;
161 }
162
163 /**
164 * This method initializes jTableFvOptions
165 *
166 * @return javax.swing.JTable
167 */
168 private JTable getJTableFvOptions() {
169 if (jTableFvOptions == null) {
170 jTableFvOptions = new JTable();
171 jTableFvOptions.setRowHeight(20);
172 jTableFvOptions.setModel(getTableModel());
173
174 jTableFvOptions.getModel().addTableModelListener(new TableModelListener() {
175 public void tableChanged(TableModelEvent arg0) {
176 // TODO Auto-generated method stub
177 int row = arg0.getFirstRow();
178 int col = arg0.getColumn();
179 TableModel m = (TableModel) arg0.getSource();
180
181 if (arg0.getType() == TableModelEvent.UPDATE) {
182 if (m.getValueAt(row, 0).equals("")) {
183 return;
184 }
185 ffc.setTypedNamedFvImageNameValue(fvName, "Options", m.getValueAt(row, 0)+"", m.getValueAt(row, 1)+"");
186 docConsole.setSaved(false);
187 }
188 }
189 });
190 }
191 return jTableFvOptions;
192 }
193
194 protected DefaultTableModel getTableModel() {
195 return tableModel;
196 }
197
198 protected void setTableModel(DefaultTableModel tableModel) {
199
200 this.tableModel = tableModel;
201
202 }
203
204 /**
205 Start the window at the center of screen
206
207 **/
208 protected void centerWindow(int intWidth, int intHeight) {
209 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
210 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);
211 }
212
213 /**
214 Start the window at the center of screen
215
216 **/
217 protected void centerWindow() {
218 centerWindow(this.getSize().width, this.getSize().height);
219 }
220
221 /**
222 * This method initializes jButtonNew
223 *
224 * @return javax.swing.JButton
225 */
226 private JButton getJButtonNew() {
227 if (jButtonNew == null) {
228 jButtonNew = new JButton();
229 jButtonNew.setPreferredSize(new java.awt.Dimension(80,20));
230 jButtonNew.setText("New");
231 jButtonNew.addActionListener(new java.awt.event.ActionListener() {
232 public void actionPerformed(java.awt.event.ActionEvent e) {
233 tableModel.addRow(new String[]{"", ""});
234 }
235 });
236 }
237 return jButtonNew;
238 }
239
240 /**
241 * This method initializes jButtonDelete
242 *
243 * @return javax.swing.JButton
244 */
245 private JButton getJButtonDelete() {
246 if (jButtonDelete == null) {
247 jButtonDelete = new JButton();
248 jButtonDelete.setPreferredSize(new java.awt.Dimension(80,20));
249 jButtonDelete.setText("Delete");
250 jButtonDelete.addActionListener(new java.awt.event.ActionListener() {
251 public void actionPerformed(java.awt.event.ActionEvent e) {
252 int selectedRow = jTableFvOptions.getSelectedRow();
253 if (selectedRow < 0) {
254 return;
255 }
256 String optName = tableModel.getValueAt(selectedRow, 0)+"";
257 if (((FvOptsTableModel)tableModel).getVKeyWords().contains(optName)){
258 return;
259 }
260
261 ffc.removeTypedNamedFvImageNameValue(fvName, "Options", optName);
262 tableModel.removeRow(selectedRow);
263 docConsole.setSaved(false);
264 }
265 });
266 }
267 return jButtonDelete;
268 }
269 }