2 Java class FpdFlash is GUI for Flash element operation in SPD file.
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 package org
.tianocore
.frameworkwizard
.platform
.ui
;
15 import java
.awt
.BorderLayout
;
16 import javax
.swing
.JPanel
;
18 import javax
.swing
.AbstractAction
;
19 import javax
.swing
.JFileChooser
;
20 import javax
.swing
.JOptionPane
;
21 import javax
.swing
.JTabbedPane
;
22 import javax
.swing
.JButton
;
23 import javax
.swing
.ListSelectionModel
;
25 import org
.tianocore
.PlatformSurfaceAreaDocument
;
26 import org
.tianocore
.frameworkwizard
.FrameworkWizardUI
;
27 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
28 import org
.tianocore
.frameworkwizard
.common
.IDefaultTableModel
;
29 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningPlatformType
;
30 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
31 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
32 import org
.tianocore
.frameworkwizard
.module
.Identifications
.ModuleIdentification
;
33 import org
.tianocore
.frameworkwizard
.platform
.ui
.global
.WorkspaceProfile
;
34 import org
.tianocore
.frameworkwizard
.workspace
.Workspace
;
36 import java
.awt
.FlowLayout
;
37 import java
.awt
.event
.ActionEvent
;
38 import java
.awt
.event
.ActionListener
;
39 import java
.awt
.event
.ComponentAdapter
;
40 import java
.awt
.event
.ComponentEvent
;
41 import java
.awt
.event
.ItemEvent
;
42 import java
.awt
.event
.ItemListener
;
43 import java
.awt
.event
.MouseAdapter
;
44 import java
.awt
.event
.MouseEvent
;
45 import java
.io
.BufferedReader
;
47 import java
.io
.FileReader
;
48 import java
.util
.HashMap
;
49 import java
.util
.Iterator
;
50 import java
.util
.LinkedHashMap
;
53 import java
.util
.Vector
;
55 import javax
.swing
.JCheckBox
;
56 import javax
.swing
.JTextField
;
57 import java
.awt
.GridLayout
;
58 import javax
.swing
.JLabel
;
59 import javax
.swing
.JScrollPane
;
60 import javax
.swing
.JTable
;
61 import javax
.swing
.event
.InternalFrameAdapter
;
62 import javax
.swing
.event
.InternalFrameEvent
;
63 import javax
.swing
.event
.ListSelectionEvent
;
64 import javax
.swing
.event
.ListSelectionListener
;
65 import javax
.swing
.event
.TableModelEvent
;
66 import javax
.swing
.event
.TableModelListener
;
67 import javax
.swing
.table
.DefaultTableModel
;
68 import javax
.swing
.table
.TableModel
;
69 import javax
.swing
.JComboBox
;
70 import java
.awt
.Dimension
;
71 import javax
.swing
.JSplitPane
;
73 public class FpdFlash
extends IInternalFrame
{
78 private static final long serialVersionUID
= 1L;
79 private final int startIndexOfDynamicTab
= 2;
80 private JPanel jContentPane
= null;
81 private JPanel jPanelContentEast
= null;
82 private JPanel jPanelContentSouth
= null;
83 private JPanel jPanelContentWest
= null;
84 private JPanel jPanelContentNorth
= null;
85 private JTabbedPane jTabbedPane
= null;
86 private JPanel jPanelFvImages
= null;
87 private JPanel jPanelFvImageS
= null;
88 private JPanel jPanelFvImageN
= null;
89 private JCheckBox jCheckBoxFvProperty
= null;
90 private JLabel jLabelFvPropName
= null;
91 private JTextField jTextFieldFvPropName
= null;
92 private JLabel jLabelFvPropValue
= null;
93 private JTextField jTextFieldFvPropValue
= null;
94 private JButton jButtonFvPropAdd
= null;
95 private JScrollPane jScrollPaneFvProp
= null;
96 private JTable jTableFvProp
= null;
97 private JPanel jPanelFvPropButtonGroup
= null;
98 private JButton jButtonFvPropDel
= null;
99 private DefaultTableModel fvPropertyTableModel
= null;
100 private DefaultTableModel fvImageNameTableModel
= null;
101 private ImageParaTableModel fvImageParaTableModel
= null;
102 private DefaultTableModel fvOptionTableModel
= null;
103 private JPanel jPanelFvImageC
= null;
104 private JLabel jLabelFvParaType
= null;
105 private JComboBox jComboBoxFvParaType
= null;
106 private JLabel jLabelFvImageNames
= null;
107 private JLabel jLabelFvParaName
= null;
108 private JTextField jTextFieldFvParaName
= null;
109 private JButton jButtonFvNameAdd
= null;
110 private JScrollPane jScrollPaneFvImageNames
= null;
111 private JTable jTableFvImageNames
= null;
112 private JButton jButtonFvNameDel
= null;
113 private JPanel jPanelFvImageOpts
= null;
114 private JButton jButtonAddFvImage
= null;
115 private JScrollPane jScrollPaneFvInfo
= null;
116 private JTable jTableFvInfo
= null;
117 private JButton jButtonDelFvImage
= null;
118 private JPanel jPanelFvImagePara
= null;
119 private OpeningPlatformType docConsole
= null;
120 private FpdFileContents ffc
= null;
121 private JPanel jPanelFdf
= null;
122 private JCheckBox jCheckBoxFdf
= null;
123 private JTextField jTextFieldFdf
= null;
124 private JButton jButtonFdfBrowse
= null;
125 private JLabel jLabelFvImageOptName
= null;
126 private JTextField jTextFieldFvImageOptName
= null;
127 private JLabel jLabelFvImageOptValue
= null;
128 private JTextField jTextFieldFvImageOptValue
= null;
129 private JPanel jPanelFvImageOptsButtonGroup
= null;
130 private JButton jButtonFvImageOptAdd
= null;
131 private JButton jButtonFvImageOptDel
= null;
132 private JScrollPane jScrollPane
= null;
133 private JTable jTableFvImageOpts
= null;
134 private JButton jButtonUpdateFvImage
= null;
135 private JPanel jPanelFdfN
= null;
136 private JPanel jPanelFdfS
= null;
137 private JSplitPane jSplitPaneFdfC
= null;
138 private JPanel jPanelFdfCTop
= null;
139 private JPanel jPanelFdfCBottom
= null;
140 private JPanel jPanelFdfCTopN
= null;
141 private JPanel jPanelFdfCTopS
= null;
142 // private JPanel jPanelFdfCTopC = null;
143 private JPanel jPanelFdfCBottomN
= null;
144 // private JPanel jPanelFdfCBottomC = null;
145 private JLabel jLabelFvInFdf
= null;
146 private JLabel jLabelFvAdditional
= null;
147 private JScrollPane jScrollPaneFvInFdf
= null;
148 private JTable jTableFvInFdf
= null;
149 private IDefaultTableModel fvInFdfTableModel
= null; // @jve:decl-index=0:visual-constraint=""
150 private JButton jButtonFvInFdfOptions
= null;
151 private JScrollPane jScrollPaneFvAdditional
= null;
152 private JTable jTableFvAdditional
= null;
153 private DefaultTableModel fvAdditionalTableModel
= null; // @jve:decl-index=0:visual-constraint=""
154 private JButton jButtonAddFv
= null;
155 private JButton jButtonDelFv
= null;
156 private JButton jButtonAddFvOptions
= null;
157 private int tabIndexForFv
= -1;
158 private int selectedRowInFvAdditionalTable
= -1;
159 private String oldFvName
= null;
160 private Vector
<String
> vBlockSize
= new Vector
<String
>();
161 private String determinedFvBlockSize
= null;
162 private final String defaultBlkSize
= "0x10000";
163 private String erasePolarity
= "";
164 boolean memModified
= false;
165 private FvOptsTableModel fvInFdfOptTableModel
= null;
166 private FvOptsTableModel fvAdditionalOptTableModel
= null;
167 private boolean sizeFromOptionDlg
= false;
168 private boolean fileFromOptionDlg
= false;
169 private JLabel jLabelOptions
= null;
170 private JPanel jPanelBgFvName
= null;
171 private JPanel jPanelBgFvImage
= null;
172 private JPanel jPanelW
= null;
173 private JPanel jPanelFvImageParaN
= null;
174 private JPanel jPanelFvImageParaS
= null;
175 // private JPanel jPanelFvImageParaC = null;
176 private JPanel jPanelFvImageOptsN
= null;
177 private JPanel jPanelFvImageOptsS
= null;
178 // private JPanel jPanelFvImageOptsC = null;
179 private JPanel jPanelFvImageParaE
= null;
180 private JPanel jPanelFvImageOptsE
= null;
181 private JPanel jPanelFvImageSN
= null;
182 private JPanel jPanelFvImageSE
= null;
183 private JPanel jPanelFvImageSS
= null;
187 // TODO Auto-generated constructor stub
190 this.setBounds(new java
.awt
.Rectangle(0, 0, 500, 370));
191 this.setVisible(true);
194 public FpdFlash(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
196 ffc
= new FpdFileContents(fpd
);
200 public FpdFlash(OpeningPlatformType opt
) {
201 this(opt
.getXmlFpd());
204 docConsole
.setSaved(false);
205 JOptionPane
.showMessageDialog(FrameworkWizardUI
.getInstance(), "Platform Synced with FDF file.");
211 * This method initializes jPanel
213 * @return javax.swing.JPanel
215 private JPanel
getJPanelContentEast() {
216 if (jPanelContentEast
== null) {
217 FlowLayout flowLayout7
= new FlowLayout();
218 flowLayout7
.setVgap(50);
219 jPanelContentEast
= new JPanel();
220 jPanelContentEast
.setLayout(flowLayout7
);
222 return jPanelContentEast
;
226 * This method initializes jPanel1
228 * @return javax.swing.JPanel
230 private JPanel
getJPanelContentSouth() {
231 if (jPanelContentSouth
== null) {
232 FlowLayout flowLayout
= new FlowLayout();
233 flowLayout
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
234 flowLayout
.setHgap(15);
235 jPanelContentSouth
= new JPanel();
236 jPanelContentSouth
.setLayout(flowLayout
);
237 jPanelContentSouth
.setComponentOrientation(java
.awt
.ComponentOrientation
.LEFT_TO_RIGHT
);
239 return jPanelContentSouth
;
243 * This method initializes jPanel2
245 * @return javax.swing.JPanel
247 private JPanel
getJPanelContentWest() {
248 if (jPanelContentWest
== null) {
249 jPanelContentWest
= new JPanel();
251 return jPanelContentWest
;
255 * This method initializes jPanel3
257 * @return javax.swing.JPanel
259 private JPanel
getJPanelContentNorth() {
260 if (jPanelContentNorth
== null) {
261 jPanelContentNorth
= new JPanel();
263 return jPanelContentNorth
;
267 * This method initializes jTabbedPane
269 * @return javax.swing.JTabbedPane
271 private JTabbedPane
getJTabbedPane() {
272 if (jTabbedPane
== null) {
273 jTabbedPane
= new JTabbedPane();
274 jTabbedPane
.addTab("General", null, getJPanelFdf(), null);
275 jTabbedPane
.addTab("Advanced", null, getJPanelFvImages(), null);
282 * This method initializes jPanelFvImages
284 * @return javax.swing.JPanel
286 private JPanel
getJPanelFvImages() {
287 if (jPanelFvImages
== null) {
288 jPanelFvImages
= new JPanel();
289 jPanelFvImages
.setLayout(new BorderLayout());
290 jPanelFvImages
.add(getJPanelFvImageN(), java
.awt
.BorderLayout
.NORTH
);
291 jPanelFvImages
.add(getJPanelFvImageS(), java
.awt
.BorderLayout
.SOUTH
);
292 jPanelFvImages
.add(getJPanelFvImageC(), java
.awt
.BorderLayout
.CENTER
);
293 jPanelFvImages
.add(getJPanelW(), java
.awt
.BorderLayout
.EAST
);
294 jPanelFvImages
.addComponentListener(new java
.awt
.event
.ComponentAdapter() {
295 public void componentShown(java
.awt
.event
.ComponentEvent e
) {
296 // fvImageParaTableModel.setRowCount(0);
297 // fvPropertyTableModel.setRowCount(0);
304 return jPanelFvImages
;
308 * This method initializes jPanelFvImageN
310 * @return javax.swing.JPanel
312 private JPanel
getJPanelFvImageS() {
313 if (jPanelFvImageS
== null) {
314 jLabelFvPropValue
= new JLabel();
315 jLabelFvPropValue
.setText("Value");
316 jLabelFvPropValue
.setEnabled(false);
317 jLabelFvPropValue
.setPreferredSize(new java
.awt
.Dimension(38,20));
318 jLabelFvPropName
= new JLabel();
319 jLabelFvPropName
.setText("Name");
320 jLabelFvPropName
.setEnabled(false);
321 jLabelFvPropName
.setPreferredSize(new java
.awt
.Dimension(38,20));
322 jPanelFvImageS
= new JPanel();
323 jPanelFvImageS
.setPreferredSize(new java
.awt
.Dimension(576,130));
324 jPanelFvImageS
.setBorder(javax
.swing
.BorderFactory
.createBevelBorder(javax
.swing
.border
.BevelBorder
.RAISED
));
325 jPanelFvImageS
.setLayout(new BorderLayout());
326 jPanelFvImageS
.add(getJPanelFvImageSN(), java
.awt
.BorderLayout
.NORTH
);
327 jPanelFvImageS
.add(getJPanelFvImageSE(), java
.awt
.BorderLayout
.EAST
);
328 jPanelFvImageS
.add(getJPanelFvImageSS(), java
.awt
.BorderLayout
.SOUTH
);
329 jPanelFvImageS
.add(getJScrollPaneFvProp(), java
.awt
.BorderLayout
.CENTER
);
332 return jPanelFvImageS
;
336 * This method initializes jPanelFvImageS
338 * @return javax.swing.JPanel
340 private JPanel
getJPanelFvImageN() {
341 if (jPanelFvImageN
== null) {
342 GridLayout gridLayout2
= new GridLayout();
343 gridLayout2
.setRows(1);
344 jPanelFvImageN
= new JPanel();
345 jPanelFvImageN
.setPreferredSize(new java
.awt
.Dimension(480,150));
346 jPanelFvImageN
.setLayout(gridLayout2
);
347 jPanelFvImageN
.add(getJScrollPaneFvInfo(), null);
349 return jPanelFvImageN
;
354 * This method initializes jCheckBox1
356 * @return javax.swing.JCheckBox
358 private JCheckBox
getJCheckBoxFvProperty() {
359 if (jCheckBoxFvProperty
== null) {
360 jCheckBoxFvProperty
= new JCheckBox();
361 jCheckBoxFvProperty
.setText("Global FV Variables");
362 jCheckBoxFvProperty
.addItemListener(new ItemListener(){
364 public void itemStateChanged(ItemEvent arg0
) {
365 // TODO Auto-generated method stub
366 boolean seleted
= jCheckBoxFvProperty
.isSelected();
368 jLabelFvPropName
.setEnabled(seleted
);
369 jTextFieldFvPropName
.setEnabled(seleted
);
370 jLabelFvPropValue
.setEnabled(seleted
);
371 jTextFieldFvPropValue
.setEnabled(seleted
);
372 jTableFvProp
.setEnabled(seleted
);
373 jButtonFvPropAdd
.setEnabled(seleted
);
374 jButtonFvPropDel
.setEnabled(seleted
);
381 return jCheckBoxFvProperty
;
386 * This method initializes jTextField
388 * @return javax.swing.JTextField
390 private JTextField
getJTextFieldFvPropName() {
391 if (jTextFieldFvPropName
== null) {
392 jTextFieldFvPropName
= new JTextField();
393 jTextFieldFvPropName
.setPreferredSize(new java
.awt
.Dimension(100,20));
394 jTextFieldFvPropName
.setEnabled(false);
396 return jTextFieldFvPropName
;
401 * This method initializes jTextField1
403 * @return javax.swing.JTextField
405 private JTextField
getJTextFieldFvPropValue() {
406 if (jTextFieldFvPropValue
== null) {
407 jTextFieldFvPropValue
= new JTextField();
408 jTextFieldFvPropValue
.setPreferredSize(new java
.awt
.Dimension(100,20));
409 jTextFieldFvPropValue
.setEnabled(false);
411 return jTextFieldFvPropValue
;
416 * This method initializes jButton
418 * @return javax.swing.JButton
420 private JButton
getJButtonFvPropAdd() {
421 if (jButtonFvPropAdd
== null) {
422 jButtonFvPropAdd
= new JButton();
423 jButtonFvPropAdd
.setPreferredSize(new java
.awt
.Dimension(80,20));
424 jButtonFvPropAdd
.setEnabled(false);
425 jButtonFvPropAdd
.setText("Add");
426 jButtonFvPropAdd
.addActionListener(new AbstractAction() {
430 private static final long serialVersionUID
= 1L;
432 public void actionPerformed(ActionEvent e
) {
433 if (jTextFieldFvPropName
.getText().length() > 0 && jTextFieldFvPropValue
.getText().length() > 0){
434 String
[] row
= {jTextFieldFvPropName
.getText(), jTextFieldFvPropValue
.getText()};
435 fvPropertyTableModel
.addRow(row
);
436 docConsole
.setSaved(false);
437 ffc
.genFvImagesNameValue(row
[0], row
[1]);
442 return jButtonFvPropAdd
;
447 * This method initializes jScrollPane1
449 * @return javax.swing.JScrollPane
451 private JScrollPane
getJScrollPaneFvProp() {
452 if (jScrollPaneFvProp
== null) {
453 jScrollPaneFvProp
= new JScrollPane();
454 jScrollPaneFvProp
.setPreferredSize(new java
.awt
.Dimension(350,100));
455 jScrollPaneFvProp
.setViewportView(getJTableFvProp());
457 return jScrollPaneFvProp
;
462 * This method initializes jTable
464 * @return javax.swing.JTable
466 private JTable
getJTableFvProp() {
467 if (jTableFvProp
== null) {
468 fvPropertyTableModel
= new DefaultTableModel();
469 jTableFvProp
= new JTable(fvPropertyTableModel
);
470 fvPropertyTableModel
.addColumn("Name");
471 fvPropertyTableModel
.addColumn("Value");
472 jTableFvProp
.setRowHeight(20);
473 jTableFvProp
.setEnabled(false);
475 jTableFvProp
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
476 jTableFvProp
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
477 public void valueChanged(ListSelectionEvent e
) {
478 if (e
.getValueIsAdjusting()){
481 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
482 if (lsm
.isSelectionEmpty()) {
486 // selectedRow = lsm.getMinSelectionIndex();
491 jTableFvProp
.getModel().addTableModelListener(new TableModelListener(){
492 public void tableChanged(TableModelEvent arg0
) {
493 // TODO Auto-generated method stub
494 int row
= arg0
.getFirstRow();
495 TableModel m
= (TableModel
)arg0
.getSource();
496 if (arg0
.getType() == TableModelEvent
.UPDATE
){
498 String name
= m
.getValueAt(row
, 0) + "";
499 String value
= m
.getValueAt(row
, 1) + "";
500 docConsole
.setSaved(false);
501 ffc
.updateFvImagesNameValue(row
, name
, value
);
511 * This method initializes jPanel4
513 * @return javax.swing.JPanel
515 private JPanel
getJPanelFvPropButtonGroup() {
516 if (jPanelFvPropButtonGroup
== null) {
517 jPanelFvPropButtonGroup
= new JPanel();
518 jPanelFvPropButtonGroup
.setPreferredSize(new java
.awt
.Dimension(80,55));
520 jPanelFvPropButtonGroup
.add(getJButtonFvPropAdd(), null);
521 jPanelFvPropButtonGroup
.add(getJButtonFvPropDel(), null);
523 return jPanelFvPropButtonGroup
;
528 * This method initializes jButton1
530 * @return javax.swing.JButton
532 private JButton
getJButtonFvPropDel() {
533 if (jButtonFvPropDel
== null) {
534 jButtonFvPropDel
= new JButton();
535 jButtonFvPropDel
.setPreferredSize(new java
.awt
.Dimension(80,20));
536 jButtonFvPropDel
.setEnabled(false);
537 jButtonFvPropDel
.setText("Delete");
538 jButtonFvPropDel
.addActionListener(new AbstractAction() {
542 private static final long serialVersionUID
= 1L;
544 public void actionPerformed(ActionEvent e
) {
545 if (jTableFvProp
.getSelectedRow() >= 0){
546 fvPropertyTableModel
.removeRow(jTableFvProp
.getSelectedRow());
547 docConsole
.setSaved(false);
548 ffc
.removeFvImagesNameValue(jTableFvProp
.getSelectedRow());
553 return jButtonFvPropDel
;
558 * This method initializes jPanelFvImageC
560 * @return javax.swing.JPanel
562 private JPanel
getJPanelFvImageC() {
563 if (jPanelFvImageC
== null) {
564 GridLayout gridLayout
= new GridLayout();
565 gridLayout
.setRows(2);
566 jLabelFvParaName
= new JLabel();
567 jLabelFvParaName
.setPreferredSize(new Dimension(38, 20));
568 jLabelFvParaName
.setText("Name");
569 jLabelFvImageNames
= new JLabel();
570 jLabelFvImageNames
.setText("FV Image Names");
571 jLabelFvImageNames
.setPreferredSize(new java
.awt
.Dimension(150,20));
572 jLabelFvParaType
= new JLabel();
573 jLabelFvParaType
.setText("Type");
574 jLabelFvParaType
.setPreferredSize(new java
.awt
.Dimension(70,20));
575 jPanelFvImageC
= new JPanel();
576 jPanelFvImageC
.setLayout(gridLayout
);
577 jPanelFvImageC
.add(getJPanelFvImagePara(), null);
578 jPanelFvImageC
.add(getJPanelFvImageOpts(), null);
582 return jPanelFvImageC
;
587 * This method initializes jComboBox
589 * @return javax.swing.JComboBox
591 private JComboBox
getJComboBoxFvParaType() {
592 if (jComboBoxFvParaType
== null) {
593 jComboBoxFvParaType
= new JComboBox();
594 jComboBoxFvParaType
.addItem("Attributes");
595 jComboBoxFvParaType
.addItem("Components");
596 jComboBoxFvParaType
.setSelectedIndex(0);
597 jComboBoxFvParaType
.setPreferredSize(new java
.awt
.Dimension(180,20));
598 jComboBoxFvParaType
.addItemListener(new ItemListener() {
600 public void itemStateChanged(ItemEvent arg0
) {
601 // TODO disable attribute settings when ValidImageNames selected.
602 int selectedRow
= jTableFvInfo
.getSelectedRow();
603 if (selectedRow
< 0) {
606 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
607 String oldType
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
608 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, oldType
);
609 if (fvImagePos
< 0) {
613 String type
= jComboBoxFvParaType
.getSelectedItem()+"";
614 ffc
.updateFvImagesFvImageType(fvImagePos
, type
);
615 jTableFvInfo
.setValueAt(type
, selectedRow
, 1);
616 docConsole
.setSaved(false);
621 return jComboBoxFvParaType
;
626 * This method initializes jTextField2
628 * @return javax.swing.JTextField
630 private JTextField
getJTextFieldFvParaName() {
631 if (jTextFieldFvParaName
== null) {
632 jTextFieldFvParaName
= new JTextField();
633 jTextFieldFvParaName
.setPreferredSize(new java
.awt
.Dimension(140,20));
635 return jTextFieldFvParaName
;
640 * This method initializes jButton2
642 * @return javax.swing.JButton
644 private JButton
getJButtonFvNameAdd() {
645 if (jButtonFvNameAdd
== null) {
646 jButtonFvNameAdd
= new JButton();
647 jButtonFvNameAdd
.setPreferredSize(new Dimension(80, 20));
648 jButtonFvNameAdd
.setEnabled(true);
649 jButtonFvNameAdd
.setText("Add");
650 jButtonFvNameAdd
.addActionListener(new AbstractAction() {
654 private static final long serialVersionUID
= 1L;
656 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
657 if (jTextFieldFvParaName
.getText().length() > 0){
658 String
[] row
= {jTextFieldFvParaName
.getText()};
659 int selectedRow
= jTableFvInfo
.getSelectedRow();
660 if (selectedRow
< 0) {
664 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
665 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
666 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
668 if (fvImagePos
< 0) {
670 ffc
.genFvImagesFvImage(row
, jComboBoxFvParaType
.getSelectedItem()+"", null);
674 ffc
.addFvImageNamesInFvImage(fvImagePos
, row
);
676 docConsole
.setSaved(false);
677 fvImageNameTableModel
.addRow(row
);
679 fvNameList
+= row
[0];
680 jTableFvInfo
.setValueAt(fvNameList
.trim(), selectedRow
, 0);
681 jTableFvImageNames
.changeSelection(jTableFvImageNames
.getRowCount() - 1, 0, false, false);
686 return jButtonFvNameAdd
;
691 * This method initializes jScrollPane2
693 * @return javax.swing.JScrollPane
695 private JScrollPane
getJScrollPaneFvImageNames() {
696 if (jScrollPaneFvImageNames
== null) {
697 jScrollPaneFvImageNames
= new JScrollPane();
698 jScrollPaneFvImageNames
.setPreferredSize(new java
.awt
.Dimension(350,80));
699 jScrollPaneFvImageNames
.setViewportView(getJTableFvImageNames());
701 return jScrollPaneFvImageNames
;
706 * This method initializes jTable1
708 * @return javax.swing.JTable
710 private JTable
getJTableFvImageNames() {
711 if (jTableFvImageNames
== null) {
712 fvImageNameTableModel
= new IDefaultTableModel();
713 jTableFvImageNames
= new JTable(fvImageNameTableModel
);
714 jTableFvImageNames
.setRowHeight(20);
715 fvImageNameTableModel
.addColumn("FV Image Name");
718 return jTableFvImageNames
;
723 * This method initializes jButton3
725 * @return javax.swing.JButton
727 private JButton
getJButtonFvNameDel() {
728 if (jButtonFvNameDel
== null) {
729 jButtonFvNameDel
= new JButton();
730 jButtonFvNameDel
.setPreferredSize(new Dimension(80, 20));
731 jButtonFvNameDel
.setEnabled(true);
732 jButtonFvNameDel
.setText("Delete");
733 jButtonFvNameDel
.addActionListener(new AbstractAction() {
737 private static final long serialVersionUID
= 1L;
739 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
740 if (jTableFvImageNames
.getSelectedRow() >= 0){
741 int selectedRow
= jTableFvInfo
.getSelectedRow();
742 if (selectedRow
< 0) {
746 String selectedFvName
= jTableFvImageNames
.getValueAt(jTableFvImageNames
.getSelectedRow(), 0)+"";
747 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
748 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
749 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
751 if (fvImagePos
< 0) {
756 ffc
.updateFvImageNamesInFvImage(fvImagePos
, selectedFvName
, null);
758 docConsole
.setSaved(false);
759 String newList
= removeFvNameFromList(fvNameList
, selectedFvName
);
760 jTableFvInfo
.setValueAt(newList
, selectedRow
, 0);
761 fvImageNameTableModel
.removeRow(jTableFvImageNames
.getSelectedRow());
766 return jButtonFvNameDel
;
769 private String
removeFvNameFromList (String list
, String name
) {
770 String
[] nameArray
= list
.split(" ");
772 for (int i
= 0; i
< nameArray
.length
; ++i
) {
773 if (nameArray
[i
].equals(name
)) {
779 if (occursAt
== -1) {
783 String newList
= " ";
784 for (int j
= 0; j
< nameArray
.length
; ++j
) {
786 newList
+= nameArray
[j
];
791 return newList
.trim();
795 private JPanel
getJPanelFvImageOpts() {
798 if (jPanelFvImageOpts
== null) {
799 //ToDo add ButtonGroup for RadioButtons
800 jLabelOptions
= new JLabel();
801 jLabelOptions
.setText("Attribute");
802 jLabelFvImageOptValue
= new JLabel();
803 jLabelFvImageOptValue
.setEnabled(true);
804 jLabelFvImageOptValue
.setText("Value");
805 jLabelFvImageOptValue
.setPreferredSize(new Dimension(38, 20));
806 jLabelFvImageOptName
= new JLabel();
807 jLabelFvImageOptName
.setEnabled(true);
808 jLabelFvImageOptName
.setText("Name");
809 jLabelFvImageOptName
.setPreferredSize(new Dimension(38, 20));
810 jPanelFvImageOpts
= new JPanel();
811 jPanelFvImageOpts
.setLayout(new BorderLayout());
812 jPanelFvImageOpts
.setPreferredSize(new java
.awt
.Dimension(450,130));
815 jPanelFvImageOpts
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
817 jPanelFvImageOpts
.add(getJPanelFvImageOptsN(), java
.awt
.BorderLayout
.NORTH
);
818 jPanelFvImageOpts
.add(getJPanelFvImageOptsS(), java
.awt
.BorderLayout
.SOUTH
);
819 jPanelFvImageOpts
.add(getJScrollPane(), java
.awt
.BorderLayout
.CENTER
);
821 jPanelFvImageOpts
.add(getJPanelFvImageOptsE(), java
.awt
.BorderLayout
.EAST
);
823 return jPanelFvImageOpts
;
828 * This method initializes jButton4
830 * @return javax.swing.JButton
832 private JButton
getJButtonAddFvImage() {
833 if (jButtonAddFvImage
== null) {
834 jButtonAddFvImage
= new JButton();
835 jButtonAddFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
836 jButtonAddFvImage
.setText("New FV Attributes");
837 jButtonAddFvImage
.addActionListener(new AbstractAction() {
841 private static final long serialVersionUID
= 1L;
843 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
845 // String imageName = " ";
846 // for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){
847 // imageName += (String)jTableFvImageNames.getValueAt(i, 0);
850 // imageName = imageName.trim();
852 // LinkedHashMap<String, String> m = null;
853 // m = new LinkedHashMap<String, String>();
854 // getOptionNameValue(m);
855 // ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);
856 // docConsole.setSaved(false);
857 fvImageNameTableModel
.setRowCount(0);
858 fvOptionTableModel
.setRowCount(0);
859 Object
[] row
= {"", jComboBoxFvParaType
.getSelectedItem()};
860 fvImageParaTableModel
.addRow(row
);
861 jTableFvInfo
.changeSelection(jTableFvInfo
.getRowCount() - 1, 0, false, false);
865 return jButtonAddFvImage
;
870 * This method initializes jScrollPane3
872 * @return javax.swing.JScrollPane
874 private JScrollPane
getJScrollPaneFvInfo() {
875 if (jScrollPaneFvInfo
== null) {
876 jScrollPaneFvInfo
= new JScrollPane();
877 jScrollPaneFvInfo
.setPreferredSize(new java
.awt
.Dimension(480,150));
878 jScrollPaneFvInfo
.setViewportView(getJTableFvInfo());
880 return jScrollPaneFvInfo
;
885 * This method initializes jTable2
887 * @return javax.swing.JTable
889 private JTable
getJTableFvInfo() {
890 if (jTableFvInfo
== null) {
891 fvImageParaTableModel
= new ImageParaTableModel();
892 jTableFvInfo
= new JTable(fvImageParaTableModel
);
893 fvImageParaTableModel
.addColumn("FvImageNames");
894 fvImageParaTableModel
.addColumn("Type");
896 jTableFvInfo
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
897 jTableFvInfo
.setRowHeight(20);
898 jTableFvInfo
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
899 public void valueChanged(ListSelectionEvent e
) {
900 if (e
.getValueIsAdjusting()){
903 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
904 if (lsm
.isSelectionEmpty()) {
908 int selectedRow
= lsm
.getMinSelectionIndex();
909 String fvNameList
= fvImageParaTableModel
.getValueAt(selectedRow
, 0)+"";
910 String type
= fvImageParaTableModel
.getValueAt(selectedRow
, 1)+"";
911 jComboBoxFvParaType
.setSelectedItem(type
);
912 String
[] fvNames
= fvNameList
.split(" ");
913 fvImageNameTableModel
.setRowCount(0);
914 fvOptionTableModel
.setRowCount(0);
915 for (int i
= 0; i
< fvNames
.length
; ++i
) {
916 String
[] row
= { fvNames
[i
] };
917 if (row
[0].length() > 0) {
918 fvImageNameTableModel
.addRow(row
);
922 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
923 if (fvImagePos
< 0) {
926 LinkedHashMap
<String
, String
> optionMap
= new LinkedHashMap
<String
, String
>();
927 ffc
.getFvImagesFvImageOptions(fvImagePos
, optionMap
);
928 if (optionMap
.size() > 0){
929 Set
<String
> key
= optionMap
.keySet();
930 Iterator
<String
> i
= key
.iterator();
931 while (i
.hasNext()) {
932 String k
= (String
)i
.next();
933 String
[] row
= {k
, optionMap
.get(k
)};
934 fvOptionTableModel
.addRow(row
);
948 * This method initializes jButton6
950 * @return javax.swing.JButton
952 private JButton
getJButtonDelFvImage() {
953 if (jButtonDelFvImage
== null) {
954 jButtonDelFvImage
= new JButton();
955 jButtonDelFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
956 jButtonDelFvImage
.setText("Delete FV Attributes");
957 jButtonDelFvImage
.addActionListener(new AbstractAction() {
961 private static final long serialVersionUID
= 1L;
963 public void actionPerformed(ActionEvent arg0
) {
964 // TODO Auto-generated method stub
965 if (jTableFvInfo
.getSelectedRow() >= 0 ) {
966 String fvNameList
= fvImageParaTableModel
.getValueAt(jTableFvInfo
.getSelectedRow(), 0)+"";
967 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, jComboBoxFvParaType
.getSelectedItem()+"");
969 ffc
.removeFvImagesFvImage(fvImagePos
);
970 fvImageParaTableModel
.removeRow(jTableFvInfo
.getSelectedRow());
971 docConsole
.setSaved(false);
973 fvImageNameTableModel
.setRowCount(0);
974 fvOptionTableModel
.setRowCount(0);
980 return jButtonDelFvImage
;
985 * This method initializes jPanel6
987 * @return javax.swing.JPanel
989 private JPanel
getJPanelFvImagePara() {
990 if (jPanelFvImagePara
== null) {
991 StarLabel starLabel
= new StarLabel();
992 starLabel
.setVisible(false);
993 jPanelFvImagePara
= new JPanel();
994 jPanelFvImagePara
.setLayout(new BorderLayout());
995 jPanelFvImagePara
.setPreferredSize(new java
.awt
.Dimension(450,140));
996 jPanelFvImagePara
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
998 jPanelFvImagePara
.add(getJPanelFvImageParaN(), java
.awt
.BorderLayout
.NORTH
);
999 jPanelFvImagePara
.add(getJPanelFvImageParaS(), java
.awt
.BorderLayout
.SOUTH
);
1000 jPanelFvImagePara
.add(getJScrollPaneFvImageNames(), java
.awt
.BorderLayout
.CENTER
);
1002 jPanelFvImagePara
.add(getJPanelFvImageParaE(), java
.awt
.BorderLayout
.EAST
);
1007 return jPanelFvImagePara
;
1011 * This method initializes jPanel7
1013 * @return javax.swing.JPanel
1015 private JPanel
getJPanelFdf() {
1016 if (jPanelFdf
== null) {
1017 jPanelFdf
= new JPanel();
1018 jPanelFdf
.setLayout(new BorderLayout());
1020 jPanelFdf
.add(getJPanelFdfN(), java
.awt
.BorderLayout
.NORTH
);
1021 jPanelFdf
.add(getJPanelFdfS(), java
.awt
.BorderLayout
.SOUTH
);
1022 jPanelFdf
.add(getJSplitPaneFdfC(), java
.awt
.BorderLayout
.CENTER
);
1023 jPanelFdf
.addComponentListener(new ComponentAdapter(){
1024 public void componentShown(ComponentEvent e
) {
1025 // if (ffc.getFlashDefinitionFile() != null) {
1026 // jTextFieldFdf.setText(ffc.getFlashDefinitionFile());
1027 // initFvInFdfTable(Workspace.getCurrenetWorkspace() + File.separator + jTextFieldFdf.getText());
1031 public void componentHidden(ComponentEvent e
) {
1032 if (jCheckBoxFdf
.isSelected()) {
1033 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1042 * This method initializes jCheckBox
1044 * @return javax.swing.JCheckBox
1046 private JCheckBox
getJCheckBoxFdf() {
1047 if (jCheckBoxFdf
== null) {
1048 jCheckBoxFdf
= new JCheckBox();
1049 jCheckBoxFdf
.setText("Flash Definition File");
1050 jCheckBoxFdf
.addItemListener(new ItemListener() {
1052 public void itemStateChanged(ItemEvent arg0
) {
1053 // TODO Auto-generated method stub
1054 if (jCheckBoxFdf
.isSelected()){
1055 jTextFieldFdf
.setEnabled(true);
1056 jButtonFdfBrowse
.setEnabled(true);
1059 getFvInFdfTableModel().setRowCount(0);
1060 jTextFieldFdf
.setEnabled(false);
1061 jTextFieldFdf
.setText("");
1062 jButtonFdfBrowse
.setEnabled(false);
1063 ffc
.genFlashDefinitionFile("");
1064 docConsole
.setSaved(false);
1065 int selectedBackup
= selectedRowInFvAdditionalTable
;
1066 selectedRowInFvAdditionalTable
= -1;
1067 initFvAdditionalTable();
1068 selectedRowInFvAdditionalTable
= selectedBackup
;
1073 return jCheckBoxFdf
;
1077 * This method initializes jTextField3
1079 * @return javax.swing.JTextField
1081 private JTextField
getJTextFieldFdf() {
1082 if (jTextFieldFdf
== null) {
1083 jTextFieldFdf
= new JTextField();
1084 jTextFieldFdf
.setEnabled(false);
1085 jTextFieldFdf
.setEditable(false);
1086 jTextFieldFdf
.setPreferredSize(new Dimension(300, 20));
1087 jTextFieldFdf
.addFocusListener(new java
.awt
.event
.FocusAdapter() {
1088 public void focusLost(java
.awt
.event
.FocusEvent e
) {
1089 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1093 return jTextFieldFdf
;
1097 * This method initializes jButton5
1099 * @return javax.swing.JButton
1101 private JButton
getJButtonFdfBrowse() {
1102 if (jButtonFdfBrowse
== null) {
1103 jButtonFdfBrowse
= new JButton();
1104 jButtonFdfBrowse
.setEnabled(false);
1105 jButtonFdfBrowse
.setText("Browse");
1106 jButtonFdfBrowse
.setPreferredSize(new Dimension(78, 20));
1107 jButtonFdfBrowse
.addActionListener(new AbstractAction(){
1111 private static final long serialVersionUID
= 1L;
1113 public void actionPerformed(ActionEvent e
) {
1114 // TODO Auto-generated method stub
1115 String wsDir
= Workspace
.getCurrentWorkspace();
1116 JFileChooser chooser
= new JFileChooser(wsDir
);
1117 chooser
.setMultiSelectionEnabled(false);
1118 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1119 int retval
= chooser
.showOpenDialog(FpdFlash
.this);
1120 if (retval
== JFileChooser
.APPROVE_OPTION
) {
1122 File theFile
= chooser
.getSelectedFile();
1123 String filePath
= theFile
.getPath();
1124 if (!filePath
.startsWith(wsDir
)) {
1125 JOptionPane
.showMessageDialog(FpdFlash
.this, "You can only select files in current WORKSPACE.");
1128 jTextFieldFdf
.setText(filePath
.substring(wsDir
.length() + 1).replace('\\', '/'));
1129 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1130 docConsole
.setSaved(false);
1131 initFvInFdfTable(filePath
);
1137 return jButtonFdfBrowse
;
1140 private void initFvAttributes () {
1141 if (ffc
.getFvImagesFvImageCount("Attributes") == 0 && ffc
.getFvImagesFvImageCount("Components") == 0) {
1144 String
[][] saa
= new String
[ffc
.getFvImagesFvImageCount("Attributes")][2];
1145 ffc
.getFvImagesFvImages(saa
, "Attributes");
1148 while (i
< saa
.length
) {
1149 fvImageParaTableModel
.addRow(saa
[i
]);
1153 saa
= new String
[ffc
.getFvImagesFvImageCount("Components")][2];
1154 ffc
.getFvImagesFvImages(saa
, "Components");
1156 while (i
< saa
.length
) {
1157 fvImageParaTableModel
.addRow(saa
[i
]);
1161 saa
= new String
[ffc
.getFvImagesNameValueCount()][2];
1162 ffc
.getFvImagesNameValues(saa
);
1163 for (int m
= 0; m
< saa
.length
; ++m
) {
1164 fvPropertyTableModel
.addRow(saa
[m
]);
1168 private void initFvAdditionalTable() {
1169 Vector
<String
> vFvNames
= new Vector
<String
>();
1170 ffc
.getFvImagesFvImageFvImageNames(vFvNames
);
1171 for (int i
= 0; i
< vFvNames
.size(); ++i
) {
1172 String fvName
= vFvNames
.get(i
);
1173 if (fvNameExists(fvName
)) {
1176 fvAdditionalTableModel
.addRow(getBasicFvInfo(fvName
));
1177 addTabForFv(new FvInfoFromFdf(fvName
, "", ""));
1181 private void initFvInFdfTable(String fdfPath
){
1182 Vector
<FvInfoFromFdf
> vFvInfo
= new Vector
<FvInfoFromFdf
>();
1183 getFvInfoFromFdf(fdfPath
, vFvInfo
);
1184 getFlashInfoFromFdf (fdfPath
);
1185 if (!erasePolarity
.equals("1") && !erasePolarity
.equals("0")) {
1186 JOptionPane
.showMessageDialog(FrameworkWizardUI
.getInstance(), "FDF file does NOT contain valid Erase Polarity.");
1189 ffc
.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity
);
1192 // BugBug: assume all blocks have same size;
1194 String blkSize
= defaultBlkSize
;
1195 if (vBlockSize
.size() > 0) {
1196 blkSize
= vBlockSize
.get(0);
1197 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1198 JOptionPane
.showMessageDialog(FpdFlash
.this, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");
1199 blkSize
= defaultBlkSize
;
1202 determinedFvBlockSize
= blkSize
;
1204 getFvInFdfTableModel().setRowCount(0);
1205 Vector
<String
> vExistingFvNameInFpd
= new Vector
<String
>();
1206 ffc
.getFvImagesFvImageFvImageNames(vExistingFvNameInFpd
);
1207 for (int j
= 0; j
< vFvInfo
.size(); ++j
) {
1208 FvInfoFromFdf fvInfo
= vFvInfo
.get(j
);
1209 String
[] row
= {fvInfo
.getFvName(), fvInfo
.getSize(), fvInfo
.getEfiFileName()};
1211 if (row
[0].length() > 0 && !vExistingFvNameInFpd
.contains(row
[0])) {
1212 ffc
.addFvImageFvImageNames(new String
[]{row
[0]});
1215 // if FV addtional table contains the same FV from fdf file, remove that row.
1216 for (int k
= 0; k
< jTableFvAdditional
.getRowCount(); ++k
) {
1217 if (fvAdditionalTableModel
.getValueAt(k
, 0).equals(row
[0])) {
1218 fvAdditionalTableModel
.removeRow(k
);
1221 getFvInFdfTableModel().addRow(row
);
1223 int blockSize
= Integer
.decode(blkSize
);
1224 int fvSize
= Integer
.decode(row
[1]);
1225 int numBlocks
= fvSize
/blockSize
;
1226 HashMap
<String
, String
> mOptions
= new HashMap
<String
, String
>();
1227 // if no options for this FV before, generate a new options entry for this FV.
1228 if (ffc
.getFvImagesFvImageWithName(row
[0], "Options") == null) {
1230 mOptions
.put("EFI_BLOCK_SIZE", blkSize
);
1231 mOptions
.put("EFI_NUM_BLOCKS", numBlocks
+"");
1232 mOptions
.put("EFI_FILE_NAME", row
[2]);
1233 ffc
.genFvImagesFvImage(new String
[]{row
[0]}, "Options", mOptions
);
1237 ffc
.getFvImagesFvImageOptions(row
[0], mOptions
);
1238 if (mOptions
.get("EFI_BLOCK_SIZE") == null || !mOptions
.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize
)) {
1239 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_BLOCK_SIZE", blkSize
, null);
1242 if (mOptions
.get("EFI_NUM_BLOCKS") == null || Integer
.decode(mOptions
.get("EFI_NUM_BLOCKS")) != numBlocks
) {
1243 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_NUM_BLOCKS", numBlocks
+ "", null);
1246 if (mOptions
.get("EFI_FILE_NAME") == null || !mOptions
.get("EFI_FILE_NAME").equals(row
[2])) {
1247 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_FILE_NAME", row
[2], null);
1253 catch (NumberFormatException e
){
1254 JOptionPane
.showMessageDialog(FpdFlash
.this, e
.getMessage());
1258 for (int k
= 0; k
< vFvInfo
.size(); ++k
) {
1259 FvInfoFromFdf fvInfo
= vFvInfo
.get(k
);
1260 addTabForFv(fvInfo
);
1265 private void addTabForFv (FvInfoFromFdf fvInfo
) {
1266 String fvName
= fvInfo
.getFvName();
1267 String outputFile
= fvInfo
.getEfiFileName();
1268 int index
= jTabbedPane
.indexOfTab(fvName
);
1269 if (index
>= startIndexOfDynamicTab
) {
1272 ModuleOrderPane pane
= new ModuleOrderPane(fvName
, outputFile
, ffc
, this);
1273 pane
.showModulesInFv(fvName
);
1274 pane
.showAllModulesInPlatform();
1275 jTabbedPane
.addTab(fvName
, null, pane
, null);
1278 * This method initializes jTextField4
1280 * @return javax.swing.JTextField
1282 private JTextField
getJTextFieldFvImageOptName() {
1283 if (jTextFieldFvImageOptName
== null) {
1284 jTextFieldFvImageOptName
= new JTextField();
1285 jTextFieldFvImageOptName
.setEnabled(true);
1286 jTextFieldFvImageOptName
.setPreferredSize(new Dimension(100, 20));
1288 return jTextFieldFvImageOptName
;
1292 * This method initializes jTextField5
1294 * @return javax.swing.JTextField
1296 private JTextField
getJTextFieldFvImageOptValue() {
1297 if (jTextFieldFvImageOptValue
== null) {
1298 jTextFieldFvImageOptValue
= new JTextField();
1299 jTextFieldFvImageOptValue
.setEnabled(true);
1300 jTextFieldFvImageOptValue
.setPreferredSize(new Dimension(100, 20));
1302 return jTextFieldFvImageOptValue
;
1306 * This method initializes jPanel8
1308 * @return javax.swing.JPanel
1310 private JPanel
getJPanelFvImageOptsButtonGroup() {
1311 if (jPanelFvImageOptsButtonGroup
== null) {
1312 jPanelFvImageOptsButtonGroup
= new JPanel();
1313 jPanelFvImageOptsButtonGroup
.setPreferredSize(new Dimension(80, 55));
1314 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptAdd(), null);
1315 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptDel(), null);
1317 return jPanelFvImageOptsButtonGroup
;
1321 * This method initializes jButton7
1323 * @return javax.swing.JButton
1325 private JButton
getJButtonFvImageOptAdd() {
1326 if (jButtonFvImageOptAdd
== null) {
1327 jButtonFvImageOptAdd
= new JButton();
1328 jButtonFvImageOptAdd
.setEnabled(true);
1329 jButtonFvImageOptAdd
.setText("Add");
1330 jButtonFvImageOptAdd
.setPreferredSize(new Dimension(80, 20));
1331 jButtonFvImageOptAdd
.addActionListener(new AbstractAction() {
1335 private static final long serialVersionUID
= 1L;
1337 public void actionPerformed(ActionEvent e
) {
1338 if (jTextFieldFvImageOptName
.getText().length() > 0 && jTextFieldFvImageOptValue
.getText().length() > 0){
1339 int selectedRow
= jTableFvInfo
.getSelectedRow();
1340 if (selectedRow
< 0) {
1344 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1345 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1346 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1347 String
[] row
= {jTextFieldFvImageOptName
.getText(), jTextFieldFvImageOptValue
.getText()};
1349 if (fvImagePos
< 0) {
1353 //append options to FvImage.
1354 ffc
.setFvImagesFvImageNameValue(fvImagePos
, row
[0], row
[1]);
1356 docConsole
.setSaved(false);
1357 fvOptionTableModel
.addRow(row
);
1358 jTableFvImageOpts
.changeSelection(jTableFvImageOpts
.getRowCount() - 1, 0, false, false);
1363 return jButtonFvImageOptAdd
;
1367 * This method initializes jButton8
1369 * @return javax.swing.JButton
1371 private JButton
getJButtonFvImageOptDel() {
1372 if (jButtonFvImageOptDel
== null) {
1373 jButtonFvImageOptDel
= new JButton();
1374 jButtonFvImageOptDel
.setEnabled(true);
1375 jButtonFvImageOptDel
.setText("Delete");
1376 jButtonFvImageOptDel
.setPreferredSize(new Dimension(80, 20));
1377 jButtonFvImageOptDel
.addActionListener(new AbstractAction() {
1381 private static final long serialVersionUID
= 1L;
1383 public void actionPerformed(ActionEvent e
) {
1384 if (jTableFvImageOpts
.getSelectedRow() >= 0){
1385 int selectedRow
= jTableFvInfo
.getSelectedRow();
1386 if (selectedRow
< 0) {
1390 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1391 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1392 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1393 if (fvImagePos
< 0) {
1397 String optName
= fvOptionTableModel
.getValueAt(jTableFvImageOpts
.getSelectedRow(), 0)+"";
1398 ffc
.removeFvImageNameValue(fvImagePos
, optName
);
1399 docConsole
.setSaved(false);
1400 fvOptionTableModel
.removeRow(jTableFvImageOpts
.getSelectedRow());
1405 return jButtonFvImageOptDel
;
1409 * This method initializes jScrollPane
1411 * @return javax.swing.JScrollPane
1413 private JScrollPane
getJScrollPane() {
1414 if (jScrollPane
== null) {
1415 jScrollPane
= new JScrollPane();
1416 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(350,100));
1417 jScrollPane
.setViewportView(getJTableFvImageOpts());
1423 * This method initializes jTable3
1425 * @return javax.swing.JTable
1427 private JTable
getJTableFvImageOpts() {
1428 if (jTableFvImageOpts
== null) {
1429 fvOptionTableModel
= new IDefaultTableModel();
1430 fvOptionTableModel
.addColumn("Name");
1431 fvOptionTableModel
.addColumn("Value");
1432 jTableFvImageOpts
= new JTable(fvOptionTableModel
);
1434 jTableFvImageOpts
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
1435 jTableFvImageOpts
.setRowHeight(20);
1438 return jTableFvImageOpts
;
1442 * This method initializes jButton9
1444 * @return javax.swing.JButton
1446 private JButton
getJButtonUpdateFvImage() {
1447 if (jButtonUpdateFvImage
== null) {
1448 jButtonUpdateFvImage
= new JButton();
1449 jButtonUpdateFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
1450 jButtonUpdateFvImage
.setActionCommand("Update");
1451 jButtonUpdateFvImage
.setText("Update FV Attributes");
1452 jButtonUpdateFvImage
.setVisible(false);
1453 jButtonUpdateFvImage
.addActionListener(new java
.awt
.event
.ActionListener() {
1454 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1455 int row
= jTableFvInfo
.getSelectedRow();
1456 if (jTableFvInfo
.isEditing()) {
1457 jTableFvInfo
.getCellEditor().stopCellEditing();
1459 if (jTableFvImageOpts
.isEditing()) {
1460 jTableFvImageOpts
.getCellEditor().stopCellEditing();
1463 //ToDo Check data validity before update
1464 String name
= fvImageParaTableModel
.getValueAt(row
, 0) + "";
1465 String type
= fvImageParaTableModel
.getValueAt(row
, 1) + "";
1467 LinkedHashMap
<String
, String
> lhm
= new LinkedHashMap
<String
, String
>();
1468 getOptionNameValue(lhm
);
1470 docConsole
.setSaved(false);
1471 ffc
.updateFvImagesFvImage(row
, name
.split(" "), type
, lhm
);
1476 return jButtonUpdateFvImage
;
1480 * This method initializes jPanelFdfN
1482 * @return javax.swing.JPanel
1484 private JPanel
getJPanelFdfN() {
1485 if (jPanelFdfN
== null) {
1486 jPanelFdfN
= new JPanel();
1487 jPanelFdfN
.add(getJCheckBoxFdf(), null);
1488 jPanelFdfN
.add(getJTextFieldFdf(), null);
1489 jPanelFdfN
.add(getJButtonFdfBrowse(), null);
1495 * This method initializes jPanelFdfS
1497 * @return javax.swing.JPanel
1499 private JPanel
getJPanelFdfS() {
1500 if (jPanelFdfS
== null) {
1501 FlowLayout flowLayout4
= new FlowLayout();
1502 flowLayout4
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1503 jPanelFdfS
= new JPanel();
1504 jPanelFdfS
.setLayout(flowLayout4
);
1505 jPanelFdfS
.add(getJButtonAddFv(), null);
1506 jPanelFdfS
.add(getJButtonDelFv(), null);
1507 jPanelFdfS
.add(getJButtonAddFvOptions(), null);
1513 * This method initializes jSplitPaneFdfC
1515 * @return javax.swing.JSplitPane
1517 private JSplitPane
getJSplitPaneFdfC() {
1518 if (jSplitPaneFdfC
== null) {
1519 jSplitPaneFdfC
= new JSplitPane();
1520 jSplitPaneFdfC
.setOrientation(javax
.swing
.JSplitPane
.VERTICAL_SPLIT
);
1521 jSplitPaneFdfC
.setDividerSize(5);
1522 jSplitPaneFdfC
.setTopComponent(getJPanelFdfCTop());
1523 jSplitPaneFdfC
.setBottomComponent(getJPanelFdfCBottom());
1524 jSplitPaneFdfC
.setDividerLocation(280);
1526 return jSplitPaneFdfC
;
1530 * This method initializes jPanelFdfCTop
1532 * @return javax.swing.JPanel
1534 private JPanel
getJPanelFdfCTop() {
1535 if (jPanelFdfCTop
== null) {
1536 jPanelFdfCTop
= new JPanel();
1537 jPanelFdfCTop
.setLayout(new BorderLayout());
1538 jPanelFdfCTop
.add(getJPanelFdfCTopN(), java
.awt
.BorderLayout
.NORTH
);
1539 jPanelFdfCTop
.add(getJPanelFdfCTopS(), java
.awt
.BorderLayout
.SOUTH
);
1540 jPanelFdfCTop
.add(getJScrollPaneFvInFdf(), java
.awt
.BorderLayout
.CENTER
);
1542 return jPanelFdfCTop
;
1546 * This method initializes jPanelFdfCBottom
1548 * @return javax.swing.JPanel
1550 private JPanel
getJPanelFdfCBottom() {
1551 if (jPanelFdfCBottom
== null) {
1552 jPanelFdfCBottom
= new JPanel();
1553 jPanelFdfCBottom
.setLayout(new BorderLayout());
1554 jPanelFdfCBottom
.add(getJPanelFdfCBottomN(), java
.awt
.BorderLayout
.NORTH
);
1555 jPanelFdfCBottom
.add(getJScrollPaneFvAdditional(), java
.awt
.BorderLayout
.CENTER
);
1557 return jPanelFdfCBottom
;
1561 * This method initializes jPanelFdfCTopN
1563 * @return javax.swing.JPanel
1565 private JPanel
getJPanelFdfCTopN() {
1566 if (jPanelFdfCTopN
== null) {
1567 jLabelFvInFdf
= new JLabel();
1568 jLabelFvInFdf
.setText("FVs in Flash Definition File");
1569 jPanelFdfCTopN
= new JPanel();
1570 jPanelFdfCTopN
.add(jLabelFvInFdf
, null);
1572 return jPanelFdfCTopN
;
1576 * This method initializes jPanelFdfCTopS
1578 * @return javax.swing.JPanel
1580 private JPanel
getJPanelFdfCTopS() {
1581 if (jPanelFdfCTopS
== null) {
1582 FlowLayout flowLayout1
= new FlowLayout();
1583 flowLayout1
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1584 jPanelFdfCTopS
= new JPanel();
1585 jPanelFdfCTopS
.setLayout(flowLayout1
);
1586 jPanelFdfCTopS
.add(getJButtonFvInFdfOptions(), null);
1588 return jPanelFdfCTopS
;
1592 * This method initializes jPanelFdfCTopC
1594 * @return javax.swing.JPanel
1596 // private JPanel getJPanelFdfCTopC() {
1597 // if (jPanelFdfCTopC == null) {
1598 // jPanelFdfCTopC = new JPanel();
1599 // jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null);
1601 // return jPanelFdfCTopC;
1605 * This method initializes jPanelFdfCBottomN
1607 * @return javax.swing.JPanel
1609 private JPanel
getJPanelFdfCBottomN() {
1610 if (jPanelFdfCBottomN
== null) {
1611 jLabelFvAdditional
= new JLabel();
1612 jLabelFvAdditional
.setText("Additional FVs");
1613 jPanelFdfCBottomN
= new JPanel();
1614 jPanelFdfCBottomN
.add(jLabelFvAdditional
, null);
1616 return jPanelFdfCBottomN
;
1620 * This method initializes jPanelFdfCBottomC
1622 * @return javax.swing.JPanel
1624 // private JPanel getJPanelFdfCBottomC() {
1625 // if (jPanelFdfCBottomC == null) {
1626 // jPanelFdfCBottomC = new JPanel();
1627 // jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);
1629 // return jPanelFdfCBottomC;
1633 * This method initializes jScrollPaneFvInFdf
1635 * @return javax.swing.JScrollPane
1637 private JScrollPane
getJScrollPaneFvInFdf() {
1638 if (jScrollPaneFvInFdf
== null) {
1639 jScrollPaneFvInFdf
= new JScrollPane();
1640 jScrollPaneFvInFdf
.setPreferredSize(new java
.awt
.Dimension(653,200));
1641 jScrollPaneFvInFdf
.setViewportView(getJTableFvInFdf());
1643 return jScrollPaneFvInFdf
;
1647 * This method initializes jTableFvInFdf
1649 * @return javax.swing.JTable
1651 private JTable
getJTableFvInFdf() {
1652 if (jTableFvInFdf
== null) {
1653 jTableFvInFdf
= new JTable();
1654 jTableFvInFdf
.setRowHeight(20);
1655 jTableFvInFdf
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1656 jTableFvInFdf
.setModel(getFvInFdfTableModel());
1658 return jTableFvInFdf
;
1662 * This method initializes fvInFdfTableModel
1664 * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel
1666 private IDefaultTableModel
getFvInFdfTableModel() {
1667 if (fvInFdfTableModel
== null) {
1668 fvInFdfTableModel
= new IDefaultTableModel();
1669 fvInFdfTableModel
.addColumn("FV Name");
1670 fvInFdfTableModel
.addColumn("Size");
1671 fvInFdfTableModel
.addColumn("Corresponding File Name");
1673 return fvInFdfTableModel
;
1677 * This method initializes jButtonFvInFdfOptions
1679 * @return javax.swing.JButton
1681 private JButton
getJButtonFvInFdfOptions() {
1682 if (jButtonFvInFdfOptions
== null) {
1683 jButtonFvInFdfOptions
= new JButton();
1684 jButtonFvInFdfOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1685 jButtonFvInFdfOptions
.setEnabled(true);
1686 jButtonFvInFdfOptions
.setText("Options");
1687 jButtonFvInFdfOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1688 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1689 int selectedRow
= jTableFvInFdf
.getSelectedRow();
1690 if (selectedRow
< 0) {
1693 String fvName
= jTableFvInFdf
.getValueAt(selectedRow
, 0)+"";
1694 if (fvName
.length() == 0) {
1697 DefaultTableModel dtm
= getFvInFdfOptTableModel();
1698 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1702 return jButtonFvInFdfOptions
;
1705 private DefaultTableModel
getFvInFdfOptTableModel() {
1706 if (fvInFdfOptTableModel
== null) {
1707 fvInFdfOptTableModel
= new FvOptsTableModel();
1708 fvInFdfOptTableModel
.addColumn("Name");
1709 fvInFdfOptTableModel
.addColumn("Value");
1710 Vector
<Object
> v
= new Vector
<Object
>();
1711 v
.add("EFI_BLOCK_SIZE");
1712 v
.add("EFI_NUM_BLOCKS");
1713 v
.add("EFI_FILE_NAME");
1714 fvInFdfOptTableModel
.setVKeyWords(v
);
1715 fvInFdfOptTableModel
.setVNonEditableName(v
);
1717 return fvInFdfOptTableModel
;
1720 private DefaultTableModel
getFvAdditionalOptTableModel() {
1721 if (fvAdditionalOptTableModel
== null) {
1722 fvAdditionalOptTableModel
= new FvOptsTableModel();
1723 fvAdditionalOptTableModel
.addColumn("Name");
1724 fvAdditionalOptTableModel
.addColumn("Value");
1725 Vector
<Object
> v
= new Vector
<Object
>();
1726 v
.add("EFI_BLOCK_SIZE");
1727 v
.add("EFI_NUM_BLOCKS");
1728 v
.add("EFI_FILE_NAME");
1729 fvAdditionalOptTableModel
.setVNonEditableName(v
);
1731 return fvAdditionalOptTableModel
;
1735 * This method initializes jScrollPaneFvAdditional
1737 * @return javax.swing.JScrollPane
1739 private JScrollPane
getJScrollPaneFvAdditional() {
1740 if (jScrollPaneFvAdditional
== null) {
1741 jScrollPaneFvAdditional
= new JScrollPane();
1742 jScrollPaneFvAdditional
.setPreferredSize(new java
.awt
.Dimension(653,200));
1743 jScrollPaneFvAdditional
.setViewportView(getJTableFvAdditional());
1745 return jScrollPaneFvAdditional
;
1749 * This method initializes jTableFvAdditional
1751 * @return javax.swing.JTable
1753 private JTable
getJTableFvAdditional() {
1754 if (jTableFvAdditional
== null) {
1755 jTableFvAdditional
= new JTable();
1756 jTableFvAdditional
.setRowHeight(20);
1757 jTableFvAdditional
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1758 jTableFvAdditional
.setModel(getFvAdditionalTableModel());
1760 jTableFvAdditional
.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
1761 public void valueChanged(ListSelectionEvent e
) {
1762 if (e
.getValueIsAdjusting()) {
1765 ListSelectionModel lsm
= (ListSelectionModel
) e
.getSource();
1766 if (lsm
.isSelectionEmpty()) {
1769 selectedRowInFvAdditionalTable
= lsm
.getMinSelectionIndex();
1770 oldFvName
= jTableFvAdditional
.getValueAt(selectedRowInFvAdditionalTable
, 0)+"";
1775 jTableFvAdditional
.getModel().addTableModelListener(new TableModelListener() {
1776 public void tableChanged(TableModelEvent arg0
) {
1777 // TODO Auto-generated method stub
1778 int row
= arg0
.getFirstRow();
1779 int col
= arg0
.getColumn();
1780 TableModel m
= (TableModel
) arg0
.getSource();
1782 if (arg0
.getType() == TableModelEvent
.UPDATE
) {
1784 String newFvName
= m
.getValueAt(row
, 0) + "";
1785 if (newFvName
.equals(oldFvName
)) {
1788 if (fvNameExists(newFvName
)) {
1789 JOptionPane
.showMessageDialog(FpdFlash
.this, "This FV already exists. Please choose another FV name.");
1790 m
.setValueAt(oldFvName
, row
, 0);
1794 tabIndexForFv
= jTabbedPane
.indexOfTab(oldFvName
);
1795 if (tabIndexForFv
>= startIndexOfDynamicTab
) {
1796 jTabbedPane
.setTitleAt(tabIndexForFv
, newFvName
);
1797 // change FvName in UserExtensions
1798 ffc
.updateBuildOptionsUserExtensions(oldFvName
, newFvName
);
1799 // change FvBinding in ModuleSA
1800 ffc
.appendFvBindingFor(oldFvName
, newFvName
);
1801 ffc
.removeFvBindingAll(oldFvName
);
1802 // change FvImageNames in Flash
1803 ffc
.updateFvImageNameAll(oldFvName
, newFvName
);
1806 ModuleOrderPane pane
= new ModuleOrderPane(newFvName
, "", ffc
, FpdFlash
.this);
1807 pane
.showModulesInFv(newFvName
);
1808 pane
.showAllModulesInPlatform();
1809 jTabbedPane
.addTab(newFvName
, pane
);
1810 // Add FvImageNames in Flash
1811 String
[] fvNames
= {newFvName
};
1812 ffc
.addFvImageFvImageNames(fvNames
);
1814 docConsole
.setSaved(false);
1815 oldFvName
= newFvName
;
1818 if (col
== 1 && !sizeFromOptionDlg
) {
1819 String fvSize
= m
.getValueAt(row
, col
) + "";
1820 if (!DataValidation
.isInt(fvSize
) && !DataValidation
.isHexDoubleWordDataType(fvSize
)) {
1821 JOptionPane
.showMessageDialog(FpdFlash
.this, "FV size should be Integer or Hex format.");
1824 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
1825 ffc
.getFvImagesFvImageOptions(oldFvName
, mFvOpts
);
1826 String blkSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
1827 if (blkSize
== null) {
1828 if (determinedFvBlockSize
!= null) {
1829 blkSize
= determinedFvBlockSize
;
1832 blkSize
= defaultBlkSize
;
1834 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", blkSize
, null);
1835 int fs
= Integer
.decode(fvSize
);
1836 int bs
= Integer
.decode(blkSize
);
1837 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"", null);
1838 docConsole
.setSaved(false);
1841 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1842 int retVal
= JOptionPane
.showConfirmDialog(FpdFlash
.this, "Confirm", "FPD file contains error block size format. Would you like to replace it with a default value?", JOptionPane
.YES_NO_OPTION
);
1843 if (retVal
== JOptionPane
.YES_OPTION
) {
1844 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", defaultBlkSize
, null);
1845 int fs
= Integer
.decode(fvSize
);
1846 int bs
= Integer
.decode(defaultBlkSize
);
1847 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"", null);
1848 docConsole
.setSaved(false);
1856 int fs
= Integer
.decode(fvSize
);
1857 int bs
= Integer
.decode(blkSize
);
1858 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"", null);
1859 docConsole
.setSaved(false);
1863 if (col
== 2 && !fileFromOptionDlg
) {
1864 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_FILE_NAME", m
.getValueAt(row
, col
)+"", null);
1865 docConsole
.setSaved(false);
1872 return jTableFvAdditional
;
1875 private boolean fvNameExistsInFvInFdfTable (String fvName
) {
1876 for (int i
= 0; i
< jTableFvInFdf
.getRowCount(); ++i
) {
1877 if (fvInFdfTableModel
.getValueAt(i
, 0).equals(fvName
)) {
1884 private boolean fvNameExists (String fvName
) {
1885 if (fvNameExistsInFvInFdfTable(fvName
)) {
1889 for (int j
= 0; j
< jTableFvAdditional
.getRowCount(); ++j
) {
1890 if (fvAdditionalTableModel
.getValueAt(j
, 0).equals(fvName
) && j
!= selectedRowInFvAdditionalTable
) {
1898 * This method initializes fvAdditionalTableModel
1900 * @return javax.swing.table.DefaultTableModel
1902 private DefaultTableModel
getFvAdditionalTableModel() {
1903 if (fvAdditionalTableModel
== null) {
1904 fvAdditionalTableModel
= new DefaultTableModel();
1905 fvAdditionalTableModel
.addColumn("FV Name");
1906 fvAdditionalTableModel
.addColumn("Size");
1907 fvAdditionalTableModel
.addColumn("Corresponding File Name");
1909 return fvAdditionalTableModel
;
1913 * This method initializes jButtonAddFv
1915 * @return javax.swing.JButton
1917 private JButton
getJButtonAddFv() {
1918 if (jButtonAddFv
== null) {
1919 jButtonAddFv
= new JButton();
1920 jButtonAddFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1921 jButtonAddFv
.setEnabled(true);
1922 jButtonAddFv
.setText("New");
1923 jButtonAddFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1924 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1925 if (jTableFvAdditional
.isEditing()) {
1926 jTableFvAdditional
.getCellEditor().stopCellEditing();
1928 String
[] row
= {"", "", ""};
1929 fvAdditionalTableModel
.addRow(row
);
1933 return jButtonAddFv
;
1937 * This method initializes jButtonDelFv
1939 * @return javax.swing.JButton
1941 private JButton
getJButtonDelFv() {
1942 if (jButtonDelFv
== null) {
1943 jButtonDelFv
= new JButton();
1944 jButtonDelFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1945 jButtonDelFv
.setEnabled(true);
1946 jButtonDelFv
.setText("Delete");
1947 jButtonDelFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1948 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1949 //delete row in FvAdditional table.
1950 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1951 if (selectedRow
< 0) {
1954 String fvName
= fvAdditionalTableModel
.getValueAt(selectedRow
, 0) + "";
1955 fvAdditionalTableModel
.removeRow(selectedRow
);
1957 //delete tab with selected FV name.
1959 jTabbedPane
.removeTabAt(jTabbedPane
.indexOfTab(fvName
));
1960 //delete FV Name from FvImages element.
1961 ffc
.updateFvImageNameAll(fvName
, null);
1962 //delete FvBinding from ModuleSA.
1963 ffc
.removeFvBindingAll(fvName
);
1964 docConsole
.setSaved(false);
1968 return jButtonDelFv
;
1972 * This method initializes jButtonAddFvOptions
1974 * @return javax.swing.JButton
1976 private JButton
getJButtonAddFvOptions() {
1977 if (jButtonAddFvOptions
== null) {
1978 jButtonAddFvOptions
= new JButton();
1979 jButtonAddFvOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1980 jButtonAddFvOptions
.setEnabled(true);
1981 jButtonAddFvOptions
.setText("Options");
1982 jButtonAddFvOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1983 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1984 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1985 if (selectedRow
< 0) {
1988 String fvName
= jTableFvAdditional
.getValueAt(selectedRow
, 0)+"";
1989 String oldFvSize
= jTableFvAdditional
.getValueAt(selectedRow
, 1)+"";
1990 String oldFileName
= jTableFvAdditional
.getValueAt(selectedRow
, 2)+"";
1991 if (fvName
.length() == 0) {
1994 DefaultTableModel dtm
= getFvAdditionalOptTableModel();
1995 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1997 String
[] updatedFvInfo
= getBasicFvInfo (fvName
);
1998 if (!oldFvSize
.equalsIgnoreCase(updatedFvInfo
[1])) {
1999 sizeFromOptionDlg
= true;
2000 jTableFvAdditional
.setValueAt(updatedFvInfo
[1], selectedRow
, 1);
2001 sizeFromOptionDlg
= false;
2003 if (!oldFileName
.equals(updatedFvInfo
[2])) {
2004 fileFromOptionDlg
= true;
2005 jTableFvAdditional
.setValueAt(updatedFvInfo
[2], selectedRow
, 2);
2006 fileFromOptionDlg
= false;
2011 return jButtonAddFvOptions
;
2014 private String
[] getBasicFvInfo (String fvName
) {
2015 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
2016 ffc
.getFvImagesFvImageOptions(fvName
, mFvOpts
);
2018 String numBlks
= "";
2021 if (mFvOpts
.get("EFI_FILE_NAME") != null) {
2022 fvFile
= mFvOpts
.get("EFI_FILE_NAME");
2024 if (mFvOpts
.get("EFI_BLOCK_SIZE") != null && mFvOpts
.get("EFI_NUM_BLOCKS") != null) {
2025 bSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
2026 numBlks
= mFvOpts
.get("EFI_NUM_BLOCKS");
2027 boolean blockSizeWellFormat
= true;
2028 boolean numOfBlockWellFormat
= true;
2029 if (!DataValidation
.isHexDoubleWordDataType(bSize
) && !DataValidation
.isInt(bSize
)) {
2030 blockSizeWellFormat
= false;
2031 JOptionPane
.showMessageDialog(FpdFlash
.this, fvName
+ " block size bad format.");
2033 if (!DataValidation
.isHexDoubleWordDataType(numBlks
) && !DataValidation
.isInt(numBlks
)) {
2034 numOfBlockWellFormat
= false;
2035 JOptionPane
.showMessageDialog(FpdFlash
.this, fvName
+ " number of blocks bad format.");
2037 if (blockSizeWellFormat
&& numOfBlockWellFormat
) {
2038 int size
= Integer
.decode(bSize
);
2039 int num
= Integer
.decode(numBlks
);
2040 fvSize
= "0x" + Integer
.toHexString(size
*num
);
2044 return new String
[]{fvName
, fvSize
, fvFile
};
2049 * This method initializes jPanelBgFvName
2051 * @return javax.swing.JPanel
2053 private JPanel
getJPanelBgFvName() {
2054 if (jPanelBgFvName
== null) {
2055 jPanelBgFvName
= new JPanel();
2056 jPanelBgFvName
.setPreferredSize(new java
.awt
.Dimension(80,55));
2057 jPanelBgFvName
.add(getJButtonFvNameAdd(), null);
2058 jPanelBgFvName
.add(getJButtonFvNameDel(), null);
2060 return jPanelBgFvName
;
2064 * This method initializes jPanelBgFvImage
2066 * @return javax.swing.JPanel
2068 private JPanel
getJPanelBgFvImage() {
2069 if (jPanelBgFvImage
== null) {
2070 jPanelBgFvImage
= new JPanel();
2071 jPanelBgFvImage
.setPreferredSize(new java
.awt
.Dimension(150,100));
2072 jPanelBgFvImage
.add(getJButtonAddFvImage(), null);
2073 jPanelBgFvImage
.add(getJButtonDelFvImage(), null);
2074 jPanelBgFvImage
.add(getJButtonUpdateFvImage(), null);
2076 return jPanelBgFvImage
;
2080 * This method initializes jPanelW
2082 * @return javax.swing.JPanel
2084 private JPanel
getJPanelW() {
2085 if (jPanelW
== null) {
2086 jPanelW
= new JPanel();
2087 jPanelW
.add(getJPanelBgFvImage(), null);
2093 * This method initializes jPanelFvImageParaN
2095 * @return javax.swing.JPanel
2097 private JPanel
getJPanelFvImageParaN() {
2098 if (jPanelFvImageParaN
== null) {
2099 FlowLayout flowLayout3
= new FlowLayout();
2100 flowLayout3
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
2101 jPanelFvImageParaN
= new JPanel();
2102 jPanelFvImageParaN
.setLayout(flowLayout3
);
2103 jPanelFvImageParaN
.add(new StarLabel(), null);
2104 jPanelFvImageParaN
.add(jLabelFvImageNames
, null);
2105 jPanelFvImageParaN
.add(jLabelFvParaName
, null);
2106 jPanelFvImageParaN
.add(getJTextFieldFvParaName(), null);
2108 return jPanelFvImageParaN
;
2112 * This method initializes jPanelFvImageParaS
2114 * @return javax.swing.JPanel
2116 private JPanel
getJPanelFvImageParaS() {
2117 if (jPanelFvImageParaS
== null) {
2118 FlowLayout flowLayout6
= new FlowLayout();
2119 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
2120 jPanelFvImageParaS
= new JPanel();
2121 jPanelFvImageParaS
.setLayout(flowLayout6
);
2122 jPanelFvImageParaS
.add(jLabelFvParaType
, null);
2123 jPanelFvImageParaS
.add(getJComboBoxFvParaType(), null);
2125 return jPanelFvImageParaS
;
2129 * This method initializes jPanelFvImageParaC
2131 * @return javax.swing.JPanel
2133 // private JPanel getJPanelFvImageParaC() {
2134 // if (jPanelFvImageParaC == null) {
2135 // jPanelFvImageParaC = new JPanel();
2136 // jPanelFvImageParaC.add(getJScrollPaneFvImageNames(), null);
2138 // return jPanelFvImageParaC;
2142 * This method initializes jPanelFvImageOptsN
2144 * @return javax.swing.JPanel
2146 private JPanel
getJPanelFvImageOptsN() {
2147 if (jPanelFvImageOptsN
== null) {
2148 jPanelFvImageOptsN
= new JPanel();
2149 jPanelFvImageOptsN
.add(jLabelOptions
, null);
2150 jPanelFvImageOptsN
.add(jLabelFvImageOptName
, null);
2151 jPanelFvImageOptsN
.add(getJTextFieldFvImageOptName(), null);
2152 jPanelFvImageOptsN
.add(jLabelFvImageOptValue
, null);
2153 jPanelFvImageOptsN
.add(getJTextFieldFvImageOptValue(), null);
2155 return jPanelFvImageOptsN
;
2159 * This method initializes jPanelFvImageOptsS
2161 * @return javax.swing.JPanel
2163 private JPanel
getJPanelFvImageOptsS() {
2164 if (jPanelFvImageOptsS
== null) {
2165 jPanelFvImageOptsS
= new JPanel();
2167 return jPanelFvImageOptsS
;
2171 * This method initializes jPanelFvImageOptsC
2173 * @return javax.swing.JPanel
2175 // private JPanel getJPanelFvImageOptsC() {
2176 // if (jPanelFvImageOptsC == null) {
2177 // jPanelFvImageOptsC = new JPanel();
2178 // jPanelFvImageOptsC.add(getJScrollPane(), null);
2180 // return jPanelFvImageOptsC;
2184 * This method initializes jPanelFvImageParaE
2186 * @return javax.swing.JPanel
2188 private JPanel
getJPanelFvImageParaE() {
2189 if (jPanelFvImageParaE
== null) {
2190 jPanelFvImageParaE
= new JPanel();
2191 jPanelFvImageParaE
.add(getJPanelBgFvName(), null);
2193 return jPanelFvImageParaE
;
2197 * This method initializes jPanelFvImageOptsE
2199 * @return javax.swing.JPanel
2201 private JPanel
getJPanelFvImageOptsE() {
2202 if (jPanelFvImageOptsE
== null) {
2203 jPanelFvImageOptsE
= new JPanel();
2204 jPanelFvImageOptsE
.add(getJPanelFvImageOptsButtonGroup(), null);
2206 return jPanelFvImageOptsE
;
2210 * This method initializes jPanelFvImageSN
2212 * @return javax.swing.JPanel
2214 private JPanel
getJPanelFvImageSN() {
2215 if (jPanelFvImageSN
== null) {
2216 jPanelFvImageSN
= new JPanel();
2217 jPanelFvImageSN
.add(getJCheckBoxFvProperty(), null);
2218 jPanelFvImageSN
.add(jLabelFvPropName
, null);
2219 jPanelFvImageSN
.add(getJTextFieldFvPropName(), null);
2220 jPanelFvImageSN
.add(jLabelFvPropValue
, null);
2221 jPanelFvImageSN
.add(getJTextFieldFvPropValue(), null);
2223 return jPanelFvImageSN
;
2227 * This method initializes jPanelFvImageSE
2229 * @return javax.swing.JPanel
2231 private JPanel
getJPanelFvImageSE() {
2232 if (jPanelFvImageSE
== null) {
2233 jPanelFvImageSE
= new JPanel();
2234 jPanelFvImageSE
.add(getJPanelFvPropButtonGroup(), null);
2236 return jPanelFvImageSE
;
2240 * This method initializes jPanelFvImageSS
2242 * @return javax.swing.JPanel
2244 private JPanel
getJPanelFvImageSS() {
2245 if (jPanelFvImageSS
== null) {
2246 jPanelFvImageSS
= new JPanel();
2248 return jPanelFvImageSS
;
2254 public static void main(String
[] args
) {
2255 // TODO Auto-generated method stub
2256 new FpdFlash().setVisible(true);
2260 * This method initializes this
2264 private void initialize() {
2265 this.setSize(660, 650);
2266 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
2267 this.setContentPane(getJContentPane());
2268 this.setTitle("FPD Flash Definitions");
2269 this.addInternalFrameListener(new InternalFrameAdapter(){
2270 public void internalFrameDeactivated(InternalFrameEvent e
){
2271 if (jTableFvProp
.isEditing()) {
2272 jTableFvProp
.getCellEditor().stopCellEditing();
2274 if (jTableFvImageNames
.isEditing()) {
2275 jTableFvImageNames
.getCellEditor().stopCellEditing();
2277 if (jTableFvInfo
.isEditing()) {
2278 jTableFvInfo
.getCellEditor().stopCellEditing();
2280 if (jTableFvAdditional
.isEditing()) {
2281 jTableFvAdditional
.getCellEditor().stopCellEditing();
2287 private void init(FpdFileContents ffc
) {
2290 jTextFieldFdf
.setText("");
2291 String fdfFile
= ffc
.getFlashDefinitionFile();
2292 if (fdfFile
!= null && fdfFile
.length() > 0) {
2293 jCheckBoxFdf
.setSelected(true);
2294 jTextFieldFdf
.setText(fdfFile
);
2295 String fdfPath
= Workspace
.getCurrentWorkspace() + File
.separator
+ fdfFile
;
2296 initFvInFdfTable(fdfPath
);
2299 initFvAdditionalTable();
2302 private void getOptionNameValue(Map
<String
, String
> m
){
2303 for (int i
= 0; i
< jTableFvImageOpts
.getRowCount(); ++i
) {
2304 m
.put(fvOptionTableModel
.getValueAt(i
, 0)+"", fvOptionTableModel
.getValueAt(i
, 1)+"");
2308 * This method initializes jContentPane
2310 * @return javax.swing.JPanel
2312 private JPanel
getJContentPane() {
2313 if (jContentPane
== null) {
2314 jContentPane
= new JPanel();
2315 jContentPane
.setLayout(new BorderLayout());
2316 jContentPane
.add(getJPanelContentEast(), java
.awt
.BorderLayout
.EAST
);
2317 jContentPane
.add(getJPanelContentSouth(), java
.awt
.BorderLayout
.SOUTH
);
2318 jContentPane
.add(getJPanelContentWest(), java
.awt
.BorderLayout
.WEST
);
2319 jContentPane
.add(getJPanelContentNorth(), java
.awt
.BorderLayout
.NORTH
);
2320 jContentPane
.add(getJTabbedPane(), java
.awt
.BorderLayout
.CENTER
);
2322 return jContentPane
;
2325 private void getFlashInfoFromFdf (String fdfPath
) {
2326 File fdf
= new File(fdfPath
);
2327 if (!fdf
.exists()) {
2333 FileReader reader
= new FileReader(fdf
);
2334 BufferedReader in
= new BufferedReader(reader
);
2337 while ((str
= in
.readLine()) != null) {
2341 // skip empty line, comment (start with //)
2343 if (str
.length() == 0 || str
.startsWith("//")) {
2349 if (str
.startsWith("ErasePolarity")) {
2350 erasePolarity
= str
.substring(str
.indexOf("=") + 1, str
.lastIndexOf(",")).trim();
2353 // dig into Block section.
2355 if (str
.startsWith("Block") && str
.endsWith("}")) {
2356 String
[] blockSec
= str
.split(",");
2357 String nv
= blockSec
[1].trim();
2358 String
[] sizeSec
= nv
.split("=");
2359 vBlockSize
.add(sizeSec
[1].trim());
2367 catch (Exception e
) {
2372 private void getFvInfoFromFdf(String fdfPath
, Vector
<FvInfoFromFdf
> vFvInfo
) {
2373 File fdf
= new File(fdfPath
);
2374 if (!fdf
.exists()) {
2380 FileReader reader
= new FileReader(fdf
);
2381 BufferedReader in
= new BufferedReader(reader
);
2384 while ((str
= in
.readLine()) != null) {
2388 // skip empty line, comment (start with //)
2390 if (str
.length() == 0 || str
.startsWith("//")) {
2394 // dig into Region {} section, create FvInfoFromFdf object for it.
2396 if (str
.startsWith("Region") && str
.endsWith("{")) {
2397 FvInfoFromFdf fvInfo
= new FvInfoFromFdf();
2398 boolean nameFound
= false;
2399 boolean sizeFound
= false;
2400 while ((str
= in
.readLine()) != null) {
2404 // skip empty line, comment (start with //)
2406 if (str
.length() == 0 || str
.startsWith("//")) {
2410 if (str
.startsWith("Name")) {
2411 int firstQuote
= str
.indexOf("\"");
2412 int lastQuote
= str
.lastIndexOf("\"");
2413 fvInfo
.setFvName(str
.substring(firstQuote
+ 1, lastQuote
));
2417 if (str
.startsWith("Size")) {
2418 int equalIndex
= str
.indexOf("=");
2419 int commaIndex
= str
.indexOf(",");
2420 fvInfo
.setSize(str
.substring(equalIndex
+ 1, commaIndex
).trim());
2424 if (nameFound
&& sizeFound
) {
2429 vFvInfo
.add(fvInfo
);
2432 // dig into File {} section, supply file name information to existing FvInfoFromFdf object.
2434 if (str
.startsWith("File")) {
2435 boolean fileNameFound
= false;
2436 boolean fvFound
= false;
2437 String fileName
= "";
2439 while ((str
= in
.readLine()) != null) {
2443 // skip empty line, comment (start with //)
2445 if (str
.length() == 0 || str
.startsWith("//")) {
2449 if (str
.startsWith("Name")) {
2450 int firstQuote
= str
.indexOf("\"");
2451 int lastQuote
= str
.lastIndexOf("\"");
2452 fileName
= str
.substring(firstQuote
+ 1, lastQuote
);
2453 fileNameFound
= true;
2456 if (str
.startsWith("Region")) {
2457 int firstQuote
= str
.indexOf("\"");
2458 int lastQuote
= str
.lastIndexOf("\"");
2459 fvName
= str
.substring(firstQuote
+ 1, lastQuote
);
2463 if (fileNameFound
&& fvFound
) {
2468 for (int i
= 0; i
<vFvInfo
.size(); ++i
) {
2469 if (vFvInfo
.get(i
).getFvName().equals(fvName
)) {
2470 vFvInfo
.get(i
).setEfiFileName(fileName
);
2480 catch (Exception e
) {
2487 * @see org.tianocore.frameworkwizard.common.ui.IInternalFrame#actionPerformed(java.awt.event.ActionEvent)
2490 public void actionPerformed(ActionEvent arg0
) {
2491 if (arg0
.getActionCommand().equals("ModuleOrderPaneOk")) {
2492 docConsole
.setSaved(false);
2493 jTabbedPane
.setSelectedIndex(0);
2495 else if (arg0
.getActionCommand().equals("ModuleOrderPaneCancel")) {
2496 jTabbedPane
.setSelectedIndex(0);
2503 } // @jve:decl-index=0:visual-constraint="10,10"
2505 class ModuleOrderPane
extends JPanel
implements ActionListener
{
2510 private static final long serialVersionUID
= 1L;
2511 private JPanel jPanelModOrderN
= null;
2512 private JPanel jPanelModOrderS
= null;
2513 private JPanel jPanelModOrderC
= null;
2514 private JScrollPane jScrollPaneModInFv
= null;
2515 private JTable jTableModInFv
= null;
2516 private JPanel jPanelController
= null;
2517 private JScrollPane jScrollPaneFpdModules
= null;
2518 private JTable jTableFpdModules
= null;
2519 private JButton jButtonUp
= null;
2520 private JButton jButtonInsert
= null;
2521 private JButton jButtonRemove
= null;
2522 private JButton jButtonDown
= null;
2523 private JButton jButtonOk
= null;
2524 private JButton jButtonCancel
= null;
2525 private IDefaultTableModel modInFvTableModel
= null;
2526 private IDefaultTableModel fpdModTableModel
= null;
2527 private FpdFileContents ffc
= null;
2528 private String title
= null;
2529 private String outputFileName
= null;
2531 public ModuleOrderPane(String tabTitle
, String file
, FpdFileContents inputFfc
, ActionListener action
) {
2532 super(new BorderLayout());
2534 outputFileName
= file
;
2536 add(getJPanelModOrderN(), java
.awt
.BorderLayout
.NORTH
);
2537 add(getJPanelModOrderS(), java
.awt
.BorderLayout
.SOUTH
);
2538 add(getJPanelModOrderC(), java
.awt
.BorderLayout
.CENTER
);
2539 jButtonOk
.addActionListener(action
);
2540 jButtonCancel
.addActionListener(action
);
2544 public void showModulesInFv(String fvName
) {
2546 if (modInFvTableModel
== null) {
2549 int size
= ffc
.getUserExtsIncModCount(fvName
, "IMAGES", 1);
2552 String
[][] saa
= new String
[size
][5];
2553 ffc
.getUserExtsIncMods(fvName
, "IMAGES", 1, saa
);
2555 for (int i
= 0; i
< size
; ++i
) {
2556 String moduleKey
= saa
[i
][0] + " " + saa
[i
][1] + " " + saa
[i
][2] + " " + saa
[i
][3];
2557 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2558 String name
= "N/A";
2560 name
= mi
.getName();
2563 String
[] row
= { name
, saa
[i
][0] , saa
[i
][1], saa
[i
][2] , saa
[i
][3], saa
[i
][4] };
2564 modInFvTableModel
.addRow(row
);
2568 // From ModuleSAs, get module guids with FvBinding = fvName.
2570 Vector
<String
[]> vModuleSA
= new Vector
<String
[]>();
2571 ffc
.getFrameworkModuleSAByFvBinding(fvName
, vModuleSA
);
2573 // If BuildOptions->UserExtensions already contain these module info,
2574 // no need to add them into table again.
2576 Iterator
<String
[]> iter
= vModuleSA
.iterator();
2577 while (iter
.hasNext()){
2578 String
[] sa
= iter
.next();
2579 if (!moduleInfoInTable (sa
, modInFvTableModel
)) {
2580 String moduleKey
= sa
[0] + " " + sa
[1] + " " + sa
[2] + " " + sa
[3];
2581 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2582 String name
= "N/A";
2584 name
= mi
.getName();
2586 String
[] row
= { name
, sa
[0] , sa
[1], sa
[2] , sa
[3], sa
[4] };
2587 modInFvTableModel
.addRow(row
);
2593 public void showAllModulesInPlatform() {
2595 if (modInFvTableModel
== null || fpdModTableModel
== null) {
2598 int size
= ffc
.getFrameworkModulesCount();
2599 String
[][] saa
= new String
[size
][5];
2600 ffc
.getFrameworkModulesInfo(saa
);
2602 for (int i
= 0; i
< size
; ++i
) {
2603 if (moduleInfoInTable(saa
[i
], modInFvTableModel
) || moduleInfoInTable(saa
[i
], fpdModTableModel
)) {
2606 String moduleKey
= saa
[i
][0] + " " + saa
[i
][1] + " " + saa
[i
][2] + " " + saa
[i
][3];
2607 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2608 String name
= "N/A";
2610 name
= mi
.getName();
2612 String
[] row
= { name
, saa
[i
][0] , saa
[i
][1], saa
[i
][2] , saa
[i
][3], saa
[i
][4] };
2613 fpdModTableModel
.addRow(row
);
2616 TableSorter sorter
= (TableSorter
)jTableFpdModules
.getModel();
2617 sorter
.setSortState(0, TableSorter
.ASCENDING
);
2621 protected boolean moduleInfoInTable (String
[] moduleInfo
, DefaultTableModel model
) {
2622 boolean matched
= false;
2623 int size
= model
.getDataVector().size();
2624 for (int i
= 0; i
< size
; ++i
) {
2625 Vector rowData
= (Vector
)model
.getDataVector().elementAt(i
);
2626 for (int j
= 1; j
< rowData
.size(); ++j
) {
2627 if (rowData
.elementAt(j
) == null && moduleInfo
[j
-1] == null) {
2630 else if (rowData
.elementAt(j
).equals("null") && moduleInfo
[j
-1] == null) {
2633 else if (rowData
.elementAt(j
) == null && moduleInfo
[j
-1].equals("null")) {
2636 else if (rowData
.elementAt(j
) != null && rowData
.elementAt(j
).toString().equalsIgnoreCase(moduleInfo
[j
-1])) {
2656 * This method initializes jPanelModOrderN
2658 * @return javax.swing.JPanel
2660 private JPanel
getJPanelModOrderN() {
2661 if (jPanelModOrderN
== null) {
2662 jPanelModOrderN
= new JPanel();
2664 return jPanelModOrderN
;
2668 * This method initializes jPanelModOrderS
2670 * @return javax.swing.JPanel
2672 private JPanel
getJPanelModOrderS() {
2673 if (jPanelModOrderS
== null) {
2674 FlowLayout flowLayout6
= new FlowLayout();
2675 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
2676 jPanelModOrderS
= new JPanel();
2677 jPanelModOrderS
.setLayout(flowLayout6
);
2678 jPanelModOrderS
.add(getJButtonOk(), null);
2679 jPanelModOrderS
.add(getJButtonCancel(), null);
2681 return jPanelModOrderS
;
2685 * This method initializes jPanelModOrderC
2687 * @return javax.swing.JPanel
2689 private JPanel
getJPanelModOrderC() {
2690 if (jPanelModOrderC
== null) {
2691 jPanelModOrderC
= new JPanel();
2692 jPanelModOrderC
.add(getJScrollPaneModInFv(), null);
2693 jPanelModOrderC
.add(getJPanelController(), null);
2694 jPanelModOrderC
.add(getJScrollPaneFpdModules(), null);
2696 return jPanelModOrderC
;
2700 * This method initializes jScrollPaneModInFv
2702 * @return javax.swing.JScrollPane
2704 private JScrollPane
getJScrollPaneModInFv() {
2705 if (jScrollPaneModInFv
== null) {
2706 jScrollPaneModInFv
= new JScrollPane();
2707 jScrollPaneModInFv
.setPreferredSize(new java
.awt
.Dimension(200,500));
2708 jScrollPaneModInFv
.setViewportView(getJTableModInFv());
2710 return jScrollPaneModInFv
;
2714 * This method initializes jTableModInFv
2716 * @return javax.swing.JTable
2718 protected JTable
getJTableModInFv() {
2719 if (jTableModInFv
== null) {
2720 modInFvTableModel
= new IDefaultTableModel();
2722 jTableModInFv
= new JTable(modInFvTableModel
){
2726 private static final long serialVersionUID
= 4903583933542581721L;
2728 public String
getToolTipText(MouseEvent e
) {
2730 java
.awt
.Point p
= e
.getPoint();
2731 int rowIndex
= rowAtPoint(p
);
2732 // int colIndex = columnAtPoint(p);
2733 // int realColumnIndex = convertColumnIndexToModel(colIndex);
2735 TableModel model
= getModel();
2736 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2737 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2738 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2739 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2740 String arch
= (String
) model
.getValueAt(rowIndex
, 5);
2741 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2743 tip
= "Path: " + mi
.getPath() + "; Arch: " + arch
+ ";";
2746 tip
= "No Module Path Information.";
2753 modInFvTableModel
.addColumn("Module Orders in FV");
2754 modInFvTableModel
.addColumn("mg");
2755 modInFvTableModel
.addColumn("mv");
2756 modInFvTableModel
.addColumn("pg");
2757 modInFvTableModel
.addColumn("pv");
2758 modInFvTableModel
.addColumn("arch");
2760 for (int i
= 1; i
< 6; ++i
) {
2761 jTableModInFv
.removeColumn(jTableModInFv
.getColumnModel().getColumn(jTableModInFv
.getColumnCount()-1));
2764 jTableModInFv
.setRowHeight(20);
2765 jTableModInFv
.setShowGrid(false);
2766 jTableModInFv
.setAutoCreateColumnsFromModel(false);
2767 jTableModInFv
.addMouseListener(new MouseAdapter() {
2770 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
2773 public void mouseClicked(MouseEvent arg0
) {
2774 if (arg0
.getButton() == MouseEvent
.BUTTON3
) {
2775 java
.awt
.Point p
= arg0
.getPoint();
2776 int rowIndex
= jTableModInFv
.rowAtPoint(p
);
2777 TableModel model
= jTableModInFv
.getModel();
2778 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2779 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2780 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2781 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2782 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2783 String details
= "PackageGuid: " + pg
+ "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2785 details
= "In Package " + mi
.getPackageId().getName() + "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2787 JOptionPane
.showMessageDialog(ModuleOrderPane
.this, details
);
2793 return jTableModInFv
;
2797 * This method initializes jPanelController
2799 * @return javax.swing.JPanel
2801 private JPanel
getJPanelController() {
2802 if (jPanelController
== null) {
2803 FlowLayout flowLayout5
= new FlowLayout();
2804 flowLayout5
.setVgap(50);
2805 flowLayout5
.setHgap(50);
2806 jPanelController
= new JPanel();
2807 jPanelController
.setLayout(flowLayout5
);
2808 jPanelController
.setPreferredSize(new java
.awt
.Dimension(150,500));
2809 jPanelController
.add(getJButtonUp(), null);
2810 jPanelController
.add(getJButtonInsert(), null);
2811 jPanelController
.add(getJButtonRemove(), null);
2812 jPanelController
.add(getJButtonDown(), null);
2814 return jPanelController
;
2818 * This method initializes jScrollPaneFpdModules
2820 * @return javax.swing.JScrollPane
2822 private JScrollPane
getJScrollPaneFpdModules() {
2823 if (jScrollPaneFpdModules
== null) {
2824 jScrollPaneFpdModules
= new JScrollPane();
2825 jScrollPaneFpdModules
.setPreferredSize(new java
.awt
.Dimension(200,500));
2826 jScrollPaneFpdModules
.setViewportView(getJTableFpdModules());
2828 return jScrollPaneFpdModules
;
2832 * This method initializes jTableFpdModules
2834 * @return javax.swing.JTable
2836 private JTable
getJTableFpdModules() {
2837 if (jTableFpdModules
== null) {
2838 fpdModTableModel
= new IDefaultTableModel();
2839 TableSorter sorter
= new TableSorter(fpdModTableModel
);
2840 jTableFpdModules
= new JTable(sorter
){
2844 private static final long serialVersionUID
= -4666296888377637808L;
2846 public String
getToolTipText(MouseEvent e
) {
2848 java
.awt
.Point p
= e
.getPoint();
2849 int rowIndex
= rowAtPoint(p
);
2850 // int colIndex = columnAtPoint(p);
2851 // int realColumnIndex = convertColumnIndexToModel(colIndex);
2853 TableModel model
= getModel();
2854 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2855 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2856 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2857 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2858 String arch
= (String
) model
.getValueAt(rowIndex
, 5);
2859 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2861 tip
= "Path: " + mi
.getPath() + "; Arch: " + arch
+ ";";
2864 tip
= "No Module Path Information.";
2872 fpdModTableModel
.addColumn("Modules in Platform");
2873 fpdModTableModel
.addColumn("mg");
2874 fpdModTableModel
.addColumn("mv");
2875 fpdModTableModel
.addColumn("pg");
2876 fpdModTableModel
.addColumn("pv");
2877 fpdModTableModel
.addColumn("arch");
2879 for (int i
= 1; i
< 6; ++i
) {
2880 jTableFpdModules
.removeColumn(jTableFpdModules
.getColumnModel().getColumn(jTableFpdModules
.getColumnCount()-1));
2882 jTableFpdModules
.setRowHeight(20);
2883 jTableFpdModules
.setShowGrid(false);
2884 jTableFpdModules
.setAutoCreateColumnsFromModel(false);
2885 jTableFpdModules
.addMouseListener(new MouseAdapter() {
2888 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
2891 public void mouseClicked(MouseEvent arg0
) {
2892 if (arg0
.getButton() == MouseEvent
.BUTTON3
) {
2893 java
.awt
.Point p
= arg0
.getPoint();
2894 int rowIndex
= jTableFpdModules
.rowAtPoint(p
);
2895 TableModel model
= jTableFpdModules
.getModel();
2896 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2897 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2898 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2899 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2900 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2901 String details
= "PackageGuid: " + pg
+ "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2903 details
= "In Package " + mi
.getPackageId().getName() + "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2905 JOptionPane
.showMessageDialog(ModuleOrderPane
.this, details
);
2912 return jTableFpdModules
;
2916 * This method initializes jButtonUp
2918 * @return javax.swing.JButton
2920 private JButton
getJButtonUp() {
2921 if (jButtonUp
== null) {
2922 jButtonUp
= new JButton();
2923 jButtonUp
.setPreferredSize(new java
.awt
.Dimension(60,20));
2924 jButtonUp
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 14));
2925 jButtonUp
.setText("^");
2926 jButtonUp
.addActionListener(new java
.awt
.event
.ActionListener() {
2927 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2928 int selectedRow
= jTableModInFv
.getSelectedRow();
2929 if (selectedRow
<= 0) {
2932 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
- 1);
2933 jTableModInFv
.changeSelection(selectedRow
- 1, 0, false, false);
2941 * This method initializes jButtonInsert
2943 * @return javax.swing.JButton
2945 private JButton
getJButtonInsert() {
2946 if (jButtonInsert
== null) {
2947 jButtonInsert
= new JButton();
2948 jButtonInsert
.setText("<");
2949 jButtonInsert
.setPreferredSize(new java
.awt
.Dimension(60,20));
2950 jButtonInsert
.addActionListener(new java
.awt
.event
.ActionListener() {
2951 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2952 int selectedRowRight
= jTableFpdModules
.getSelectedRow();
2953 if (selectedRowRight
< 0) {
2957 int rowInModel
= ((TableSorter
)jTableFpdModules
.getModel()).getModelRowIndex(selectedRowRight
);
2958 String name
= fpdModTableModel
.getValueAt(rowInModel
, 0)+"";
2959 String mg
= fpdModTableModel
.getValueAt(rowInModel
, 1)+"";
2960 String mv
= fpdModTableModel
.getValueAt(rowInModel
, 2)+"";
2961 String pg
= fpdModTableModel
.getValueAt(rowInModel
, 3)+"";
2962 String pv
= fpdModTableModel
.getValueAt(rowInModel
, 4)+"";
2963 String arch
= fpdModTableModel
.getValueAt(rowInModel
, 5)+"";
2964 String
[] row
= {name
, mg
, mv
, pg
, pv
, arch
};
2965 if (name
.length() == 0 || name
.equals("N/A")) {
2969 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
2970 if (selectedRowLeft
< 0) {
2971 modInFvTableModel
.addRow(row
);
2972 jTableModInFv
.changeSelection(jTableModInFv
.getRowCount() - 1, 0, false, false);
2975 modInFvTableModel
.insertRow(selectedRowLeft
, row
);
2976 jTableModInFv
.changeSelection(selectedRowLeft
, 0, false, false);
2978 fpdModTableModel
.removeRow(rowInModel
);
2982 return jButtonInsert
;
2986 * This method initializes jButtonRemove
2988 * @return javax.swing.JButton
2990 private JButton
getJButtonRemove() {
2991 if (jButtonRemove
== null) {
2992 jButtonRemove
= new JButton();
2993 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(60,20));
2994 jButtonRemove
.setText(">");
2995 jButtonRemove
.addActionListener(new java
.awt
.event
.ActionListener() {
2996 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2997 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
2998 if (selectedRowLeft
< 0) {
3002 String name
= modInFvTableModel
.getValueAt(selectedRowLeft
, 0)+"";
3003 String mg
= modInFvTableModel
.getValueAt(selectedRowLeft
, 1)+"";
3004 String mv
= modInFvTableModel
.getValueAt(selectedRowLeft
, 2)+"";
3005 String pg
= modInFvTableModel
.getValueAt(selectedRowLeft
, 3)+"";
3006 String pv
= modInFvTableModel
.getValueAt(selectedRowLeft
, 4)+"";
3007 String arch
= modInFvTableModel
.getValueAt(selectedRowLeft
, 5)+"";
3008 String
[] row
= {name
, mg
, mv
, pg
, pv
, arch
};
3009 String moduleKey
= mg
+ " " + mv
+ " " + pg
+ " " + pv
+ " " + arch
;
3010 if (name
.length() == 0 || name
.equals("N/A") || ffc
.getModuleSA(moduleKey
) == null) {
3011 JOptionPane
.showMessageDialog(ModuleOrderPane
.this, "Module " + name
+ " not exists in platform. If you want to add back this module, please first add it into current platform. " + moduleKey
);
3012 modInFvTableModel
.removeRow(selectedRowLeft
);
3016 fpdModTableModel
.addRow(row
);
3017 int viewIndex
= ((TableSorter
) jTableFpdModules
.getModel()).getViewIndexArray()[jTableFpdModules
3018 .getRowCount() - 1];
3019 jTableFpdModules
.changeSelection(viewIndex
, 0, false, false);
3020 modInFvTableModel
.removeRow(selectedRowLeft
);
3024 return jButtonRemove
;
3028 * This method initializes jButtonDown
3030 * @return javax.swing.JButton
3032 private JButton
getJButtonDown() {
3033 if (jButtonDown
== null) {
3034 jButtonDown
= new JButton();
3035 jButtonDown
.setPreferredSize(new java
.awt
.Dimension(60,20));
3036 jButtonDown
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 10));
3037 jButtonDown
.setText("v");
3038 jButtonDown
.addActionListener(new java
.awt
.event
.ActionListener() {
3039 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3040 int selectedRow
= jTableModInFv
.getSelectedRow();
3041 if (selectedRow
>= jTableModInFv
.getRowCount() - 1) {
3044 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
+ 1);
3045 jTableModInFv
.changeSelection(selectedRow
+ 1, 0, false, false);
3053 * This method initializes jButtonOk
3055 * @return javax.swing.JButton
3057 protected JButton
getJButtonOk() {
3058 if (jButtonOk
== null) {
3059 jButtonOk
= new JButton();
3060 jButtonOk
.setPreferredSize(new java
.awt
.Dimension(80,20));
3061 jButtonOk
.setText("Ok");
3062 jButtonOk
.setActionCommand("ModuleOrderPaneOk");
3063 jButtonOk
.addActionListener(this);
3070 * This method initializes jButtonCancel
3072 * @return javax.swing.JButton
3074 protected JButton
getJButtonCancel() {
3075 if (jButtonCancel
== null) {
3076 jButtonCancel
= new JButton();
3077 jButtonCancel
.setPreferredSize(new java
.awt
.Dimension(80,20));
3078 jButtonCancel
.setText("Cancel");
3079 jButtonCancel
.setActionCommand("ModuleOrderPaneCancel");
3082 return jButtonCancel
;
3085 public void actionPerformed(ActionEvent arg0
) {
3086 if (arg0
.getSource() == jButtonOk
) {
3087 // need reset FvBindings in ModuleSA.
3088 ffc
.removeFvBindingAll(title
);
3090 // collect module order information to store them into <BuildOptions> -> <UserExtensions>.
3091 // also update the FvBinding info in <ModuleSA>.
3093 Vector
<String
[]> vModInFv
= new Vector
<String
[]>();
3094 for (int i
= 0; i
< jTableModInFv
.getRowCount(); ++i
) {
3095 String moduleName
= modInFvTableModel
.getValueAt(i
, 0)+"";
3096 if (moduleName
.length() == 0 || moduleName
.equals("N/A")) {
3100 String mg
= modInFvTableModel
.getValueAt(i
, 1)+"";
3101 String mv
= modInFvTableModel
.getValueAt(i
, 2)+"";
3102 String pg
= modInFvTableModel
.getValueAt(i
, 3)+"";
3103 String pv
= modInFvTableModel
.getValueAt(i
, 4)+"";
3104 String arch
= modInFvTableModel
.getValueAt(i
, 5)+"";
3106 String moduleInfo
= mg
+ " " + mv
+ " " + pg
+ " " + pv
+ " " + arch
;
3108 String
[] sa
= { mg
, mv
, pg
, pv
, arch
};
3110 ffc
.updateFvBindingInModuleSA(moduleInfo
, title
);
3113 ffc
.removeBuildOptionsUserExtensions(title
, "IMAGES", 1);
3114 ffc
.genBuildOptionsUserExtensions(title
, "IMAGES", "1", outputFileName
, vModInFv
);
3120 * @return Returns the fpdModTableModel.
3122 protected IDefaultTableModel
getFpdModTableModel() {
3123 return fpdModTableModel
;
3127 * @return Returns the modInFvTableModel.
3129 protected IDefaultTableModel
getModInFvTableModel() {
3130 return modInFvTableModel
;
3135 class FvOptsTableModel
extends DefaultTableModel
{
3137 private static final long serialVersionUID
= 1L;
3139 private Vector
<Object
> vNonEditableName
= new Vector
<Object
>();
3140 private Vector
<Object
> vKeyWords
= new Vector
<Object
>();
3142 public boolean isCellEditable(int row
, int col
) {
3144 if (vNonEditableName
.size() > 0 || vKeyWords
.size() > 0) {
3145 if (vKeyWords
.contains(getValueAt(row
, 0))) {
3148 if (vNonEditableName
.contains(getValueAt(row
, 0)) && col
== 0) {
3153 if (col
== 0 && getValueAt(row
, 0) != null && getValueAt(row
, 0).toString().length() > 0) {
3161 * @return Returns the vKeyWords.
3163 protected Vector
<Object
> getVKeyWords() {
3168 * @param keyWords The vKeyWords to set.
3170 protected void setVKeyWords(Vector
<Object
> keyWords
) {
3171 vKeyWords
.removeAllElements();
3172 vKeyWords
.addAll(keyWords
);
3176 * @return Returns the vNonEditableName.
3178 protected Vector
<Object
> getVNonEditableName() {
3179 return vNonEditableName
;
3183 * @param nonEditableName The vNonEditableName to set.
3185 protected void setVNonEditableName(Vector
<Object
> nonEditableName
) {
3186 vNonEditableName
.removeAllElements();
3187 vNonEditableName
.addAll(nonEditableName
);
3191 class ImageParaTableModel
extends DefaultTableModel
{
3193 private static final long serialVersionUID
= 1L;
3195 public boolean isCellEditable(int row
, int col
) {
3196 // if (getValueAt(row, 1).equals("ImageName") && col >=1) {
3204 class FvInfoFromFdf
{
3205 private String fvName
;
3206 private String size
;
3207 private String efiFileName
;
3209 public FvInfoFromFdf () {
3214 public FvInfoFromFdf (String f
, String s
, String e
) {
3220 public String
getEfiFileName() {
3223 public void setEfiFileName(String efiFileName
) {
3224 this.efiFileName
= efiFileName
;
3226 public String
getFvName() {
3229 public void setFvName(String fvName
) {
3230 this.fvName
= fvName
;
3232 public String
getSize() {
3235 public void setSize(String size
) {