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
.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
;
35 import java
.awt
.FlowLayout
;
36 import java
.awt
.event
.ActionEvent
;
37 import java
.awt
.event
.ComponentAdapter
;
38 import java
.awt
.event
.ComponentEvent
;
39 import java
.awt
.event
.ItemEvent
;
40 import java
.awt
.event
.ItemListener
;
41 import java
.awt
.event
.MouseAdapter
;
42 import java
.awt
.event
.MouseEvent
;
43 import java
.io
.BufferedReader
;
45 import java
.io
.FileReader
;
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 jPanelFvImageS
= null;
87 private JPanel jPanelFvImageN
= 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;
172 private JPanel jPanelFvImageParaN
= null;
173 private JPanel jPanelFvImageParaS
= null;
174 // private JPanel jPanelFvImageParaC = null;
175 private JPanel jPanelFvImageOptsN
= null;
176 private JPanel jPanelFvImageOptsS
= null;
177 // private JPanel jPanelFvImageOptsC = null;
178 private JPanel jPanelFvImageParaE
= null;
179 private JPanel jPanelFvImageOptsE
= null;
180 private JPanel jPanelFvImageSN
= null;
181 private JPanel jPanelFvImageSE
= null;
182 private JPanel jPanelFvImageSS
= null;
186 // TODO Auto-generated constructor stub
189 this.setBounds(new java
.awt
.Rectangle(0, 0, 500, 370));
190 this.setVisible(true);
193 public FpdFlash(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
195 ffc
= new FpdFileContents(fpd
);
199 public FpdFlash(OpeningPlatformType opt
) {
200 this(opt
.getXmlFpd());
203 docConsole
.setSaved(false);
204 JOptionPane
.showMessageDialog(frame
, "Platform Synced with FDF file.");
210 * This method initializes jPanel
212 * @return javax.swing.JPanel
214 private JPanel
getJPanelContentEast() {
215 if (jPanelContentEast
== null) {
216 FlowLayout flowLayout7
= new FlowLayout();
217 flowLayout7
.setVgap(50);
218 jPanelContentEast
= new JPanel();
219 jPanelContentEast
.setLayout(flowLayout7
);
221 return jPanelContentEast
;
225 * This method initializes jPanel1
227 * @return javax.swing.JPanel
229 private JPanel
getJPanelContentSouth() {
230 if (jPanelContentSouth
== null) {
231 FlowLayout flowLayout
= new FlowLayout();
232 flowLayout
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
233 flowLayout
.setHgap(15);
234 jPanelContentSouth
= new JPanel();
235 jPanelContentSouth
.setLayout(flowLayout
);
236 jPanelContentSouth
.setComponentOrientation(java
.awt
.ComponentOrientation
.LEFT_TO_RIGHT
);
238 return jPanelContentSouth
;
242 * This method initializes jPanel2
244 * @return javax.swing.JPanel
246 private JPanel
getJPanelContentWest() {
247 if (jPanelContentWest
== null) {
248 jPanelContentWest
= new JPanel();
250 return jPanelContentWest
;
254 * This method initializes jPanel3
256 * @return javax.swing.JPanel
258 private JPanel
getJPanelContentNorth() {
259 if (jPanelContentNorth
== null) {
260 jPanelContentNorth
= new JPanel();
262 return jPanelContentNorth
;
266 * This method initializes jTabbedPane
268 * @return javax.swing.JTabbedPane
270 private JTabbedPane
getJTabbedPane() {
271 if (jTabbedPane
== null) {
272 jTabbedPane
= new JTabbedPane();
273 jTabbedPane
.addTab("General", null, getJPanelFdf(), null);
274 jTabbedPane
.addTab("Advanced", null, getJPanelFvImages(), null);
281 * This method initializes jPanelFvImages
283 * @return javax.swing.JPanel
285 private JPanel
getJPanelFvImages() {
286 if (jPanelFvImages
== null) {
287 jPanelFvImages
= new JPanel();
288 jPanelFvImages
.setLayout(new BorderLayout());
289 jPanelFvImages
.add(getJPanelFvImageN(), java
.awt
.BorderLayout
.NORTH
);
290 jPanelFvImages
.add(getJPanelFvImageS(), java
.awt
.BorderLayout
.SOUTH
);
291 jPanelFvImages
.add(getJPanelFvImageC(), java
.awt
.BorderLayout
.CENTER
);
292 jPanelFvImages
.add(getJPanelW(), java
.awt
.BorderLayout
.EAST
);
293 jPanelFvImages
.addComponentListener(new java
.awt
.event
.ComponentAdapter() {
294 public void componentShown(java
.awt
.event
.ComponentEvent e
) {
295 // fvImageParaTableModel.setRowCount(0);
296 // fvPropertyTableModel.setRowCount(0);
303 return jPanelFvImages
;
307 * This method initializes jPanelFvImageN
309 * @return javax.swing.JPanel
311 private JPanel
getJPanelFvImageS() {
312 if (jPanelFvImageS
== null) {
313 jLabelFvPropValue
= new JLabel();
314 jLabelFvPropValue
.setText("Value");
315 jLabelFvPropValue
.setEnabled(false);
316 jLabelFvPropValue
.setPreferredSize(new java
.awt
.Dimension(38,20));
317 jLabelFvPropName
= new JLabel();
318 jLabelFvPropName
.setText("Name");
319 jLabelFvPropName
.setEnabled(false);
320 jLabelFvPropName
.setPreferredSize(new java
.awt
.Dimension(38,20));
321 jPanelFvImageS
= new JPanel();
322 jPanelFvImageS
.setPreferredSize(new java
.awt
.Dimension(576,130));
323 jPanelFvImageS
.setBorder(javax
.swing
.BorderFactory
.createBevelBorder(javax
.swing
.border
.BevelBorder
.RAISED
));
324 jPanelFvImageS
.setLayout(new BorderLayout());
325 jPanelFvImageS
.add(getJPanelFvImageSN(), java
.awt
.BorderLayout
.NORTH
);
326 jPanelFvImageS
.add(getJPanelFvImageSE(), java
.awt
.BorderLayout
.EAST
);
327 jPanelFvImageS
.add(getJPanelFvImageSS(), java
.awt
.BorderLayout
.SOUTH
);
328 jPanelFvImageS
.add(getJScrollPaneFvProp(), java
.awt
.BorderLayout
.CENTER
);
331 return jPanelFvImageS
;
335 * This method initializes jPanelFvImageS
337 * @return javax.swing.JPanel
339 private JPanel
getJPanelFvImageN() {
340 if (jPanelFvImageN
== null) {
341 GridLayout gridLayout2
= new GridLayout();
342 gridLayout2
.setRows(1);
343 jPanelFvImageN
= new JPanel();
344 jPanelFvImageN
.setPreferredSize(new java
.awt
.Dimension(480,150));
345 jPanelFvImageN
.setLayout(gridLayout2
);
346 jPanelFvImageN
.add(getJScrollPaneFvInfo(), null);
348 return jPanelFvImageN
;
353 * This method initializes jCheckBox1
355 * @return javax.swing.JCheckBox
357 private JCheckBox
getJCheckBoxFvProperty() {
358 if (jCheckBoxFvProperty
== null) {
359 jCheckBoxFvProperty
= new JCheckBox();
360 jCheckBoxFvProperty
.setText("Global FV Variables");
361 jCheckBoxFvProperty
.addItemListener(new ItemListener(){
363 public void itemStateChanged(ItemEvent arg0
) {
364 // TODO Auto-generated method stub
365 boolean seleted
= jCheckBoxFvProperty
.isSelected();
367 jLabelFvPropName
.setEnabled(seleted
);
368 jTextFieldFvPropName
.setEnabled(seleted
);
369 jLabelFvPropValue
.setEnabled(seleted
);
370 jTextFieldFvPropValue
.setEnabled(seleted
);
371 jTableFvProp
.setEnabled(seleted
);
372 jButtonFvPropAdd
.setEnabled(seleted
);
373 jButtonFvPropDel
.setEnabled(seleted
);
380 return jCheckBoxFvProperty
;
385 * This method initializes jTextField
387 * @return javax.swing.JTextField
389 private JTextField
getJTextFieldFvPropName() {
390 if (jTextFieldFvPropName
== null) {
391 jTextFieldFvPropName
= new JTextField();
392 jTextFieldFvPropName
.setPreferredSize(new java
.awt
.Dimension(100,20));
393 jTextFieldFvPropName
.setEnabled(false);
395 return jTextFieldFvPropName
;
400 * This method initializes jTextField1
402 * @return javax.swing.JTextField
404 private JTextField
getJTextFieldFvPropValue() {
405 if (jTextFieldFvPropValue
== null) {
406 jTextFieldFvPropValue
= new JTextField();
407 jTextFieldFvPropValue
.setPreferredSize(new java
.awt
.Dimension(100,20));
408 jTextFieldFvPropValue
.setEnabled(false);
410 return jTextFieldFvPropValue
;
415 * This method initializes jButton
417 * @return javax.swing.JButton
419 private JButton
getJButtonFvPropAdd() {
420 if (jButtonFvPropAdd
== null) {
421 jButtonFvPropAdd
= new JButton();
422 jButtonFvPropAdd
.setPreferredSize(new java
.awt
.Dimension(80,20));
423 jButtonFvPropAdd
.setEnabled(false);
424 jButtonFvPropAdd
.setText("Add");
425 jButtonFvPropAdd
.addActionListener(new AbstractAction() {
429 private static final long serialVersionUID
= 1L;
431 public void actionPerformed(ActionEvent e
) {
432 if (jTextFieldFvPropName
.getText().length() > 0 && jTextFieldFvPropValue
.getText().length() > 0){
433 String
[] row
= {jTextFieldFvPropName
.getText(), jTextFieldFvPropValue
.getText()};
434 fvPropertyTableModel
.addRow(row
);
435 docConsole
.setSaved(false);
436 ffc
.genFvImagesNameValue(row
[0], row
[1]);
441 return jButtonFvPropAdd
;
446 * This method initializes jScrollPane1
448 * @return javax.swing.JScrollPane
450 private JScrollPane
getJScrollPaneFvProp() {
451 if (jScrollPaneFvProp
== null) {
452 jScrollPaneFvProp
= new JScrollPane();
453 jScrollPaneFvProp
.setPreferredSize(new java
.awt
.Dimension(350,100));
454 jScrollPaneFvProp
.setViewportView(getJTableFvProp());
456 return jScrollPaneFvProp
;
461 * This method initializes jTable
463 * @return javax.swing.JTable
465 private JTable
getJTableFvProp() {
466 if (jTableFvProp
== null) {
467 fvPropertyTableModel
= new DefaultTableModel();
468 jTableFvProp
= new JTable(fvPropertyTableModel
);
469 fvPropertyTableModel
.addColumn("Name");
470 fvPropertyTableModel
.addColumn("Value");
471 jTableFvProp
.setRowHeight(20);
472 jTableFvProp
.setEnabled(false);
474 jTableFvProp
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
475 jTableFvProp
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
476 public void valueChanged(ListSelectionEvent e
) {
477 if (e
.getValueIsAdjusting()){
480 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
481 if (lsm
.isSelectionEmpty()) {
485 // selectedRow = lsm.getMinSelectionIndex();
490 jTableFvProp
.getModel().addTableModelListener(new TableModelListener(){
491 public void tableChanged(TableModelEvent arg0
) {
492 // TODO Auto-generated method stub
493 int row
= arg0
.getFirstRow();
494 TableModel m
= (TableModel
)arg0
.getSource();
495 if (arg0
.getType() == TableModelEvent
.UPDATE
){
497 String name
= m
.getValueAt(row
, 0) + "";
498 String value
= m
.getValueAt(row
, 1) + "";
499 docConsole
.setSaved(false);
500 ffc
.updateFvImagesNameValue(row
, name
, value
);
510 * This method initializes jPanel4
512 * @return javax.swing.JPanel
514 private JPanel
getJPanelFvPropButtonGroup() {
515 if (jPanelFvPropButtonGroup
== null) {
516 jPanelFvPropButtonGroup
= new JPanel();
517 jPanelFvPropButtonGroup
.setPreferredSize(new java
.awt
.Dimension(80,55));
519 jPanelFvPropButtonGroup
.add(getJButtonFvPropAdd(), null);
520 jPanelFvPropButtonGroup
.add(getJButtonFvPropDel(), null);
522 return jPanelFvPropButtonGroup
;
527 * This method initializes jButton1
529 * @return javax.swing.JButton
531 private JButton
getJButtonFvPropDel() {
532 if (jButtonFvPropDel
== null) {
533 jButtonFvPropDel
= new JButton();
534 jButtonFvPropDel
.setPreferredSize(new java
.awt
.Dimension(80,20));
535 jButtonFvPropDel
.setEnabled(false);
536 jButtonFvPropDel
.setText("Delete");
537 jButtonFvPropDel
.addActionListener(new AbstractAction() {
541 private static final long serialVersionUID
= 1L;
543 public void actionPerformed(ActionEvent e
) {
544 if (jTableFvProp
.getSelectedRow() >= 0){
545 fvPropertyTableModel
.removeRow(jTableFvProp
.getSelectedRow());
546 docConsole
.setSaved(false);
547 ffc
.removeFvImagesNameValue(jTableFvProp
.getSelectedRow());
552 return jButtonFvPropDel
;
557 * This method initializes jPanelFvImageC
559 * @return javax.swing.JPanel
561 private JPanel
getJPanelFvImageC() {
562 if (jPanelFvImageC
== null) {
563 GridLayout gridLayout
= new GridLayout();
564 gridLayout
.setRows(2);
565 jLabelFvParaName
= new JLabel();
566 jLabelFvParaName
.setPreferredSize(new Dimension(38, 20));
567 jLabelFvParaName
.setText("Name");
568 jLabelFvImageNames
= new JLabel();
569 jLabelFvImageNames
.setText("FV Image Names");
570 jLabelFvImageNames
.setPreferredSize(new java
.awt
.Dimension(150,20));
571 jLabelFvParaType
= new JLabel();
572 jLabelFvParaType
.setText("Type");
573 jLabelFvParaType
.setPreferredSize(new java
.awt
.Dimension(70,20));
574 jPanelFvImageC
= new JPanel();
575 jPanelFvImageC
.setLayout(gridLayout
);
576 jPanelFvImageC
.add(getJPanelFvImagePara(), null);
577 jPanelFvImageC
.add(getJPanelFvImageOpts(), null);
581 return jPanelFvImageC
;
586 * This method initializes jComboBox
588 * @return javax.swing.JComboBox
590 private JComboBox
getJComboBoxFvParaType() {
591 if (jComboBoxFvParaType
== null) {
592 jComboBoxFvParaType
= new JComboBox();
593 jComboBoxFvParaType
.addItem("Attributes");
594 jComboBoxFvParaType
.addItem("Components");
595 jComboBoxFvParaType
.setSelectedIndex(0);
596 jComboBoxFvParaType
.setPreferredSize(new java
.awt
.Dimension(180,20));
597 jComboBoxFvParaType
.addItemListener(new ItemListener() {
599 public void itemStateChanged(ItemEvent arg0
) {
600 // TODO disable attribute settings when ValidImageNames selected.
601 int selectedRow
= jTableFvInfo
.getSelectedRow();
602 if (selectedRow
< 0) {
605 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
606 String oldType
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
607 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, oldType
);
608 if (fvImagePos
< 0) {
612 String type
= jComboBoxFvParaType
.getSelectedItem()+"";
613 ffc
.updateFvImagesFvImageType(fvImagePos
, type
);
614 jTableFvInfo
.setValueAt(type
, selectedRow
, 1);
615 docConsole
.setSaved(false);
620 return jComboBoxFvParaType
;
625 * This method initializes jTextField2
627 * @return javax.swing.JTextField
629 private JTextField
getJTextFieldFvParaName() {
630 if (jTextFieldFvParaName
== null) {
631 jTextFieldFvParaName
= new JTextField();
632 jTextFieldFvParaName
.setPreferredSize(new java
.awt
.Dimension(140,20));
634 return jTextFieldFvParaName
;
639 * This method initializes jButton2
641 * @return javax.swing.JButton
643 private JButton
getJButtonFvNameAdd() {
644 if (jButtonFvNameAdd
== null) {
645 jButtonFvNameAdd
= new JButton();
646 jButtonFvNameAdd
.setPreferredSize(new Dimension(80, 20));
647 jButtonFvNameAdd
.setEnabled(true);
648 jButtonFvNameAdd
.setText("Add");
649 jButtonFvNameAdd
.addActionListener(new AbstractAction() {
653 private static final long serialVersionUID
= 1L;
655 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
656 if (jTextFieldFvParaName
.getText().length() > 0){
657 String
[] row
= {jTextFieldFvParaName
.getText()};
658 int selectedRow
= jTableFvInfo
.getSelectedRow();
659 if (selectedRow
< 0) {
663 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
664 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
665 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
667 if (fvImagePos
< 0) {
669 ffc
.genFvImagesFvImage(row
, jComboBoxFvParaType
.getSelectedItem()+"", null);
673 ffc
.addFvImageNamesInFvImage(fvImagePos
, row
);
675 docConsole
.setSaved(false);
676 fvImageNameTableModel
.addRow(row
);
678 fvNameList
+= row
[0];
679 jTableFvInfo
.setValueAt(fvNameList
.trim(), selectedRow
, 0);
680 jTableFvImageNames
.changeSelection(jTableFvImageNames
.getRowCount() - 1, 0, false, false);
685 return jButtonFvNameAdd
;
690 * This method initializes jScrollPane2
692 * @return javax.swing.JScrollPane
694 private JScrollPane
getJScrollPaneFvImageNames() {
695 if (jScrollPaneFvImageNames
== null) {
696 jScrollPaneFvImageNames
= new JScrollPane();
697 jScrollPaneFvImageNames
.setPreferredSize(new java
.awt
.Dimension(350,80));
698 jScrollPaneFvImageNames
.setViewportView(getJTableFvImageNames());
700 return jScrollPaneFvImageNames
;
705 * This method initializes jTable1
707 * @return javax.swing.JTable
709 private JTable
getJTableFvImageNames() {
710 if (jTableFvImageNames
== null) {
711 fvImageNameTableModel
= new IDefaultTableModel();
712 jTableFvImageNames
= new JTable(fvImageNameTableModel
);
713 jTableFvImageNames
.setRowHeight(20);
714 fvImageNameTableModel
.addColumn("FV Image Name");
717 return jTableFvImageNames
;
722 * This method initializes jButton3
724 * @return javax.swing.JButton
726 private JButton
getJButtonFvNameDel() {
727 if (jButtonFvNameDel
== null) {
728 jButtonFvNameDel
= new JButton();
729 jButtonFvNameDel
.setPreferredSize(new Dimension(80, 20));
730 jButtonFvNameDel
.setEnabled(true);
731 jButtonFvNameDel
.setText("Delete");
732 jButtonFvNameDel
.addActionListener(new AbstractAction() {
736 private static final long serialVersionUID
= 1L;
738 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
739 if (jTableFvImageNames
.getSelectedRow() >= 0){
740 int selectedRow
= jTableFvInfo
.getSelectedRow();
741 if (selectedRow
< 0) {
745 String selectedFvName
= jTableFvImageNames
.getValueAt(jTableFvImageNames
.getSelectedRow(), 0)+"";
746 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
747 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
748 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
750 if (fvImagePos
< 0) {
755 ffc
.updateFvImageNamesInFvImage(fvImagePos
, selectedFvName
, null);
757 docConsole
.setSaved(false);
758 String newList
= removeFvNameFromList(fvNameList
, selectedFvName
);
759 jTableFvInfo
.setValueAt(newList
, selectedRow
, 0);
760 fvImageNameTableModel
.removeRow(jTableFvImageNames
.getSelectedRow());
765 return jButtonFvNameDel
;
768 private String
removeFvNameFromList (String list
, String name
) {
769 String
[] nameArray
= list
.split(" ");
771 for (int i
= 0; i
< nameArray
.length
; ++i
) {
772 if (nameArray
[i
].equals(name
)) {
778 if (occursAt
== -1) {
782 String newList
= " ";
783 for (int j
= 0; j
< nameArray
.length
; ++j
) {
785 newList
+= nameArray
[j
];
790 return newList
.trim();
794 private JPanel
getJPanelFvImageOpts() {
797 if (jPanelFvImageOpts
== null) {
798 //ToDo add ButtonGroup for RadioButtons
799 jLabelOptions
= new JLabel();
800 jLabelOptions
.setText("Attribute");
801 jLabelFvImageOptValue
= new JLabel();
802 jLabelFvImageOptValue
.setEnabled(true);
803 jLabelFvImageOptValue
.setText("Value");
804 jLabelFvImageOptValue
.setPreferredSize(new Dimension(38, 20));
805 jLabelFvImageOptName
= new JLabel();
806 jLabelFvImageOptName
.setEnabled(true);
807 jLabelFvImageOptName
.setText("Name");
808 jLabelFvImageOptName
.setPreferredSize(new Dimension(38, 20));
809 jPanelFvImageOpts
= new JPanel();
810 jPanelFvImageOpts
.setLayout(new BorderLayout());
811 jPanelFvImageOpts
.setPreferredSize(new java
.awt
.Dimension(450,130));
814 jPanelFvImageOpts
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
816 jPanelFvImageOpts
.add(getJPanelFvImageOptsN(), java
.awt
.BorderLayout
.NORTH
);
817 jPanelFvImageOpts
.add(getJPanelFvImageOptsS(), java
.awt
.BorderLayout
.SOUTH
);
818 jPanelFvImageOpts
.add(getJScrollPane(), java
.awt
.BorderLayout
.CENTER
);
820 jPanelFvImageOpts
.add(getJPanelFvImageOptsE(), java
.awt
.BorderLayout
.EAST
);
822 return jPanelFvImageOpts
;
827 * This method initializes jButton4
829 * @return javax.swing.JButton
831 private JButton
getJButtonAddFvImage() {
832 if (jButtonAddFvImage
== null) {
833 jButtonAddFvImage
= new JButton();
834 jButtonAddFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
835 jButtonAddFvImage
.setText("New FV Attributes");
836 jButtonAddFvImage
.addActionListener(new AbstractAction() {
840 private static final long serialVersionUID
= 1L;
842 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
844 // String imageName = " ";
845 // for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){
846 // imageName += (String)jTableFvImageNames.getValueAt(i, 0);
849 // imageName = imageName.trim();
851 // LinkedHashMap<String, String> m = null;
852 // m = new LinkedHashMap<String, String>();
853 // getOptionNameValue(m);
854 // ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);
855 // docConsole.setSaved(false);
856 fvImageNameTableModel
.setRowCount(0);
857 fvOptionTableModel
.setRowCount(0);
858 Object
[] row
= {"", jComboBoxFvParaType
.getSelectedItem()};
859 fvImageParaTableModel
.addRow(row
);
860 jTableFvInfo
.changeSelection(jTableFvInfo
.getRowCount() - 1, 0, false, false);
864 return jButtonAddFvImage
;
869 * This method initializes jScrollPane3
871 * @return javax.swing.JScrollPane
873 private JScrollPane
getJScrollPaneFvInfo() {
874 if (jScrollPaneFvInfo
== null) {
875 jScrollPaneFvInfo
= new JScrollPane();
876 jScrollPaneFvInfo
.setPreferredSize(new java
.awt
.Dimension(480,150));
877 jScrollPaneFvInfo
.setViewportView(getJTableFvInfo());
879 return jScrollPaneFvInfo
;
884 * This method initializes jTable2
886 * @return javax.swing.JTable
888 private JTable
getJTableFvInfo() {
889 if (jTableFvInfo
== null) {
890 fvImageParaTableModel
= new ImageParaTableModel();
891 jTableFvInfo
= new JTable(fvImageParaTableModel
);
892 fvImageParaTableModel
.addColumn("FvImageNames");
893 fvImageParaTableModel
.addColumn("Type");
895 jTableFvInfo
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
896 jTableFvInfo
.setRowHeight(20);
897 jTableFvInfo
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
898 public void valueChanged(ListSelectionEvent e
) {
899 if (e
.getValueIsAdjusting()){
902 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
903 if (lsm
.isSelectionEmpty()) {
907 int selectedRow
= lsm
.getMinSelectionIndex();
908 String fvNameList
= fvImageParaTableModel
.getValueAt(selectedRow
, 0)+"";
909 String type
= fvImageParaTableModel
.getValueAt(selectedRow
, 1)+"";
910 jComboBoxFvParaType
.setSelectedItem(type
);
911 String
[] fvNames
= fvNameList
.split(" ");
912 fvImageNameTableModel
.setRowCount(0);
913 fvOptionTableModel
.setRowCount(0);
914 for (int i
= 0; i
< fvNames
.length
; ++i
) {
915 String
[] row
= { fvNames
[i
] };
916 if (row
[0].length() > 0) {
917 fvImageNameTableModel
.addRow(row
);
921 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
922 if (fvImagePos
< 0) {
925 LinkedHashMap
<String
, String
> optionMap
= new LinkedHashMap
<String
, String
>();
926 ffc
.getFvImagesFvImageOptions(fvImagePos
, optionMap
);
927 if (optionMap
.size() > 0){
928 Set
<String
> key
= optionMap
.keySet();
929 Iterator
<String
> i
= key
.iterator();
930 while (i
.hasNext()) {
931 String k
= (String
)i
.next();
932 String
[] row
= {k
, optionMap
.get(k
)};
933 fvOptionTableModel
.addRow(row
);
947 * This method initializes jButton6
949 * @return javax.swing.JButton
951 private JButton
getJButtonDelFvImage() {
952 if (jButtonDelFvImage
== null) {
953 jButtonDelFvImage
= new JButton();
954 jButtonDelFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
955 jButtonDelFvImage
.setText("Delete FV Attributes");
956 jButtonDelFvImage
.addActionListener(new AbstractAction() {
960 private static final long serialVersionUID
= 1L;
962 public void actionPerformed(ActionEvent arg0
) {
963 // TODO Auto-generated method stub
964 if (jTableFvInfo
.getSelectedRow() >= 0 ) {
965 String fvNameList
= fvImageParaTableModel
.getValueAt(jTableFvInfo
.getSelectedRow(), 0)+"";
966 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, jComboBoxFvParaType
.getSelectedItem()+"");
968 ffc
.removeFvImagesFvImage(fvImagePos
);
969 fvImageParaTableModel
.removeRow(jTableFvInfo
.getSelectedRow());
970 docConsole
.setSaved(false);
972 fvImageNameTableModel
.setRowCount(0);
973 fvOptionTableModel
.setRowCount(0);
979 return jButtonDelFvImage
;
984 * This method initializes jPanel6
986 * @return javax.swing.JPanel
988 private JPanel
getJPanelFvImagePara() {
989 if (jPanelFvImagePara
== null) {
990 StarLabel starLabel
= new StarLabel();
991 starLabel
.setVisible(false);
992 jPanelFvImagePara
= new JPanel();
993 jPanelFvImagePara
.setLayout(new BorderLayout());
994 jPanelFvImagePara
.setPreferredSize(new java
.awt
.Dimension(450,140));
995 jPanelFvImagePara
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
997 jPanelFvImagePara
.add(getJPanelFvImageParaN(), java
.awt
.BorderLayout
.NORTH
);
998 jPanelFvImagePara
.add(getJPanelFvImageParaS(), java
.awt
.BorderLayout
.SOUTH
);
999 jPanelFvImagePara
.add(getJScrollPaneFvImageNames(), java
.awt
.BorderLayout
.CENTER
);
1001 jPanelFvImagePara
.add(getJPanelFvImageParaE(), java
.awt
.BorderLayout
.EAST
);
1006 return jPanelFvImagePara
;
1010 * This method initializes jPanel7
1012 * @return javax.swing.JPanel
1014 private JPanel
getJPanelFdf() {
1015 if (jPanelFdf
== null) {
1016 jPanelFdf
= new JPanel();
1017 jPanelFdf
.setLayout(new BorderLayout());
1019 jPanelFdf
.add(getJPanelFdfN(), java
.awt
.BorderLayout
.NORTH
);
1020 jPanelFdf
.add(getJPanelFdfS(), java
.awt
.BorderLayout
.SOUTH
);
1021 jPanelFdf
.add(getJSplitPaneFdfC(), java
.awt
.BorderLayout
.CENTER
);
1022 jPanelFdf
.addComponentListener(new ComponentAdapter(){
1023 public void componentShown(ComponentEvent e
) {
1024 // if (ffc.getFlashDefinitionFile() != null) {
1025 // jTextFieldFdf.setText(ffc.getFlashDefinitionFile());
1026 // initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText());
1030 public void componentHidden(ComponentEvent e
) {
1031 if (jCheckBoxFdf
.isSelected()) {
1032 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1041 * This method initializes jCheckBox
1043 * @return javax.swing.JCheckBox
1045 private JCheckBox
getJCheckBoxFdf() {
1046 if (jCheckBoxFdf
== null) {
1047 jCheckBoxFdf
= new JCheckBox();
1048 jCheckBoxFdf
.setText("Flash Definition File");
1049 jCheckBoxFdf
.addItemListener(new ItemListener() {
1051 public void itemStateChanged(ItemEvent arg0
) {
1052 // TODO Auto-generated method stub
1053 if (jCheckBoxFdf
.isSelected()){
1054 jTextFieldFdf
.setEnabled(true);
1055 jButtonFdfBrowse
.setEnabled(true);
1058 getFvInFdfTableModel().setRowCount(0);
1059 jTextFieldFdf
.setEnabled(false);
1060 jTextFieldFdf
.setText("");
1061 jButtonFdfBrowse
.setEnabled(false);
1062 ffc
.genFlashDefinitionFile("");
1063 docConsole
.setSaved(false);
1064 int selectedBackup
= selectedRowInFvAdditionalTable
;
1065 selectedRowInFvAdditionalTable
= -1;
1066 initFvAdditionalTable();
1067 selectedRowInFvAdditionalTable
= selectedBackup
;
1072 return jCheckBoxFdf
;
1076 * This method initializes jTextField3
1078 * @return javax.swing.JTextField
1080 private JTextField
getJTextFieldFdf() {
1081 if (jTextFieldFdf
== null) {
1082 jTextFieldFdf
= new JTextField();
1083 jTextFieldFdf
.setEnabled(false);
1084 jTextFieldFdf
.setEditable(false);
1085 jTextFieldFdf
.setPreferredSize(new Dimension(300, 20));
1086 jTextFieldFdf
.addFocusListener(new java
.awt
.event
.FocusAdapter() {
1087 public void focusLost(java
.awt
.event
.FocusEvent e
) {
1088 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1092 return jTextFieldFdf
;
1096 * This method initializes jButton5
1098 * @return javax.swing.JButton
1100 private JButton
getJButtonFdfBrowse() {
1101 if (jButtonFdfBrowse
== null) {
1102 jButtonFdfBrowse
= new JButton();
1103 jButtonFdfBrowse
.setEnabled(false);
1104 jButtonFdfBrowse
.setText("Browse");
1105 jButtonFdfBrowse
.setPreferredSize(new Dimension(78, 20));
1106 jButtonFdfBrowse
.addActionListener(new AbstractAction(){
1110 private static final long serialVersionUID
= 1L;
1112 public void actionPerformed(ActionEvent e
) {
1113 // TODO Auto-generated method stub
1114 String wsDir
= System
.getenv("WORKSPACE");
1115 JFileChooser chooser
= new JFileChooser(wsDir
);
1116 chooser
.setMultiSelectionEnabled(false);
1117 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1118 int retval
= chooser
.showOpenDialog(frame
);
1119 if (retval
== JFileChooser
.APPROVE_OPTION
) {
1121 File theFile
= chooser
.getSelectedFile();
1122 String filePath
= theFile
.getPath();
1123 if (!filePath
.startsWith(wsDir
)) {
1124 JOptionPane
.showMessageDialog(frame
, "You can only select files in current WORKSPACE.");
1127 jTextFieldFdf
.setText(filePath
.substring(wsDir
.length() + 1).replace('\\', '/'));
1128 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1129 docConsole
.setSaved(false);
1130 initFvInFdfTable(filePath
);
1136 return jButtonFdfBrowse
;
1139 private void initFvAttributes () {
1140 if (ffc
.getFvImagesFvImageCount("Attributes") == 0 && ffc
.getFvImagesFvImageCount("Components") == 0) {
1143 String
[][] saa
= new String
[ffc
.getFvImagesFvImageCount("Attributes")][2];
1144 ffc
.getFvImagesFvImages(saa
, "Attributes");
1147 while (i
< saa
.length
) {
1148 fvImageParaTableModel
.addRow(saa
[i
]);
1152 saa
= new String
[ffc
.getFvImagesFvImageCount("Components")][2];
1153 ffc
.getFvImagesFvImages(saa
, "Components");
1155 while (i
< saa
.length
) {
1156 fvImageParaTableModel
.addRow(saa
[i
]);
1160 saa
= new String
[ffc
.getFvImagesNameValueCount()][2];
1161 ffc
.getFvImagesNameValues(saa
);
1162 for (int m
= 0; m
< saa
.length
; ++m
) {
1163 fvPropertyTableModel
.addRow(saa
[m
]);
1167 private void initFvAdditionalTable() {
1168 Vector
<String
> vFvNames
= new Vector
<String
>();
1169 ffc
.getFvImagesFvImageFvImageNames(vFvNames
);
1170 for (int i
= 0; i
< vFvNames
.size(); ++i
) {
1171 String fvName
= vFvNames
.get(i
);
1172 if (fvNameExists(fvName
)) {
1175 fvAdditionalTableModel
.addRow(getBasicFvInfo(fvName
));
1176 addTabForFv(new FvInfoFromFdf(fvName
, "", ""));
1180 private void initFvInFdfTable(String fdfPath
){
1181 Vector
<FvInfoFromFdf
> vFvInfo
= new Vector
<FvInfoFromFdf
>();
1182 getFvInfoFromFdf(fdfPath
, vFvInfo
);
1183 getFlashInfoFromFdf (fdfPath
);
1184 if (!erasePolarity
.equals("1") && !erasePolarity
.equals("0")) {
1185 JOptionPane
.showMessageDialog(frame
, "FDF file does NOT contain valid Erase Polarity.");
1188 ffc
.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity
);
1191 // BugBug: assume all blocks have same size;
1193 String blkSize
= defaultBlkSize
;
1194 if (vBlockSize
.size() > 0) {
1195 blkSize
= vBlockSize
.get(0);
1196 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1197 JOptionPane
.showMessageDialog(frame
, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");
1198 blkSize
= defaultBlkSize
;
1201 determinedFvBlockSize
= blkSize
;
1203 getFvInFdfTableModel().setRowCount(0);
1204 Vector
<String
> vExistingFvNameInFpd
= new Vector
<String
>();
1205 ffc
.getFvImagesFvImageFvImageNames(vExistingFvNameInFpd
);
1206 for (int j
= 0; j
< vFvInfo
.size(); ++j
) {
1207 FvInfoFromFdf fvInfo
= vFvInfo
.get(j
);
1208 String
[] row
= {fvInfo
.getFvName(), fvInfo
.getSize(), fvInfo
.getEfiFileName()};
1210 if (row
[0].length() > 0 && !vExistingFvNameInFpd
.contains(row
[0])) {
1211 ffc
.addFvImageFvImageNames(new String
[]{row
[0]});
1214 // if FV addtional table contains the same FV from fdf file, remove that row.
1215 for (int k
= 0; k
< jTableFvAdditional
.getRowCount(); ++k
) {
1216 if (fvAdditionalTableModel
.getValueAt(k
, 0).equals(row
[0])) {
1217 fvAdditionalTableModel
.removeRow(k
);
1220 getFvInFdfTableModel().addRow(row
);
1222 int blockSize
= Integer
.decode(blkSize
);
1223 int fvSize
= Integer
.decode(row
[1]);
1224 int numBlocks
= fvSize
/blockSize
;
1225 HashMap
<String
, String
> mOptions
= new HashMap
<String
, String
>();
1226 // if no options for this FV before, generate a new options entry for this FV.
1227 if (ffc
.getFvImagesFvImageWithName(row
[0], "Options") == null) {
1229 mOptions
.put("EFI_BLOCK_SIZE", blkSize
);
1230 mOptions
.put("EFI_NUM_BLOCKS", numBlocks
+"");
1231 mOptions
.put("EFI_FILE_NAME", row
[2]);
1232 ffc
.genFvImagesFvImage(new String
[]{row
[0]}, "Options", mOptions
);
1236 ffc
.getFvImagesFvImageOptions(row
[0], mOptions
);
1237 if (mOptions
.get("EFI_BLOCK_SIZE") == null || !mOptions
.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize
)) {
1238 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_BLOCK_SIZE", blkSize
, null);
1241 if (mOptions
.get("EFI_NUM_BLOCKS") == null || Integer
.decode(mOptions
.get("EFI_NUM_BLOCKS")) != numBlocks
) {
1242 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_NUM_BLOCKS", numBlocks
+ "", null);
1245 if (mOptions
.get("EFI_FILE_NAME") == null || !mOptions
.get("EFI_FILE_NAME").equals(row
[2])) {
1246 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_FILE_NAME", row
[2], null);
1252 catch (NumberFormatException e
){
1253 JOptionPane
.showMessageDialog(frame
, e
.getMessage());
1257 for (int k
= 0; k
< vFvInfo
.size(); ++k
) {
1258 FvInfoFromFdf fvInfo
= vFvInfo
.get(k
);
1259 addTabForFv(fvInfo
);
1264 private void addTabForFv (FvInfoFromFdf fvInfo
) {
1265 String fvName
= fvInfo
.getFvName();
1266 String outputFile
= fvInfo
.getEfiFileName();
1267 int index
= jTabbedPane
.indexOfTab(fvName
);
1268 if (index
>= startIndexOfDynamicTab
) {
1271 jTabbedPane
.addTab(fvName
, null, new ModuleOrderPane(fvName
, outputFile
), null);
1274 * This method initializes jTextField4
1276 * @return javax.swing.JTextField
1278 private JTextField
getJTextFieldFvImageOptName() {
1279 if (jTextFieldFvImageOptName
== null) {
1280 jTextFieldFvImageOptName
= new JTextField();
1281 jTextFieldFvImageOptName
.setEnabled(true);
1282 jTextFieldFvImageOptName
.setPreferredSize(new Dimension(100, 20));
1284 return jTextFieldFvImageOptName
;
1288 * This method initializes jTextField5
1290 * @return javax.swing.JTextField
1292 private JTextField
getJTextFieldFvImageOptValue() {
1293 if (jTextFieldFvImageOptValue
== null) {
1294 jTextFieldFvImageOptValue
= new JTextField();
1295 jTextFieldFvImageOptValue
.setEnabled(true);
1296 jTextFieldFvImageOptValue
.setPreferredSize(new Dimension(100, 20));
1298 return jTextFieldFvImageOptValue
;
1302 * This method initializes jPanel8
1304 * @return javax.swing.JPanel
1306 private JPanel
getJPanelFvImageOptsButtonGroup() {
1307 if (jPanelFvImageOptsButtonGroup
== null) {
1308 jPanelFvImageOptsButtonGroup
= new JPanel();
1309 jPanelFvImageOptsButtonGroup
.setPreferredSize(new Dimension(80, 55));
1310 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptAdd(), null);
1311 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptDel(), null);
1313 return jPanelFvImageOptsButtonGroup
;
1317 * This method initializes jButton7
1319 * @return javax.swing.JButton
1321 private JButton
getJButtonFvImageOptAdd() {
1322 if (jButtonFvImageOptAdd
== null) {
1323 jButtonFvImageOptAdd
= new JButton();
1324 jButtonFvImageOptAdd
.setEnabled(true);
1325 jButtonFvImageOptAdd
.setText("Add");
1326 jButtonFvImageOptAdd
.setPreferredSize(new Dimension(80, 20));
1327 jButtonFvImageOptAdd
.addActionListener(new AbstractAction() {
1331 private static final long serialVersionUID
= 1L;
1333 public void actionPerformed(ActionEvent e
) {
1334 if (jTextFieldFvImageOptName
.getText().length() > 0 && jTextFieldFvImageOptValue
.getText().length() > 0){
1335 int selectedRow
= jTableFvInfo
.getSelectedRow();
1336 if (selectedRow
< 0) {
1340 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1341 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1342 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1343 String
[] row
= {jTextFieldFvImageOptName
.getText(), jTextFieldFvImageOptValue
.getText()};
1345 if (fvImagePos
< 0) {
1349 //append options to FvImage.
1350 ffc
.setFvImagesFvImageNameValue(fvImagePos
, row
[0], row
[1]);
1352 docConsole
.setSaved(false);
1353 fvOptionTableModel
.addRow(row
);
1354 jTableFvImageOpts
.changeSelection(jTableFvImageOpts
.getRowCount() - 1, 0, false, false);
1359 return jButtonFvImageOptAdd
;
1363 * This method initializes jButton8
1365 * @return javax.swing.JButton
1367 private JButton
getJButtonFvImageOptDel() {
1368 if (jButtonFvImageOptDel
== null) {
1369 jButtonFvImageOptDel
= new JButton();
1370 jButtonFvImageOptDel
.setEnabled(true);
1371 jButtonFvImageOptDel
.setText("Delete");
1372 jButtonFvImageOptDel
.setPreferredSize(new Dimension(80, 20));
1373 jButtonFvImageOptDel
.addActionListener(new AbstractAction() {
1377 private static final long serialVersionUID
= 1L;
1379 public void actionPerformed(ActionEvent e
) {
1380 if (jTableFvImageOpts
.getSelectedRow() >= 0){
1381 int selectedRow
= jTableFvInfo
.getSelectedRow();
1382 if (selectedRow
< 0) {
1386 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1387 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1388 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1389 if (fvImagePos
< 0) {
1393 String optName
= fvOptionTableModel
.getValueAt(jTableFvImageOpts
.getSelectedRow(), 0)+"";
1394 ffc
.removeFvImageNameValue(fvImagePos
, optName
);
1395 docConsole
.setSaved(false);
1396 fvOptionTableModel
.removeRow(jTableFvImageOpts
.getSelectedRow());
1401 return jButtonFvImageOptDel
;
1405 * This method initializes jScrollPane
1407 * @return javax.swing.JScrollPane
1409 private JScrollPane
getJScrollPane() {
1410 if (jScrollPane
== null) {
1411 jScrollPane
= new JScrollPane();
1412 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(350,100));
1413 jScrollPane
.setViewportView(getJTableFvImageOpts());
1419 * This method initializes jTable3
1421 * @return javax.swing.JTable
1423 private JTable
getJTableFvImageOpts() {
1424 if (jTableFvImageOpts
== null) {
1425 fvOptionTableModel
= new IDefaultTableModel();
1426 fvOptionTableModel
.addColumn("Name");
1427 fvOptionTableModel
.addColumn("Value");
1428 jTableFvImageOpts
= new JTable(fvOptionTableModel
);
1430 jTableFvImageOpts
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
1431 jTableFvImageOpts
.setRowHeight(20);
1434 return jTableFvImageOpts
;
1438 * This method initializes jButton9
1440 * @return javax.swing.JButton
1442 private JButton
getJButtonUpdateFvImage() {
1443 if (jButtonUpdateFvImage
== null) {
1444 jButtonUpdateFvImage
= new JButton();
1445 jButtonUpdateFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
1446 jButtonUpdateFvImage
.setActionCommand("Update");
1447 jButtonUpdateFvImage
.setText("Update FV Attributes");
1448 jButtonUpdateFvImage
.setVisible(false);
1449 jButtonUpdateFvImage
.addActionListener(new java
.awt
.event
.ActionListener() {
1450 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1451 int row
= jTableFvInfo
.getSelectedRow();
1452 if (jTableFvInfo
.isEditing()) {
1453 jTableFvInfo
.getCellEditor().stopCellEditing();
1455 if (jTableFvImageOpts
.isEditing()) {
1456 jTableFvImageOpts
.getCellEditor().stopCellEditing();
1459 //ToDo Check data validity before update
1460 String name
= fvImageParaTableModel
.getValueAt(row
, 0) + "";
1461 String type
= fvImageParaTableModel
.getValueAt(row
, 1) + "";
1463 LinkedHashMap
<String
, String
> lhm
= new LinkedHashMap
<String
, String
>();
1464 getOptionNameValue(lhm
);
1466 docConsole
.setSaved(false);
1467 ffc
.updateFvImagesFvImage(row
, name
.split(" "), type
, lhm
);
1472 return jButtonUpdateFvImage
;
1476 * This method initializes jPanelFdfN
1478 * @return javax.swing.JPanel
1480 private JPanel
getJPanelFdfN() {
1481 if (jPanelFdfN
== null) {
1482 jPanelFdfN
= new JPanel();
1483 jPanelFdfN
.add(getJCheckBoxFdf(), null);
1484 jPanelFdfN
.add(getJTextFieldFdf(), null);
1485 jPanelFdfN
.add(getJButtonFdfBrowse(), null);
1491 * This method initializes jPanelFdfS
1493 * @return javax.swing.JPanel
1495 private JPanel
getJPanelFdfS() {
1496 if (jPanelFdfS
== null) {
1497 FlowLayout flowLayout4
= new FlowLayout();
1498 flowLayout4
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1499 jPanelFdfS
= new JPanel();
1500 jPanelFdfS
.setLayout(flowLayout4
);
1501 jPanelFdfS
.add(getJButtonAddFv(), null);
1502 jPanelFdfS
.add(getJButtonDelFv(), null);
1503 jPanelFdfS
.add(getJButtonAddFvOptions(), null);
1509 * This method initializes jSplitPaneFdfC
1511 * @return javax.swing.JSplitPane
1513 private JSplitPane
getJSplitPaneFdfC() {
1514 if (jSplitPaneFdfC
== null) {
1515 jSplitPaneFdfC
= new JSplitPane();
1516 jSplitPaneFdfC
.setOrientation(javax
.swing
.JSplitPane
.VERTICAL_SPLIT
);
1517 jSplitPaneFdfC
.setDividerSize(5);
1518 jSplitPaneFdfC
.setTopComponent(getJPanelFdfCTop());
1519 jSplitPaneFdfC
.setBottomComponent(getJPanelFdfCBottom());
1520 jSplitPaneFdfC
.setDividerLocation(280);
1522 return jSplitPaneFdfC
;
1526 * This method initializes jPanelFdfCTop
1528 * @return javax.swing.JPanel
1530 private JPanel
getJPanelFdfCTop() {
1531 if (jPanelFdfCTop
== null) {
1532 jPanelFdfCTop
= new JPanel();
1533 jPanelFdfCTop
.setLayout(new BorderLayout());
1534 jPanelFdfCTop
.add(getJPanelFdfCTopN(), java
.awt
.BorderLayout
.NORTH
);
1535 jPanelFdfCTop
.add(getJPanelFdfCTopS(), java
.awt
.BorderLayout
.SOUTH
);
1536 jPanelFdfCTop
.add(getJScrollPaneFvInFdf(), java
.awt
.BorderLayout
.CENTER
);
1538 return jPanelFdfCTop
;
1542 * This method initializes jPanelFdfCBottom
1544 * @return javax.swing.JPanel
1546 private JPanel
getJPanelFdfCBottom() {
1547 if (jPanelFdfCBottom
== null) {
1548 jPanelFdfCBottom
= new JPanel();
1549 jPanelFdfCBottom
.setLayout(new BorderLayout());
1550 jPanelFdfCBottom
.add(getJPanelFdfCBottomN(), java
.awt
.BorderLayout
.NORTH
);
1551 jPanelFdfCBottom
.add(getJScrollPaneFvAdditional(), java
.awt
.BorderLayout
.CENTER
);
1553 return jPanelFdfCBottom
;
1557 * This method initializes jPanelFdfCTopN
1559 * @return javax.swing.JPanel
1561 private JPanel
getJPanelFdfCTopN() {
1562 if (jPanelFdfCTopN
== null) {
1563 jLabelFvInFdf
= new JLabel();
1564 jLabelFvInFdf
.setText("FVs in Flash Definition File");
1565 jPanelFdfCTopN
= new JPanel();
1566 jPanelFdfCTopN
.add(jLabelFvInFdf
, null);
1568 return jPanelFdfCTopN
;
1572 * This method initializes jPanelFdfCTopS
1574 * @return javax.swing.JPanel
1576 private JPanel
getJPanelFdfCTopS() {
1577 if (jPanelFdfCTopS
== null) {
1578 FlowLayout flowLayout1
= new FlowLayout();
1579 flowLayout1
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1580 jPanelFdfCTopS
= new JPanel();
1581 jPanelFdfCTopS
.setLayout(flowLayout1
);
1582 jPanelFdfCTopS
.add(getJButtonFvInFdfOptions(), null);
1584 return jPanelFdfCTopS
;
1588 * This method initializes jPanelFdfCTopC
1590 * @return javax.swing.JPanel
1592 // private JPanel getJPanelFdfCTopC() {
1593 // if (jPanelFdfCTopC == null) {
1594 // jPanelFdfCTopC = new JPanel();
1595 // jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null);
1597 // return jPanelFdfCTopC;
1601 * This method initializes jPanelFdfCBottomN
1603 * @return javax.swing.JPanel
1605 private JPanel
getJPanelFdfCBottomN() {
1606 if (jPanelFdfCBottomN
== null) {
1607 jLabelFvAdditional
= new JLabel();
1608 jLabelFvAdditional
.setText("Additional FVs");
1609 jPanelFdfCBottomN
= new JPanel();
1610 jPanelFdfCBottomN
.add(jLabelFvAdditional
, null);
1612 return jPanelFdfCBottomN
;
1616 * This method initializes jPanelFdfCBottomC
1618 * @return javax.swing.JPanel
1620 // private JPanel getJPanelFdfCBottomC() {
1621 // if (jPanelFdfCBottomC == null) {
1622 // jPanelFdfCBottomC = new JPanel();
1623 // jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);
1625 // return jPanelFdfCBottomC;
1629 * This method initializes jScrollPaneFvInFdf
1631 * @return javax.swing.JScrollPane
1633 private JScrollPane
getJScrollPaneFvInFdf() {
1634 if (jScrollPaneFvInFdf
== null) {
1635 jScrollPaneFvInFdf
= new JScrollPane();
1636 jScrollPaneFvInFdf
.setPreferredSize(new java
.awt
.Dimension(653,200));
1637 jScrollPaneFvInFdf
.setViewportView(getJTableFvInFdf());
1639 return jScrollPaneFvInFdf
;
1643 * This method initializes jTableFvInFdf
1645 * @return javax.swing.JTable
1647 private JTable
getJTableFvInFdf() {
1648 if (jTableFvInFdf
== null) {
1649 jTableFvInFdf
= new JTable();
1650 jTableFvInFdf
.setRowHeight(20);
1651 jTableFvInFdf
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1652 jTableFvInFdf
.setModel(getFvInFdfTableModel());
1654 return jTableFvInFdf
;
1658 * This method initializes fvInFdfTableModel
1660 * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel
1662 private IDefaultTableModel
getFvInFdfTableModel() {
1663 if (fvInFdfTableModel
== null) {
1664 fvInFdfTableModel
= new IDefaultTableModel();
1665 fvInFdfTableModel
.addColumn("FV Name");
1666 fvInFdfTableModel
.addColumn("Size");
1667 fvInFdfTableModel
.addColumn("Corresponding File Name");
1669 return fvInFdfTableModel
;
1673 * This method initializes jButtonFvInFdfOptions
1675 * @return javax.swing.JButton
1677 private JButton
getJButtonFvInFdfOptions() {
1678 if (jButtonFvInFdfOptions
== null) {
1679 jButtonFvInFdfOptions
= new JButton();
1680 jButtonFvInFdfOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1681 jButtonFvInFdfOptions
.setEnabled(true);
1682 jButtonFvInFdfOptions
.setText("Options");
1683 jButtonFvInFdfOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1684 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1685 int selectedRow
= jTableFvInFdf
.getSelectedRow();
1686 if (selectedRow
< 0) {
1689 String fvName
= jTableFvInFdf
.getValueAt(selectedRow
, 0)+"";
1690 if (fvName
.length() == 0) {
1693 DefaultTableModel dtm
= getFvInFdfOptTableModel();
1694 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1698 return jButtonFvInFdfOptions
;
1701 private DefaultTableModel
getFvInFdfOptTableModel() {
1702 if (fvInFdfOptTableModel
== null) {
1703 fvInFdfOptTableModel
= new FvOptsTableModel();
1704 fvInFdfOptTableModel
.addColumn("Name");
1705 fvInFdfOptTableModel
.addColumn("Value");
1706 Vector
<Object
> v
= new Vector
<Object
>();
1707 v
.add("EFI_BLOCK_SIZE");
1708 v
.add("EFI_NUM_BLOCKS");
1709 v
.add("EFI_FILE_NAME");
1710 fvInFdfOptTableModel
.setVKeyWords(v
);
1711 fvInFdfOptTableModel
.setVNonEditableName(v
);
1713 return fvInFdfOptTableModel
;
1716 private DefaultTableModel
getFvAdditionalOptTableModel() {
1717 if (fvAdditionalOptTableModel
== null) {
1718 fvAdditionalOptTableModel
= new FvOptsTableModel();
1719 fvAdditionalOptTableModel
.addColumn("Name");
1720 fvAdditionalOptTableModel
.addColumn("Value");
1721 Vector
<Object
> v
= new Vector
<Object
>();
1722 v
.add("EFI_BLOCK_SIZE");
1723 v
.add("EFI_NUM_BLOCKS");
1724 v
.add("EFI_FILE_NAME");
1725 fvAdditionalOptTableModel
.setVNonEditableName(v
);
1727 return fvAdditionalOptTableModel
;
1731 * This method initializes jScrollPaneFvAdditional
1733 * @return javax.swing.JScrollPane
1735 private JScrollPane
getJScrollPaneFvAdditional() {
1736 if (jScrollPaneFvAdditional
== null) {
1737 jScrollPaneFvAdditional
= new JScrollPane();
1738 jScrollPaneFvAdditional
.setPreferredSize(new java
.awt
.Dimension(653,200));
1739 jScrollPaneFvAdditional
.setViewportView(getJTableFvAdditional());
1741 return jScrollPaneFvAdditional
;
1745 * This method initializes jTableFvAdditional
1747 * @return javax.swing.JTable
1749 private JTable
getJTableFvAdditional() {
1750 if (jTableFvAdditional
== null) {
1751 jTableFvAdditional
= new JTable();
1752 jTableFvAdditional
.setRowHeight(20);
1753 jTableFvAdditional
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1754 jTableFvAdditional
.setModel(getFvAdditionalTableModel());
1756 jTableFvAdditional
.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
1757 public void valueChanged(ListSelectionEvent e
) {
1758 if (e
.getValueIsAdjusting()) {
1761 ListSelectionModel lsm
= (ListSelectionModel
) e
.getSource();
1762 if (lsm
.isSelectionEmpty()) {
1765 selectedRowInFvAdditionalTable
= lsm
.getMinSelectionIndex();
1766 oldFvName
= jTableFvAdditional
.getValueAt(selectedRowInFvAdditionalTable
, 0)+"";
1771 jTableFvAdditional
.getModel().addTableModelListener(new TableModelListener() {
1772 public void tableChanged(TableModelEvent arg0
) {
1773 // TODO Auto-generated method stub
1774 int row
= arg0
.getFirstRow();
1775 int col
= arg0
.getColumn();
1776 TableModel m
= (TableModel
) arg0
.getSource();
1778 if (arg0
.getType() == TableModelEvent
.UPDATE
) {
1780 String newFvName
= m
.getValueAt(row
, 0) + "";
1781 if (newFvName
.equals(oldFvName
)) {
1784 if (fvNameExists(newFvName
)) {
1785 JOptionPane
.showMessageDialog(frame
, "This FV already exists. Please choose another FV name.");
1786 m
.setValueAt(oldFvName
, row
, 0);
1790 tabIndexForFv
= jTabbedPane
.indexOfTab(oldFvName
);
1791 if (tabIndexForFv
>= startIndexOfDynamicTab
) {
1792 jTabbedPane
.setTitleAt(tabIndexForFv
, newFvName
);
1793 // change FvName in UserExtensions
1794 ffc
.updateBuildOptionsUserExtensions(oldFvName
, newFvName
);
1795 // change FvBinding in ModuleSA
1796 ffc
.appendFvBindingFor(oldFvName
, newFvName
);
1797 ffc
.removeFvBindingAll(oldFvName
);
1798 // change FvImageNames in Flash
1799 ffc
.updateFvImageNameAll(oldFvName
, newFvName
);
1802 jTabbedPane
.addTab(newFvName
, new ModuleOrderPane(newFvName
, ""));
1803 // Add FvImageNames in Flash
1804 String
[] fvNames
= {newFvName
};
1805 ffc
.addFvImageFvImageNames(fvNames
);
1807 docConsole
.setSaved(false);
1808 oldFvName
= newFvName
;
1811 if (col
== 1 && !sizeFromOptionDlg
) {
1812 String fvSize
= m
.getValueAt(row
, col
) + "";
1813 if (!DataValidation
.isInt(fvSize
) && !DataValidation
.isHexDoubleWordDataType(fvSize
)) {
1814 JOptionPane
.showMessageDialog(frame
, "FV size should be Integer or Hex format.");
1817 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
1818 ffc
.getFvImagesFvImageOptions(oldFvName
, mFvOpts
);
1819 String blkSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
1820 if (blkSize
== null) {
1821 if (determinedFvBlockSize
!= null) {
1822 blkSize
= determinedFvBlockSize
;
1825 blkSize
= defaultBlkSize
;
1827 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", blkSize
, null);
1828 int fs
= Integer
.decode(fvSize
);
1829 int bs
= Integer
.decode(blkSize
);
1830 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"", null);
1831 docConsole
.setSaved(false);
1834 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1835 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
);
1836 if (retVal
== JOptionPane
.YES_OPTION
) {
1837 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", defaultBlkSize
, null);
1838 int fs
= Integer
.decode(fvSize
);
1839 int bs
= Integer
.decode(defaultBlkSize
);
1840 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"", null);
1841 docConsole
.setSaved(false);
1849 int fs
= Integer
.decode(fvSize
);
1850 int bs
= Integer
.decode(blkSize
);
1851 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"", null);
1852 docConsole
.setSaved(false);
1856 if (col
== 2 && !fileFromOptionDlg
) {
1857 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_FILE_NAME", m
.getValueAt(row
, col
)+"", null);
1858 docConsole
.setSaved(false);
1865 return jTableFvAdditional
;
1868 private boolean fvNameExistsInFvInFdfTable (String fvName
) {
1869 for (int i
= 0; i
< jTableFvInFdf
.getRowCount(); ++i
) {
1870 if (fvInFdfTableModel
.getValueAt(i
, 0).equals(fvName
)) {
1877 private boolean fvNameExists (String fvName
) {
1878 if (fvNameExistsInFvInFdfTable(fvName
)) {
1882 for (int j
= 0; j
< jTableFvAdditional
.getRowCount(); ++j
) {
1883 if (fvAdditionalTableModel
.getValueAt(j
, 0).equals(fvName
) && j
!= selectedRowInFvAdditionalTable
) {
1891 * This method initializes fvAdditionalTableModel
1893 * @return javax.swing.table.DefaultTableModel
1895 private DefaultTableModel
getFvAdditionalTableModel() {
1896 if (fvAdditionalTableModel
== null) {
1897 fvAdditionalTableModel
= new DefaultTableModel();
1898 fvAdditionalTableModel
.addColumn("FV Name");
1899 fvAdditionalTableModel
.addColumn("Size");
1900 fvAdditionalTableModel
.addColumn("Corresponding File Name");
1902 return fvAdditionalTableModel
;
1906 * This method initializes jButtonAddFv
1908 * @return javax.swing.JButton
1910 private JButton
getJButtonAddFv() {
1911 if (jButtonAddFv
== null) {
1912 jButtonAddFv
= new JButton();
1913 jButtonAddFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1914 jButtonAddFv
.setEnabled(true);
1915 jButtonAddFv
.setText("New");
1916 jButtonAddFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1917 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1918 if (jTableFvAdditional
.isEditing()) {
1919 jTableFvAdditional
.getCellEditor().stopCellEditing();
1921 String
[] row
= {"", "", ""};
1922 fvAdditionalTableModel
.addRow(row
);
1926 return jButtonAddFv
;
1930 * This method initializes jButtonDelFv
1932 * @return javax.swing.JButton
1934 private JButton
getJButtonDelFv() {
1935 if (jButtonDelFv
== null) {
1936 jButtonDelFv
= new JButton();
1937 jButtonDelFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1938 jButtonDelFv
.setEnabled(true);
1939 jButtonDelFv
.setText("Delete");
1940 jButtonDelFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1941 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1942 //delete row in FvAdditional table.
1943 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1944 if (selectedRow
< 0) {
1947 String fvName
= fvAdditionalTableModel
.getValueAt(selectedRow
, 0) + "";
1948 fvAdditionalTableModel
.removeRow(selectedRow
);
1950 //delete tab with selected FV name.
1952 jTabbedPane
.removeTabAt(jTabbedPane
.indexOfTab(fvName
));
1953 //delete FV Name from FvImages element.
1954 ffc
.updateFvImageNameAll(fvName
, null);
1955 //delete FvBinding from ModuleSA.
1956 ffc
.removeFvBindingAll(fvName
);
1957 docConsole
.setSaved(false);
1961 return jButtonDelFv
;
1965 * This method initializes jButtonAddFvOptions
1967 * @return javax.swing.JButton
1969 private JButton
getJButtonAddFvOptions() {
1970 if (jButtonAddFvOptions
== null) {
1971 jButtonAddFvOptions
= new JButton();
1972 jButtonAddFvOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1973 jButtonAddFvOptions
.setEnabled(true);
1974 jButtonAddFvOptions
.setText("Options");
1975 jButtonAddFvOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1976 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1977 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1978 if (selectedRow
< 0) {
1981 String fvName
= jTableFvAdditional
.getValueAt(selectedRow
, 0)+"";
1982 String oldFvSize
= jTableFvAdditional
.getValueAt(selectedRow
, 1)+"";
1983 String oldFileName
= jTableFvAdditional
.getValueAt(selectedRow
, 2)+"";
1984 if (fvName
.length() == 0) {
1987 DefaultTableModel dtm
= getFvAdditionalOptTableModel();
1988 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1990 String
[] updatedFvInfo
= getBasicFvInfo (fvName
);
1991 if (!oldFvSize
.equalsIgnoreCase(updatedFvInfo
[1])) {
1992 sizeFromOptionDlg
= true;
1993 jTableFvAdditional
.setValueAt(updatedFvInfo
[1], selectedRow
, 1);
1994 sizeFromOptionDlg
= false;
1996 if (!oldFileName
.equals(updatedFvInfo
[2])) {
1997 fileFromOptionDlg
= true;
1998 jTableFvAdditional
.setValueAt(updatedFvInfo
[2], selectedRow
, 2);
1999 fileFromOptionDlg
= false;
2004 return jButtonAddFvOptions
;
2007 private String
[] getBasicFvInfo (String fvName
) {
2008 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
2009 ffc
.getFvImagesFvImageOptions(fvName
, mFvOpts
);
2011 String numBlks
= "";
2014 if (mFvOpts
.get("EFI_FILE_NAME") != null) {
2015 fvFile
= mFvOpts
.get("EFI_FILE_NAME");
2017 if (mFvOpts
.get("EFI_BLOCK_SIZE") != null && mFvOpts
.get("EFI_NUM_BLOCKS") != null) {
2018 bSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
2019 numBlks
= mFvOpts
.get("EFI_NUM_BLOCKS");
2020 boolean blockSizeWellFormat
= true;
2021 boolean numOfBlockWellFormat
= true;
2022 if (!DataValidation
.isHexDoubleWordDataType(bSize
) && !DataValidation
.isInt(bSize
)) {
2023 blockSizeWellFormat
= false;
2024 JOptionPane
.showMessageDialog(frame
, fvName
+ " block size bad format.");
2026 if (!DataValidation
.isHexDoubleWordDataType(numBlks
) && !DataValidation
.isInt(numBlks
)) {
2027 numOfBlockWellFormat
= false;
2028 JOptionPane
.showMessageDialog(frame
, fvName
+ " number of blocks bad format.");
2030 if (blockSizeWellFormat
&& numOfBlockWellFormat
) {
2031 int size
= Integer
.decode(bSize
);
2032 int num
= Integer
.decode(numBlks
);
2033 fvSize
= "0x" + Integer
.toHexString(size
*num
);
2037 return new String
[]{fvName
, fvSize
, fvFile
};
2042 * This method initializes jPanelBgFvName
2044 * @return javax.swing.JPanel
2046 private JPanel
getJPanelBgFvName() {
2047 if (jPanelBgFvName
== null) {
2048 jPanelBgFvName
= new JPanel();
2049 jPanelBgFvName
.setPreferredSize(new java
.awt
.Dimension(80,55));
2050 jPanelBgFvName
.add(getJButtonFvNameAdd(), null);
2051 jPanelBgFvName
.add(getJButtonFvNameDel(), null);
2053 return jPanelBgFvName
;
2057 * This method initializes jPanelBgFvImage
2059 * @return javax.swing.JPanel
2061 private JPanel
getJPanelBgFvImage() {
2062 if (jPanelBgFvImage
== null) {
2063 jPanelBgFvImage
= new JPanel();
2064 jPanelBgFvImage
.setPreferredSize(new java
.awt
.Dimension(150,100));
2065 jPanelBgFvImage
.add(getJButtonAddFvImage(), null);
2066 jPanelBgFvImage
.add(getJButtonDelFvImage(), null);
2067 jPanelBgFvImage
.add(getJButtonUpdateFvImage(), null);
2069 return jPanelBgFvImage
;
2073 * This method initializes jPanelW
2075 * @return javax.swing.JPanel
2077 private JPanel
getJPanelW() {
2078 if (jPanelW
== null) {
2079 jPanelW
= new JPanel();
2080 jPanelW
.add(getJPanelBgFvImage(), null);
2086 * This method initializes jPanelFvImageParaN
2088 * @return javax.swing.JPanel
2090 private JPanel
getJPanelFvImageParaN() {
2091 if (jPanelFvImageParaN
== null) {
2092 FlowLayout flowLayout3
= new FlowLayout();
2093 flowLayout3
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
2094 jPanelFvImageParaN
= new JPanel();
2095 jPanelFvImageParaN
.setLayout(flowLayout3
);
2096 jPanelFvImageParaN
.add(new StarLabel(), null);
2097 jPanelFvImageParaN
.add(jLabelFvImageNames
, null);
2098 jPanelFvImageParaN
.add(jLabelFvParaName
, null);
2099 jPanelFvImageParaN
.add(getJTextFieldFvParaName(), null);
2101 return jPanelFvImageParaN
;
2105 * This method initializes jPanelFvImageParaS
2107 * @return javax.swing.JPanel
2109 private JPanel
getJPanelFvImageParaS() {
2110 if (jPanelFvImageParaS
== null) {
2111 FlowLayout flowLayout6
= new FlowLayout();
2112 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
2113 jPanelFvImageParaS
= new JPanel();
2114 jPanelFvImageParaS
.setLayout(flowLayout6
);
2115 jPanelFvImageParaS
.add(jLabelFvParaType
, null);
2116 jPanelFvImageParaS
.add(getJComboBoxFvParaType(), null);
2118 return jPanelFvImageParaS
;
2122 * This method initializes jPanelFvImageParaC
2124 * @return javax.swing.JPanel
2126 // private JPanel getJPanelFvImageParaC() {
2127 // if (jPanelFvImageParaC == null) {
2128 // jPanelFvImageParaC = new JPanel();
2129 // jPanelFvImageParaC.add(getJScrollPaneFvImageNames(), null);
2131 // return jPanelFvImageParaC;
2135 * This method initializes jPanelFvImageOptsN
2137 * @return javax.swing.JPanel
2139 private JPanel
getJPanelFvImageOptsN() {
2140 if (jPanelFvImageOptsN
== null) {
2141 jPanelFvImageOptsN
= new JPanel();
2142 jPanelFvImageOptsN
.add(jLabelOptions
, null);
2143 jPanelFvImageOptsN
.add(jLabelFvImageOptName
, null);
2144 jPanelFvImageOptsN
.add(getJTextFieldFvImageOptName(), null);
2145 jPanelFvImageOptsN
.add(jLabelFvImageOptValue
, null);
2146 jPanelFvImageOptsN
.add(getJTextFieldFvImageOptValue(), null);
2148 return jPanelFvImageOptsN
;
2152 * This method initializes jPanelFvImageOptsS
2154 * @return javax.swing.JPanel
2156 private JPanel
getJPanelFvImageOptsS() {
2157 if (jPanelFvImageOptsS
== null) {
2158 jPanelFvImageOptsS
= new JPanel();
2160 return jPanelFvImageOptsS
;
2164 * This method initializes jPanelFvImageOptsC
2166 * @return javax.swing.JPanel
2168 // private JPanel getJPanelFvImageOptsC() {
2169 // if (jPanelFvImageOptsC == null) {
2170 // jPanelFvImageOptsC = new JPanel();
2171 // jPanelFvImageOptsC.add(getJScrollPane(), null);
2173 // return jPanelFvImageOptsC;
2177 * This method initializes jPanelFvImageParaE
2179 * @return javax.swing.JPanel
2181 private JPanel
getJPanelFvImageParaE() {
2182 if (jPanelFvImageParaE
== null) {
2183 jPanelFvImageParaE
= new JPanel();
2184 jPanelFvImageParaE
.add(getJPanelBgFvName(), null);
2186 return jPanelFvImageParaE
;
2190 * This method initializes jPanelFvImageOptsE
2192 * @return javax.swing.JPanel
2194 private JPanel
getJPanelFvImageOptsE() {
2195 if (jPanelFvImageOptsE
== null) {
2196 jPanelFvImageOptsE
= new JPanel();
2197 jPanelFvImageOptsE
.add(getJPanelFvImageOptsButtonGroup(), null);
2199 return jPanelFvImageOptsE
;
2203 * This method initializes jPanelFvImageSN
2205 * @return javax.swing.JPanel
2207 private JPanel
getJPanelFvImageSN() {
2208 if (jPanelFvImageSN
== null) {
2209 jPanelFvImageSN
= new JPanel();
2210 jPanelFvImageSN
.add(getJCheckBoxFvProperty(), null);
2211 jPanelFvImageSN
.add(jLabelFvPropName
, null);
2212 jPanelFvImageSN
.add(getJTextFieldFvPropName(), null);
2213 jPanelFvImageSN
.add(jLabelFvPropValue
, null);
2214 jPanelFvImageSN
.add(getJTextFieldFvPropValue(), null);
2216 return jPanelFvImageSN
;
2220 * This method initializes jPanelFvImageSE
2222 * @return javax.swing.JPanel
2224 private JPanel
getJPanelFvImageSE() {
2225 if (jPanelFvImageSE
== null) {
2226 jPanelFvImageSE
= new JPanel();
2227 jPanelFvImageSE
.add(getJPanelFvPropButtonGroup(), null);
2229 return jPanelFvImageSE
;
2233 * This method initializes jPanelFvImageSS
2235 * @return javax.swing.JPanel
2237 private JPanel
getJPanelFvImageSS() {
2238 if (jPanelFvImageSS
== null) {
2239 jPanelFvImageSS
= new JPanel();
2241 return jPanelFvImageSS
;
2247 public static void main(String
[] args
) {
2248 // TODO Auto-generated method stub
2249 new FpdFlash().setVisible(true);
2253 * This method initializes this
2257 private void initialize() {
2258 this.setSize(660, 650);
2259 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
2260 this.setContentPane(getJContentPane());
2261 this.setTitle("FPD Flash Definitions");
2262 this.addInternalFrameListener(new InternalFrameAdapter(){
2263 public void internalFrameDeactivated(InternalFrameEvent e
){
2264 if (jTableFvProp
.isEditing()) {
2265 jTableFvProp
.getCellEditor().stopCellEditing();
2267 if (jTableFvImageNames
.isEditing()) {
2268 jTableFvImageNames
.getCellEditor().stopCellEditing();
2270 if (jTableFvInfo
.isEditing()) {
2271 jTableFvInfo
.getCellEditor().stopCellEditing();
2273 if (jTableFvAdditional
.isEditing()) {
2274 jTableFvAdditional
.getCellEditor().stopCellEditing();
2280 private void init(FpdFileContents ffc
) {
2283 jTextFieldFdf
.setText("");
2284 String fdfFile
= ffc
.getFlashDefinitionFile();
2285 if (fdfFile
!= null && fdfFile
.length() > 0) {
2286 jCheckBoxFdf
.setSelected(true);
2287 jTextFieldFdf
.setText(fdfFile
);
2288 String fdfPath
= System
.getenv("WORKSPACE") + File
.separator
+ fdfFile
;
2289 initFvInFdfTable(fdfPath
);
2292 initFvAdditionalTable();
2295 private void getOptionNameValue(Map
<String
, String
> m
){
2296 for (int i
= 0; i
< jTableFvImageOpts
.getRowCount(); ++i
) {
2297 m
.put(fvOptionTableModel
.getValueAt(i
, 0)+"", fvOptionTableModel
.getValueAt(i
, 1)+"");
2301 * This method initializes jContentPane
2303 * @return javax.swing.JPanel
2305 private JPanel
getJContentPane() {
2306 if (jContentPane
== null) {
2307 jContentPane
= new JPanel();
2308 jContentPane
.setLayout(new BorderLayout());
2309 jContentPane
.add(getJPanelContentEast(), java
.awt
.BorderLayout
.EAST
);
2310 jContentPane
.add(getJPanelContentSouth(), java
.awt
.BorderLayout
.SOUTH
);
2311 jContentPane
.add(getJPanelContentWest(), java
.awt
.BorderLayout
.WEST
);
2312 jContentPane
.add(getJPanelContentNorth(), java
.awt
.BorderLayout
.NORTH
);
2313 jContentPane
.add(getJTabbedPane(), java
.awt
.BorderLayout
.CENTER
);
2315 return jContentPane
;
2318 private void getFlashInfoFromFdf (String fdfPath
) {
2319 File fdf
= new File(fdfPath
);
2320 if (!fdf
.exists()) {
2326 FileReader reader
= new FileReader(fdf
);
2327 BufferedReader in
= new BufferedReader(reader
);
2330 while ((str
= in
.readLine()) != null) {
2334 // skip empty line, comment (start with //)
2336 if (str
.length() == 0 || str
.startsWith("//")) {
2342 if (str
.startsWith("ErasePolarity")) {
2343 erasePolarity
= str
.substring(str
.indexOf("=") + 1, str
.lastIndexOf(",")).trim();
2346 // dig into Block section.
2348 if (str
.startsWith("Block") && str
.endsWith("}")) {
2349 String
[] blockSec
= str
.split(",");
2350 String nv
= blockSec
[1].trim();
2351 String
[] sizeSec
= nv
.split("=");
2352 vBlockSize
.add(sizeSec
[1].trim());
2360 catch (Exception e
) {
2365 private void getFvInfoFromFdf(String fdfPath
, Vector
<FvInfoFromFdf
> vFvInfo
) {
2366 File fdf
= new File(fdfPath
);
2367 if (!fdf
.exists()) {
2373 FileReader reader
= new FileReader(fdf
);
2374 BufferedReader in
= new BufferedReader(reader
);
2377 while ((str
= in
.readLine()) != null) {
2381 // skip empty line, comment (start with //)
2383 if (str
.length() == 0 || str
.startsWith("//")) {
2387 // dig into Region {} section, create FvInfoFromFdf object for it.
2389 if (str
.startsWith("Region") && str
.endsWith("{")) {
2390 FvInfoFromFdf fvInfo
= new FvInfoFromFdf();
2391 boolean nameFound
= false;
2392 boolean sizeFound
= false;
2393 while ((str
= in
.readLine()) != null) {
2397 // skip empty line, comment (start with //)
2399 if (str
.length() == 0 || str
.startsWith("//")) {
2403 if (str
.startsWith("Name")) {
2404 int firstQuote
= str
.indexOf("\"");
2405 int lastQuote
= str
.lastIndexOf("\"");
2406 fvInfo
.setFvName(str
.substring(firstQuote
+ 1, lastQuote
));
2410 if (str
.startsWith("Size")) {
2411 int equalIndex
= str
.indexOf("=");
2412 int commaIndex
= str
.indexOf(",");
2413 fvInfo
.setSize(str
.substring(equalIndex
+ 1, commaIndex
).trim());
2417 if (nameFound
&& sizeFound
) {
2422 vFvInfo
.add(fvInfo
);
2425 // dig into File {} section, supply file name information to existing FvInfoFromFdf object.
2427 if (str
.startsWith("File")) {
2428 boolean fileNameFound
= false;
2429 boolean fvFound
= false;
2430 String fileName
= "";
2432 while ((str
= in
.readLine()) != null) {
2436 // skip empty line, comment (start with //)
2438 if (str
.length() == 0 || str
.startsWith("//")) {
2442 if (str
.startsWith("Name")) {
2443 int firstQuote
= str
.indexOf("\"");
2444 int lastQuote
= str
.lastIndexOf("\"");
2445 fileName
= str
.substring(firstQuote
+ 1, lastQuote
);
2446 fileNameFound
= true;
2449 if (str
.startsWith("Region")) {
2450 int firstQuote
= str
.indexOf("\"");
2451 int lastQuote
= str
.lastIndexOf("\"");
2452 fvName
= str
.substring(firstQuote
+ 1, lastQuote
);
2456 if (fileNameFound
&& fvFound
) {
2461 for (int i
= 0; i
<vFvInfo
.size(); ++i
) {
2462 if (vFvInfo
.get(i
).getFvName().equals(fvName
)) {
2463 vFvInfo
.get(i
).setEfiFileName(fileName
);
2473 catch (Exception e
) {
2479 // class ModuleSAInfo {
2480 // private int rowNumber = -1;
2481 // private String moduleGuid = null;
2482 // private String moduleVersion = null;
2483 // private String packageGuid = null;
2484 // private String packageVersion = null;
2485 // private String arch = null;
2487 // public ModuleSAInfo (String mg, String mv, String pg, String pv, String a) {
2489 // moduleVersion = mv;
2490 // packageGuid = pg;
2491 // packageVersion = pv;
2496 // * @return Returns the arch.
2498 // public String getArch() {
2503 // * @param arch The arch to set.
2505 // public void setArch(String arch) {
2506 // this.arch = arch;
2510 // * @return Returns the moduleGuid.
2512 // public String getModuleGuid() {
2513 // return moduleGuid;
2517 // * @param moduleGuid The moduleGuid to set.
2519 // public void setModuleGuid(String moduleGuid) {
2520 // this.moduleGuid = moduleGuid;
2524 // * @return Returns the moduleVersion.
2526 // public String getModuleVersion() {
2527 // return moduleVersion;
2531 // * @param moduleVersion The moduleVersion to set.
2533 // public void setModuleVersion(String moduleVersion) {
2534 // this.moduleVersion = moduleVersion;
2538 // * @return Returns the packageGuid.
2540 // public String getPackageGuid() {
2541 // return packageGuid;
2545 // * @param packageGuid The packageGuid to set.
2547 // public void setPackageGuid(String packageGuid) {
2548 // this.packageGuid = packageGuid;
2552 // * @return Returns the packageVersion.
2554 // public String getPackageVersion() {
2555 // return packageVersion;
2559 // * @param packageVersion The packageVersion to set.
2561 // public void setPackageVersion(String packageVersion) {
2562 // this.packageVersion = packageVersion;
2566 // * @return Returns the rowNumber.
2568 // public int getRowNumber() {
2569 // return rowNumber;
2573 // * @param rowNumber The rowNumber to set.
2575 // public void setRowNumber(int rowNumber) {
2576 // this.rowNumber = rowNumber;
2580 private class ModuleOrderPane
extends JPanel
{
2585 private static final long serialVersionUID
= 1L;
2586 private JPanel jPanelModOrderN
= null;
2587 private JPanel jPanelModOrderS
= null;
2588 private JPanel jPanelModOrderC
= null;
2589 private JScrollPane jScrollPaneModInFv
= null;
2590 private JTable jTableModInFv
= null;
2591 private JPanel jPanelController
= null;
2592 private JScrollPane jScrollPaneFpdModules
= null;
2593 private JTable jTableFpdModules
= null;
2594 private JButton jButtonUp
= null;
2595 private JButton jButtonInsert
= null;
2596 private JButton jButtonRemove
= null;
2597 private JButton jButtonDown
= null;
2598 private JButton jButtonOk
= null;
2599 private JButton jButtonCancel
= null;
2600 private IDefaultTableModel modInFvTableModel
= null;
2601 private IDefaultTableModel fpdModTableModel
= null;
2602 // private ArrayList<ModuleSAInfo> listTableModInFvModuleSAInfo = null;
2603 // private ArrayList<ModuleSAInfo> listTableFpdModulesModuleSAInfo = null;
2604 private String title
= null;
2605 private String outputFileName
= null;
2607 public ModuleOrderPane(String tabTitle
, String file
) {
2608 super(new BorderLayout());
2610 outputFileName
= file
;
2611 // listTableModInFvModuleSAInfo = new ArrayList<ModuleSAInfo>();
2612 // listTableFpdModulesModuleSAInfo = new ArrayList<ModuleSAInfo>();
2613 add(getJPanelModOrderN(), java
.awt
.BorderLayout
.NORTH
);
2614 add(getJPanelModOrderS(), java
.awt
.BorderLayout
.SOUTH
);
2615 add(getJPanelModOrderC(), java
.awt
.BorderLayout
.CENTER
);
2616 showModulesInFv(title
);
2617 showAllModulesInPlatform();
2620 private void showModulesInFv(String fvName
) {
2621 int size
= ffc
.getUserExtsIncModCount(fvName
);
2624 String
[][] saa
= new String
[size
][5];
2625 ffc
.getUserExtsIncMods(fvName
, saa
);
2627 for (int i
= 0; i
< size
; ++i
) {
2628 String moduleKey
= saa
[i
][0] + " " + saa
[i
][1] + " " + saa
[i
][2] + " " + saa
[i
][3];
2629 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2630 String name
= "N/A";
2632 name
= mi
.getName();
2635 String
[] row
= { name
, saa
[i
][0] , saa
[i
][1], saa
[i
][2] , saa
[i
][3], saa
[i
][4] };
2636 modInFvTableModel
.addRow(row
);
2640 // From ModuleSAs, get module guids with FvBinding = fvName.
2642 Vector
<String
[]> vModuleSA
= new Vector
<String
[]>();
2643 ffc
.getFrameworkModuleSAByFvBinding(fvName
, vModuleSA
);
2645 // If BuildOptions->UserExtensions already contain these module info,
2646 // no need to add them into table again.
2648 Iterator
<String
[]> iter
= vModuleSA
.iterator();
2649 while (iter
.hasNext()){
2650 String
[] sa
= iter
.next();
2651 if (!moduleInfoInTable (sa
, modInFvTableModel
)) {
2652 String moduleKey
= sa
[0] + " " + sa
[1] + " " + sa
[2] + " " + sa
[3];
2653 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2654 String name
= "N/A";
2656 name
= mi
.getName();
2658 String
[] row
= { name
, sa
[0] , sa
[1], sa
[2] , sa
[3], sa
[4] };
2659 modInFvTableModel
.addRow(row
);
2665 private void showAllModulesInPlatform() {
2666 int size
= ffc
.getFrameworkModulesCount();
2667 String
[][] saa
= new String
[size
][5];
2668 ffc
.getFrameworkModulesInfo(saa
);
2670 for (int i
= 0; i
< size
; ++i
) {
2671 if (moduleInfoInTable(saa
[i
], modInFvTableModel
) || moduleInfoInTable(saa
[i
], fpdModTableModel
)) {
2674 String moduleKey
= saa
[i
][0] + " " + saa
[i
][1] + " " + saa
[i
][2] + " " + saa
[i
][3];
2675 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2676 String name
= "N/A";
2678 name
= mi
.getName();
2680 String
[] row
= { name
, saa
[i
][0] , saa
[i
][1], saa
[i
][2] , saa
[i
][3], saa
[i
][4] };
2681 fpdModTableModel
.addRow(row
);
2684 TableSorter sorter
= (TableSorter
)jTableFpdModules
.getModel();
2685 sorter
.setSortState(0, TableSorter
.ASCENDING
);
2689 private boolean moduleInfoInTable (String
[] moduleInfo
, DefaultTableModel model
) {
2690 boolean matched
= false;
2691 int size
= model
.getDataVector().size();
2692 for (int i
= 0; i
< size
; ++i
) {
2693 Vector rowData
= (Vector
)model
.getDataVector().elementAt(i
);
2694 for (int j
= 1; j
< rowData
.size(); ++j
) {
2695 if (rowData
.elementAt(j
) == null && moduleInfo
[j
-1] == null) {
2698 else if (rowData
.elementAt(j
).equals("null") && moduleInfo
[j
-1] == null) {
2701 else if (rowData
.elementAt(j
) == null && moduleInfo
[j
-1].equals("null")) {
2704 else if (rowData
.elementAt(j
) != null && rowData
.elementAt(j
).toString().equalsIgnoreCase(moduleInfo
[j
-1])) {
2724 * This method initializes jPanelModOrderN
2726 * @return javax.swing.JPanel
2728 private JPanel
getJPanelModOrderN() {
2729 if (jPanelModOrderN
== null) {
2730 jPanelModOrderN
= new JPanel();
2732 return jPanelModOrderN
;
2736 * This method initializes jPanelModOrderS
2738 * @return javax.swing.JPanel
2740 private JPanel
getJPanelModOrderS() {
2741 if (jPanelModOrderS
== null) {
2742 FlowLayout flowLayout6
= new FlowLayout();
2743 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
2744 jPanelModOrderS
= new JPanel();
2745 jPanelModOrderS
.setLayout(flowLayout6
);
2746 jPanelModOrderS
.add(getJButtonOk(), null);
2747 jPanelModOrderS
.add(getJButtonCancel(), null);
2749 return jPanelModOrderS
;
2753 * This method initializes jPanelModOrderC
2755 * @return javax.swing.JPanel
2757 private JPanel
getJPanelModOrderC() {
2758 if (jPanelModOrderC
== null) {
2759 jPanelModOrderC
= new JPanel();
2760 jPanelModOrderC
.add(getJScrollPaneModInFv(), null);
2761 jPanelModOrderC
.add(getJPanelController(), null);
2762 jPanelModOrderC
.add(getJScrollPaneFpdModules(), null);
2764 return jPanelModOrderC
;
2768 * This method initializes jScrollPaneModInFv
2770 * @return javax.swing.JScrollPane
2772 private JScrollPane
getJScrollPaneModInFv() {
2773 if (jScrollPaneModInFv
== null) {
2774 jScrollPaneModInFv
= new JScrollPane();
2775 jScrollPaneModInFv
.setPreferredSize(new java
.awt
.Dimension(200,500));
2776 jScrollPaneModInFv
.setViewportView(getJTableModInFv());
2778 return jScrollPaneModInFv
;
2782 * This method initializes jTableModInFv
2784 * @return javax.swing.JTable
2786 private JTable
getJTableModInFv() {
2787 if (jTableModInFv
== null) {
2788 modInFvTableModel
= new IDefaultTableModel();
2790 jTableModInFv
= new JTable(modInFvTableModel
){
2794 private static final long serialVersionUID
= 4903583933542581721L;
2796 public String
getToolTipText(MouseEvent e
) {
2798 java
.awt
.Point p
= e
.getPoint();
2799 int rowIndex
= rowAtPoint(p
);
2800 // int colIndex = columnAtPoint(p);
2801 // int realColumnIndex = convertColumnIndexToModel(colIndex);
2803 TableModel model
= getModel();
2804 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2805 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2806 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2807 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2808 String arch
= (String
) model
.getValueAt(rowIndex
, 5);
2809 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2811 tip
= "Path: " + mi
.getPath() + "; Arch: " + arch
+ ";";
2814 tip
= "No Module Path Information.";
2821 modInFvTableModel
.addColumn("Module Orders in FV");
2822 modInFvTableModel
.addColumn("mg");
2823 modInFvTableModel
.addColumn("mv");
2824 modInFvTableModel
.addColumn("pg");
2825 modInFvTableModel
.addColumn("pv");
2826 modInFvTableModel
.addColumn("arch");
2828 for (int i
= 1; i
< 6; ++i
) {
2829 jTableModInFv
.removeColumn(jTableModInFv
.getColumnModel().getColumn(jTableModInFv
.getColumnCount()-1));
2832 jTableModInFv
.setRowHeight(20);
2833 jTableModInFv
.setShowGrid(false);
2834 jTableModInFv
.setAutoCreateColumnsFromModel(false);
2835 jTableModInFv
.addMouseListener(new MouseAdapter() {
2838 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
2841 public void mouseClicked(MouseEvent arg0
) {
2842 if (arg0
.getButton() == MouseEvent
.BUTTON3
) {
2843 java
.awt
.Point p
= arg0
.getPoint();
2844 int rowIndex
= jTableModInFv
.rowAtPoint(p
);
2845 TableModel model
= jTableModInFv
.getModel();
2846 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2847 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2848 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2849 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2850 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2851 String details
= "PackageGuid: " + pg
+ "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2853 details
= "In Package " + mi
.getPackageId().getName() + "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2855 JOptionPane
.showMessageDialog(frame
, details
);
2861 return jTableModInFv
;
2865 * This method initializes jPanelController
2867 * @return javax.swing.JPanel
2869 private JPanel
getJPanelController() {
2870 if (jPanelController
== null) {
2871 FlowLayout flowLayout5
= new FlowLayout();
2872 flowLayout5
.setVgap(50);
2873 flowLayout5
.setHgap(50);
2874 jPanelController
= new JPanel();
2875 jPanelController
.setLayout(flowLayout5
);
2876 jPanelController
.setPreferredSize(new java
.awt
.Dimension(150,500));
2877 jPanelController
.add(getJButtonUp(), null);
2878 jPanelController
.add(getJButtonInsert(), null);
2879 jPanelController
.add(getJButtonRemove(), null);
2880 jPanelController
.add(getJButtonDown(), null);
2882 return jPanelController
;
2886 * This method initializes jScrollPaneFpdModules
2888 * @return javax.swing.JScrollPane
2890 private JScrollPane
getJScrollPaneFpdModules() {
2891 if (jScrollPaneFpdModules
== null) {
2892 jScrollPaneFpdModules
= new JScrollPane();
2893 jScrollPaneFpdModules
.setPreferredSize(new java
.awt
.Dimension(200,500));
2894 jScrollPaneFpdModules
.setViewportView(getJTableFpdModules());
2896 return jScrollPaneFpdModules
;
2900 * This method initializes jTableFpdModules
2902 * @return javax.swing.JTable
2904 private JTable
getJTableFpdModules() {
2905 if (jTableFpdModules
== null) {
2906 fpdModTableModel
= new IDefaultTableModel();
2907 TableSorter sorter
= new TableSorter(fpdModTableModel
);
2908 jTableFpdModules
= new JTable(sorter
){
2912 private static final long serialVersionUID
= -4666296888377637808L;
2914 public String
getToolTipText(MouseEvent e
) {
2916 java
.awt
.Point p
= e
.getPoint();
2917 int rowIndex
= rowAtPoint(p
);
2918 // int colIndex = columnAtPoint(p);
2919 // int realColumnIndex = convertColumnIndexToModel(colIndex);
2921 TableModel model
= getModel();
2922 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2923 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2924 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2925 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2926 String arch
= (String
) model
.getValueAt(rowIndex
, 5);
2927 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2929 tip
= "Path: " + mi
.getPath() + "; Arch: " + arch
+ ";";
2932 tip
= "No Module Path Information.";
2940 fpdModTableModel
.addColumn("Modules in Platform");
2941 fpdModTableModel
.addColumn("mg");
2942 fpdModTableModel
.addColumn("mv");
2943 fpdModTableModel
.addColumn("pg");
2944 fpdModTableModel
.addColumn("pv");
2945 fpdModTableModel
.addColumn("arch");
2947 for (int i
= 1; i
< 6; ++i
) {
2948 jTableFpdModules
.removeColumn(jTableFpdModules
.getColumnModel().getColumn(jTableFpdModules
.getColumnCount()-1));
2950 jTableFpdModules
.setRowHeight(20);
2951 jTableFpdModules
.setShowGrid(false);
2952 jTableFpdModules
.setAutoCreateColumnsFromModel(false);
2953 jTableFpdModules
.addMouseListener(new MouseAdapter() {
2956 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
2959 public void mouseClicked(MouseEvent arg0
) {
2960 if (arg0
.getButton() == MouseEvent
.BUTTON3
) {
2961 java
.awt
.Point p
= arg0
.getPoint();
2962 int rowIndex
= jTableFpdModules
.rowAtPoint(p
);
2963 TableModel model
= jTableFpdModules
.getModel();
2964 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2965 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2966 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2967 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2968 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2969 String details
= "PackageGuid: " + pg
+ "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2971 details
= "In Package " + mi
.getPackageId().getName() + "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2973 JOptionPane
.showMessageDialog(frame
, details
);
2980 return jTableFpdModules
;
2984 * This method initializes jButtonUp
2986 * @return javax.swing.JButton
2988 private JButton
getJButtonUp() {
2989 if (jButtonUp
== null) {
2990 jButtonUp
= new JButton();
2991 jButtonUp
.setPreferredSize(new java
.awt
.Dimension(60,20));
2992 jButtonUp
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 14));
2993 jButtonUp
.setText("^");
2994 jButtonUp
.addActionListener(new java
.awt
.event
.ActionListener() {
2995 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2996 int selectedRow
= jTableModInFv
.getSelectedRow();
2997 if (selectedRow
<= 0) {
3000 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
- 1);
3001 jTableModInFv
.changeSelection(selectedRow
- 1, 0, false, false);
3009 * This method initializes jButtonInsert
3011 * @return javax.swing.JButton
3013 private JButton
getJButtonInsert() {
3014 if (jButtonInsert
== null) {
3015 jButtonInsert
= new JButton();
3016 jButtonInsert
.setText("<");
3017 jButtonInsert
.setPreferredSize(new java
.awt
.Dimension(60,20));
3018 jButtonInsert
.addActionListener(new java
.awt
.event
.ActionListener() {
3019 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3020 int selectedRowRight
= jTableFpdModules
.getSelectedRow();
3021 if (selectedRowRight
< 0) {
3025 int rowInModel
= ((TableSorter
)jTableFpdModules
.getModel()).getModelRowIndex(selectedRowRight
);
3026 String name
= fpdModTableModel
.getValueAt(rowInModel
, 0)+"";
3027 String mg
= fpdModTableModel
.getValueAt(rowInModel
, 1)+"";
3028 String mv
= fpdModTableModel
.getValueAt(rowInModel
, 2)+"";
3029 String pg
= fpdModTableModel
.getValueAt(rowInModel
, 3)+"";
3030 String pv
= fpdModTableModel
.getValueAt(rowInModel
, 4)+"";
3031 String arch
= fpdModTableModel
.getValueAt(rowInModel
, 5)+"";
3032 String
[] row
= {name
, mg
, mv
, pg
, pv
, arch
};
3033 if (name
.length() == 0 || name
.equals("N/A")) {
3037 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
3038 if (selectedRowLeft
< 0) {
3039 modInFvTableModel
.addRow(row
);
3040 jTableModInFv
.changeSelection(jTableModInFv
.getRowCount() - 1, 0, false, false);
3043 modInFvTableModel
.insertRow(selectedRowLeft
, row
);
3044 jTableModInFv
.changeSelection(selectedRowLeft
, 0, false, false);
3046 fpdModTableModel
.removeRow(rowInModel
);
3050 return jButtonInsert
;
3054 * This method initializes jButtonRemove
3056 * @return javax.swing.JButton
3058 private JButton
getJButtonRemove() {
3059 if (jButtonRemove
== null) {
3060 jButtonRemove
= new JButton();
3061 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(60,20));
3062 jButtonRemove
.setText(">");
3063 jButtonRemove
.addActionListener(new java
.awt
.event
.ActionListener() {
3064 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3065 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
3066 if (selectedRowLeft
< 0) {
3070 String name
= modInFvTableModel
.getValueAt(selectedRowLeft
, 0)+"";
3071 String mg
= modInFvTableModel
.getValueAt(selectedRowLeft
, 1)+"";
3072 String mv
= modInFvTableModel
.getValueAt(selectedRowLeft
, 2)+"";
3073 String pg
= modInFvTableModel
.getValueAt(selectedRowLeft
, 3)+"";
3074 String pv
= modInFvTableModel
.getValueAt(selectedRowLeft
, 4)+"";
3075 String arch
= modInFvTableModel
.getValueAt(selectedRowLeft
, 5)+"";
3076 String
[] row
= {name
, mg
, mv
, pg
, pv
, arch
};
3077 String moduleKey
= mg
+ " " + mv
+ " " + pg
+ " " + pv
+ " " + arch
;
3078 if (name
.length() == 0 || name
.equals("N/A") || ffc
.getModuleSA(moduleKey
) == null) {
3079 JOptionPane
.showMessageDialog(frame
, "Module " + name
+ " not exists in platform. If you want to add back this module, please first add it into current platform. " + moduleKey
);
3080 modInFvTableModel
.removeRow(selectedRowLeft
);
3084 fpdModTableModel
.addRow(row
);
3085 int viewIndex
= ((TableSorter
) jTableFpdModules
.getModel()).getViewIndexArray()[jTableFpdModules
3086 .getRowCount() - 1];
3087 jTableFpdModules
.changeSelection(viewIndex
, 0, false, false);
3088 modInFvTableModel
.removeRow(selectedRowLeft
);
3092 return jButtonRemove
;
3096 * This method initializes jButtonDown
3098 * @return javax.swing.JButton
3100 private JButton
getJButtonDown() {
3101 if (jButtonDown
== null) {
3102 jButtonDown
= new JButton();
3103 jButtonDown
.setPreferredSize(new java
.awt
.Dimension(60,20));
3104 jButtonDown
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 10));
3105 jButtonDown
.setText("v");
3106 jButtonDown
.addActionListener(new java
.awt
.event
.ActionListener() {
3107 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3108 int selectedRow
= jTableModInFv
.getSelectedRow();
3109 if (selectedRow
>= jTableModInFv
.getRowCount() - 1) {
3112 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
+ 1);
3113 jTableModInFv
.changeSelection(selectedRow
+ 1, 0, false, false);
3121 * This method initializes jButtonOk
3123 * @return javax.swing.JButton
3125 private JButton
getJButtonOk() {
3126 if (jButtonOk
== null) {
3127 jButtonOk
= new JButton();
3128 jButtonOk
.setPreferredSize(new java
.awt
.Dimension(80,20));
3129 jButtonOk
.setText("Ok");
3130 jButtonOk
.addActionListener(new java
.awt
.event
.ActionListener() {
3131 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3132 // need reset FvBindings in ModuleSA.
3133 ffc
.removeFvBindingAll(title
);
3135 // collect module order information to store them into <BuildOptions> -> <UserExtensions>.
3136 // also update the FvBinding info in <ModuleSA>.
3138 Vector
<String
[]> vModInFv
= new Vector
<String
[]>();
3139 for (int i
= 0; i
< jTableModInFv
.getRowCount(); ++i
) {
3140 String moduleName
= modInFvTableModel
.getValueAt(i
, 0)+"";
3141 if (moduleName
.length() == 0 || moduleName
.equals("N/A")) {
3145 String mg
= modInFvTableModel
.getValueAt(i
, 1)+"";
3146 String mv
= modInFvTableModel
.getValueAt(i
, 2)+"";
3147 String pg
= modInFvTableModel
.getValueAt(i
, 3)+"";
3148 String pv
= modInFvTableModel
.getValueAt(i
, 4)+"";
3149 String arch
= modInFvTableModel
.getValueAt(i
, 5)+"";
3151 String moduleInfo
= mg
+ " " + mv
+ " " + pg
+ " " + pv
+ " " + arch
;
3153 String
[] sa
= { mg
, mv
, pg
, pv
, arch
};
3155 ffc
.updateFvBindingInModuleSA(moduleInfo
, title
);
3158 ffc
.removeBuildOptionsUserExtensions(title
);
3159 ffc
.genBuildOptionsUserExtensions(title
, outputFileName
, vModInFv
);
3161 docConsole
.setSaved(false);
3162 jTabbedPane
.setSelectedIndex(0);
3170 * This method initializes jButtonCancel
3172 * @return javax.swing.JButton
3174 private JButton
getJButtonCancel() {
3175 if (jButtonCancel
== null) {
3176 jButtonCancel
= new JButton();
3177 jButtonCancel
.setPreferredSize(new java
.awt
.Dimension(80,20));
3178 jButtonCancel
.setText("Cancel");
3179 jButtonCancel
.addActionListener(new java
.awt
.event
.ActionListener() {
3180 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3181 jTabbedPane
.setSelectedIndex(0);
3185 return jButtonCancel
;
3189 } // @jve:decl-index=0:visual-constraint="10,10"
3191 class FvOptsTableModel
extends DefaultTableModel
{
3193 private static final long serialVersionUID
= 1L;
3195 private Vector
<Object
> vNonEditableName
= new Vector
<Object
>();
3196 private Vector
<Object
> vKeyWords
= new Vector
<Object
>();
3198 public boolean isCellEditable(int row
, int col
) {
3200 if (vNonEditableName
.size() > 0 || vKeyWords
.size() > 0) {
3201 if (vKeyWords
.contains(getValueAt(row
, 0))) {
3204 if (vNonEditableName
.contains(getValueAt(row
, 0)) && col
== 0) {
3209 if (col
== 0 && getValueAt(row
, 0) != null && getValueAt(row
, 0).toString().length() > 0) {
3217 * @return Returns the vKeyWords.
3219 protected Vector
<Object
> getVKeyWords() {
3224 * @param keyWords The vKeyWords to set.
3226 protected void setVKeyWords(Vector
<Object
> keyWords
) {
3227 vKeyWords
.removeAllElements();
3228 vKeyWords
.addAll(keyWords
);
3232 * @return Returns the vNonEditableName.
3234 protected Vector
<Object
> getVNonEditableName() {
3235 return vNonEditableName
;
3239 * @param nonEditableName The vNonEditableName to set.
3241 protected void setVNonEditableName(Vector
<Object
> nonEditableName
) {
3242 vNonEditableName
.removeAllElements();
3243 vNonEditableName
.addAll(nonEditableName
);
3247 class ImageParaTableModel
extends DefaultTableModel
{
3249 private static final long serialVersionUID
= 1L;
3251 public boolean isCellEditable(int row
, int col
) {
3252 // if (getValueAt(row, 1).equals("ImageName") && col >=1) {
3260 class FvInfoFromFdf
{
3261 private String fvName
;
3262 private String size
;
3263 private String efiFileName
;
3265 public FvInfoFromFdf () {
3270 public FvInfoFromFdf (String f
, String s
, String e
) {
3276 public String
getEfiFileName() {
3279 public void setEfiFileName(String efiFileName
) {
3280 this.efiFileName
= efiFileName
;
3282 public String
getFvName() {
3285 public void setFvName(String fvName
) {
3286 this.fvName
= fvName
;
3288 public String
getSize() {
3291 public void setSize(String size
) {