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 jPanelFvImageN
= null;
87 private JPanel jPanelFvImageS
= null;
88 private JCheckBox jCheckBoxFvProperty
= null;
89 private JLabel jLabelFvPropName
= null;
90 private JTextField jTextFieldFvPropName
= null;
91 private JLabel jLabelFvPropValue
= null;
92 private JTextField jTextFieldFvPropValue
= null;
93 private JButton jButtonFvPropAdd
= null;
94 private JScrollPane jScrollPaneFvProp
= null;
95 private JTable jTableFvProp
= null;
96 private JPanel jPanelFvPropButtonGroup
= null;
97 private JButton jButtonFvPropDel
= null;
98 private DefaultTableModel fvPropertyTableModel
= null;
99 private DefaultTableModel fvImageNameTableModel
= null;
100 private ImageParaTableModel fvImageParaTableModel
= null;
101 private DefaultTableModel fvOptionTableModel
= null;
102 private JPanel jPanelFvImageC
= null;
103 private JLabel jLabelFvParaType
= null;
104 private JComboBox jComboBoxFvParaType
= null;
105 private JLabel jLabelFvImageNames
= null;
106 private JLabel jLabelFvParaName
= null;
107 private JTextField jTextFieldFvParaName
= null;
108 private JButton jButtonFvNameAdd
= null;
109 private JScrollPane jScrollPaneFvImageNames
= null;
110 private JTable jTableFvImageNames
= null;
111 private JButton jButtonFvNameDel
= null;
112 private JPanel jPanelFvImageOpts
= null;
113 private JButton jButtonAddFvImage
= null;
114 private JScrollPane jScrollPaneFvInfo
= null;
115 private JTable jTableFvInfo
= null;
116 private JButton jButtonDelFvImage
= null;
117 private JPanel jPanelFvImagePara
= null;
118 private OpeningPlatformType docConsole
= null;
119 private FpdFileContents ffc
= null;
120 private JPanel jPanelFdf
= null;
121 private JCheckBox jCheckBoxFdf
= null;
122 private JTextField jTextFieldFdf
= null;
123 private JButton jButtonFdfBrowse
= null;
124 private JLabel jLabelFvImageOptName
= null;
125 private JTextField jTextFieldFvImageOptName
= null;
126 private JLabel jLabelFvImageOptValue
= null;
127 private JTextField jTextFieldFvImageOptValue
= null;
128 private JPanel jPanelFvImageOptsButtonGroup
= null;
129 private JButton jButtonFvImageOptAdd
= null;
130 private JButton jButtonFvImageOptDel
= null;
131 private JScrollPane jScrollPane
= null;
132 private JTable jTableFvImageOpts
= null;
133 private JButton jButtonUpdateFvImage
= null;
134 private JPanel jPanelFdfN
= null;
135 private JPanel jPanelFdfS
= null;
136 private JSplitPane jSplitPaneFdfC
= null;
137 private JPanel jPanelFdfCTop
= null;
138 private JPanel jPanelFdfCBottom
= null;
139 private JPanel jPanelFdfCTopN
= null;
140 private JPanel jPanelFdfCTopS
= null;
141 private JPanel jPanelFdfCTopC
= null;
142 private JPanel jPanelFdfCBottomN
= null;
143 private JPanel jPanelFdfCBottomC
= null;
144 private JLabel jLabelFvInFdf
= null;
145 private JLabel jLabelFvAdditional
= null;
146 private JScrollPane jScrollPaneFvInFdf
= null;
147 private JTable jTableFvInFdf
= null;
148 private IDefaultTableModel fvInFdfTableModel
= null; // @jve:decl-index=0:visual-constraint=""
149 private JButton jButtonFvInFdfOptions
= null;
150 private JScrollPane jScrollPaneFvAdditional
= null;
151 private JTable jTableFvAdditional
= null;
152 private DefaultTableModel fvAdditionalTableModel
= null; // @jve:decl-index=0:visual-constraint=""
153 private JButton jButtonAddFv
= null;
154 private JButton jButtonDelFv
= null;
155 private JButton jButtonAddFvOptions
= null;
156 private int tabIndexForFv
= -1;
157 private int selectedRowInFvAdditionalTable
= -1;
158 private String oldFvName
= null;
159 private Vector
<String
> vBlockSize
= new Vector
<String
>();
160 private String determinedFvBlockSize
= null;
161 private final String defaultBlkSize
= "0x10000";
162 private String erasePolarity
= "";
163 boolean memModified
= false;
164 private FvOptsTableModel fvInFdfOptTableModel
= null;
165 private FvOptsTableModel fvAdditionalOptTableModel
= null;
166 private boolean sizeFromOptionDlg
= false;
167 private boolean fileFromOptionDlg
= false;
168 private JLabel jLabelOptions
= null;
169 private JPanel jPanelBgFvName
= null;
170 private JPanel jPanelBgFvImage
= null;
171 private JPanel jPanelW
= null;
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;
181 // TODO Auto-generated constructor stub
184 this.setBounds(new java
.awt
.Rectangle(0, 0, 500, 370));
185 this.setVisible(true);
188 public FpdFlash(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
190 ffc
= new FpdFileContents(fpd
);
194 public FpdFlash(OpeningPlatformType opt
) {
195 this(opt
.getXmlFpd());
198 docConsole
.setSaved(false);
199 JOptionPane
.showMessageDialog(frame
, "Platform Synced with FDF file.");
205 * This method initializes jPanel
207 * @return javax.swing.JPanel
209 private JPanel
getJPanelContentEast() {
210 if (jPanelContentEast
== null) {
211 FlowLayout flowLayout7
= new FlowLayout();
212 flowLayout7
.setVgap(50);
213 jPanelContentEast
= new JPanel();
214 jPanelContentEast
.setLayout(flowLayout7
);
216 return jPanelContentEast
;
220 * This method initializes jPanel1
222 * @return javax.swing.JPanel
224 private JPanel
getJPanelContentSouth() {
225 if (jPanelContentSouth
== null) {
226 FlowLayout flowLayout
= new FlowLayout();
227 flowLayout
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
228 flowLayout
.setHgap(15);
229 jPanelContentSouth
= new JPanel();
230 jPanelContentSouth
.setLayout(flowLayout
);
231 jPanelContentSouth
.setComponentOrientation(java
.awt
.ComponentOrientation
.LEFT_TO_RIGHT
);
233 return jPanelContentSouth
;
237 * This method initializes jPanel2
239 * @return javax.swing.JPanel
241 private JPanel
getJPanelContentWest() {
242 if (jPanelContentWest
== null) {
243 jPanelContentWest
= new JPanel();
245 return jPanelContentWest
;
249 * This method initializes jPanel3
251 * @return javax.swing.JPanel
253 private JPanel
getJPanelContentNorth() {
254 if (jPanelContentNorth
== null) {
255 jPanelContentNorth
= new JPanel();
257 return jPanelContentNorth
;
261 * This method initializes jTabbedPane
263 * @return javax.swing.JTabbedPane
265 private JTabbedPane
getJTabbedPane() {
266 if (jTabbedPane
== null) {
267 jTabbedPane
= new JTabbedPane();
268 jTabbedPane
.addTab("General", null, getJPanelFdf(), null);
269 jTabbedPane
.addTab("Advanced", null, getJPanelFvImages(), null);
276 * This method initializes jPanelFvImages
278 * @return javax.swing.JPanel
280 private JPanel
getJPanelFvImages() {
281 if (jPanelFvImages
== null) {
282 jPanelFvImages
= new JPanel();
283 jPanelFvImages
.setLayout(new BorderLayout());
284 jPanelFvImages
.add(getJPanelFvImageS(), java
.awt
.BorderLayout
.NORTH
);
285 jPanelFvImages
.add(getJPanelFvImageN(), java
.awt
.BorderLayout
.SOUTH
);
286 jPanelFvImages
.add(getJPanelFvImageC(), java
.awt
.BorderLayout
.CENTER
);
287 jPanelFvImages
.add(getJPanelW(), java
.awt
.BorderLayout
.EAST
);
288 jPanelFvImages
.addComponentListener(new java
.awt
.event
.ComponentAdapter() {
289 public void componentShown(java
.awt
.event
.ComponentEvent e
) {
290 // fvImageParaTableModel.setRowCount(0);
291 // fvPropertyTableModel.setRowCount(0);
298 return jPanelFvImages
;
302 * This method initializes jPanelFvImageN
304 * @return javax.swing.JPanel
306 private JPanel
getJPanelFvImageN() {
307 if (jPanelFvImageN
== null) {
308 jLabelFvPropValue
= new JLabel();
309 jLabelFvPropValue
.setText("Value");
310 jLabelFvPropValue
.setEnabled(false);
311 jLabelFvPropValue
.setPreferredSize(new java
.awt
.Dimension(38,20));
312 jLabelFvPropName
= new JLabel();
313 jLabelFvPropName
.setText("Name");
314 jLabelFvPropName
.setEnabled(false);
315 jLabelFvPropName
.setPreferredSize(new java
.awt
.Dimension(38,20));
316 FlowLayout flowLayout2
= new FlowLayout();
317 flowLayout2
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
318 flowLayout2
.setHgap(5);
319 jPanelFvImageN
= new JPanel();
320 jPanelFvImageN
.setPreferredSize(new java
.awt
.Dimension(576,130));
321 jPanelFvImageN
.setBorder(javax
.swing
.BorderFactory
.createBevelBorder(javax
.swing
.border
.BevelBorder
.RAISED
));
322 jPanelFvImageN
.setLayout(flowLayout2
);
323 jPanelFvImageN
.add(getJCheckBoxFvProperty(), null);
324 jPanelFvImageN
.add(jLabelFvPropName
, null);
325 jPanelFvImageN
.add(getJTextFieldFvPropName(), null);
326 jPanelFvImageN
.add(jLabelFvPropValue
, null);
327 jPanelFvImageN
.add(getJTextFieldFvPropValue(), null);
328 jPanelFvImageN
.add(getJScrollPaneFvProp(), null);
329 jPanelFvImageN
.add(getJPanelFvPropButtonGroup(), null);
331 return jPanelFvImageN
;
335 * This method initializes jPanelFvImageS
337 * @return javax.swing.JPanel
339 private JPanel
getJPanelFvImageS() {
340 if (jPanelFvImageS
== null) {
341 GridLayout gridLayout2
= new GridLayout();
342 gridLayout2
.setRows(1);
343 jPanelFvImageS
= new JPanel();
344 jPanelFvImageS
.setPreferredSize(new java
.awt
.Dimension(480,150));
345 jPanelFvImageS
.setLayout(gridLayout2
);
346 jPanelFvImageS
.add(getJScrollPaneFvInfo(), null);
348 return jPanelFvImageS
;
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(getJPanelFvImageOptsC(), java
.awt
.BorderLayout
.CENTER
);
821 return jPanelFvImageOpts
;
826 * This method initializes jButton4
828 * @return javax.swing.JButton
830 private JButton
getJButtonAddFvImage() {
831 if (jButtonAddFvImage
== null) {
832 jButtonAddFvImage
= new JButton();
833 jButtonAddFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
834 jButtonAddFvImage
.setText("New FV Attributes");
835 jButtonAddFvImage
.addActionListener(new AbstractAction() {
839 private static final long serialVersionUID
= 1L;
841 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
843 // String imageName = " ";
844 // for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){
845 // imageName += (String)jTableFvImageNames.getValueAt(i, 0);
848 // imageName = imageName.trim();
850 // LinkedHashMap<String, String> m = null;
851 // m = new LinkedHashMap<String, String>();
852 // getOptionNameValue(m);
853 // ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);
854 // docConsole.setSaved(false);
855 fvImageNameTableModel
.setRowCount(0);
856 fvOptionTableModel
.setRowCount(0);
857 Object
[] row
= {"", jComboBoxFvParaType
.getSelectedItem()};
858 fvImageParaTableModel
.addRow(row
);
859 jTableFvInfo
.changeSelection(jTableFvInfo
.getRowCount() - 1, 0, false, false);
863 return jButtonAddFvImage
;
868 * This method initializes jScrollPane3
870 * @return javax.swing.JScrollPane
872 private JScrollPane
getJScrollPaneFvInfo() {
873 if (jScrollPaneFvInfo
== null) {
874 jScrollPaneFvInfo
= new JScrollPane();
875 jScrollPaneFvInfo
.setPreferredSize(new java
.awt
.Dimension(480,150));
876 jScrollPaneFvInfo
.setViewportView(getJTableFvInfo());
878 return jScrollPaneFvInfo
;
883 * This method initializes jTable2
885 * @return javax.swing.JTable
887 private JTable
getJTableFvInfo() {
888 if (jTableFvInfo
== null) {
889 fvImageParaTableModel
= new ImageParaTableModel();
890 jTableFvInfo
= new JTable(fvImageParaTableModel
);
891 fvImageParaTableModel
.addColumn("FvImageNames");
892 fvImageParaTableModel
.addColumn("Type");
894 jTableFvInfo
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
895 jTableFvInfo
.setRowHeight(20);
896 jTableFvInfo
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
897 public void valueChanged(ListSelectionEvent e
) {
898 if (e
.getValueIsAdjusting()){
901 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
902 if (lsm
.isSelectionEmpty()) {
906 int selectedRow
= lsm
.getMinSelectionIndex();
907 String fvNameList
= fvImageParaTableModel
.getValueAt(selectedRow
, 0)+"";
908 String type
= fvImageParaTableModel
.getValueAt(selectedRow
, 1)+"";
909 jComboBoxFvParaType
.setSelectedItem(type
);
910 String
[] fvNames
= fvNameList
.split(" ");
911 fvImageNameTableModel
.setRowCount(0);
912 fvOptionTableModel
.setRowCount(0);
913 for (int i
= 0; i
< fvNames
.length
; ++i
) {
914 String
[] row
= { fvNames
[i
] };
915 if (row
[0].length() > 0) {
916 fvImageNameTableModel
.addRow(row
);
920 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
921 if (fvImagePos
< 0) {
924 LinkedHashMap
<String
, String
> optionMap
= new LinkedHashMap
<String
, String
>();
925 ffc
.getFvImagesFvImageOptions(fvImagePos
, optionMap
);
926 if (optionMap
.size() > 0){
927 Set
<String
> key
= optionMap
.keySet();
928 Iterator
<String
> i
= key
.iterator();
929 while (i
.hasNext()) {
930 String k
= (String
)i
.next();
931 String
[] row
= {k
, optionMap
.get(k
)};
932 fvOptionTableModel
.addRow(row
);
946 * This method initializes jButton6
948 * @return javax.swing.JButton
950 private JButton
getJButtonDelFvImage() {
951 if (jButtonDelFvImage
== null) {
952 jButtonDelFvImage
= new JButton();
953 jButtonDelFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
954 jButtonDelFvImage
.setText("Delete FV Attributes");
955 jButtonDelFvImage
.addActionListener(new AbstractAction() {
959 private static final long serialVersionUID
= 1L;
961 public void actionPerformed(ActionEvent arg0
) {
962 // TODO Auto-generated method stub
963 if (jTableFvInfo
.getSelectedRow() >= 0 ) {
964 String fvNameList
= fvImageParaTableModel
.getValueAt(jTableFvInfo
.getSelectedRow(), 0)+"";
965 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, jComboBoxFvParaType
.getSelectedItem()+"");
967 ffc
.removeFvImagesFvImage(fvImagePos
);
968 fvImageParaTableModel
.removeRow(jTableFvInfo
.getSelectedRow());
969 docConsole
.setSaved(false);
971 fvImageNameTableModel
.setRowCount(0);
972 fvOptionTableModel
.setRowCount(0);
978 return jButtonDelFvImage
;
983 * This method initializes jPanel6
985 * @return javax.swing.JPanel
987 private JPanel
getJPanelFvImagePara() {
988 if (jPanelFvImagePara
== null) {
989 StarLabel starLabel
= new StarLabel();
990 starLabel
.setVisible(false);
991 jPanelFvImagePara
= new JPanel();
992 jPanelFvImagePara
.setLayout(new BorderLayout());
993 jPanelFvImagePara
.setPreferredSize(new java
.awt
.Dimension(450,140));
994 jPanelFvImagePara
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
996 jPanelFvImagePara
.add(getJPanelFvImageParaN(), java
.awt
.BorderLayout
.NORTH
);
997 jPanelFvImagePara
.add(getJPanelFvImageParaS(), java
.awt
.BorderLayout
.SOUTH
);
998 jPanelFvImagePara
.add(getJPanelFvImageParaC(), java
.awt
.BorderLayout
.CENTER
);
1004 return jPanelFvImagePara
;
1008 * This method initializes jPanel7
1010 * @return javax.swing.JPanel
1012 private JPanel
getJPanelFdf() {
1013 if (jPanelFdf
== null) {
1014 jPanelFdf
= new JPanel();
1015 jPanelFdf
.setLayout(new BorderLayout());
1017 jPanelFdf
.add(getJPanelFdfN(), java
.awt
.BorderLayout
.NORTH
);
1018 jPanelFdf
.add(getJPanelFdfS(), java
.awt
.BorderLayout
.SOUTH
);
1019 jPanelFdf
.add(getJSplitPaneFdfC(), java
.awt
.BorderLayout
.CENTER
);
1020 jPanelFdf
.addComponentListener(new ComponentAdapter(){
1021 public void componentShown(ComponentEvent e
) {
1022 // if (ffc.getFlashDefinitionFile() != null) {
1023 // jTextFieldFdf.setText(ffc.getFlashDefinitionFile());
1024 // initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText());
1028 public void componentHidden(ComponentEvent e
) {
1029 if (jCheckBoxFdf
.isSelected()) {
1030 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1039 * This method initializes jCheckBox
1041 * @return javax.swing.JCheckBox
1043 private JCheckBox
getJCheckBoxFdf() {
1044 if (jCheckBoxFdf
== null) {
1045 jCheckBoxFdf
= new JCheckBox();
1046 jCheckBoxFdf
.setText("Flash Definition File");
1047 jCheckBoxFdf
.addItemListener(new ItemListener() {
1049 public void itemStateChanged(ItemEvent arg0
) {
1050 // TODO Auto-generated method stub
1051 if (jCheckBoxFdf
.isSelected()){
1052 jTextFieldFdf
.setEnabled(true);
1053 jButtonFdfBrowse
.setEnabled(true);
1057 jTextFieldFdf
.setEnabled(false);
1058 jButtonFdfBrowse
.setEnabled(false);
1063 return jCheckBoxFdf
;
1067 * This method initializes jTextField3
1069 * @return javax.swing.JTextField
1071 private JTextField
getJTextFieldFdf() {
1072 if (jTextFieldFdf
== null) {
1073 jTextFieldFdf
= new JTextField();
1074 jTextFieldFdf
.setEnabled(false);
1075 jTextFieldFdf
.setEditable(false);
1076 jTextFieldFdf
.setPreferredSize(new Dimension(300, 20));
1077 jTextFieldFdf
.addFocusListener(new java
.awt
.event
.FocusAdapter() {
1078 public void focusLost(java
.awt
.event
.FocusEvent e
) {
1079 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1083 return jTextFieldFdf
;
1087 * This method initializes jButton5
1089 * @return javax.swing.JButton
1091 private JButton
getJButtonFdfBrowse() {
1092 if (jButtonFdfBrowse
== null) {
1093 jButtonFdfBrowse
= new JButton();
1094 jButtonFdfBrowse
.setEnabled(false);
1095 jButtonFdfBrowse
.setText("Browse");
1096 jButtonFdfBrowse
.setPreferredSize(new Dimension(78, 20));
1097 jButtonFdfBrowse
.addActionListener(new AbstractAction(){
1101 private static final long serialVersionUID
= 1L;
1103 public void actionPerformed(ActionEvent e
) {
1104 // TODO Auto-generated method stub
1105 String wsDir
= System
.getenv("WORKSPACE");
1106 JFileChooser chooser
= new JFileChooser(wsDir
);
1107 chooser
.setMultiSelectionEnabled(false);
1108 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1109 int retval
= chooser
.showOpenDialog(frame
);
1110 if (retval
== JFileChooser
.APPROVE_OPTION
) {
1112 File theFile
= chooser
.getSelectedFile();
1113 String filePath
= theFile
.getPath();
1114 if (!filePath
.startsWith(wsDir
)) {
1115 JOptionPane
.showMessageDialog(frame
, "You can only select files in current WORKSPACE.");
1118 jTextFieldFdf
.setText(filePath
.substring(wsDir
.length() + 1).replace('\\', '/'));
1119 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1120 docConsole
.setSaved(false);
1121 initFvInFdfTable(filePath
);
1127 return jButtonFdfBrowse
;
1130 private void initFvAttributes () {
1131 if (ffc
.getFvImagesFvImageCount("Attributes") == 0 && ffc
.getFvImagesFvImageCount("Components") == 0) {
1134 String
[][] saa
= new String
[ffc
.getFvImagesFvImageCount("Attributes")][2];
1135 ffc
.getFvImagesFvImages(saa
, "Attributes");
1138 while (i
< saa
.length
) {
1139 fvImageParaTableModel
.addRow(saa
[i
]);
1143 saa
= new String
[ffc
.getFvImagesFvImageCount("Components")][2];
1144 ffc
.getFvImagesFvImages(saa
, "Components");
1146 while (i
< saa
.length
) {
1147 fvImageParaTableModel
.addRow(saa
[i
]);
1151 saa
= new String
[ffc
.getFvImagesNameValueCount()][2];
1152 ffc
.getFvImagesNameValues(saa
);
1153 for (int m
= 0; m
< saa
.length
; ++m
) {
1154 fvPropertyTableModel
.addRow(saa
[m
]);
1158 private void initFvAdditionalTable() {
1159 Vector
<String
> vFvNames
= new Vector
<String
>();
1160 ffc
.getFvImagesFvImageFvImageNames(vFvNames
);
1161 for (int i
= 0; i
< vFvNames
.size(); ++i
) {
1162 String fvName
= vFvNames
.get(i
);
1163 if (fvNameExists(fvName
)) {
1166 fvAdditionalTableModel
.addRow(getBasicFvInfo(fvName
));
1167 addTabForFv(new FvInfoFromFdf(fvName
, "", ""));
1171 private void initFvInFdfTable(String fdfPath
){
1172 Vector
<FvInfoFromFdf
> vFvInfo
= new Vector
<FvInfoFromFdf
>();
1173 getFvInfoFromFdf(fdfPath
, vFvInfo
);
1174 getFlashInfoFromFdf (fdfPath
);
1175 if (!erasePolarity
.equals("1") && !erasePolarity
.equals("0")) {
1176 JOptionPane
.showMessageDialog(frame
, "FDF file does NOT contain valid Erase Polarity.");
1179 ffc
.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity
);
1182 // BugBug: assume all blocks have same size;
1184 String blkSize
= defaultBlkSize
;
1185 if (vBlockSize
.size() > 0) {
1186 blkSize
= vBlockSize
.get(0);
1187 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1188 JOptionPane
.showMessageDialog(frame
, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");
1189 blkSize
= defaultBlkSize
;
1192 determinedFvBlockSize
= blkSize
;
1194 getFvInFdfTableModel().setRowCount(0);
1195 for (int j
= 0; j
< vFvInfo
.size(); ++j
) {
1196 FvInfoFromFdf fvInfo
= vFvInfo
.get(j
);
1197 String
[] row
= {fvInfo
.getFvName(), fvInfo
.getSize(), fvInfo
.getEfiFileName()};
1198 // if FV addtional table contains the same FV from fdf file, remove that row.
1199 for (int k
= 0; k
< jTableFvAdditional
.getRowCount(); ++k
) {
1200 if (fvAdditionalTableModel
.getValueAt(k
, 0).equals(row
[0])) {
1201 fvAdditionalTableModel
.removeRow(k
);
1204 getFvInFdfTableModel().addRow(row
);
1206 int blockSize
= Integer
.decode(blkSize
);
1207 int fvSize
= Integer
.decode(row
[1]);
1208 int numBlocks
= fvSize
/blockSize
;
1209 HashMap
<String
, String
> mOptions
= new HashMap
<String
, String
>();
1210 // if no options for this FV before, generate a new options entry for this FV.
1211 if (ffc
.getFvImagesFvImageWithName(row
[0], "Options") == null) {
1213 mOptions
.put("EFI_BLOCK_SIZE", blkSize
);
1214 mOptions
.put("EFI_NUM_BLOCKS", numBlocks
+"");
1215 mOptions
.put("EFI_FILE_NAME", row
[2]);
1216 ffc
.genFvImagesFvImage(new String
[]{row
[0]}, "Options", mOptions
);
1220 ffc
.getFvImagesFvImageOptions(row
[0], mOptions
);
1221 if (mOptions
.get("EFI_BLOCK_SIZE") == null || !mOptions
.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize
)) {
1222 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_BLOCK_SIZE", blkSize
);
1225 if (mOptions
.get("EFI_NUM_BLOCKS") == null || Integer
.decode(mOptions
.get("EFI_NUM_BLOCKS")) != numBlocks
) {
1226 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_NUM_BLOCKS", numBlocks
+ "");
1229 if (mOptions
.get("EFI_FILE_NAME") == null || !mOptions
.get("EFI_FILE_NAME").equals(row
[2])) {
1230 ffc
.setTypedNamedFvImageNameValue(row
[0], "Options", "EFI_FILE_NAME", row
[2]);
1236 catch (NumberFormatException e
){
1237 JOptionPane
.showMessageDialog(frame
, e
.getMessage());
1241 for (int k
= 0; k
< vFvInfo
.size(); ++k
) {
1242 FvInfoFromFdf fvInfo
= vFvInfo
.get(k
);
1243 addTabForFv(fvInfo
);
1248 private void addTabForFv (FvInfoFromFdf fvInfo
) {
1249 String fvName
= fvInfo
.getFvName();
1250 String outputFile
= fvInfo
.getEfiFileName();
1251 int index
= jTabbedPane
.indexOfTab(fvName
);
1252 if (index
>= startIndexOfDynamicTab
) {
1255 jTabbedPane
.addTab(fvName
, null, new ModuleOrderPane(fvName
, outputFile
), null);
1258 * This method initializes jTextField4
1260 * @return javax.swing.JTextField
1262 private JTextField
getJTextFieldFvImageOptName() {
1263 if (jTextFieldFvImageOptName
== null) {
1264 jTextFieldFvImageOptName
= new JTextField();
1265 jTextFieldFvImageOptName
.setEnabled(true);
1266 jTextFieldFvImageOptName
.setPreferredSize(new Dimension(100, 20));
1268 return jTextFieldFvImageOptName
;
1272 * This method initializes jTextField5
1274 * @return javax.swing.JTextField
1276 private JTextField
getJTextFieldFvImageOptValue() {
1277 if (jTextFieldFvImageOptValue
== null) {
1278 jTextFieldFvImageOptValue
= new JTextField();
1279 jTextFieldFvImageOptValue
.setEnabled(true);
1280 jTextFieldFvImageOptValue
.setPreferredSize(new Dimension(100, 20));
1282 return jTextFieldFvImageOptValue
;
1286 * This method initializes jPanel8
1288 * @return javax.swing.JPanel
1290 private JPanel
getJPanelFvImageOptsButtonGroup() {
1291 if (jPanelFvImageOptsButtonGroup
== null) {
1292 jPanelFvImageOptsButtonGroup
= new JPanel();
1293 jPanelFvImageOptsButtonGroup
.setPreferredSize(new Dimension(80, 55));
1294 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptAdd(), null);
1295 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptDel(), null);
1297 return jPanelFvImageOptsButtonGroup
;
1301 * This method initializes jButton7
1303 * @return javax.swing.JButton
1305 private JButton
getJButtonFvImageOptAdd() {
1306 if (jButtonFvImageOptAdd
== null) {
1307 jButtonFvImageOptAdd
= new JButton();
1308 jButtonFvImageOptAdd
.setEnabled(true);
1309 jButtonFvImageOptAdd
.setText("Add");
1310 jButtonFvImageOptAdd
.setPreferredSize(new Dimension(80, 20));
1311 jButtonFvImageOptAdd
.addActionListener(new AbstractAction() {
1315 private static final long serialVersionUID
= 1L;
1317 public void actionPerformed(ActionEvent e
) {
1318 if (jTextFieldFvImageOptName
.getText().length() > 0 && jTextFieldFvImageOptValue
.getText().length() > 0){
1319 int selectedRow
= jTableFvInfo
.getSelectedRow();
1320 if (selectedRow
< 0) {
1324 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1325 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1326 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1327 String
[] row
= {jTextFieldFvImageOptName
.getText(), jTextFieldFvImageOptValue
.getText()};
1329 if (fvImagePos
< 0) {
1333 //append options to FvImage.
1334 ffc
.setFvImagesFvImageNameValue(fvImagePos
, row
[0], row
[1]);
1336 docConsole
.setSaved(false);
1337 fvOptionTableModel
.addRow(row
);
1338 jTableFvImageOpts
.changeSelection(jTableFvImageOpts
.getRowCount() - 1, 0, false, false);
1343 return jButtonFvImageOptAdd
;
1347 * This method initializes jButton8
1349 * @return javax.swing.JButton
1351 private JButton
getJButtonFvImageOptDel() {
1352 if (jButtonFvImageOptDel
== null) {
1353 jButtonFvImageOptDel
= new JButton();
1354 jButtonFvImageOptDel
.setEnabled(true);
1355 jButtonFvImageOptDel
.setText("Delete");
1356 jButtonFvImageOptDel
.setPreferredSize(new Dimension(80, 20));
1357 jButtonFvImageOptDel
.addActionListener(new AbstractAction() {
1361 private static final long serialVersionUID
= 1L;
1363 public void actionPerformed(ActionEvent e
) {
1364 if (jTableFvImageOpts
.getSelectedRow() >= 0){
1365 int selectedRow
= jTableFvInfo
.getSelectedRow();
1366 if (selectedRow
< 0) {
1370 String fvNameList
= jTableFvInfo
.getValueAt(selectedRow
, 0)+"";
1371 String type
= jTableFvInfo
.getValueAt(selectedRow
, 1)+"";
1372 int fvImagePos
= ffc
.getFvImagePosInFvImages(fvNameList
, type
);
1373 if (fvImagePos
< 0) {
1377 String optName
= fvOptionTableModel
.getValueAt(jTableFvImageOpts
.getSelectedRow(), 0)+"";
1378 ffc
.removeFvImageNameValue(fvImagePos
, optName
);
1379 docConsole
.setSaved(false);
1380 fvOptionTableModel
.removeRow(jTableFvImageOpts
.getSelectedRow());
1385 return jButtonFvImageOptDel
;
1389 * This method initializes jScrollPane
1391 * @return javax.swing.JScrollPane
1393 private JScrollPane
getJScrollPane() {
1394 if (jScrollPane
== null) {
1395 jScrollPane
= new JScrollPane();
1396 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(350,100));
1397 jScrollPane
.setViewportView(getJTableFvImageOpts());
1403 * This method initializes jTable3
1405 * @return javax.swing.JTable
1407 private JTable
getJTableFvImageOpts() {
1408 if (jTableFvImageOpts
== null) {
1409 fvOptionTableModel
= new IDefaultTableModel();
1410 fvOptionTableModel
.addColumn("Name");
1411 fvOptionTableModel
.addColumn("Value");
1412 jTableFvImageOpts
= new JTable(fvOptionTableModel
);
1414 jTableFvImageOpts
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
1415 jTableFvImageOpts
.setRowHeight(20);
1418 return jTableFvImageOpts
;
1422 * This method initializes jButton9
1424 * @return javax.swing.JButton
1426 private JButton
getJButtonUpdateFvImage() {
1427 if (jButtonUpdateFvImage
== null) {
1428 jButtonUpdateFvImage
= new JButton();
1429 jButtonUpdateFvImage
.setPreferredSize(new java
.awt
.Dimension(150,20));
1430 jButtonUpdateFvImage
.setActionCommand("Update");
1431 jButtonUpdateFvImage
.setText("Update FV Attributes");
1432 jButtonUpdateFvImage
.setVisible(false);
1433 jButtonUpdateFvImage
.addActionListener(new java
.awt
.event
.ActionListener() {
1434 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1435 int row
= jTableFvInfo
.getSelectedRow();
1436 if (jTableFvInfo
.isEditing()) {
1437 jTableFvInfo
.getCellEditor().stopCellEditing();
1439 if (jTableFvImageOpts
.isEditing()) {
1440 jTableFvImageOpts
.getCellEditor().stopCellEditing();
1443 //ToDo Check data validity before update
1444 String name
= fvImageParaTableModel
.getValueAt(row
, 0) + "";
1445 String type
= fvImageParaTableModel
.getValueAt(row
, 1) + "";
1447 LinkedHashMap
<String
, String
> lhm
= new LinkedHashMap
<String
, String
>();
1448 getOptionNameValue(lhm
);
1450 docConsole
.setSaved(false);
1451 ffc
.updateFvImagesFvImage(row
, name
.split(" "), type
, lhm
);
1456 return jButtonUpdateFvImage
;
1460 * This method initializes jPanelFdfN
1462 * @return javax.swing.JPanel
1464 private JPanel
getJPanelFdfN() {
1465 if (jPanelFdfN
== null) {
1466 jPanelFdfN
= new JPanel();
1467 jPanelFdfN
.add(getJCheckBoxFdf(), null);
1468 jPanelFdfN
.add(getJTextFieldFdf(), null);
1469 jPanelFdfN
.add(getJButtonFdfBrowse(), null);
1475 * This method initializes jPanelFdfS
1477 * @return javax.swing.JPanel
1479 private JPanel
getJPanelFdfS() {
1480 if (jPanelFdfS
== null) {
1481 FlowLayout flowLayout4
= new FlowLayout();
1482 flowLayout4
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1483 jPanelFdfS
= new JPanel();
1484 jPanelFdfS
.setLayout(flowLayout4
);
1485 jPanelFdfS
.add(getJButtonAddFv(), null);
1486 jPanelFdfS
.add(getJButtonDelFv(), null);
1487 jPanelFdfS
.add(getJButtonAddFvOptions(), null);
1493 * This method initializes jSplitPaneFdfC
1495 * @return javax.swing.JSplitPane
1497 private JSplitPane
getJSplitPaneFdfC() {
1498 if (jSplitPaneFdfC
== null) {
1499 jSplitPaneFdfC
= new JSplitPane();
1500 jSplitPaneFdfC
.setOrientation(javax
.swing
.JSplitPane
.VERTICAL_SPLIT
);
1501 jSplitPaneFdfC
.setDividerSize(5);
1502 jSplitPaneFdfC
.setTopComponent(getJPanelFdfCTop());
1503 jSplitPaneFdfC
.setBottomComponent(getJPanelFdfCBottom());
1504 jSplitPaneFdfC
.setDividerLocation(280);
1506 return jSplitPaneFdfC
;
1510 * This method initializes jPanelFdfCTop
1512 * @return javax.swing.JPanel
1514 private JPanel
getJPanelFdfCTop() {
1515 if (jPanelFdfCTop
== null) {
1516 jPanelFdfCTop
= new JPanel();
1517 jPanelFdfCTop
.setLayout(new BorderLayout());
1518 jPanelFdfCTop
.add(getJPanelFdfCTopN(), java
.awt
.BorderLayout
.NORTH
);
1519 jPanelFdfCTop
.add(getJPanelFdfCTopS(), java
.awt
.BorderLayout
.SOUTH
);
1520 jPanelFdfCTop
.add(getJPanelFdfCTopC(), java
.awt
.BorderLayout
.CENTER
);
1522 return jPanelFdfCTop
;
1526 * This method initializes jPanelFdfCBottom
1528 * @return javax.swing.JPanel
1530 private JPanel
getJPanelFdfCBottom() {
1531 if (jPanelFdfCBottom
== null) {
1532 jPanelFdfCBottom
= new JPanel();
1533 jPanelFdfCBottom
.setLayout(new BorderLayout());
1534 jPanelFdfCBottom
.add(getJPanelFdfCBottomN(), java
.awt
.BorderLayout
.NORTH
);
1535 jPanelFdfCBottom
.add(getJPanelFdfCBottomC(), java
.awt
.BorderLayout
.CENTER
);
1537 return jPanelFdfCBottom
;
1541 * This method initializes jPanelFdfCTopN
1543 * @return javax.swing.JPanel
1545 private JPanel
getJPanelFdfCTopN() {
1546 if (jPanelFdfCTopN
== null) {
1547 jLabelFvInFdf
= new JLabel();
1548 jLabelFvInFdf
.setText("FVs in Flash Definition File");
1549 jPanelFdfCTopN
= new JPanel();
1550 jPanelFdfCTopN
.add(jLabelFvInFdf
, null);
1552 return jPanelFdfCTopN
;
1556 * This method initializes jPanelFdfCTopS
1558 * @return javax.swing.JPanel
1560 private JPanel
getJPanelFdfCTopS() {
1561 if (jPanelFdfCTopS
== null) {
1562 FlowLayout flowLayout1
= new FlowLayout();
1563 flowLayout1
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
1564 jPanelFdfCTopS
= new JPanel();
1565 jPanelFdfCTopS
.setLayout(flowLayout1
);
1566 jPanelFdfCTopS
.add(getJButtonFvInFdfOptions(), null);
1568 return jPanelFdfCTopS
;
1572 * This method initializes jPanelFdfCTopC
1574 * @return javax.swing.JPanel
1576 private JPanel
getJPanelFdfCTopC() {
1577 if (jPanelFdfCTopC
== null) {
1578 jPanelFdfCTopC
= new JPanel();
1579 jPanelFdfCTopC
.add(getJScrollPaneFvInFdf(), null);
1581 return jPanelFdfCTopC
;
1585 * This method initializes jPanelFdfCBottomN
1587 * @return javax.swing.JPanel
1589 private JPanel
getJPanelFdfCBottomN() {
1590 if (jPanelFdfCBottomN
== null) {
1591 jLabelFvAdditional
= new JLabel();
1592 jLabelFvAdditional
.setText("Additional FVs");
1593 jPanelFdfCBottomN
= new JPanel();
1594 jPanelFdfCBottomN
.add(jLabelFvAdditional
, null);
1596 return jPanelFdfCBottomN
;
1600 * This method initializes jPanelFdfCBottomC
1602 * @return javax.swing.JPanel
1604 private JPanel
getJPanelFdfCBottomC() {
1605 if (jPanelFdfCBottomC
== null) {
1606 jPanelFdfCBottomC
= new JPanel();
1607 jPanelFdfCBottomC
.add(getJScrollPaneFvAdditional(), null);
1609 return jPanelFdfCBottomC
;
1613 * This method initializes jScrollPaneFvInFdf
1615 * @return javax.swing.JScrollPane
1617 private JScrollPane
getJScrollPaneFvInFdf() {
1618 if (jScrollPaneFvInFdf
== null) {
1619 jScrollPaneFvInFdf
= new JScrollPane();
1620 jScrollPaneFvInFdf
.setPreferredSize(new java
.awt
.Dimension(653,200));
1621 jScrollPaneFvInFdf
.setViewportView(getJTableFvInFdf());
1623 return jScrollPaneFvInFdf
;
1627 * This method initializes jTableFvInFdf
1629 * @return javax.swing.JTable
1631 private JTable
getJTableFvInFdf() {
1632 if (jTableFvInFdf
== null) {
1633 jTableFvInFdf
= new JTable();
1634 jTableFvInFdf
.setRowHeight(20);
1635 jTableFvInFdf
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1636 jTableFvInFdf
.setModel(getFvInFdfTableModel());
1638 return jTableFvInFdf
;
1642 * This method initializes fvInFdfTableModel
1644 * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel
1646 private IDefaultTableModel
getFvInFdfTableModel() {
1647 if (fvInFdfTableModel
== null) {
1648 fvInFdfTableModel
= new IDefaultTableModel();
1649 fvInFdfTableModel
.addColumn("FV Name");
1650 fvInFdfTableModel
.addColumn("Size");
1651 fvInFdfTableModel
.addColumn("Corresponding File Name");
1653 return fvInFdfTableModel
;
1657 * This method initializes jButtonFvInFdfOptions
1659 * @return javax.swing.JButton
1661 private JButton
getJButtonFvInFdfOptions() {
1662 if (jButtonFvInFdfOptions
== null) {
1663 jButtonFvInFdfOptions
= new JButton();
1664 jButtonFvInFdfOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1665 jButtonFvInFdfOptions
.setEnabled(true);
1666 jButtonFvInFdfOptions
.setText("Options");
1667 jButtonFvInFdfOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1668 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1669 int selectedRow
= jTableFvInFdf
.getSelectedRow();
1670 if (selectedRow
< 0) {
1673 String fvName
= jTableFvInFdf
.getValueAt(selectedRow
, 0)+"";
1674 if (fvName
.length() == 0) {
1677 DefaultTableModel dtm
= getFvInFdfOptTableModel();
1678 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1682 return jButtonFvInFdfOptions
;
1685 private DefaultTableModel
getFvInFdfOptTableModel() {
1686 if (fvInFdfOptTableModel
== null) {
1687 fvInFdfOptTableModel
= new FvOptsTableModel();
1688 fvInFdfOptTableModel
.addColumn("Name");
1689 fvInFdfOptTableModel
.addColumn("Value");
1690 Vector
<Object
> v
= new Vector
<Object
>();
1691 v
.add("EFI_BLOCK_SIZE");
1692 v
.add("EFI_NUM_BLOCKS");
1693 v
.add("EFI_FILE_NAME");
1694 fvInFdfOptTableModel
.setVKeyWords(v
);
1695 fvInFdfOptTableModel
.setVNonEditableName(v
);
1697 return fvInFdfOptTableModel
;
1700 private DefaultTableModel
getFvAdditionalOptTableModel() {
1701 if (fvAdditionalOptTableModel
== null) {
1702 fvAdditionalOptTableModel
= new FvOptsTableModel();
1703 fvAdditionalOptTableModel
.addColumn("Name");
1704 fvAdditionalOptTableModel
.addColumn("Value");
1705 Vector
<Object
> v
= new Vector
<Object
>();
1706 v
.add("EFI_BLOCK_SIZE");
1707 v
.add("EFI_NUM_BLOCKS");
1708 v
.add("EFI_FILE_NAME");
1709 fvAdditionalOptTableModel
.setVNonEditableName(v
);
1711 return fvAdditionalOptTableModel
;
1715 * This method initializes jScrollPaneFvAdditional
1717 * @return javax.swing.JScrollPane
1719 private JScrollPane
getJScrollPaneFvAdditional() {
1720 if (jScrollPaneFvAdditional
== null) {
1721 jScrollPaneFvAdditional
= new JScrollPane();
1722 jScrollPaneFvAdditional
.setPreferredSize(new java
.awt
.Dimension(653,200));
1723 jScrollPaneFvAdditional
.setViewportView(getJTableFvAdditional());
1725 return jScrollPaneFvAdditional
;
1729 * This method initializes jTableFvAdditional
1731 * @return javax.swing.JTable
1733 private JTable
getJTableFvAdditional() {
1734 if (jTableFvAdditional
== null) {
1735 jTableFvAdditional
= new JTable();
1736 jTableFvAdditional
.setRowHeight(20);
1737 jTableFvAdditional
.setSelectionMode(javax
.swing
.ListSelectionModel
.SINGLE_SELECTION
);
1738 jTableFvAdditional
.setModel(getFvAdditionalTableModel());
1740 jTableFvAdditional
.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
1741 public void valueChanged(ListSelectionEvent e
) {
1742 if (e
.getValueIsAdjusting()) {
1745 ListSelectionModel lsm
= (ListSelectionModel
) e
.getSource();
1746 if (lsm
.isSelectionEmpty()) {
1749 selectedRowInFvAdditionalTable
= lsm
.getMinSelectionIndex();
1750 oldFvName
= jTableFvAdditional
.getValueAt(selectedRowInFvAdditionalTable
, 0)+"";
1755 jTableFvAdditional
.getModel().addTableModelListener(new TableModelListener() {
1756 public void tableChanged(TableModelEvent arg0
) {
1757 // TODO Auto-generated method stub
1758 int row
= arg0
.getFirstRow();
1759 int col
= arg0
.getColumn();
1760 TableModel m
= (TableModel
) arg0
.getSource();
1762 if (arg0
.getType() == TableModelEvent
.UPDATE
) {
1764 String newFvName
= m
.getValueAt(row
, 0) + "";
1765 if (newFvName
.equals(oldFvName
)) {
1768 if (fvNameExists(newFvName
)) {
1769 JOptionPane
.showMessageDialog(frame
, "This FV already exists. Please choose another FV name.");
1770 m
.setValueAt(oldFvName
, row
, 0);
1774 tabIndexForFv
= jTabbedPane
.indexOfTab(oldFvName
);
1775 if (tabIndexForFv
>= startIndexOfDynamicTab
) {
1776 jTabbedPane
.setTitleAt(tabIndexForFv
, newFvName
);
1777 // change FvName in UserExtensions
1778 ffc
.updateBuildOptionsUserExtensions(oldFvName
, newFvName
);
1779 // change FvBinding in ModuleSA
1780 ffc
.appendFvBindingFor(oldFvName
, newFvName
);
1781 ffc
.removeFvBindingAll(oldFvName
);
1782 // change FvImageNames in Flash
1783 ffc
.updateFvImageNameAll(oldFvName
, newFvName
);
1786 jTabbedPane
.addTab(newFvName
, new ModuleOrderPane(newFvName
, ""));
1787 // Add FvImageNames in Flash
1788 String
[] fvNames
= {newFvName
};
1789 ffc
.addFvImageFvImageNames(fvNames
);
1791 docConsole
.setSaved(false);
1792 oldFvName
= newFvName
;
1795 if (col
== 1 && !sizeFromOptionDlg
) {
1796 String fvSize
= m
.getValueAt(row
, col
) + "";
1797 if (!DataValidation
.isInt(fvSize
) && !DataValidation
.isHexDoubleWordDataType(fvSize
)) {
1798 JOptionPane
.showMessageDialog(frame
, "FV size should be Integer or Hex format.");
1801 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
1802 ffc
.getFvImagesFvImageOptions(oldFvName
, mFvOpts
);
1803 String blkSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
1804 if (blkSize
== null) {
1805 if (determinedFvBlockSize
!= null) {
1806 blkSize
= determinedFvBlockSize
;
1809 blkSize
= defaultBlkSize
;
1811 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", blkSize
);
1812 int fs
= Integer
.decode(fvSize
);
1813 int bs
= Integer
.decode(blkSize
);
1814 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"");
1815 docConsole
.setSaved(false);
1818 if (!DataValidation
.isInt(blkSize
) && !DataValidation
.isHexDoubleWordDataType(blkSize
)) {
1819 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
);
1820 if (retVal
== JOptionPane
.YES_OPTION
) {
1821 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_BLOCK_SIZE", defaultBlkSize
);
1822 int fs
= Integer
.decode(fvSize
);
1823 int bs
= Integer
.decode(defaultBlkSize
);
1824 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"");
1825 docConsole
.setSaved(false);
1833 int fs
= Integer
.decode(fvSize
);
1834 int bs
= Integer
.decode(blkSize
);
1835 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_NUM_BLOCKS", (fs
/bs
)+"");
1836 docConsole
.setSaved(false);
1840 if (col
== 2 && !fileFromOptionDlg
) {
1841 ffc
.setTypedNamedFvImageNameValue(oldFvName
, "Options", "EFI_FILE_NAME", m
.getValueAt(row
, col
)+"");
1842 docConsole
.setSaved(false);
1849 return jTableFvAdditional
;
1852 private boolean fvNameExistsInFvInFdfTable (String fvName
) {
1853 for (int i
= 0; i
< jTableFvInFdf
.getRowCount(); ++i
) {
1854 if (fvInFdfTableModel
.getValueAt(i
, 0).equals(fvName
)) {
1861 private boolean fvNameExists (String fvName
) {
1862 if (fvNameExistsInFvInFdfTable(fvName
)) {
1866 for (int j
= 0; j
< jTableFvAdditional
.getRowCount(); ++j
) {
1867 if (fvAdditionalTableModel
.getValueAt(j
, 0).equals(fvName
) && j
!= selectedRowInFvAdditionalTable
) {
1875 * This method initializes fvAdditionalTableModel
1877 * @return javax.swing.table.DefaultTableModel
1879 private DefaultTableModel
getFvAdditionalTableModel() {
1880 if (fvAdditionalTableModel
== null) {
1881 fvAdditionalTableModel
= new DefaultTableModel();
1882 fvAdditionalTableModel
.addColumn("FV Name");
1883 fvAdditionalTableModel
.addColumn("Size");
1884 fvAdditionalTableModel
.addColumn("Corresponding File Name");
1886 return fvAdditionalTableModel
;
1890 * This method initializes jButtonAddFv
1892 * @return javax.swing.JButton
1894 private JButton
getJButtonAddFv() {
1895 if (jButtonAddFv
== null) {
1896 jButtonAddFv
= new JButton();
1897 jButtonAddFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1898 jButtonAddFv
.setEnabled(true);
1899 jButtonAddFv
.setText("New");
1900 jButtonAddFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1901 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1902 if (jTableFvAdditional
.isEditing()) {
1903 jTableFvAdditional
.getCellEditor().stopCellEditing();
1905 String
[] row
= {"", "", ""};
1906 fvAdditionalTableModel
.addRow(row
);
1910 return jButtonAddFv
;
1914 * This method initializes jButtonDelFv
1916 * @return javax.swing.JButton
1918 private JButton
getJButtonDelFv() {
1919 if (jButtonDelFv
== null) {
1920 jButtonDelFv
= new JButton();
1921 jButtonDelFv
.setPreferredSize(new java
.awt
.Dimension(80,20));
1922 jButtonDelFv
.setEnabled(true);
1923 jButtonDelFv
.setText("Delete");
1924 jButtonDelFv
.addActionListener(new java
.awt
.event
.ActionListener() {
1925 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1926 //delete row in FvAdditional table.
1927 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1928 if (selectedRow
< 0) {
1931 String fvName
= fvAdditionalTableModel
.getValueAt(selectedRow
, 0) + "";
1932 fvAdditionalTableModel
.removeRow(selectedRow
);
1934 //delete tab with selected FV name.
1936 jTabbedPane
.removeTabAt(jTabbedPane
.indexOfTab(fvName
));
1937 //delete FV Name from FvImages element.
1938 ffc
.updateFvImageNameAll(fvName
, null);
1939 //delete FvBinding from ModuleSA.
1940 ffc
.removeFvBindingAll(fvName
);
1941 docConsole
.setSaved(false);
1945 return jButtonDelFv
;
1949 * This method initializes jButtonAddFvOptions
1951 * @return javax.swing.JButton
1953 private JButton
getJButtonAddFvOptions() {
1954 if (jButtonAddFvOptions
== null) {
1955 jButtonAddFvOptions
= new JButton();
1956 jButtonAddFvOptions
.setPreferredSize(new java
.awt
.Dimension(80,20));
1957 jButtonAddFvOptions
.setEnabled(true);
1958 jButtonAddFvOptions
.setText("Options");
1959 jButtonAddFvOptions
.addActionListener(new java
.awt
.event
.ActionListener() {
1960 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1961 int selectedRow
= jTableFvAdditional
.getSelectedRow();
1962 if (selectedRow
< 0) {
1965 String fvName
= jTableFvAdditional
.getValueAt(selectedRow
, 0)+"";
1966 String oldFvSize
= jTableFvAdditional
.getValueAt(selectedRow
, 1)+"";
1967 String oldFileName
= jTableFvAdditional
.getValueAt(selectedRow
, 2)+"";
1968 if (fvName
.length() == 0) {
1971 DefaultTableModel dtm
= getFvAdditionalOptTableModel();
1972 new FpdFvOptions(fvName
, dtm
, ffc
, docConsole
);
1974 String
[] updatedFvInfo
= getBasicFvInfo (fvName
);
1975 if (!oldFvSize
.equalsIgnoreCase(updatedFvInfo
[1])) {
1976 sizeFromOptionDlg
= true;
1977 jTableFvAdditional
.setValueAt(updatedFvInfo
[1], selectedRow
, 1);
1978 sizeFromOptionDlg
= false;
1980 if (!oldFileName
.equals(updatedFvInfo
[2])) {
1981 fileFromOptionDlg
= true;
1982 jTableFvAdditional
.setValueAt(updatedFvInfo
[2], selectedRow
, 2);
1983 fileFromOptionDlg
= false;
1988 return jButtonAddFvOptions
;
1991 private String
[] getBasicFvInfo (String fvName
) {
1992 HashMap
<String
, String
> mFvOpts
= new HashMap
<String
, String
>();
1993 ffc
.getFvImagesFvImageOptions(fvName
, mFvOpts
);
1995 String numBlks
= "";
1998 if (mFvOpts
.get("EFI_FILE_NAME") != null) {
1999 fvFile
= mFvOpts
.get("EFI_FILE_NAME");
2001 if (mFvOpts
.get("EFI_BLOCK_SIZE") != null && mFvOpts
.get("EFI_NUM_BLOCKS") != null) {
2002 bSize
= mFvOpts
.get("EFI_BLOCK_SIZE");
2003 numBlks
= mFvOpts
.get("EFI_NUM_BLOCKS");
2004 boolean blockSizeWellFormat
= true;
2005 boolean numOfBlockWellFormat
= true;
2006 if (!DataValidation
.isHexDoubleWordDataType(bSize
) && !DataValidation
.isInt(bSize
)) {
2007 blockSizeWellFormat
= false;
2008 JOptionPane
.showMessageDialog(frame
, fvName
+ " block size bad format.");
2010 if (!DataValidation
.isHexDoubleWordDataType(numBlks
) && !DataValidation
.isInt(numBlks
)) {
2011 numOfBlockWellFormat
= false;
2012 JOptionPane
.showMessageDialog(frame
, fvName
+ " number of blocks bad format.");
2014 if (blockSizeWellFormat
&& numOfBlockWellFormat
) {
2015 int size
= Integer
.decode(bSize
);
2016 int num
= Integer
.decode(numBlks
);
2017 fvSize
= "0x" + Integer
.toHexString(size
*num
);
2021 return new String
[]{fvName
, fvSize
, fvFile
};
2026 * This method initializes jPanelBgFvName
2028 * @return javax.swing.JPanel
2030 private JPanel
getJPanelBgFvName() {
2031 if (jPanelBgFvName
== null) {
2032 jPanelBgFvName
= new JPanel();
2033 jPanelBgFvName
.setPreferredSize(new java
.awt
.Dimension(80,55));
2034 jPanelBgFvName
.add(getJButtonFvNameAdd(), null);
2035 jPanelBgFvName
.add(getJButtonFvNameDel(), null);
2037 return jPanelBgFvName
;
2041 * This method initializes jPanelBgFvImage
2043 * @return javax.swing.JPanel
2045 private JPanel
getJPanelBgFvImage() {
2046 if (jPanelBgFvImage
== null) {
2047 jPanelBgFvImage
= new JPanel();
2048 jPanelBgFvImage
.setPreferredSize(new java
.awt
.Dimension(150,100));
2049 jPanelBgFvImage
.add(getJButtonAddFvImage(), null);
2050 jPanelBgFvImage
.add(getJButtonDelFvImage(), null);
2051 jPanelBgFvImage
.add(getJButtonUpdateFvImage(), null);
2053 return jPanelBgFvImage
;
2057 * This method initializes jPanelW
2059 * @return javax.swing.JPanel
2061 private JPanel
getJPanelW() {
2062 if (jPanelW
== null) {
2063 jPanelW
= new JPanel();
2064 jPanelW
.add(getJPanelBgFvImage(), null);
2070 * This method initializes jPanelFvImageParaN
2072 * @return javax.swing.JPanel
2074 private JPanel
getJPanelFvImageParaN() {
2075 if (jPanelFvImageParaN
== null) {
2076 FlowLayout flowLayout3
= new FlowLayout();
2077 flowLayout3
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
2078 jPanelFvImageParaN
= new JPanel();
2079 jPanelFvImageParaN
.setLayout(flowLayout3
);
2080 jPanelFvImageParaN
.add(new StarLabel(), null);
2081 jPanelFvImageParaN
.add(jLabelFvImageNames
, null);
2082 jPanelFvImageParaN
.add(jLabelFvParaName
, null);
2083 jPanelFvImageParaN
.add(getJTextFieldFvParaName(), null);
2085 return jPanelFvImageParaN
;
2089 * This method initializes jPanelFvImageParaS
2091 * @return javax.swing.JPanel
2093 private JPanel
getJPanelFvImageParaS() {
2094 if (jPanelFvImageParaS
== null) {
2095 FlowLayout flowLayout6
= new FlowLayout();
2096 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
2097 jPanelFvImageParaS
= new JPanel();
2098 jPanelFvImageParaS
.setLayout(flowLayout6
);
2099 jPanelFvImageParaS
.add(jLabelFvParaType
, null);
2100 jPanelFvImageParaS
.add(getJComboBoxFvParaType(), null);
2102 return jPanelFvImageParaS
;
2106 * This method initializes jPanelFvImageParaC
2108 * @return javax.swing.JPanel
2110 private JPanel
getJPanelFvImageParaC() {
2111 if (jPanelFvImageParaC
== null) {
2112 jPanelFvImageParaC
= new JPanel();
2113 jPanelFvImageParaC
.add(getJScrollPaneFvImageNames(), null);
2114 jPanelFvImageParaC
.add(getJPanelBgFvName(), null);
2116 return jPanelFvImageParaC
;
2120 * This method initializes jPanelFvImageOptsN
2122 * @return javax.swing.JPanel
2124 private JPanel
getJPanelFvImageOptsN() {
2125 if (jPanelFvImageOptsN
== null) {
2126 jPanelFvImageOptsN
= new JPanel();
2127 jPanelFvImageOptsN
.add(jLabelOptions
, null);
2128 jPanelFvImageOptsN
.add(jLabelFvImageOptName
, null);
2129 jPanelFvImageOptsN
.add(getJTextFieldFvImageOptName(), null);
2130 jPanelFvImageOptsN
.add(jLabelFvImageOptValue
, null);
2131 jPanelFvImageOptsN
.add(getJTextFieldFvImageOptValue(), null);
2133 return jPanelFvImageOptsN
;
2137 * This method initializes jPanelFvImageOptsS
2139 * @return javax.swing.JPanel
2141 private JPanel
getJPanelFvImageOptsS() {
2142 if (jPanelFvImageOptsS
== null) {
2143 jPanelFvImageOptsS
= new JPanel();
2145 return jPanelFvImageOptsS
;
2149 * This method initializes jPanelFvImageOptsC
2151 * @return javax.swing.JPanel
2153 private JPanel
getJPanelFvImageOptsC() {
2154 if (jPanelFvImageOptsC
== null) {
2155 jPanelFvImageOptsC
= new JPanel();
2156 jPanelFvImageOptsC
.add(getJScrollPane(), null);
2157 jPanelFvImageOptsC
.add(getJPanelFvImageOptsButtonGroup(), null);
2159 return jPanelFvImageOptsC
;
2165 public static void main(String
[] args
) {
2166 // TODO Auto-generated method stub
2167 new FpdFlash().setVisible(true);
2171 * This method initializes this
2175 private void initialize() {
2176 this.setSize(660, 650);
2177 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
2178 this.setContentPane(getJContentPane());
2179 this.setTitle("FPD Flash Definitions");
2180 this.addInternalFrameListener(new InternalFrameAdapter(){
2181 public void internalFrameDeactivated(InternalFrameEvent e
){
2182 if (jTableFvProp
.isEditing()) {
2183 jTableFvProp
.getCellEditor().stopCellEditing();
2185 if (jTableFvImageNames
.isEditing()) {
2186 jTableFvImageNames
.getCellEditor().stopCellEditing();
2188 if (jTableFvInfo
.isEditing()) {
2189 jTableFvInfo
.getCellEditor().stopCellEditing();
2191 if (jTableFvAdditional
.isEditing()) {
2192 jTableFvAdditional
.getCellEditor().stopCellEditing();
2198 private void init(FpdFileContents ffc
) {
2201 jTextFieldFdf
.setText("");
2202 String fdfFile
= ffc
.getFlashDefinitionFile();
2203 if (fdfFile
!= null && fdfFile
.length() > 0) {
2204 jTextFieldFdf
.setText(fdfFile
);
2205 String fdfPath
= System
.getenv("WORKSPACE") + File
.separator
+ fdfFile
;
2206 initFvInFdfTable(fdfPath
);
2209 initFvAdditionalTable();
2212 private void getOptionNameValue(Map
<String
, String
> m
){
2213 for (int i
= 0; i
< jTableFvImageOpts
.getRowCount(); ++i
) {
2214 m
.put(fvOptionTableModel
.getValueAt(i
, 0)+"", fvOptionTableModel
.getValueAt(i
, 1)+"");
2218 * This method initializes jContentPane
2220 * @return javax.swing.JPanel
2222 private JPanel
getJContentPane() {
2223 if (jContentPane
== null) {
2224 jContentPane
= new JPanel();
2225 jContentPane
.setLayout(new BorderLayout());
2226 jContentPane
.add(getJPanelContentEast(), java
.awt
.BorderLayout
.EAST
);
2227 jContentPane
.add(getJPanelContentSouth(), java
.awt
.BorderLayout
.SOUTH
);
2228 jContentPane
.add(getJPanelContentWest(), java
.awt
.BorderLayout
.WEST
);
2229 jContentPane
.add(getJPanelContentNorth(), java
.awt
.BorderLayout
.NORTH
);
2230 jContentPane
.add(getJTabbedPane(), java
.awt
.BorderLayout
.CENTER
);
2232 return jContentPane
;
2235 private void getFlashInfoFromFdf (String fdfPath
) {
2236 File fdf
= new File(fdfPath
);
2237 if (!fdf
.exists()) {
2243 FileReader reader
= new FileReader(fdf
);
2244 BufferedReader in
= new BufferedReader(reader
);
2247 while ((str
= in
.readLine()) != null) {
2251 // skip empty line, comment (start with //)
2253 if (str
.length() == 0 || str
.startsWith("//")) {
2259 if (str
.startsWith("ErasePolarity")) {
2260 erasePolarity
= str
.substring(str
.indexOf("=") + 1, str
.lastIndexOf(",")).trim();
2263 // dig into Block section.
2265 if (str
.startsWith("Block") && str
.endsWith("}")) {
2266 String
[] blockSec
= str
.split(",");
2267 String nv
= blockSec
[1].trim();
2268 String
[] sizeSec
= nv
.split("=");
2269 vBlockSize
.add(sizeSec
[1].trim());
2277 catch (Exception e
) {
2282 private void getFvInfoFromFdf(String fdfPath
, Vector
<FvInfoFromFdf
> vFvInfo
) {
2283 File fdf
= new File(fdfPath
);
2284 if (!fdf
.exists()) {
2290 FileReader reader
= new FileReader(fdf
);
2291 BufferedReader in
= new BufferedReader(reader
);
2294 while ((str
= in
.readLine()) != null) {
2298 // skip empty line, comment (start with //)
2300 if (str
.length() == 0 || str
.startsWith("//")) {
2304 // dig into Region {} section, create FvInfoFromFdf object for it.
2306 if (str
.startsWith("Region") && str
.endsWith("{")) {
2307 FvInfoFromFdf fvInfo
= new FvInfoFromFdf();
2308 boolean nameFound
= false;
2309 boolean sizeFound
= false;
2310 while ((str
= in
.readLine()) != null) {
2314 // skip empty line, comment (start with //)
2316 if (str
.length() == 0 || str
.startsWith("//")) {
2320 if (str
.startsWith("Name")) {
2321 int firstQuote
= str
.indexOf("\"");
2322 int lastQuote
= str
.lastIndexOf("\"");
2323 fvInfo
.setFvName(str
.substring(firstQuote
+ 1, lastQuote
));
2327 if (str
.startsWith("Size")) {
2328 int equalIndex
= str
.indexOf("=");
2329 int commaIndex
= str
.indexOf(",");
2330 fvInfo
.setSize(str
.substring(equalIndex
+ 1, commaIndex
).trim());
2334 if (nameFound
&& sizeFound
) {
2339 vFvInfo
.add(fvInfo
);
2342 // dig into File {} section, supply file name information to existing FvInfoFromFdf object.
2344 if (str
.startsWith("File")) {
2345 boolean fileNameFound
= false;
2346 boolean fvFound
= false;
2347 String fileName
= "";
2349 while ((str
= in
.readLine()) != null) {
2353 // skip empty line, comment (start with //)
2355 if (str
.length() == 0 || str
.startsWith("//")) {
2359 if (str
.startsWith("Name")) {
2360 int firstQuote
= str
.indexOf("\"");
2361 int lastQuote
= str
.lastIndexOf("\"");
2362 fileName
= str
.substring(firstQuote
+ 1, lastQuote
);
2363 fileNameFound
= true;
2366 if (str
.startsWith("Region")) {
2367 int firstQuote
= str
.indexOf("\"");
2368 int lastQuote
= str
.lastIndexOf("\"");
2369 fvName
= str
.substring(firstQuote
+ 1, lastQuote
);
2373 if (fileNameFound
&& fvFound
) {
2378 for (int i
= 0; i
<vFvInfo
.size(); ++i
) {
2379 if (vFvInfo
.get(i
).getFvName().equals(fvName
)) {
2380 vFvInfo
.get(i
).setEfiFileName(fileName
);
2390 catch (Exception e
) {
2396 // class ModuleSAInfo {
2397 // private int rowNumber = -1;
2398 // private String moduleGuid = null;
2399 // private String moduleVersion = null;
2400 // private String packageGuid = null;
2401 // private String packageVersion = null;
2402 // private String arch = null;
2404 // public ModuleSAInfo (String mg, String mv, String pg, String pv, String a) {
2406 // moduleVersion = mv;
2407 // packageGuid = pg;
2408 // packageVersion = pv;
2413 // * @return Returns the arch.
2415 // public String getArch() {
2420 // * @param arch The arch to set.
2422 // public void setArch(String arch) {
2423 // this.arch = arch;
2427 // * @return Returns the moduleGuid.
2429 // public String getModuleGuid() {
2430 // return moduleGuid;
2434 // * @param moduleGuid The moduleGuid to set.
2436 // public void setModuleGuid(String moduleGuid) {
2437 // this.moduleGuid = moduleGuid;
2441 // * @return Returns the moduleVersion.
2443 // public String getModuleVersion() {
2444 // return moduleVersion;
2448 // * @param moduleVersion The moduleVersion to set.
2450 // public void setModuleVersion(String moduleVersion) {
2451 // this.moduleVersion = moduleVersion;
2455 // * @return Returns the packageGuid.
2457 // public String getPackageGuid() {
2458 // return packageGuid;
2462 // * @param packageGuid The packageGuid to set.
2464 // public void setPackageGuid(String packageGuid) {
2465 // this.packageGuid = packageGuid;
2469 // * @return Returns the packageVersion.
2471 // public String getPackageVersion() {
2472 // return packageVersion;
2476 // * @param packageVersion The packageVersion to set.
2478 // public void setPackageVersion(String packageVersion) {
2479 // this.packageVersion = packageVersion;
2483 // * @return Returns the rowNumber.
2485 // public int getRowNumber() {
2486 // return rowNumber;
2490 // * @param rowNumber The rowNumber to set.
2492 // public void setRowNumber(int rowNumber) {
2493 // this.rowNumber = rowNumber;
2497 private class ModuleOrderPane
extends JPanel
{
2502 private static final long serialVersionUID
= 1L;
2503 private JPanel jPanelModOrderN
= null;
2504 private JPanel jPanelModOrderS
= null;
2505 private JPanel jPanelModOrderC
= null;
2506 private JScrollPane jScrollPaneModInFv
= null;
2507 private JTable jTableModInFv
= null;
2508 private JPanel jPanelController
= null;
2509 private JScrollPane jScrollPaneFpdModules
= null;
2510 private JTable jTableFpdModules
= null;
2511 private JButton jButtonUp
= null;
2512 private JButton jButtonInsert
= null;
2513 private JButton jButtonRemove
= null;
2514 private JButton jButtonDown
= null;
2515 private JButton jButtonOk
= null;
2516 private JButton jButtonCancel
= null;
2517 private IDefaultTableModel modInFvTableModel
= null;
2518 private IDefaultTableModel fpdModTableModel
= null;
2519 // private ArrayList<ModuleSAInfo> listTableModInFvModuleSAInfo = null;
2520 // private ArrayList<ModuleSAInfo> listTableFpdModulesModuleSAInfo = null;
2521 private String title
= null;
2522 private String outputFileName
= null;
2524 public ModuleOrderPane(String tabTitle
, String file
) {
2525 super(new BorderLayout());
2527 outputFileName
= file
;
2528 // listTableModInFvModuleSAInfo = new ArrayList<ModuleSAInfo>();
2529 // listTableFpdModulesModuleSAInfo = new ArrayList<ModuleSAInfo>();
2530 add(getJPanelModOrderN(), java
.awt
.BorderLayout
.NORTH
);
2531 add(getJPanelModOrderS(), java
.awt
.BorderLayout
.SOUTH
);
2532 add(getJPanelModOrderC(), java
.awt
.BorderLayout
.CENTER
);
2533 showModulesInFv(title
);
2534 showAllModulesInPlatform();
2537 private void showModulesInFv(String fvName
) {
2538 int size
= ffc
.getUserExtsIncModCount(fvName
);
2541 String
[][] saa
= new String
[size
][5];
2542 ffc
.getUserExtsIncMods(fvName
, saa
);
2544 for (int i
= 0; i
< size
; ++i
) {
2545 String moduleKey
= saa
[i
][0] + " " + saa
[i
][1] + " " + saa
[i
][2] + " " + saa
[i
][3];
2546 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2547 String name
= "N/A";
2549 name
= mi
.getName();
2552 String
[] row
= { name
, saa
[i
][0] , saa
[i
][1], saa
[i
][2] , saa
[i
][3], saa
[i
][4] };
2553 modInFvTableModel
.addRow(row
);
2557 // From ModuleSAs, get module guids with FvBinding = fvName.
2559 Vector
<String
[]> vModuleSA
= new Vector
<String
[]>();
2560 ffc
.getFrameworkModuleSAByFvBinding(fvName
, vModuleSA
);
2562 // If BuildOptions->UserExtensions already contain these module info,
2563 // no need to add them into table again.
2565 Iterator
<String
[]> iter
= vModuleSA
.iterator();
2566 while (iter
.hasNext()){
2567 String
[] sa
= iter
.next();
2568 if (!moduleInfoInTable (sa
, modInFvTableModel
)) {
2569 String moduleKey
= sa
[0] + " " + sa
[1] + " " + sa
[2] + " " + sa
[3];
2570 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2571 String name
= "N/A";
2573 name
= mi
.getName();
2575 String
[] row
= { name
, sa
[0] , sa
[1], sa
[2] , sa
[3], sa
[4] };
2576 modInFvTableModel
.addRow(row
);
2582 private void showAllModulesInPlatform() {
2583 int size
= ffc
.getFrameworkModulesCount();
2584 String
[][] saa
= new String
[size
][5];
2585 ffc
.getFrameworkModulesInfo(saa
);
2587 for (int i
= 0; i
< size
; ++i
) {
2588 if (moduleInfoInTable(saa
[i
], modInFvTableModel
) || moduleInfoInTable(saa
[i
], fpdModTableModel
)) {
2591 String moduleKey
= saa
[i
][0] + " " + saa
[i
][1] + " " + saa
[i
][2] + " " + saa
[i
][3];
2592 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(moduleKey
);
2593 String name
= "N/A";
2595 name
= mi
.getName();
2597 String
[] row
= { name
, saa
[i
][0] , saa
[i
][1], saa
[i
][2] , saa
[i
][3], saa
[i
][4] };
2598 fpdModTableModel
.addRow(row
);
2601 TableSorter sorter
= (TableSorter
)jTableFpdModules
.getModel();
2602 sorter
.setSortState(0, TableSorter
.ASCENDING
);
2606 private boolean moduleInfoInTable (String
[] moduleInfo
, DefaultTableModel model
) {
2607 boolean matched
= false;
2608 int size
= model
.getDataVector().size();
2609 for (int i
= 0; i
< size
; ++i
) {
2610 Vector rowData
= (Vector
)model
.getDataVector().elementAt(i
);
2611 for (int j
= 1; j
< rowData
.size(); ++j
) {
2612 if (rowData
.elementAt(j
) == null && moduleInfo
[j
-1] == null) {
2615 else if (rowData
.elementAt(j
).equals("null") && moduleInfo
[j
-1] == null) {
2618 else if (rowData
.elementAt(j
) == null && moduleInfo
[j
-1].equals("null")) {
2621 else if (rowData
.elementAt(j
) != null && rowData
.elementAt(j
).toString().equalsIgnoreCase(moduleInfo
[j
-1])) {
2641 * This method initializes jPanelModOrderN
2643 * @return javax.swing.JPanel
2645 private JPanel
getJPanelModOrderN() {
2646 if (jPanelModOrderN
== null) {
2647 jPanelModOrderN
= new JPanel();
2649 return jPanelModOrderN
;
2653 * This method initializes jPanelModOrderS
2655 * @return javax.swing.JPanel
2657 private JPanel
getJPanelModOrderS() {
2658 if (jPanelModOrderS
== null) {
2659 FlowLayout flowLayout6
= new FlowLayout();
2660 flowLayout6
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
2661 jPanelModOrderS
= new JPanel();
2662 jPanelModOrderS
.setLayout(flowLayout6
);
2663 jPanelModOrderS
.add(getJButtonOk(), null);
2664 jPanelModOrderS
.add(getJButtonCancel(), null);
2666 return jPanelModOrderS
;
2670 * This method initializes jPanelModOrderC
2672 * @return javax.swing.JPanel
2674 private JPanel
getJPanelModOrderC() {
2675 if (jPanelModOrderC
== null) {
2676 jPanelModOrderC
= new JPanel();
2677 jPanelModOrderC
.add(getJScrollPaneModInFv(), null);
2678 jPanelModOrderC
.add(getJPanelController(), null);
2679 jPanelModOrderC
.add(getJScrollPaneFpdModules(), null);
2681 return jPanelModOrderC
;
2685 * This method initializes jScrollPaneModInFv
2687 * @return javax.swing.JScrollPane
2689 private JScrollPane
getJScrollPaneModInFv() {
2690 if (jScrollPaneModInFv
== null) {
2691 jScrollPaneModInFv
= new JScrollPane();
2692 jScrollPaneModInFv
.setPreferredSize(new java
.awt
.Dimension(200,500));
2693 jScrollPaneModInFv
.setViewportView(getJTableModInFv());
2695 return jScrollPaneModInFv
;
2699 * This method initializes jTableModInFv
2701 * @return javax.swing.JTable
2703 private JTable
getJTableModInFv() {
2704 if (jTableModInFv
== null) {
2705 modInFvTableModel
= new IDefaultTableModel();
2707 jTableModInFv
= new JTable(modInFvTableModel
){
2711 private static final long serialVersionUID
= 4903583933542581721L;
2713 public String
getToolTipText(MouseEvent e
) {
2715 java
.awt
.Point p
= e
.getPoint();
2716 int rowIndex
= rowAtPoint(p
);
2717 // int colIndex = columnAtPoint(p);
2718 // int realColumnIndex = convertColumnIndexToModel(colIndex);
2720 TableModel model
= getModel();
2721 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2722 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2723 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2724 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2725 String arch
= (String
) model
.getValueAt(rowIndex
, 5);
2726 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2728 tip
= "Path: " + mi
.getPath() + "; Arch: " + arch
+ ";";
2731 tip
= "No Module Path Information.";
2738 modInFvTableModel
.addColumn("Module Orders in FV");
2739 modInFvTableModel
.addColumn("mg");
2740 modInFvTableModel
.addColumn("mv");
2741 modInFvTableModel
.addColumn("pg");
2742 modInFvTableModel
.addColumn("pv");
2743 modInFvTableModel
.addColumn("arch");
2745 for (int i
= 1; i
< 6; ++i
) {
2746 jTableModInFv
.removeColumn(jTableModInFv
.getColumnModel().getColumn(jTableModInFv
.getColumnCount()-1));
2749 jTableModInFv
.setRowHeight(20);
2750 jTableModInFv
.setShowGrid(false);
2751 jTableModInFv
.setAutoCreateColumnsFromModel(false);
2752 jTableModInFv
.addMouseListener(new MouseAdapter() {
2755 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
2758 public void mouseClicked(MouseEvent arg0
) {
2759 if (arg0
.getButton() == MouseEvent
.BUTTON3
) {
2760 java
.awt
.Point p
= arg0
.getPoint();
2761 int rowIndex
= jTableModInFv
.rowAtPoint(p
);
2762 TableModel model
= jTableModInFv
.getModel();
2763 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2764 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2765 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2766 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2767 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2768 String details
= "PackageGuid: " + pg
+ "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2770 details
= "In Package " + mi
.getPackageId().getName() + "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2772 JOptionPane
.showMessageDialog(frame
, details
);
2778 return jTableModInFv
;
2782 * This method initializes jPanelController
2784 * @return javax.swing.JPanel
2786 private JPanel
getJPanelController() {
2787 if (jPanelController
== null) {
2788 FlowLayout flowLayout5
= new FlowLayout();
2789 flowLayout5
.setVgap(50);
2790 flowLayout5
.setHgap(50);
2791 jPanelController
= new JPanel();
2792 jPanelController
.setLayout(flowLayout5
);
2793 jPanelController
.setPreferredSize(new java
.awt
.Dimension(150,500));
2794 jPanelController
.add(getJButtonUp(), null);
2795 jPanelController
.add(getJButtonInsert(), null);
2796 jPanelController
.add(getJButtonRemove(), null);
2797 jPanelController
.add(getJButtonDown(), null);
2799 return jPanelController
;
2803 * This method initializes jScrollPaneFpdModules
2805 * @return javax.swing.JScrollPane
2807 private JScrollPane
getJScrollPaneFpdModules() {
2808 if (jScrollPaneFpdModules
== null) {
2809 jScrollPaneFpdModules
= new JScrollPane();
2810 jScrollPaneFpdModules
.setPreferredSize(new java
.awt
.Dimension(200,500));
2811 jScrollPaneFpdModules
.setViewportView(getJTableFpdModules());
2813 return jScrollPaneFpdModules
;
2817 * This method initializes jTableFpdModules
2819 * @return javax.swing.JTable
2821 private JTable
getJTableFpdModules() {
2822 if (jTableFpdModules
== null) {
2823 fpdModTableModel
= new IDefaultTableModel();
2824 TableSorter sorter
= new TableSorter(fpdModTableModel
);
2825 jTableFpdModules
= new JTable(sorter
){
2829 private static final long serialVersionUID
= -4666296888377637808L;
2831 public String
getToolTipText(MouseEvent e
) {
2833 java
.awt
.Point p
= e
.getPoint();
2834 int rowIndex
= rowAtPoint(p
);
2835 // int colIndex = columnAtPoint(p);
2836 // int realColumnIndex = convertColumnIndexToModel(colIndex);
2838 TableModel model
= getModel();
2839 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2840 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2841 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2842 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2843 String arch
= (String
) model
.getValueAt(rowIndex
, 5);
2844 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2846 tip
= "Path: " + mi
.getPath() + "; Arch: " + arch
+ ";";
2849 tip
= "No Module Path Information.";
2857 fpdModTableModel
.addColumn("Modules in Platform");
2858 fpdModTableModel
.addColumn("mg");
2859 fpdModTableModel
.addColumn("mv");
2860 fpdModTableModel
.addColumn("pg");
2861 fpdModTableModel
.addColumn("pv");
2862 fpdModTableModel
.addColumn("arch");
2864 for (int i
= 1; i
< 6; ++i
) {
2865 jTableFpdModules
.removeColumn(jTableFpdModules
.getColumnModel().getColumn(jTableFpdModules
.getColumnCount()-1));
2867 jTableFpdModules
.setRowHeight(20);
2868 jTableFpdModules
.setShowGrid(false);
2869 jTableFpdModules
.setAutoCreateColumnsFromModel(false);
2870 jTableFpdModules
.addMouseListener(new MouseAdapter() {
2873 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
2876 public void mouseClicked(MouseEvent arg0
) {
2877 if (arg0
.getButton() == MouseEvent
.BUTTON3
) {
2878 java
.awt
.Point p
= arg0
.getPoint();
2879 int rowIndex
= jTableFpdModules
.rowAtPoint(p
);
2880 TableModel model
= jTableFpdModules
.getModel();
2881 String mg
= (String
) model
.getValueAt(rowIndex
, 1);
2882 String mv
= (String
) model
.getValueAt(rowIndex
, 2);
2883 String pg
= (String
) model
.getValueAt(rowIndex
, 3);
2884 String pv
= (String
) model
.getValueAt(rowIndex
, 4);
2885 ModuleIdentification mi
= WorkspaceProfile
.getModuleId(mg
+ " " + mv
+ " " + pg
+ " " + pv
);
2886 String details
= "PackageGuid: " + pg
+ "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2888 details
= "In Package " + mi
.getPackageId().getName() + "; ModuleVer:" + mv
+ "; PkgVer:" + pv
;
2890 JOptionPane
.showMessageDialog(frame
, details
);
2897 return jTableFpdModules
;
2901 * This method initializes jButtonUp
2903 * @return javax.swing.JButton
2905 private JButton
getJButtonUp() {
2906 if (jButtonUp
== null) {
2907 jButtonUp
= new JButton();
2908 jButtonUp
.setPreferredSize(new java
.awt
.Dimension(60,20));
2909 jButtonUp
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 14));
2910 jButtonUp
.setText("^");
2911 jButtonUp
.addActionListener(new java
.awt
.event
.ActionListener() {
2912 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2913 int selectedRow
= jTableModInFv
.getSelectedRow();
2914 if (selectedRow
<= 0) {
2917 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
- 1);
2918 jTableModInFv
.changeSelection(selectedRow
- 1, 0, false, false);
2926 * This method initializes jButtonInsert
2928 * @return javax.swing.JButton
2930 private JButton
getJButtonInsert() {
2931 if (jButtonInsert
== null) {
2932 jButtonInsert
= new JButton();
2933 jButtonInsert
.setText("<");
2934 jButtonInsert
.setPreferredSize(new java
.awt
.Dimension(60,20));
2935 jButtonInsert
.addActionListener(new java
.awt
.event
.ActionListener() {
2936 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2937 int selectedRowRight
= jTableFpdModules
.getSelectedRow();
2938 if (selectedRowRight
< 0) {
2942 int rowInModel
= ((TableSorter
)jTableFpdModules
.getModel()).getModelRowIndex(selectedRowRight
);
2943 String name
= fpdModTableModel
.getValueAt(rowInModel
, 0)+"";
2944 String mg
= fpdModTableModel
.getValueAt(rowInModel
, 1)+"";
2945 String mv
= fpdModTableModel
.getValueAt(rowInModel
, 2)+"";
2946 String pg
= fpdModTableModel
.getValueAt(rowInModel
, 3)+"";
2947 String pv
= fpdModTableModel
.getValueAt(rowInModel
, 4)+"";
2948 String arch
= fpdModTableModel
.getValueAt(rowInModel
, 5)+"";
2949 String
[] row
= {name
, mg
, mv
, pg
, pv
, arch
};
2950 if (name
.length() == 0 || name
.equals("N/A")) {
2954 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
2955 if (selectedRowLeft
< 0) {
2956 modInFvTableModel
.addRow(row
);
2957 jTableModInFv
.changeSelection(jTableModInFv
.getRowCount() - 1, 0, false, false);
2960 modInFvTableModel
.insertRow(selectedRowLeft
, row
);
2961 jTableModInFv
.changeSelection(selectedRowLeft
, 0, false, false);
2963 fpdModTableModel
.removeRow(rowInModel
);
2967 return jButtonInsert
;
2971 * This method initializes jButtonRemove
2973 * @return javax.swing.JButton
2975 private JButton
getJButtonRemove() {
2976 if (jButtonRemove
== null) {
2977 jButtonRemove
= new JButton();
2978 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(60,20));
2979 jButtonRemove
.setText(">");
2980 jButtonRemove
.addActionListener(new java
.awt
.event
.ActionListener() {
2981 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
2982 int selectedRowLeft
= jTableModInFv
.getSelectedRow();
2983 if (selectedRowLeft
< 0) {
2987 String name
= modInFvTableModel
.getValueAt(selectedRowLeft
, 0)+"";
2988 String mg
= modInFvTableModel
.getValueAt(selectedRowLeft
, 1)+"";
2989 String mv
= modInFvTableModel
.getValueAt(selectedRowLeft
, 2)+"";
2990 String pg
= modInFvTableModel
.getValueAt(selectedRowLeft
, 3)+"";
2991 String pv
= modInFvTableModel
.getValueAt(selectedRowLeft
, 4)+"";
2992 String arch
= modInFvTableModel
.getValueAt(selectedRowLeft
, 5)+"";
2993 String
[] row
= {name
, mg
, mv
, pg
, pv
, arch
};
2994 String moduleKey
= mg
+ " " + mv
+ " " + pg
+ " " + pv
+ " " + arch
;
2995 if (name
.length() == 0 || name
.equals("N/A") || ffc
.getModuleSA(moduleKey
) == null) {
2996 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
);
2997 modInFvTableModel
.removeRow(selectedRowLeft
);
3001 fpdModTableModel
.addRow(row
);
3002 int viewIndex
= ((TableSorter
) jTableFpdModules
.getModel()).getViewIndexArray()[jTableFpdModules
3003 .getRowCount() - 1];
3004 jTableFpdModules
.changeSelection(viewIndex
, 0, false, false);
3005 modInFvTableModel
.removeRow(selectedRowLeft
);
3009 return jButtonRemove
;
3013 * This method initializes jButtonDown
3015 * @return javax.swing.JButton
3017 private JButton
getJButtonDown() {
3018 if (jButtonDown
== null) {
3019 jButtonDown
= new JButton();
3020 jButtonDown
.setPreferredSize(new java
.awt
.Dimension(60,20));
3021 jButtonDown
.setFont(new java
.awt
.Font("Dialog", java
.awt
.Font
.BOLD
, 10));
3022 jButtonDown
.setText("v");
3023 jButtonDown
.addActionListener(new java
.awt
.event
.ActionListener() {
3024 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3025 int selectedRow
= jTableModInFv
.getSelectedRow();
3026 if (selectedRow
>= jTableModInFv
.getRowCount() - 1) {
3029 modInFvTableModel
.moveRow(selectedRow
, selectedRow
, selectedRow
+ 1);
3030 jTableModInFv
.changeSelection(selectedRow
+ 1, 0, false, false);
3038 * This method initializes jButtonOk
3040 * @return javax.swing.JButton
3042 private JButton
getJButtonOk() {
3043 if (jButtonOk
== null) {
3044 jButtonOk
= new JButton();
3045 jButtonOk
.setPreferredSize(new java
.awt
.Dimension(80,20));
3046 jButtonOk
.setText("Ok");
3047 jButtonOk
.addActionListener(new java
.awt
.event
.ActionListener() {
3048 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3049 // need reset FvBindings in ModuleSA.
3050 ffc
.removeFvBindingAll(title
);
3052 // collect module order information to store them into <BuildOptions> -> <UserExtensions>.
3053 // also update the FvBinding info in <ModuleSA>.
3055 Vector
<String
[]> vModInFv
= new Vector
<String
[]>();
3056 for (int i
= 0; i
< jTableModInFv
.getRowCount(); ++i
) {
3057 String moduleName
= modInFvTableModel
.getValueAt(i
, 0)+"";
3058 if (moduleName
.length() == 0 || moduleName
.equals("N/A")) {
3062 String mg
= modInFvTableModel
.getValueAt(i
, 1)+"";
3063 String mv
= modInFvTableModel
.getValueAt(i
, 2)+"";
3064 String pg
= modInFvTableModel
.getValueAt(i
, 3)+"";
3065 String pv
= modInFvTableModel
.getValueAt(i
, 4)+"";
3066 String arch
= modInFvTableModel
.getValueAt(i
, 5)+"";
3068 String moduleInfo
= mg
+ " " + mv
+ " " + pg
+ " " + pv
+ " " + arch
;
3070 String
[] sa
= { mg
, mv
, pg
, pv
, arch
};
3072 ffc
.updateFvBindingInModuleSA(moduleInfo
, title
);
3075 ffc
.removeBuildOptionsUserExtensions(title
);
3076 ffc
.genBuildOptionsUserExtensions(title
, outputFileName
, vModInFv
);
3078 docConsole
.setSaved(false);
3079 jTabbedPane
.setSelectedIndex(0);
3087 * This method initializes jButtonCancel
3089 * @return javax.swing.JButton
3091 private JButton
getJButtonCancel() {
3092 if (jButtonCancel
== null) {
3093 jButtonCancel
= new JButton();
3094 jButtonCancel
.setPreferredSize(new java
.awt
.Dimension(80,20));
3095 jButtonCancel
.setText("Cancel");
3096 jButtonCancel
.addActionListener(new java
.awt
.event
.ActionListener() {
3097 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
3098 jTabbedPane
.setSelectedIndex(0);
3102 return jButtonCancel
;
3106 } // @jve:decl-index=0:visual-constraint="10,10"
3108 class FvOptsTableModel
extends DefaultTableModel
{
3110 private static final long serialVersionUID
= 1L;
3112 private Vector
<Object
> vNonEditableName
= new Vector
<Object
>();
3113 private Vector
<Object
> vKeyWords
= new Vector
<Object
>();
3115 public boolean isCellEditable(int row
, int col
) {
3116 if (vNonEditableName
.size() > 0 || vKeyWords
.size() > 0) {
3117 if (vKeyWords
.contains(getValueAt(row
, 0))) {
3120 if (vNonEditableName
.contains(getValueAt(row
, 0)) && col
== 0) {
3129 * @return Returns the vKeyWords.
3131 protected Vector
<Object
> getVKeyWords() {
3136 * @param keyWords The vKeyWords to set.
3138 protected void setVKeyWords(Vector
<Object
> keyWords
) {
3139 vKeyWords
.removeAllElements();
3140 vKeyWords
.addAll(keyWords
);
3144 * @return Returns the vNonEditableName.
3146 protected Vector
<Object
> getVNonEditableName() {
3147 return vNonEditableName
;
3151 * @param nonEditableName The vNonEditableName to set.
3153 protected void setVNonEditableName(Vector
<Object
> nonEditableName
) {
3154 vNonEditableName
.removeAllElements();
3155 vNonEditableName
.addAll(nonEditableName
);
3159 class ImageParaTableModel
extends DefaultTableModel
{
3161 private static final long serialVersionUID
= 1L;
3163 public boolean isCellEditable(int row
, int col
) {
3164 // if (getValueAt(row, 1).equals("ImageName") && col >=1) {
3172 class FvInfoFromFdf
{
3173 private String fvName
;
3174 private String size
;
3175 private String efiFileName
;
3177 public FvInfoFromFdf () {
3182 public FvInfoFromFdf (String f
, String s
, String e
) {
3188 public String
getEfiFileName() {
3191 public void setEfiFileName(String efiFileName
) {
3192 this.efiFileName
= efiFileName
;
3194 public String
getFvName() {
3197 public void setFvName(String fvName
) {
3198 this.fvName
= fvName
;
3200 public String
getSize() {
3203 public void setSize(String size
) {