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
.JOptionPane
;
23 import javax
.swing
.JTabbedPane
;
24 import javax
.swing
.JButton
;
25 import javax
.swing
.ListSelectionModel
;
27 import org
.tianocore
.PlatformSurfaceAreaDocument
;
28 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningPlatformType
;
29 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
30 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
33 import java
.awt
.FlowLayout
;
34 import java
.awt
.event
.ActionEvent
;
35 import java
.awt
.event
.ComponentAdapter
;
36 import java
.awt
.event
.ComponentEvent
;
37 import java
.awt
.event
.ItemEvent
;
38 import java
.awt
.event
.ItemListener
;
40 import java
.util
.Iterator
;
41 import java
.util
.LinkedHashMap
;
45 import javax
.swing
.JCheckBox
;
46 import javax
.swing
.JTextField
;
47 import java
.awt
.GridLayout
;
48 import javax
.swing
.JLabel
;
49 import javax
.swing
.JScrollPane
;
50 import javax
.swing
.JTable
;
51 import javax
.swing
.event
.InternalFrameAdapter
;
52 import javax
.swing
.event
.InternalFrameEvent
;
53 import javax
.swing
.event
.ListSelectionEvent
;
54 import javax
.swing
.event
.ListSelectionListener
;
55 import javax
.swing
.event
.TableModelEvent
;
56 import javax
.swing
.event
.TableModelListener
;
57 import javax
.swing
.table
.DefaultTableModel
;
58 import javax
.swing
.table
.TableColumn
;
59 import javax
.swing
.table
.TableModel
;
60 import javax
.swing
.JComboBox
;
61 import java
.awt
.Dimension
;
63 public class FpdFlash
extends IInternalFrame
{
68 private static final long serialVersionUID
= 1L;
70 private JPanel jContentPane
= null;
71 private JPanel jPanelContentEast
= null;
72 private JPanel jPanelContentSouth
= null;
73 private JPanel jPanelContentWest
= null;
74 private JPanel jPanelContentNorth
= null;
75 private JTabbedPane jTabbedPane
= null;
76 private JPanel jPanelFvImages
= null;
77 private JPanel jPanelFvImageN
= null;
78 private JPanel jPanelFvImageS
= null;
79 private JCheckBox jCheckBoxFvProperty
= null;
80 private JLabel jLabelFvPropName
= null;
81 private JTextField jTextFieldFvPropName
= null;
82 private JLabel jLabelFvPropValue
= null;
83 private JTextField jTextFieldFvPropValue
= null;
84 private JButton jButtonFvPropAdd
= null;
85 private JScrollPane jScrollPaneFvProp
= null;
86 private JTable jTableFvProp
= null;
87 private JPanel jPanelFvPropButtonGroup
= null;
88 private JButton jButtonFvPropDel
= 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 jCheckBoxFvImagePara
= null;
95 private JLabel jLabelFvParaType
= null;
96 private JComboBox jComboBoxFvParaType
= null;
97 private JLabel jLabelFvImageNames
= null;
98 private JLabel jLabelFvParaName
= null;
99 private JTextField jTextFieldFvParaName
= null;
100 private JButton jButtonFvParaAdd
= null;
101 private JScrollPane jScrollPaneFvImageNames
= null;
102 private JTable jTableFvImageNames
= null;
103 private JButton jButtonFvParaDel
= null;
104 private JPanel jPanelFvImageOpts
= null;
105 private JButton jButtonAddFvImage
= null;
106 private JScrollPane jScrollPaneFvInfo
= null;
107 private JTable jTableFvInfo
= null;
108 private JButton jButtonDelFvImage
= null;
109 private JCheckBox jCheckBoxFvImageOpts
= null;
110 private JPanel jPanelFvImagePara
= null;
111 private OpeningPlatformType docConsole
= null;
112 private FpdFileContents ffc
= null;
113 private JPanel jPanelFdf
= null;
114 private JCheckBox jCheckBoxFdf
= null;
115 private JTextField jTextFieldFdf
= null;
116 private JButton jButtonFdfBrowse
= null;
117 private JLabel jLabelFvImageOptName
= null;
118 private JTextField jTextFieldFvImageOptName
= null;
119 private JLabel jLabelFvImageOptValue
= null;
120 private JTextField jTextFieldFvImageOptValue
= null;
121 private JPanel jPanelFvImageOptsButtonGroup
= null;
122 private JButton jButtonFvImageOptAdd
= null;
123 private JButton jButtonFvImageOptDel
= null;
124 private JScrollPane jScrollPane
= null;
125 private JTable jTableFvImageOpts
= null;
126 private JButton jButtonUpdateFvImage
= 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
);
142 public FpdFlash(OpeningPlatformType opt
) {
143 this(opt
.getXmlFpd());
148 * This method initializes jPanel
150 * @return javax.swing.JPanel
152 private JPanel
getJPanelContentEast() {
153 if (jPanelContentEast
== null) {
154 jPanelContentEast
= new JPanel();
156 return jPanelContentEast
;
160 * This method initializes jPanel1
162 * @return javax.swing.JPanel
164 private JPanel
getJPanelContentSouth() {
165 if (jPanelContentSouth
== null) {
166 FlowLayout flowLayout
= new FlowLayout();
167 flowLayout
.setAlignment(java
.awt
.FlowLayout
.RIGHT
);
168 flowLayout
.setHgap(15);
169 jPanelContentSouth
= new JPanel();
170 jPanelContentSouth
.setLayout(flowLayout
);
171 jPanelContentSouth
.setComponentOrientation(java
.awt
.ComponentOrientation
.LEFT_TO_RIGHT
);
173 return jPanelContentSouth
;
177 * This method initializes jPanel2
179 * @return javax.swing.JPanel
181 private JPanel
getJPanelContentWest() {
182 if (jPanelContentWest
== null) {
183 jPanelContentWest
= new JPanel();
185 return jPanelContentWest
;
189 * This method initializes jPanel3
191 * @return javax.swing.JPanel
193 private JPanel
getJPanelContentNorth() {
194 if (jPanelContentNorth
== null) {
195 jPanelContentNorth
= new JPanel();
197 return jPanelContentNorth
;
201 * This method initializes jTabbedPane
203 * @return javax.swing.JTabbedPane
205 private JTabbedPane
getJTabbedPane() {
206 if (jTabbedPane
== null) {
207 jTabbedPane
= new JTabbedPane();
208 jTabbedPane
.addTab("FV Images", null, getJPanelFvImages(), null);
209 jTabbedPane
.addTab("Flash Definition File", null, getJPanelFdf(), null);
216 * This method initializes jPanelFvImages
218 * @return javax.swing.JPanel
220 private JPanel
getJPanelFvImages() {
221 if (jPanelFvImages
== null) {
222 jPanelFvImages
= new JPanel();
223 jPanelFvImages
.setLayout(new BorderLayout());
224 jPanelFvImages
.add(getJPanelFvImageN(), java
.awt
.BorderLayout
.NORTH
);
225 // jPanelFvImages.add(getJPanelFvImageW(), java.awt.BorderLayout.WEST);
226 jPanelFvImages
.add(getJPanelFvImageS(), java
.awt
.BorderLayout
.SOUTH
);
227 jPanelFvImages
.add(getJPanelFvImageC(), java
.awt
.BorderLayout
.CENTER
);
230 return jPanelFvImages
;
234 * This method initializes jPanelFvImageN
236 * @return javax.swing.JPanel
238 private JPanel
getJPanelFvImageN() {
239 if (jPanelFvImageN
== null) {
240 jLabelFvPropValue
= new JLabel();
241 jLabelFvPropValue
.setText("Value");
242 jLabelFvPropValue
.setEnabled(false);
243 jLabelFvPropValue
.setPreferredSize(new java
.awt
.Dimension(38,20));
244 jLabelFvPropName
= new JLabel();
245 jLabelFvPropName
.setText("Name");
246 jLabelFvPropName
.setEnabled(false);
247 jLabelFvPropName
.setPreferredSize(new java
.awt
.Dimension(38,20));
248 FlowLayout flowLayout2
= new FlowLayout();
249 flowLayout2
.setAlignment(java
.awt
.FlowLayout
.CENTER
);
250 flowLayout2
.setHgap(15);
251 jPanelFvImageN
= new JPanel();
252 jPanelFvImageN
.setPreferredSize(new java
.awt
.Dimension(576,100));
253 jPanelFvImageN
.setBorder(javax
.swing
.BorderFactory
.createBevelBorder(javax
.swing
.border
.BevelBorder
.RAISED
));
254 jPanelFvImageN
.setLayout(flowLayout2
);
255 jPanelFvImageN
.add(getJCheckBoxFvProperty(), null);
256 jPanelFvImageN
.add(jLabelFvPropName
, null);
257 jPanelFvImageN
.add(getJTextFieldFvPropName(), null);
258 jPanelFvImageN
.add(jLabelFvPropValue
, null);
259 jPanelFvImageN
.add(getJTextFieldFvPropValue(), null);
260 jPanelFvImageN
.add(getJScrollPaneFvProp(), null);
261 jPanelFvImageN
.add(getJPanelFvPropButtonGroup(), null);
263 return jPanelFvImageN
;
267 * This method initializes jPanelFvImageS
269 * @return javax.swing.JPanel
271 private JPanel
getJPanelFvImageS() {
272 if (jPanelFvImageS
== null) {
273 GridLayout gridLayout2
= new GridLayout();
274 gridLayout2
.setRows(1);
275 jPanelFvImageS
= new JPanel();
276 jPanelFvImageS
.setPreferredSize(new java
.awt
.Dimension(480,190));
277 jPanelFvImageS
.setLayout(gridLayout2
);
278 jPanelFvImageS
.add(getJScrollPaneFvInfo(), null);
280 return jPanelFvImageS
;
285 * This method initializes jCheckBox1
287 * @return javax.swing.JCheckBox
289 private JCheckBox
getJCheckBoxFvProperty() {
290 if (jCheckBoxFvProperty
== null) {
291 jCheckBoxFvProperty
= new JCheckBox();
292 jCheckBoxFvProperty
.setText("FV Properties");
293 jCheckBoxFvProperty
.addItemListener(new ItemListener(){
295 public void itemStateChanged(ItemEvent arg0
) {
296 // TODO Auto-generated method stub
297 boolean seleted
= jCheckBoxFvProperty
.isSelected();
299 jLabelFvPropName
.setEnabled(seleted
);
300 jTextFieldFvPropName
.setEnabled(seleted
);
301 jLabelFvPropValue
.setEnabled(seleted
);
302 jTextFieldFvPropValue
.setEnabled(seleted
);
303 jTableFvProp
.setEnabled(seleted
);
304 jButtonFvPropAdd
.setEnabled(seleted
);
305 jButtonFvPropDel
.setEnabled(seleted
);
312 return jCheckBoxFvProperty
;
317 * This method initializes jTextField
319 * @return javax.swing.JTextField
321 private JTextField
getJTextFieldFvPropName() {
322 if (jTextFieldFvPropName
== null) {
323 jTextFieldFvPropName
= new JTextField();
324 jTextFieldFvPropName
.setPreferredSize(new java
.awt
.Dimension(100,20));
325 jTextFieldFvPropName
.setEnabled(false);
327 return jTextFieldFvPropName
;
332 * This method initializes jTextField1
334 * @return javax.swing.JTextField
336 private JTextField
getJTextFieldFvPropValue() {
337 if (jTextFieldFvPropValue
== null) {
338 jTextFieldFvPropValue
= new JTextField();
339 jTextFieldFvPropValue
.setPreferredSize(new java
.awt
.Dimension(100,20));
340 jTextFieldFvPropValue
.setEnabled(false);
342 return jTextFieldFvPropValue
;
347 * This method initializes jButton
349 * @return javax.swing.JButton
351 private JButton
getJButtonFvPropAdd() {
352 if (jButtonFvPropAdd
== null) {
353 jButtonFvPropAdd
= new JButton();
354 jButtonFvPropAdd
.setPreferredSize(new java
.awt
.Dimension(80,20));
355 jButtonFvPropAdd
.setEnabled(false);
356 jButtonFvPropAdd
.setText("Add");
357 jButtonFvPropAdd
.addActionListener(new AbstractAction() {
361 private static final long serialVersionUID
= 1L;
363 public void actionPerformed(ActionEvent e
) {
364 if (jTextFieldFvPropName
.getText().length() > 0 && jTextFieldFvPropValue
.getText().length() > 0){
365 String
[] row
= {jTextFieldFvPropName
.getText(), jTextFieldFvPropValue
.getText()};
366 fvPropertyTableModel
.addRow(row
);
367 docConsole
.setSaved(false);
368 ffc
.genFvImagesNameValue(row
[0], row
[1]);
373 return jButtonFvPropAdd
;
378 * This method initializes jScrollPane1
380 * @return javax.swing.JScrollPane
382 private JScrollPane
getJScrollPaneFvProp() {
383 if (jScrollPaneFvProp
== null) {
384 jScrollPaneFvProp
= new JScrollPane();
385 jScrollPaneFvProp
.setPreferredSize(new java
.awt
.Dimension(350,55));
386 jScrollPaneFvProp
.setViewportView(getJTableFvProp());
388 return jScrollPaneFvProp
;
393 * This method initializes jTable
395 * @return javax.swing.JTable
397 private JTable
getJTableFvProp() {
398 if (jTableFvProp
== null) {
399 fvPropertyTableModel
= new DefaultTableModel();
400 jTableFvProp
= new JTable(fvPropertyTableModel
);
401 fvPropertyTableModel
.addColumn("Name");
402 fvPropertyTableModel
.addColumn("Value");
403 jTableFvProp
.setRowHeight(20);
404 jTableFvProp
.setEnabled(false);
406 jTableFvProp
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
407 jTableFvProp
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
408 public void valueChanged(ListSelectionEvent e
) {
409 if (e
.getValueIsAdjusting()){
412 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
413 if (lsm
.isSelectionEmpty()) {
417 // selectedRow = lsm.getMinSelectionIndex();
422 jTableFvProp
.getModel().addTableModelListener(new TableModelListener(){
423 public void tableChanged(TableModelEvent arg0
) {
424 // TODO Auto-generated method stub
425 int row
= arg0
.getFirstRow();
426 TableModel m
= (TableModel
)arg0
.getSource();
427 if (arg0
.getType() == TableModelEvent
.UPDATE
){
429 String name
= m
.getValueAt(row
, 0) + "";
430 String value
= m
.getValueAt(row
, 1) + "";
431 docConsole
.setSaved(false);
432 ffc
.updateFvImagesNameValue(row
, name
, value
);
442 * This method initializes jPanel4
444 * @return javax.swing.JPanel
446 private JPanel
getJPanelFvPropButtonGroup() {
447 if (jPanelFvPropButtonGroup
== null) {
448 jPanelFvPropButtonGroup
= new JPanel();
449 jPanelFvPropButtonGroup
.setPreferredSize(new java
.awt
.Dimension(80,55));
451 jPanelFvPropButtonGroup
.add(getJButtonFvPropAdd(), null);
452 jPanelFvPropButtonGroup
.add(getJButtonFvPropDel(), null);
454 return jPanelFvPropButtonGroup
;
459 * This method initializes jButton1
461 * @return javax.swing.JButton
463 private JButton
getJButtonFvPropDel() {
464 if (jButtonFvPropDel
== null) {
465 jButtonFvPropDel
= new JButton();
466 jButtonFvPropDel
.setPreferredSize(new java
.awt
.Dimension(80,20));
467 jButtonFvPropDel
.setEnabled(false);
468 jButtonFvPropDel
.setText("Delete");
469 jButtonFvPropDel
.addActionListener(new AbstractAction() {
473 private static final long serialVersionUID
= 1L;
475 public void actionPerformed(ActionEvent e
) {
476 if (jTableFvProp
.getSelectedRow() >= 0){
477 fvPropertyTableModel
.removeRow(jTableFvProp
.getSelectedRow());
478 docConsole
.setSaved(false);
479 ffc
.removeFvImagesNameValue(jTableFvProp
.getSelectedRow());
484 return jButtonFvPropDel
;
489 * This method initializes jPanelFvImageC
491 * @return javax.swing.JPanel
493 private JPanel
getJPanelFvImageC() {
494 if (jPanelFvImageC
== null) {
495 jLabelFvParaName
= new JLabel();
496 jLabelFvParaName
.setPreferredSize(new Dimension(38, 20));
497 jLabelFvParaName
.setEnabled(false);
498 jLabelFvParaName
.setText("Name");
499 jLabelFvImageNames
= new JLabel();
500 jLabelFvImageNames
.setText("FV Image Names");
501 jLabelFvImageNames
.setEnabled(false);
502 jLabelFvImageNames
.setPreferredSize(new java
.awt
.Dimension(150,20));
503 jLabelFvParaType
= new JLabel();
504 jLabelFvParaType
.setText("Type");
505 jLabelFvParaType
.setEnabled(false);
506 jLabelFvParaType
.setPreferredSize(new java
.awt
.Dimension(70,20));
507 FlowLayout flowLayout3
= new FlowLayout();
508 flowLayout3
.setAlignment(java
.awt
.FlowLayout
.LEFT
);
509 flowLayout3
.setHgap(5);
510 jPanelFvImageC
= new JPanel();
511 jPanelFvImageC
.setLayout(flowLayout3
);
512 jPanelFvImageC
.add(getJPanelFvImagePara(), null);
514 jPanelFvImageC
.add(getJPanelFvImageOpts(), null);
517 return jPanelFvImageC
;
522 * This method initializes jCheckBox2
524 * @return javax.swing.JCheckBox
526 private JCheckBox
getJCheckBoxFvImagePara() {
527 if (jCheckBoxFvImagePara
== null) {
528 jCheckBoxFvImagePara
= new JCheckBox();
529 jCheckBoxFvImagePara
.setText("FV Image Parameters");
530 jCheckBoxFvImagePara
.setPreferredSize(new java
.awt
.Dimension(200,20));
531 jCheckBoxFvImagePara
.addItemListener(new ItemListener(){
533 public void itemStateChanged(ItemEvent arg0
) {
534 // TODO Auto-generated method stub
535 boolean seleted
= jCheckBoxFvImagePara
.isSelected();
537 jLabelFvParaType
.setEnabled(seleted
);
538 jLabelFvImageNames
.setEnabled(seleted
);
539 jLabelFvParaName
.setEnabled(seleted
);
540 jComboBoxFvParaType
.setEnabled(seleted
);
541 jTextFieldFvParaName
.setEnabled(seleted
);
543 jTableFvImageNames
.setEnabled(seleted
);
544 jButtonFvParaAdd
.setEnabled(seleted
);
545 jButtonFvParaDel
.setEnabled(seleted
);
552 return jCheckBoxFvImagePara
;
557 * This method initializes jComboBox
559 * @return javax.swing.JComboBox
561 private JComboBox
getJComboBoxFvParaType() {
562 if (jComboBoxFvParaType
== null) {
563 jComboBoxFvParaType
= new JComboBox();
564 jComboBoxFvParaType
.addItem("ImageName");
565 jComboBoxFvParaType
.addItem("Attributes");
566 jComboBoxFvParaType
.addItem("Options");
567 jComboBoxFvParaType
.addItem("Components");
568 jComboBoxFvParaType
.setPreferredSize(new java
.awt
.Dimension(180,20));
569 jComboBoxFvParaType
.setEnabled(false);
570 jComboBoxFvParaType
.addItemListener(new ItemListener() {
572 public void itemStateChanged(ItemEvent arg0
) {
573 // TODO disable attribute settings when ValidImageNames selected.
579 return jComboBoxFvParaType
;
584 * This method initializes jTextField2
586 * @return javax.swing.JTextField
588 private JTextField
getJTextFieldFvParaName() {
589 if (jTextFieldFvParaName
== null) {
590 jTextFieldFvParaName
= new JTextField();
591 jTextFieldFvParaName
.setPreferredSize(new java
.awt
.Dimension(140,20));
592 jTextFieldFvParaName
.setEnabled(false);
594 return jTextFieldFvParaName
;
599 * This method initializes jButton2
601 * @return javax.swing.JButton
603 private JButton
getJButtonFvParaAdd() {
604 if (jButtonFvParaAdd
== null) {
605 jButtonFvParaAdd
= new JButton();
606 jButtonFvParaAdd
.setPreferredSize(new Dimension(80, 20));
607 jButtonFvParaAdd
.setEnabled(false);
608 jButtonFvParaAdd
.setText("Add");
609 jButtonFvParaAdd
.addActionListener(new AbstractAction() {
613 private static final long serialVersionUID
= 1L;
615 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
616 if (jTextFieldFvParaName
.getText().length() > 0){
617 String
[] row
= {jTextFieldFvParaName
.getText()};
618 fvImageNameTableModel
.addRow(row
);
623 return jButtonFvParaAdd
;
628 * This method initializes jScrollPane2
630 * @return javax.swing.JScrollPane
632 private JScrollPane
getJScrollPaneFvImageNames() {
633 if (jScrollPaneFvImageNames
== null) {
634 jScrollPaneFvImageNames
= new JScrollPane();
635 jScrollPaneFvImageNames
.setPreferredSize(new java
.awt
.Dimension(350,50));
636 jScrollPaneFvImageNames
.setViewportView(getJTableFvImageNames());
638 return jScrollPaneFvImageNames
;
643 * This method initializes jTable1
645 * @return javax.swing.JTable
647 private JTable
getJTableFvImageNames() {
648 if (jTableFvImageNames
== null) {
649 fvImageNameTableModel
= new DefaultTableModel();
650 jTableFvImageNames
= new JTable(fvImageNameTableModel
);
651 jTableFvImageNames
.setEnabled(false);
652 fvImageNameTableModel
.addColumn("FV Image Name");
654 return jTableFvImageNames
;
659 * This method initializes jButton3
661 * @return javax.swing.JButton
663 private JButton
getJButtonFvParaDel() {
664 if (jButtonFvParaDel
== null) {
665 jButtonFvParaDel
= new JButton();
666 jButtonFvParaDel
.setPreferredSize(new Dimension(80, 20));
667 jButtonFvParaDel
.setEnabled(false);
668 jButtonFvParaDel
.setText("Delete");
669 jButtonFvParaDel
.addActionListener(new AbstractAction() {
673 private static final long serialVersionUID
= 1L;
675 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
676 if (jTableFvImageNames
.getSelectedRow() >= 0){
678 fvImageNameTableModel
.removeRow(jTableFvImageNames
.getSelectedRow());
683 return jButtonFvParaDel
;
689 private JPanel
getJPanelFvImageOpts() {
692 if (jPanelFvImageOpts
== null) {
693 //ToDo add ButtonGroup for RadioButtons
694 jLabelFvImageOptValue
= new JLabel();
695 jLabelFvImageOptValue
.setEnabled(true);
696 jLabelFvImageOptValue
.setText("Value");
697 jLabelFvImageOptValue
.setPreferredSize(new Dimension(38, 20));
698 jLabelFvImageOptName
= new JLabel();
699 jLabelFvImageOptName
.setEnabled(true);
700 jLabelFvImageOptName
.setText("Name");
701 jLabelFvImageOptName
.setPreferredSize(new Dimension(38, 20));
702 jPanelFvImageOpts
= new JPanel();
703 jPanelFvImageOpts
.setPreferredSize(new java
.awt
.Dimension(480,150));
705 jPanelFvImageOpts
.setLayout(new FlowLayout());
707 jPanelFvImageOpts
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.LOWERED
));
708 jPanelFvImageOpts
.add(getJCheckBoxFvImageOpts(), null);
709 jPanelFvImageOpts
.add(jLabelFvImageOptName
, null);
710 jPanelFvImageOpts
.add(getJTextFieldFvImageOptName(), null);
711 jPanelFvImageOpts
.add(jLabelFvImageOptValue
, null);
712 jPanelFvImageOpts
.add(getJTextFieldFvImageOptValue(), null);
713 jPanelFvImageOpts
.add(getJScrollPane(), null);
714 jPanelFvImageOpts
.add(getJPanelFvImageOptsButtonGroup(), null);
715 jPanelFvImageOpts
.add(getJButtonAddFvImage(), null);
716 jPanelFvImageOpts
.add(getJButtonDelFvImage(), null);
717 jPanelFvImageOpts
.add(getJButtonUpdateFvImage(), null);
724 return jPanelFvImageOpts
;
729 * This method initializes jButton4
731 * @return javax.swing.JButton
733 private JButton
getJButtonAddFvImage() {
734 if (jButtonAddFvImage
== null) {
735 jButtonAddFvImage
= new JButton();
736 jButtonAddFvImage
.setPreferredSize(new java
.awt
.Dimension(120,20));
737 // jButton4.setEnabled(false);
738 jButtonAddFvImage
.setText("Add FV Image");
739 jButtonAddFvImage
.addActionListener(new AbstractAction() {
743 private static final long serialVersionUID
= 1L;
745 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
746 if (jTableFvInfo
.isEditing()) {
747 jTableFvInfo
.getCellEditor().stopCellEditing();
749 if (jTableFvImageOpts
.isEditing()) {
750 jTableFvImageOpts
.getCellEditor().stopCellEditing();
752 if (jTableFvImageNames
.getRowCount()== 0){
755 String imageName
= " ";
756 for (int i
= 0; i
< jTableFvImageNames
.getRowCount(); ++i
){
757 imageName
+= (String
)jTableFvImageNames
.getValueAt(i
, 0);
760 imageName
= imageName
.trim();
762 if (!jCheckBoxFvImageOpts
.isSelected() && jComboBoxFvParaType
.getSelectedIndex() != 0){
767 LinkedHashMap
<String
, String
> m
= null;
768 if (jCheckBoxFvImageOpts
.isSelected()) {
769 m
= new LinkedHashMap
<String
, String
>();
770 getOptionNameValue(m
);
772 ffc
.genFvImagesFvImage(imageName
.split(" "), jComboBoxFvParaType
.getSelectedItem()+"", m
);
773 docConsole
.setSaved(false);
774 Object
[] row
= {imageName
, jComboBoxFvParaType
.getSelectedItem()};
775 fvImageParaTableModel
.addRow(row
);
779 return jButtonAddFvImage
;
784 * This method initializes jScrollPane3
786 * @return javax.swing.JScrollPane
788 private JScrollPane
getJScrollPaneFvInfo() {
789 if (jScrollPaneFvInfo
== null) {
790 jScrollPaneFvInfo
= new JScrollPane();
791 jScrollPaneFvInfo
.setPreferredSize(new java
.awt
.Dimension(480,150));
792 jScrollPaneFvInfo
.setViewportView(getJTableFvInfo());
794 return jScrollPaneFvInfo
;
799 * This method initializes jTable2
801 * @return javax.swing.JTable
803 private JTable
getJTableFvInfo() {
804 if (jTableFvInfo
== null) {
805 fvImageParaTableModel
= new ImageParaTableModel();
806 jTableFvInfo
= new JTable(fvImageParaTableModel
);
807 fvImageParaTableModel
.addColumn("FvImageNames");
808 fvImageParaTableModel
.addColumn("Type");
811 TableColumn typeCol
= jTableFvInfo
.getColumnModel().getColumn(1);
812 JComboBox cb
= new JComboBox();
813 cb
.addItem("ValidImageNames");
814 cb
.addItem("Attributes");
815 cb
.addItem("Options");
816 cb
.addItem("Components");
817 typeCol
.setCellEditor(new DefaultCellEditor(cb
));
819 jTableFvInfo
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
820 jTableFvInfo
.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
821 public void valueChanged(ListSelectionEvent e
) {
822 if (e
.getValueIsAdjusting()){
825 ListSelectionModel lsm
= (ListSelectionModel
)e
.getSource();
826 if (lsm
.isSelectionEmpty()) {
830 int selectedRow
= lsm
.getMinSelectionIndex();
831 LinkedHashMap
<String
, String
> optionMap
= new LinkedHashMap
<String
, String
>();
832 ffc
.getFvImagesFvImageOptions(selectedRow
, optionMap
);
833 if (optionMap
.size() > 0){
834 fvOptionTableModel
.setRowCount(0);
835 Set
<String
> key
= optionMap
.keySet();
836 Iterator
<String
> i
= key
.iterator();
837 while (i
.hasNext()) {
839 String k
= (String
)i
.next();
840 String
[] row
= {k
, optionMap
.get(k
)};
842 fvOptionTableModel
.addRow(row
);
857 * This method initializes jButton6
859 * @return javax.swing.JButton
861 private JButton
getJButtonDelFvImage() {
862 if (jButtonDelFvImage
== null) {
863 jButtonDelFvImage
= new JButton();
864 jButtonDelFvImage
.setPreferredSize(new java
.awt
.Dimension(120,20));
865 // jButton6.setEnabled(false);
866 jButtonDelFvImage
.setText("Delete Row");
867 jButtonDelFvImage
.addActionListener(new AbstractAction() {
871 private static final long serialVersionUID
= 1L;
873 public void actionPerformed(ActionEvent arg0
) {
874 // TODO Auto-generated method stub
875 if (jTableFvInfo
.getSelectedRow() >= 0 ) {
876 ffc
.removeFvImagesFvImage(jTableFvInfo
.getSelectedRow());
877 fvImageParaTableModel
.removeRow(jTableFvInfo
.getSelectedRow());
878 docConsole
.setSaved(false);
884 return jButtonDelFvImage
;
889 * This method initializes jCheckBox3
891 * @return javax.swing.JCheckBox
893 private JCheckBox
getJCheckBoxFvImageOpts() {
894 if (jCheckBoxFvImageOpts
== null) {
895 jCheckBoxFvImageOpts
= new JCheckBox();
896 jCheckBoxFvImageOpts
.setText("FV Image Options");
897 jCheckBoxFvImageOpts
.addItemListener(new ItemListener(){
899 public void itemStateChanged(ItemEvent arg0
) {
900 // TODO Auto-generated method stub
901 // boolean selected = jCheckBox3.isSelected();
903 if (!jCheckBoxFvImagePara
.isSelected() || jComboBoxFvParaType
.getSelectedIndex() == 0) {
907 // jLabel5.setEnabled(selected);
908 // jTextField4.setEnabled(selected);
909 // jLabel6.setEnabled(selected);
910 // jTextField5.setEnabled(selected);
911 // jButton7.setEnabled(selected);
912 // jButton8.setEnabled(selected);
918 return jCheckBoxFvImageOpts
;
923 * This method initializes jPanel6
925 * @return javax.swing.JPanel
927 private JPanel
getJPanelFvImagePara() {
928 if (jPanelFvImagePara
== null) {
929 StarLabel starLabel
= new StarLabel();
930 starLabel
.setVisible(false);
931 jPanelFvImagePara
= new JPanel();
932 jPanelFvImagePara
.setPreferredSize(new java
.awt
.Dimension(480,120));
933 jPanelFvImagePara
.setBorder(javax
.swing
.BorderFactory
.createEtchedBorder(javax
.swing
.border
.EtchedBorder
.RAISED
));
934 jPanelFvImagePara
.add(getJCheckBoxFvImagePara(), null);
935 jPanelFvImagePara
.add(jLabelFvParaType
, null);
936 jPanelFvImagePara
.add(getJComboBoxFvParaType(), null);
937 jPanelFvImagePara
.add(new StarLabel(), null);
938 jPanelFvImagePara
.add(jLabelFvImageNames
, null);
939 jPanelFvImagePara
.add(jLabelFvParaName
, null);
940 jPanelFvImagePara
.add(getJTextFieldFvParaName(), null);
941 jPanelFvImagePara
.add(getJButtonFvParaAdd(), null);
942 jPanelFvImagePara
.add(getJScrollPaneFvImageNames(), null);
943 jPanelFvImagePara
.add(getJButtonFvParaDel(), null);
945 return jPanelFvImagePara
;
949 * This method initializes jPanel7
951 * @return javax.swing.JPanel
953 private JPanel
getJPanelFdf() {
954 if (jPanelFdf
== null) {
955 FlowLayout flowLayout1
= new FlowLayout();
956 flowLayout1
.setAlignment(FlowLayout
.LEFT
);
957 jPanelFdf
= new JPanel();
958 jPanelFdf
.setLayout(flowLayout1
);
959 jPanelFdf
.add(getJCheckBoxFdf(), null);
960 jPanelFdf
.add(getJTextFieldFdf(), null);
961 jPanelFdf
.add(getJButtonFdfBrowse(), null);
962 jPanelFdf
.addComponentListener(new ComponentAdapter(){
963 public void componentShown(ComponentEvent e
) {
964 if (ffc
.getFlashDefinitionFile() != null) {
965 jTextFieldFdf
.setText(ffc
.getFlashDefinitionFile());
968 public void componentHidden(ComponentEvent e
) {
969 if (jCheckBoxFdf
.isSelected()) {
970 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
979 * This method initializes jCheckBox
981 * @return javax.swing.JCheckBox
983 private JCheckBox
getJCheckBoxFdf() {
984 if (jCheckBoxFdf
== null) {
985 jCheckBoxFdf
= new JCheckBox();
986 jCheckBoxFdf
.setText("Flash Definition File");
987 jCheckBoxFdf
.addItemListener(new ItemListener() {
989 public void itemStateChanged(ItemEvent arg0
) {
990 // TODO Auto-generated method stub
991 if (jCheckBoxFdf
.isSelected()){
992 jTextFieldFdf
.setEnabled(true);
993 jButtonFdfBrowse
.setEnabled(true);
997 jTextFieldFdf
.setEnabled(false);
998 jButtonFdfBrowse
.setEnabled(false);
1003 return jCheckBoxFdf
;
1007 * This method initializes jTextField3
1009 * @return javax.swing.JTextField
1011 private JTextField
getJTextFieldFdf() {
1012 if (jTextFieldFdf
== null) {
1013 jTextFieldFdf
= new JTextField();
1014 jTextFieldFdf
.setEnabled(false);
1015 jTextFieldFdf
.setPreferredSize(new Dimension(300, 20));
1016 jTextFieldFdf
.addFocusListener(new java
.awt
.event
.FocusAdapter() {
1017 public void focusLost(java
.awt
.event
.FocusEvent e
) {
1018 ffc
.genFlashDefinitionFile(jTextFieldFdf
.getText());
1022 return jTextFieldFdf
;
1026 * This method initializes jButton5
1028 * @return javax.swing.JButton
1030 private JButton
getJButtonFdfBrowse() {
1031 if (jButtonFdfBrowse
== null) {
1032 jButtonFdfBrowse
= new JButton();
1033 jButtonFdfBrowse
.setEnabled(false);
1034 jButtonFdfBrowse
.setText("Browse");
1035 jButtonFdfBrowse
.setPreferredSize(new Dimension(78, 20));
1036 jButtonFdfBrowse
.addActionListener(new AbstractAction(){
1040 private static final long serialVersionUID
= 1L;
1042 public void actionPerformed(ActionEvent e
) {
1043 // TODO Auto-generated method stub
1044 String wsDir
= System
.getenv("WORKSPACE");
1045 JFileChooser chooser
= new JFileChooser(wsDir
);
1046 chooser
.setMultiSelectionEnabled(false);
1047 chooser
.setFileSelectionMode(JFileChooser
.FILES_AND_DIRECTORIES
);
1048 int retval
= chooser
.showOpenDialog(frame
);
1049 if (retval
== JFileChooser
.APPROVE_OPTION
) {
1051 File theFile
= chooser
.getSelectedFile();
1052 String filePath
= theFile
.getPath();
1053 if (!filePath
.startsWith(wsDir
)) {
1054 JOptionPane
.showMessageDialog(frame
, "You can only select files in current WORKSPACE.");
1057 jTextFieldFdf
.setText(filePath
.substring(wsDir
.length() + 1).replace('\\', '/'));
1063 return jButtonFdfBrowse
;
1067 * This method initializes jTextField4
1069 * @return javax.swing.JTextField
1071 private JTextField
getJTextFieldFvImageOptName() {
1072 if (jTextFieldFvImageOptName
== null) {
1073 jTextFieldFvImageOptName
= new JTextField();
1074 jTextFieldFvImageOptName
.setEnabled(true);
1075 jTextFieldFvImageOptName
.setPreferredSize(new Dimension(100, 20));
1077 return jTextFieldFvImageOptName
;
1081 * This method initializes jTextField5
1083 * @return javax.swing.JTextField
1085 private JTextField
getJTextFieldFvImageOptValue() {
1086 if (jTextFieldFvImageOptValue
== null) {
1087 jTextFieldFvImageOptValue
= new JTextField();
1088 jTextFieldFvImageOptValue
.setEnabled(true);
1089 jTextFieldFvImageOptValue
.setPreferredSize(new Dimension(100, 20));
1091 return jTextFieldFvImageOptValue
;
1095 * This method initializes jPanel8
1097 * @return javax.swing.JPanel
1099 private JPanel
getJPanelFvImageOptsButtonGroup() {
1100 if (jPanelFvImageOptsButtonGroup
== null) {
1101 jPanelFvImageOptsButtonGroup
= new JPanel();
1102 jPanelFvImageOptsButtonGroup
.setPreferredSize(new Dimension(80, 55));
1103 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptAdd(), null);
1104 jPanelFvImageOptsButtonGroup
.add(getJButtonFvImageOptDel(), null);
1106 return jPanelFvImageOptsButtonGroup
;
1110 * This method initializes jButton7
1112 * @return javax.swing.JButton
1114 private JButton
getJButtonFvImageOptAdd() {
1115 if (jButtonFvImageOptAdd
== null) {
1116 jButtonFvImageOptAdd
= new JButton();
1117 jButtonFvImageOptAdd
.setEnabled(true);
1118 jButtonFvImageOptAdd
.setText("Add");
1119 jButtonFvImageOptAdd
.setPreferredSize(new Dimension(80, 20));
1120 jButtonFvImageOptAdd
.addActionListener(new AbstractAction() {
1124 private static final long serialVersionUID
= 1L;
1126 public void actionPerformed(ActionEvent e
) {
1127 if (jTextFieldFvImageOptName
.getText().length() > 0 && jTextFieldFvImageOptValue
.getText().length() > 0){
1128 String
[] row
= {jTextFieldFvImageOptName
.getText(), jTextFieldFvImageOptValue
.getText()};
1129 fvOptionTableModel
.addRow(row
);
1134 return jButtonFvImageOptAdd
;
1138 * This method initializes jButton8
1140 * @return javax.swing.JButton
1142 private JButton
getJButtonFvImageOptDel() {
1143 if (jButtonFvImageOptDel
== null) {
1144 jButtonFvImageOptDel
= new JButton();
1145 jButtonFvImageOptDel
.setEnabled(true);
1146 jButtonFvImageOptDel
.setText("Delete");
1147 jButtonFvImageOptDel
.setPreferredSize(new Dimension(80, 20));
1148 jButtonFvImageOptDel
.addActionListener(new AbstractAction() {
1152 private static final long serialVersionUID
= 1L;
1154 public void actionPerformed(ActionEvent e
) {
1155 if (jTableFvImageOpts
.getSelectedRow() >= 0){
1156 fvOptionTableModel
.removeRow(jTableFvProp
.getSelectedRow());
1161 return jButtonFvImageOptDel
;
1165 * This method initializes jScrollPane
1167 * @return javax.swing.JScrollPane
1169 private JScrollPane
getJScrollPane() {
1170 if (jScrollPane
== null) {
1171 jScrollPane
= new JScrollPane();
1172 jScrollPane
.setPreferredSize(new java
.awt
.Dimension(350,80));
1173 jScrollPane
.setViewportView(getJTableFvImageOpts());
1179 * This method initializes jTable3
1181 * @return javax.swing.JTable
1183 private JTable
getJTableFvImageOpts() {
1184 if (jTableFvImageOpts
== null) {
1185 fvOptionTableModel
= new DefaultTableModel();
1186 fvOptionTableModel
.addColumn("Name");
1187 fvOptionTableModel
.addColumn("Value");
1188 jTableFvImageOpts
= new JTable(fvOptionTableModel
);
1190 jTableFvImageOpts
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
1191 jTableFvImageOpts
.setRowHeight(20);
1194 return jTableFvImageOpts
;
1198 * This method initializes jButton9
1200 * @return javax.swing.JButton
1202 private JButton
getJButtonUpdateFvImage() {
1203 if (jButtonUpdateFvImage
== null) {
1204 jButtonUpdateFvImage
= new JButton();
1205 jButtonUpdateFvImage
.setPreferredSize(new Dimension(120, 20));
1206 jButtonUpdateFvImage
.setActionCommand("Update");
1207 jButtonUpdateFvImage
.setText("Update FV");
1208 jButtonUpdateFvImage
.addActionListener(new java
.awt
.event
.ActionListener() {
1209 public void actionPerformed(java
.awt
.event
.ActionEvent e
) {
1210 int row
= jTableFvInfo
.getSelectedRow();
1211 if (jTableFvInfo
.isEditing()) {
1212 jTableFvInfo
.getCellEditor().stopCellEditing();
1214 if (jTableFvImageOpts
.isEditing()) {
1215 jTableFvImageOpts
.getCellEditor().stopCellEditing();
1218 //ToDo Check data validity before update
1219 String name
= fvImageParaTableModel
.getValueAt(row
, 0) + "";
1220 String type
= fvImageParaTableModel
.getValueAt(row
, 1) + "";
1222 LinkedHashMap
<String
, String
> lhm
= new LinkedHashMap
<String
, String
>();
1223 getOptionNameValue(lhm
);
1225 docConsole
.setSaved(false);
1226 ffc
.updateFvImagesFvImage(row
, name
.split(" "), type
, lhm
);
1231 return jButtonUpdateFvImage
;
1237 public static void main(String
[] args
) {
1238 // TODO Auto-generated method stub
1239 new FpdFlash().setVisible(true);
1243 * This method initializes this
1247 private void initialize() {
1248 this.setSize(518, 650);
1249 this.setDefaultCloseOperation(javax
.swing
.WindowConstants
.DISPOSE_ON_CLOSE
);
1250 this.setContentPane(getJContentPane());
1251 this.setTitle("FPD Flash Definitions");
1252 this.addInternalFrameListener(new InternalFrameAdapter(){
1253 public void internalFrameDeactivated(InternalFrameEvent e
){
1254 if (jTableFvProp
.isEditing()) {
1255 jTableFvProp
.getCellEditor().stopCellEditing();
1257 if (jTableFvImageNames
.isEditing()) {
1258 jTableFvImageNames
.getCellEditor().stopCellEditing();
1260 if (jTableFvInfo
.isEditing()) {
1261 jTableFvInfo
.getCellEditor().stopCellEditing();
1267 private void init(FpdFileContents ffc
) {
1268 if (ffc
.getFvImagesFvImageCount() == 0) {
1271 String
[][] saa
= new String
[ffc
.getFvImagesFvImageCount()][2];
1272 // ArrayList<LinkedHashMap<String, String>> options = new ArrayList<LinkedHashMap<String, String>>(ffc.getFvImagesFvImageCount());
1274 // for (int j = 0; j < ffc.getFvImagesFvImageCount(); ++j){
1275 // options.add(new LinkedHashMap<String, String>());
1277 ffc
.getFvImagesFvImages(saa
);
1281 while (i
< saa
.length
) {
1283 fvImageParaTableModel
.addRow(saa
[i
]);
1287 // String fdfFile = ffc.getFlashDefinitionFile();
1288 // if (fdfFile != null) {
1289 // jTextField3.setText(fdfFile);
1293 private void getOptionNameValue(Map
<String
, String
> m
){
1294 for (int i
= 0; i
< jTableFvImageOpts
.getRowCount(); ++i
) {
1295 m
.put(fvOptionTableModel
.getValueAt(i
, 0)+"", fvOptionTableModel
.getValueAt(i
, 1)+"");
1299 * This method initializes jContentPane
1301 * @return javax.swing.JPanel
1303 private JPanel
getJContentPane() {
1304 if (jContentPane
== null) {
1305 jContentPane
= new JPanel();
1306 jContentPane
.setLayout(new BorderLayout());
1307 jContentPane
.add(getJPanelContentEast(), java
.awt
.BorderLayout
.EAST
);
1308 jContentPane
.add(getJPanelContentSouth(), java
.awt
.BorderLayout
.SOUTH
);
1309 jContentPane
.add(getJPanelContentWest(), java
.awt
.BorderLayout
.WEST
);
1310 jContentPane
.add(getJPanelContentNorth(), java
.awt
.BorderLayout
.NORTH
);
1311 jContentPane
.add(getJTabbedPane(), java
.awt
.BorderLayout
.CENTER
);
1313 return jContentPane
;
1316 } // @jve:decl-index=0:visual-constraint="10,10"
1318 class ImageParaTableModel
extends DefaultTableModel
{
1320 private static final long serialVersionUID
= 1L;
1322 public boolean isCellEditable(int row
, int col
) {
1323 if (getValueAt(row
, 1).equals("ImageName") && col
>=1) {