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
.ButtonGroup
;
20 import javax
.swing
.DefaultCellEditor
;
21 import javax
.swing
.DefaultListModel
;
22 import javax
.swing
.JDialog
;
23 import javax
.swing
.JFileChooser
;
24 import javax
.swing
.JFrame
;
25 import javax
.swing
.JInternalFrame
;
26 import javax
.swing
.JOptionPane
;
27 import javax
.swing
.JTabbedPane
;
28 import javax
.swing
.JButton
;
29 import javax
.swing
.ListSelectionModel
;
31 import org
.tianocore
.PlatformSurfaceAreaDocument
;
32 import org
.tianocore
.frameworkwizard
.common
.Tools
;
33 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
34 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
37 import java
.awt
.FlowLayout
;
38 import java
.awt
.event
.ActionEvent
;
39 import java
.awt
.event
.ActionListener
;
40 import java
.awt
.event
.ComponentAdapter
;
41 import java
.awt
.event
.ComponentEvent
;
42 import java
.awt
.event
.FocusAdapter
;
43 import java
.awt
.event
.FocusEvent
;
44 import java
.awt
.event
.ItemEvent
;
45 import java
.awt
.event
.ItemListener
;
46 import java
.awt
.event
.ActionEvent
;
48 import java
.util
.ArrayList
;
49 import java
.util
.Iterator
;
50 import java
.util
.LinkedHashMap
;
54 import javax
.swing
.JCheckBox
;
55 import javax
.swing
.JTextField
;
56 import java
.awt
.GridLayout
;
57 import javax
.swing
.JLabel
;
58 import javax
.swing
.JScrollPane
;
59 import javax
.swing
.JTable
;
60 import javax
.swing
.JList
;
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
.TableColumn
;
67 import javax
.swing
.table
.TableModel
;
68 import javax
.swing
.JComboBox
;
69 import java
.awt
.Dimension
;
70 import javax
.swing
.JRadioButton
;
71 import javax
.swing
.JTextArea
;
72 import java
.awt
.CardLayout
;
74 public class FpdFlash
extends IInternalFrame
{
77 private JPanel jContentPane
= null;
78 private JPanel jPanel
= null;
79 private JPanel jPanel1
= null;
80 private JPanel jPanel2
= null;
81 private JPanel jPanel3
= null;
82 private JTabbedPane jTabbedPane
= null;
83 private JPanel jPanelFvImages
= null;
84 private JButton jButtonOk
= null;
85 private JButton jButtonCancel
= null;
86 private JPanel jPanelFvImageN
= null;
87 private JPanel jPanelFvImageW
= null;
88 private JPanel jPanelFvImageS
= null;
89 private JCheckBox jCheckBox1
= null;
90 private JLabel jLabel
= null;
91 private JTextField jTextField
= null;
92 private JLabel jLabel1
= null;
93 private JTextField jTextField1
= null;
94 private JButton jButton
= null;
95 private JScrollPane jScrollPane
= null;
96 private JScrollPane jScrollPane1
= null;
97 private JTable jTable
= null;
98 private JPanel jPanel4
= null;
99 private JButton jButton1
= null;
100 private DefaultTableModel fvPropertyTableModel
= null;
101 private DefaultTableModel fvImageNameTableModel
= null;
102 private ImageParaTableModel fvImageParaTableModel
= null;
103 private JPanel jPanelFvImageC
= null;
104 private JCheckBox jCheckBox2
= null;
105 private JLabel jLabel2
= null;
106 private JComboBox jComboBox
= null;
107 private JLabel jLabel3
= null;
108 private JLabel jLabel4
= null;
109 private JTextField jTextField2
= null;
110 private JButton jButton2
= null;
111 private JScrollPane jScrollPane2
= null;
112 private JTable jTable1
= null;
113 private JButton jButton3
= null;
114 private JPanel jPanel5
= null;
115 private JButton jButton4
= null;
116 private JScrollPane jScrollPane3
= null;
117 private JTable jTable2
= null;
118 private JButton jButton6
= null;
119 private JCheckBox jCheckBox3
= null;
120 private JLabel jLabel5
= null;
121 private JComboBox jComboBox1
= null;
122 private JCheckBox jCheckBox4
= null;
123 private JCheckBox jCheckBox5
= null;
124 private JCheckBox jCheckBox6
= null;
125 private JCheckBox jCheckBox7
= null;
126 private JCheckBox jCheckBox8
= null;
127 private JCheckBox jCheckBox9
= null;
128 private JCheckBox jCheckBox10
= null;
129 private JCheckBox jCheckBox11
= null;
130 private JCheckBox jCheckBox12
= null;
131 private JCheckBox jCheckBox13
= null;
132 private JPanel jPanel6
= null;
133 private DefaultTableModel fdfImageDefTableModel
= null;
134 private DefaultTableModel fdfBlocksTableModel
= null;
135 private DefaultTableModel fdfRegionsTableModel
= null;
136 private DefaultTableModel fdfSubRegionsTableModel
= null;
138 private JLabel jLabel17
= null;
139 private DefaultListModel listModel
= new DefaultListModel();
140 private FpdFileContents ffc
= null;
141 private JPanel jPanel7
= null;
142 private JCheckBox jCheckBox
= null;
143 private JTextField jTextField3
= null;
144 private JButton jButton5
= null;
148 // TODO Auto-generated constructor stub
151 this.setBounds(new java
.awt
.Rectangle(0, 0, 500, 370));
152 this.setVisible(true);
155 public FpdFlash(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
157 ffc
= new FpdFileContents(fpd
);
162 * This method initializes jPanel
164 * @return javax.swing.JPanel
166 private JPanel
getJPanel() {
167 if (jPanel
== null) {
168 jPanel
= new JPanel();
174 * This method initializes jPanel1
176 * @return javax.swing.JPanel
178 private JPanel
getJPanel1() {
179 if (jPanel1
== null) {
180 FlowLayout flowLayout
= new FlowLayout();
181 flowLayout
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
182 flowLayout
.setHgap(15);
183 jPanel1
= new JPanel();
184 jPanel1
.setLayout(flowLayout
);
185 jPanel1
.setComponentOrientation(java
.awt
.ComponentOrientation
.LEFT_TO_RIGHT
);
186 jPanel1
.add(getJButtonCancel(), null);
187 jPanel1
.add(getJButtonOk(), null);
193 * This method initializes jPanel2
195 * @return javax.swing.JPanel
197 private JPanel
getJPanel2() {
198 if (jPanel2
== null) {
199 jPanel2
= new JPanel();
205 * This method initializes jPanel3
207 * @return javax.swing.JPanel
209 private JPanel
getJPanel3() {
210 if (jPanel3
== null) {
211 jPanel3
= new JPanel();
217 * This method initializes jTabbedPane
219 * @return javax.swing.JTabbedPane
221 private JTabbedPane
getJTabbedPane() {
222 if (jTabbedPane
== null) {
223 jTabbedPane
= new JTabbedPane();
224 jTabbedPane
.addTab("FV Images", null, getJPanelFvImages(), null);
225 jTabbedPane
.addTab("Flash Definition File", null, getJPanel7(), null);
232 * This method initializes jPanelFvImages
234 * @return javax.swing.JPanel
236 private JPanel
getJPanelFvImages() {
237 if (jPanelFvImages
== null) {
238 jPanelFvImages
= new JPanel();
239 jPanelFvImages
.setLayout(new BorderLayout());
240 jPanelFvImages
.add(getJPanelFvImageN(), java
.awt
.BorderLayout
.NORTH
);
241 // jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);
242 jPanelFvImages
.add(getJPanelFvImageS(), java
.awt
.BorderLayout
.SOUTH
);
243 jPanelFvImages
.add(getJPanelFvImageC(), java
.awt
.BorderLayout
.CENTER
);
246 return jPanelFvImages
;
250 * This method initializes jButtonOk
252 * @return javax.swing.JButton
254 private JButton
getJButtonOk() {
255 if (jButtonOk
== null) {
256 jButtonOk
= new JButton();
257 jButtonOk
.setPreferredSize(new java
.awt
.Dimension(80,20));
258 jButtonOk
.setText("Cancel");
259 jButtonOk
.setVisible(false);
265 * This method initializes jButtonCancel
267 * @return javax.swing.JButton
269 private JButton
getJButtonCancel() {
270 if (jButtonCancel
== null) {
271 jButtonCancel
= new JButton();
272 jButtonCancel
.setPreferredSize(new java
.awt
.Dimension(80,20));
273 jButtonCancel
.setText("Ok");
274 jButtonCancel
.setVisible(false);
276 return jButtonCancel
;
280 * This method initializes jPanelFvImageN
282 * @return javax.swing.JPanel
284 private JPanel
getJPanelFvImageN() {
285 if (jPanelFvImageN
== null) {
286 jLabel1
= new JLabel();
287 jLabel1
.setText("Value");
288 jLabel1
.setEnabled(false);
289 jLabel1
.setPreferredSize(new java
.awt
.Dimension(38,20));
290 jLabel
= new JLabel();
291 jLabel
.setText("Name");
292 jLabel
.setEnabled(false);
293 jLabel
.setPreferredSize(new java
.awt
.Dimension(38,20));
294 FlowLayout flowLayout2
= new FlowLayout();
295 flowLayout2
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
296 flowLayout2
.setHgap(15);
297 jPanelFvImageN
= new JPanel();
298 jPanelFvImageN
.setPreferredSize(new java
.awt
.Dimension(576,100));
299 jPanelFvImageN
.setBorder(javax
.swing
.BorderFactory
.createBevelBorder(javax
.swing
.border
.BevelBorder
.RAISED
));
300 jPanelFvImageN
.setLayout(flowLayout2
);
301 jPanelFvImageN
.add(getJCheckBox1(), null);
302 jPanelFvImageN
.add(jLabel
, null);
303 jPanelFvImageN
.add(getJTextField(), null);
304 jPanelFvImageN
.add(jLabel1
, null);
305 jPanelFvImageN
.add(getJTextField1(), null);
306 jPanelFvImageN
.add(getJScrollPane1(), null);
307 jPanelFvImageN
.add(getJPanel4(), null);
309 return jPanelFvImageN
;
314 * This method initializes jPanelFvImageW
316 * @return javax.swing.JPanel
318 private JPanel
getJPanelFvImageW() {
319 if (jPanelFvImageW
== null) {
320 jPanelFvImageW
= new JPanel();
321 jPanelFvImageW
.setPreferredSize(new java
.awt
.Dimension(10,2));
323 return jPanelFvImageW
;
328 * This method initializes jPanelFvImageS
330 * @return javax.swing.JPanel
332 private JPanel
getJPanelFvImageS() {
333 if (jPanelFvImageS
== null) {
334 GridLayout gridLayout2
= new GridLayout();
335 gridLayout2
.setRows(1);
336 jPanelFvImageS
= new JPanel();
337 jPanelFvImageS
.setPreferredSize(new java
.awt
.Dimension(480,200));
338 jPanelFvImageS
.setLayout(gridLayout2
);
339 jPanelFvImageS
.add(getJScrollPane3(), null);
341 return jPanelFvImageS
;
346 * This method initializes jCheckBox1
348 * @return javax.swing.JCheckBox
350 private JCheckBox
getJCheckBox1() {
351 if (jCheckBox1
== null) {
352 jCheckBox1
= new JCheckBox();
353 jCheckBox1
.setText("FV Properties");
354 jCheckBox1
.addItemListener(new ItemListener(){
356 public void itemStateChanged(ItemEvent arg0
) {
357 // TODO Auto-generated method stub
358 boolean seleted
= jCheckBox1
.isSelected();
360 jLabel
.setEnabled(seleted
);
361 jTextField
.setEnabled(seleted
);
362 jLabel1
.setEnabled(seleted
);
363 jTextField1
.setEnabled(seleted
);
364 jTable
.setEnabled(seleted
);
365 jButton
.setEnabled(seleted
);
366 jButton1
.setEnabled(seleted
);
378 * This method initializes jTextField
380 * @return javax.swing.JTextField
382 private JTextField
getJTextField() {
383 if (jTextField
== null) {
384 jTextField
= new JTextField();
385 jTextField
.setPreferredSize(new java
.awt
.Dimension(100,20));
386 jTextField
.setEnabled(false);
393 * This method initializes jTextField1
395 * @return javax.swing.JTextField
397 private JTextField
getJTextField1() {
398 if (jTextField1
== null) {
399 jTextField1
= new JTextField();
400 jTextField1
.setPreferredSize(new java
.awt
.Dimension(100,20));
401 jTextField1
.setEnabled(false);
408 * This method initializes jButton
410 * @return javax.swing.JButton
412 private JButton
getJButton() {
413 if (jButton
== null) {
414 jButton
= new JButton();
415 jButton
.setPreferredSize(new java
.awt
.Dimension(80,20));
416 jButton
.setEnabled(false);
417 jButton
.setText("Add");
418 jButton
.addActionListener(new AbstractAction() {
419 public void actionPerformed(ActionEvent e
) {
420 if (jTextField
.getText().length() > 0 && jTextField1
.getText().length() > 0){
421 String
[] row
= {jTextField
.getText(), jTextField1
.getText()};
422 fvPropertyTableModel
.addRow(row
);
423 ffc
.genFvImagesNameValue(row
[0], row
[1]);
433 * This method initializes jScrollPane1
435 * @return javax.swing.JScrollPane
437 private JScrollPane
getJScrollPane1() {
438 if (jScrollPane1
== null) {
439 jScrollPane1
= new JScrollPane();
440 jScrollPane1
.setPreferredSize(new java
.awt
.Dimension(350,55));
441 jScrollPane1
.setViewportView(getJTable());
448 * This method initializes jTable
450 * @return javax.swing.JTable
452 private JTable
getJTable() {
453 if (jTable
== null) {
454 fvPropertyTableModel
= new DefaultTableModel();
455 jTable
= new JTable(fvPropertyTableModel
);
456 fvPropertyTableModel
.addColumn("Name");
457 fvPropertyTableModel
.addColumn("Value");
458 jTable
.setRowHeight(20);
459 jTable
.setEnabled(false);
461 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
462 jTable
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
463 public void valueChanged(ListSelectionEvent e
) {
464 if (e
.getValueIsAdjusting()){
467 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
468 if (lsm
.isSelectionEmpty()) {
472 // selectedRow = lsm.getMinSelectionIndex();
477 jTable
.getModel().addTableModelListener(new TableModelListener(){
478 public void tableChanged(TableModelEvent arg0
) {
479 // TODO Auto-generated method stub
480 int row
= arg0
.getFirstRow();
481 TableModel m
= (TableModel
)arg0
.getSource();
482 if (arg0
.getType() == TableModelEvent
.UPDATE
){
484 String name
= m
.getValueAt(row
, 0) + "";
485 String value
= m
.getValueAt(row
, 1) + "";
487 ffc
.updateFvImagesNameValue(row
, name
, value
);
497 * This method initializes jPanel4
499 * @return javax.swing.JPanel
501 private JPanel
getJPanel4() {
502 if (jPanel4
== null) {
503 jPanel4
= new JPanel();
504 jPanel4
.setPreferredSize(new java
.awt
.Dimension(80,55));
506 jPanel4
.add(getJButton(), null);
507 jPanel4
.add(getJButton1(), null);
514 * This method initializes jButton1
516 * @return javax.swing.JButton
518 private JButton
getJButton1() {
519 if (jButton1
== null) {
520 jButton1
= new JButton();
521 jButton1
.setPreferredSize(new java
.awt
.Dimension(80,20));
522 jButton1
.setEnabled(false);
523 jButton1
.setText("Delete");
524 jButton1
.addActionListener(new AbstractAction() {
525 public void actionPerformed(ActionEvent e
) {
526 if (jTable
.getSelectedRow() >= 0){
527 fvPropertyTableModel
.removeRow(jTable
.getSelectedRow());
528 ffc
.removeFvImagesNameValue(jTable
.getSelectedRow());
538 * This method initializes jPanelFvImageC
540 * @return javax.swing.JPanel
542 private JPanel
getJPanelFvImageC() {
543 if (jPanelFvImageC
== null) {
544 jLabel4
= new JLabel();
545 jLabel4
.setPreferredSize(new Dimension(38, 20));
546 jLabel4
.setEnabled(false);
547 jLabel4
.setText("Name");
548 jLabel3
= new JLabel();
549 jLabel3
.setText("FV Image Names");
550 jLabel3
.setEnabled(false);
551 jLabel3
.setPreferredSize(new java
.awt
.Dimension(150,20));
552 jLabel2
= new JLabel();
553 jLabel2
.setText("Type");
554 jLabel2
.setEnabled(false);
555 jLabel2
.setPreferredSize(new java
.awt
.Dimension(70,20));
556 FlowLayout flowLayout3
= new FlowLayout();
557 flowLayout3
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
558 flowLayout3
.setHgap(5);
559 jPanelFvImageC
= new JPanel();
560 jPanelFvImageC
.setLayout(flowLayout3
);
561 jPanelFvImageC
.add(getJPanel6(), null);
563 jPanelFvImageC
.add(getJPanel5(), null);
566 return jPanelFvImageC
;
571 * This method initializes jCheckBox2
573 * @return javax.swing.JCheckBox
575 private JCheckBox
getJCheckBox2() {
576 if (jCheckBox2
== null) {
577 jCheckBox2
= new JCheckBox();
578 jCheckBox2
.setText("FV Image Parameters");
579 jCheckBox2
.setPreferredSize(new java
.awt
.Dimension(200,20));
580 jCheckBox2
.addItemListener(new ItemListener(){
582 public void itemStateChanged(ItemEvent arg0
) {
583 // TODO Auto-generated method stub
584 boolean seleted
= jCheckBox2
.isSelected();
586 jLabel2
.setEnabled(seleted
);
587 jLabel3
.setEnabled(seleted
);
588 jLabel4
.setEnabled(seleted
);
589 jComboBox
.setEnabled(seleted
);
590 jTextField2
.setEnabled(seleted
);
592 jTable1
.setEnabled(seleted
);
593 jButton2
.setEnabled(seleted
);
594 jButton3
.setEnabled(seleted
);
606 * This method initializes jComboBox
608 * @return javax.swing.JComboBox
610 private JComboBox
getJComboBox() {
611 if (jComboBox
== null) {
612 jComboBox
= new JComboBox();
613 jComboBox
.addItem("ImageName");
614 jComboBox
.addItem("Attributes");
615 jComboBox
.addItem("Options");
616 jComboBox
.addItem("Components");
617 jComboBox
.setPreferredSize(new java
.awt
.Dimension(180,20));
618 jComboBox
.setEnabled(false);
619 jComboBox
.addItemListener(new ItemListener() {
621 public void itemStateChanged(ItemEvent arg0
) {
622 // TODO disable attribute settings when ValidImageNames selected.
633 * This method initializes jTextField2
635 * @return javax.swing.JTextField
637 private JTextField
getJTextField2() {
638 if (jTextField2
== null) {
639 jTextField2
= new JTextField();
640 jTextField2
.setPreferredSize(new java
.awt
.Dimension(140,20));
641 jTextField2
.setEnabled(false);
648 * This method initializes jButton2
650 * @return javax.swing.JButton
652 private JButton
getJButton2() {
653 if (jButton2
== null) {
654 jButton2
= new JButton();
655 jButton2
.setPreferredSize(new Dimension(80, 20));
656 jButton2
.setEnabled(false);
657 jButton2
.setText("Add");
658 jButton2
.addActionListener(new AbstractAction() {
659 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
660 if (jTextField2
.getText().length() > 0){
661 String
[] row
= {jTextField2
.getText()};
662 fvImageNameTableModel
.addRow(row
);
672 * This method initializes jScrollPane2
674 * @return javax.swing.JScrollPane
676 private JScrollPane
getJScrollPane2() {
677 if (jScrollPane2
== null) {
678 jScrollPane2
= new JScrollPane();
679 jScrollPane2
.setPreferredSize(new java
.awt
.Dimension(350,50));
680 jScrollPane2
.setViewportView(getJTable1());
687 * This method initializes jTable1
689 * @return javax.swing.JTable
691 private JTable
getJTable1() {
692 if (jTable1
== null) {
693 fvImageNameTableModel
= new DefaultTableModel();
694 jTable1
= new JTable(fvImageNameTableModel
);
695 jTable1
.setEnabled(false);
696 fvImageNameTableModel
.addColumn("FV Image Name");
703 * This method initializes jButton3
705 * @return javax.swing.JButton
707 private JButton
getJButton3() {
708 if (jButton3
== null) {
709 jButton3
= new JButton();
710 jButton3
.setPreferredSize(new Dimension(80, 20));
711 jButton3
.setEnabled(false);
712 jButton3
.setText("Delete");
713 jButton3
.addActionListener(new AbstractAction() {
714 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
715 if (jTable1
.getSelectedRow() >= 0){
717 fvImageNameTableModel
.removeRow(jTable1
.getSelectedRow());
728 private JPanel
getJPanel5() {
731 if (jPanel5
== null) {
732 //ToDo add ButtonGroup for RadioButtons
733 jPanel5
= new JPanel();
734 jPanel5
.setPreferredSize(new java
.awt
.Dimension(480,120));
736 GridLayout gridLayout
= new GridLayout();
737 gridLayout
.setRows(5);
738 gridLayout
.setColumns(3);
739 jPanel5
.setLayout(gridLayout
);
740 jPanel5
.add(getJCheckBox3(), null);
742 jLabel5
= new JLabel();
743 jLabel5
.setText("EFI_ERASE_POLARITY");
744 jLabel5
.setEnabled(false);
745 jPanel5
.add(jLabel5
, null);
746 jPanel5
.add(getJComboBox1(), null);
747 jPanel5
.add(getJCheckBox4(), null);
748 jPanel5
.add(getJCheckBox5(), null);
749 jPanel5
.add(getJCheckBox6(), null);
750 jPanel5
.add(getJCheckBox7(), null);
751 jPanel5
.add(getJCheckBox8(), null);
752 jPanel5
.add(getJCheckBox9(), null);
753 jPanel5
.add(getJCheckBox10(), null);
754 jPanel5
.add(getJCheckBox11(), null);
755 jPanel5
.add(getJCheckBox12(), null);
756 jPanel5
.add(getJCheckBox13(), null);
757 jPanel5
.add(getJButton4(), null);
758 jPanel5
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
759 jPanel5
.add(getJButton6(), null);
771 * This method initializes jButton4
773 * @return javax.swing.JButton
775 private JButton
getJButton4() {
776 if (jButton4
== null) {
777 jButton4
= new JButton();
778 jButton4
.setPreferredSize(new java
.awt
.Dimension(80,20));
779 // jButton4.setEnabled(false);
780 jButton4
.setText("Add FV Image");
781 jButton4
.addActionListener(new AbstractAction() {
782 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
783 if (jTable1
.getRowCount()== 0){
786 String imageName
= " ";
787 for (int i
= 0; i
< jTable1
.getRowCount(); ++i
){
788 imageName
+= (String
)jTable1
.getValueAt(i
, 0);
791 imageName
= imageName
.trim();
793 if (!jCheckBox3
.isSelected() && jComboBox
.getSelectedIndex() != 0){
798 LinkedHashMap
<String
, String
> m
= new LinkedHashMap
<String
, String
>();
799 boolean[] boolArray
= {jComboBox1
.getSelectedIndex()==0 ?
true: false, jCheckBox6
.isSelected(), jCheckBox9
.isSelected(),
800 jCheckBox11
.isSelected(), jCheckBox12
.isSelected(),
801 jCheckBox13
.isSelected(),jCheckBox4
.isSelected(),
802 jCheckBox5
.isSelected(), jCheckBox7
.isSelected(),
803 jCheckBox8
.isSelected(),jCheckBox10
.isSelected()};
804 booleanToNameValue(boolArray
, m
);
805 ffc
.genFvImagesFvImage(imageName
.split(" "), jComboBox
.getSelectedItem()+"", m
);
807 Object
[] o
= {imageName
, jComboBox
.getSelectedItem(), jComboBox1
.getSelectedIndex()==0 ?
true: false,
808 jCheckBox6
.isSelected(), jCheckBox9
.isSelected(),
809 jCheckBox11
.isSelected(), jCheckBox12
.isSelected(),
810 jCheckBox13
.isSelected(),jCheckBox4
.isSelected(),
811 jCheckBox5
.isSelected(), jCheckBox7
.isSelected(),
812 jCheckBox8
.isSelected(),jCheckBox10
.isSelected()};
813 fvImageParaTableModel
.addRow(o
);
822 * This method initializes jScrollPane3
824 * @return javax.swing.JScrollPane
826 private JScrollPane
getJScrollPane3() {
827 if (jScrollPane3
== null) {
828 jScrollPane3
= new JScrollPane();
829 jScrollPane3
.setPreferredSize(new java
.awt
.Dimension(480,150));
830 jScrollPane3
.setViewportView(getJTable2());
837 * This method initializes jTable2
839 * @return javax.swing.JTable
841 private JTable
getJTable2() {
842 if (jTable2
== null) {
843 fvImageParaTableModel
= new ImageParaTableModel();
844 jTable2
= new JTable(fvImageParaTableModel
);
845 jTable2
.setAutoResizeMode(javax
.swing
.JTable
.AUTO_RESIZE_OFF
);
846 fvImageParaTableModel
.addColumn("FvImageNames");
847 fvImageParaTableModel
.addColumn("Type");
848 fvImageParaTableModel
.addColumn("ErasePolarity");
849 fvImageParaTableModel
.addColumn("ReadStatus");
850 fvImageParaTableModel
.addColumn("WriteStatus");
851 fvImageParaTableModel
.addColumn("LockStatus");
852 fvImageParaTableModel
.addColumn("MemoryMapped");
853 fvImageParaTableModel
.addColumn("StickyWrite");
854 fvImageParaTableModel
.addColumn("ReadDisableCap");
855 fvImageParaTableModel
.addColumn("ReadEnableCap");
856 fvImageParaTableModel
.addColumn("WriteDisableCap");
857 fvImageParaTableModel
.addColumn("WriteEnableCap");
858 fvImageParaTableModel
.addColumn("LockCap");
860 TableColumn typeCol
= jTable2
.getColumnModel().getColumn(1);
861 JComboBox cb
= new JComboBox();
862 cb
.addItem("ValidImageNames");
863 cb
.addItem("Attributes");
864 cb
.addItem("Options");
865 cb
.addItem("Components");
866 typeCol
.setCellEditor(new DefaultCellEditor(cb
));
868 // TableColumn epCol = jTable2.getColumnModel().getColumn(2);
869 // JComboBox cb1 = new JComboBox();
872 // epCol.setCellEditor(new DefaultCellEditor(cb1));
873 jTable2
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
874 jTable2
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
875 public void valueChanged(ListSelectionEvent e
) {
876 if (e
.getValueIsAdjusting()){
879 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
880 if (lsm
.isSelectionEmpty()) {
884 // selectedRow = lsm.getMinSelectionIndex();
889 jTable2
.getModel().addTableModelListener(new TableModelListener(){
890 public void tableChanged(TableModelEvent arg0
) {
891 // TODO Auto-generated method stub
892 int row
= arg0
.getFirstRow();
893 TableModel m
= (TableModel
)arg0
.getSource();
894 if (arg0
.getType() == TableModelEvent
.UPDATE
){
895 //ToDo Check data validity before update
896 String name
= m
.getValueAt(row
, 0) + "";
897 String type
= m
.getValueAt(row
, 1) + "";
898 boolean[] boolArray
= new boolean[11];
899 for (int i
= 2; i
< 13; ++i
) {
900 boolArray
[i
-2] = (Boolean
)m
.getValueAt(row
, i
);
902 LinkedHashMap
<String
, String
> lhm
= new LinkedHashMap
<String
, String
>();
903 booleanToNameValue(boolArray
, lhm
);
905 ffc
.updateFvImagesFvImage(row
, name
.split(" "), type
, lhm
);
915 * This method initializes jButton6
917 * @return javax.swing.JButton
919 private JButton
getJButton6() {
920 if (jButton6
== null) {
921 jButton6
= new JButton();
922 jButton6
.setPreferredSize(new java
.awt
.Dimension(150,20));
923 // jButton6.setEnabled(false);
924 jButton6
.setText("Delete Row");
925 jButton6
.addActionListener(new AbstractAction() {
927 public void actionPerformed(ActionEvent arg0
) {
928 // TODO Auto-generated method stub
929 if (jTable2
.getSelectedRow() >= 0 ) {
930 fvImageParaTableModel
.removeRow(jTable2
.getSelectedRow());
931 ffc
.removeFvImagesFvImage(jTable2
.getSelectedRow());
942 * This method initializes jCheckBox3
944 * @return javax.swing.JCheckBox
946 private JCheckBox
getJCheckBox3() {
947 if (jCheckBox3
== null) {
948 jCheckBox3
= new JCheckBox();
949 jCheckBox3
.setText("FV Image Options");
950 jCheckBox3
.addItemListener(new ItemListener(){
952 public void itemStateChanged(ItemEvent arg0
) {
953 // TODO Auto-generated method stub
954 boolean seleted
= jCheckBox3
.isSelected();
956 if (!jCheckBox2
.isSelected() || jComboBox
.getSelectedIndex() == 0) {
960 jLabel5
.setEnabled(seleted
);
961 jComboBox1
.setEnabled(seleted
);
963 jCheckBox4
.setEnabled(seleted
);
964 jCheckBox5
.setEnabled(seleted
);
965 jCheckBox6
.setEnabled(seleted
);
966 jCheckBox7
.setEnabled(seleted
);
967 jCheckBox8
.setEnabled(seleted
);
968 jCheckBox9
.setEnabled(seleted
);
969 jCheckBox10
.setEnabled(seleted
);
970 jCheckBox11
.setEnabled(seleted
);
971 jCheckBox12
.setEnabled(seleted
);
972 jCheckBox13
.setEnabled(seleted
);
973 // jButton4.setEnabled(seleted);
974 // jButton6.setEnabled(seleted);
984 * This method initializes jComboBox1
986 * @return javax.swing.JComboBox
988 private JComboBox
getJComboBox1() {
989 if (jComboBox1
== null) {
990 jComboBox1
= new JComboBox();
991 jComboBox1
.setPreferredSize(new java
.awt
.Dimension(20,20));
992 jComboBox1
.setEnabled(false);
993 jComboBox1
.addItem("1");
994 jComboBox1
.addItem("0");
995 jComboBox1
.setSelectedIndex(0);
1002 * This method initializes jCheckBox4
1004 * @return javax.swing.JCheckBox
1006 private JCheckBox
getJCheckBox4() {
1007 if (jCheckBox4
== null) {
1008 jCheckBox4
= new JCheckBox();
1009 jCheckBox4
.setText("Read Disable CAP");
1010 jCheckBox4
.setEnabled(false);
1017 * This method initializes jCheckBox5
1019 * @return javax.swing.JCheckBox
1021 private JCheckBox
getJCheckBox5() {
1022 if (jCheckBox5
== null) {
1023 jCheckBox5
= new JCheckBox();
1024 jCheckBox5
.setText("Read Enable CAP");
1025 jCheckBox5
.setEnabled(false);
1032 * This method initializes jCheckBox6
1034 * @return javax.swing.JCheckBox
1036 private JCheckBox
getJCheckBox6() {
1037 if (jCheckBox6
== null) {
1038 jCheckBox6
= new JCheckBox();
1039 jCheckBox6
.setText("Read Status");
1040 jCheckBox6
.setEnabled(false);
1047 * This method initializes jCheckBox7
1049 * @return javax.swing.JCheckBox
1051 private JCheckBox
getJCheckBox7() {
1052 if (jCheckBox7
== null) {
1053 jCheckBox7
= new JCheckBox();
1054 jCheckBox7
.setText("Write Disable CAP");
1055 jCheckBox7
.setEnabled(false);
1062 * This method initializes jCheckBox8
1064 * @return javax.swing.JCheckBox
1066 private JCheckBox
getJCheckBox8() {
1067 if (jCheckBox8
== null) {
1068 jCheckBox8
= new JCheckBox();
1069 jCheckBox8
.setText("Write Enable CAP");
1070 jCheckBox8
.setEnabled(false);
1077 * This method initializes jCheckBox9
1079 * @return javax.swing.JCheckBox
1081 private JCheckBox
getJCheckBox9() {
1082 if (jCheckBox9
== null) {
1083 jCheckBox9
= new JCheckBox();
1084 jCheckBox9
.setText("Write Status");
1085 jCheckBox9
.setEnabled(false);
1092 * This method initializes jCheckBox10
1094 * @return javax.swing.JCheckBox
1096 private JCheckBox
getJCheckBox10() {
1097 if (jCheckBox10
== null) {
1098 jCheckBox10
= new JCheckBox();
1099 jCheckBox10
.setText("Lock CAP");
1100 jCheckBox10
.setEnabled(false);
1107 * This method initializes jCheckBox11
1109 * @return javax.swing.JCheckBox
1111 private JCheckBox
getJCheckBox11() {
1112 if (jCheckBox11
== null) {
1113 jCheckBox11
= new JCheckBox();
1114 jCheckBox11
.setText("Lock Status");
1115 jCheckBox11
.setEnabled(false);
1122 * This method initializes jCheckBox12
1124 * @return javax.swing.JCheckBox
1126 private JCheckBox
getJCheckBox12() {
1127 if (jCheckBox12
== null) {
1128 jCheckBox12
= new JCheckBox();
1129 jCheckBox12
.setText("Memory Mapped");
1130 jCheckBox12
.setEnabled(false);
1137 * This method initializes jCheckBox13
1139 * @return javax.swing.JCheckBox
1141 private JCheckBox
getJCheckBox13() {
1142 if (jCheckBox13
== null) {
1143 jCheckBox13
= new JCheckBox();
1144 jCheckBox13
.setText("Sticky Write");
1145 jCheckBox13
.setEnabled(false);
1152 * This method initializes jPanel6
1154 * @return javax.swing.JPanel
1156 private JPanel
getJPanel6() {
1157 if (jPanel6
== null) {
1158 StarLabel starLabel
= new StarLabel();
1159 starLabel
.setVisible(false);
1160 jPanel6
= new JPanel();
1161 jPanel6
.setPreferredSize(new java
.awt
.Dimension(480,120));
1162 jPanel6
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
1163 jPanel6
.add(getJCheckBox2(), null);
1164 jPanel6
.add(jLabel2
, null);
1165 jPanel6
.add(getJComboBox(), null);
1166 jPanel6
.add(new StarLabel(), null);
1167 jPanel6
.add(jLabel3
, null);
1168 jPanel6
.add(jLabel4
, null);
1169 jPanel6
.add(getJTextField2(), null);
1170 jPanel6
.add(getJButton2(), null);
1171 jPanel6
.add(getJScrollPane2(), null);
1172 jPanel6
.add(getJButton3(), null);
1178 * This method initializes jPanel7
1180 * @return javax.swing.JPanel
1182 private JPanel
getJPanel7() {
1183 if (jPanel7
== null) {
1184 FlowLayout flowLayout1
= new FlowLayout();
1185 flowLayout1
.setAlignment(FlowLayout
.LEFT
);
1186 jPanel7
= new JPanel();
1187 jPanel7
.setLayout(flowLayout1
);
1188 jPanel7
.add(getJCheckBox(), null);
1189 jPanel7
.add(getJTextField3(), null);
1190 jPanel7
.add(getJButton5(), null);
1191 jPanel7
.addComponentListener(new ComponentAdapter(){
1192 public void componentShown(ComponentEvent e
) {
1193 if (ffc
.getFlashDefinitionFile() != null) {
1194 jTextField3
.setText(ffc
.getFlashDefinitionFile());
1197 public void componentHidden(ComponentEvent e
) {
1198 if (jCheckBox
.isSelected()) {
1199 ffc
.genFlashDefinitionFile(jTextField3
.getText());
1208 * This method initializes jCheckBox
1210 * @return javax.swing.JCheckBox
1212 private JCheckBox
getJCheckBox() {
1213 if (jCheckBox
== null) {
1214 jCheckBox
= new JCheckBox();
1215 jCheckBox
.setText("Flash Definition File");
1216 jCheckBox
.addItemListener(new ItemListener() {
1218 public void itemStateChanged(ItemEvent arg0
) {
1219 // TODO Auto-generated method stub
1220 if (jCheckBox
.isSelected()){
1221 jTextField3
.setEnabled(true);
1222 jButton5
.setEnabled(true);
1226 jTextField3
.setEnabled(false);
1227 jButton5
.setEnabled(false);
1236 * This method initializes jTextField3
1238 * @return javax.swing.JTextField
1240 private JTextField
getJTextField3() {
1241 if (jTextField3
== null) {
1242 jTextField3
= new JTextField();
1243 jTextField3
.setEnabled(false);
1244 jTextField3
.setPreferredSize(new Dimension(300, 20));
1250 * This method initializes jButton5
1252 * @return javax.swing.JButton
1254 private JButton
getJButton5() {
1255 if (jButton5
== null) {
1256 jButton5
= new JButton();
1257 jButton5
.setEnabled(false);
1258 jButton5
.setText("Browse");
1259 jButton5
.setPreferredSize(new Dimension(78, 20));
1260 jButton5
.addActionListener(new AbstractAction(){
1261 public void actionPerformed(ActionEvent e
) {
1262 // TODO Auto-generated method stub
1263 JFileChooser chooser
= new JFileChooser();
1264 chooser
.setMultiSelectionEnabled(false);
1265 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1266 int retval
= chooser
.showOpenDialog(frame
);
1267 if (retval
== JFileChooser
.APPROVE_OPTION
) {
1269 File theFile
= chooser
.getSelectedFile();
1270 jTextField3
.setText(theFile
.getPath());
1282 public static void main(String
[] args
) {
1283 // TODO Auto-generated method stub
1284 new FpdFlash().setVisible(true);
1288 * This method initializes this
1292 private void initialize() {
1293 this.setSize(518, 650);
1294 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
1295 this.setContentPane(getJContentPane());
1296 this.setTitle("FPD Flash Definitions");
1299 private void init(FpdFileContents ffc
) {
1300 if (ffc
.getFvImagesFvImageCount() == 0) {
1303 String
[][] saa
= new String
[ffc
.getFvImagesFvImageCount()][2];
1304 ArrayList
<LinkedHashMap
<String
, String
>> options
= new ArrayList
<LinkedHashMap
<String
, String
>>(ffc
.getFvImagesFvImageCount());
1306 for (int j
= 0; j
< ffc
.getFvImagesFvImageCount(); ++j
){
1307 options
.add(new LinkedHashMap
<String
, String
>());
1309 ffc
.getFvImagesFvImages(saa
, options
);
1311 Object
[] rowData
= new Object
[13];
1313 Boolean f
= new Boolean("false");
1314 while (i
< saa
.length
) {
1315 rowData
[0] = saa
[i
][0];
1316 rowData
[1] = saa
[i
][1];
1319 //ToDo: add alignment settings
1320 Boolean
[] boolArray
= new Boolean
[11];
1326 namevalueToBoolean(options
.get(i
), boolArray
);
1327 for (k
= 2; k
< 13; ++k
) {
1328 rowData
[k
] = boolArray
[k
-2];
1330 fvImageParaTableModel
.addRow(rowData
);
1335 private void namevalueToBoolean(Map
<String
, String
> m
, Boolean
[] boolArray
){
1336 Set
<String
> key
= m
.keySet();
1337 Iterator
<String
> ki
= key
.iterator();
1338 Boolean t
= new Boolean("true");
1339 while(ki
.hasNext()) {
1340 String k
= ki
.next();
1341 if (k
.equals("EFI_ERASE_POLARITY") && m
.get(k
).equals("1")) {
1344 if (k
.equals("EFI_READ_STATUS") && m
.get(k
).equals("TRUE")) {
1347 if (k
.equals("EFI_WRITE_STATUS") && m
.get(k
).equals("TRUE")) {
1350 if (k
.equals("EFI_LOCK_STATUS") && m
.get(k
).equals("TRUE")) {
1353 if (k
.equals("EFI_MEMORY_MAPPED") && m
.get(k
).equals("TRUE")) {
1356 if (k
.equals("EFI_STICKY_WRITE") && m
.get(k
).equals("TRUE")) {
1359 if (k
.equals("EFI_READ_DISABLED_CAP") && m
.get(k
).equals("TRUE")) {
1362 if (k
.equals("EFI_READ_ENABLED_CAP") && m
.get(k
).equals("TRUE")) {
1365 if (k
.equals("EFI_WRITE_DISABLED_CAP") && m
.get(k
).equals("TRUE")) {
1368 if (k
.equals("EFI_WRITE_ENABLED_CAP") && m
.get(k
).equals("TRUE")) {
1371 if (k
.equals("EFI_LOCK_CAP") && m
.get(k
).equals("TRUE")) {
1377 private void booleanToNameValue(boolean[] boolArray
, Map
<String
, String
> m
){
1379 m
.put("EFI_ERASE_POLARITY", "1");
1382 m
.put("EFI_ERASE_POLARITY", "0");
1385 m
.put("EFI_READ_STATUS", "TRUE");
1388 m
.put("EFI_READ_STATUS", "FALSE");
1391 m
.put("EFI_WRITE_STATUS", "TRUE");
1394 m
.put("EFI_WRITE_STATUS", "FALSE");
1397 m
.put("EFI_LOCK_STATUS", "TRUE");
1400 m
.put("EFI_LOCK_STATUS", "FALSE");
1403 m
.put("EFI_MEMORY_MAPPED", "TRUE");
1406 m
.put("EFI_MEMORY_MAPPED", "FALSE");
1409 m
.put("EFI_STICKY_WRITE", "TRUE");
1412 m
.put("EFI_STICKY_WRITE", "FALSE");
1415 m
.put("EFI_READ_DISABLED_CAP", "TRUE");
1418 m
.put("EFI_READ_DISABLED_CAP", "FALSE");
1421 m
.put("EFI_READ_ENABLED_CAP", "TRUE");
1424 m
.put("EFI_READ_ENABLED_CAP", "FALSE");
1427 m
.put("EFI_WRITE_DISABLED_CAP", "TRUE");
1430 m
.put("EFI_WRITE_DISABLED_CAP", "FALSE");
1433 m
.put("EFI_WRITE_ENABLED_CAP", "TRUE");
1436 m
.put("EFI_WRITE_ENABLED_CAP", "FALSE");
1438 if (boolArray
[10]) {
1439 m
.put("EFI_LOCK_CAP", "TRUE");
1442 m
.put("EFI_LOCK_CAP", "FALSE");
1446 * This method initializes jContentPane
1448 * @return javax.swing.JPanel
1450 private JPanel
getJContentPane() {
1451 if (jContentPane
== null) {
1452 jContentPane
= new JPanel();
1453 jContentPane
.setLayout(new BorderLayout());
1454 jContentPane
.add(getJPanel(), java
.awt
.BorderLayout
.EAST
);
1455 jContentPane
.add(getJPanel1(), java
.awt
.BorderLayout
.SOUTH
);
1456 jContentPane
.add(getJPanel2(), java
.awt
.BorderLayout
.WEST
);
1457 jContentPane
.add(getJPanel3(), java
.awt
.BorderLayout
.NORTH
);
1458 jContentPane
.add(getJTabbedPane(), java
.awt
.BorderLayout
.CENTER
);
1460 return jContentPane
;
1463 } // @jve:decl-index=0:visual-constraint="10,10"
1465 class ImageParaTableModel
extends DefaultTableModel
{
1467 public Class
getColumnClass (int c
) {
1468 return getValueAt(0, c
).getClass();