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
.JFrame
;
21 import javax
.swing
.JOptionPane
;
22 import javax
.swing
.JTabbedPane
;
23 import javax
.swing
.JButton
;
24 import javax
.swing
.ListSelectionModel
;
26 import org
.tianocore
.PlatformSurfaceAreaDocument
;
27 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
28 import org
.tianocore
.frameworkwizard
.common
.GlobalData
;
29 import org
.tianocore
.frameworkwizard
.common
.IDefaultTableModel
;
30 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningPlatformType
;
31 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
32 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
33 import org
.tianocore
.frameworkwizard
.module
.Identifications
.ModuleIdentification
;
34 import org
.tianocore
.frameworkwizard
.platform
.ui
.global
.WorkspaceProfile
;
36 import java
.awt
.FlowLayout
;
37 import java
.awt
.event
.ActionEvent
;
38 import java
.awt
.event
.ComponentAdapter
;
39 import java
.awt
.event
.ComponentEvent
;
40 import java
.awt
.event
.ItemEvent
;
41 import java
.awt
.event
.ItemListener
;
42 import java
.io
.BufferedReader
;
44 import java
.io
.FileReader
;
45 import java
.util
.ArrayList
;
46 import java
.util
.HashMap
;
47 import java
.util
.Iterator
;
48 import java
.util
.LinkedHashMap
;
51 import java
.util
.Vector
;
53 import javax
.swing
.JCheckBox
;
54 import javax
.swing
.JTextField
;
55 import java
.awt
.GridLayout
;
56 import javax
.swing
.JLabel
;
57 import javax
.swing
.JScrollPane
;
58 import javax
.swing
.JTable
;
59 import javax
.swing
.event
.InternalFrameAdapter
;
60 import javax
.swing
.event
.InternalFrameEvent
;
61 import javax
.swing
.event
.ListSelectionEvent
;
62 import javax
.swing
.event
.ListSelectionListener
;
63 import javax
.swing
.event
.TableModelEvent
;
64 import javax
.swing
.event
.TableModelListener
;
65 import javax
.swing
.table
.DefaultTableModel
;
66 import javax
.swing
.table
.TableModel
;
67 import javax
.swing
.JComboBox
;
68 import java
.awt
.Dimension
;
69 import javax
.swing
.JSplitPane
;
71 public class FpdFlash
extends IInternalFrame
{
76 private static final long serialVersionUID
= 1L;
77 private final int startIndexOfDynamicTab
= 2;
79 private JPanel jContentPane
= null;
80 private JPanel jPanelContentEast
= null;
81 private JPanel jPanelContentSouth
= null;
82 private JPanel jPanelContentWest
= null;
83 private JPanel jPanelContentNorth
= null;
84 private JTabbedPane jTabbedPane
= null;
85 private JPanel jPanelFvImages
= null;
86 private JPanel jPanelFvImageN
= null;
87 private JPanel jPanelFvImageS
= null;
88 private JCheckBox jCheckBoxFvProperty
= null;
89 private JLabel jLabelFvPropName
= null;
90 private JTextField jTextFieldFvPropName
= null;
91 private JLabel jLabelFvPropValue
= null;
92 private JTextField jTextFieldFvPropValue
= null;
93 private JButton jButtonFvPropAdd
= null;
94 private JScrollPane jScrollPaneFvProp
= null;
95 private JTable jTableFvProp
= null;
96 private JPanel jPanelFvPropButtonGroup
= null;
97 private JButton jButtonFvPropDel
= null;
98 private DefaultTableModel fvPropertyTableModel
= null;
99 private DefaultTableModel fvImageNameTableModel
= null;
100 private ImageParaTableModel fvImageParaTableModel
= null;
101 private DefaultTableModel fvOptionTableModel
= null;
102 private JPanel jPanelFvImageC
= null;
103 private JLabel jLabelFvParaType
= null;
104 private JComboBox jComboBoxFvParaType
= null;
105 private JLabel jLabelFvImageNames
= null;
106 private JLabel jLabelFvParaName
= null;
107 private JTextField jTextFieldFvParaName
= null;
108 private JButton jButtonFvNameAdd
= null;
109 private JScrollPane jScrollPaneFvImageNames
= null;
110 private JTable jTableFvImageNames
= null;
111 private JButton jButtonFvNameDel
= null;
112 private JPanel jPanelFvImageOpts
= null;
113 private JButton jButtonAddFvImage
= null;
114 private JScrollPane jScrollPaneFvInfo
= null;
115 private JTable jTableFvInfo
= null;
116 private JButton jButtonDelFvImage
= null;
117 private JPanel jPanelFvImagePara
= null;
118 private OpeningPlatformType docConsole
= null;
119 private FpdFileContents ffc
= null;
120 private JPanel jPanelFdf
= null;
121 private JCheckBox jCheckBoxFdf
= null;
122 private JTextField jTextFieldFdf
= null;
123 private JButton jButtonFdfBrowse
= null;
124 private JLabel jLabelFvImageOptName
= null;
125 private JTextField jTextFieldFvImageOptName
= null;
126 private JLabel jLabelFvImageOptValue
= null;
127 private JTextField jTextFieldFvImageOptValue
= null;
128 private JPanel jPanelFvImageOptsButtonGroup
= null;
129 private JButton jButtonFvImageOptAdd
= null;
130 private JButton jButtonFvImageOptDel
= null;
131 private JScrollPane jScrollPane
= null;
132 private JTable jTableFvImageOpts
= null;
133 private JButton jButtonUpdateFvImage
= null;
134 private JPanel jPanelFdfN
= null;
135 private JPanel jPanelFdfS
= null;
136 private JSplitPane jSplitPaneFdfC
= null;
137 private JPanel jPanelFdfCTop
= null;
138 private JPanel jPanelFdfCBottom
= null;
139 private JPanel jPanelFdfCTopN
= null;
140 private JPanel jPanelFdfCTopS
= null;
141 private JPanel jPanelFdfCTopC
= null;
142 private JPanel jPanelFdfCBottomN
= null;
143 private JPanel jPanelFdfCBottomC
= null;
144 private JLabel jLabelFvInFdf
= null;
145 private JLabel jLabelFvAdditional
= null;
146 private JScrollPane jScrollPaneFvInFdf
= null;
147 private JTable jTableFvInFdf
= null;
148 private IDefaultTableModel fvInFdfTableModel
= null; // @jve:decl-index=0:visual-constraint=""
149 private JButton jButtonFvInFdfOptions
= null;
150 private JScrollPane jScrollPaneFvAdditional
= null;
151 private JTable jTableFvAdditional
= null;
152 private DefaultTableModel fvAdditionalTableModel
= null; // @jve:decl-index=0:visual-constraint=""
153 private JButton jButtonAddFv
= null;
154 private JButton jButtonDelFv
= null;
155 private JButton jButtonAddFvOptions
= null;
156 private int tabIndexForFv
= -1;
157 private int selectedRowInFvAdditionalTable
= -1;
158 private String oldFvName
= null;
159 private Vector
<String
> vBlockSize
= new Vector
<String
>();
160 private String determinedFvBlockSize
= null;
161 private final String defaultBlkSize
= "0x10000";
162 private String erasePolarity
= "";
163 boolean memModified
= false;
164 private FvOptsTableModel fvInFdfOptTableModel
= null;
165 private FvOptsTableModel fvAdditionalOptTableModel
= null;
166 private boolean sizeFromOptionDlg
= false;
167 private boolean fileFromOptionDlg
= false;
168 private JLabel jLabelOptions
= null;
169 private JPanel jPanelBgFvName
= null;
170 private JPanel jPanelBgFvImage
= null;
171 private JPanel jPanelW
= null;
175 // TODO Auto-generated constructor stub
178 this.setBounds(new java
.awt
.Rectangle(0, 0, 500, 370));
179 this.setVisible(true);
182 public FpdFlash(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
184 ffc
= new FpdFileContents(fpd
);
188 public FpdFlash(OpeningPlatformType opt
) {
189 this(opt
.getXmlFpd());
192 docConsole
.setSaved(false);
193 JOptionPane
.showMessageDialog(frame
, "Platform Synced with FDF file.");
199 * This method initializes jPanel
201 * @return javax.swing.JPanel
203 private JPanel
getJPanelContentEast() {
204 if (jPanelContentEast
== null) {
205 FlowLayout flowLayout7
= new FlowLayout();
206 flowLayout7
.setVgap(50);
207 jPanelContentEast
= new JPanel();
208 jPanelContentEast
.setLayout(flowLayout7
);
210 return jPanelContentEast
;
214 * This method initializes jPanel1
216 * @return javax.swing.JPanel
218 private JPanel
getJPanelContentSouth() {
219 if (jPanelContentSouth
== null) {
220 FlowLayout flowLayout
= new FlowLayout();
221 flowLayout
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
222 flowLayout
.setHgap(15);
223 jPanelContentSouth
= new JPanel();
224 jPanelContentSouth
.setLayout(flowLayout
);
225 jPanelContentSouth
.setComponentOrientation(java
.awt
.ComponentOrientation
.LEFT_TO_RIGHT
);
227 return jPanelContentSouth
;
231 * This method initializes jPanel2
233 * @return javax.swing.JPanel
235 private JPanel
getJPanelContentWest() {
236 if (jPanelContentWest
== null) {
237 jPanelContentWest
= new JPanel();
239 return jPanelContentWest
;
243 * This method initializes jPanel3
245 * @return javax.swing.JPanel
247 private JPanel
getJPanelContentNorth() {
248 if (jPanelContentNorth
== null) {
249 jPanelContentNorth
= new JPanel();
251 return jPanelContentNorth
;
255 * This method initializes jTabbedPane
257 * @return javax.swing.JTabbedPane
259 private JTabbedPane
getJTabbedPane() {
260 if (jTabbedPane
== null) {
261 jTabbedPane
= new JTabbedPane();
262 jTabbedPane
.addTab("General", null, getJPanelFdf(), null);
263 jTabbedPane
.addTab("Advanced", null, getJPanelFvImages(), null);
270 * This method initializes jPanelFvImages
272 * @return javax.swing.JPanel
274 private JPanel
getJPanelFvImages() {
275 if (jPanelFvImages
== null) {
276 jPanelFvImages
= new JPanel();
277 jPanelFvImages
.setLayout(new BorderLayout());
278 jPanelFvImages
.add(getJPanelFvImageS(), java
.awt
.BorderLayout
.NORTH
);
279 jPanelFvImages
.add(getJPanelFvImageN(), java
.awt
.BorderLayout
.SOUTH
);
280 jPanelFvImages
.add(getJPanelFvImageC(), java
.awt
.BorderLayout
.CENTER
);
281 jPanelFvImages
.add(getJPanelW(), java
.awt
.BorderLayout
.EAST
);
282 jPanelFvImages
.addComponentListener(new java
.awt
.event
.ComponentAdapter() {
283 public void componentShown(java
.awt
.event
.ComponentEvent e
) {
284 // fvImageParaTableModel.setRowCount(0);
285 // fvPropertyTableModel.setRowCount(0);
292 return jPanelFvImages
;
296 * This method initializes jPanelFvImageN
298 * @return javax.swing.JPanel
300 private JPanel
getJPanelFvImageN() {
301 if (jPanelFvImageN
== null) {
302 jLabelFvPropValue
= new JLabel();
303 jLabelFvPropValue
.setText("Value");
304 jLabelFvPropValue
.setEnabled(false);
305 jLabelFvPropValue
.setPreferredSize(new java
.awt
.Dimension(38,20));
306 jLabelFvPropName
= new JLabel();
307 jLabelFvPropName
.setText("Name");
308 jLabelFvPropName
.setEnabled(false);
309 jLabelFvPropName
.setPreferredSize(new java
.awt
.Dimension(38,20));
310 FlowLayout flowLayout2
= new FlowLayout();
311 flowLayout2
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
312 flowLayout2
.setHgap(5);
313 jPanelFvImageN
= new JPanel();
314 jPanelFvImageN
.setPreferredSize(new java
.awt
.Dimension(576,130));
315 jPanelFvImageN
.setBorder(javax
.swing
.BorderFactory
.createBevelBorder(javax
.swing
.border
.BevelBorder
.RAISED
));
316 jPanelFvImageN
.setLayout(flowLayout2
);
317 jPanelFvImageN
.add(getJCheckBoxFvProperty(), null);
318 jPanelFvImageN
.add(jLabelFvPropName
, null);
319 jPanelFvImageN
.add(getJTextFieldFvPropName(), null);
320 jPanelFvImageN
.add(jLabelFvPropValue
, null);
321 jPanelFvImageN
.add(getJTextFieldFvPropValue(), null);
322 jPanelFvImageN
.add(getJScrollPaneFvProp(), null);
323 jPanelFvImageN
.add(getJPanelFvPropButtonGroup(), null);
325 return jPanelFvImageN
;
329 * This method initializes jPanelFvImageS
331 * @return javax.swing.JPanel
333 private JPanel
getJPanelFvImageS() {
334 if (jPanelFvImageS
== null) {
335 GridLayout gridLayout2
= new GridLayout();
336 gridLayout2
.setRows(1);
337 jPanelFvImageS
= new JPanel();
338 jPanelFvImageS
.setPreferredSize(new java
.awt
.Dimension(480,150));
339 jPanelFvImageS
.setLayout(gridLayout2
);
340 jPanelFvImageS
.add(getJScrollPaneFvInfo(), null);
342 return jPanelFvImageS
;
347 * This method initializes jCheckBox1
349 * @return javax.swing.JCheckBox
351 private JCheckBox
getJCheckBoxFvProperty() {
352 if (jCheckBoxFvProperty
== null) {
353 jCheckBoxFvProperty
= new JCheckBox();
354 jCheckBoxFvProperty
.setText("Global FV Variables");
355 jCheckBoxFvProperty
.addItemListener(new ItemListener(){
357 public void itemStateChanged(ItemEvent arg0
) {
358 // TODO Auto-generated method stub
359 boolean seleted
= jCheckBoxFvProperty
.isSelected();
361 jLabelFvPropName
.setEnabled(seleted
);
362 jTextFieldFvPropName
.setEnabled(seleted
);
363 jLabelFvPropValue
.setEnabled(seleted
);
364 jTextFieldFvPropValue
.setEnabled(seleted
);
365 jTableFvProp
.setEnabled(seleted
);
366 jButtonFvPropAdd
.setEnabled(seleted
);
367 jButtonFvPropDel
.setEnabled(seleted
);
374 return jCheckBoxFvProperty
;
379 * This method initializes jTextField
381 * @return javax.swing.JTextField
383 private JTextField
getJTextFieldFvPropName() {
384 if (jTextFieldFvPropName
== null) {
385 jTextFieldFvPropName
= new JTextField();
386 jTextFieldFvPropName
.setPreferredSize(new java
.awt
.Dimension(100,20));
387 jTextFieldFvPropName
.setEnabled(false);
389 return jTextFieldFvPropName
;
394 * This method initializes jTextField1
396 * @return javax.swing.JTextField
398 private JTextField
getJTextFieldFvPropValue() {
399 if (jTextFieldFvPropValue
== null) {
400 jTextFieldFvPropValue
= new JTextField();
401 jTextFieldFvPropValue
.setPreferredSize(new java
.awt
.Dimension(100,20));
402 jTextFieldFvPropValue
.setEnabled(false);
404 return jTextFieldFvPropValue
;
409 * This method initializes jButton
411 * @return javax.swing.JButton
413 private JButton
getJButtonFvPropAdd() {
414 if (jButtonFvPropAdd
== null) {
415 jButtonFvPropAdd
= new JButton();
416 jButtonFvPropAdd
.setPreferredSize(new java
.awt
.Dimension(80,20));
417 jButtonFvPropAdd
.setEnabled(false);
418 jButtonFvPropAdd
.setText("Add");
419 jButtonFvPropAdd
.addActionListener(new AbstractAction() {
423 private static final long serialVersionUID
= 1L;
425 public void actionPerformed(ActionEvent e
) {
426 if (jTextFieldFvPropName
.getText().length() > 0 && jTextFieldFvPropValue
.getText().length() > 0){
427 String
[] row
= {jTextFieldFvPropName
.getText(), jTextFieldFvPropValue
.getText()};
428 fvPropertyTableModel
.addRow(row
);
429 docConsole
.setSaved(false);
430 ffc
.genFvImagesNameValue(row
[0], row
[1]);
435 return jButtonFvPropAdd
;
440 * This method initializes jScrollPane1
442 * @return javax.swing.JScrollPane
444 private JScrollPane
getJScrollPaneFvProp() {
445 if (jScrollPaneFvProp
== null) {
446 jScrollPaneFvProp
= new JScrollPane();
447 jScrollPaneFvProp
.setPreferredSize(new java
.awt
.Dimension(350,100));
448 jScrollPaneFvProp
.setViewportView(getJTableFvProp());
450 return jScrollPaneFvProp
;
455 * This method initializes jTable
457 * @return javax.swing.JTable
459 private JTable
getJTableFvProp() {
460 if (jTableFvProp
== null) {
461 fvPropertyTableModel
= new DefaultTableModel();
462 jTableFvProp
= new JTable(fvPropertyTableModel
);
463 fvPropertyTableModel
.addColumn("Name");
464 fvPropertyTableModel
.addColumn("Value");
465 jTableFvProp
.setRowHeight(20);
466 jTableFvProp
.setEnabled(false);
468 jTableFvProp
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
469 jTableFvProp
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
470 public void valueChanged(ListSelectionEvent e
) {
471 if (e
.getValueIsAdjusting()){
474 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
475 if (lsm
.isSelectionEmpty()) {
479 // selectedRow = lsm.getMinSelectionIndex();
484 jTableFvProp
.getModel().addTableModelListener(new TableModelListener(){
485 public void tableChanged(TableModelEvent arg0
) {
486 // TODO Auto-generated method stub
487 int row
= arg0
.getFirstRow();
488 TableModel m
= (TableModel
)arg0
.getSource();
489 if (arg0
.getType() == TableModelEvent
.UPDATE
){
491 String name
= m
.getValueAt(row
, 0) + "";
492 String value
= m
.getValueAt(row
, 1) + "";
493 docConsole
.setSaved(false);
494 ffc
.updateFvImagesNameValue(row
, name
, value
);
504 * This method initializes jPanel4
506 * @return javax.swing.JPanel
508 private JPanel
getJPanelFvPropButtonGroup() {
509 if (jPanelFvPropButtonGroup
== null) {
510 jPanelFvPropButtonGroup
= new JPanel();
511 jPanelFvPropButtonGroup
.setPreferredSize(new java
.awt
.Dimension(80,55));
513 jPanelFvPropButtonGroup
.add(getJButtonFvPropAdd(), null);
514 jPanelFvPropButtonGroup
.add(getJButtonFvPropDel(), null);
516 return jPanelFvPropButtonGroup
;
521 * This method initializes jButton1
523 * @return javax.swing.JButton
525 private JButton
getJButtonFvPropDel() {
526 if (jButtonFvPropDel
== null) {
527 jButtonFvPropDel
= new JButton();
528 jButtonFvPropDel
.setPreferredSize(new java
.awt
.Dimension(80,20));
529 jButtonFvPropDel
.setEnabled(false);
530 jButtonFvPropDel
.setText("Delete");
531 jButtonFvPropDel
.addActionListener(new AbstractAction() {
535 private static final long serialVersionUID
= 1L;
537 public void actionPerformed(ActionEvent e
) {
538 if (jTableFvProp
.getSelectedRow() >= 0){
539 fvPropertyTableModel
.removeRow(jTableFvProp
.getSelectedRow());
540 docConsole
.setSaved(false);
541 ffc
.removeFvImagesNameValue(jTableFvProp
.getSelectedRow());
546 return jButtonFvPropDel
;
551 * This method initializes jPanelFvImageC
553 * @return javax.swing.JPanel
555 private JPanel
getJPanelFvImageC() {
556 if (jPanelFvImageC
== null) {
557 jLabelFvParaName
= new JLabel();
558 jLabelFvParaName
.setPreferredSize(new Dimension(38, 20));
559 jLabelFvParaName
.setText("Name");
560 jLabelFvImageNames
= new JLabel();
561 jLabelFvImageNames
.setText("FV Image Names");
562 jLabelFvImageNames
.setPreferredSize(new java
.awt
.Dimension(150,20));
563 jLabelFvParaType
= new JLabel();
564 jLabelFvParaType
.setText("Type");
565 jLabelFvParaType
.setPreferredSize(new java
.awt
.Dimension(70,20));
566 FlowLayout flowLayout3
= new FlowLayout();
567 flowLayout3
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
568 flowLayout3
.setHgap(5);
569 jPanelFvImageC
= new JPanel();
570 jPanelFvImageC
.setLayout(flowLayout3
);
571 jPanelFvImageC
.add(getJPanelFvImagePara(), null);
573 jPanelFvImageC
.add(getJPanelFvImageOpts(), null);
576 return jPanelFvImageC
;
581 * This method initializes jComboBox
583 * @return javax.swing.JComboBox
585 private JComboBox
getJComboBoxFvParaType() {
586 if (jComboBoxFvParaType
== null) {
587 jComboBoxFvParaType
= new JComboBox();
588 jComboBoxFvParaType
.addItem("Attributes");
589 jComboBoxFvParaType
.addItem("Components");
590 jComboBoxFvParaType
.setSelectedIndex(0);
591 jComboBoxFvParaType
.setPreferredSize(new java
.awt
.Dimension(180,20));
592 jComboBoxFvParaType
.addItemListener(new ItemListener() {
594 public void itemStateChanged(ItemEvent arg0
) {
595 // TODO disable attribute settings when ValidImageNames selected.
596 int selectedRow
= jTableFvInfo
.getSelectedRow();
597 if (selectedRow
< 0) {
600 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
601 String oldType
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
602 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, oldType
);
603 if (fvImagePos
< 0) {
607 String type
= jComboBoxFvParaType
.getSelectedItem()+"";
608 ffc
.updateFvImagesFvImageType(fvImagePos
, type
);
609 jTableFvInfo
.setValueAt(type
, selectedRow
, 1);
610 docConsole
.setSaved(false);
615 return jComboBoxFvParaType
;
620 * This method initializes jTextField2
622 * @return javax.swing.JTextField
624 private JTextField
getJTextFieldFvParaName() {
625 if (jTextFieldFvParaName
== null) {
626 jTextFieldFvParaName
= new JTextField();
627 jTextFieldFvParaName
.setPreferredSize(new java
.awt
.Dimension(140,20));
629 return jTextFieldFvParaName
;
634 * This method initializes jButton2
636 * @return javax.swing.JButton
638 private JButton
getJButtonFvNameAdd() {
639 if (jButtonFvNameAdd
== null) {
640 jButtonFvNameAdd
= new JButton();
641 jButtonFvNameAdd
.setPreferredSize(new Dimension(80, 20));
642 jButtonFvNameAdd
.setEnabled(true);
643 jButtonFvNameAdd
.setText("Add");
644 jButtonFvNameAdd
.addActionListener(new AbstractAction() {
648 private static final long serialVersionUID
= 1L;
650 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
651 if (jTextFieldFvParaName
.getText().length() > 0){
652 String
[] row
= {jTextFieldFvParaName
.getText()};
653 int selectedRow
= jTableFvInfo
.getSelectedRow();
654 if (selectedRow
< 0) {
658 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
659 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
660 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
662 if (fvImagePos
< 0) {
664 ffc
.genFvImagesFvImage(row
, jComboBoxFvParaType
.getSelectedItem()+"", null);
668 ffc
.addFvImageNamesInFvImage(fvImagePos
, row
);
670 docConsole
.setSaved(false);
671 fvImageNameTableModel
.addRow(row
);
673 fvNameList
+= row
[0];
674 jTableFvInfo
.setValueAt(fvNameList
.trim(), selectedRow
, 0);
675 jTableFvImageNames
.changeSelection(jTableFvImageNames
.getRowCount() - 1, 0, false, false);
680 return jButtonFvNameAdd
;
685 * This method initializes jScrollPane2
687 * @return javax.swing.JScrollPane
689 private JScrollPane
getJScrollPaneFvImageNames() {
690 if (jScrollPaneFvImageNames
== null) {
691 jScrollPaneFvImageNames
= new JScrollPane();
692 jScrollPaneFvImageNames
.setPreferredSize(new java
.awt
.Dimension(350,80));
693 jScrollPaneFvImageNames
.setViewportView(getJTableFvImageNames());
695 return jScrollPaneFvImageNames
;
700 * This method initializes jTable1
702 * @return javax.swing.JTable
704 private JTable
getJTableFvImageNames() {
705 if (jTableFvImageNames
== null) {
706 fvImageNameTableModel
= new IDefaultTableModel();
707 jTableFvImageNames
= new JTable(fvImageNameTableModel
);
708 jTableFvImageNames
.setRowHeight(20);
709 fvImageNameTableModel
.addColumn("FV Image Name");
712 return jTableFvImageNames
;
717 * This method initializes jButton3
719 * @return javax.swing.JButton
721 private JButton
getJButtonFvNameDel() {
722 if (jButtonFvNameDel
== null) {
723 jButtonFvNameDel
= new JButton();
724 jButtonFvNameDel
.setPreferredSize(new Dimension(80, 20));
725 jButtonFvNameDel
.setEnabled(true);
726 jButtonFvNameDel
.setText("Delete");
727 jButtonFvNameDel
.addActionListener(new AbstractAction() {
731 private static final long serialVersionUID
= 1L;
733 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
734 if (jTableFvImageNames
.getSelectedRow() >= 0){
735 int selectedRow
= jTableFvInfo
.getSelectedRow();
736 if (selectedRow
< 0) {
740 String selectedFvName
= jTableFvImageNames
.getValueAt(jTableFvImageNames
.getSelectedRow(), 0)+"";
741 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
742 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
743 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
745 if (fvImagePos
< 0) {
750 ffc
.updateFvImageNamesInFvImage(fvImagePos
, selectedFvName
, null);
752 docConsole
.setSaved(false);
753 String newList
= removeFvNameFromList(fvNameList
, selectedFvName
);
754 jTableFvInfo
.setValueAt(newList
, selectedRow
, 0);
755 fvImageNameTableModel
.removeRow(jTableFvImageNames
.getSelectedRow());
760 return jButtonFvNameDel
;
763 private String
removeFvNameFromList (String list
, String name
) {
764 String
[] nameArray
= list
.split(" ");
766 for (int i
= 0; i
< nameArray
.length
; ++i
) {
767 if (nameArray
[i
].equals(name
)) {
773 if (occursAt
== -1) {
777 String newList
= " ";
778 for (int j
= 0; j
< nameArray
.length
; ++j
) {
780 newList
+= nameArray
[j
];
785 return newList
.trim();
789 private JPanel
getJPanelFvImageOpts() {
792 if (jPanelFvImageOpts
== null) {
793 //ToDo add ButtonGroup for RadioButtons
794 FlowLayout flowLayout5
= new FlowLayout();
795 flowLayout5
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
796 jLabelOptions
= new JLabel();
797 jLabelOptions
.setText("Attribute");
798 jLabelFvImageOptValue
= new JLabel();
799 jLabelFvImageOptValue
.setEnabled(true);
800 jLabelFvImageOptValue
.setText("Value");
801 jLabelFvImageOptValue
.setPreferredSize(new Dimension(38, 20));
802 jLabelFvImageOptName
= new JLabel();
803 jLabelFvImageOptName
.setEnabled(true);
804 jLabelFvImageOptName
.setText("Name");
805 jLabelFvImageOptName
.setPreferredSize(new Dimension(38, 20));
806 jPanelFvImageOpts
= new JPanel();
807 jPanelFvImageOpts
.setLayout(flowLayout5
);
808 jPanelFvImageOpts
.setPreferredSize(new java
.awt
.Dimension(450,130));
811 jPanelFvImageOpts
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
812 jPanelFvImageOpts
.add(jLabelOptions
, null);
813 jPanelFvImageOpts
.add(jLabelFvImageOptName
, null);
814 jPanelFvImageOpts
.add(getJTextFieldFvImageOptName(), null);
815 jPanelFvImageOpts
.add(jLabelFvImageOptValue
, null);
816 jPanelFvImageOpts
.add(getJTextFieldFvImageOptValue(), null);
817 jPanelFvImageOpts
.add(getJScrollPane(), null);
818 jPanelFvImageOpts
.add(getJPanelFvImageOptsButtonGroup(), null);
825 return jPanelFvImageOpts
;
830 * This method initializes jButton4
832 * @return javax.swing.JButton
834 private JButton
getJButtonAddFvImage() {
835 if (jButtonAddFvImage
== null) {
836 jButtonAddFvImage
= new JButton();
837 jButtonAddFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
838 jButtonAddFvImage
.setText("New FV Attributes");
839 jButtonAddFvImage
.addActionListener(new AbstractAction() {
843 private static final long serialVersionUID
= 1L;
845 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
847 // String imageName = " ";
848 // for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){
849 // imageName += (String)jTableFvImageNames.getValueAt(i, 0);
852 // imageName = imageName.trim();
854 // LinkedHashMap<String, String> m = null;
855 // m = new LinkedHashMap<String, String>();
856 // getOptionNameValue(m);
857 // ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);
858 // docConsole.setSaved(false);
859 fvImageNameTableModel
.setRowCount(0);
860 fvOptionTableModel
.setRowCount(0);
861 Object
[] row
= {"", jComboBoxFvParaType
.getSelectedItem()};
862 fvImageParaTableModel
.addRow(row
);
863 jTableFvInfo
.changeSelection(jTableFvInfo
.getRowCount() - 1, 0, false, false);
867 return jButtonAddFvImage
;
872 * This method initializes jScrollPane3
874 * @return javax.swing.JScrollPane
876 private JScrollPane
getJScrollPaneFvInfo() {
877 if (jScrollPaneFvInfo
== null) {
878 jScrollPaneFvInfo
= new JScrollPane();
879 jScrollPaneFvInfo
.setPreferredSize(new java
.awt
.Dimension(480,150));
880 jScrollPaneFvInfo
.setViewportView(getJTableFvInfo());
882 return jScrollPaneFvInfo
;
887 * This method initializes jTable2
889 * @return javax.swing.JTable
891 private JTable
getJTableFvInfo() {
892 if (jTableFvInfo
== null) {
893 fvImageParaTableModel
= new ImageParaTableModel();
894 jTableFvInfo
= new JTable(fvImageParaTableModel
);
895 fvImageParaTableModel
.addColumn("FvImageNames");
896 fvImageParaTableModel
.addColumn("Type");
898 jTableFvInfo
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
899 jTableFvInfo
.setRowHeight(20);
900 jTableFvInfo
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
901 public void valueChanged(ListSelectionEvent e
) {
902 if (e
.getValueIsAdjusting()){
905 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
906 if (lsm
.isSelectionEmpty()) {
910 int selectedRow
= lsm
.getMinSelectionIndex();
911 String fvNameList
= fvImageParaTableModel
.getValueAt(selectedRow
, 0)+"";
912 String type
= fvImageParaTableModel
.getValueAt(selectedRow
, 1)+"";
913 jComboBoxFvParaType
.setSelectedItem(type
);
914 String
[] fvNames
= fvNameList
.split(" ");
915 fvImageNameTableModel
.setRowCount(0);
916 fvOptionTableModel
.setRowCount(0);
917 for (int i
= 0; i
< fvNames
.length
; ++i
) {
918 String
[] row
= { fvNames
[i
] };
919 if (row
[0].length() > 0) {
920 fvImageNameTableModel
.addRow(row
);
924 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
925 if (fvImagePos
< 0) {
928 LinkedHashMap
<String
, String
> optionMap
= new LinkedHashMap
<String
, String
>();
929 ffc
.getFvImagesFvImageOptions(fvImagePos
, optionMap
);
930 if (optionMap
.size() > 0){
931 Set
<String
> key
= optionMap
.keySet();
932 Iterator
<String
> i
= key
.iterator();
933 while (i
.hasNext()) {
934 String k
= (String
)i
.next();
935 String
[] row
= {k
, optionMap
.get(k
)};
936 fvOptionTableModel
.addRow(row
);
950 * This method initializes jButton6
952 * @return javax.swing.JButton
954 private JButton
getJButtonDelFvImage() {
955 if (jButtonDelFvImage
== null) {
956 jButtonDelFvImage
= new JButton();
957 jButtonDelFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
958 jButtonDelFvImage
.setText("Delete FV Attributes");
959 jButtonDelFvImage
.addActionListener(new AbstractAction() {
963 private static final long serialVersionUID
= 1L;
965 public void actionPerformed(ActionEvent arg0
) {
966 // TODO Auto-generated method stub
967 if (jTableFvInfo
.getSelectedRow() >= 0 ) {
968 String fvNameList
= fvImageParaTableModel
.getValueAt(jTableFvInfo
.getSelectedRow(), 0)+"";
969 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, jComboBoxFvParaType
.getSelectedItem()+"");
971 ffc
.removeFvImagesFvImage(fvImagePos
);
972 fvImageParaTableModel
.removeRow(jTableFvInfo
.getSelectedRow());
973 docConsole
.setSaved(false);
975 fvImageNameTableModel
.setRowCount(0);
976 fvOptionTableModel
.setRowCount(0);
982 return jButtonDelFvImage
;
987 * This method initializes jPanel6
989 * @return javax.swing.JPanel
991 private JPanel
getJPanelFvImagePara() {
992 if (jPanelFvImagePara
== null) {
993 FlowLayout flowLayout6
= new FlowLayout();
994 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
995 StarLabel starLabel
= new StarLabel();
996 starLabel
.setVisible(false);
997 jPanelFvImagePara
= new JPanel();
998 jPanelFvImagePara
.setLayout(flowLayout6
);
999 jPanelFvImagePara
.setPreferredSize(new java
.awt
.Dimension(450,140));
1000 jPanelFvImagePara
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
1001 jPanelFvImagePara
.add(new StarLabel(), null);
1002 jPanelFvImagePara
.add(jLabelFvImageNames
, null);
1003 jPanelFvImagePara
.add(jLabelFvParaName
, null);
1004 jPanelFvImagePara
.add(getJTextFieldFvParaName(), null);
1005 jPanelFvImagePara
.add(getJScrollPaneFvImageNames(), null);
1006 jPanelFvImagePara
.add(getJPanelBgFvName(), null);
1007 jPanelFvImagePara
.add(jLabelFvParaType
, null);
1008 jPanelFvImagePara
.add(getJComboBoxFvParaType(), null);
1010 return jPanelFvImagePara
;
1014 * This method initializes jPanel7
1016 * @return javax.swing.JPanel
1018 private JPanel
getJPanelFdf() {
1019 if (jPanelFdf
== null) {
1020 jPanelFdf
= new JPanel();
1021 jPanelFdf
.setLayout(new BorderLayout());
1023 jPanelFdf
.add(getJPanelFdfN(), java
.awt
.BorderLayout
.NORTH
);
1024 jPanelFdf
.add(getJPanelFdfS(), java
.awt
.BorderLayout
.SOUTH
);
1025 jPanelFdf
.add(getJSplitPaneFdfC(), java
.awt
.BorderLayout
.CENTER
);
1026 jPanelFdf
.addComponentListener(new ComponentAdapter(){
1027 public void componentShown(ComponentEvent e
) {
1028 // if (ffc.getFlashDefinitionFile() != null) {
1029 // jTextFieldFdf.setText(ffc.getFlashDefinitionFile());
1030 // initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText());
1034 public void componentHidden(ComponentEvent e
) {
1035 if (jCheckBoxFdf
.isSelected()) {
1036 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1045 * This method initializes jCheckBox
1047 * @return javax.swing.JCheckBox
1049 private JCheckBox
getJCheckBoxFdf() {
1050 if (jCheckBoxFdf
== null) {
1051 jCheckBoxFdf
= new JCheckBox();
1052 jCheckBoxFdf
.setText("Flash Definition File");
1053 jCheckBoxFdf
.addItemListener(new ItemListener() {
1055 public void itemStateChanged(ItemEvent arg0
) {
1056 // TODO Auto-generated method stub
1057 if (jCheckBoxFdf
.isSelected()){
1058 jTextFieldFdf
.setEnabled(true);
1059 jButtonFdfBrowse
.setEnabled(true);
1063 jTextFieldFdf
.setEnabled(false);
1064 jButtonFdfBrowse
.setEnabled(false);
1069 return jCheckBoxFdf
;
1073 * This method initializes jTextField3
1075 * @return javax.swing.JTextField
1077 private JTextField
getJTextFieldFdf() {
1078 if (jTextFieldFdf
== null) {
1079 jTextFieldFdf
= new JTextField();
1080 jTextFieldFdf
.setEnabled(false);
1081 jTextFieldFdf
.setEditable(false);
1082 jTextFieldFdf
.setPreferredSize(new Dimension(300, 20));
1083 jTextFieldFdf
.addFocusListener(new java
.awt
.event
.FocusAdapter() {
1084 public void focusLost(java
.awt
.event
.FocusEvent e
) {
1085 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1089 return jTextFieldFdf
;
1093 * This method initializes jButton5
1095 * @return javax.swing.JButton
1097 private JButton
getJButtonFdfBrowse() {
1098 if (jButtonFdfBrowse
== null) {
1099 jButtonFdfBrowse
= new JButton();
1100 jButtonFdfBrowse
.setEnabled(false);
1101 jButtonFdfBrowse
.setText("Browse");
1102 jButtonFdfBrowse
.setPreferredSize(new Dimension(78, 20));
1103 jButtonFdfBrowse
.addActionListener(new AbstractAction(){
1107 private static final long serialVersionUID
= 1L;
1109 public void actionPerformed(ActionEvent e
) {
1110 // TODO Auto-generated method stub
1111 String wsDir
= System
.getenv("WORKSPACE");
1112 JFileChooser chooser
= new JFileChooser(wsDir
);
1113 chooser
.setMultiSelectionEnabled(false);
1114 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1115 int retval
= chooser
.showOpenDialog(frame
);
1116 if (retval
== JFileChooser
.APPROVE_OPTION
) {
1118 File theFile
= chooser
.getSelectedFile();
1119 String filePath
= theFile
.getPath();
1120 if (!filePath
.startsWith(wsDir
)) {
1121 JOptionPane
.showMessageDialog(frame
, "You can only select files in current WORKSPACE.");
1124 jTextFieldFdf
.setText(filePath
.substring(wsDir
.length() + 1).replace('\\', '/'));
1125 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1126 docConsole
.setSaved(false);
1127 initFvInFdfTable(filePath
);
1133 return jButtonFdfBrowse
;
1136 private void initFvAttributes () {
1137 if (ffc
.getFvImagesFvImageCount("Attributes") == 0 && ffc
.getFvImagesFvImageCount("Components") == 0) {
1140 String
[][] saa
= new String
[ffc
.getFvImagesFvImageCount("Attributes")][2];
1141 ffc
.getFvImagesFvImages(saa
, "Attributes");
1144 while (i
< saa
.length
) {
1145 fvImageParaTableModel
.addRow(saa
[i
]);
1149 saa
= new String
[ffc
.getFvImagesFvImageCount("Components")][2];
1150 ffc
.getFvImagesFvImages(saa
, "Components");
1152 while (i
< saa
.length
) {
1153 fvImageParaTableModel
.addRow(saa
[i
]);
1157 saa
= new String
[ffc
.getFvImagesNameValueCount()][2];
1158 ffc
.getFvImagesNameValues(saa
);
1159 for (int m
= 0; m
< saa
.length
; ++m
) {
1160 fvPropertyTableModel
.addRow(saa
[m
]);
1164 private void initFvAdditionalTable() {
1165 Vector
<String
> vFvNames
= new Vector
<String
>();
1166 ffc
.getFvImagesFvImageFvImageNames(vFvNames
);
1167 for (int i
= 0; i
< vFvNames
.size(); ++i
) {
1168 String fvName
= vFvNames
.get(i
);
1169 if (fvNameExists(fvName
)) {
1172 fvAdditionalTableModel
.addRow(getBasicFvInfo(fvName
));
1173 addTabForFv(new FvInfoFromFdf(fvName
, "", ""));
1177 private void initFvInFdfTable(String fdfPath
){
1178 Vector
<FvInfoFromFdf
> vFvInfo
= new Vector
<FvInfoFromFdf
>();
1179 getFvInfoFromFdf(fdfPath
, vFvInfo
);
1180 getFlashInfoFromFdf (fdfPath
);
1181 if (!erasePolarity
.equals("1") && !erasePolarity
.equals("0")) {
1182 JOptionPane
.showMessageDialog(frame
, "FDF file does NOT contain valid Erase Polarity.");
1185 ffc
.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity
);
1188 // BugBug: assume all blocks have same size;
1190 String blkSize
= defaultBlkSize
;
1191 if (vBlockSize
.size() > 0) {
1192 blkSize
= vBlockSize
.get(0);
1193 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1194 JOptionPane
.showMessageDialog(frame
, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");
1195 blkSize
= defaultBlkSize
;
1198 determinedFvBlockSize
= blkSize
;
1200 getFvInFdfTableModel().setRowCount(0);
1201 for (int j
= 0; j
< vFvInfo
.size(); ++j
) {
1202 FvInfoFromFdf fvInfo
= vFvInfo
.get(j
);
1203 String
[] row
= {fvInfo
.getFvName(), fvInfo
.getSize(), fvInfo
.getEfiFileName()};
1204 // if FV addtional table contains the same FV from fdf file, remove that row.
1205 for (int k
= 0; k
< jTableFvAdditional
.getRowCount(); ++k
) {
1206 if (fvAdditionalTableModel
.getValueAt(k
, 0).equals(row
[0])) {
1207 fvAdditionalTableModel
.removeRow(k
);
1210 getFvInFdfTableModel().addRow(row
);
1212 int blockSize
= Integer
.decode(blkSize
);
1213 int fvSize
= Integer
.decode(row
[1]);
1214 int numBlocks
= fvSize
/blockSize
;
1215 HashMap
<String
, String
> mOptions
= new HashMap
<String
, String
>();
1216 // if no options for this FV before, generate a new options entry for this FV.
1217 if (ffc
.getFvImagesFvImageWithName(row
[0], "Options") == null) {
1219 mOptions
.put("EFI_BLOCK_SIZE", blkSize
);
1220 mOptions
.put("EFI_NUM_BLOCKS", numBlocks
+"");
1221 mOptions
.put("EFI_FILE_NAME", row
[2]);
1222 ffc
.genFvImagesFvImage(new String
[]{row
[0]}, "Options", mOptions
);
1226 ffc
.getFvImagesFvImageOptions(row
[0], mOptions
);
1227 if (mOptions
.get("EFI_BLOCK_SIZE") == null || !mOptions
.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize
)) {
1228 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_BLOCK_SIZE", blkSize
);
1231 if (mOptions
.get("EFI_NUM_BLOCKS") == null || Integer
.decode(mOptions
.get("EFI_NUM_BLOCKS")) != numBlocks
) {
1232 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_NUM_BLOCKS", numBlocks
+ "");
1235 if (mOptions
.get("EFI_FILE_NAME") == null || !mOptions
.get("EFI_FILE_NAME").equals(row
[2])) {
1236 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_FILE_NAME", row
[2]);
1242 catch (NumberFormatException e
){
1243 JOptionPane
.showMessageDialog(frame
, e
.getMessage());
1247 for (int k
= 0; k
< vFvInfo
.size(); ++k
) {
1248 FvInfoFromFdf fvInfo
= vFvInfo
.get(k
);
1249 addTabForFv(fvInfo
);
1254 private void addTabForFv (FvInfoFromFdf fvInfo
) {
1255 String fvName
= fvInfo
.getFvName();
1256 String outputFile
= fvInfo
.getEfiFileName();
1257 int index
= jTabbedPane
.indexOfTab(fvName
);
1258 if (index
>= startIndexOfDynamicTab
) {
1261 jTabbedPane
.addTab(fvName
, null, new ModuleOrderPane(fvName
, outputFile
), null);
1264 * This method initializes jTextField4
1266 * @return javax.swing.JTextField
1268 private JTextField
getJTextFieldFvImageOptName() {
1269 if (jTextFieldFvImageOptName
== null) {
1270 jTextFieldFvImageOptName
= new JTextField();
1271 jTextFieldFvImageOptName
.setEnabled(true);
1272 jTextFieldFvImageOptName
.setPreferredSize(new Dimension(100, 20));
1274 return jTextFieldFvImageOptName
;
1278 * This method initializes jTextField5
1280 * @return javax.swing.JTextField
1282 private JTextField
getJTextFieldFvImageOptValue() {
1283 if (jTextFieldFvImageOptValue
== null) {
1284 jTextFieldFvImageOptValue
= new JTextField();
1285 jTextFieldFvImageOptValue
.setEnabled(true);
1286 jTextFieldFvImageOptValue
.setPreferredSize(new Dimension(100, 20));
1288 return jTextFieldFvImageOptValue
;
1292 * This method initializes jPanel8
1294 * @return javax.swing.JPanel
1296 private JPanel
getJPanelFvImageOptsButtonGroup() {
1297 if (jPanelFvImageOptsButtonGroup
== null) {
1298 jPanelFvImageOptsButtonGroup
= new JPanel();
1299 jPanelFvImageOptsButtonGroup
.setPreferredSize(new Dimension(80, 55));
1300 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptAdd(), null);
1301 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptDel(), null);
1303 return jPanelFvImageOptsButtonGroup
;
1307 * This method initializes jButton7
1309 * @return javax.swing.JButton
1311 private JButton
getJButtonFvImageOptAdd() {
1312 if (jButtonFvImageOptAdd
== null) {
1313 jButtonFvImageOptAdd
= new JButton();
1314 jButtonFvImageOptAdd
.setEnabled(true);
1315 jButtonFvImageOptAdd
.setText("Add");
1316 jButtonFvImageOptAdd
.setPreferredSize(new Dimension(80, 20));
1317 jButtonFvImageOptAdd
.addActionListener(new AbstractAction() {
1321 private static final long serialVersionUID
= 1L;
1323 public void actionPerformed(ActionEvent e
) {
1324 if (jTextFieldFvImageOptName
.getText().length() > 0 && jTextFieldFvImageOptValue
.getText().length() > 0){
1325 int selectedRow
= jTableFvInfo
.getSelectedRow();
1326 if (selectedRow
< 0) {
1330 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1331 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1332 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1333 String
[] row
= {jTextFieldFvImageOptName
.getText(), jTextFieldFvImageOptValue
.getText()};
1335 if (fvImagePos
< 0) {
1339 //append options to FvImage.
1340 ffc
.setFvImagesFvImageNameValue(fvImagePos
, row
[0], row
[1]);
1342 docConsole
.setSaved(false);
1343 fvOptionTableModel
.addRow(row
);
1344 jTableFvImageOpts
.changeSelection(jTableFvImageOpts
.getRowCount() - 1, 0, false, false);
1349 return jButtonFvImageOptAdd
;
1353 * This method initializes jButton8
1355 * @return javax.swing.JButton
1357 private JButton
getJButtonFvImageOptDel() {
1358 if (jButtonFvImageOptDel
== null) {
1359 jButtonFvImageOptDel
= new JButton();
1360 jButtonFvImageOptDel
.setEnabled(true);
1361 jButtonFvImageOptDel
.setText("Delete");
1362 jButtonFvImageOptDel
.setPreferredSize(new Dimension(80, 20));
1363 jButtonFvImageOptDel
.addActionListener(new AbstractAction() {
1367 private static final long serialVersionUID
= 1L;
1369 public void actionPerformed(ActionEvent e
) {
1370 if (jTableFvImageOpts
.getSelectedRow() >= 0){
1371 int selectedRow
= jTableFvInfo
.getSelectedRow();
1372 if (selectedRow
< 0) {
1376 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1377 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1378 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1379 if (fvImagePos
< 0) {
1383 String optName
= fvOptionTableModel
.getValueAt(jTableFvImageOpts
.getSelectedRow(), 0)+"";
1384 ffc
.removeFvImageNameValue(fvImagePos
, optName
);
1385 docConsole
.setSaved(false);
1386 fvOptionTableModel
.removeRow(jTableFvImageOpts
.getSelectedRow());
1391 return jButtonFvImageOptDel
;
1395 * This method initializes jScrollPane
1397 * @return javax.swing.JScrollPane
1399 private JScrollPane
getJScrollPane() {
1400 if (jScrollPane
== null) {
1401 jScrollPane
= new JScrollPane();
1402 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(350,100));
1403 jScrollPane
.setViewportView(getJTableFvImageOpts());
1409 * This method initializes jTable3
1411 * @return javax.swing.JTable
1413 private JTable
getJTableFvImageOpts() {
1414 if (jTableFvImageOpts
== null) {
1415 fvOptionTableModel
= new IDefaultTableModel();
1416 fvOptionTableModel
.addColumn("Name");
1417 fvOptionTableModel
.addColumn("Value");
1418 jTableFvImageOpts
= new JTable(fvOptionTableModel
);
1420 jTableFvImageOpts
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
1421 jTableFvImageOpts
.setRowHeight(20);
1424 return jTableFvImageOpts
;
1428 * This method initializes jButton9
1430 * @return javax.swing.JButton
1432 private JButton
getJButtonUpdateFvImage() {
1433 if (jButtonUpdateFvImage
== null) {
1434 jButtonUpdateFvImage
= new JButton();
1435 jButtonUpdateFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
1436 jButtonUpdateFvImage
.setActionCommand("Update");
1437 jButtonUpdateFvImage
.setText("Update FV Attributes");
1438 jButtonUpdateFvImage
.setVisible(false);
1439 jButtonUpdateFvImage
.addActionListener(new java
.awt
.event
.ActionListener() {
1440 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1441 int row
= jTableFvInfo
.getSelectedRow();
1442 if (jTableFvInfo
.isEditing()) {
1443 jTableFvInfo
.getCellEditor().stopCellEditing();
1445 if (jTableFvImageOpts
.isEditing()) {
1446 jTableFvImageOpts
.getCellEditor().stopCellEditing();
1449 //ToDo Check data validity before update
1450 String name
= fvImageParaTableModel
.getValueAt(row
, 0) + "";
1451 String type
= fvImageParaTableModel
.getValueAt(row
, 1) + "";
1453 LinkedHashMap
<String
, String
> lhm
= new LinkedHashMap
<String
, String
>();
1454 getOptionNameValue(lhm
);
1456 docConsole
.setSaved(false);
1457 ffc
.updateFvImagesFvImage(row
, name
.split(" "), type
, lhm
);
1462 return jButtonUpdateFvImage
;
1466 * This method initializes jPanelFdfN
1468 * @return javax.swing.JPanel
1470 private JPanel
getJPanelFdfN() {
1471 if (jPanelFdfN
== null) {
1472 jPanelFdfN
= new JPanel();
1473 jPanelFdfN
.add(getJCheckBoxFdf(), null);
1474 jPanelFdfN
.add(getJTextFieldFdf(), null);
1475 jPanelFdfN
.add(getJButtonFdfBrowse(), null);
1481 * This method initializes jPanelFdfS
1483 * @return javax.swing.JPanel
1485 private JPanel
getJPanelFdfS() {
1486 if (jPanelFdfS
== null) {
1487 FlowLayout flowLayout4
= new FlowLayout();
1488 flowLayout4
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1489 jPanelFdfS
= new JPanel();
1490 jPanelFdfS
.setLayout(flowLayout4
);
1491 jPanelFdfS
.add(getJButtonAddFv(), null);
1492 jPanelFdfS
.add(getJButtonDelFv(), null);
1493 jPanelFdfS
.add(getJButtonAddFvOptions(), null);
1499 * This method initializes jSplitPaneFdfC
1501 * @return javax.swing.JSplitPane
1503 private JSplitPane
getJSplitPaneFdfC() {
1504 if (jSplitPaneFdfC
== null) {
1505 jSplitPaneFdfC
= new JSplitPane();
1506 jSplitPaneFdfC
.setOrientation(javax
.swing
.JSplitPane
.VERTICAL_SPLIT
);
1507 jSplitPaneFdfC
.setDividerSize(5);
1508 jSplitPaneFdfC
.setTopComponent(getJPanelFdfCTop());
1509 jSplitPaneFdfC
.setBottomComponent(getJPanelFdfCBottom());
1510 jSplitPaneFdfC
.setDividerLocation(280);
1512 return jSplitPaneFdfC
;
1516 * This method initializes jPanelFdfCTop
1518 * @return javax.swing.JPanel
1520 private JPanel
getJPanelFdfCTop() {
1521 if (jPanelFdfCTop
== null) {
1522 jPanelFdfCTop
= new JPanel();
1523 jPanelFdfCTop
.setLayout(new BorderLayout());
1524 jPanelFdfCTop
.add(getJPanelFdfCTopN(), java
.awt
.BorderLayout
.NORTH
);
1525 jPanelFdfCTop
.add(getJPanelFdfCTopS(), java
.awt
.BorderLayout
.SOUTH
);
1526 jPanelFdfCTop
.add(getJPanelFdfCTopC(), java
.awt
.BorderLayout
.CENTER
);
1528 return jPanelFdfCTop
;
1532 * This method initializes jPanelFdfCBottom
1534 * @return javax.swing.JPanel
1536 private JPanel
getJPanelFdfCBottom() {
1537 if (jPanelFdfCBottom
== null) {
1538 jPanelFdfCBottom
= new JPanel();
1539 jPanelFdfCBottom
.setLayout(new BorderLayout());
1540 jPanelFdfCBottom
.add(getJPanelFdfCBottomN(), java
.awt
.BorderLayout
.NORTH
);
1541 jPanelFdfCBottom
.add(getJPanelFdfCBottomC(), java
.awt
.BorderLayout
.CENTER
);
1543 return jPanelFdfCBottom
;
1547 * This method initializes jPanelFdfCTopN
1549 * @return javax.swing.JPanel
1551 private JPanel
getJPanelFdfCTopN() {
1552 if (jPanelFdfCTopN
== null) {
1553 jLabelFvInFdf
= new JLabel();
1554 jLabelFvInFdf
.setText("FVs in Flash Definition File");
1555 jPanelFdfCTopN
= new JPanel();
1556 jPanelFdfCTopN
.add(jLabelFvInFdf
, null);
1558 return jPanelFdfCTopN
;
1562 * This method initializes jPanelFdfCTopS
1564 * @return javax.swing.JPanel
1566 private JPanel
getJPanelFdfCTopS() {
1567 if (jPanelFdfCTopS
== null) {
1568 FlowLayout flowLayout1
= new FlowLayout();
1569 flowLayout1
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1570 jPanelFdfCTopS
= new JPanel();
1571 jPanelFdfCTopS
.setLayout(flowLayout1
);
1572 jPanelFdfCTopS
.add(getJButtonFvInFdfOptions(), null);
1574 return jPanelFdfCTopS
;
1578 * This method initializes jPanelFdfCTopC
1580 * @return javax.swing.JPanel
1582 private JPanel
getJPanelFdfCTopC() {
1583 if (jPanelFdfCTopC
== null) {
1584 jPanelFdfCTopC
= new JPanel();
1585 jPanelFdfCTopC
.add(getJScrollPaneFvInFdf(), null);
1587 return jPanelFdfCTopC
;
1591 * This method initializes jPanelFdfCBottomN
1593 * @return javax.swing.JPanel
1595 private JPanel
getJPanelFdfCBottomN() {
1596 if (jPanelFdfCBottomN
== null) {
1597 jLabelFvAdditional
= new JLabel();
1598 jLabelFvAdditional
.setText("Additional FVs");
1599 jPanelFdfCBottomN
= new JPanel();
1600 jPanelFdfCBottomN
.add(jLabelFvAdditional
, null);
1602 return jPanelFdfCBottomN
;
1606 * This method initializes jPanelFdfCBottomC
1608 * @return javax.swing.JPanel
1610 private JPanel
getJPanelFdfCBottomC() {
1611 if (jPanelFdfCBottomC
== null) {
1612 jPanelFdfCBottomC
= new JPanel();
1613 jPanelFdfCBottomC
.add(getJScrollPaneFvAdditional(), null);
1615 return jPanelFdfCBottomC
;
1619 * This method initializes jScrollPaneFvInFdf
1621 * @return javax.swing.JScrollPane
1623 private JScrollPane
getJScrollPaneFvInFdf() {
1624 if (jScrollPaneFvInFdf
== null) {
1625 jScrollPaneFvInFdf
= new JScrollPane();
1626 jScrollPaneFvInFdf
.setPreferredSize(new java
.awt
.Dimension(653,200));
1627 jScrollPaneFvInFdf
.setViewportView(getJTableFvInFdf());
1629 return jScrollPaneFvInFdf
;
1633 * This method initializes jTableFvInFdf
1635 * @return javax.swing.JTable
1637 private JTable
getJTableFvInFdf() {
1638 if (jTableFvInFdf
== null) {
1639 jTableFvInFdf
= new JTable();
1640 jTableFvInFdf
.setRowHeight(20);
1641 jTableFvInFdf
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1642 jTableFvInFdf
.setModel(getFvInFdfTableModel());
1644 return jTableFvInFdf
;
1648 * This method initializes fvInFdfTableModel
1650 * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel
1652 private IDefaultTableModel
getFvInFdfTableModel() {
1653 if (fvInFdfTableModel
== null) {
1654 fvInFdfTableModel
= new IDefaultTableModel();
1655 fvInFdfTableModel
.addColumn("FV Name");
1656 fvInFdfTableModel
.addColumn("Size");
1657 fvInFdfTableModel
.addColumn("Corresponding File Name");
1659 return fvInFdfTableModel
;
1663 * This method initializes jButtonFvInFdfOptions
1665 * @return javax.swing.JButton
1667 private JButton
getJButtonFvInFdfOptions() {
1668 if (jButtonFvInFdfOptions
== null) {
1669 jButtonFvInFdfOptions
= new JButton();
1670 jButtonFvInFdfOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1671 jButtonFvInFdfOptions
.setEnabled(true);
1672 jButtonFvInFdfOptions
.setText("Options");
1673 jButtonFvInFdfOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1674 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1675 int selectedRow
= jTableFvInFdf
.getSelectedRow();
1676 if (selectedRow
< 0) {
1679 String fvName
= jTableFvInFdf
.getValueAt(selectedRow
, 0)+"";
1680 if (fvName
.length() == 0) {
1683 DefaultTableModel dtm
= getFvInFdfOptTableModel();
1684 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1688 return jButtonFvInFdfOptions
;
1691 private DefaultTableModel
getFvInFdfOptTableModel() {
1692 if (fvInFdfOptTableModel
== null) {
1693 fvInFdfOptTableModel
= new FvOptsTableModel();
1694 fvInFdfOptTableModel
.addColumn("Name");
1695 fvInFdfOptTableModel
.addColumn("Value");
1696 Vector
<Object
> v
= new Vector
<Object
>();
1697 v
.add("EFI_BLOCK_SIZE");
1698 v
.add("EFI_NUM_BLOCKS");
1699 v
.add("EFI_FILE_NAME");
1700 fvInFdfOptTableModel
.setVKeyWords(v
);
1701 fvInFdfOptTableModel
.setVNonEditableName(v
);
1703 return fvInFdfOptTableModel
;
1706 private DefaultTableModel
getFvAdditionalOptTableModel() {
1707 if (fvAdditionalOptTableModel
== null) {
1708 fvAdditionalOptTableModel
= new FvOptsTableModel();
1709 fvAdditionalOptTableModel
.addColumn("Name");
1710 fvAdditionalOptTableModel
.addColumn("Value");
1711 Vector
<Object
> v
= new Vector
<Object
>();
1712 v
.add("EFI_BLOCK_SIZE");
1713 v
.add("EFI_NUM_BLOCKS");
1714 v
.add("EFI_FILE_NAME");
1715 fvAdditionalOptTableModel
.setVNonEditableName(v
);
1717 return fvAdditionalOptTableModel
;
1721 * This method initializes jScrollPaneFvAdditional
1723 * @return javax.swing.JScrollPane
1725 private JScrollPane
getJScrollPaneFvAdditional() {
1726 if (jScrollPaneFvAdditional
== null) {
1727 jScrollPaneFvAdditional
= new JScrollPane();
1728 jScrollPaneFvAdditional
.setPreferredSize(new java
.awt
.Dimension(653,200));
1729 jScrollPaneFvAdditional
.setViewportView(getJTableFvAdditional());
1731 return jScrollPaneFvAdditional
;
1735 * This method initializes jTableFvAdditional
1737 * @return javax.swing.JTable
1739 private JTable
getJTableFvAdditional() {
1740 if (jTableFvAdditional
== null) {
1741 jTableFvAdditional
= new JTable();
1742 jTableFvAdditional
.setRowHeight(20);
1743 jTableFvAdditional
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1744 jTableFvAdditional
.setModel(getFvAdditionalTableModel());
1746 jTableFvAdditional
.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
1747 public void valueChanged(ListSelectionEvent e
) {
1748 if (e
.getValueIsAdjusting()) {
1751 ListSelectionModel lsm
= (ListSelectionModel
) e
.getSource();
1752 if (lsm
.isSelectionEmpty()) {
1755 selectedRowInFvAdditionalTable
= lsm
.getMinSelectionIndex();
1756 oldFvName
= jTableFvAdditional
.getValueAt(selectedRowInFvAdditionalTable
, 0)+"";
1761 jTableFvAdditional
.getModel().addTableModelListener(new TableModelListener() {
1762 public void tableChanged(TableModelEvent arg0
) {
1763 // TODO Auto-generated method stub
1764 int row
= arg0
.getFirstRow();
1765 int col
= arg0
.getColumn();
1766 TableModel m
= (TableModel
) arg0
.getSource();
1768 if (arg0
.getType() == TableModelEvent
.UPDATE
) {
1770 String newFvName
= m
.getValueAt(row
, 0) + "";
1771 if (newFvName
.equals(oldFvName
)) {
1774 if (fvNameExists(newFvName
)) {
1775 JOptionPane
.showMessageDialog(frame
, "This FV already exists. Please choose another FV name.");
1776 m
.setValueAt(oldFvName
, row
, 0);
1780 tabIndexForFv
= jTabbedPane
.indexOfTab(oldFvName
);
1781 if (tabIndexForFv
>= startIndexOfDynamicTab
) {
1782 jTabbedPane
.setTitleAt(tabIndexForFv
, newFvName
);
1783 // change FvName in UserExtensions
1784 ffc
.updateBuildOptionsUserExtensions(oldFvName
, newFvName
);
1785 // change FvBinding in ModuleSA
1786 ffc
.appendFvBindingFor(oldFvName
, newFvName
);
1787 ffc
.removeFvBindingAll(oldFvName
);
1788 // change FvImageNames in Flash
1789 ffc
.updateFvImageNameAll(oldFvName
, newFvName
);
1792 jTabbedPane
.addTab(newFvName
, new ModuleOrderPane(newFvName
, ""));
1793 // Add FvImageNames in Flash
1794 String
[] fvNames
= {newFvName
};
1795 ffc
.addFvImageFvImageNames(fvNames
);
1797 docConsole
.setSaved(false);
1798 oldFvName
= newFvName
;
1801 if (col
== 1 && !sizeFromOptionDlg
) {
1802 String fvSize
= m
.getValueAt(row
, col
) + "";
1803 if (!DataValidation
.isInt(fvSize
) && !DataValidation
.isHexDoubleWordDataType(fvSize
)) {
1804 JOptionPane
.showMessageDialog(frame
, "FV size should be Integer or Hex format.");
1807 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
1808 ffc
.getFvImagesFvImageOptions(oldFvName
, mFvOpts
);
1809 String blkSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
1810 if (blkSize
== null) {
1811 if (determinedFvBlockSize
!= null) {
1812 blkSize
= determinedFvBlockSize
;
1815 blkSize
= defaultBlkSize
;
1817 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", blkSize
);
1818 int fs
= Integer
.decode(fvSize
);
1819 int bs
= Integer
.decode(blkSize
);
1820 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"");
1821 docConsole
.setSaved(false);
1824 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1825 int retVal
= JOptionPane
.showConfirmDialog(frame
, "Confirm", "FPD file contains error block size format. Would you like to replace it with a default value?", JOptionPane
.YES_NO_OPTION
);
1826 if (retVal
== JOptionPane
.YES_OPTION
) {
1827 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", defaultBlkSize
);
1828 int fs
= Integer
.decode(fvSize
);
1829 int bs
= Integer
.decode(defaultBlkSize
);
1830 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"");
1831 docConsole
.setSaved(false);
1839 int fs
= Integer
.decode(fvSize
);
1840 int bs
= Integer
.decode(blkSize
);
1841 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"");
1842 docConsole
.setSaved(false);
1846 if (col
== 2 && !fileFromOptionDlg
) {
1847 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_FILE_NAME", m
.getValueAt(row
, col
)+"");
1848 docConsole
.setSaved(false);
1855 return jTableFvAdditional
;
1858 private boolean fvNameExistsInFvInFdfTable (String fvName
) {
1859 for (int i
= 0; i
< jTableFvInFdf
.getRowCount(); ++i
) {
1860 if (fvInFdfTableModel
.getValueAt(i
, 0).equals(fvName
)) {
1867 private boolean fvNameExists (String fvName
) {
1868 if (fvNameExistsInFvInFdfTable(fvName
)) {
1872 for (int j
= 0; j
< jTableFvAdditional
.getRowCount(); ++j
) {
1873 if (fvAdditionalTableModel
.getValueAt(j
, 0).equals(fvName
) && j
!= selectedRowInFvAdditionalTable
) {
1881 * This method initializes fvAdditionalTableModel
1883 * @return javax.swing.table.DefaultTableModel
1885 private DefaultTableModel
getFvAdditionalTableModel() {
1886 if (fvAdditionalTableModel
== null) {
1887 fvAdditionalTableModel
= new DefaultTableModel();
1888 fvAdditionalTableModel
.addColumn("FV Name");
1889 fvAdditionalTableModel
.addColumn("Size");
1890 fvAdditionalTableModel
.addColumn("Corresponding File Name");
1892 return fvAdditionalTableModel
;
1896 * This method initializes jButtonAddFv
1898 * @return javax.swing.JButton
1900 private JButton
getJButtonAddFv() {
1901 if (jButtonAddFv
== null) {
1902 jButtonAddFv
= new JButton();
1903 jButtonAddFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1904 jButtonAddFv
.setEnabled(true);
1905 jButtonAddFv
.setText("New");
1906 jButtonAddFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1907 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1908 if (jTableFvAdditional
.isEditing()) {
1909 jTableFvAdditional
.getCellEditor().stopCellEditing();
1911 String
[] row
= {"", "", ""};
1912 fvAdditionalTableModel
.addRow(row
);
1916 return jButtonAddFv
;
1920 * This method initializes jButtonDelFv
1922 * @return javax.swing.JButton
1924 private JButton
getJButtonDelFv() {
1925 if (jButtonDelFv
== null) {
1926 jButtonDelFv
= new JButton();
1927 jButtonDelFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1928 jButtonDelFv
.setEnabled(true);
1929 jButtonDelFv
.setText("Delete");
1930 jButtonDelFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1931 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1932 //delete row in FvAdditional table.
1933 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1934 if (selectedRow
< 0) {
1937 String fvName
= fvAdditionalTableModel
.getValueAt(selectedRow
, 0) + "";
1938 fvAdditionalTableModel
.removeRow(selectedRow
);
1940 //delete tab with selected FV name.
1942 jTabbedPane
.removeTabAt(jTabbedPane
.indexOfTab(fvName
));
1943 //delete FV Name from FvImages element.
1944 ffc
.updateFvImageNameAll(fvName
, null);
1945 //delete FvBinding from ModuleSA.
1946 ffc
.removeFvBindingAll(fvName
);
1947 docConsole
.setSaved(false);
1951 return jButtonDelFv
;
1955 * This method initializes jButtonAddFvOptions
1957 * @return javax.swing.JButton
1959 private JButton
getJButtonAddFvOptions() {
1960 if (jButtonAddFvOptions
== null) {
1961 jButtonAddFvOptions
= new JButton();
1962 jButtonAddFvOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1963 jButtonAddFvOptions
.setEnabled(true);
1964 jButtonAddFvOptions
.setText("Options");
1965 jButtonAddFvOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1966 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1967 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1968 if (selectedRow
< 0) {
1971 String fvName
= jTableFvAdditional
.getValueAt(selectedRow
, 0)+"";
1972 String oldFvSize
= jTableFvAdditional
.getValueAt(selectedRow
, 1)+"";
1973 String oldFileName
= jTableFvAdditional
.getValueAt(selectedRow
, 2)+"";
1974 if (fvName
.length() == 0) {
1977 DefaultTableModel dtm
= getFvAdditionalOptTableModel();
1978 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1980 String
[] updatedFvInfo
= getBasicFvInfo (fvName
);
1981 if (!oldFvSize
.equalsIgnoreCase(updatedFvInfo
[1])) {
1982 sizeFromOptionDlg
= true;
1983 jTableFvAdditional
.setValueAt(updatedFvInfo
[1], selectedRow
, 1);
1984 sizeFromOptionDlg
= false;
1986 if (!oldFileName
.equals(updatedFvInfo
[2])) {
1987 fileFromOptionDlg
= true;
1988 jTableFvAdditional
.setValueAt(updatedFvInfo
[2], selectedRow
, 2);
1989 fileFromOptionDlg
= false;
1994 return jButtonAddFvOptions
;
1997 private String
[] getBasicFvInfo (String fvName
) {
1998 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
1999 ffc
.getFvImagesFvImageOptions(fvName
, mFvOpts
);
2001 String numBlks
= "";
2004 if (mFvOpts
.get("EFI_FILE_NAME") != null) {
2005 fvFile
= mFvOpts
.get("EFI_FILE_NAME");
2007 if (mFvOpts
.get("EFI_BLOCK_SIZE") != null && mFvOpts
.get("EFI_NUM_BLOCKS") != null) {
2008 bSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
2009 numBlks
= mFvOpts
.get("EFI_NUM_BLOCKS");
2010 boolean blockSizeWellFormat
= true;
2011 boolean numOfBlockWellFormat
= true;
2012 if (!DataValidation
.isHexDoubleWordDataType(bSize
) && !DataValidation
.isInt(bSize
)) {
2013 blockSizeWellFormat
= false;
2014 JOptionPane
.showMessageDialog(frame
, fvName
+ " block size bad format.");
2016 if (!DataValidation
.isHexDoubleWordDataType(numBlks
) && !DataValidation
.isInt(numBlks
)) {
2017 numOfBlockWellFormat
= false;
2018 JOptionPane
.showMessageDialog(frame
, fvName
+ " number of blocks bad format.");
2020 if (blockSizeWellFormat
&& numOfBlockWellFormat
) {
2021 int size
= Integer
.decode(bSize
);
2022 int num
= Integer
.decode(numBlks
);
2023 fvSize
= "0x" + Integer
.toHexString(size
*num
);
2027 return new String
[]{fvName
, fvSize
, fvFile
};
2032 * This method initializes jPanelBgFvName
2034 * @return javax.swing.JPanel
2036 private JPanel
getJPanelBgFvName() {
2037 if (jPanelBgFvName
== null) {
2038 jPanelBgFvName
= new JPanel();
2039 jPanelBgFvName
.setPreferredSize(new java
.awt
.Dimension(80,55));
2040 jPanelBgFvName
.add(getJButtonFvNameAdd(), null);
2041 jPanelBgFvName
.add(getJButtonFvNameDel(), null);
2043 return jPanelBgFvName
;
2047 * This method initializes jPanelBgFvImage
2049 * @return javax.swing.JPanel
2051 private JPanel
getJPanelBgFvImage() {
2052 if (jPanelBgFvImage
== null) {
2053 jPanelBgFvImage
= new JPanel();
2054 jPanelBgFvImage
.setPreferredSize(new java
.awt
.Dimension(150,100));
2055 jPanelBgFvImage
.add(getJButtonAddFvImage(), null);
2056 jPanelBgFvImage
.add(getJButtonDelFvImage(), null);
2057 jPanelBgFvImage
.add(getJButtonUpdateFvImage(), null);
2059 return jPanelBgFvImage
;
2063 * This method initializes jPanelW
2065 * @return javax.swing.JPanel
2067 private JPanel
getJPanelW() {
2068 if (jPanelW
== null) {
2069 jPanelW
= new JPanel();
2070 jPanelW
.add(getJPanelBgFvImage(), null);
2078 public static void main(String
[] args
) {
2079 // TODO Auto-generated method stub
2080 new FpdFlash().setVisible(true);
2084 * This method initializes this
2088 private void initialize() {
2089 this.setSize(660, 650);
2090 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
2091 this.setContentPane(getJContentPane());
2092 this.setTitle("FPD Flash Definitions");
2093 this.addInternalFrameListener(new InternalFrameAdapter(){
2094 public void internalFrameDeactivated(InternalFrameEvent e
){
2095 if (jTableFvProp
.isEditing()) {
2096 jTableFvProp
.getCellEditor().stopCellEditing();
2098 if (jTableFvImageNames
.isEditing()) {
2099 jTableFvImageNames
.getCellEditor().stopCellEditing();
2101 if (jTableFvInfo
.isEditing()) {
2102 jTableFvInfo
.getCellEditor().stopCellEditing();
2104 if (jTableFvAdditional
.isEditing()) {
2105 jTableFvAdditional
.getCellEditor().stopCellEditing();
2111 private void init(FpdFileContents ffc
) {
2114 jTextFieldFdf
.setText("");
2115 String fdfFile
= ffc
.getFlashDefinitionFile();
2116 if (fdfFile
!= null && fdfFile
.length() > 0) {
2117 jTextFieldFdf
.setText(fdfFile
);
2118 String fdfPath
= System
.getenv("WORKSPACE") + File
.separator
+ fdfFile
;
2119 initFvInFdfTable(fdfPath
);
2122 initFvAdditionalTable();
2125 private void getOptionNameValue(Map
<String
, String
> m
){
2126 for (int i
= 0; i
< jTableFvImageOpts
.getRowCount(); ++i
) {
2127 m
.put(fvOptionTableModel
.getValueAt(i
, 0)+"", fvOptionTableModel
.getValueAt(i
, 1)+"");
2131 * This method initializes jContentPane
2133 * @return javax.swing.JPanel
2135 private JPanel
getJContentPane() {
2136 if (jContentPane
== null) {
2137 jContentPane
= new JPanel();
2138 jContentPane
.setLayout(new BorderLayout());
2139 jContentPane
.add(getJPanelContentEast(), java
.awt
.BorderLayout
.EAST
);
2140 jContentPane
.add(getJPanelContentSouth(), java
.awt
.BorderLayout
.SOUTH
);
2141 jContentPane
.add(getJPanelContentWest(), java
.awt
.BorderLayout
.WEST
);
2142 jContentPane
.add(getJPanelContentNorth(), java
.awt
.BorderLayout
.NORTH
);
2143 jContentPane
.add(getJTabbedPane(), java
.awt
.BorderLayout
.CENTER
);
2145 return jContentPane
;
2148 private void getFlashInfoFromFdf (String fdfPath
) {
2149 File fdf
= new File(fdfPath
);
2150 if (!fdf
.exists()) {
2156 FileReader reader
= new FileReader(fdf
);
2157 BufferedReader in
= new BufferedReader(reader
);
2160 while ((str
= in
.readLine()) != null) {
2164 // skip empty line, comment (start with //)
2166 if (str
.length() == 0 || str
.startsWith("//")) {
2172 if (str
.startsWith("ErasePolarity")) {
2173 erasePolarity
= str
.substring(str
.indexOf("=") + 1, str
.lastIndexOf(",")).trim();
2176 // dig into Block section.
2178 if (str
.startsWith("Block") && str
.endsWith("}")) {
2179 String
[] blockSec
= str
.split(",");
2180 String nv
= blockSec
[1].trim();
2181 String
[] sizeSec
= nv
.split("=");
2182 vBlockSize
.add(sizeSec
[1].trim());
2190 catch (Exception e
) {
2195 private void getFvInfoFromFdf(String fdfPath
, Vector
<FvInfoFromFdf
> vFvInfo
) {
2196 File fdf
= new File(fdfPath
);
2197 if (!fdf
.exists()) {
2203 FileReader reader
= new FileReader(fdf
);
2204 BufferedReader in
= new BufferedReader(reader
);
2207 while ((str
= in
.readLine()) != null) {
2211 // skip empty line, comment (start with //)
2213 if (str
.length() == 0 || str
.startsWith("//")) {
2217 // dig into Region {} section, create FvInfoFromFdf object for it.
2219 if (str
.startsWith("Region") && str
.endsWith("{")) {
2220 FvInfoFromFdf fvInfo
= new FvInfoFromFdf();
2221 boolean nameFound
= false;
2222 boolean sizeFound
= false;
2223 while ((str
= in
.readLine()) != null) {
2227 // skip empty line, comment (start with //)
2229 if (str
.length() == 0 || str
.startsWith("//")) {
2233 if (str
.startsWith("Name")) {
2234 int firstQuote
= str
.indexOf("\"");
2235 int lastQuote
= str
.lastIndexOf("\"");
2236 fvInfo
.setFvName(str
.substring(firstQuote
+ 1, lastQuote
));
2240 if (str
.startsWith("Size")) {
2241 int equalIndex
= str
.indexOf("=");
2242 int commaIndex
= str
.indexOf(",");
2243 fvInfo
.setSize(str
.substring(equalIndex
+ 1, commaIndex
).trim());
2247 if (nameFound
&& sizeFound
) {
2252 vFvInfo
.add(fvInfo
);
2255 // dig into File {} section, supply file name information to existing FvInfoFromFdf object.
2257 if (str
.startsWith("File")) {
2258 boolean fileNameFound
= false;
2259 boolean fvFound
= false;
2260 String fileName
= "";
2262 while ((str
= in
.readLine()) != null) {
2266 // skip empty line, comment (start with //)
2268 if (str
.length() == 0 || str
.startsWith("//")) {
2272 if (str
.startsWith("Name")) {
2273 int firstQuote
= str
.indexOf("\"");
2274 int lastQuote
= str
.lastIndexOf("\"");
2275 fileName
= str
.substring(firstQuote
+ 1, lastQuote
);
2276 fileNameFound
= true;
2279 if (str
.startsWith("Region")) {
2280 int firstQuote
= str
.indexOf("\"");
2281 int lastQuote
= str
.lastIndexOf("\"");
2282 fvName
= str
.substring(firstQuote
+ 1, lastQuote
);
2286 if (fileNameFound
&& fvFound
) {
2291 for (int i
= 0; i
<vFvInfo
.size(); ++i
) {
2292 if (vFvInfo
.get(i
).getFvName().equals(fvName
)) {
2293 vFvInfo
.get(i
).setEfiFileName(fileName
);
2303 catch (Exception e
) {
2309 private class ModuleOrderPane
extends JPanel
{
2314 private static final long serialVersionUID
= 1L;
2315 private JPanel jPanelModOrderN
= null;
2316 private JPanel jPanelModOrderS
= null;
2317 private JPanel jPanelModOrderC
= null;
2318 private JScrollPane jScrollPaneModInFv
= null;
2319 private JTable jTableModInFv
= null;
2320 private JPanel jPanelController
= null;
2321 private JScrollPane jScrollPaneFpdModules
= null;
2322 private JTable jTableFpdModules
= null;
2323 private JButton jButtonUp
= null;
2324 private JButton jButtonInsert
= null;
2325 private JButton jButtonRemove
= null;
2326 private JButton jButtonDown
= null;
2327 private JButton jButtonOk
= null;
2328 private JButton jButtonCancel
= null;
2329 private IDefaultTableModel modInFvTableModel
= null;
2330 private IDefaultTableModel fpdModTableModel
= null;
2331 private HashMap
<String
, ModuleIdentification
> mGuidToModuleId
= null;
2332 private ArrayList
<String
> listModGuidInFv
= null;
2333 private String title
= null;
2334 private String outputFileName
= null;
2336 public ModuleOrderPane(String tabTitle
, String file
) {
2337 super(new BorderLayout());
2339 outputFileName
= file
;
2340 mGuidToModuleId
= new HashMap
<String
, ModuleIdentification
>();
2341 listModGuidInFv
= new ArrayList
<String
>();
2342 add(getJPanelModOrderN(), java
.awt
.BorderLayout
.NORTH
);
2343 add(getJPanelModOrderS(), java
.awt
.BorderLayout
.SOUTH
);
2344 add(getJPanelModOrderC(), java
.awt
.BorderLayout
.CENTER
);
2345 showModulesInFv(title
);
2346 showAllModulesInPlatform();
2349 private void showModulesInFv(String fvName
) {
2350 int size
= ffc
.getUserExtsIncModCount(fvName
);
2353 String
[][] saa
= new String
[size
][2];
2354 ffc
.getUserExtsIncMods(fvName
, saa
);
2356 for (int i
= 0; i
< size
; ++i
) {
2357 listModGuidInFv
.add(saa
[i
][0].toLowerCase());
2358 String name
= getModuleName(saa
[i
][0]);
2359 String
[] row
= { name
};
2360 modInFvTableModel
.addRow(row
);
2364 // From ModuleSAs, get module guids with FvBinding = fvName.
2366 Vector
<String
> vGuid
= new Vector
<String
>();
2367 ffc
.getFrameworkModuleGuid(fvName
, vGuid
);
2369 // If BuildOptions->UserExtensions already contain these module info,
2370 // no need to add them into table again.
2372 Iterator
<String
> iter
= vGuid
.iterator();
2373 while (iter
.hasNext()){
2374 String guid
= iter
.next();
2375 // String moduleName = getModuleName(guid);
2376 // if (existedInTable(moduleName, modInFvTableModel)) {
2377 // vGuid.remove(guid);
2379 if (!listModGuidInFv
.contains(guid
.toLowerCase())) {
2380 String
[] row
= {getModuleName(guid
)};
2381 modInFvTableModel
.addRow(row
);
2387 private void showAllModulesInPlatform() {
2388 int size
= ffc
.getFrameworkModulesCount();
2389 String
[][] saa
= new String
[size
][5];
2390 ffc
.getFrameworkModulesInfo(saa
);
2392 for (int i
= 0; i
< size
; ++i
) {
2393 String name
= getModuleName(saa
[i
][0]);
2394 if (existedInTable(name
, modInFvTableModel
) || existedInTable(name
, fpdModTableModel
)) {
2397 String
[] row
= {name
};
2398 fpdModTableModel
.addRow(row
);
2401 TableSorter sorter
= (TableSorter
)jTableFpdModules
.getModel();
2402 sorter
.setSortState(0, TableSorter
.ASCENDING
);
2405 private String
getModuleName (String guid
) {
2407 for (int i
= 0; i
< GlobalData
.vModuleList
.size(); ++i
) {
2408 ModuleIdentification mi
= GlobalData
.vModuleList
.get(i
);
2409 String mg
= mi
.getGuid();
2413 if (mg
.equalsIgnoreCase(guid
)) {
2414 mGuidToModuleId
.put(guid
.toLowerCase(), mi
);
2415 return mi
.getName();
2422 private boolean existedInTable (String name
, DefaultTableModel model
) {
2423 int size
= model
.getDataVector().size();
2424 for (int i
= 0; i
< size
; ++i
) {
2425 if (((Vector
)model
.getDataVector().elementAt(i
)).contains(name
)) {
2435 * This method initializes jPanelModOrderN
2437 * @return javax.swing.JPanel
2439 private JPanel
getJPanelModOrderN() {
2440 if (jPanelModOrderN
== null) {
2441 jPanelModOrderN
= new JPanel();
2443 return jPanelModOrderN
;
2447 * This method initializes jPanelModOrderS
2449 * @return javax.swing.JPanel
2451 private JPanel
getJPanelModOrderS() {
2452 if (jPanelModOrderS
== null) {
2453 FlowLayout flowLayout6
= new FlowLayout();
2454 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
2455 jPanelModOrderS
= new JPanel();
2456 jPanelModOrderS
.setLayout(flowLayout6
);
2457 jPanelModOrderS
.add(getJButtonOk(), null);
2458 jPanelModOrderS
.add(getJButtonCancel(), null);
2460 return jPanelModOrderS
;
2464 * This method initializes jPanelModOrderC
2466 * @return javax.swing.JPanel
2468 private JPanel
getJPanelModOrderC() {
2469 if (jPanelModOrderC
== null) {
2470 jPanelModOrderC
= new JPanel();
2471 jPanelModOrderC
.add(getJScrollPaneModInFv(), null);
2472 jPanelModOrderC
.add(getJPanelController(), null);
2473 jPanelModOrderC
.add(getJScrollPaneFpdModules(), null);
2475 return jPanelModOrderC
;
2479 * This method initializes jScrollPaneModInFv
2481 * @return javax.swing.JScrollPane
2483 private JScrollPane
getJScrollPaneModInFv() {
2484 if (jScrollPaneModInFv
== null) {
2485 jScrollPaneModInFv
= new JScrollPane();
2486 jScrollPaneModInFv
.setPreferredSize(new java
.awt
.Dimension(200,500));
2487 jScrollPaneModInFv
.setViewportView(getJTableModInFv());
2489 return jScrollPaneModInFv
;
2493 * This method initializes jTableModInFv
2495 * @return javax.swing.JTable
2497 private JTable
getJTableModInFv() {
2498 if (jTableModInFv
== null) {
2499 modInFvTableModel
= new IDefaultTableModel();
2500 modInFvTableModel
.addColumn("Module Orders in FV");
2501 jTableModInFv
= new JTable(modInFvTableModel
);
2502 jTableModInFv
.setRowHeight(20);
2503 jTableModInFv
.setShowGrid(false);
2506 return jTableModInFv
;
2510 * This method initializes jPanelController
2512 * @return javax.swing.JPanel
2514 private JPanel
getJPanelController() {
2515 if (jPanelController
== null) {
2516 FlowLayout flowLayout5
= new FlowLayout();
2517 flowLayout5
.setVgap(50);
2518 flowLayout5
.setHgap(50);
2519 jPanelController
= new JPanel();
2520 jPanelController
.setLayout(flowLayout5
);
2521 jPanelController
.setPreferredSize(new java
.awt
.Dimension(150,500));
2522 jPanelController
.add(getJButtonUp(), null);
2523 jPanelController
.add(getJButtonInsert(), null);
2524 jPanelController
.add(getJButtonRemove(), null);
2525 jPanelController
.add(getJButtonDown(), null);
2527 return jPanelController
;
2531 * This method initializes jScrollPaneFpdModules
2533 * @return javax.swing.JScrollPane
2535 private JScrollPane
getJScrollPaneFpdModules() {
2536 if (jScrollPaneFpdModules
== null) {
2537 jScrollPaneFpdModules
= new JScrollPane();
2538 jScrollPaneFpdModules
.setPreferredSize(new java
.awt
.Dimension(200,500));
2539 jScrollPaneFpdModules
.setViewportView(getJTableFpdModules());
2541 return jScrollPaneFpdModules
;
2545 * This method initializes jTableFpdModules
2547 * @return javax.swing.JTable
2549 private JTable
getJTableFpdModules() {
2550 if (jTableFpdModules
== null) {
2551 fpdModTableModel
= new IDefaultTableModel();
2552 TableSorter sorter
= new TableSorter(fpdModTableModel
);
2553 jTableFpdModules
= new JTable(sorter
);
2554 jTableFpdModules
.setRowHeight(20);
2555 jTableFpdModules
.setShowGrid(false);
2556 fpdModTableModel
.addColumn("Modules in Platform");
2559 return jTableFpdModules
;
2563 * This method initializes jButtonUp
2565 * @return javax.swing.JButton
2567 private JButton
getJButtonUp() {
2568 if (jButtonUp
== null) {
2569 jButtonUp
= new JButton();
2570 jButtonUp
.setPreferredSize(new java
.awt
.Dimension(60,20));
2571 jButtonUp
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 14));
2572 jButtonUp
.setText("^");
2573 jButtonUp
.addActionListener(new java
.awt
.event
.ActionListener() {
2574 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2575 int selectedRow
= jTableModInFv
.getSelectedRow();
2576 if (selectedRow
<= 0) {
2579 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
- 1);
2580 jTableModInFv
.changeSelection(selectedRow
- 1, 0, false, false);
2588 * This method initializes jButtonInsert
2590 * @return javax.swing.JButton
2592 private JButton
getJButtonInsert() {
2593 if (jButtonInsert
== null) {
2594 jButtonInsert
= new JButton();
2595 jButtonInsert
.setText("<<");
2596 jButtonInsert
.setPreferredSize(new java
.awt
.Dimension(60,20));
2597 jButtonInsert
.addActionListener(new java
.awt
.event
.ActionListener() {
2598 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2599 int selectedRowRight
= jTableFpdModules
.getSelectedRow();
2600 if (selectedRowRight
< 0) {
2604 int rowInModel
= ((TableSorter
)jTableFpdModules
.getModel()).getModelRowIndex(selectedRowRight
);
2606 String
[] row
= {jTableFpdModules
.getValueAt(selectedRowRight
, 0)+""};
2607 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
2608 if (selectedRowLeft
< 0) {
2609 modInFvTableModel
.addRow(row
);
2610 jTableModInFv
.changeSelection(jTableModInFv
.getRowCount() - 1, 0, false, false);
2613 modInFvTableModel
.insertRow(selectedRowLeft
, row
);
2614 jTableModInFv
.changeSelection(selectedRowLeft
, 0, false, false);
2616 fpdModTableModel
.removeRow(rowInModel
);
2620 return jButtonInsert
;
2624 * This method initializes jButtonRemove
2626 * @return javax.swing.JButton
2628 private JButton
getJButtonRemove() {
2629 if (jButtonRemove
== null) {
2630 jButtonRemove
= new JButton();
2631 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(60,20));
2632 jButtonRemove
.setText(">>");
2633 jButtonRemove
.addActionListener(new java
.awt
.event
.ActionListener() {
2634 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2635 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
2636 if (selectedRowLeft
< 0) {
2640 String
[] row
= {jTableModInFv
.getValueAt(selectedRowLeft
, 0)+""};
2641 fpdModTableModel
.addRow(row
);
2642 int viewIndex
= ((TableSorter
) jTableFpdModules
.getModel()).getViewIndexArray()[jTableFpdModules
2643 .getRowCount() - 1];
2644 jTableFpdModules
.changeSelection(viewIndex
, 0, false, false);
2645 modInFvTableModel
.removeRow(selectedRowLeft
);
2649 return jButtonRemove
;
2653 * This method initializes jButtonDown
2655 * @return javax.swing.JButton
2657 private JButton
getJButtonDown() {
2658 if (jButtonDown
== null) {
2659 jButtonDown
= new JButton();
2660 jButtonDown
.setPreferredSize(new java
.awt
.Dimension(60,20));
2661 jButtonDown
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 10));
2662 jButtonDown
.setText("v");
2663 jButtonDown
.addActionListener(new java
.awt
.event
.ActionListener() {
2664 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2665 int selectedRow
= jTableModInFv
.getSelectedRow();
2666 if (selectedRow
>= jTableModInFv
.getRowCount() - 1) {
2669 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
+ 1);
2670 jTableModInFv
.changeSelection(selectedRow
+ 1, 0, false, false);
2678 * This method initializes jButtonOk
2680 * @return javax.swing.JButton
2682 private JButton
getJButtonOk() {
2683 if (jButtonOk
== null) {
2684 jButtonOk
= new JButton();
2685 jButtonOk
.setPreferredSize(new java
.awt
.Dimension(80,20));
2686 jButtonOk
.setText("Ok");
2687 jButtonOk
.addActionListener(new java
.awt
.event
.ActionListener() {
2688 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2689 // need reset FvBindings in ModuleSA.
2690 ffc
.removeFvBindingAll(title
);
2692 // collect module order information to store them into <BuildOptions> -> <UserExtensions>.
2693 // also update the FvBinding info in <ModuleSA>.
2695 Vector
<String
[]> vModInFv
= new Vector
<String
[]>();
2696 for (int i
= 0; i
< jTableModInFv
.getRowCount(); ++i
) {
2697 String moduleName
= jTableModInFv
.getValueAt(i
, 0)+"";
2698 if (moduleName
.length() == 0) {
2701 ModuleIdentification mi
= null;
2702 Set
<String
> key
= mGuidToModuleId
.keySet();
2703 Iterator
<String
> iter
= key
.iterator();
2704 while (iter
.hasNext()) {
2705 String guid
= iter
.next();
2706 mi
= mGuidToModuleId
.get(guid
);
2707 if (mi
.getName().equals(moduleName
)) {
2708 String
[] sa
= {guid
, WorkspaceProfile
.getModuleBaseName(mi
)};
2710 ffc
.updateFvBindingInModuleSA (mi
, title
);
2716 ffc
.removeBuildOptionsUserExtensions(title
);
2717 ffc
.genBuildOptionsUserExtensions(title
, outputFileName
, vModInFv
);
2719 docConsole
.setSaved(false);
2720 jTabbedPane
.setSelectedIndex(0);
2728 * This method initializes jButtonCancel
2730 * @return javax.swing.JButton
2732 private JButton
getJButtonCancel() {
2733 if (jButtonCancel
== null) {
2734 jButtonCancel
= new JButton();
2735 jButtonCancel
.setPreferredSize(new java
.awt
.Dimension(80,20));
2736 jButtonCancel
.setText("Cancel");
2737 jButtonCancel
.addActionListener(new java
.awt
.event
.ActionListener() {
2738 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2739 jTabbedPane
.setSelectedIndex(0);
2743 return jButtonCancel
;
2747 } // @jve:decl-index=0:visual-constraint="10,10"
2749 class FvOptsTableModel
extends DefaultTableModel
{
2751 private static final long serialVersionUID
= 1L;
2753 private Vector
<Object
> vNonEditableName
= new Vector
<Object
>();
2754 private Vector
<Object
> vKeyWords
= new Vector
<Object
>();
2756 public boolean isCellEditable(int row
, int col
) {
2757 if (vNonEditableName
.size() > 0 || vKeyWords
.size() > 0) {
2758 if (vKeyWords
.contains(getValueAt(row
, 0))) {
2761 if (vNonEditableName
.contains(getValueAt(row
, 0)) && col
== 0) {
2770 * @return Returns the vKeyWords.
2772 protected Vector
<Object
> getVKeyWords() {
2777 * @param keyWords The vKeyWords to set.
2779 protected void setVKeyWords(Vector
<Object
> keyWords
) {
2780 vKeyWords
.removeAllElements();
2781 vKeyWords
.addAll(keyWords
);
2785 * @return Returns the vNonEditableName.
2787 protected Vector
<Object
> getVNonEditableName() {
2788 return vNonEditableName
;
2792 * @param nonEditableName The vNonEditableName to set.
2794 protected void setVNonEditableName(Vector
<Object
> nonEditableName
) {
2795 vNonEditableName
.removeAllElements();
2796 vNonEditableName
.addAll(nonEditableName
);
2800 class ImageParaTableModel
extends DefaultTableModel
{
2802 private static final long serialVersionUID
= 1L;
2804 public boolean isCellEditable(int row
, int col
) {
2805 // if (getValueAt(row, 1).equals("ImageName") && col >=1) {
2813 class FvInfoFromFdf
{
2814 private String fvName
;
2815 private String size
;
2816 private String efiFileName
;
2818 public FvInfoFromFdf () {
2823 public FvInfoFromFdf (String f
, String s
, String e
) {
2829 public String
getEfiFileName() {
2832 public void setEfiFileName(String efiFileName
) {
2833 this.efiFileName
= efiFileName
;
2835 public String
getFvName() {
2838 public void setFvName(String fvName
) {
2839 this.fvName
= fvName
;
2841 public String
getSize() {
2844 public void setSize(String size
) {