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
.DefaultCellEditor
;
20 import javax
.swing
.JFileChooser
;
21 import javax
.swing
.JFrame
;
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
.ui
.IInternalFrame
;
28 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
31 import java
.awt
.FlowLayout
;
32 import java
.awt
.event
.ActionEvent
;
33 import java
.awt
.event
.ComponentAdapter
;
34 import java
.awt
.event
.ComponentEvent
;
35 import java
.awt
.event
.ItemEvent
;
36 import java
.awt
.event
.ItemListener
;
38 import java
.util
.Iterator
;
39 import java
.util
.LinkedHashMap
;
43 import javax
.swing
.JCheckBox
;
44 import javax
.swing
.JTextField
;
45 import java
.awt
.GridLayout
;
46 import javax
.swing
.JLabel
;
47 import javax
.swing
.JScrollPane
;
48 import javax
.swing
.JTable
;
49 import javax
.swing
.event
.InternalFrameAdapter
;
50 import javax
.swing
.event
.InternalFrameEvent
;
51 import javax
.swing
.event
.ListSelectionEvent
;
52 import javax
.swing
.event
.ListSelectionListener
;
53 import javax
.swing
.event
.TableModelEvent
;
54 import javax
.swing
.event
.TableModelListener
;
55 import javax
.swing
.table
.DefaultTableModel
;
56 import javax
.swing
.table
.TableColumn
;
57 import javax
.swing
.table
.TableModel
;
58 import javax
.swing
.JComboBox
;
59 import java
.awt
.Dimension
;
61 public class FpdFlash
extends IInternalFrame
{
66 private static final long serialVersionUID
= 1L;
68 private JPanel jContentPane
= null;
69 private JPanel jPanel
= null;
70 private JPanel jPanel1
= null;
71 private JPanel jPanel2
= null;
72 private JPanel jPanel3
= null;
73 private JTabbedPane jTabbedPane
= null;
74 private JPanel jPanelFvImages
= null;
75 private JButton jButtonOk
= null;
76 private JButton jButtonCancel
= null;
77 private JPanel jPanelFvImageN
= null;
78 private JPanel jPanelFvImageS
= null;
79 private JCheckBox jCheckBox1
= null;
80 private JLabel jLabel
= null;
81 private JTextField jTextField
= null;
82 private JLabel jLabel1
= null;
83 private JTextField jTextField1
= null;
84 private JButton jButton
= null;
85 private JScrollPane jScrollPane1
= null;
86 private JTable jTable
= null;
87 private JPanel jPanel4
= null;
88 private JButton jButton1
= null;
89 private DefaultTableModel fvPropertyTableModel
= null;
90 private DefaultTableModel fvImageNameTableModel
= null;
91 private ImageParaTableModel fvImageParaTableModel
= null;
92 private DefaultTableModel fvOptionTableModel
= null;
93 private JPanel jPanelFvImageC
= null;
94 private JCheckBox jCheckBox2
= null;
95 private JLabel jLabel2
= null;
96 private JComboBox jComboBox
= null;
97 private JLabel jLabel3
= null;
98 private JLabel jLabel4
= null;
99 private JTextField jTextField2
= null;
100 private JButton jButton2
= null;
101 private JScrollPane jScrollPane2
= null;
102 private JTable jTable1
= null;
103 private JButton jButton3
= null;
104 private JPanel jPanel5
= null;
105 private JButton jButton4
= null;
106 private JScrollPane jScrollPane3
= null;
107 private JTable jTable2
= null;
108 private JButton jButton6
= null;
109 private JCheckBox jCheckBox3
= null;
110 private JPanel jPanel6
= null;
112 private FpdFileContents ffc
= null;
113 private JPanel jPanel7
= null;
114 private JCheckBox jCheckBox
= null;
115 private JTextField jTextField3
= null;
116 private JButton jButton5
= null;
117 private JLabel jLabel5
= null;
118 private JTextField jTextField4
= null;
119 private JLabel jLabel6
= null;
120 private JTextField jTextField5
= null;
121 private JPanel jPanel8
= null;
122 private JButton jButton7
= null;
123 private JButton jButton8
= null;
124 private JScrollPane jScrollPane
= null;
125 private JTable jTable3
= null;
126 private JButton jButton9
= null;
129 // TODO Auto-generated constructor stub
132 this.setBounds(new java
.awt
.Rectangle(0, 0, 500, 370));
133 this.setVisible(true);
136 public FpdFlash(PlatformSurfaceAreaDocument
.PlatformSurfaceArea fpd
){
138 ffc
= new FpdFileContents(fpd
);
143 * This method initializes jPanel
145 * @return javax.swing.JPanel
147 private JPanel
getJPanel() {
148 if (jPanel
== null) {
149 jPanel
= new JPanel();
155 * This method initializes jPanel1
157 * @return javax.swing.JPanel
159 private JPanel
getJPanel1() {
160 if (jPanel1
== null) {
161 FlowLayout flowLayout
= new FlowLayout();
162 flowLayout
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
163 flowLayout
.setHgap(15);
164 jPanel1
= new JPanel();
165 jPanel1
.setLayout(flowLayout
);
166 jPanel1
.setComponentOrientation(java
.awt
.ComponentOrientation
.LEFT_TO_RIGHT
);
167 jPanel1
.add(getJButtonCancel(), null);
168 jPanel1
.add(getJButtonOk(), null);
174 * This method initializes jPanel2
176 * @return javax.swing.JPanel
178 private JPanel
getJPanel2() {
179 if (jPanel2
== null) {
180 jPanel2
= new JPanel();
186 * This method initializes jPanel3
188 * @return javax.swing.JPanel
190 private JPanel
getJPanel3() {
191 if (jPanel3
== null) {
192 jPanel3
= new JPanel();
198 * This method initializes jTabbedPane
200 * @return javax.swing.JTabbedPane
202 private JTabbedPane
getJTabbedPane() {
203 if (jTabbedPane
== null) {
204 jTabbedPane
= new JTabbedPane();
205 jTabbedPane
.addTab("FV Images", null, getJPanelFvImages(), null);
206 jTabbedPane
.addTab("Flash Definition File", null, getJPanel7(), null);
213 * This method initializes jPanelFvImages
215 * @return javax.swing.JPanel
217 private JPanel
getJPanelFvImages() {
218 if (jPanelFvImages
== null) {
219 jPanelFvImages
= new JPanel();
220 jPanelFvImages
.setLayout(new BorderLayout());
221 jPanelFvImages
.add(getJPanelFvImageN(), java
.awt
.BorderLayout
.NORTH
);
222 // jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);
223 jPanelFvImages
.add(getJPanelFvImageS(), java
.awt
.BorderLayout
.SOUTH
);
224 jPanelFvImages
.add(getJPanelFvImageC(), java
.awt
.BorderLayout
.CENTER
);
227 return jPanelFvImages
;
231 * This method initializes jButtonOk
233 * @return javax.swing.JButton
235 private JButton
getJButtonOk() {
236 if (jButtonOk
== null) {
237 jButtonOk
= new JButton();
238 jButtonOk
.setPreferredSize(new java
.awt
.Dimension(80,20));
239 jButtonOk
.setText("Cancel");
240 jButtonOk
.setVisible(false);
246 * This method initializes jButtonCancel
248 * @return javax.swing.JButton
250 private JButton
getJButtonCancel() {
251 if (jButtonCancel
== null) {
252 jButtonCancel
= new JButton();
253 jButtonCancel
.setPreferredSize(new java
.awt
.Dimension(80,20));
254 jButtonCancel
.setText("Ok");
255 jButtonCancel
.setVisible(false);
257 return jButtonCancel
;
261 * This method initializes jPanelFvImageN
263 * @return javax.swing.JPanel
265 private JPanel
getJPanelFvImageN() {
266 if (jPanelFvImageN
== null) {
267 jLabel1
= new JLabel();
268 jLabel1
.setText("Value");
269 jLabel1
.setEnabled(false);
270 jLabel1
.setPreferredSize(new java
.awt
.Dimension(38,20));
271 jLabel
= new JLabel();
272 jLabel
.setText("Name");
273 jLabel
.setEnabled(false);
274 jLabel
.setPreferredSize(new java
.awt
.Dimension(38,20));
275 FlowLayout flowLayout2
= new FlowLayout();
276 flowLayout2
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
277 flowLayout2
.setHgap(15);
278 jPanelFvImageN
= new JPanel();
279 jPanelFvImageN
.setPreferredSize(new java
.awt
.Dimension(576,100));
280 jPanelFvImageN
.setBorder(javax
.swing
.BorderFactory
.createBevelBorder(javax
.swing
.border
.BevelBorder
.RAISED
));
281 jPanelFvImageN
.setLayout(flowLayout2
);
282 jPanelFvImageN
.add(getJCheckBox1(), null);
283 jPanelFvImageN
.add(jLabel
, null);
284 jPanelFvImageN
.add(getJTextField(), null);
285 jPanelFvImageN
.add(jLabel1
, null);
286 jPanelFvImageN
.add(getJTextField1(), null);
287 jPanelFvImageN
.add(getJScrollPane1(), null);
288 jPanelFvImageN
.add(getJPanel4(), null);
290 return jPanelFvImageN
;
294 * This method initializes jPanelFvImageS
296 * @return javax.swing.JPanel
298 private JPanel
getJPanelFvImageS() {
299 if (jPanelFvImageS
== null) {
300 GridLayout gridLayout2
= new GridLayout();
301 gridLayout2
.setRows(1);
302 jPanelFvImageS
= new JPanel();
303 jPanelFvImageS
.setPreferredSize(new java
.awt
.Dimension(480,190));
304 jPanelFvImageS
.setLayout(gridLayout2
);
305 jPanelFvImageS
.add(getJScrollPane3(), null);
307 return jPanelFvImageS
;
312 * This method initializes jCheckBox1
314 * @return javax.swing.JCheckBox
316 private JCheckBox
getJCheckBox1() {
317 if (jCheckBox1
== null) {
318 jCheckBox1
= new JCheckBox();
319 jCheckBox1
.setText("FV Properties");
320 jCheckBox1
.addItemListener(new ItemListener(){
322 public void itemStateChanged(ItemEvent arg0
) {
323 // TODO Auto-generated method stub
324 boolean seleted
= jCheckBox1
.isSelected();
326 jLabel
.setEnabled(seleted
);
327 jTextField
.setEnabled(seleted
);
328 jLabel1
.setEnabled(seleted
);
329 jTextField1
.setEnabled(seleted
);
330 jTable
.setEnabled(seleted
);
331 jButton
.setEnabled(seleted
);
332 jButton1
.setEnabled(seleted
);
344 * This method initializes jTextField
346 * @return javax.swing.JTextField
348 private JTextField
getJTextField() {
349 if (jTextField
== null) {
350 jTextField
= new JTextField();
351 jTextField
.setPreferredSize(new java
.awt
.Dimension(100,20));
352 jTextField
.setEnabled(false);
359 * This method initializes jTextField1
361 * @return javax.swing.JTextField
363 private JTextField
getJTextField1() {
364 if (jTextField1
== null) {
365 jTextField1
= new JTextField();
366 jTextField1
.setPreferredSize(new java
.awt
.Dimension(100,20));
367 jTextField1
.setEnabled(false);
374 * This method initializes jButton
376 * @return javax.swing.JButton
378 private JButton
getJButton() {
379 if (jButton
== null) {
380 jButton
= new JButton();
381 jButton
.setPreferredSize(new java
.awt
.Dimension(80,20));
382 jButton
.setEnabled(false);
383 jButton
.setText("Add");
384 jButton
.addActionListener(new AbstractAction() {
388 private static final long serialVersionUID
= 1L;
390 public void actionPerformed(ActionEvent e
) {
391 if (jTextField
.getText().length() > 0 && jTextField1
.getText().length() > 0){
392 String
[] row
= {jTextField
.getText(), jTextField1
.getText()};
393 fvPropertyTableModel
.addRow(row
);
394 ffc
.genFvImagesNameValue(row
[0], row
[1]);
404 * This method initializes jScrollPane1
406 * @return javax.swing.JScrollPane
408 private JScrollPane
getJScrollPane1() {
409 if (jScrollPane1
== null) {
410 jScrollPane1
= new JScrollPane();
411 jScrollPane1
.setPreferredSize(new java
.awt
.Dimension(350,55));
412 jScrollPane1
.setViewportView(getJTable());
419 * This method initializes jTable
421 * @return javax.swing.JTable
423 private JTable
getJTable() {
424 if (jTable
== null) {
425 fvPropertyTableModel
= new DefaultTableModel();
426 jTable
= new JTable(fvPropertyTableModel
);
427 fvPropertyTableModel
.addColumn("Name");
428 fvPropertyTableModel
.addColumn("Value");
429 jTable
.setRowHeight(20);
430 jTable
.setEnabled(false);
432 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
433 jTable
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
434 public void valueChanged(ListSelectionEvent e
) {
435 if (e
.getValueIsAdjusting()){
438 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
439 if (lsm
.isSelectionEmpty()) {
443 // selectedRow = lsm.getMinSelectionIndex();
448 jTable
.getModel().addTableModelListener(new TableModelListener(){
449 public void tableChanged(TableModelEvent arg0
) {
450 // TODO Auto-generated method stub
451 int row
= arg0
.getFirstRow();
452 TableModel m
= (TableModel
)arg0
.getSource();
453 if (arg0
.getType() == TableModelEvent
.UPDATE
){
455 String name
= m
.getValueAt(row
, 0) + "";
456 String value
= m
.getValueAt(row
, 1) + "";
458 ffc
.updateFvImagesNameValue(row
, name
, value
);
468 * This method initializes jPanel4
470 * @return javax.swing.JPanel
472 private JPanel
getJPanel4() {
473 if (jPanel4
== null) {
474 jPanel4
= new JPanel();
475 jPanel4
.setPreferredSize(new java
.awt
.Dimension(80,55));
477 jPanel4
.add(getJButton(), null);
478 jPanel4
.add(getJButton1(), null);
485 * This method initializes jButton1
487 * @return javax.swing.JButton
489 private JButton
getJButton1() {
490 if (jButton1
== null) {
491 jButton1
= new JButton();
492 jButton1
.setPreferredSize(new java
.awt
.Dimension(80,20));
493 jButton1
.setEnabled(false);
494 jButton1
.setText("Delete");
495 jButton1
.addActionListener(new AbstractAction() {
499 private static final long serialVersionUID
= 1L;
501 public void actionPerformed(ActionEvent e
) {
502 if (jTable
.getSelectedRow() >= 0){
503 fvPropertyTableModel
.removeRow(jTable
.getSelectedRow());
504 ffc
.removeFvImagesNameValue(jTable
.getSelectedRow());
514 * This method initializes jPanelFvImageC
516 * @return javax.swing.JPanel
518 private JPanel
getJPanelFvImageC() {
519 if (jPanelFvImageC
== null) {
520 jLabel4
= new JLabel();
521 jLabel4
.setPreferredSize(new Dimension(38, 20));
522 jLabel4
.setEnabled(false);
523 jLabel4
.setText("Name");
524 jLabel3
= new JLabel();
525 jLabel3
.setText("FV Image Names");
526 jLabel3
.setEnabled(false);
527 jLabel3
.setPreferredSize(new java
.awt
.Dimension(150,20));
528 jLabel2
= new JLabel();
529 jLabel2
.setText("Type");
530 jLabel2
.setEnabled(false);
531 jLabel2
.setPreferredSize(new java
.awt
.Dimension(70,20));
532 FlowLayout flowLayout3
= new FlowLayout();
533 flowLayout3
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
534 flowLayout3
.setHgap(5);
535 jPanelFvImageC
= new JPanel();
536 jPanelFvImageC
.setLayout(flowLayout3
);
537 jPanelFvImageC
.add(getJPanel6(), null);
539 jPanelFvImageC
.add(getJPanel5(), null);
542 return jPanelFvImageC
;
547 * This method initializes jCheckBox2
549 * @return javax.swing.JCheckBox
551 private JCheckBox
getJCheckBox2() {
552 if (jCheckBox2
== null) {
553 jCheckBox2
= new JCheckBox();
554 jCheckBox2
.setText("FV Image Parameters");
555 jCheckBox2
.setPreferredSize(new java
.awt
.Dimension(200,20));
556 jCheckBox2
.addItemListener(new ItemListener(){
558 public void itemStateChanged(ItemEvent arg0
) {
559 // TODO Auto-generated method stub
560 boolean seleted
= jCheckBox2
.isSelected();
562 jLabel2
.setEnabled(seleted
);
563 jLabel3
.setEnabled(seleted
);
564 jLabel4
.setEnabled(seleted
);
565 jComboBox
.setEnabled(seleted
);
566 jTextField2
.setEnabled(seleted
);
568 jTable1
.setEnabled(seleted
);
569 jButton2
.setEnabled(seleted
);
570 jButton3
.setEnabled(seleted
);
582 * This method initializes jComboBox
584 * @return javax.swing.JComboBox
586 private JComboBox
getJComboBox() {
587 if (jComboBox
== null) {
588 jComboBox
= new JComboBox();
589 jComboBox
.addItem("ImageName");
590 jComboBox
.addItem("Attributes");
591 jComboBox
.addItem("Options");
592 jComboBox
.addItem("Components");
593 jComboBox
.setPreferredSize(new java
.awt
.Dimension(180,20));
594 jComboBox
.setEnabled(false);
595 jComboBox
.addItemListener(new ItemListener() {
597 public void itemStateChanged(ItemEvent arg0
) {
598 // TODO disable attribute settings when ValidImageNames selected.
609 * This method initializes jTextField2
611 * @return javax.swing.JTextField
613 private JTextField
getJTextField2() {
614 if (jTextField2
== null) {
615 jTextField2
= new JTextField();
616 jTextField2
.setPreferredSize(new java
.awt
.Dimension(140,20));
617 jTextField2
.setEnabled(false);
624 * This method initializes jButton2
626 * @return javax.swing.JButton
628 private JButton
getJButton2() {
629 if (jButton2
== null) {
630 jButton2
= new JButton();
631 jButton2
.setPreferredSize(new Dimension(80, 20));
632 jButton2
.setEnabled(false);
633 jButton2
.setText("Add");
634 jButton2
.addActionListener(new AbstractAction() {
638 private static final long serialVersionUID
= 1L;
640 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
641 if (jTextField2
.getText().length() > 0){
642 String
[] row
= {jTextField2
.getText()};
643 fvImageNameTableModel
.addRow(row
);
653 * This method initializes jScrollPane2
655 * @return javax.swing.JScrollPane
657 private JScrollPane
getJScrollPane2() {
658 if (jScrollPane2
== null) {
659 jScrollPane2
= new JScrollPane();
660 jScrollPane2
.setPreferredSize(new java
.awt
.Dimension(350,50));
661 jScrollPane2
.setViewportView(getJTable1());
668 * This method initializes jTable1
670 * @return javax.swing.JTable
672 private JTable
getJTable1() {
673 if (jTable1
== null) {
674 fvImageNameTableModel
= new DefaultTableModel();
675 jTable1
= new JTable(fvImageNameTableModel
);
676 jTable1
.setEnabled(false);
677 fvImageNameTableModel
.addColumn("FV Image Name");
684 * This method initializes jButton3
686 * @return javax.swing.JButton
688 private JButton
getJButton3() {
689 if (jButton3
== null) {
690 jButton3
= new JButton();
691 jButton3
.setPreferredSize(new Dimension(80, 20));
692 jButton3
.setEnabled(false);
693 jButton3
.setText("Delete");
694 jButton3
.addActionListener(new AbstractAction() {
698 private static final long serialVersionUID
= 1L;
700 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
701 if (jTable1
.getSelectedRow() >= 0){
703 fvImageNameTableModel
.removeRow(jTable1
.getSelectedRow());
714 private JPanel
getJPanel5() {
717 if (jPanel5
== null) {
718 //ToDo add ButtonGroup for RadioButtons
719 jLabel6
= new JLabel();
720 jLabel6
.setEnabled(true);
721 jLabel6
.setText("Value");
722 jLabel6
.setPreferredSize(new Dimension(38, 20));
723 jLabel5
= new JLabel();
724 jLabel5
.setEnabled(true);
725 jLabel5
.setText("Name");
726 jLabel5
.setPreferredSize(new Dimension(38, 20));
727 jPanel5
= new JPanel();
728 jPanel5
.setPreferredSize(new java
.awt
.Dimension(480,150));
730 jPanel5
.setLayout(new FlowLayout());
732 jPanel5
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
733 jPanel5
.add(getJCheckBox3(), null);
734 jPanel5
.add(jLabel5
, null);
735 jPanel5
.add(getJTextField4(), null);
736 jPanel5
.add(jLabel6
, null);
737 jPanel5
.add(getJTextField5(), null);
738 jPanel5
.add(getJScrollPane(), null);
739 jPanel5
.add(getJPanel8(), null);
740 jPanel5
.add(getJButton4(), null);
741 jPanel5
.add(getJButton6(), null);
742 jPanel5
.add(getJButton9(), null);
754 * This method initializes jButton4
756 * @return javax.swing.JButton
758 private JButton
getJButton4() {
759 if (jButton4
== null) {
760 jButton4
= new JButton();
761 jButton4
.setPreferredSize(new java
.awt
.Dimension(120,20));
762 // jButton4.setEnabled(false);
763 jButton4
.setText("Add FV Image");
764 jButton4
.addActionListener(new AbstractAction() {
768 private static final long serialVersionUID
= 1L;
770 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
771 if (jTable2
.isEditing()) {
772 jTable2
.getCellEditor().stopCellEditing();
774 if (jTable3
.isEditing()) {
775 jTable3
.getCellEditor().stopCellEditing();
777 if (jTable1
.getRowCount()== 0){
780 String imageName
= " ";
781 for (int i
= 0; i
< jTable1
.getRowCount(); ++i
){
782 imageName
+= (String
)jTable1
.getValueAt(i
, 0);
785 imageName
= imageName
.trim();
787 if (!jCheckBox3
.isSelected() && jComboBox
.getSelectedIndex() != 0){
792 LinkedHashMap
<String
, String
> m
= null;
793 if (jCheckBox3
.isSelected()) {
794 m
= new LinkedHashMap
<String
, String
>();
795 getOptionNameValue(m
);
797 ffc
.genFvImagesFvImage(imageName
.split(" "), jComboBox
.getSelectedItem()+"", m
);
799 Object
[] row
= {imageName
, jComboBox
.getSelectedItem()};
800 fvImageParaTableModel
.addRow(row
);
809 * This method initializes jScrollPane3
811 * @return javax.swing.JScrollPane
813 private JScrollPane
getJScrollPane3() {
814 if (jScrollPane3
== null) {
815 jScrollPane3
= new JScrollPane();
816 jScrollPane3
.setPreferredSize(new java
.awt
.Dimension(480,150));
817 jScrollPane3
.setViewportView(getJTable2());
824 * This method initializes jTable2
826 * @return javax.swing.JTable
828 private JTable
getJTable2() {
829 if (jTable2
== null) {
830 fvImageParaTableModel
= new ImageParaTableModel();
831 jTable2
= new JTable(fvImageParaTableModel
);
832 fvImageParaTableModel
.addColumn("FvImageNames");
833 fvImageParaTableModel
.addColumn("Type");
836 TableColumn typeCol
= jTable2
.getColumnModel().getColumn(1);
837 JComboBox cb
= new JComboBox();
838 cb
.addItem("ValidImageNames");
839 cb
.addItem("Attributes");
840 cb
.addItem("Options");
841 cb
.addItem("Components");
842 typeCol
.setCellEditor(new DefaultCellEditor(cb
));
844 jTable2
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
845 jTable2
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
846 public void valueChanged(ListSelectionEvent e
) {
847 if (e
.getValueIsAdjusting()){
850 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
851 if (lsm
.isSelectionEmpty()) {
855 int selectedRow
= lsm
.getMinSelectionIndex();
856 LinkedHashMap
<String
, String
> optionMap
= new LinkedHashMap
<String
, String
>();
857 ffc
.getFvImagesFvImageOptions(selectedRow
, optionMap
);
858 if (optionMap
.size() > 0){
859 fvOptionTableModel
.setRowCount(0);
860 Set
<String
> key
= optionMap
.keySet();
861 Iterator
<String
> i
= key
.iterator();
862 while (i
.hasNext()) {
864 String k
= (String
)i
.next();
865 String
[] row
= {k
, optionMap
.get(k
)};
867 fvOptionTableModel
.addRow(row
);
882 * This method initializes jButton6
884 * @return javax.swing.JButton
886 private JButton
getJButton6() {
887 if (jButton6
== null) {
888 jButton6
= new JButton();
889 jButton6
.setPreferredSize(new java
.awt
.Dimension(120,20));
890 // jButton6.setEnabled(false);
891 jButton6
.setText("Delete Row");
892 jButton6
.addActionListener(new AbstractAction() {
896 private static final long serialVersionUID
= 1L;
898 public void actionPerformed(ActionEvent arg0
) {
899 // TODO Auto-generated method stub
900 if (jTable2
.getSelectedRow() >= 0 ) {
901 fvImageParaTableModel
.removeRow(jTable2
.getSelectedRow());
902 ffc
.removeFvImagesFvImage(jTable2
.getSelectedRow());
913 * This method initializes jCheckBox3
915 * @return javax.swing.JCheckBox
917 private JCheckBox
getJCheckBox3() {
918 if (jCheckBox3
== null) {
919 jCheckBox3
= new JCheckBox();
920 jCheckBox3
.setText("FV Image Options");
921 jCheckBox3
.addItemListener(new ItemListener(){
923 public void itemStateChanged(ItemEvent arg0
) {
924 // TODO Auto-generated method stub
925 // boolean selected = jCheckBox3.isSelected();
927 if (!jCheckBox2
.isSelected() || jComboBox
.getSelectedIndex() == 0) {
931 // jLabel5.setEnabled(selected);
932 // jTextField4.setEnabled(selected);
933 // jLabel6.setEnabled(selected);
934 // jTextField5.setEnabled(selected);
935 // jButton7.setEnabled(selected);
936 // jButton8.setEnabled(selected);
947 * This method initializes jPanel6
949 * @return javax.swing.JPanel
951 private JPanel
getJPanel6() {
952 if (jPanel6
== null) {
953 StarLabel starLabel
= new StarLabel();
954 starLabel
.setVisible(false);
955 jPanel6
= new JPanel();
956 jPanel6
.setPreferredSize(new java
.awt
.Dimension(480,120));
957 jPanel6
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
958 jPanel6
.add(getJCheckBox2(), null);
959 jPanel6
.add(jLabel2
, null);
960 jPanel6
.add(getJComboBox(), null);
961 jPanel6
.add(new StarLabel(), null);
962 jPanel6
.add(jLabel3
, null);
963 jPanel6
.add(jLabel4
, null);
964 jPanel6
.add(getJTextField2(), null);
965 jPanel6
.add(getJButton2(), null);
966 jPanel6
.add(getJScrollPane2(), null);
967 jPanel6
.add(getJButton3(), null);
973 * This method initializes jPanel7
975 * @return javax.swing.JPanel
977 private JPanel
getJPanel7() {
978 if (jPanel7
== null) {
979 FlowLayout flowLayout1
= new FlowLayout();
980 flowLayout1
.setAlignment(FlowLayout
.LEFT
);
981 jPanel7
= new JPanel();
982 jPanel7
.setLayout(flowLayout1
);
983 jPanel7
.add(getJCheckBox(), null);
984 jPanel7
.add(getJTextField3(), null);
985 jPanel7
.add(getJButton5(), null);
986 jPanel7
.addComponentListener(new ComponentAdapter(){
987 public void componentShown(ComponentEvent e
) {
988 if (ffc
.getFlashDefinitionFile() != null) {
989 jTextField3
.setText(ffc
.getFlashDefinitionFile());
992 public void componentHidden(ComponentEvent e
) {
993 if (jCheckBox
.isSelected()) {
994 ffc
.genFlashDefinitionFile(jTextField3
.getText());
1003 * This method initializes jCheckBox
1005 * @return javax.swing.JCheckBox
1007 private JCheckBox
getJCheckBox() {
1008 if (jCheckBox
== null) {
1009 jCheckBox
= new JCheckBox();
1010 jCheckBox
.setText("Flash Definition File");
1011 jCheckBox
.addItemListener(new ItemListener() {
1013 public void itemStateChanged(ItemEvent arg0
) {
1014 // TODO Auto-generated method stub
1015 if (jCheckBox
.isSelected()){
1016 jTextField3
.setEnabled(true);
1017 jButton5
.setEnabled(true);
1021 jTextField3
.setEnabled(false);
1022 jButton5
.setEnabled(false);
1031 * This method initializes jTextField3
1033 * @return javax.swing.JTextField
1035 private JTextField
getJTextField3() {
1036 if (jTextField3
== null) {
1037 jTextField3
= new JTextField();
1038 jTextField3
.setEnabled(false);
1039 jTextField3
.setPreferredSize(new Dimension(300, 20));
1045 * This method initializes jButton5
1047 * @return javax.swing.JButton
1049 private JButton
getJButton5() {
1050 if (jButton5
== null) {
1051 jButton5
= new JButton();
1052 jButton5
.setEnabled(false);
1053 jButton5
.setText("Browse");
1054 jButton5
.setPreferredSize(new Dimension(78, 20));
1055 jButton5
.addActionListener(new AbstractAction(){
1059 private static final long serialVersionUID
= 1L;
1061 public void actionPerformed(ActionEvent e
) {
1062 // TODO Auto-generated method stub
1063 JFileChooser chooser
= new JFileChooser();
1064 chooser
.setMultiSelectionEnabled(false);
1065 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1066 int retval
= chooser
.showOpenDialog(frame
);
1067 if (retval
== JFileChooser
.APPROVE_OPTION
) {
1069 File theFile
= chooser
.getSelectedFile();
1070 jTextField3
.setText(theFile
.getPath());
1080 * This method initializes jTextField4
1082 * @return javax.swing.JTextField
1084 private JTextField
getJTextField4() {
1085 if (jTextField4
== null) {
1086 jTextField4
= new JTextField();
1087 jTextField4
.setEnabled(true);
1088 jTextField4
.setPreferredSize(new Dimension(100, 20));
1094 * This method initializes jTextField5
1096 * @return javax.swing.JTextField
1098 private JTextField
getJTextField5() {
1099 if (jTextField5
== null) {
1100 jTextField5
= new JTextField();
1101 jTextField5
.setEnabled(true);
1102 jTextField5
.setPreferredSize(new Dimension(100, 20));
1108 * This method initializes jPanel8
1110 * @return javax.swing.JPanel
1112 private JPanel
getJPanel8() {
1113 if (jPanel8
== null) {
1114 jPanel8
= new JPanel();
1115 jPanel8
.setPreferredSize(new Dimension(80, 55));
1116 jPanel8
.add(getJButton7(), null);
1117 jPanel8
.add(getJButton8(), null);
1123 * This method initializes jButton7
1125 * @return javax.swing.JButton
1127 private JButton
getJButton7() {
1128 if (jButton7
== null) {
1129 jButton7
= new JButton();
1130 jButton7
.setEnabled(true);
1131 jButton7
.setText("Add");
1132 jButton7
.setPreferredSize(new Dimension(80, 20));
1133 jButton7
.addActionListener(new AbstractAction() {
1137 private static final long serialVersionUID
= 1L;
1139 public void actionPerformed(ActionEvent e
) {
1140 if (jTextField4
.getText().length() > 0 && jTextField5
.getText().length() > 0){
1141 String
[] row
= {jTextField4
.getText(), jTextField5
.getText()};
1142 fvOptionTableModel
.addRow(row
);
1151 * This method initializes jButton8
1153 * @return javax.swing.JButton
1155 private JButton
getJButton8() {
1156 if (jButton8
== null) {
1157 jButton8
= new JButton();
1158 jButton8
.setEnabled(true);
1159 jButton8
.setText("Delete");
1160 jButton8
.setPreferredSize(new Dimension(80, 20));
1161 jButton8
.addActionListener(new AbstractAction() {
1165 private static final long serialVersionUID
= 1L;
1167 public void actionPerformed(ActionEvent e
) {
1168 if (jTable3
.getSelectedRow() >= 0){
1169 fvOptionTableModel
.removeRow(jTable
.getSelectedRow());
1178 * This method initializes jScrollPane
1180 * @return javax.swing.JScrollPane
1182 private JScrollPane
getJScrollPane() {
1183 if (jScrollPane
== null) {
1184 jScrollPane
= new JScrollPane();
1185 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(350,80));
1186 jScrollPane
.setViewportView(getJTable3());
1192 * This method initializes jTable3
1194 * @return javax.swing.JTable
1196 private JTable
getJTable3() {
1197 if (jTable3
== null) {
1198 fvOptionTableModel
= new DefaultTableModel();
1199 fvOptionTableModel
.addColumn("Name");
1200 fvOptionTableModel
.addColumn("Value");
1201 jTable3
= new JTable(fvOptionTableModel
);
1203 jTable3
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
1204 jTable3
.setRowHeight(20);
1211 * This method initializes jButton9
1213 * @return javax.swing.JButton
1215 private JButton
getJButton9() {
1216 if (jButton9
== null) {
1217 jButton9
= new JButton();
1218 jButton9
.setPreferredSize(new Dimension(120, 20));
1219 jButton9
.setActionCommand("Update");
1220 jButton9
.setText("Update FV");
1221 jButton9
.addActionListener(new java
.awt
.event
.ActionListener() {
1222 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1223 int row
= jTable2
.getSelectedRow();
1224 if (jTable2
.isEditing()) {
1225 jTable2
.getCellEditor().stopCellEditing();
1227 if (jTable3
.isEditing()) {
1228 jTable3
.getCellEditor().stopCellEditing();
1231 //ToDo Check data validity before update
1232 String name
= fvImageParaTableModel
.getValueAt(row
, 0) + "";
1233 String type
= fvImageParaTableModel
.getValueAt(row
, 1) + "";
1235 LinkedHashMap
<String
, String
> lhm
= new LinkedHashMap
<String
, String
>();
1236 getOptionNameValue(lhm
);
1239 ffc
.updateFvImagesFvImage(row
, name
.split(" "), type
, lhm
);
1250 public static void main(String
[] args
) {
1251 // TODO Auto-generated method stub
1252 new FpdFlash().setVisible(true);
1256 * This method initializes this
1260 private void initialize() {
1261 this.setSize(518, 650);
1262 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
1263 this.setContentPane(getJContentPane());
1264 this.setTitle("FPD Flash Definitions");
1265 this.addInternalFrameListener(new InternalFrameAdapter(){
1266 public void internalFrameDeactivated(InternalFrameEvent e
){
1267 if (jTable
.isEditing()) {
1268 jTable
.getCellEditor().stopCellEditing();
1270 if (jTable1
.isEditing()) {
1271 jTable1
.getCellEditor().stopCellEditing();
1273 if (jTable2
.isEditing()) {
1274 jTable2
.getCellEditor().stopCellEditing();
1280 private void init(FpdFileContents ffc
) {
1281 if (ffc
.getFvImagesFvImageCount() == 0) {
1284 String
[][] saa
= new String
[ffc
.getFvImagesFvImageCount()][2];
1285 // ArrayList<LinkedHashMap<String, String>> options = new ArrayList<LinkedHashMap<String, String>>(ffc.getFvImagesFvImageCount());
1287 // for (int j = 0; j < ffc.getFvImagesFvImageCount(); ++j){
1288 // options.add(new LinkedHashMap<String, String>());
1290 ffc
.getFvImagesFvImages(saa
);
1294 while (i
< saa
.length
) {
1296 fvImageParaTableModel
.addRow(saa
[i
]);
1301 private void getOptionNameValue(Map
<String
, String
> m
){
1302 for (int i
= 0; i
< jTable3
.getRowCount(); ++i
) {
1303 m
.put(fvOptionTableModel
.getValueAt(i
, 0)+"", fvOptionTableModel
.getValueAt(i
, 1)+"");
1307 * This method initializes jContentPane
1309 * @return javax.swing.JPanel
1311 private JPanel
getJContentPane() {
1312 if (jContentPane
== null) {
1313 jContentPane
= new JPanel();
1314 jContentPane
.setLayout(new BorderLayout());
1315 jContentPane
.add(getJPanel(), java
.awt
.BorderLayout
.EAST
);
1316 jContentPane
.add(getJPanel1(), java
.awt
.BorderLayout
.SOUTH
);
1317 jContentPane
.add(getJPanel2(), java
.awt
.BorderLayout
.WEST
);
1318 jContentPane
.add(getJPanel3(), java
.awt
.BorderLayout
.NORTH
);
1319 jContentPane
.add(getJTabbedPane(), java
.awt
.BorderLayout
.CENTER
);
1321 return jContentPane
;
1324 } // @jve:decl-index=0:visual-constraint="10,10"
1326 class ImageParaTableModel
extends DefaultTableModel
{
1328 private static final long serialVersionUID
= 1L;
1330 public boolean isCellEditable(int row
, int col
) {
1331 if (getValueAt(row
, 1).equals("ImageName") && col
>=1) {