]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
Update RuntimeLib.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFlash.java
CommitLineData
a13899c5 1/** @file\r
2 Java class FpdFlash is GUI for Flash element operation in SPD 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 javax.swing.JPanel;\r
17\r
18import javax.swing.AbstractAction;\r
a13899c5 19import javax.swing.JFileChooser;\r
20import javax.swing.JFrame;\r
908b1c05 21import javax.swing.JOptionPane;\r
a13899c5 22import javax.swing.JTabbedPane;\r
23import javax.swing.JButton;\r
24import javax.swing.ListSelectionModel;\r
25\r
26import org.tianocore.PlatformSurfaceAreaDocument;\r
98c20797 27import org.tianocore.frameworkwizard.common.DataValidation;\r
61919f8c 28import org.tianocore.frameworkwizard.common.GlobalData;\r
d6d24759 29import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
a13899c5 30import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
31import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
61919f8c 32import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
33import org.tianocore.frameworkwizard.platform.ui.FpdFrameworkModules;\r
34import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
a13899c5 35\r
36import java.awt.FlowLayout;\r
37import java.awt.event.ActionEvent;\r
2b70a636 38import java.awt.event.ComponentAdapter;\r
39import java.awt.event.ComponentEvent;\r
a13899c5 40import java.awt.event.ItemEvent;\r
41import java.awt.event.ItemListener;\r
3658f95e 42import java.io.BufferedReader;\r
a13899c5 43import java.io.File;\r
3658f95e 44import java.io.FileReader;\r
2b70a636 45import java.util.ArrayList;\r
46import java.util.HashMap;\r
a13899c5 47import java.util.Iterator;\r
48import java.util.LinkedHashMap;\r
49import java.util.Map;\r
50import java.util.Set;\r
3658f95e 51import java.util.Vector;\r
a13899c5 52\r
53import javax.swing.JCheckBox;\r
54import javax.swing.JTextField;\r
55import java.awt.GridLayout;\r
56import javax.swing.JLabel;\r
57import javax.swing.JScrollPane;\r
58import javax.swing.JTable;\r
44053733 59import javax.swing.event.InternalFrameAdapter;\r
60import javax.swing.event.InternalFrameEvent;\r
a13899c5 61import javax.swing.event.ListSelectionEvent;\r
62import javax.swing.event.ListSelectionListener;\r
63import javax.swing.event.TableModelEvent;\r
64import javax.swing.event.TableModelListener;\r
65import javax.swing.table.DefaultTableModel;\r
a13899c5 66import javax.swing.table.TableModel;\r
67import javax.swing.JComboBox;\r
68import java.awt.Dimension;\r
3658f95e 69import javax.swing.JSplitPane;\r
a13899c5 70\r
71public class FpdFlash extends IInternalFrame {\r
72\r
44053733 73 /**\r
74 * \r
75 */\r
76 private static final long serialVersionUID = 1L;\r
eb8ea829 77 private final int startIndexOfDynamicTab = 2;\r
a13899c5 78 static JFrame frame;\r
79 private JPanel jContentPane = null;\r
4da2e625 80 private JPanel jPanelContentEast = null;\r
81 private JPanel jPanelContentSouth = null;\r
82 private JPanel jPanelContentWest = null;\r
83 private JPanel jPanelContentNorth = null;\r
a13899c5 84 private JTabbedPane jTabbedPane = null;\r
85 private JPanel jPanelFvImages = null;\r
a13899c5 86 private JPanel jPanelFvImageN = null;\r
a13899c5 87 private JPanel jPanelFvImageS = null;\r
4da2e625 88 private JCheckBox jCheckBoxFvProperty = null;\r
89 private JLabel jLabelFvPropName = null;\r
90 private JTextField jTextFieldFvPropName = null;\r
91 private JLabel jLabelFvPropValue = null;\r
92 private JTextField jTextFieldFvPropValue = null;\r
93 private JButton jButtonFvPropAdd = null;\r
94 private JScrollPane jScrollPaneFvProp = null;\r
95 private JTable jTableFvProp = null;\r
96 private JPanel jPanelFvPropButtonGroup = null;\r
97 private JButton jButtonFvPropDel = null;\r
a13899c5 98 private DefaultTableModel fvPropertyTableModel = null;\r
99 private DefaultTableModel fvImageNameTableModel = null;\r
100 private ImageParaTableModel fvImageParaTableModel = null;\r
ae0d4fd2 101 private DefaultTableModel fvOptionTableModel = null;\r
a13899c5 102 private JPanel jPanelFvImageC = null;\r
4da2e625 103 private JCheckBox jCheckBoxFvImagePara = null;\r
104 private JLabel jLabelFvParaType = null;\r
105 private JComboBox jComboBoxFvParaType = null;\r
106 private JLabel jLabelFvImageNames = null;\r
107 private JLabel jLabelFvParaName = null;\r
108 private JTextField jTextFieldFvParaName = null;\r
109 private JButton jButtonFvParaAdd = null;\r
110 private JScrollPane jScrollPaneFvImageNames = null;\r
111 private JTable jTableFvImageNames = null;\r
112 private JButton jButtonFvParaDel = null;\r
113 private JPanel jPanelFvImageOpts = null;\r
114 private JButton jButtonAddFvImage = null;\r
115 private JScrollPane jScrollPaneFvInfo = null;\r
116 private JTable jTableFvInfo = null;\r
117 private JButton jButtonDelFvImage = null;\r
118 private JCheckBox jCheckBoxFvImageOpts = null;\r
119 private JPanel jPanelFvImagePara = null;\r
d6d24759 120 private OpeningPlatformType docConsole = null;\r
a13899c5 121 private FpdFileContents ffc = null;\r
4da2e625 122 private JPanel jPanelFdf = null;\r
123 private JCheckBox jCheckBoxFdf = null;\r
124 private JTextField jTextFieldFdf = null;\r
125 private JButton jButtonFdfBrowse = null;\r
126 private JLabel jLabelFvImageOptName = null;\r
127 private JTextField jTextFieldFvImageOptName = null;\r
128 private JLabel jLabelFvImageOptValue = null;\r
129 private JTextField jTextFieldFvImageOptValue = null;\r
130 private JPanel jPanelFvImageOptsButtonGroup = null;\r
131 private JButton jButtonFvImageOptAdd = null;\r
132 private JButton jButtonFvImageOptDel = null;\r
ae0d4fd2 133 private JScrollPane jScrollPane = null;\r
4da2e625 134 private JTable jTableFvImageOpts = null;\r
135 private JButton jButtonUpdateFvImage = null;\r
3658f95e 136 private JPanel jPanelFdfN = null;\r
137 private JPanel jPanelFdfS = null;\r
138 private JSplitPane jSplitPaneFdfC = null;\r
139 private JPanel jPanelFdfCTop = null;\r
140 private JPanel jPanelFdfCBottom = null;\r
141 private JPanel jPanelFdfCTopN = null;\r
142 private JPanel jPanelFdfCTopS = null;\r
143 private JPanel jPanelFdfCTopC = null;\r
144 private JPanel jPanelFdfCBottomN = null;\r
145 private JPanel jPanelFdfCBottomC = null;\r
146 private JLabel jLabelFvInFdf = null;\r
147 private JLabel jLabelFvAdditional = null;\r
148 private JScrollPane jScrollPaneFvInFdf = null;\r
149 private JTable jTableFvInFdf = null;\r
150 private NonEditableTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
151 private JButton jButtonFvInFdfOptions = null;\r
152 private JScrollPane jScrollPaneFvAdditional = null;\r
153 private JTable jTableFvAdditional = null;\r
98c20797 154 private DefaultTableModel fvAdditionalTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
3658f95e 155 private JButton jButtonAddFv = null;\r
156 private JButton jButtonDelFv = null;\r
157 private JButton jButtonAddFvOptions = null;\r
eb8ea829 158 private int tabIndexForFv = -1;\r
159 private int selectedRowInFvAdditionalTable = -1;\r
160 private String oldFvName = null;\r
98c20797 161 private Vector<String> vBlockSize = new Vector<String>();\r
701d95b3 162 private String determinedFvBlockSize = null;\r
163 private String erasePolarity = "";\r
98c20797 164 boolean memModified = false;\r
3658f95e 165 \r
3658f95e 166 \r
a13899c5 167 public FpdFlash() {\r
168 super();\r
169 // TODO Auto-generated constructor stub\r
170\r
171 initialize();\r
172 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
173 this.setVisible(true);\r
174 }\r
175\r
176 public FpdFlash(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
177 this();\r
178 ffc = new FpdFileContents(fpd);\r
179 init(ffc);\r
180 }\r
181 \r
d6d24759 182 public FpdFlash(OpeningPlatformType opt) {\r
183 this(opt.getXmlFpd());\r
184 docConsole = opt;\r
701d95b3 185 if (memModified) {\r
186 docConsole.setSaved(false);\r
187 JOptionPane.showMessageDialog(frame, "Platform Synced with FDF file.");\r
188 memModified = false;\r
189 }\r
d6d24759 190 }\r
191 \r
a13899c5 192 /**\r
193 * This method initializes jPanel \r
194 * \r
195 * @return javax.swing.JPanel \r
196 */\r
4da2e625 197 private JPanel getJPanelContentEast() {\r
198 if (jPanelContentEast == null) {\r
199 jPanelContentEast = new JPanel();\r
a13899c5 200 }\r
4da2e625 201 return jPanelContentEast;\r
a13899c5 202 }\r
203\r
204 /**\r
205 * This method initializes jPanel1 \r
206 * \r
207 * @return javax.swing.JPanel \r
208 */\r
4da2e625 209 private JPanel getJPanelContentSouth() {\r
210 if (jPanelContentSouth == null) {\r
a13899c5 211 FlowLayout flowLayout = new FlowLayout();\r
212 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
213 flowLayout.setHgap(15);\r
4da2e625 214 jPanelContentSouth = new JPanel();\r
215 jPanelContentSouth.setLayout(flowLayout);\r
216 jPanelContentSouth.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);\r
a13899c5 217 }\r
4da2e625 218 return jPanelContentSouth;\r
a13899c5 219 }\r
220\r
221 /**\r
222 * This method initializes jPanel2 \r
223 * \r
224 * @return javax.swing.JPanel \r
225 */\r
4da2e625 226 private JPanel getJPanelContentWest() {\r
227 if (jPanelContentWest == null) {\r
228 jPanelContentWest = new JPanel();\r
a13899c5 229 }\r
4da2e625 230 return jPanelContentWest;\r
a13899c5 231 }\r
232\r
233 /**\r
234 * This method initializes jPanel3 \r
235 * \r
236 * @return javax.swing.JPanel \r
237 */\r
4da2e625 238 private JPanel getJPanelContentNorth() {\r
239 if (jPanelContentNorth == null) {\r
240 jPanelContentNorth = new JPanel();\r
a13899c5 241 }\r
4da2e625 242 return jPanelContentNorth;\r
a13899c5 243 }\r
244\r
245 /**\r
246 * This method initializes jTabbedPane \r
247 * \r
248 * @return javax.swing.JTabbedPane \r
249 */\r
250 private JTabbedPane getJTabbedPane() {\r
251 if (jTabbedPane == null) {\r
252 jTabbedPane = new JTabbedPane();\r
3658f95e 253 jTabbedPane.addTab("General", null, getJPanelFdf(), null);\r
61919f8c 254 jTabbedPane.addTab("Advanced", null, getJPanelFvImages(), null);\r
a13899c5 255 \r
256 }\r
257 return jTabbedPane;\r
258 }\r
259\r
260 /**\r
261 * This method initializes jPanelFvImages \r
262 * \r
263 * @return javax.swing.JPanel \r
264 */\r
265 private JPanel getJPanelFvImages() {\r
266 if (jPanelFvImages == null) {\r
267 jPanelFvImages = new JPanel();\r
268 jPanelFvImages.setLayout(new BorderLayout());\r
269 jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.NORTH);\r
270// jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);\r
271 jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH);\r
272 jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER);\r
eb8ea829 273 jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() {\r
274 public void componentShown(java.awt.event.ComponentEvent e) {\r
275 fvImageParaTableModel.setRowCount(0);\r
276 fvPropertyTableModel.setRowCount(0);\r
277 \r
98c20797 278 if (ffc.getFvImagesFvImageCount("Attributes") == 0) {\r
eb8ea829 279 return;\r
280 }\r
98c20797 281 String[][] saa = new String[ffc.getFvImagesFvImageCount("Attributes")][2];\r
282 ffc.getFvImagesFvImages(saa, "Attributes");\r
283 \r
eb8ea829 284 int i = 0;\r
285 while (i < saa.length) {\r
286 fvImageParaTableModel.addRow(saa[i]);\r
287 ++i;\r
288 }\r
289 \r
290 saa = new String[ffc.getFvImagesNameValueCount()][2];\r
291 ffc.getFvImagesNameValues(saa);\r
292 for (int m = 0; m < saa.length; ++m) {\r
293 fvPropertyTableModel.addRow(saa[m]);\r
294 }\r
295 }\r
296 });\r
a13899c5 297 \r
298 }\r
299 return jPanelFvImages;\r
300 }\r
301\r
a13899c5 302 /**\r
303 * This method initializes jPanelFvImageN \r
304 * \r
305 * @return javax.swing.JPanel \r
306 */\r
307 private JPanel getJPanelFvImageN() {\r
308 if (jPanelFvImageN == null) {\r
4da2e625 309 jLabelFvPropValue = new JLabel();\r
310 jLabelFvPropValue.setText("Value");\r
311 jLabelFvPropValue.setEnabled(false);\r
312 jLabelFvPropValue.setPreferredSize(new java.awt.Dimension(38,20));\r
313 jLabelFvPropName = new JLabel();\r
314 jLabelFvPropName.setText("Name");\r
315 jLabelFvPropName.setEnabled(false);\r
316 jLabelFvPropName.setPreferredSize(new java.awt.Dimension(38,20));\r
a13899c5 317 FlowLayout flowLayout2 = new FlowLayout();\r
3658f95e 318 flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r
a13899c5 319 flowLayout2.setHgap(15);\r
320 jPanelFvImageN = new JPanel();\r
321 jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,100));\r
322 jPanelFvImageN.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));\r
323 jPanelFvImageN.setLayout(flowLayout2);\r
4da2e625 324 jPanelFvImageN.add(getJCheckBoxFvProperty(), null);\r
325 jPanelFvImageN.add(jLabelFvPropName, null);\r
326 jPanelFvImageN.add(getJTextFieldFvPropName(), null);\r
327 jPanelFvImageN.add(jLabelFvPropValue, null);\r
328 jPanelFvImageN.add(getJTextFieldFvPropValue(), null);\r
329 jPanelFvImageN.add(getJScrollPaneFvProp(), null);\r
330 jPanelFvImageN.add(getJPanelFvPropButtonGroup(), null);\r
a13899c5 331 }\r
332 return jPanelFvImageN;\r
333 }\r
334\r
a13899c5 335 /**\r
336 * This method initializes jPanelFvImageS \r
337 * \r
338 * @return javax.swing.JPanel \r
339 */\r
340 private JPanel getJPanelFvImageS() {\r
341 if (jPanelFvImageS == null) {\r
342 GridLayout gridLayout2 = new GridLayout();\r
343 gridLayout2.setRows(1);\r
344 jPanelFvImageS = new JPanel();\r
44053733 345 jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,190));\r
a13899c5 346 jPanelFvImageS.setLayout(gridLayout2);\r
4da2e625 347 jPanelFvImageS.add(getJScrollPaneFvInfo(), null);\r
a13899c5 348 }\r
349 return jPanelFvImageS;\r
350 }\r
351\r
352\r
353 /**\r
354 * This method initializes jCheckBox1 \r
355 * \r
356 * @return javax.swing.JCheckBox \r
357 */\r
4da2e625 358 private JCheckBox getJCheckBoxFvProperty() {\r
359 if (jCheckBoxFvProperty == null) {\r
360 jCheckBoxFvProperty = new JCheckBox();\r
3658f95e 361 jCheckBoxFvProperty.setText("Global FV Variables");\r
4da2e625 362 jCheckBoxFvProperty.addItemListener(new ItemListener(){\r
a13899c5 363\r
364 public void itemStateChanged(ItemEvent arg0) {\r
365 // TODO Auto-generated method stub\r
4da2e625 366 boolean seleted = jCheckBoxFvProperty.isSelected();\r
a13899c5 367 \r
4da2e625 368 jLabelFvPropName.setEnabled(seleted);\r
369 jTextFieldFvPropName.setEnabled(seleted);\r
370 jLabelFvPropValue.setEnabled(seleted);\r
371 jTextFieldFvPropValue.setEnabled(seleted);\r
372 jTableFvProp.setEnabled(seleted);\r
373 jButtonFvPropAdd.setEnabled(seleted);\r
374 jButtonFvPropDel.setEnabled(seleted);\r
a13899c5 375 \r
376 \r
377 }\r
378 \r
379 });\r
380 }\r
4da2e625 381 return jCheckBoxFvProperty;\r
a13899c5 382 }\r
383\r
384\r
385 /**\r
386 * This method initializes jTextField \r
387 * \r
388 * @return javax.swing.JTextField \r
389 */\r
4da2e625 390 private JTextField getJTextFieldFvPropName() {\r
391 if (jTextFieldFvPropName == null) {\r
392 jTextFieldFvPropName = new JTextField();\r
393 jTextFieldFvPropName.setPreferredSize(new java.awt.Dimension(100,20));\r
394 jTextFieldFvPropName.setEnabled(false);\r
a13899c5 395 }\r
4da2e625 396 return jTextFieldFvPropName;\r
a13899c5 397 }\r
398\r
399\r
400 /**\r
401 * This method initializes jTextField1 \r
402 * \r
403 * @return javax.swing.JTextField \r
404 */\r
4da2e625 405 private JTextField getJTextFieldFvPropValue() {\r
406 if (jTextFieldFvPropValue == null) {\r
407 jTextFieldFvPropValue = new JTextField();\r
408 jTextFieldFvPropValue.setPreferredSize(new java.awt.Dimension(100,20));\r
409 jTextFieldFvPropValue.setEnabled(false);\r
a13899c5 410 }\r
4da2e625 411 return jTextFieldFvPropValue;\r
a13899c5 412 }\r
413\r
414\r
415 /**\r
416 * This method initializes jButton \r
417 * \r
418 * @return javax.swing.JButton \r
419 */\r
4da2e625 420 private JButton getJButtonFvPropAdd() {\r
421 if (jButtonFvPropAdd == null) {\r
422 jButtonFvPropAdd = new JButton();\r
423 jButtonFvPropAdd.setPreferredSize(new java.awt.Dimension(80,20));\r
424 jButtonFvPropAdd.setEnabled(false);\r
425 jButtonFvPropAdd.setText("Add");\r
426 jButtonFvPropAdd.addActionListener(new AbstractAction() {\r
44053733 427 /**\r
428 * \r
429 */\r
430 private static final long serialVersionUID = 1L;\r
431\r
a13899c5 432 public void actionPerformed(ActionEvent e) {\r
4da2e625 433 if (jTextFieldFvPropName.getText().length() > 0 && jTextFieldFvPropValue.getText().length() > 0){\r
434 String[] row = {jTextFieldFvPropName.getText(), jTextFieldFvPropValue.getText()}; \r
a13899c5 435 fvPropertyTableModel.addRow(row);\r
d6d24759 436 docConsole.setSaved(false);\r
a13899c5 437 ffc.genFvImagesNameValue(row[0], row[1]);\r
438 }\r
439 }\r
440 });\r
441 }\r
4da2e625 442 return jButtonFvPropAdd;\r
a13899c5 443 }\r
444\r
445\r
446 /**\r
447 * This method initializes jScrollPane1 \r
448 * \r
449 * @return javax.swing.JScrollPane \r
450 */\r
4da2e625 451 private JScrollPane getJScrollPaneFvProp() {\r
452 if (jScrollPaneFvProp == null) {\r
453 jScrollPaneFvProp = new JScrollPane();\r
454 jScrollPaneFvProp.setPreferredSize(new java.awt.Dimension(350,55));\r
455 jScrollPaneFvProp.setViewportView(getJTableFvProp());\r
a13899c5 456 }\r
4da2e625 457 return jScrollPaneFvProp;\r
a13899c5 458 }\r
459\r
460\r
461 /**\r
462 * This method initializes jTable \r
463 * \r
464 * @return javax.swing.JTable \r
465 */\r
4da2e625 466 private JTable getJTableFvProp() {\r
467 if (jTableFvProp == null) {\r
a13899c5 468 fvPropertyTableModel = new DefaultTableModel();\r
4da2e625 469 jTableFvProp = new JTable(fvPropertyTableModel);\r
a13899c5 470 fvPropertyTableModel.addColumn("Name");\r
471 fvPropertyTableModel.addColumn("Value");\r
4da2e625 472 jTableFvProp.setRowHeight(20);\r
473 jTableFvProp.setEnabled(false);\r
a13899c5 474 \r
4da2e625 475 jTableFvProp.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
476 jTableFvProp.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 477 public void valueChanged(ListSelectionEvent e) {\r
478 if (e.getValueIsAdjusting()){\r
479 return;\r
480 }\r
481 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
482 if (lsm.isSelectionEmpty()) {\r
483 return;\r
484 }\r
485 else{\r
486// selectedRow = lsm.getMinSelectionIndex();\r
487 }\r
488 }\r
489 });\r
490 \r
4da2e625 491 jTableFvProp.getModel().addTableModelListener(new TableModelListener(){\r
a13899c5 492 public void tableChanged(TableModelEvent arg0) {\r
493 // TODO Auto-generated method stub\r
494 int row = arg0.getFirstRow();\r
495 TableModel m = (TableModel)arg0.getSource();\r
496 if (arg0.getType() == TableModelEvent.UPDATE){\r
497 \r
498 String name = m.getValueAt(row, 0) + "";\r
499 String value = m.getValueAt(row, 1) + "";\r
d6d24759 500 docConsole.setSaved(false);\r
a13899c5 501 ffc.updateFvImagesNameValue(row, name, value);\r
502 }\r
503 }\r
504 });\r
505 }\r
4da2e625 506 return jTableFvProp;\r
a13899c5 507 }\r
508\r
509\r
510 /**\r
511 * This method initializes jPanel4 \r
512 * \r
513 * @return javax.swing.JPanel \r
514 */\r
4da2e625 515 private JPanel getJPanelFvPropButtonGroup() {\r
516 if (jPanelFvPropButtonGroup == null) {\r
517 jPanelFvPropButtonGroup = new JPanel();\r
518 jPanelFvPropButtonGroup.setPreferredSize(new java.awt.Dimension(80,55));\r
a13899c5 519 \r
4da2e625 520 jPanelFvPropButtonGroup.add(getJButtonFvPropAdd(), null);\r
521 jPanelFvPropButtonGroup.add(getJButtonFvPropDel(), null);\r
a13899c5 522 }\r
4da2e625 523 return jPanelFvPropButtonGroup;\r
a13899c5 524 }\r
525\r
526\r
527 /**\r
528 * This method initializes jButton1 \r
529 * \r
530 * @return javax.swing.JButton \r
531 */\r
4da2e625 532 private JButton getJButtonFvPropDel() {\r
533 if (jButtonFvPropDel == null) {\r
534 jButtonFvPropDel = new JButton();\r
535 jButtonFvPropDel.setPreferredSize(new java.awt.Dimension(80,20));\r
536 jButtonFvPropDel.setEnabled(false);\r
537 jButtonFvPropDel.setText("Delete");\r
538 jButtonFvPropDel.addActionListener(new AbstractAction() {\r
44053733 539 /**\r
540 * \r
541 */\r
542 private static final long serialVersionUID = 1L;\r
543\r
a13899c5 544 public void actionPerformed(ActionEvent e) {\r
4da2e625 545 if (jTableFvProp.getSelectedRow() >= 0){\r
546 fvPropertyTableModel.removeRow(jTableFvProp.getSelectedRow());\r
d6d24759 547 docConsole.setSaved(false);\r
4da2e625 548 ffc.removeFvImagesNameValue(jTableFvProp.getSelectedRow());\r
a13899c5 549 }\r
550 }\r
551 });\r
552 }\r
4da2e625 553 return jButtonFvPropDel;\r
a13899c5 554 }\r
555\r
556\r
557 /**\r
558 * This method initializes jPanelFvImageC \r
559 * \r
560 * @return javax.swing.JPanel \r
561 */\r
562 private JPanel getJPanelFvImageC() {\r
563 if (jPanelFvImageC == null) {\r
4da2e625 564 jLabelFvParaName = new JLabel();\r
565 jLabelFvParaName.setPreferredSize(new Dimension(38, 20));\r
566 jLabelFvParaName.setEnabled(false);\r
567 jLabelFvParaName.setText("Name");\r
568 jLabelFvImageNames = new JLabel();\r
569 jLabelFvImageNames.setText("FV Image Names");\r
570 jLabelFvImageNames.setEnabled(false);\r
571 jLabelFvImageNames.setPreferredSize(new java.awt.Dimension(150,20));\r
572 jLabelFvParaType = new JLabel();\r
573 jLabelFvParaType.setText("Type");\r
574 jLabelFvParaType.setEnabled(false);\r
575 jLabelFvParaType.setPreferredSize(new java.awt.Dimension(70,20));\r
a13899c5 576 FlowLayout flowLayout3 = new FlowLayout();\r
577 flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r
578 flowLayout3.setHgap(5);\r
579 jPanelFvImageC = new JPanel();\r
580 jPanelFvImageC.setLayout(flowLayout3);\r
4da2e625 581 jPanelFvImageC.add(getJPanelFvImagePara(), null);\r
a13899c5 582 \r
4da2e625 583 jPanelFvImageC.add(getJPanelFvImageOpts(), null);\r
a13899c5 584 \r
585 }\r
586 return jPanelFvImageC;\r
587 }\r
588\r
589\r
590 /**\r
591 * This method initializes jCheckBox2 \r
592 * \r
593 * @return javax.swing.JCheckBox \r
594 */\r
4da2e625 595 private JCheckBox getJCheckBoxFvImagePara() {\r
596 if (jCheckBoxFvImagePara == null) {\r
597 jCheckBoxFvImagePara = new JCheckBox();\r
598 jCheckBoxFvImagePara.setText("FV Image Parameters");\r
599 jCheckBoxFvImagePara.setPreferredSize(new java.awt.Dimension(200,20));\r
600 jCheckBoxFvImagePara.addItemListener(new ItemListener(){\r
a13899c5 601\r
602 public void itemStateChanged(ItemEvent arg0) {\r
603 // TODO Auto-generated method stub\r
4da2e625 604 boolean seleted = jCheckBoxFvImagePara.isSelected();\r
a13899c5 605 \r
4da2e625 606 jLabelFvParaType.setEnabled(seleted);\r
607 jLabelFvImageNames.setEnabled(seleted);\r
608 jLabelFvParaName.setEnabled(seleted);\r
609 jComboBoxFvParaType.setEnabled(seleted);\r
610 jTextFieldFvParaName.setEnabled(seleted);\r
a13899c5 611 \r
4da2e625 612 jTableFvImageNames.setEnabled(seleted);\r
613 jButtonFvParaAdd.setEnabled(seleted);\r
614 jButtonFvParaDel.setEnabled(seleted);\r
a13899c5 615 \r
616 \r
617 }\r
618 \r
619 });\r
620 }\r
4da2e625 621 return jCheckBoxFvImagePara;\r
a13899c5 622 }\r
623\r
624\r
625 /**\r
626 * This method initializes jComboBox \r
627 * \r
628 * @return javax.swing.JComboBox \r
629 */\r
4da2e625 630 private JComboBox getJComboBoxFvParaType() {\r
631 if (jComboBoxFvParaType == null) {\r
632 jComboBoxFvParaType = new JComboBox();\r
98c20797 633// jComboBoxFvParaType.addItem("ImageName");\r
4da2e625 634 jComboBoxFvParaType.addItem("Attributes");\r
635 jComboBoxFvParaType.addItem("Options");\r
98c20797 636// jComboBoxFvParaType.addItem("Components");\r
4da2e625 637 jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20));\r
638 jComboBoxFvParaType.setEnabled(false);\r
639 jComboBoxFvParaType.addItemListener(new ItemListener() {\r
a13899c5 640\r
641 public void itemStateChanged(ItemEvent arg0) {\r
642 // TODO disable attribute settings when ValidImageNames selected.\r
643 \r
644 }\r
645 \r
646 });\r
647 }\r
4da2e625 648 return jComboBoxFvParaType;\r
a13899c5 649 }\r
650\r
651\r
652 /**\r
653 * This method initializes jTextField2 \r
654 * \r
655 * @return javax.swing.JTextField \r
656 */\r
4da2e625 657 private JTextField getJTextFieldFvParaName() {\r
658 if (jTextFieldFvParaName == null) {\r
659 jTextFieldFvParaName = new JTextField();\r
660 jTextFieldFvParaName.setPreferredSize(new java.awt.Dimension(140,20));\r
661 jTextFieldFvParaName.setEnabled(false);\r
a13899c5 662 }\r
4da2e625 663 return jTextFieldFvParaName;\r
a13899c5 664 }\r
665\r
666\r
667 /**\r
668 * This method initializes jButton2 \r
669 * \r
670 * @return javax.swing.JButton \r
671 */\r
4da2e625 672 private JButton getJButtonFvParaAdd() {\r
673 if (jButtonFvParaAdd == null) {\r
674 jButtonFvParaAdd = new JButton();\r
675 jButtonFvParaAdd.setPreferredSize(new Dimension(80, 20));\r
676 jButtonFvParaAdd.setEnabled(false);\r
677 jButtonFvParaAdd.setText("Add");\r
678 jButtonFvParaAdd.addActionListener(new AbstractAction() {\r
44053733 679 /**\r
680 * \r
681 */\r
682 private static final long serialVersionUID = 1L;\r
683\r
a13899c5 684 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 685 if (jTextFieldFvParaName.getText().length() > 0){\r
686 String[] row = {jTextFieldFvParaName.getText()}; \r
a13899c5 687 fvImageNameTableModel.addRow(row);\r
688 }\r
689 }\r
690 });\r
691 }\r
4da2e625 692 return jButtonFvParaAdd;\r
a13899c5 693 }\r
694\r
695\r
696 /**\r
697 * This method initializes jScrollPane2 \r
698 * \r
699 * @return javax.swing.JScrollPane \r
700 */\r
4da2e625 701 private JScrollPane getJScrollPaneFvImageNames() {\r
702 if (jScrollPaneFvImageNames == null) {\r
703 jScrollPaneFvImageNames = new JScrollPane();\r
704 jScrollPaneFvImageNames.setPreferredSize(new java.awt.Dimension(350,50));\r
705 jScrollPaneFvImageNames.setViewportView(getJTableFvImageNames());\r
a13899c5 706 }\r
4da2e625 707 return jScrollPaneFvImageNames;\r
a13899c5 708 }\r
709\r
710\r
711 /**\r
712 * This method initializes jTable1 \r
713 * \r
714 * @return javax.swing.JTable \r
715 */\r
4da2e625 716 private JTable getJTableFvImageNames() {\r
717 if (jTableFvImageNames == null) {\r
a13899c5 718 fvImageNameTableModel = new DefaultTableModel();\r
4da2e625 719 jTableFvImageNames = new JTable(fvImageNameTableModel);\r
720 jTableFvImageNames.setEnabled(false);\r
a13899c5 721 fvImageNameTableModel.addColumn("FV Image Name");\r
722 }\r
4da2e625 723 return jTableFvImageNames;\r
a13899c5 724 }\r
725\r
726\r
727 /**\r
728 * This method initializes jButton3 \r
729 * \r
730 * @return javax.swing.JButton \r
731 */\r
4da2e625 732 private JButton getJButtonFvParaDel() {\r
733 if (jButtonFvParaDel == null) {\r
734 jButtonFvParaDel = new JButton();\r
735 jButtonFvParaDel.setPreferredSize(new Dimension(80, 20));\r
736 jButtonFvParaDel.setEnabled(false);\r
737 jButtonFvParaDel.setText("Delete");\r
738 jButtonFvParaDel.addActionListener(new AbstractAction() {\r
44053733 739 /**\r
740 * \r
741 */\r
742 private static final long serialVersionUID = 1L;\r
743\r
a13899c5 744 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 745 if (jTableFvImageNames.getSelectedRow() >= 0){\r
a13899c5 746 \r
4da2e625 747 fvImageNameTableModel.removeRow(jTableFvImageNames.getSelectedRow());\r
a13899c5 748 }\r
749 }\r
750 });\r
751 }\r
4da2e625 752 return jButtonFvParaDel;\r
a13899c5 753 }\r
754\r
755\r
756\r
757 \r
4da2e625 758 private JPanel getJPanelFvImageOpts() {\r
a13899c5 759 \r
760\r
4da2e625 761 if (jPanelFvImageOpts == null) {\r
a13899c5 762 //ToDo add ButtonGroup for RadioButtons\r
4da2e625 763 jLabelFvImageOptValue = new JLabel();\r
764 jLabelFvImageOptValue.setEnabled(true);\r
765 jLabelFvImageOptValue.setText("Value");\r
766 jLabelFvImageOptValue.setPreferredSize(new Dimension(38, 20));\r
767 jLabelFvImageOptName = new JLabel();\r
768 jLabelFvImageOptName.setEnabled(true);\r
769 jLabelFvImageOptName.setText("Name");\r
770 jLabelFvImageOptName.setPreferredSize(new Dimension(38, 20));\r
771 jPanelFvImageOpts = new JPanel();\r
772 jPanelFvImageOpts.setPreferredSize(new java.awt.Dimension(480,150));\r
a13899c5 773 \r
4da2e625 774 jPanelFvImageOpts.setLayout(new FlowLayout());\r
a13899c5 775 \r
4da2e625 776 jPanelFvImageOpts.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));\r
777 jPanelFvImageOpts.add(getJCheckBoxFvImageOpts(), null);\r
778 jPanelFvImageOpts.add(jLabelFvImageOptName, null);\r
779 jPanelFvImageOpts.add(getJTextFieldFvImageOptName(), null);\r
780 jPanelFvImageOpts.add(jLabelFvImageOptValue, null);\r
781 jPanelFvImageOpts.add(getJTextFieldFvImageOptValue(), null);\r
782 jPanelFvImageOpts.add(getJScrollPane(), null);\r
783 jPanelFvImageOpts.add(getJPanelFvImageOptsButtonGroup(), null);\r
784 jPanelFvImageOpts.add(getJButtonAddFvImage(), null);\r
785 jPanelFvImageOpts.add(getJButtonDelFvImage(), null);\r
786 jPanelFvImageOpts.add(getJButtonUpdateFvImage(), null);\r
a13899c5 787 \r
788 \r
789 \r
790\r
791 \r
792 }\r
4da2e625 793 return jPanelFvImageOpts;\r
a13899c5 794 }\r
795\r
796\r
797 /**\r
798 * This method initializes jButton4 \r
799 * \r
800 * @return javax.swing.JButton \r
801 */\r
4da2e625 802 private JButton getJButtonAddFvImage() {\r
803 if (jButtonAddFvImage == null) {\r
804 jButtonAddFvImage = new JButton();\r
805 jButtonAddFvImage.setPreferredSize(new java.awt.Dimension(120,20));\r
a13899c5 806// jButton4.setEnabled(false);\r
4da2e625 807 jButtonAddFvImage.setText("Add FV Image");\r
808 jButtonAddFvImage.addActionListener(new AbstractAction() {\r
44053733 809 /**\r
810 * \r
811 */\r
812 private static final long serialVersionUID = 1L;\r
813\r
a13899c5 814 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 815 if (jTableFvInfo.isEditing()) {\r
816 jTableFvInfo.getCellEditor().stopCellEditing();\r
ae0d4fd2 817 }\r
4da2e625 818 if (jTableFvImageOpts.isEditing()) {\r
819 jTableFvImageOpts.getCellEditor().stopCellEditing();\r
ae0d4fd2 820 }\r
4da2e625 821 if (jTableFvImageNames.getRowCount()== 0){\r
a13899c5 822 return;\r
823 }\r
824 String imageName = " ";\r
4da2e625 825 for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){\r
826 imageName += (String)jTableFvImageNames.getValueAt(i, 0);\r
a13899c5 827 imageName += " ";\r
828 }\r
829 imageName = imageName.trim();\r
830 \r
4da2e625 831 if (!jCheckBoxFvImageOpts.isSelected() && jComboBoxFvParaType.getSelectedIndex() != 0){\r
a13899c5 832 return;\r
833 \r
834 }\r
835 \r
44053733 836 LinkedHashMap<String, String> m = null;\r
4da2e625 837 if (jCheckBoxFvImageOpts.isSelected()) {\r
44053733 838 m = new LinkedHashMap<String, String>();\r
ae0d4fd2 839 getOptionNameValue(m);\r
44053733 840 }\r
4da2e625 841 ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);\r
d6d24759 842 docConsole.setSaved(false);\r
4da2e625 843 Object[] row = {imageName, jComboBoxFvParaType.getSelectedItem()};\r
ae0d4fd2 844 fvImageParaTableModel.addRow(row); \r
a13899c5 845 }\r
846 });\r
847 }\r
4da2e625 848 return jButtonAddFvImage;\r
a13899c5 849 }\r
850\r
851\r
852 /**\r
853 * This method initializes jScrollPane3 \r
854 * \r
855 * @return javax.swing.JScrollPane \r
856 */\r
4da2e625 857 private JScrollPane getJScrollPaneFvInfo() {\r
858 if (jScrollPaneFvInfo == null) {\r
859 jScrollPaneFvInfo = new JScrollPane();\r
860 jScrollPaneFvInfo.setPreferredSize(new java.awt.Dimension(480,150));\r
861 jScrollPaneFvInfo.setViewportView(getJTableFvInfo());\r
a13899c5 862 }\r
4da2e625 863 return jScrollPaneFvInfo;\r
a13899c5 864 }\r
865\r
866\r
867 /**\r
868 * This method initializes jTable2 \r
869 * \r
870 * @return javax.swing.JTable \r
871 */\r
4da2e625 872 private JTable getJTableFvInfo() {\r
873 if (jTableFvInfo == null) {\r
a13899c5 874 fvImageParaTableModel = new ImageParaTableModel();\r
4da2e625 875 jTableFvInfo = new JTable(fvImageParaTableModel);\r
a13899c5 876 fvImageParaTableModel.addColumn("FvImageNames");\r
877 fvImageParaTableModel.addColumn("Type");\r
ae0d4fd2 878 \r
a13899c5 879 \r
98c20797 880// TableColumn typeCol = jTableFvInfo.getColumnModel().getColumn(1);\r
881// JComboBox cb = new JComboBox();\r
882// cb.addItem("ImageName");\r
883// cb.addItem("Attributes");\r
884// cb.addItem("Options");\r
885// cb.addItem("Components");\r
886// typeCol.setCellEditor(new DefaultCellEditor(cb));\r
a13899c5 887 \r
4da2e625 888 jTableFvInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
889 jTableFvInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 890 public void valueChanged(ListSelectionEvent e) {\r
891 if (e.getValueIsAdjusting()){\r
892 return;\r
893 }\r
894 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
895 if (lsm.isSelectionEmpty()) {\r
896 return;\r
897 }\r
898 else{\r
ae0d4fd2 899 int selectedRow = lsm.getMinSelectionIndex();\r
61919f8c 900 if (fvImageParaTableModel.getValueAt(selectedRow, 1).equals("ImageName")) {\r
901 String[] fvNames = fvImageParaTableModel.getValueAt(selectedRow, 0).toString().split(" ");\r
902 for (int i = 0; i < fvNames.length; ++i) {\r
903 String[] row = {fvNames[i]};\r
904 fvImageNameTableModel.addRow(row);\r
905 }\r
906 return;\r
907 }\r
ae0d4fd2 908 LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();\r
909 ffc.getFvImagesFvImageOptions(selectedRow, optionMap);\r
910 if (optionMap.size() > 0){\r
911 fvOptionTableModel.setRowCount(0);\r
912 Set<String> key = optionMap.keySet();\r
913 Iterator<String> i = key.iterator();\r
914 while (i.hasNext()) {\r
915 \r
916 String k = (String)i.next();\r
917 String[] row = {k, optionMap.get(k)};\r
918 \r
919 fvOptionTableModel.addRow(row);\r
920 }\r
a13899c5 921 }\r
ae0d4fd2 922 \r
a13899c5 923 }\r
924 }\r
925 });\r
ae0d4fd2 926 \r
927 \r
a13899c5 928 }\r
4da2e625 929 return jTableFvInfo;\r
a13899c5 930 }\r
931\r
932\r
933 /**\r
934 * This method initializes jButton6 \r
935 * \r
936 * @return javax.swing.JButton \r
937 */\r
4da2e625 938 private JButton getJButtonDelFvImage() {\r
939 if (jButtonDelFvImage == null) {\r
940 jButtonDelFvImage = new JButton();\r
941 jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(120,20));\r
98c20797 942 jButtonDelFvImage.setEnabled(false);\r
4da2e625 943 jButtonDelFvImage.setText("Delete Row");\r
944 jButtonDelFvImage.addActionListener(new AbstractAction() {\r
44053733 945 /**\r
946 * \r
947 */\r
948 private static final long serialVersionUID = 1L;\r
a13899c5 949\r
950 public void actionPerformed(ActionEvent arg0) {\r
951 // TODO Auto-generated method stub\r
4da2e625 952 if (jTableFvInfo.getSelectedRow() >= 0 ) {\r
953 ffc.removeFvImagesFvImage(jTableFvInfo.getSelectedRow());\r
954 fvImageParaTableModel.removeRow(jTableFvInfo.getSelectedRow());\r
d6d24759 955 docConsole.setSaved(false);\r
a13899c5 956 }\r
957 }\r
958 \r
959 });\r
960 }\r
4da2e625 961 return jButtonDelFvImage;\r
a13899c5 962 }\r
963\r
964\r
965 /**\r
966 * This method initializes jCheckBox3 \r
967 * \r
968 * @return javax.swing.JCheckBox \r
969 */\r
4da2e625 970 private JCheckBox getJCheckBoxFvImageOpts() {\r
971 if (jCheckBoxFvImageOpts == null) {\r
972 jCheckBoxFvImageOpts = new JCheckBox();\r
973 jCheckBoxFvImageOpts.setText("FV Image Options");\r
974 jCheckBoxFvImageOpts.addItemListener(new ItemListener(){\r
a13899c5 975\r
976 public void itemStateChanged(ItemEvent arg0) {\r
977 // TODO Auto-generated method stub\r
1800d80f 978// boolean selected = jCheckBox3.isSelected();\r
a13899c5 979 \r
4da2e625 980 if (!jCheckBoxFvImagePara.isSelected() || jComboBoxFvParaType.getSelectedIndex() == 0) {\r
a13899c5 981 return;\r
982 }\r
983 \r
a13899c5 984 }\r
985 \r
986 });\r
987 }\r
4da2e625 988 return jCheckBoxFvImageOpts;\r
a13899c5 989 }\r
990\r
991\r
a13899c5 992 /**\r
993 * This method initializes jPanel6 \r
994 * \r
995 * @return javax.swing.JPanel \r
996 */\r
4da2e625 997 private JPanel getJPanelFvImagePara() {\r
998 if (jPanelFvImagePara == null) {\r
a13899c5 999 StarLabel starLabel = new StarLabel();\r
1000 starLabel.setVisible(false);\r
4da2e625 1001 jPanelFvImagePara = new JPanel();\r
1002 jPanelFvImagePara.setPreferredSize(new java.awt.Dimension(480,120));\r
1003 jPanelFvImagePara.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
1004 jPanelFvImagePara.add(getJCheckBoxFvImagePara(), null);\r
1005 jPanelFvImagePara.add(jLabelFvParaType, null);\r
1006 jPanelFvImagePara.add(getJComboBoxFvParaType(), null);\r
1007 jPanelFvImagePara.add(new StarLabel(), null);\r
1008 jPanelFvImagePara.add(jLabelFvImageNames, null);\r
1009 jPanelFvImagePara.add(jLabelFvParaName, null);\r
1010 jPanelFvImagePara.add(getJTextFieldFvParaName(), null);\r
1011 jPanelFvImagePara.add(getJButtonFvParaAdd(), null);\r
1012 jPanelFvImagePara.add(getJScrollPaneFvImageNames(), null);\r
1013 jPanelFvImagePara.add(getJButtonFvParaDel(), null);\r
a13899c5 1014 }\r
4da2e625 1015 return jPanelFvImagePara;\r
a13899c5 1016 }\r
1017\r
1018 /**\r
1019 * This method initializes jPanel7 \r
1020 * \r
1021 * @return javax.swing.JPanel \r
1022 */\r
4da2e625 1023 private JPanel getJPanelFdf() {\r
1024 if (jPanelFdf == null) {\r
4da2e625 1025 jPanelFdf = new JPanel();\r
3658f95e 1026 jPanelFdf.setLayout(new BorderLayout());\r
1027\r
1028 jPanelFdf.add(getJPanelFdfN(), java.awt.BorderLayout.NORTH);\r
1029 jPanelFdf.add(getJPanelFdfS(), java.awt.BorderLayout.SOUTH);\r
1030 jPanelFdf.add(getJSplitPaneFdfC(), java.awt.BorderLayout.CENTER);\r
2b70a636 1031 jPanelFdf.addComponentListener(new ComponentAdapter(){\r
1032 public void componentShown(ComponentEvent e) {\r
3658f95e 1033// if (ffc.getFlashDefinitionFile() != null) {\r
1034// jTextFieldFdf.setText(ffc.getFlashDefinitionFile());\r
2b70a636 1035// initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText());\r
1036// \r
3658f95e 1037// }\r
2b70a636 1038 }\r
1039 public void componentHidden(ComponentEvent e) {\r
1040 if (jCheckBoxFdf.isSelected()) {\r
1041 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
1042 }\r
1043 }\r
1044 });\r
a13899c5 1045 }\r
4da2e625 1046 return jPanelFdf;\r
a13899c5 1047 }\r
1048\r
1049 /**\r
1050 * This method initializes jCheckBox \r
1051 * \r
1052 * @return javax.swing.JCheckBox \r
1053 */\r
4da2e625 1054 private JCheckBox getJCheckBoxFdf() {\r
1055 if (jCheckBoxFdf == null) {\r
1056 jCheckBoxFdf = new JCheckBox();\r
1057 jCheckBoxFdf.setText("Flash Definition File");\r
1058 jCheckBoxFdf.addItemListener(new ItemListener() {\r
a13899c5 1059\r
1060 public void itemStateChanged(ItemEvent arg0) {\r
1061 // TODO Auto-generated method stub\r
4da2e625 1062 if (jCheckBoxFdf.isSelected()){\r
1063 jTextFieldFdf.setEnabled(true);\r
1064 jButtonFdfBrowse.setEnabled(true);\r
a13899c5 1065 }\r
1066 else {\r
1067 \r
4da2e625 1068 jTextFieldFdf.setEnabled(false);\r
1069 jButtonFdfBrowse.setEnabled(false);\r
a13899c5 1070 }\r
1071 }\r
1072 });\r
1073 }\r
4da2e625 1074 return jCheckBoxFdf;\r
a13899c5 1075 }\r
1076\r
1077 /**\r
1078 * This method initializes jTextField3 \r
1079 * \r
1080 * @return javax.swing.JTextField \r
1081 */\r
4da2e625 1082 private JTextField getJTextFieldFdf() {\r
1083 if (jTextFieldFdf == null) {\r
1084 jTextFieldFdf = new JTextField();\r
1085 jTextFieldFdf.setEnabled(false);\r
2b70a636 1086 jTextFieldFdf.setEditable(false);\r
4da2e625 1087 jTextFieldFdf.setPreferredSize(new Dimension(300, 20));\r
1088 jTextFieldFdf.addFocusListener(new java.awt.event.FocusAdapter() {\r
908b1c05 1089 public void focusLost(java.awt.event.FocusEvent e) {\r
4da2e625 1090 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
908b1c05 1091 }\r
1092 });\r
a13899c5 1093 }\r
4da2e625 1094 return jTextFieldFdf;\r
a13899c5 1095 }\r
1096\r
1097 /**\r
1098 * This method initializes jButton5 \r
1099 * \r
1100 * @return javax.swing.JButton \r
1101 */\r
4da2e625 1102 private JButton getJButtonFdfBrowse() {\r
1103 if (jButtonFdfBrowse == null) {\r
1104 jButtonFdfBrowse = new JButton();\r
1105 jButtonFdfBrowse.setEnabled(false);\r
1106 jButtonFdfBrowse.setText("Browse");\r
1107 jButtonFdfBrowse.setPreferredSize(new Dimension(78, 20));\r
1108 jButtonFdfBrowse.addActionListener(new AbstractAction(){\r
44053733 1109 /**\r
1110 * \r
1111 */\r
1112 private static final long serialVersionUID = 1L;\r
1113\r
a13899c5 1114 public void actionPerformed(ActionEvent e) {\r
1115 // TODO Auto-generated method stub\r
908b1c05 1116 String wsDir = System.getenv("WORKSPACE");\r
1117 JFileChooser chooser = new JFileChooser(wsDir);\r
a13899c5 1118 chooser.setMultiSelectionEnabled(false);\r
1119 chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r
1120 int retval = chooser.showOpenDialog(frame);\r
1121 if (retval == JFileChooser.APPROVE_OPTION) {\r
1122\r
1123 File theFile = chooser.getSelectedFile();\r
908b1c05 1124 String filePath = theFile.getPath();\r
1125 if (!filePath.startsWith(wsDir)) {\r
1126 JOptionPane.showMessageDialog(frame, "You can only select files in current WORKSPACE.");\r
1127 return;\r
1128 }\r
4da2e625 1129 jTextFieldFdf.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/'));\r
3658f95e 1130 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
1131 docConsole.setSaved(false);\r
2b70a636 1132 initFvInFdfTable(filePath);\r
a13899c5 1133 }\r
1134 }\r
1135 \r
1136 });\r
1137 }\r
4da2e625 1138 return jButtonFdfBrowse;\r
a13899c5 1139 }\r
eb8ea829 1140 \r
1141 private void initFvAdditionalTable() {\r
98c20797 1142 Vector<String> vFvNames = new Vector<String>();\r
1143 ffc.getFvImagesFvImageFvImageNames(vFvNames);\r
1144 for (int i = 0; i < vFvNames.size(); ++i) {\r
1145 String fvName = vFvNames.get(i);\r
1146 if (fvNameExists(fvName)) {\r
1147 continue;\r
1148 }\r
1149 HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
1150 ffc.getFvImagesFvImageOptions(fvName, mFvOpts);\r
1151 String bSize = "";\r
1152 String numBlks = "";\r
1153 String fvSize = "";\r
1154 String fvFile = "";\r
1155 if (mFvOpts.get("EFI_FILE_NAME") != null) {\r
1156 fvFile = mFvOpts.get("EFI_FILE_NAME");\r
1157 }\r
1158 if (mFvOpts.get("EFI_BLOCK_SIZE") != null && mFvOpts.get("EFI_NUM_BLOCKS") != null) {\r
1159 bSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
1160 numBlks = mFvOpts.get("EFI_NUM_BLOCKS");\r
1161 boolean blockSizeWellFormat = true;\r
1162 boolean numOfBlockWellFormat = true;\r
1163 if (!DataValidation.isHexDoubleWordDataType(bSize) && !DataValidation.isInt(bSize)) {\r
1164 blockSizeWellFormat = false;\r
1165 JOptionPane.showMessageDialog(frame, fvName + " block size bad format.");\r
1166 } \r
1167 if (!DataValidation.isHexDoubleWordDataType(numBlks) && !DataValidation.isInt(numBlks)) {\r
1168 numOfBlockWellFormat = false;\r
1169 JOptionPane.showMessageDialog(frame, fvName + " number of blocks bad format.");\r
1170 }\r
1171 if (blockSizeWellFormat && numOfBlockWellFormat) {\r
1172 int size = Integer.decode(bSize);\r
1173 int num = Integer.decode(numBlks);\r
1174 fvSize = size*num + "";\r
1175 }\r
1176 }\r
1177 fvAdditionalTableModel.addRow(new String[]{fvName, fvSize, fvFile});\r
1178 addTabForFv(new FvInfoFromFdf(fvName, "", ""));\r
1179 }\r
eb8ea829 1180 }\r
a13899c5 1181\r
2b70a636 1182 private void initFvInFdfTable(String fdfPath){\r
1183 Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
1184 getFvInfoFromFdf(fdfPath, vFvInfo);\r
701d95b3 1185 getFlashInfoFromFdf (fdfPath);\r
1186 if (!erasePolarity.equals("1") && !erasePolarity.equals("0")) {\r
1187 JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid Erase Polarity.");\r
1188 }\r
1189 else {\r
1190 ffc.setTypedFvImageNameValue("Attributes", "ErasePolarity", erasePolarity);\r
1191 }\r
1192 \r
98c20797 1193 // BugBug: assume all blocks have same size;\r
701d95b3 1194 \r
1195 String blkSize = "0x10000";\r
1196 if (vBlockSize.size() > 0) {\r
1197 blkSize = vBlockSize.get(0);\r
1198 if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
1199 JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");\r
1200 blkSize = "0x10000";\r
1201 }\r
1202 }\r
1203 determinedFvBlockSize = blkSize;\r
98c20797 1204 \r
2b70a636 1205 getFvInFdfTableModel().setRowCount(0);\r
1206 for (int j = 0; j < vFvInfo.size(); ++j) {\r
1207 FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
1208 String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
701d95b3 1209 // if FV addtional table contains the same FV from fdf file, remove that row.\r
1210 for (int k = 0; k < jTableFvAdditional.getRowCount(); ++k) {\r
1211 if (fvAdditionalTableModel.getValueAt(k, 0).equals(row[0])) {\r
1212 fvAdditionalTableModel.removeRow(k);\r
1213 }\r
1214 }\r
2b70a636 1215 getFvInFdfTableModel().addRow(row);\r
98c20797 1216 try {\r
1217 int blockSize = Integer.decode(blkSize);\r
1218 int fvSize = Integer.decode(row[1]);\r
1219 int numBlocks = fvSize/blockSize;\r
701d95b3 1220 HashMap<String, String> mOptions = new HashMap<String, String>();\r
98c20797 1221 // if no options for this FV before, generate a new options entry for this FV.\r
1222 if (ffc.getFvImagesFvImageWithName(row[0], "Options") == null) {\r
701d95b3 1223 \r
98c20797 1224 mOptions.put("EFI_BLOCK_SIZE", blkSize);\r
1225 mOptions.put("EFI_NUM_BLOCKS", numBlocks+"");\r
1226 mOptions.put("EFI_FILE_NAME", row[2]);\r
1227 ffc.genFvImagesFvImage(new String[]{row[0]}, "Options", mOptions);\r
1228 memModified = true;\r
1229 }\r
1230 else {\r
701d95b3 1231 ffc.getFvImagesFvImageOptions(row[0], mOptions);\r
1232 if (mOptions.get("EFI_BLOCK_SIZE") == null || !mOptions.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize)) {\r
1233 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize);\r
1234 memModified = true;\r
1235 }\r
1236 if (mOptions.get("EFI_NUM_BLOCKS") == null || Integer.decode(mOptions.get("EFI_NUM_BLOCKS")) != numBlocks) {\r
1237 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + "");\r
1238 memModified = true;\r
1239 }\r
1240 if (mOptions.get("EFI_FILE_NAME") == null || !mOptions.get("EFI_FILE_NAME").equals(row[2])) {\r
1241 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2]);\r
1242 memModified = true;\r
1243 }\r
1244 \r
98c20797 1245 }\r
1246 }\r
1247 catch (NumberFormatException e){\r
1248 JOptionPane.showMessageDialog(frame, e.getMessage());\r
1249 }\r
2b70a636 1250 }\r
1251\r
1252 for (int k = 0; k < vFvInfo.size(); ++k) {\r
1253 FvInfoFromFdf fvInfo = vFvInfo.get(k);\r
1254 addTabForFv(fvInfo);\r
1255 }\r
98c20797 1256 \r
2b70a636 1257 }\r
1258 \r
1259 private void addTabForFv (FvInfoFromFdf fvInfo) {\r
1260 String fvName = fvInfo.getFvName();\r
1261 String outputFile = fvInfo.getEfiFileName();\r
eb8ea829 1262 int index = jTabbedPane.indexOfTab(fvName);\r
1263 if (index >= startIndexOfDynamicTab) {\r
1264 return;\r
2b70a636 1265 }\r
1266 jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null);\r
1267 }\r
44053733 1268 /**\r
ae0d4fd2 1269 * This method initializes jTextField4 \r
44053733 1270 * \r
ae0d4fd2 1271 * @return javax.swing.JTextField \r
44053733 1272 */\r
4da2e625 1273 private JTextField getJTextFieldFvImageOptName() {\r
1274 if (jTextFieldFvImageOptName == null) {\r
1275 jTextFieldFvImageOptName = new JTextField();\r
1276 jTextFieldFvImageOptName.setEnabled(true);\r
1277 jTextFieldFvImageOptName.setPreferredSize(new Dimension(100, 20));\r
44053733 1278 }\r
4da2e625 1279 return jTextFieldFvImageOptName;\r
ae0d4fd2 1280 }\r
1281\r
1282 /**\r
1283 * This method initializes jTextField5 \r
1284 * \r
1285 * @return javax.swing.JTextField \r
1286 */\r
4da2e625 1287 private JTextField getJTextFieldFvImageOptValue() {\r
1288 if (jTextFieldFvImageOptValue == null) {\r
1289 jTextFieldFvImageOptValue = new JTextField();\r
1290 jTextFieldFvImageOptValue.setEnabled(true);\r
1291 jTextFieldFvImageOptValue.setPreferredSize(new Dimension(100, 20));\r
ae0d4fd2 1292 }\r
4da2e625 1293 return jTextFieldFvImageOptValue;\r
ae0d4fd2 1294 }\r
1295\r
1296 /**\r
1297 * This method initializes jPanel8 \r
1298 * \r
1299 * @return javax.swing.JPanel \r
1300 */\r
4da2e625 1301 private JPanel getJPanelFvImageOptsButtonGroup() {\r
1302 if (jPanelFvImageOptsButtonGroup == null) {\r
1303 jPanelFvImageOptsButtonGroup = new JPanel();\r
1304 jPanelFvImageOptsButtonGroup.setPreferredSize(new Dimension(80, 55));\r
1305 jPanelFvImageOptsButtonGroup.add(getJButtonFvImageOptAdd(), null);\r
1306 jPanelFvImageOptsButtonGroup.add(getJButtonFvImageOptDel(), null);\r
ae0d4fd2 1307 }\r
4da2e625 1308 return jPanelFvImageOptsButtonGroup;\r
ae0d4fd2 1309 }\r
1310\r
1311 /**\r
1312 * This method initializes jButton7 \r
1313 * \r
1314 * @return javax.swing.JButton \r
1315 */\r
4da2e625 1316 private JButton getJButtonFvImageOptAdd() {\r
1317 if (jButtonFvImageOptAdd == null) {\r
1318 jButtonFvImageOptAdd = new JButton();\r
1319 jButtonFvImageOptAdd.setEnabled(true);\r
1320 jButtonFvImageOptAdd.setText("Add");\r
1321 jButtonFvImageOptAdd.setPreferredSize(new Dimension(80, 20));\r
1322 jButtonFvImageOptAdd.addActionListener(new AbstractAction() {\r
ae0d4fd2 1323 /**\r
1324 * \r
1325 */\r
1326 private static final long serialVersionUID = 1L;\r
1327\r
1328 public void actionPerformed(ActionEvent e) {\r
4da2e625 1329 if (jTextFieldFvImageOptName.getText().length() > 0 && jTextFieldFvImageOptValue.getText().length() > 0){\r
1330 String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()}; \r
ae0d4fd2 1331 fvOptionTableModel.addRow(row);\r
1332 }\r
1333 }\r
1334 });\r
1335 }\r
4da2e625 1336 return jButtonFvImageOptAdd;\r
ae0d4fd2 1337 }\r
1338\r
1339 /**\r
1340 * This method initializes jButton8 \r
1341 * \r
1342 * @return javax.swing.JButton \r
1343 */\r
4da2e625 1344 private JButton getJButtonFvImageOptDel() {\r
1345 if (jButtonFvImageOptDel == null) {\r
1346 jButtonFvImageOptDel = new JButton();\r
1347 jButtonFvImageOptDel.setEnabled(true);\r
1348 jButtonFvImageOptDel.setText("Delete");\r
1349 jButtonFvImageOptDel.setPreferredSize(new Dimension(80, 20));\r
1350 jButtonFvImageOptDel.addActionListener(new AbstractAction() {\r
ae0d4fd2 1351 /**\r
1352 * \r
1353 */\r
1354 private static final long serialVersionUID = 1L;\r
1355\r
1356 public void actionPerformed(ActionEvent e) {\r
4da2e625 1357 if (jTableFvImageOpts.getSelectedRow() >= 0){\r
1358 fvOptionTableModel.removeRow(jTableFvProp.getSelectedRow());\r
ae0d4fd2 1359 }\r
1360 }\r
1361 });\r
1362 }\r
4da2e625 1363 return jButtonFvImageOptDel;\r
ae0d4fd2 1364 }\r
1365\r
1366 /**\r
1367 * This method initializes jScrollPane \r
1368 * \r
1369 * @return javax.swing.JScrollPane \r
1370 */\r
1371 private JScrollPane getJScrollPane() {\r
1372 if (jScrollPane == null) {\r
1373 jScrollPane = new JScrollPane();\r
1374 jScrollPane.setPreferredSize(new java.awt.Dimension(350,80));\r
4da2e625 1375 jScrollPane.setViewportView(getJTableFvImageOpts());\r
ae0d4fd2 1376 }\r
1377 return jScrollPane;\r
1378 }\r
1379\r
1380 /**\r
1381 * This method initializes jTable3 \r
1382 * \r
1383 * @return javax.swing.JTable \r
1384 */\r
4da2e625 1385 private JTable getJTableFvImageOpts() {\r
1386 if (jTableFvImageOpts == null) {\r
ae0d4fd2 1387 fvOptionTableModel = new DefaultTableModel();\r
1388 fvOptionTableModel.addColumn("Name");\r
1389 fvOptionTableModel.addColumn("Value");\r
4da2e625 1390 jTableFvImageOpts = new JTable(fvOptionTableModel);\r
ae0d4fd2 1391\r
4da2e625 1392 jTableFvImageOpts.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
1393 jTableFvImageOpts.setRowHeight(20);\r
ae0d4fd2 1394 \r
1395 }\r
4da2e625 1396 return jTableFvImageOpts;\r
ae0d4fd2 1397 }\r
1398\r
1399 /**\r
1400 * This method initializes jButton9 \r
1401 * \r
1402 * @return javax.swing.JButton \r
1403 */\r
4da2e625 1404 private JButton getJButtonUpdateFvImage() {\r
1405 if (jButtonUpdateFvImage == null) {\r
1406 jButtonUpdateFvImage = new JButton();\r
1407 jButtonUpdateFvImage.setPreferredSize(new Dimension(120, 20));\r
1408 jButtonUpdateFvImage.setActionCommand("Update");\r
98c20797 1409 jButtonUpdateFvImage.setEnabled(false);\r
4da2e625 1410 jButtonUpdateFvImage.setText("Update FV");\r
1411 jButtonUpdateFvImage.addActionListener(new java.awt.event.ActionListener() {\r
ae0d4fd2 1412 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 1413 int row = jTableFvInfo.getSelectedRow();\r
1414 if (jTableFvInfo.isEditing()) {\r
1415 jTableFvInfo.getCellEditor().stopCellEditing();\r
ae0d4fd2 1416 }\r
4da2e625 1417 if (jTableFvImageOpts.isEditing()) {\r
1418 jTableFvImageOpts.getCellEditor().stopCellEditing();\r
ae0d4fd2 1419 }\r
1420 \r
1421 //ToDo Check data validity before update\r
1422 String name = fvImageParaTableModel.getValueAt(row, 0) + "";\r
1423 String type = fvImageParaTableModel.getValueAt(row, 1) + "";\r
1424 \r
1425 LinkedHashMap<String, String> lhm = new LinkedHashMap<String, String>();\r
1426 getOptionNameValue(lhm);\r
1427 \r
d6d24759 1428 docConsole.setSaved(false);\r
ae0d4fd2 1429 ffc.updateFvImagesFvImage(row, name.split(" "), type, lhm);\r
1430 \r
1431 }\r
1432 });\r
1433 }\r
4da2e625 1434 return jButtonUpdateFvImage;\r
44053733 1435 }\r
1436\r
3658f95e 1437// private JButton getJButtonTest() {\r
1438// if (jButtonTest == null) {\r
1439// jButtonTest = new JButton();\r
1440// jButtonTest.addActionListener(new java.awt.event.ActionListener() {\r
1441// public void actionPerformed(java.awt.event.ActionEvent e) {\r
1442// docConsole.setSaved(false);\r
1443// String[][] includeModules = {{"1", "a"}, {"2", "b"}};\r
1444// ffc.genBuildOptionsUserExtensions("FV_RECOVERY", "FvRecovery.inf", null, includeModules);\r
1445// int i = ffc.getUserExtsIncModCount("FV_RECOVERY");\r
1446// String[][] saa = new String[i][2];\r
1447// ffc.getUserExtsIncMods("FV_RECOVERY", saa);\r
1448// jTextFieldFdf.setText(saa[0][0] + saa[0][1] + saa[1][0] + saa[1][1]);\r
1449// \r
1450// }\r
1451// });\r
1452// }\r
1453// return jButtonTest;\r
1454// }\r
1455\r
1456 /**\r
1457 * This method initializes jPanelFdfN \r
1458 * \r
1459 * @return javax.swing.JPanel \r
1460 */\r
1461 private JPanel getJPanelFdfN() {\r
1462 if (jPanelFdfN == null) {\r
1463 jPanelFdfN = new JPanel();\r
1464 jPanelFdfN.add(getJCheckBoxFdf(), null);\r
1465 jPanelFdfN.add(getJTextFieldFdf(), null);\r
1466 jPanelFdfN.add(getJButtonFdfBrowse(), null);\r
1467 }\r
1468 return jPanelFdfN;\r
1469 }\r
1470\r
1471 /**\r
1472 * This method initializes jPanelFdfS \r
1473 * \r
1474 * @return javax.swing.JPanel \r
1475 */\r
1476 private JPanel getJPanelFdfS() {\r
1477 if (jPanelFdfS == null) {\r
1478 FlowLayout flowLayout4 = new FlowLayout();\r
1479 flowLayout4.setAlignment(java.awt.FlowLayout.RIGHT);\r
1480 jPanelFdfS = new JPanel();\r
1481 jPanelFdfS.setLayout(flowLayout4);\r
1482 jPanelFdfS.add(getJButtonAddFv(), null);\r
1483 jPanelFdfS.add(getJButtonDelFv(), null);\r
1484 jPanelFdfS.add(getJButtonAddFvOptions(), null);\r
1485 }\r
1486 return jPanelFdfS;\r
1487 }\r
1488\r
1489 /**\r
1490 * This method initializes jSplitPaneFdfC \r
1491 * \r
1492 * @return javax.swing.JSplitPane \r
1493 */\r
1494 private JSplitPane getJSplitPaneFdfC() {\r
1495 if (jSplitPaneFdfC == null) {\r
1496 jSplitPaneFdfC = new JSplitPane();\r
1497 jSplitPaneFdfC.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
1498 jSplitPaneFdfC.setDividerSize(5);\r
1499 jSplitPaneFdfC.setTopComponent(getJPanelFdfCTop());\r
1500 jSplitPaneFdfC.setBottomComponent(getJPanelFdfCBottom());\r
1501 jSplitPaneFdfC.setDividerLocation(280);\r
1502 }\r
1503 return jSplitPaneFdfC;\r
1504 }\r
1505\r
1506 /**\r
1507 * This method initializes jPanelFdfCTop \r
1508 * \r
1509 * @return javax.swing.JPanel \r
1510 */\r
1511 private JPanel getJPanelFdfCTop() {\r
1512 if (jPanelFdfCTop == null) {\r
1513 jPanelFdfCTop = new JPanel();\r
1514 jPanelFdfCTop.setLayout(new BorderLayout());\r
1515 jPanelFdfCTop.add(getJPanelFdfCTopN(), java.awt.BorderLayout.NORTH);\r
1516 jPanelFdfCTop.add(getJPanelFdfCTopS(), java.awt.BorderLayout.SOUTH);\r
1517 jPanelFdfCTop.add(getJPanelFdfCTopC(), java.awt.BorderLayout.CENTER);\r
1518 }\r
1519 return jPanelFdfCTop;\r
1520 }\r
1521\r
1522 /**\r
1523 * This method initializes jPanelFdfCBottom \r
1524 * \r
1525 * @return javax.swing.JPanel \r
1526 */\r
1527 private JPanel getJPanelFdfCBottom() {\r
1528 if (jPanelFdfCBottom == null) {\r
1529 jPanelFdfCBottom = new JPanel();\r
1530 jPanelFdfCBottom.setLayout(new BorderLayout());\r
1531 jPanelFdfCBottom.add(getJPanelFdfCBottomN(), java.awt.BorderLayout.NORTH);\r
1532 jPanelFdfCBottom.add(getJPanelFdfCBottomC(), java.awt.BorderLayout.CENTER);\r
1533 }\r
1534 return jPanelFdfCBottom;\r
1535 }\r
1536\r
1537 /**\r
1538 * This method initializes jPanelFdfCTopN \r
1539 * \r
1540 * @return javax.swing.JPanel \r
1541 */\r
1542 private JPanel getJPanelFdfCTopN() {\r
1543 if (jPanelFdfCTopN == null) {\r
1544 jLabelFvInFdf = new JLabel();\r
1545 jLabelFvInFdf.setText("FVs in Flash Definition File");\r
1546 jPanelFdfCTopN = new JPanel();\r
1547 jPanelFdfCTopN.add(jLabelFvInFdf, null);\r
1548 }\r
1549 return jPanelFdfCTopN;\r
1550 }\r
1551\r
1552 /**\r
1553 * This method initializes jPanelFdfCTopS \r
1554 * \r
1555 * @return javax.swing.JPanel \r
1556 */\r
1557 private JPanel getJPanelFdfCTopS() {\r
1558 if (jPanelFdfCTopS == null) {\r
1559 FlowLayout flowLayout1 = new FlowLayout();\r
1560 flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
1561 jPanelFdfCTopS = new JPanel();\r
1562 jPanelFdfCTopS.setLayout(flowLayout1);\r
1563 jPanelFdfCTopS.add(getJButtonFvInFdfOptions(), null);\r
1564 }\r
1565 return jPanelFdfCTopS;\r
1566 }\r
1567\r
1568 /**\r
1569 * This method initializes jPanelFdfCTopC \r
1570 * \r
1571 * @return javax.swing.JPanel \r
1572 */\r
1573 private JPanel getJPanelFdfCTopC() {\r
1574 if (jPanelFdfCTopC == null) {\r
1575 jPanelFdfCTopC = new JPanel();\r
1576 jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null);\r
1577 }\r
1578 return jPanelFdfCTopC;\r
1579 }\r
1580\r
1581 /**\r
1582 * This method initializes jPanelFdfCBottomN \r
1583 * \r
1584 * @return javax.swing.JPanel \r
1585 */\r
1586 private JPanel getJPanelFdfCBottomN() {\r
1587 if (jPanelFdfCBottomN == null) {\r
1588 jLabelFvAdditional = new JLabel();\r
1589 jLabelFvAdditional.setText("Additional FVs");\r
1590 jPanelFdfCBottomN = new JPanel();\r
1591 jPanelFdfCBottomN.add(jLabelFvAdditional, null);\r
1592 }\r
1593 return jPanelFdfCBottomN;\r
1594 }\r
1595\r
1596 /**\r
1597 * This method initializes jPanelFdfCBottomC \r
1598 * \r
1599 * @return javax.swing.JPanel \r
1600 */\r
1601 private JPanel getJPanelFdfCBottomC() {\r
1602 if (jPanelFdfCBottomC == null) {\r
1603 jPanelFdfCBottomC = new JPanel();\r
1604 jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);\r
1605 }\r
1606 return jPanelFdfCBottomC;\r
1607 }\r
1608\r
1609 /**\r
1610 * This method initializes jScrollPaneFvInFdf \r
1611 * \r
1612 * @return javax.swing.JScrollPane \r
1613 */\r
1614 private JScrollPane getJScrollPaneFvInFdf() {\r
1615 if (jScrollPaneFvInFdf == null) {\r
1616 jScrollPaneFvInFdf = new JScrollPane();\r
1617 jScrollPaneFvInFdf.setPreferredSize(new java.awt.Dimension(653,200));\r
1618 jScrollPaneFvInFdf.setViewportView(getJTableFvInFdf());\r
1619 }\r
1620 return jScrollPaneFvInFdf;\r
1621 }\r
1622\r
1623 /**\r
1624 * This method initializes jTableFvInFdf \r
1625 * \r
1626 * @return javax.swing.JTable \r
1627 */\r
1628 private JTable getJTableFvInFdf() {\r
1629 if (jTableFvInFdf == null) {\r
1630 jTableFvInFdf = new JTable();\r
1631 jTableFvInFdf.setRowHeight(20);\r
1632 jTableFvInFdf.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
1633 jTableFvInFdf.setModel(getFvInFdfTableModel());\r
1634 }\r
1635 return jTableFvInFdf;\r
1636 }\r
1637\r
1638 /**\r
1639 * This method initializes fvInFdfTableModel \r
1640 * \r
1641 * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel \r
1642 */\r
1643 private NonEditableTableModel getFvInFdfTableModel() {\r
1644 if (fvInFdfTableModel == null) {\r
1645 fvInFdfTableModel = new NonEditableTableModel();\r
1646 fvInFdfTableModel.addColumn("FV Name");\r
1647 fvInFdfTableModel.addColumn("Size");\r
1648 fvInFdfTableModel.addColumn("Corresponding File Name");\r
1649 }\r
1650 return fvInFdfTableModel;\r
1651 }\r
1652\r
1653 /**\r
1654 * This method initializes jButtonFvInFdfOptions \r
1655 * \r
1656 * @return javax.swing.JButton \r
1657 */\r
1658 private JButton getJButtonFvInFdfOptions() {\r
1659 if (jButtonFvInFdfOptions == null) {\r
1660 jButtonFvInFdfOptions = new JButton();\r
1661 jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
2b70a636 1662 jButtonFvInFdfOptions.setEnabled(false);\r
3658f95e 1663 jButtonFvInFdfOptions.setText("Options");\r
1664 jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() {\r
1665 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1666 int selectedRow = jTableFvInFdf.getSelectedRow();\r
61919f8c 1667 if (selectedRow < 0) {\r
3658f95e 1668 return;\r
1669 }\r
3658f95e 1670 }\r
1671 });\r
1672 }\r
1673 return jButtonFvInFdfOptions;\r
1674 }\r
1675\r
1676 /**\r
1677 * This method initializes jScrollPaneFvAdditional \r
1678 * \r
1679 * @return javax.swing.JScrollPane \r
1680 */\r
1681 private JScrollPane getJScrollPaneFvAdditional() {\r
1682 if (jScrollPaneFvAdditional == null) {\r
1683 jScrollPaneFvAdditional = new JScrollPane();\r
1684 jScrollPaneFvAdditional.setPreferredSize(new java.awt.Dimension(653,200));\r
1685 jScrollPaneFvAdditional.setViewportView(getJTableFvAdditional());\r
1686 }\r
1687 return jScrollPaneFvAdditional;\r
1688 }\r
1689\r
1690 /**\r
1691 * This method initializes jTableFvAdditional \r
1692 * \r
1693 * @return javax.swing.JTable \r
1694 */\r
1695 private JTable getJTableFvAdditional() {\r
1696 if (jTableFvAdditional == null) {\r
1697 jTableFvAdditional = new JTable();\r
1698 jTableFvAdditional.setRowHeight(20);\r
1699 jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
98c20797 1700 jTableFvAdditional.setModel(getFvAdditionalTableModel());\r
eb8ea829 1701 \r
1702 jTableFvAdditional.getSelectionModel().addListSelectionListener(new ListSelectionListener() {\r
1703 public void valueChanged(ListSelectionEvent e) {\r
1704 if (e.getValueIsAdjusting()) {\r
1705 return;\r
1706 }\r
1707 ListSelectionModel lsm = (ListSelectionModel) e.getSource();\r
1708 if (lsm.isSelectionEmpty()) {\r
1709 return;\r
1710 } else {\r
1711 selectedRowInFvAdditionalTable = lsm.getMinSelectionIndex();\r
1712 oldFvName = jTableFvAdditional.getValueAt(selectedRowInFvAdditionalTable, 0)+"";\r
1713 }\r
1714 }\r
1715 });\r
1716 \r
1717 jTableFvAdditional.getModel().addTableModelListener(new TableModelListener() {\r
1718 public void tableChanged(TableModelEvent arg0) {\r
1719 // TODO Auto-generated method stub\r
1720 int row = arg0.getFirstRow();\r
1721 int col = arg0.getColumn();\r
1722 TableModel m = (TableModel) arg0.getSource();\r
701d95b3 1723 \r
eb8ea829 1724 if (arg0.getType() == TableModelEvent.UPDATE) {\r
1725 if (col == 0) {\r
1726 String newFvName = m.getValueAt(row, 0) + "";\r
1727 if (newFvName.equals(oldFvName)) {\r
1728 return;\r
1729 }\r
1730 if (fvNameExists(newFvName)) {\r
1731 JOptionPane.showMessageDialog(frame, "This FV already exists. Please choose another FV name.");\r
1732 m.setValueAt(oldFvName, row, 0);\r
1733 return;\r
1734 }\r
1735 \r
1736 tabIndexForFv = jTabbedPane.indexOfTab(oldFvName);\r
1737 if (tabIndexForFv >= startIndexOfDynamicTab) {\r
1738 jTabbedPane.setTitleAt(tabIndexForFv, newFvName);\r
1739 // change FvName in UserExtensions\r
1740 ffc.updateBuildOptionsUserExtensions(oldFvName, newFvName);\r
1741 // change FvBinding in ModuleSA\r
1742 ffc.appendFvBindingFor(oldFvName, newFvName);\r
1743 ffc.removeFvBindingAll(oldFvName);\r
1744 // change FvImageNames in Flash\r
1745 ffc.updateFvImageNameAll(oldFvName, newFvName);\r
1746 \r
1747 } else {\r
1748 jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, ""));\r
1749 // Add FvImageNames in Flash\r
1750 String[] fvNames = {newFvName};\r
1751 ffc.AddFvImageFvImageNames(fvNames);\r
1752 }\r
701d95b3 1753 docConsole.setSaved(false);\r
eb8ea829 1754 oldFvName = newFvName;\r
1755 }\r
701d95b3 1756 \r
1757 if (col == 1) {\r
1758 String fvSize = m.getValueAt(row, col) + "";\r
1759 if (!DataValidation.isInt(fvSize) && !DataValidation.isHexDoubleWordDataType(fvSize)) {\r
1760 JOptionPane.showMessageDialog(frame, "FV size should be Integer or Hex format.");\r
1761 return;\r
1762 }\r
1763 HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
1764 ffc.getFvImagesFvImageOptions(oldFvName, mFvOpts);\r
1765 String blkSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
1766 if (blkSize == null) {\r
1767 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", determinedFvBlockSize);\r
1768 int fs = Integer.decode(fvSize);\r
1769 int bs = Integer.decode(determinedFvBlockSize);\r
1770 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
1771 docConsole.setSaved(false);\r
1772 }\r
1773 else {\r
1774 if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
1775 int retVal = JOptionPane.showConfirmDialog(frame, "Confirm", "FPD file contains error block size format. Would you like to replace it with a default value?", JOptionPane.YES_NO_OPTION);\r
1776 if (retVal == JOptionPane.YES_OPTION) {\r
1777 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", determinedFvBlockSize);\r
1778 int fs = Integer.decode(fvSize);\r
1779 int bs = Integer.decode(determinedFvBlockSize);\r
1780 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
1781 docConsole.setSaved(false);\r
1782 return;\r
1783 }\r
1784 else {\r
1785 return;\r
1786 }\r
1787 \r
1788 }\r
1789 int fs = Integer.decode(fvSize);\r
1790 int bs = Integer.decode(blkSize);\r
1791 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
1792 docConsole.setSaved(false);\r
1793 }\r
1794 }\r
1795 \r
1796 if (col == 2) {\r
1797 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+"");\r
1798 docConsole.setSaved(false);\r
1799 }\r
1800 \r
eb8ea829 1801 }\r
1802 }\r
1803 });\r
3658f95e 1804 }\r
1805 return jTableFvAdditional;\r
1806 }\r
eb8ea829 1807 \r
98c20797 1808 private boolean fvNameExistsInFvInFdfTable (String fvName) {\r
eb8ea829 1809 for (int i = 0; i < jTableFvInFdf.getRowCount(); ++i) {\r
1810 if (fvInFdfTableModel.getValueAt(i, 0).equals(fvName)) {\r
1811 return true;\r
1812 }\r
1813 }\r
98c20797 1814 return false;\r
1815 }\r
1816 \r
1817 private boolean fvNameExists (String fvName) {\r
1818 if (fvNameExistsInFvInFdfTable(fvName)) {\r
1819 return true;\r
1820 }\r
1821 \r
eb8ea829 1822 for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) {\r
98c20797 1823 if (fvAdditionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) {\r
eb8ea829 1824 return true;\r
1825 }\r
1826 }\r
1827 return false;\r
1828 }\r
3658f95e 1829\r
1830 /**\r
98c20797 1831 * This method initializes fvAdditionalTableModel \r
3658f95e 1832 * \r
1833 * @return javax.swing.table.DefaultTableModel \r
1834 */\r
98c20797 1835 private DefaultTableModel getFvAdditionalTableModel() {\r
1836 if (fvAdditionalTableModel == null) {\r
1837 fvAdditionalTableModel = new DefaultTableModel();\r
1838 fvAdditionalTableModel.addColumn("FV Name");\r
1839 fvAdditionalTableModel.addColumn("Size");\r
1840 fvAdditionalTableModel.addColumn("Corresponding File Name");\r
3658f95e 1841 }\r
98c20797 1842 return fvAdditionalTableModel;\r
3658f95e 1843 }\r
1844\r
1845 /**\r
1846 * This method initializes jButtonAddFv \r
1847 * \r
1848 * @return javax.swing.JButton \r
1849 */\r
1850 private JButton getJButtonAddFv() {\r
1851 if (jButtonAddFv == null) {\r
1852 jButtonAddFv = new JButton();\r
1853 jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20));\r
eb8ea829 1854 jButtonAddFv.setEnabled(true);\r
3658f95e 1855 jButtonAddFv.setText("New");\r
2b70a636 1856 jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {\r
1857 public void actionPerformed(java.awt.event.ActionEvent e) {\r
eb8ea829 1858 if (jTableFvAdditional.isEditing()) {\r
1859 jTableFvAdditional.getCellEditor().stopCellEditing();\r
1860 }\r
1861 String[] row = {"", "", ""};\r
98c20797 1862 fvAdditionalTableModel.addRow(row);\r
2b70a636 1863 }\r
1864 });\r
3658f95e 1865 }\r
1866 return jButtonAddFv;\r
1867 }\r
1868\r
1869 /**\r
1870 * This method initializes jButtonDelFv \r
1871 * \r
1872 * @return javax.swing.JButton \r
1873 */\r
1874 private JButton getJButtonDelFv() {\r
1875 if (jButtonDelFv == null) {\r
1876 jButtonDelFv = new JButton();\r
1877 jButtonDelFv.setPreferredSize(new java.awt.Dimension(80,20));\r
98c20797 1878 jButtonDelFv.setEnabled(true);\r
3658f95e 1879 jButtonDelFv.setText("Delete");\r
2b70a636 1880 jButtonDelFv.addActionListener(new java.awt.event.ActionListener() {\r
1881 public void actionPerformed(java.awt.event.ActionEvent e) {\r
98c20797 1882 //delete row in FvAdditional table.\r
1883 int selectedRow = jTableFvAdditional.getSelectedRow();\r
1884 if (selectedRow < 0) {\r
1885 return;\r
1886 }\r
1887 String fvName = fvAdditionalTableModel.getValueAt(selectedRow, 0) + "";\r
1888 fvAdditionalTableModel.removeRow(selectedRow);\r
1889 //\r
1890 //delete tab with selected FV name.\r
1891 //\r
1892 jTabbedPane.removeTabAt(jTabbedPane.indexOfTab(fvName));\r
1893 //delete FV Name from FvImages element.\r
1894 ffc.updateFvImageNameAll(fvName, null);\r
1895 //delete FvBinding from ModuleSA.\r
1896 ffc.removeFvBindingAll(fvName);\r
1897 docConsole.setSaved(false);\r
2b70a636 1898 }\r
1899 });\r
3658f95e 1900 }\r
1901 return jButtonDelFv;\r
1902 }\r
1903\r
1904 /**\r
1905 * This method initializes jButtonAddFvOptions \r
1906 * \r
1907 * @return javax.swing.JButton \r
1908 */\r
1909 private JButton getJButtonAddFvOptions() {\r
1910 if (jButtonAddFvOptions == null) {\r
1911 jButtonAddFvOptions = new JButton();\r
1912 jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
2b70a636 1913 jButtonAddFvOptions.setEnabled(false);\r
3658f95e 1914 jButtonAddFvOptions.setText("Options");\r
2b70a636 1915 jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {\r
1916 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1917 System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()\r
1918 }\r
1919 });\r
3658f95e 1920 }\r
1921 return jButtonAddFvOptions;\r
1922 }\r
3658f95e 1923 \r
a13899c5 1924 /**\r
1925 * @param args\r
1926 */\r
1927 public static void main(String[] args) {\r
1928 // TODO Auto-generated method stub\r
1929 new FpdFlash().setVisible(true);\r
1930 }\r
1931\r
1932 /**\r
1933 * This method initializes this\r
1934 * \r
1935 * @return void\r
1936 */\r
1937 private void initialize() {\r
1938 this.setSize(518, 650);\r
1939 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
1940 this.setContentPane(getJContentPane());\r
1941 this.setTitle("FPD Flash Definitions");\r
44053733 1942 this.addInternalFrameListener(new InternalFrameAdapter(){\r
1943 public void internalFrameDeactivated(InternalFrameEvent e){\r
4da2e625 1944 if (jTableFvProp.isEditing()) {\r
1945 jTableFvProp.getCellEditor().stopCellEditing();\r
44053733 1946 }\r
4da2e625 1947 if (jTableFvImageNames.isEditing()) {\r
1948 jTableFvImageNames.getCellEditor().stopCellEditing();\r
44053733 1949 }\r
4da2e625 1950 if (jTableFvInfo.isEditing()) {\r
1951 jTableFvInfo.getCellEditor().stopCellEditing();\r
44053733 1952 }\r
98c20797 1953 if (jTableFvAdditional.isEditing()) {\r
1954 jTableFvAdditional.getCellEditor().stopCellEditing();\r
1955 }\r
44053733 1956 }\r
1957 });\r
a13899c5 1958 }\r
1959\r
1960 private void init(FpdFileContents ffc) {\r
3658f95e 1961 \r
1962 jTextFieldFdf.setText("");\r
1963 String fdfFile = ffc.getFlashDefinitionFile();\r
701d95b3 1964 if (fdfFile != null && fdfFile.length() > 0) {\r
3658f95e 1965 jTextFieldFdf.setText(fdfFile);\r
701d95b3 1966 String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;\r
1967 initFvInFdfTable(fdfPath);\r
3658f95e 1968 }\r
1969 \r
eb8ea829 1970 initFvAdditionalTable();\r
a13899c5 1971 }\r
1972 \r
ae0d4fd2 1973 private void getOptionNameValue(Map<String, String> m){\r
4da2e625 1974 for (int i = 0; i < jTableFvImageOpts.getRowCount(); ++i) {\r
ae0d4fd2 1975 m.put(fvOptionTableModel.getValueAt(i, 0)+"", fvOptionTableModel.getValueAt(i, 1)+"");\r
a13899c5 1976 }\r
1977 }\r
1978 /**\r
1979 * This method initializes jContentPane\r
1980 * \r
1981 * @return javax.swing.JPanel\r
1982 */\r
1983 private JPanel getJContentPane() {\r
1984 if (jContentPane == null) {\r
1985 jContentPane = new JPanel();\r
1986 jContentPane.setLayout(new BorderLayout());\r
4da2e625 1987 jContentPane.add(getJPanelContentEast(), java.awt.BorderLayout.EAST);\r
1988 jContentPane.add(getJPanelContentSouth(), java.awt.BorderLayout.SOUTH);\r
1989 jContentPane.add(getJPanelContentWest(), java.awt.BorderLayout.WEST);\r
1990 jContentPane.add(getJPanelContentNorth(), java.awt.BorderLayout.NORTH);\r
a13899c5 1991 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
1992 }\r
1993 return jContentPane;\r
1994 }\r
3658f95e 1995 \r
701d95b3 1996 private void getFlashInfoFromFdf (String fdfPath) {\r
98c20797 1997 File fdf = new File(fdfPath);\r
1998 if (!fdf.exists()) {\r
1999 return;\r
2000 }\r
2001 int lines = 0;\r
2002\r
2003 try {\r
2004 FileReader reader = new FileReader(fdf);\r
2005 BufferedReader in = new BufferedReader(reader);\r
2006 String str;\r
2007\r
2008 while ((str = in.readLine()) != null) {\r
2009 ++lines;\r
2010 str = str.trim();\r
2011 //\r
2012 // skip empty line, comment (start with //) \r
2013 //\r
2014 if (str.length() == 0 || str.startsWith("//")) {\r
2015 continue;\r
2016 }\r
2017 //\r
2018 // ErasePolarity\r
2019 //\r
2020 if (str.startsWith("ErasePolarity")) {\r
701d95b3 2021 erasePolarity = str.substring(str.indexOf("=") + 1, str.lastIndexOf(",")).trim();\r
98c20797 2022 }\r
2023 //\r
2024 // dig into Block section.\r
2025 //\r
2026 if (str.startsWith("Block") && str.endsWith("}")) {\r
2027 String[] blockSec = str.split(",");\r
2028 String nv = blockSec[1].trim();\r
2029 String[] sizeSec = nv.split("=");\r
2030 vBlockSize.add(sizeSec[1].trim());\r
2031 }\r
2032 \r
2033 }\r
2034 \r
2035 reader.close();\r
2036 in.close();\r
2037 }\r
2038 catch (Exception e) {\r
2039 \r
2040 }\r
2041 }\r
2042 \r
3658f95e 2043 private void getFvInfoFromFdf(String fdfPath, Vector<FvInfoFromFdf> vFvInfo) {\r
2044 File fdf = new File(fdfPath);\r
2045 if (!fdf.exists()) {\r
2046 return;\r
2047 }\r
2048 int lines = 0;\r
2049\r
2050 try {\r
2051 FileReader reader = new FileReader(fdf);\r
2052 BufferedReader in = new BufferedReader(reader);\r
2053 String str;\r
2054\r
2055 while ((str = in.readLine()) != null) {\r
2056 ++lines;\r
2057 str = str.trim();\r
2058 //\r
2059 // skip empty line, comment (start with //) \r
2060 //\r
2061 if (str.length() == 0 || str.startsWith("//")) {\r
2062 continue;\r
2063 }\r
2064 //\r
2065 // dig into Region {} section, create FvInfoFromFdf object for it.\r
2066 //\r
2067 if (str.startsWith("Region") && str.endsWith("{")) {\r
2068 FvInfoFromFdf fvInfo = new FvInfoFromFdf();\r
2069 boolean nameFound = false;\r
2070 boolean sizeFound = false;\r
2071 while ((str = in.readLine()) != null) {\r
2072 ++lines;\r
2073 str = str.trim();\r
2074 //\r
2075 // skip empty line, comment (start with //) \r
2076 //\r
2077 if (str.length() == 0 || str.startsWith("//")) {\r
2078 continue;\r
2079 }\r
2080 \r
2081 if (str.startsWith("Name")) {\r
2082 int firstQuote = str.indexOf("\"");\r
2083 int lastQuote = str.lastIndexOf("\"");\r
2084 fvInfo.setFvName(str.substring(firstQuote + 1, lastQuote));\r
2085 nameFound = true;\r
2086 }\r
2087 \r
2088 if (str.startsWith("Size")) {\r
2089 int equalIndex = str.indexOf("=");\r
2090 int commaIndex = str.indexOf(",");\r
2091 fvInfo.setSize(str.substring(equalIndex + 1, commaIndex).trim());\r
2092 sizeFound = true;\r
2093 }\r
2094 \r
2095 if (nameFound && sizeFound) {\r
2096 break;\r
2097 }\r
2098 }\r
2099 \r
2100 vFvInfo.add(fvInfo);\r
2101 }\r
2102 //\r
2103 // dig into File {} section, supply file name information to existing FvInfoFromFdf object.\r
2104 //\r
2105 if (str.startsWith("File")) {\r
2106 boolean fileNameFound = false;\r
2107 boolean fvFound = false;\r
2108 String fileName = "";\r
2109 String fvName = "";\r
2110 while ((str = in.readLine()) != null) {\r
2111 ++lines;\r
2112 str = str.trim();\r
2113 //\r
2114 // skip empty line, comment (start with //) \r
2115 //\r
2116 if (str.length() == 0 || str.startsWith("//")) {\r
2117 continue;\r
2118 }\r
2119 \r
2120 if (str.startsWith("Name")) {\r
2121 int firstQuote = str.indexOf("\"");\r
2122 int lastQuote = str.lastIndexOf("\"");\r
2123 fileName = str.substring(firstQuote + 1, lastQuote);\r
2124 fileNameFound = true;\r
2125 }\r
2126 \r
2127 if (str.startsWith("Region")) {\r
2128 int firstQuote = str.indexOf("\"");\r
2129 int lastQuote = str.lastIndexOf("\"");\r
2130 fvName = str.substring(firstQuote + 1, lastQuote);\r
2131 fvFound = true;\r
2132 }\r
2133 \r
2134 if (fileNameFound && fvFound) {\r
2135 break;\r
2136 }\r
2137 }\r
2138 \r
2139 for (int i = 0; i <vFvInfo.size(); ++i) {\r
2140 if (vFvInfo.get(i).getFvName().equals(fvName)) {\r
2141 vFvInfo.get(i).setEfiFileName(fileName);\r
2142 }\r
2143 }\r
2144 }\r
2145 \r
2146 }\r
2b70a636 2147 \r
2148 reader.close();\r
2149 in.close();\r
2150 }\r
2151 catch (Exception e) {\r
3658f95e 2152 \r
2153 }\r
2154\r
2155 }\r
2156 \r
61919f8c 2157 private class ModuleOrderPane extends JPanel {\r
2158\r
2159 /**\r
2160 * \r
2161 */\r
2162 private static final long serialVersionUID = 1L;\r
2163 private JPanel jPanelModOrderN = null;\r
2164 private JPanel jPanelModOrderS = null;\r
2165 private JPanel jPanelModOrderC = null;\r
2166 private JScrollPane jScrollPaneModInFv = null;\r
2167 private JTable jTableModInFv = null;\r
2168 private JPanel jPanelController = null;\r
2169 private JScrollPane jScrollPaneFpdModules = null;\r
2170 private JTable jTableFpdModules = null;\r
2171 private JButton jButtonUp = null;\r
2172 private JButton jButtonInsert = null;\r
2173 private JButton jButtonRemove = null;\r
2174 private JButton jButtonDown = null;\r
2175 private JButton jButtonOk = null;\r
2176 private JButton jButtonCancel = null;\r
2177 private NonEditableTableModel modInFvTableModel = null;\r
2178 private NonEditableTableModel fpdModTableModel = null;\r
2b70a636 2179 private HashMap<String, ModuleIdentification> mGuidToModuleId = null;\r
2180 private ArrayList<String> listModGuidInFv = null;\r
2181 private String title = null;\r
2182 private String outputFileName = null;\r
61919f8c 2183 \r
2b70a636 2184 public ModuleOrderPane(String tabTitle, String file) {\r
61919f8c 2185 super(new BorderLayout());\r
2b70a636 2186 title = tabTitle;\r
2187 outputFileName = file;\r
2188 mGuidToModuleId = new HashMap<String, ModuleIdentification>();\r
2189 listModGuidInFv = new ArrayList<String>();\r
61919f8c 2190 add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH);\r
2191 add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH);\r
2192 add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER);\r
2b70a636 2193 showModulesInFv(title);\r
2194 showAllModulesInPlatform();\r
61919f8c 2195 }\r
2196 \r
2197 private void showModulesInFv(String fvName) {\r
2198 int size = ffc.getUserExtsIncModCount(fvName);\r
2199 \r
2200 if (size != -1) {\r
2201 String[][] saa = new String[size][2];\r
2202 ffc.getUserExtsIncMods(fvName, saa);\r
2203\r
2204 for (int i = 0; i < size; ++i) {\r
2b70a636 2205 listModGuidInFv.add(saa[i][0].toLowerCase());\r
61919f8c 2206 String name = getModuleName(saa[i][0]);\r
2207 String[] row = { name };\r
2208 modInFvTableModel.addRow(row);\r
2209 }\r
2210 }\r
2211 //\r
2212 // From ModuleSAs, get module guids with FvBinding = fvName.\r
2213 //\r
2214 Vector<String> vGuid = new Vector<String>();\r
2215 ffc.getFrameworkModuleGuid(fvName, vGuid);\r
2216 //\r
2217 // If BuildOptions->UserExtensions already contain these module info,\r
2218 // no need to add them into table again.\r
2219 //\r
2220 Iterator<String> iter = vGuid.iterator();\r
2221 while (iter.hasNext()){\r
2222 String guid = iter.next();\r
2b70a636 2223// String moduleName = getModuleName(guid);\r
2224// if (existedInTable(moduleName, modInFvTableModel)) {\r
2225// vGuid.remove(guid);\r
2226// }\r
2227 if (!listModGuidInFv.contains(guid.toLowerCase())) {\r
2228 String[] row = {getModuleName(guid)};\r
2229 modInFvTableModel.addRow(row);\r
61919f8c 2230 }\r
2231 }\r
2b70a636 2232\r
61919f8c 2233 }\r
2234 \r
2235 private void showAllModulesInPlatform() {\r
2236 int size = ffc.getFrameworkModulesCount();\r
2237 String[][] saa = new String[size][5];\r
2238 ffc.getFrameworkModulesInfo(saa);\r
2239 \r
2240 for (int i = 0; i < size; ++i) {\r
2241 String name = getModuleName(saa[i][0]);\r
2242 if (existedInTable(name, modInFvTableModel) || existedInTable(name, fpdModTableModel)) {\r
2243 continue;\r
2244 }\r
2245 String[] row = {name};\r
2246 fpdModTableModel.addRow(row);\r
2247 }\r
2248 \r
2249 TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
2250 sorter.setSortState(0, TableSorter.ASCENDING);\r
2251 }\r
2252 \r
2253 private String getModuleName (String guid) {\r
2254 \r
2255 for (int i = 0; i < GlobalData.vModuleList.size(); ++i) {\r
2b70a636 2256 ModuleIdentification mi = GlobalData.vModuleList.get(i);\r
2257 String mg = mi.getGuid();\r
61919f8c 2258 if (mg == null) {\r
2259 continue;\r
2260 }\r
2261 if (mg.equalsIgnoreCase(guid)) {\r
2b70a636 2262 mGuidToModuleId.put(guid.toLowerCase(), mi);\r
2263 return mi.getName();\r
61919f8c 2264 }\r
2265 }\r
2266 \r
2267 return "";\r
2268 }\r
2269 \r
2270 private boolean existedInTable (String name, DefaultTableModel model) {\r
2271 int size = model.getDataVector().size();\r
2272 for (int i = 0; i < size; ++i) {\r
2273 if (((Vector)model.getDataVector().elementAt(i)).contains(name)) {\r
2274 return true;\r
2275 }\r
2276 }\r
2277 return false;\r
2278 }\r
2279 \r
2b70a636 2280 \r
2281 \r
61919f8c 2282 /**\r
2283 * This method initializes jPanelModOrderN \r
2284 * \r
2285 * @return javax.swing.JPanel \r
2286 */\r
2287 private JPanel getJPanelModOrderN() {\r
2288 if (jPanelModOrderN == null) {\r
2289 jPanelModOrderN = new JPanel();\r
2290 }\r
2291 return jPanelModOrderN;\r
2292 }\r
2293\r
2294 /**\r
2295 * This method initializes jPanelModOrderS \r
2296 * \r
2297 * @return javax.swing.JPanel \r
2298 */\r
2299 private JPanel getJPanelModOrderS() {\r
2300 if (jPanelModOrderS == null) {\r
2301 FlowLayout flowLayout6 = new FlowLayout();\r
2302 flowLayout6.setAlignment(java.awt.FlowLayout.RIGHT);\r
2303 jPanelModOrderS = new JPanel();\r
2304 jPanelModOrderS.setLayout(flowLayout6);\r
2305 jPanelModOrderS.add(getJButtonOk(), null);\r
2306 jPanelModOrderS.add(getJButtonCancel(), null);\r
2307 }\r
2308 return jPanelModOrderS;\r
2309 }\r
2310\r
2311 /**\r
2312 * This method initializes jPanelModOrderC \r
2313 * \r
2314 * @return javax.swing.JPanel \r
2315 */\r
2316 private JPanel getJPanelModOrderC() {\r
2317 if (jPanelModOrderC == null) {\r
2318 jPanelModOrderC = new JPanel();\r
2319 jPanelModOrderC.add(getJScrollPaneModInFv(), null);\r
2320 jPanelModOrderC.add(getJPanelController(), null);\r
2321 jPanelModOrderC.add(getJScrollPaneFpdModules(), null);\r
2322 }\r
2323 return jPanelModOrderC;\r
2324 }\r
2325\r
2326 /**\r
2327 * This method initializes jScrollPaneModInFv \r
2328 * \r
2329 * @return javax.swing.JScrollPane \r
2330 */\r
2331 private JScrollPane getJScrollPaneModInFv() {\r
2332 if (jScrollPaneModInFv == null) {\r
2333 jScrollPaneModInFv = new JScrollPane();\r
2334 jScrollPaneModInFv.setPreferredSize(new java.awt.Dimension(200,500));\r
2335 jScrollPaneModInFv.setViewportView(getJTableModInFv());\r
2336 }\r
2337 return jScrollPaneModInFv;\r
2338 }\r
2339\r
2340 /**\r
2341 * This method initializes jTableModInFv \r
2342 * \r
2343 * @return javax.swing.JTable \r
2344 */\r
2345 private JTable getJTableModInFv() {\r
2346 if (jTableModInFv == null) {\r
2347 modInFvTableModel = new NonEditableTableModel();\r
2348 modInFvTableModel.addColumn("Module Orders in FV");\r
2349 jTableModInFv = new JTable(modInFvTableModel);\r
2350 jTableModInFv.setRowHeight(20);\r
2351 jTableModInFv.setShowGrid(false);\r
2b70a636 2352 \r
61919f8c 2353 }\r
2354 return jTableModInFv;\r
2355 }\r
2356\r
2357 /**\r
2358 * This method initializes jPanelController \r
2359 * \r
2360 * @return javax.swing.JPanel \r
2361 */\r
2362 private JPanel getJPanelController() {\r
2363 if (jPanelController == null) {\r
2364 FlowLayout flowLayout5 = new FlowLayout();\r
2365 flowLayout5.setVgap(50);\r
2366 flowLayout5.setHgap(50);\r
2367 jPanelController = new JPanel();\r
2368 jPanelController.setLayout(flowLayout5);\r
2369 jPanelController.setPreferredSize(new java.awt.Dimension(150,500));\r
2370 jPanelController.add(getJButtonUp(), null);\r
2371 jPanelController.add(getJButtonInsert(), null);\r
2372 jPanelController.add(getJButtonRemove(), null);\r
2373 jPanelController.add(getJButtonDown(), null);\r
2374 }\r
2375 return jPanelController;\r
2376 }\r
2377\r
2378 /**\r
2379 * This method initializes jScrollPaneFpdModules \r
2380 * \r
2381 * @return javax.swing.JScrollPane \r
2382 */\r
2383 private JScrollPane getJScrollPaneFpdModules() {\r
2384 if (jScrollPaneFpdModules == null) {\r
2385 jScrollPaneFpdModules = new JScrollPane();\r
2386 jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(200,500));\r
2387 jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
2388 }\r
2389 return jScrollPaneFpdModules;\r
2390 }\r
2391\r
2392 /**\r
2393 * This method initializes jTableFpdModules \r
2394 * \r
2395 * @return javax.swing.JTable \r
2396 */\r
2397 private JTable getJTableFpdModules() {\r
2398 if (jTableFpdModules == null) {\r
2399 fpdModTableModel = new NonEditableTableModel();\r
2400 TableSorter sorter = new TableSorter(fpdModTableModel);\r
2401 jTableFpdModules = new JTable(sorter);\r
2402 jTableFpdModules.setRowHeight(20);\r
2403 jTableFpdModules.setShowGrid(false);\r
2404 fpdModTableModel.addColumn("Modules in Platform");\r
2b70a636 2405\r
61919f8c 2406 }\r
2407 return jTableFpdModules;\r
2408 }\r
2409\r
2410 /**\r
2411 * This method initializes jButtonUp \r
2412 * \r
2413 * @return javax.swing.JButton \r
2414 */\r
2415 private JButton getJButtonUp() {\r
2416 if (jButtonUp == null) {\r
2417 jButtonUp = new JButton();\r
2418 jButtonUp.setPreferredSize(new java.awt.Dimension(60,20));\r
2419 jButtonUp.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));\r
2420 jButtonUp.setText("^");\r
2421 jButtonUp.addActionListener(new java.awt.event.ActionListener() {\r
2422 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2423 int selectedRow = jTableModInFv.getSelectedRow();\r
2424 if (selectedRow <= 0) {\r
2425 return;\r
2426 }\r
2427 modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow - 1);\r
2428 jTableModInFv.changeSelection(selectedRow - 1, 0, false, false);\r
2429 }\r
2430 });\r
2431 }\r
2432 return jButtonUp;\r
2433 }\r
2434\r
2435 /**\r
2436 * This method initializes jButtonInsert \r
2437 * \r
2438 * @return javax.swing.JButton \r
2439 */\r
2440 private JButton getJButtonInsert() {\r
2441 if (jButtonInsert == null) {\r
2442 jButtonInsert = new JButton();\r
2443 jButtonInsert.setText("<<");\r
2444 jButtonInsert.setPreferredSize(new java.awt.Dimension(60,20));\r
2445 jButtonInsert.addActionListener(new java.awt.event.ActionListener() {\r
2446 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2447 int selectedRowRight = jTableFpdModules.getSelectedRow();\r
2448 if (selectedRowRight < 0) {\r
2449 return;\r
2450 }\r
2451 \r
2452 int rowInModel = ((TableSorter)jTableFpdModules.getModel()).getModelRowIndex(selectedRowRight);\r
2453 \r
2454 String[] row = {jTableFpdModules.getValueAt(selectedRowRight, 0)+""};\r
2455 int selectedRowLeft = jTableModInFv.getSelectedRow();\r
2456 if (selectedRowLeft < 0) {\r
2457 modInFvTableModel.addRow(row);\r
2458 jTableModInFv.changeSelection(jTableModInFv.getRowCount() - 1, 0, false, false);\r
61919f8c 2459 }\r
2460 else {\r
2461 modInFvTableModel.insertRow(selectedRowLeft, row);\r
2462 jTableModInFv.changeSelection(selectedRowLeft, 0, false, false);\r
2463 }\r
2b70a636 2464 fpdModTableModel.removeRow(rowInModel);\r
61919f8c 2465 }\r
2466 });\r
2467 }\r
2468 return jButtonInsert;\r
2469 }\r
2470\r
2471 /**\r
2472 * This method initializes jButtonRemove \r
2473 * \r
2474 * @return javax.swing.JButton \r
2475 */\r
2476 private JButton getJButtonRemove() {\r
2477 if (jButtonRemove == null) {\r
2478 jButtonRemove = new JButton();\r
2479 jButtonRemove.setPreferredSize(new java.awt.Dimension(60,20));\r
2480 jButtonRemove.setText(">>");\r
2481 jButtonRemove.addActionListener(new java.awt.event.ActionListener() {\r
2482 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2483 int selectedRowLeft = jTableModInFv.getSelectedRow();\r
2484 if (selectedRowLeft < 0) {\r
2485 return;\r
2486 }\r
2487 \r
2488 String[] row = {jTableModInFv.getValueAt(selectedRowLeft, 0)+""};\r
2489 fpdModTableModel.addRow(row);\r
2490 int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules\r
2491 .getRowCount() - 1];\r
2492 jTableFpdModules.changeSelection(viewIndex, 0, false, false);\r
2493 modInFvTableModel.removeRow(selectedRowLeft);\r
2494 }\r
2495 });\r
2496 }\r
2497 return jButtonRemove;\r
2498 }\r
2499\r
2500 /**\r
2501 * This method initializes jButtonDown \r
2502 * \r
2503 * @return javax.swing.JButton \r
2504 */\r
2505 private JButton getJButtonDown() {\r
2506 if (jButtonDown == null) {\r
2507 jButtonDown = new JButton();\r
2508 jButtonDown.setPreferredSize(new java.awt.Dimension(60,20));\r
2509 jButtonDown.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));\r
2510 jButtonDown.setText("v");\r
2511 jButtonDown.addActionListener(new java.awt.event.ActionListener() {\r
2512 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2513 int selectedRow = jTableModInFv.getSelectedRow();\r
2514 if (selectedRow >= jTableModInFv.getRowCount() - 1) {\r
2515 return;\r
2516 }\r
2517 modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow + 1);\r
2518 jTableModInFv.changeSelection(selectedRow + 1, 0, false, false);\r
2519 }\r
2520 });\r
2521 }\r
2522 return jButtonDown;\r
2523 }\r
2524 \r
2525 /**\r
2526 * This method initializes jButtonOk \r
2527 * \r
2528 * @return javax.swing.JButton \r
2529 */\r
2530 private JButton getJButtonOk() {\r
2531 if (jButtonOk == null) {\r
2532 jButtonOk = new JButton();\r
2533 jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
eb8ea829 2534 jButtonOk.setText("Ok");\r
2b70a636 2535 jButtonOk.addActionListener(new java.awt.event.ActionListener() {\r
2536 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2537 // need reset FvBindings in ModuleSA.\r
2538 ffc.removeFvBindingAll(title);\r
2539 //\r
2540 // collect module order information to store them into <BuildOptions> -> <UserExtensions>.\r
2541 // also update the FvBinding info in <ModuleSA>.\r
2542 //\r
2543 Vector<String[]> vModInFv = new Vector<String[]>();\r
2544 for (int i = 0; i < jTableModInFv.getRowCount(); ++i) {\r
2545 String moduleName = jTableModInFv.getValueAt(i, 0)+"";\r
2546 if (moduleName.length() == 0) {\r
2547 continue;\r
2548 }\r
2549 ModuleIdentification mi = null;\r
2550 Set<String> key = mGuidToModuleId.keySet();\r
2551 Iterator<String> iter = key.iterator();\r
2552 while (iter.hasNext()) {\r
2553 String guid = iter.next();\r
2554 mi = mGuidToModuleId.get(guid);\r
2555 if (mi.getName().equals(moduleName)) {\r
2556 String[] sa = {guid, WorkspaceProfile.getModuleBaseName(mi)};\r
2557 vModInFv.add(sa);\r
2558 ffc.updateFvBindingInModuleSA (mi, title);\r
2559 break;\r
2560 }\r
2561 }\r
2562 \r
2563 }\r
2564 ffc.removeBuildOptionsUserExtensions(title);\r
2565 ffc.genBuildOptionsUserExtensions(title, outputFileName, vModInFv);\r
2566 \r
2567 docConsole.setSaved(false);\r
2568 jTabbedPane.setSelectedIndex(0);\r
2569 }\r
2570 });\r
61919f8c 2571 }\r
2572 return jButtonOk;\r
2573 }\r
2574\r
2575 /**\r
2576 * This method initializes jButtonCancel \r
2577 * \r
2578 * @return javax.swing.JButton \r
2579 */\r
2580 private JButton getJButtonCancel() {\r
2581 if (jButtonCancel == null) {\r
2582 jButtonCancel = new JButton();\r
2583 jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
2584 jButtonCancel.setText("Cancel");\r
2585 jButtonCancel.addActionListener(new java.awt.event.ActionListener() {\r
2586 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2587 jTabbedPane.setSelectedIndex(0);\r
2588 }\r
2589 });\r
2590 }\r
2591 return jButtonCancel;\r
2592 }\r
2593 }\r
a13899c5 2594\r
2595} // @jve:decl-index=0:visual-constraint="10,10"\r
2596\r
2597class ImageParaTableModel extends DefaultTableModel {\r
2598\r
44053733 2599 private static final long serialVersionUID = 1L;\r
44053733 2600 \r
2601 public boolean isCellEditable(int row, int col) {\r
98c20797 2602// if (getValueAt(row, 1).equals("ImageName") && col >=1) {\r
2603// return false;\r
2604// }\r
2605// return true;\r
2606 return false;\r
a13899c5 2607 }\r
2608}\r
ae0d4fd2 2609\r
3658f95e 2610class FvInfoFromFdf {\r
2611 private String fvName;\r
2612 private String size;\r
2613 private String efiFileName;\r
2614 \r
2615 public FvInfoFromFdf () {\r
2616 fvName = "";\r
2617 size = "";\r
2618 efiFileName = "";\r
2619 }\r
2620 public FvInfoFromFdf (String f, String s, String e) {\r
2621 this();\r
2622 fvName = f;\r
2623 size = s;\r
2624 efiFileName = e;\r
2625 }\r
2626 public String getEfiFileName() {\r
2627 return efiFileName;\r
2628 }\r
2629 public void setEfiFileName(String efiFileName) {\r
2630 this.efiFileName = efiFileName;\r
2631 }\r
2632 public String getFvName() {\r
2633 return fvName;\r
2634 }\r
2635 public void setFvName(String fvName) {\r
2636 this.fvName = fvName;\r
2637 }\r
2638 public String getSize() {\r
2639 return size;\r
2640 }\r
2641 public void setSize(String size) {\r
2642 this.size = size;\r
2643 }\r
2644 \r
2645}\r