]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
Update LOG process.
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / platform / ui / FpdFlash.java
CommitLineData
a13899c5 1/** @file\r
2 Java class FpdFlash is GUI for Flash element operation in SPD file.\r
3 \r
4Copyright (c) 2006, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12**/\r
13package org.tianocore.frameworkwizard.platform.ui;\r
14\r
15import java.awt.BorderLayout;\r
16import javax.swing.JPanel;\r
17\r
18import javax.swing.AbstractAction;\r
a13899c5 19import javax.swing.JFileChooser;\r
20import javax.swing.JFrame;\r
908b1c05 21import javax.swing.JOptionPane;\r
a13899c5 22import javax.swing.JTabbedPane;\r
23import javax.swing.JButton;\r
24import javax.swing.ListSelectionModel;\r
25\r
26import org.tianocore.PlatformSurfaceAreaDocument;\r
98c20797 27import org.tianocore.frameworkwizard.common.DataValidation;\r
61919f8c 28import org.tianocore.frameworkwizard.common.GlobalData;\r
d6d24759 29import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
a13899c5 30import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
31import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
61919f8c 32import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
33import org.tianocore.frameworkwizard.platform.ui.FpdFrameworkModules;\r
34import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
a13899c5 35\r
36import java.awt.FlowLayout;\r
37import java.awt.event.ActionEvent;\r
2b70a636 38import java.awt.event.ComponentAdapter;\r
39import java.awt.event.ComponentEvent;\r
a13899c5 40import java.awt.event.ItemEvent;\r
41import java.awt.event.ItemListener;\r
3658f95e 42import java.io.BufferedReader;\r
a13899c5 43import java.io.File;\r
3658f95e 44import java.io.FileReader;\r
2b70a636 45import java.util.ArrayList;\r
46import java.util.HashMap;\r
a13899c5 47import java.util.Iterator;\r
48import java.util.LinkedHashMap;\r
49import java.util.Map;\r
50import java.util.Set;\r
3658f95e 51import java.util.Vector;\r
a13899c5 52\r
53import javax.swing.JCheckBox;\r
54import javax.swing.JTextField;\r
55import java.awt.GridLayout;\r
56import javax.swing.JLabel;\r
57import javax.swing.JScrollPane;\r
58import javax.swing.JTable;\r
44053733 59import javax.swing.event.InternalFrameAdapter;\r
60import javax.swing.event.InternalFrameEvent;\r
a13899c5 61import javax.swing.event.ListSelectionEvent;\r
62import javax.swing.event.ListSelectionListener;\r
63import javax.swing.event.TableModelEvent;\r
64import javax.swing.event.TableModelListener;\r
65import javax.swing.table.DefaultTableModel;\r
a13899c5 66import javax.swing.table.TableModel;\r
67import javax.swing.JComboBox;\r
68import java.awt.Dimension;\r
3658f95e 69import javax.swing.JSplitPane;\r
a13899c5 70\r
71public class FpdFlash extends IInternalFrame {\r
72\r
44053733 73 /**\r
74 * \r
75 */\r
76 private static final long serialVersionUID = 1L;\r
eb8ea829 77 private final int startIndexOfDynamicTab = 2;\r
a13899c5 78 static JFrame frame;\r
79 private JPanel jContentPane = null;\r
4da2e625 80 private JPanel jPanelContentEast = null;\r
81 private JPanel jPanelContentSouth = null;\r
82 private JPanel jPanelContentWest = null;\r
83 private JPanel jPanelContentNorth = null;\r
a13899c5 84 private JTabbedPane jTabbedPane = null;\r
85 private JPanel jPanelFvImages = null;\r
a13899c5 86 private JPanel jPanelFvImageN = null;\r
a13899c5 87 private JPanel jPanelFvImageS = null;\r
4da2e625 88 private JCheckBox jCheckBoxFvProperty = null;\r
89 private JLabel jLabelFvPropName = null;\r
90 private JTextField jTextFieldFvPropName = null;\r
91 private JLabel jLabelFvPropValue = null;\r
92 private JTextField jTextFieldFvPropValue = null;\r
93 private JButton jButtonFvPropAdd = null;\r
94 private JScrollPane jScrollPaneFvProp = null;\r
95 private JTable jTableFvProp = null;\r
96 private JPanel jPanelFvPropButtonGroup = null;\r
97 private JButton jButtonFvPropDel = null;\r
a13899c5 98 private DefaultTableModel fvPropertyTableModel = null;\r
99 private DefaultTableModel fvImageNameTableModel = null;\r
100 private ImageParaTableModel fvImageParaTableModel = null;\r
ae0d4fd2 101 private DefaultTableModel fvOptionTableModel = null;\r
a13899c5 102 private JPanel jPanelFvImageC = null;\r
4da2e625 103 private JLabel jLabelFvParaType = null;\r
104 private JComboBox jComboBoxFvParaType = null;\r
105 private JLabel jLabelFvImageNames = null;\r
106 private JLabel jLabelFvParaName = null;\r
107 private JTextField jTextFieldFvParaName = null;\r
54aa8673 108 private JButton jButtonFvNameAdd = null;\r
4da2e625 109 private JScrollPane jScrollPaneFvImageNames = null;\r
110 private JTable jTableFvImageNames = null;\r
54aa8673 111 private JButton jButtonFvNameDel = null;\r
4da2e625 112 private JPanel jPanelFvImageOpts = null;\r
113 private JButton jButtonAddFvImage = null;\r
114 private JScrollPane jScrollPaneFvInfo = null;\r
115 private JTable jTableFvInfo = null;\r
116 private JButton jButtonDelFvImage = null;\r
4da2e625 117 private JPanel jPanelFvImagePara = null;\r
d6d24759 118 private OpeningPlatformType docConsole = null;\r
a13899c5 119 private FpdFileContents ffc = null;\r
4da2e625 120 private JPanel jPanelFdf = null;\r
121 private JCheckBox jCheckBoxFdf = null;\r
122 private JTextField jTextFieldFdf = null;\r
123 private JButton jButtonFdfBrowse = null;\r
124 private JLabel jLabelFvImageOptName = null;\r
125 private JTextField jTextFieldFvImageOptName = null;\r
126 private JLabel jLabelFvImageOptValue = null;\r
127 private JTextField jTextFieldFvImageOptValue = null;\r
128 private JPanel jPanelFvImageOptsButtonGroup = null;\r
129 private JButton jButtonFvImageOptAdd = null;\r
130 private JButton jButtonFvImageOptDel = null;\r
ae0d4fd2 131 private JScrollPane jScrollPane = null;\r
4da2e625 132 private JTable jTableFvImageOpts = null;\r
133 private JButton jButtonUpdateFvImage = null;\r
3658f95e 134 private JPanel jPanelFdfN = null;\r
135 private JPanel jPanelFdfS = null;\r
136 private JSplitPane jSplitPaneFdfC = null;\r
137 private JPanel jPanelFdfCTop = null;\r
138 private JPanel jPanelFdfCBottom = null;\r
139 private JPanel jPanelFdfCTopN = null;\r
140 private JPanel jPanelFdfCTopS = null;\r
141 private JPanel jPanelFdfCTopC = null;\r
142 private JPanel jPanelFdfCBottomN = null;\r
143 private JPanel jPanelFdfCBottomC = null;\r
144 private JLabel jLabelFvInFdf = null;\r
145 private JLabel jLabelFvAdditional = null;\r
146 private JScrollPane jScrollPaneFvInFdf = null;\r
147 private JTable jTableFvInFdf = null;\r
148 private NonEditableTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
149 private JButton jButtonFvInFdfOptions = null;\r
150 private JScrollPane jScrollPaneFvAdditional = null;\r
151 private JTable jTableFvAdditional = null;\r
98c20797 152 private DefaultTableModel fvAdditionalTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
3658f95e 153 private JButton jButtonAddFv = null;\r
154 private JButton jButtonDelFv = null;\r
155 private JButton jButtonAddFvOptions = null;\r
eb8ea829 156 private int tabIndexForFv = -1;\r
157 private int selectedRowInFvAdditionalTable = -1;\r
158 private String oldFvName = null;\r
98c20797 159 private Vector<String> vBlockSize = new Vector<String>();\r
701d95b3 160 private String determinedFvBlockSize = null;\r
72426064 161 private final String defaultBlkSize = "0x10000";\r
701d95b3 162 private String erasePolarity = "";\r
98c20797 163 boolean memModified = false;\r
b411fc1f 164 private FvOptsTableModel fvInFdfOptTableModel = null;\r
165 private FvOptsTableModel fvAdditionalOptTableModel = null;\r
72426064 166 private boolean sizeFromOptionDlg = false;\r
167 private boolean fileFromOptionDlg = false;\r
168 private JLabel jLabelOptions = null;\r
169 private JPanel jPanelBgFvName = null;\r
170 private JPanel jPanelBgFvImage = null;\r
171 private JPanel jPanelW = null;\r
54aa8673 172 private String oldFvNameInFvImage = "";\r
3658f95e 173 \r
a13899c5 174 public FpdFlash() {\r
175 super();\r
176 // TODO Auto-generated constructor stub\r
177\r
178 initialize();\r
179 this.setBounds(new java.awt.Rectangle(0, 0, 500, 370));\r
180 this.setVisible(true);\r
181 }\r
182\r
183 public FpdFlash(PlatformSurfaceAreaDocument.PlatformSurfaceArea fpd){\r
184 this();\r
185 ffc = new FpdFileContents(fpd);\r
186 init(ffc);\r
187 }\r
188 \r
d6d24759 189 public FpdFlash(OpeningPlatformType opt) {\r
190 this(opt.getXmlFpd());\r
191 docConsole = opt;\r
701d95b3 192 if (memModified) {\r
193 docConsole.setSaved(false);\r
194 JOptionPane.showMessageDialog(frame, "Platform Synced with FDF file.");\r
195 memModified = false;\r
196 }\r
d6d24759 197 }\r
198 \r
a13899c5 199 /**\r
200 * This method initializes jPanel \r
201 * \r
202 * @return javax.swing.JPanel \r
203 */\r
4da2e625 204 private JPanel getJPanelContentEast() {\r
205 if (jPanelContentEast == null) {\r
72426064 206 FlowLayout flowLayout7 = new FlowLayout();\r
207 flowLayout7.setVgap(50);\r
4da2e625 208 jPanelContentEast = new JPanel();\r
72426064 209 jPanelContentEast.setLayout(flowLayout7);\r
a13899c5 210 }\r
4da2e625 211 return jPanelContentEast;\r
a13899c5 212 }\r
213\r
214 /**\r
215 * This method initializes jPanel1 \r
216 * \r
217 * @return javax.swing.JPanel \r
218 */\r
4da2e625 219 private JPanel getJPanelContentSouth() {\r
220 if (jPanelContentSouth == null) {\r
a13899c5 221 FlowLayout flowLayout = new FlowLayout();\r
222 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
223 flowLayout.setHgap(15);\r
4da2e625 224 jPanelContentSouth = new JPanel();\r
225 jPanelContentSouth.setLayout(flowLayout);\r
226 jPanelContentSouth.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);\r
a13899c5 227 }\r
4da2e625 228 return jPanelContentSouth;\r
a13899c5 229 }\r
230\r
231 /**\r
232 * This method initializes jPanel2 \r
233 * \r
234 * @return javax.swing.JPanel \r
235 */\r
4da2e625 236 private JPanel getJPanelContentWest() {\r
237 if (jPanelContentWest == null) {\r
238 jPanelContentWest = new JPanel();\r
a13899c5 239 }\r
4da2e625 240 return jPanelContentWest;\r
a13899c5 241 }\r
242\r
243 /**\r
244 * This method initializes jPanel3 \r
245 * \r
246 * @return javax.swing.JPanel \r
247 */\r
4da2e625 248 private JPanel getJPanelContentNorth() {\r
249 if (jPanelContentNorth == null) {\r
250 jPanelContentNorth = new JPanel();\r
a13899c5 251 }\r
4da2e625 252 return jPanelContentNorth;\r
a13899c5 253 }\r
254\r
255 /**\r
256 * This method initializes jTabbedPane \r
257 * \r
258 * @return javax.swing.JTabbedPane \r
259 */\r
260 private JTabbedPane getJTabbedPane() {\r
261 if (jTabbedPane == null) {\r
262 jTabbedPane = new JTabbedPane();\r
3658f95e 263 jTabbedPane.addTab("General", null, getJPanelFdf(), null);\r
61919f8c 264 jTabbedPane.addTab("Advanced", null, getJPanelFvImages(), null);\r
a13899c5 265 \r
266 }\r
267 return jTabbedPane;\r
268 }\r
269\r
270 /**\r
271 * This method initializes jPanelFvImages \r
272 * \r
273 * @return javax.swing.JPanel \r
274 */\r
275 private JPanel getJPanelFvImages() {\r
276 if (jPanelFvImages == null) {\r
277 jPanelFvImages = new JPanel();\r
278 jPanelFvImages.setLayout(new BorderLayout());\r
72426064 279 jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.NORTH);\r
280 jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.SOUTH);\r
a13899c5 281 jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER);\r
72426064 282 jPanelFvImages.add(getJPanelW(), java.awt.BorderLayout.EAST);\r
eb8ea829 283 jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() {\r
284 public void componentShown(java.awt.event.ComponentEvent e) {\r
72426064 285// fvImageParaTableModel.setRowCount(0);\r
286// fvPropertyTableModel.setRowCount(0);\r
eb8ea829 287 \r
98c20797 288 \r
eb8ea829 289 }\r
290 });\r
a13899c5 291 \r
292 }\r
293 return jPanelFvImages;\r
294 }\r
295\r
a13899c5 296 /**\r
297 * This method initializes jPanelFvImageN \r
298 * \r
299 * @return javax.swing.JPanel \r
300 */\r
301 private JPanel getJPanelFvImageN() {\r
302 if (jPanelFvImageN == null) {\r
4da2e625 303 jLabelFvPropValue = new JLabel();\r
304 jLabelFvPropValue.setText("Value");\r
305 jLabelFvPropValue.setEnabled(false);\r
306 jLabelFvPropValue.setPreferredSize(new java.awt.Dimension(38,20));\r
307 jLabelFvPropName = new JLabel();\r
308 jLabelFvPropName.setText("Name");\r
309 jLabelFvPropName.setEnabled(false);\r
310 jLabelFvPropName.setPreferredSize(new java.awt.Dimension(38,20));\r
a13899c5 311 FlowLayout flowLayout2 = new FlowLayout();\r
3658f95e 312 flowLayout2.setAlignment(java.awt.FlowLayout.LEFT);\r
72426064 313 flowLayout2.setHgap(5);\r
a13899c5 314 jPanelFvImageN = new JPanel();\r
72426064 315 jPanelFvImageN.setPreferredSize(new java.awt.Dimension(576,130));\r
a13899c5 316 jPanelFvImageN.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));\r
317 jPanelFvImageN.setLayout(flowLayout2);\r
4da2e625 318 jPanelFvImageN.add(getJCheckBoxFvProperty(), null);\r
319 jPanelFvImageN.add(jLabelFvPropName, null);\r
320 jPanelFvImageN.add(getJTextFieldFvPropName(), null);\r
321 jPanelFvImageN.add(jLabelFvPropValue, null);\r
322 jPanelFvImageN.add(getJTextFieldFvPropValue(), null);\r
323 jPanelFvImageN.add(getJScrollPaneFvProp(), null);\r
324 jPanelFvImageN.add(getJPanelFvPropButtonGroup(), null);\r
a13899c5 325 }\r
326 return jPanelFvImageN;\r
327 }\r
328\r
a13899c5 329 /**\r
330 * This method initializes jPanelFvImageS \r
331 * \r
332 * @return javax.swing.JPanel \r
333 */\r
334 private JPanel getJPanelFvImageS() {\r
335 if (jPanelFvImageS == null) {\r
336 GridLayout gridLayout2 = new GridLayout();\r
337 gridLayout2.setRows(1);\r
338 jPanelFvImageS = new JPanel();\r
72426064 339 jPanelFvImageS.setPreferredSize(new java.awt.Dimension(480,150));\r
a13899c5 340 jPanelFvImageS.setLayout(gridLayout2);\r
4da2e625 341 jPanelFvImageS.add(getJScrollPaneFvInfo(), null);\r
a13899c5 342 }\r
343 return jPanelFvImageS;\r
344 }\r
345\r
346\r
347 /**\r
348 * This method initializes jCheckBox1 \r
349 * \r
350 * @return javax.swing.JCheckBox \r
351 */\r
4da2e625 352 private JCheckBox getJCheckBoxFvProperty() {\r
353 if (jCheckBoxFvProperty == null) {\r
354 jCheckBoxFvProperty = new JCheckBox();\r
3658f95e 355 jCheckBoxFvProperty.setText("Global FV Variables");\r
4da2e625 356 jCheckBoxFvProperty.addItemListener(new ItemListener(){\r
a13899c5 357\r
358 public void itemStateChanged(ItemEvent arg0) {\r
359 // TODO Auto-generated method stub\r
4da2e625 360 boolean seleted = jCheckBoxFvProperty.isSelected();\r
a13899c5 361 \r
4da2e625 362 jLabelFvPropName.setEnabled(seleted);\r
363 jTextFieldFvPropName.setEnabled(seleted);\r
364 jLabelFvPropValue.setEnabled(seleted);\r
365 jTextFieldFvPropValue.setEnabled(seleted);\r
366 jTableFvProp.setEnabled(seleted);\r
367 jButtonFvPropAdd.setEnabled(seleted);\r
368 jButtonFvPropDel.setEnabled(seleted);\r
a13899c5 369 \r
370 \r
371 }\r
372 \r
373 });\r
374 }\r
4da2e625 375 return jCheckBoxFvProperty;\r
a13899c5 376 }\r
377\r
378\r
379 /**\r
380 * This method initializes jTextField \r
381 * \r
382 * @return javax.swing.JTextField \r
383 */\r
4da2e625 384 private JTextField getJTextFieldFvPropName() {\r
385 if (jTextFieldFvPropName == null) {\r
386 jTextFieldFvPropName = new JTextField();\r
387 jTextFieldFvPropName.setPreferredSize(new java.awt.Dimension(100,20));\r
388 jTextFieldFvPropName.setEnabled(false);\r
a13899c5 389 }\r
4da2e625 390 return jTextFieldFvPropName;\r
a13899c5 391 }\r
392\r
393\r
394 /**\r
395 * This method initializes jTextField1 \r
396 * \r
397 * @return javax.swing.JTextField \r
398 */\r
4da2e625 399 private JTextField getJTextFieldFvPropValue() {\r
400 if (jTextFieldFvPropValue == null) {\r
401 jTextFieldFvPropValue = new JTextField();\r
402 jTextFieldFvPropValue.setPreferredSize(new java.awt.Dimension(100,20));\r
403 jTextFieldFvPropValue.setEnabled(false);\r
a13899c5 404 }\r
4da2e625 405 return jTextFieldFvPropValue;\r
a13899c5 406 }\r
407\r
408\r
409 /**\r
410 * This method initializes jButton \r
411 * \r
412 * @return javax.swing.JButton \r
413 */\r
4da2e625 414 private JButton getJButtonFvPropAdd() {\r
415 if (jButtonFvPropAdd == null) {\r
416 jButtonFvPropAdd = new JButton();\r
417 jButtonFvPropAdd.setPreferredSize(new java.awt.Dimension(80,20));\r
418 jButtonFvPropAdd.setEnabled(false);\r
419 jButtonFvPropAdd.setText("Add");\r
420 jButtonFvPropAdd.addActionListener(new AbstractAction() {\r
44053733 421 /**\r
422 * \r
423 */\r
424 private static final long serialVersionUID = 1L;\r
425\r
a13899c5 426 public void actionPerformed(ActionEvent e) {\r
4da2e625 427 if (jTextFieldFvPropName.getText().length() > 0 && jTextFieldFvPropValue.getText().length() > 0){\r
428 String[] row = {jTextFieldFvPropName.getText(), jTextFieldFvPropValue.getText()}; \r
a13899c5 429 fvPropertyTableModel.addRow(row);\r
d6d24759 430 docConsole.setSaved(false);\r
a13899c5 431 ffc.genFvImagesNameValue(row[0], row[1]);\r
432 }\r
433 }\r
434 });\r
435 }\r
4da2e625 436 return jButtonFvPropAdd;\r
a13899c5 437 }\r
438\r
439\r
440 /**\r
441 * This method initializes jScrollPane1 \r
442 * \r
443 * @return javax.swing.JScrollPane \r
444 */\r
4da2e625 445 private JScrollPane getJScrollPaneFvProp() {\r
446 if (jScrollPaneFvProp == null) {\r
447 jScrollPaneFvProp = new JScrollPane();\r
72426064 448 jScrollPaneFvProp.setPreferredSize(new java.awt.Dimension(350,100));\r
4da2e625 449 jScrollPaneFvProp.setViewportView(getJTableFvProp());\r
a13899c5 450 }\r
4da2e625 451 return jScrollPaneFvProp;\r
a13899c5 452 }\r
453\r
454\r
455 /**\r
456 * This method initializes jTable \r
457 * \r
458 * @return javax.swing.JTable \r
459 */\r
4da2e625 460 private JTable getJTableFvProp() {\r
461 if (jTableFvProp == null) {\r
a13899c5 462 fvPropertyTableModel = new DefaultTableModel();\r
4da2e625 463 jTableFvProp = new JTable(fvPropertyTableModel);\r
a13899c5 464 fvPropertyTableModel.addColumn("Name");\r
465 fvPropertyTableModel.addColumn("Value");\r
4da2e625 466 jTableFvProp.setRowHeight(20);\r
467 jTableFvProp.setEnabled(false);\r
a13899c5 468 \r
4da2e625 469 jTableFvProp.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
470 jTableFvProp.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 471 public void valueChanged(ListSelectionEvent e) {\r
472 if (e.getValueIsAdjusting()){\r
473 return;\r
474 }\r
475 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
476 if (lsm.isSelectionEmpty()) {\r
477 return;\r
478 }\r
479 else{\r
480// selectedRow = lsm.getMinSelectionIndex();\r
481 }\r
482 }\r
483 });\r
484 \r
4da2e625 485 jTableFvProp.getModel().addTableModelListener(new TableModelListener(){\r
a13899c5 486 public void tableChanged(TableModelEvent arg0) {\r
487 // TODO Auto-generated method stub\r
488 int row = arg0.getFirstRow();\r
489 TableModel m = (TableModel)arg0.getSource();\r
490 if (arg0.getType() == TableModelEvent.UPDATE){\r
491 \r
492 String name = m.getValueAt(row, 0) + "";\r
493 String value = m.getValueAt(row, 1) + "";\r
d6d24759 494 docConsole.setSaved(false);\r
a13899c5 495 ffc.updateFvImagesNameValue(row, name, value);\r
496 }\r
497 }\r
498 });\r
499 }\r
4da2e625 500 return jTableFvProp;\r
a13899c5 501 }\r
502\r
503\r
504 /**\r
505 * This method initializes jPanel4 \r
506 * \r
507 * @return javax.swing.JPanel \r
508 */\r
4da2e625 509 private JPanel getJPanelFvPropButtonGroup() {\r
510 if (jPanelFvPropButtonGroup == null) {\r
511 jPanelFvPropButtonGroup = new JPanel();\r
512 jPanelFvPropButtonGroup.setPreferredSize(new java.awt.Dimension(80,55));\r
a13899c5 513 \r
4da2e625 514 jPanelFvPropButtonGroup.add(getJButtonFvPropAdd(), null);\r
515 jPanelFvPropButtonGroup.add(getJButtonFvPropDel(), null);\r
a13899c5 516 }\r
4da2e625 517 return jPanelFvPropButtonGroup;\r
a13899c5 518 }\r
519\r
520\r
521 /**\r
522 * This method initializes jButton1 \r
523 * \r
524 * @return javax.swing.JButton \r
525 */\r
4da2e625 526 private JButton getJButtonFvPropDel() {\r
527 if (jButtonFvPropDel == null) {\r
528 jButtonFvPropDel = new JButton();\r
529 jButtonFvPropDel.setPreferredSize(new java.awt.Dimension(80,20));\r
530 jButtonFvPropDel.setEnabled(false);\r
531 jButtonFvPropDel.setText("Delete");\r
532 jButtonFvPropDel.addActionListener(new AbstractAction() {\r
44053733 533 /**\r
534 * \r
535 */\r
536 private static final long serialVersionUID = 1L;\r
537\r
a13899c5 538 public void actionPerformed(ActionEvent e) {\r
4da2e625 539 if (jTableFvProp.getSelectedRow() >= 0){\r
540 fvPropertyTableModel.removeRow(jTableFvProp.getSelectedRow());\r
d6d24759 541 docConsole.setSaved(false);\r
4da2e625 542 ffc.removeFvImagesNameValue(jTableFvProp.getSelectedRow());\r
a13899c5 543 }\r
544 }\r
545 });\r
546 }\r
4da2e625 547 return jButtonFvPropDel;\r
a13899c5 548 }\r
549\r
550\r
551 /**\r
552 * This method initializes jPanelFvImageC \r
553 * \r
554 * @return javax.swing.JPanel \r
555 */\r
556 private JPanel getJPanelFvImageC() {\r
557 if (jPanelFvImageC == null) {\r
4da2e625 558 jLabelFvParaName = new JLabel();\r
559 jLabelFvParaName.setPreferredSize(new Dimension(38, 20));\r
4da2e625 560 jLabelFvParaName.setText("Name");\r
561 jLabelFvImageNames = new JLabel();\r
562 jLabelFvImageNames.setText("FV Image Names");\r
4da2e625 563 jLabelFvImageNames.setPreferredSize(new java.awt.Dimension(150,20));\r
564 jLabelFvParaType = new JLabel();\r
565 jLabelFvParaType.setText("Type");\r
4da2e625 566 jLabelFvParaType.setPreferredSize(new java.awt.Dimension(70,20));\r
a13899c5 567 FlowLayout flowLayout3 = new FlowLayout();\r
568 flowLayout3.setAlignment(java.awt.FlowLayout.LEFT);\r
569 flowLayout3.setHgap(5);\r
570 jPanelFvImageC = new JPanel();\r
571 jPanelFvImageC.setLayout(flowLayout3);\r
4da2e625 572 jPanelFvImageC.add(getJPanelFvImagePara(), null);\r
a13899c5 573 \r
4da2e625 574 jPanelFvImageC.add(getJPanelFvImageOpts(), null);\r
a13899c5 575 \r
576 }\r
577 return jPanelFvImageC;\r
578 }\r
579\r
580\r
a13899c5 581 /**\r
582 * This method initializes jComboBox \r
583 * \r
584 * @return javax.swing.JComboBox \r
585 */\r
4da2e625 586 private JComboBox getJComboBoxFvParaType() {\r
587 if (jComboBoxFvParaType == null) {\r
588 jComboBoxFvParaType = new JComboBox();\r
4da2e625 589 jComboBoxFvParaType.addItem("Attributes");\r
72426064 590 jComboBoxFvParaType.addItem("Components");\r
54aa8673 591 jComboBoxFvParaType.setSelectedIndex(0);\r
4da2e625 592 jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20));\r
4da2e625 593 jComboBoxFvParaType.addItemListener(new ItemListener() {\r
a13899c5 594\r
595 public void itemStateChanged(ItemEvent arg0) {\r
596 // TODO disable attribute settings when ValidImageNames selected.\r
72426064 597 int selectedRow = jTableFvInfo.getSelectedRow();\r
598 if (selectedRow < 0) {\r
599 return;\r
600 }\r
601 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
602 String oldType = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
603 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, oldType);\r
604 if (fvImagePos < 0) {\r
605 return;\r
606 }\r
a13899c5 607 \r
72426064 608 String type = jComboBoxFvParaType.getSelectedItem()+"";\r
609 ffc.updateFvImagesFvImageType(fvImagePos, type);\r
610 jTableFvInfo.setValueAt(type, selectedRow, 1);\r
611 docConsole.setSaved(false);\r
a13899c5 612 }\r
613 \r
614 });\r
615 }\r
4da2e625 616 return jComboBoxFvParaType;\r
a13899c5 617 }\r
618\r
619\r
620 /**\r
621 * This method initializes jTextField2 \r
622 * \r
623 * @return javax.swing.JTextField \r
624 */\r
4da2e625 625 private JTextField getJTextFieldFvParaName() {\r
626 if (jTextFieldFvParaName == null) {\r
627 jTextFieldFvParaName = new JTextField();\r
628 jTextFieldFvParaName.setPreferredSize(new java.awt.Dimension(140,20));\r
a13899c5 629 }\r
4da2e625 630 return jTextFieldFvParaName;\r
a13899c5 631 }\r
632\r
633\r
634 /**\r
635 * This method initializes jButton2 \r
636 * \r
637 * @return javax.swing.JButton \r
638 */\r
54aa8673 639 private JButton getJButtonFvNameAdd() {\r
640 if (jButtonFvNameAdd == null) {\r
641 jButtonFvNameAdd = new JButton();\r
642 jButtonFvNameAdd.setPreferredSize(new Dimension(80, 20));\r
643 jButtonFvNameAdd.setEnabled(true);\r
644 jButtonFvNameAdd.setText("Add");\r
645 jButtonFvNameAdd.addActionListener(new AbstractAction() {\r
44053733 646 /**\r
647 * \r
648 */\r
649 private static final long serialVersionUID = 1L;\r
650\r
a13899c5 651 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 652 if (jTextFieldFvParaName.getText().length() > 0){\r
653 String[] row = {jTextFieldFvParaName.getText()}; \r
54aa8673 654 int selectedRow = jTableFvInfo.getSelectedRow();\r
655 if (selectedRow < 0) {\r
72426064 656 return;\r
657 }\r
658 \r
54aa8673 659 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
660 String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
72426064 661 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
662 \r
663 if (fvImagePos < 0) {\r
664 // new FvImage.\r
54aa8673 665 ffc.genFvImagesFvImage(row, jComboBoxFvParaType.getSelectedItem()+"", null); \r
72426064 666 }\r
667 else {\r
54aa8673 668 //append Fv name.\r
669 ffc.addFvImageNamesInFvImage(fvImagePos, row); \r
72426064 670 }\r
54aa8673 671 docConsole.setSaved(false);\r
672 fvImageNameTableModel.addRow(row);\r
673 fvNameList += " ";\r
674 fvNameList += row[0];\r
675 jTableFvInfo.setValueAt(fvNameList.trim(), selectedRow, 0);\r
676 jTableFvImageNames.changeSelection(jTableFvImageNames.getRowCount() - 1, 0, false, false);\r
a13899c5 677 }\r
678 }\r
679 });\r
680 }\r
54aa8673 681 return jButtonFvNameAdd;\r
a13899c5 682 }\r
683\r
684\r
685 /**\r
686 * This method initializes jScrollPane2 \r
687 * \r
688 * @return javax.swing.JScrollPane \r
689 */\r
4da2e625 690 private JScrollPane getJScrollPaneFvImageNames() {\r
691 if (jScrollPaneFvImageNames == null) {\r
692 jScrollPaneFvImageNames = new JScrollPane();\r
72426064 693 jScrollPaneFvImageNames.setPreferredSize(new java.awt.Dimension(350,80));\r
4da2e625 694 jScrollPaneFvImageNames.setViewportView(getJTableFvImageNames());\r
a13899c5 695 }\r
4da2e625 696 return jScrollPaneFvImageNames;\r
a13899c5 697 }\r
698\r
699\r
700 /**\r
701 * This method initializes jTable1 \r
702 * \r
703 * @return javax.swing.JTable \r
704 */\r
4da2e625 705 private JTable getJTableFvImageNames() {\r
706 if (jTableFvImageNames == null) {\r
54aa8673 707 fvImageNameTableModel = new NonEditableTableModel();\r
4da2e625 708 jTableFvImageNames = new JTable(fvImageNameTableModel);\r
72426064 709 jTableFvImageNames.setRowHeight(20);\r
a13899c5 710 fvImageNameTableModel.addColumn("FV Image Name");\r
72426064 711 \r
a13899c5 712 }\r
4da2e625 713 return jTableFvImageNames;\r
a13899c5 714 }\r
715\r
716\r
717 /**\r
718 * This method initializes jButton3 \r
719 * \r
720 * @return javax.swing.JButton \r
721 */\r
54aa8673 722 private JButton getJButtonFvNameDel() {\r
723 if (jButtonFvNameDel == null) {\r
724 jButtonFvNameDel = new JButton();\r
725 jButtonFvNameDel.setPreferredSize(new Dimension(80, 20));\r
726 jButtonFvNameDel.setEnabled(true);\r
727 jButtonFvNameDel.setText("Delete");\r
728 jButtonFvNameDel.addActionListener(new AbstractAction() {\r
44053733 729 /**\r
730 * \r
731 */\r
732 private static final long serialVersionUID = 1L;\r
733\r
a13899c5 734 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 735 if (jTableFvImageNames.getSelectedRow() >= 0){\r
54aa8673 736 int selectedRow = jTableFvInfo.getSelectedRow();\r
737 if (selectedRow < 0) {\r
738 return;\r
739 }\r
740 \r
741 String selectedFvName = jTableFvImageNames.getValueAt(jTableFvImageNames.getSelectedRow(), 0)+"";\r
742 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
743 String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
744 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
745 \r
746 if (fvImagePos < 0) {\r
747 return; \r
748 }\r
749 else {\r
750 //delete Fv name.\r
751 ffc.updateFvImageNamesInFvImage(fvImagePos, selectedFvName, null);\r
752 }\r
753 docConsole.setSaved(false);\r
754 String newList = removeFvNameFromList(fvNameList, selectedFvName);\r
755 jTableFvInfo.setValueAt(newList, selectedRow, 0); \r
4da2e625 756 fvImageNameTableModel.removeRow(jTableFvImageNames.getSelectedRow());\r
a13899c5 757 }\r
758 }\r
759 });\r
760 }\r
54aa8673 761 return jButtonFvNameDel;\r
762 }\r
763\r
764 private String removeFvNameFromList (String list, String name) {\r
765 String[] nameArray = list.split(" ");\r
766 int occursAt = -1;\r
767 for (int i = 0; i < nameArray.length; ++i) {\r
768 if (nameArray[i].equals(name)) {\r
769 occursAt = i;\r
770 break;\r
771 }\r
772 }\r
773 \r
774 if (occursAt == -1) {\r
775 return list;\r
776 }\r
777 \r
778 String newList = " ";\r
779 for (int j = 0; j < nameArray.length; ++j) {\r
780 if (j != occursAt) {\r
781 newList += nameArray[j];\r
782 newList += " ";\r
783 }\r
784 }\r
785 \r
786 return newList.trim();\r
787 }\r
a13899c5 788\r
789 \r
4da2e625 790 private JPanel getJPanelFvImageOpts() {\r
a13899c5 791 \r
792\r
4da2e625 793 if (jPanelFvImageOpts == null) {\r
a13899c5 794 //ToDo add ButtonGroup for RadioButtons\r
72426064 795 FlowLayout flowLayout5 = new FlowLayout();\r
796 flowLayout5.setAlignment(java.awt.FlowLayout.LEFT);\r
797 jLabelOptions = new JLabel();\r
798 jLabelOptions.setText("Attribute");\r
4da2e625 799 jLabelFvImageOptValue = new JLabel();\r
800 jLabelFvImageOptValue.setEnabled(true);\r
801 jLabelFvImageOptValue.setText("Value");\r
802 jLabelFvImageOptValue.setPreferredSize(new Dimension(38, 20));\r
803 jLabelFvImageOptName = new JLabel();\r
804 jLabelFvImageOptName.setEnabled(true);\r
805 jLabelFvImageOptName.setText("Name");\r
806 jLabelFvImageOptName.setPreferredSize(new Dimension(38, 20));\r
807 jPanelFvImageOpts = new JPanel();\r
72426064 808 jPanelFvImageOpts.setLayout(flowLayout5);\r
809 jPanelFvImageOpts.setPreferredSize(new java.awt.Dimension(450,130));\r
a13899c5 810 \r
a13899c5 811 \r
4da2e625 812 jPanelFvImageOpts.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));\r
72426064 813 jPanelFvImageOpts.add(jLabelOptions, null);\r
4da2e625 814 jPanelFvImageOpts.add(jLabelFvImageOptName, null);\r
815 jPanelFvImageOpts.add(getJTextFieldFvImageOptName(), null);\r
816 jPanelFvImageOpts.add(jLabelFvImageOptValue, null);\r
817 jPanelFvImageOpts.add(getJTextFieldFvImageOptValue(), null);\r
818 jPanelFvImageOpts.add(getJScrollPane(), null);\r
819 jPanelFvImageOpts.add(getJPanelFvImageOptsButtonGroup(), null);\r
a13899c5 820 \r
821 \r
822 \r
823\r
824 \r
825 }\r
4da2e625 826 return jPanelFvImageOpts;\r
a13899c5 827 }\r
828\r
829\r
830 /**\r
831 * This method initializes jButton4 \r
832 * \r
833 * @return javax.swing.JButton \r
834 */\r
4da2e625 835 private JButton getJButtonAddFvImage() {\r
836 if (jButtonAddFvImage == null) {\r
837 jButtonAddFvImage = new JButton();\r
72426064 838 jButtonAddFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
839 jButtonAddFvImage.setText("New FV Attributes");\r
4da2e625 840 jButtonAddFvImage.addActionListener(new AbstractAction() {\r
44053733 841 /**\r
842 * \r
843 */\r
844 private static final long serialVersionUID = 1L;\r
845\r
a13899c5 846 public void actionPerformed(java.awt.event.ActionEvent e) {\r
a13899c5 847 \r
54aa8673 848// String imageName = " ";\r
849// for (int i = 0; i < jTableFvImageNames.getRowCount(); ++i){\r
850// imageName += (String)jTableFvImageNames.getValueAt(i, 0);\r
851// imageName += " ";\r
72426064 852// }\r
54aa8673 853// imageName = imageName.trim();\r
854 \r
855// LinkedHashMap<String, String> m = null;\r
856// m = new LinkedHashMap<String, String>();\r
857// getOptionNameValue(m);\r
858// ffc.genFvImagesFvImage(imageName.split(" "), jComboBoxFvParaType.getSelectedItem()+"", m);\r
859// docConsole.setSaved(false);\r
860 fvImageNameTableModel.setRowCount(0);\r
861 fvOptionTableModel.setRowCount(0);\r
862 Object[] row = {"", jComboBoxFvParaType.getSelectedItem()};\r
863 fvImageParaTableModel.addRow(row);\r
864 jTableFvInfo.changeSelection(jTableFvInfo.getRowCount() - 1, 0, false, false);\r
a13899c5 865 }\r
866 });\r
867 }\r
4da2e625 868 return jButtonAddFvImage;\r
a13899c5 869 }\r
870\r
871\r
872 /**\r
873 * This method initializes jScrollPane3 \r
874 * \r
875 * @return javax.swing.JScrollPane \r
876 */\r
4da2e625 877 private JScrollPane getJScrollPaneFvInfo() {\r
878 if (jScrollPaneFvInfo == null) {\r
879 jScrollPaneFvInfo = new JScrollPane();\r
880 jScrollPaneFvInfo.setPreferredSize(new java.awt.Dimension(480,150));\r
881 jScrollPaneFvInfo.setViewportView(getJTableFvInfo());\r
a13899c5 882 }\r
4da2e625 883 return jScrollPaneFvInfo;\r
a13899c5 884 }\r
885\r
886\r
887 /**\r
888 * This method initializes jTable2 \r
889 * \r
890 * @return javax.swing.JTable \r
891 */\r
4da2e625 892 private JTable getJTableFvInfo() {\r
893 if (jTableFvInfo == null) {\r
a13899c5 894 fvImageParaTableModel = new ImageParaTableModel();\r
4da2e625 895 jTableFvInfo = new JTable(fvImageParaTableModel);\r
a13899c5 896 fvImageParaTableModel.addColumn("FvImageNames");\r
897 fvImageParaTableModel.addColumn("Type");\r
ae0d4fd2 898 \r
4da2e625 899 jTableFvInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
72426064 900 jTableFvInfo.setRowHeight(20);\r
4da2e625 901 jTableFvInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
a13899c5 902 public void valueChanged(ListSelectionEvent e) {\r
903 if (e.getValueIsAdjusting()){\r
904 return;\r
905 }\r
906 ListSelectionModel lsm = (ListSelectionModel)e.getSource();\r
907 if (lsm.isSelectionEmpty()) {\r
908 return;\r
909 }\r
910 else{\r
ae0d4fd2 911 int selectedRow = lsm.getMinSelectionIndex();\r
72426064 912 String fvNameList = fvImageParaTableModel.getValueAt(selectedRow, 0)+"";\r
913 String type = fvImageParaTableModel.getValueAt(selectedRow, 1)+"";\r
914 jComboBoxFvParaType.setSelectedItem(type);\r
915 String[] fvNames = fvNameList.split(" ");\r
916 fvImageNameTableModel.setRowCount(0);\r
54aa8673 917 fvOptionTableModel.setRowCount(0);\r
72426064 918 for (int i = 0; i < fvNames.length; ++i) {\r
919 String[] row = { fvNames[i] };\r
54aa8673 920 if (row[0].length() > 0) {\r
921 fvImageNameTableModel.addRow(row);\r
922 }\r
72426064 923 }\r
924 \r
925 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
926 if (fvImagePos < 0) {\r
61919f8c 927 return;\r
928 }\r
ae0d4fd2 929 LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();\r
72426064 930 ffc.getFvImagesFvImageOptions(fvImagePos, optionMap);\r
ae0d4fd2 931 if (optionMap.size() > 0){\r
ae0d4fd2 932 Set<String> key = optionMap.keySet();\r
933 Iterator<String> i = key.iterator();\r
934 while (i.hasNext()) {\r
ae0d4fd2 935 String k = (String)i.next();\r
936 String[] row = {k, optionMap.get(k)};\r
ae0d4fd2 937 fvOptionTableModel.addRow(row);\r
938 }\r
a13899c5 939 }\r
a13899c5 940 }\r
941 }\r
942 });\r
ae0d4fd2 943 \r
944 \r
a13899c5 945 }\r
4da2e625 946 return jTableFvInfo;\r
a13899c5 947 }\r
948\r
949\r
950 /**\r
951 * This method initializes jButton6 \r
952 * \r
953 * @return javax.swing.JButton \r
954 */\r
4da2e625 955 private JButton getJButtonDelFvImage() {\r
956 if (jButtonDelFvImage == null) {\r
957 jButtonDelFvImage = new JButton();\r
72426064 958 jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
959 jButtonDelFvImage.setText("Delete FV Attributes");\r
4da2e625 960 jButtonDelFvImage.addActionListener(new AbstractAction() {\r
44053733 961 /**\r
962 * \r
963 */\r
964 private static final long serialVersionUID = 1L;\r
a13899c5 965\r
966 public void actionPerformed(ActionEvent arg0) {\r
967 // TODO Auto-generated method stub\r
4da2e625 968 if (jTableFvInfo.getSelectedRow() >= 0 ) {\r
54aa8673 969 String fvNameList = fvImageParaTableModel.getValueAt(jTableFvInfo.getSelectedRow(), 0)+"";\r
970 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, jComboBoxFvParaType.getSelectedItem()+"");\r
971 \r
972 ffc.removeFvImagesFvImage(fvImagePos);\r
4da2e625 973 fvImageParaTableModel.removeRow(jTableFvInfo.getSelectedRow());\r
d6d24759 974 docConsole.setSaved(false);\r
54aa8673 975 \r
976 fvImageNameTableModel.setRowCount(0);\r
977 fvOptionTableModel.setRowCount(0);\r
a13899c5 978 }\r
979 }\r
980 \r
981 });\r
982 }\r
4da2e625 983 return jButtonDelFvImage;\r
a13899c5 984 }\r
985\r
986\r
a13899c5 987 /**\r
988 * This method initializes jPanel6 \r
989 * \r
990 * @return javax.swing.JPanel \r
991 */\r
4da2e625 992 private JPanel getJPanelFvImagePara() {\r
993 if (jPanelFvImagePara == null) {\r
72426064 994 FlowLayout flowLayout6 = new FlowLayout();\r
995 flowLayout6.setAlignment(java.awt.FlowLayout.LEFT);\r
a13899c5 996 StarLabel starLabel = new StarLabel();\r
997 starLabel.setVisible(false);\r
4da2e625 998 jPanelFvImagePara = new JPanel();\r
72426064 999 jPanelFvImagePara.setLayout(flowLayout6);\r
1000 jPanelFvImagePara.setPreferredSize(new java.awt.Dimension(450,140));\r
4da2e625 1001 jPanelFvImagePara.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
4da2e625 1002 jPanelFvImagePara.add(new StarLabel(), null);\r
1003 jPanelFvImagePara.add(jLabelFvImageNames, null);\r
1004 jPanelFvImagePara.add(jLabelFvParaName, null);\r
1005 jPanelFvImagePara.add(getJTextFieldFvParaName(), null);\r
4da2e625 1006 jPanelFvImagePara.add(getJScrollPaneFvImageNames(), null);\r
72426064 1007 jPanelFvImagePara.add(getJPanelBgFvName(), null);\r
1008 jPanelFvImagePara.add(jLabelFvParaType, null);\r
1009 jPanelFvImagePara.add(getJComboBoxFvParaType(), null);\r
a13899c5 1010 }\r
4da2e625 1011 return jPanelFvImagePara;\r
a13899c5 1012 }\r
1013\r
1014 /**\r
1015 * This method initializes jPanel7 \r
1016 * \r
1017 * @return javax.swing.JPanel \r
1018 */\r
4da2e625 1019 private JPanel getJPanelFdf() {\r
1020 if (jPanelFdf == null) {\r
4da2e625 1021 jPanelFdf = new JPanel();\r
3658f95e 1022 jPanelFdf.setLayout(new BorderLayout());\r
1023\r
1024 jPanelFdf.add(getJPanelFdfN(), java.awt.BorderLayout.NORTH);\r
1025 jPanelFdf.add(getJPanelFdfS(), java.awt.BorderLayout.SOUTH);\r
1026 jPanelFdf.add(getJSplitPaneFdfC(), java.awt.BorderLayout.CENTER);\r
2b70a636 1027 jPanelFdf.addComponentListener(new ComponentAdapter(){\r
1028 public void componentShown(ComponentEvent e) {\r
3658f95e 1029// if (ffc.getFlashDefinitionFile() != null) {\r
1030// jTextFieldFdf.setText(ffc.getFlashDefinitionFile());\r
2b70a636 1031// initFvInFdfTable(System.getenv("WORKSPACE") + File.separator + jTextFieldFdf.getText());\r
1032// \r
3658f95e 1033// }\r
2b70a636 1034 }\r
1035 public void componentHidden(ComponentEvent e) {\r
1036 if (jCheckBoxFdf.isSelected()) {\r
1037 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
1038 }\r
1039 }\r
1040 });\r
a13899c5 1041 }\r
4da2e625 1042 return jPanelFdf;\r
a13899c5 1043 }\r
1044\r
1045 /**\r
1046 * This method initializes jCheckBox \r
1047 * \r
1048 * @return javax.swing.JCheckBox \r
1049 */\r
4da2e625 1050 private JCheckBox getJCheckBoxFdf() {\r
1051 if (jCheckBoxFdf == null) {\r
1052 jCheckBoxFdf = new JCheckBox();\r
1053 jCheckBoxFdf.setText("Flash Definition File");\r
1054 jCheckBoxFdf.addItemListener(new ItemListener() {\r
a13899c5 1055\r
1056 public void itemStateChanged(ItemEvent arg0) {\r
1057 // TODO Auto-generated method stub\r
4da2e625 1058 if (jCheckBoxFdf.isSelected()){\r
1059 jTextFieldFdf.setEnabled(true);\r
1060 jButtonFdfBrowse.setEnabled(true);\r
a13899c5 1061 }\r
1062 else {\r
1063 \r
4da2e625 1064 jTextFieldFdf.setEnabled(false);\r
1065 jButtonFdfBrowse.setEnabled(false);\r
a13899c5 1066 }\r
1067 }\r
1068 });\r
1069 }\r
4da2e625 1070 return jCheckBoxFdf;\r
a13899c5 1071 }\r
1072\r
1073 /**\r
1074 * This method initializes jTextField3 \r
1075 * \r
1076 * @return javax.swing.JTextField \r
1077 */\r
4da2e625 1078 private JTextField getJTextFieldFdf() {\r
1079 if (jTextFieldFdf == null) {\r
1080 jTextFieldFdf = new JTextField();\r
1081 jTextFieldFdf.setEnabled(false);\r
2b70a636 1082 jTextFieldFdf.setEditable(false);\r
4da2e625 1083 jTextFieldFdf.setPreferredSize(new Dimension(300, 20));\r
1084 jTextFieldFdf.addFocusListener(new java.awt.event.FocusAdapter() {\r
908b1c05 1085 public void focusLost(java.awt.event.FocusEvent e) {\r
4da2e625 1086 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
908b1c05 1087 }\r
1088 });\r
a13899c5 1089 }\r
4da2e625 1090 return jTextFieldFdf;\r
a13899c5 1091 }\r
1092\r
1093 /**\r
1094 * This method initializes jButton5 \r
1095 * \r
1096 * @return javax.swing.JButton \r
1097 */\r
4da2e625 1098 private JButton getJButtonFdfBrowse() {\r
1099 if (jButtonFdfBrowse == null) {\r
1100 jButtonFdfBrowse = new JButton();\r
1101 jButtonFdfBrowse.setEnabled(false);\r
1102 jButtonFdfBrowse.setText("Browse");\r
1103 jButtonFdfBrowse.setPreferredSize(new Dimension(78, 20));\r
1104 jButtonFdfBrowse.addActionListener(new AbstractAction(){\r
44053733 1105 /**\r
1106 * \r
1107 */\r
1108 private static final long serialVersionUID = 1L;\r
1109\r
a13899c5 1110 public void actionPerformed(ActionEvent e) {\r
1111 // TODO Auto-generated method stub\r
908b1c05 1112 String wsDir = System.getenv("WORKSPACE");\r
1113 JFileChooser chooser = new JFileChooser(wsDir);\r
a13899c5 1114 chooser.setMultiSelectionEnabled(false);\r
1115 chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r
1116 int retval = chooser.showOpenDialog(frame);\r
1117 if (retval == JFileChooser.APPROVE_OPTION) {\r
1118\r
1119 File theFile = chooser.getSelectedFile();\r
908b1c05 1120 String filePath = theFile.getPath();\r
1121 if (!filePath.startsWith(wsDir)) {\r
1122 JOptionPane.showMessageDialog(frame, "You can only select files in current WORKSPACE.");\r
1123 return;\r
1124 }\r
4da2e625 1125 jTextFieldFdf.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/'));\r
3658f95e 1126 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
1127 docConsole.setSaved(false);\r
2b70a636 1128 initFvInFdfTable(filePath);\r
a13899c5 1129 }\r
1130 }\r
1131 \r
1132 });\r
1133 }\r
4da2e625 1134 return jButtonFdfBrowse;\r
a13899c5 1135 }\r
eb8ea829 1136 \r
72426064 1137 private void initFvAttributes () {\r
1138 if (ffc.getFvImagesFvImageCount("Attributes") == 0 && ffc.getFvImagesFvImageCount("Components") == 0) {\r
1139 return;\r
1140 }\r
1141 String[][] saa = new String[ffc.getFvImagesFvImageCount("Attributes")][2];\r
1142 ffc.getFvImagesFvImages(saa, "Attributes");\r
1143 \r
1144 int i = 0;\r
1145 while (i < saa.length) {\r
1146 fvImageParaTableModel.addRow(saa[i]);\r
1147 ++i;\r
1148 }\r
1149 \r
1150 saa = new String[ffc.getFvImagesFvImageCount("Components")][2];\r
1151 ffc.getFvImagesFvImages(saa, "Components");\r
1152 i = 0;\r
1153 while (i < saa.length) {\r
1154 fvImageParaTableModel.addRow(saa[i]);\r
1155 ++i;\r
1156 }\r
1157 \r
1158 saa = new String[ffc.getFvImagesNameValueCount()][2];\r
1159 ffc.getFvImagesNameValues(saa);\r
1160 for (int m = 0; m < saa.length; ++m) {\r
1161 fvPropertyTableModel.addRow(saa[m]);\r
1162 }\r
1163 }\r
1164 \r
eb8ea829 1165 private void initFvAdditionalTable() {\r
98c20797 1166 Vector<String> vFvNames = new Vector<String>();\r
1167 ffc.getFvImagesFvImageFvImageNames(vFvNames);\r
1168 for (int i = 0; i < vFvNames.size(); ++i) {\r
1169 String fvName = vFvNames.get(i);\r
1170 if (fvNameExists(fvName)) {\r
1171 continue;\r
1172 }\r
72426064 1173 fvAdditionalTableModel.addRow(getBasicFvInfo(fvName));\r
98c20797 1174 addTabForFv(new FvInfoFromFdf(fvName, "", ""));\r
1175 }\r
eb8ea829 1176 }\r
a13899c5 1177\r
2b70a636 1178 private void initFvInFdfTable(String fdfPath){\r
1179 Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
1180 getFvInfoFromFdf(fdfPath, vFvInfo);\r
701d95b3 1181 getFlashInfoFromFdf (fdfPath);\r
1182 if (!erasePolarity.equals("1") && !erasePolarity.equals("0")) {\r
1183 JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid Erase Polarity.");\r
1184 }\r
1185 else {\r
54aa8673 1186 ffc.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity);\r
701d95b3 1187 }\r
1188 \r
98c20797 1189 // BugBug: assume all blocks have same size;\r
701d95b3 1190 \r
72426064 1191 String blkSize = defaultBlkSize;\r
701d95b3 1192 if (vBlockSize.size() > 0) {\r
1193 blkSize = vBlockSize.get(0);\r
1194 if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
1195 JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");\r
72426064 1196 blkSize = defaultBlkSize;\r
701d95b3 1197 }\r
1198 }\r
1199 determinedFvBlockSize = blkSize;\r
98c20797 1200 \r
2b70a636 1201 getFvInFdfTableModel().setRowCount(0);\r
1202 for (int j = 0; j < vFvInfo.size(); ++j) {\r
1203 FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
1204 String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
701d95b3 1205 // if FV addtional table contains the same FV from fdf file, remove that row.\r
1206 for (int k = 0; k < jTableFvAdditional.getRowCount(); ++k) {\r
1207 if (fvAdditionalTableModel.getValueAt(k, 0).equals(row[0])) {\r
1208 fvAdditionalTableModel.removeRow(k);\r
1209 }\r
1210 }\r
2b70a636 1211 getFvInFdfTableModel().addRow(row);\r
98c20797 1212 try {\r
1213 int blockSize = Integer.decode(blkSize);\r
1214 int fvSize = Integer.decode(row[1]);\r
1215 int numBlocks = fvSize/blockSize;\r
701d95b3 1216 HashMap<String, String> mOptions = new HashMap<String, String>();\r
98c20797 1217 // if no options for this FV before, generate a new options entry for this FV.\r
1218 if (ffc.getFvImagesFvImageWithName(row[0], "Options") == null) {\r
701d95b3 1219 \r
98c20797 1220 mOptions.put("EFI_BLOCK_SIZE", blkSize);\r
1221 mOptions.put("EFI_NUM_BLOCKS", numBlocks+"");\r
1222 mOptions.put("EFI_FILE_NAME", row[2]);\r
1223 ffc.genFvImagesFvImage(new String[]{row[0]}, "Options", mOptions);\r
1224 memModified = true;\r
1225 }\r
1226 else {\r
701d95b3 1227 ffc.getFvImagesFvImageOptions(row[0], mOptions);\r
1228 if (mOptions.get("EFI_BLOCK_SIZE") == null || !mOptions.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize)) {\r
1229 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize);\r
1230 memModified = true;\r
1231 }\r
1232 if (mOptions.get("EFI_NUM_BLOCKS") == null || Integer.decode(mOptions.get("EFI_NUM_BLOCKS")) != numBlocks) {\r
1233 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + "");\r
1234 memModified = true;\r
1235 }\r
1236 if (mOptions.get("EFI_FILE_NAME") == null || !mOptions.get("EFI_FILE_NAME").equals(row[2])) {\r
1237 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2]);\r
1238 memModified = true;\r
1239 }\r
1240 \r
98c20797 1241 }\r
1242 }\r
1243 catch (NumberFormatException e){\r
1244 JOptionPane.showMessageDialog(frame, e.getMessage());\r
1245 }\r
2b70a636 1246 }\r
1247\r
1248 for (int k = 0; k < vFvInfo.size(); ++k) {\r
1249 FvInfoFromFdf fvInfo = vFvInfo.get(k);\r
1250 addTabForFv(fvInfo);\r
1251 }\r
98c20797 1252 \r
2b70a636 1253 }\r
1254 \r
1255 private void addTabForFv (FvInfoFromFdf fvInfo) {\r
1256 String fvName = fvInfo.getFvName();\r
1257 String outputFile = fvInfo.getEfiFileName();\r
eb8ea829 1258 int index = jTabbedPane.indexOfTab(fvName);\r
1259 if (index >= startIndexOfDynamicTab) {\r
1260 return;\r
2b70a636 1261 }\r
1262 jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null);\r
1263 }\r
44053733 1264 /**\r
ae0d4fd2 1265 * This method initializes jTextField4 \r
44053733 1266 * \r
ae0d4fd2 1267 * @return javax.swing.JTextField \r
44053733 1268 */\r
4da2e625 1269 private JTextField getJTextFieldFvImageOptName() {\r
1270 if (jTextFieldFvImageOptName == null) {\r
1271 jTextFieldFvImageOptName = new JTextField();\r
1272 jTextFieldFvImageOptName.setEnabled(true);\r
1273 jTextFieldFvImageOptName.setPreferredSize(new Dimension(100, 20));\r
44053733 1274 }\r
4da2e625 1275 return jTextFieldFvImageOptName;\r
ae0d4fd2 1276 }\r
1277\r
1278 /**\r
1279 * This method initializes jTextField5 \r
1280 * \r
1281 * @return javax.swing.JTextField \r
1282 */\r
4da2e625 1283 private JTextField getJTextFieldFvImageOptValue() {\r
1284 if (jTextFieldFvImageOptValue == null) {\r
1285 jTextFieldFvImageOptValue = new JTextField();\r
1286 jTextFieldFvImageOptValue.setEnabled(true);\r
1287 jTextFieldFvImageOptValue.setPreferredSize(new Dimension(100, 20));\r
ae0d4fd2 1288 }\r
4da2e625 1289 return jTextFieldFvImageOptValue;\r
ae0d4fd2 1290 }\r
1291\r
1292 /**\r
1293 * This method initializes jPanel8 \r
1294 * \r
1295 * @return javax.swing.JPanel \r
1296 */\r
4da2e625 1297 private JPanel getJPanelFvImageOptsButtonGroup() {\r
1298 if (jPanelFvImageOptsButtonGroup == null) {\r
1299 jPanelFvImageOptsButtonGroup = new JPanel();\r
1300 jPanelFvImageOptsButtonGroup.setPreferredSize(new Dimension(80, 55));\r
1301 jPanelFvImageOptsButtonGroup.add(getJButtonFvImageOptAdd(), null);\r
1302 jPanelFvImageOptsButtonGroup.add(getJButtonFvImageOptDel(), null);\r
ae0d4fd2 1303 }\r
4da2e625 1304 return jPanelFvImageOptsButtonGroup;\r
ae0d4fd2 1305 }\r
1306\r
1307 /**\r
1308 * This method initializes jButton7 \r
1309 * \r
1310 * @return javax.swing.JButton \r
1311 */\r
4da2e625 1312 private JButton getJButtonFvImageOptAdd() {\r
1313 if (jButtonFvImageOptAdd == null) {\r
1314 jButtonFvImageOptAdd = new JButton();\r
1315 jButtonFvImageOptAdd.setEnabled(true);\r
1316 jButtonFvImageOptAdd.setText("Add");\r
1317 jButtonFvImageOptAdd.setPreferredSize(new Dimension(80, 20));\r
1318 jButtonFvImageOptAdd.addActionListener(new AbstractAction() {\r
ae0d4fd2 1319 /**\r
1320 * \r
1321 */\r
1322 private static final long serialVersionUID = 1L;\r
1323\r
1324 public void actionPerformed(ActionEvent e) {\r
4da2e625 1325 if (jTextFieldFvImageOptName.getText().length() > 0 && jTextFieldFvImageOptValue.getText().length() > 0){\r
54aa8673 1326 int selectedRow = jTableFvInfo.getSelectedRow();\r
1327 if (selectedRow < 0) {\r
1328 return;\r
1329 }\r
1330 \r
1331 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
1332 String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
1333 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
1334 String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()};\r
1335 \r
1336 if (fvImagePos < 0) {\r
1337 return;\r
1338 }\r
1339 else {\r
1340 //append options to FvImage.\r
1341 ffc.setFvImagesFvImageNameValue(fvImagePos, row[0], row[1]);\r
1342 }\r
1343 docConsole.setSaved(false);\r
ae0d4fd2 1344 fvOptionTableModel.addRow(row);\r
54aa8673 1345 jTableFvImageOpts.changeSelection(jTableFvImageOpts.getRowCount() - 1, 0, false, false);\r
ae0d4fd2 1346 }\r
1347 }\r
1348 });\r
1349 }\r
4da2e625 1350 return jButtonFvImageOptAdd;\r
ae0d4fd2 1351 }\r
1352\r
1353 /**\r
1354 * This method initializes jButton8 \r
1355 * \r
1356 * @return javax.swing.JButton \r
1357 */\r
4da2e625 1358 private JButton getJButtonFvImageOptDel() {\r
1359 if (jButtonFvImageOptDel == null) {\r
1360 jButtonFvImageOptDel = new JButton();\r
1361 jButtonFvImageOptDel.setEnabled(true);\r
1362 jButtonFvImageOptDel.setText("Delete");\r
1363 jButtonFvImageOptDel.setPreferredSize(new Dimension(80, 20));\r
1364 jButtonFvImageOptDel.addActionListener(new AbstractAction() {\r
ae0d4fd2 1365 /**\r
1366 * \r
1367 */\r
1368 private static final long serialVersionUID = 1L;\r
1369\r
1370 public void actionPerformed(ActionEvent e) {\r
4da2e625 1371 if (jTableFvImageOpts.getSelectedRow() >= 0){\r
54aa8673 1372 int selectedRow = jTableFvInfo.getSelectedRow();\r
1373 if (selectedRow < 0) {\r
1374 return;\r
1375 }\r
1376 \r
1377 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
1378 String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
1379 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
1380 if (fvImagePos < 0) {\r
1381 return;\r
1382 }\r
1383 \r
1384 String optName = fvOptionTableModel.getValueAt(jTableFvImageOpts.getSelectedRow(), 0)+"";\r
1385 ffc.removeFvImageNameValue(fvImagePos, optName);\r
1386 docConsole.setSaved(false);\r
1387 fvOptionTableModel.removeRow(jTableFvImageOpts.getSelectedRow());\r
ae0d4fd2 1388 }\r
1389 }\r
1390 });\r
1391 }\r
4da2e625 1392 return jButtonFvImageOptDel;\r
ae0d4fd2 1393 }\r
1394\r
1395 /**\r
1396 * This method initializes jScrollPane \r
1397 * \r
1398 * @return javax.swing.JScrollPane \r
1399 */\r
1400 private JScrollPane getJScrollPane() {\r
1401 if (jScrollPane == null) {\r
1402 jScrollPane = new JScrollPane();\r
72426064 1403 jScrollPane.setPreferredSize(new java.awt.Dimension(350,100));\r
4da2e625 1404 jScrollPane.setViewportView(getJTableFvImageOpts());\r
ae0d4fd2 1405 }\r
1406 return jScrollPane;\r
1407 }\r
1408\r
1409 /**\r
1410 * This method initializes jTable3 \r
1411 * \r
1412 * @return javax.swing.JTable \r
1413 */\r
4da2e625 1414 private JTable getJTableFvImageOpts() {\r
1415 if (jTableFvImageOpts == null) {\r
54aa8673 1416 fvOptionTableModel = new NonEditableTableModel();\r
ae0d4fd2 1417 fvOptionTableModel.addColumn("Name");\r
1418 fvOptionTableModel.addColumn("Value");\r
4da2e625 1419 jTableFvImageOpts = new JTable(fvOptionTableModel);\r
ae0d4fd2 1420\r
4da2e625 1421 jTableFvImageOpts.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
1422 jTableFvImageOpts.setRowHeight(20);\r
ae0d4fd2 1423 \r
1424 }\r
4da2e625 1425 return jTableFvImageOpts;\r
ae0d4fd2 1426 }\r
1427\r
1428 /**\r
1429 * This method initializes jButton9 \r
1430 * \r
1431 * @return javax.swing.JButton \r
1432 */\r
4da2e625 1433 private JButton getJButtonUpdateFvImage() {\r
1434 if (jButtonUpdateFvImage == null) {\r
1435 jButtonUpdateFvImage = new JButton();\r
72426064 1436 jButtonUpdateFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
4da2e625 1437 jButtonUpdateFvImage.setActionCommand("Update");\r
72426064 1438 jButtonUpdateFvImage.setText("Update FV Attributes");\r
1439 jButtonUpdateFvImage.setVisible(false);\r
4da2e625 1440 jButtonUpdateFvImage.addActionListener(new java.awt.event.ActionListener() {\r
ae0d4fd2 1441 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 1442 int row = jTableFvInfo.getSelectedRow();\r
1443 if (jTableFvInfo.isEditing()) {\r
1444 jTableFvInfo.getCellEditor().stopCellEditing();\r
ae0d4fd2 1445 }\r
4da2e625 1446 if (jTableFvImageOpts.isEditing()) {\r
1447 jTableFvImageOpts.getCellEditor().stopCellEditing();\r
ae0d4fd2 1448 }\r
1449 \r
1450 //ToDo Check data validity before update\r
1451 String name = fvImageParaTableModel.getValueAt(row, 0) + "";\r
1452 String type = fvImageParaTableModel.getValueAt(row, 1) + "";\r
1453 \r
1454 LinkedHashMap<String, String> lhm = new LinkedHashMap<String, String>();\r
1455 getOptionNameValue(lhm);\r
1456 \r
d6d24759 1457 docConsole.setSaved(false);\r
ae0d4fd2 1458 ffc.updateFvImagesFvImage(row, name.split(" "), type, lhm);\r
1459 \r
1460 }\r
1461 });\r
1462 }\r
4da2e625 1463 return jButtonUpdateFvImage;\r
44053733 1464 }\r
1465\r
3658f95e 1466 /**\r
1467 * This method initializes jPanelFdfN \r
1468 * \r
1469 * @return javax.swing.JPanel \r
1470 */\r
1471 private JPanel getJPanelFdfN() {\r
1472 if (jPanelFdfN == null) {\r
1473 jPanelFdfN = new JPanel();\r
1474 jPanelFdfN.add(getJCheckBoxFdf(), null);\r
1475 jPanelFdfN.add(getJTextFieldFdf(), null);\r
1476 jPanelFdfN.add(getJButtonFdfBrowse(), null);\r
1477 }\r
1478 return jPanelFdfN;\r
1479 }\r
1480\r
1481 /**\r
1482 * This method initializes jPanelFdfS \r
1483 * \r
1484 * @return javax.swing.JPanel \r
1485 */\r
1486 private JPanel getJPanelFdfS() {\r
1487 if (jPanelFdfS == null) {\r
1488 FlowLayout flowLayout4 = new FlowLayout();\r
1489 flowLayout4.setAlignment(java.awt.FlowLayout.RIGHT);\r
1490 jPanelFdfS = new JPanel();\r
1491 jPanelFdfS.setLayout(flowLayout4);\r
1492 jPanelFdfS.add(getJButtonAddFv(), null);\r
1493 jPanelFdfS.add(getJButtonDelFv(), null);\r
1494 jPanelFdfS.add(getJButtonAddFvOptions(), null);\r
1495 }\r
1496 return jPanelFdfS;\r
1497 }\r
1498\r
1499 /**\r
1500 * This method initializes jSplitPaneFdfC \r
1501 * \r
1502 * @return javax.swing.JSplitPane \r
1503 */\r
1504 private JSplitPane getJSplitPaneFdfC() {\r
1505 if (jSplitPaneFdfC == null) {\r
1506 jSplitPaneFdfC = new JSplitPane();\r
1507 jSplitPaneFdfC.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
1508 jSplitPaneFdfC.setDividerSize(5);\r
1509 jSplitPaneFdfC.setTopComponent(getJPanelFdfCTop());\r
1510 jSplitPaneFdfC.setBottomComponent(getJPanelFdfCBottom());\r
1511 jSplitPaneFdfC.setDividerLocation(280);\r
1512 }\r
1513 return jSplitPaneFdfC;\r
1514 }\r
1515\r
1516 /**\r
1517 * This method initializes jPanelFdfCTop \r
1518 * \r
1519 * @return javax.swing.JPanel \r
1520 */\r
1521 private JPanel getJPanelFdfCTop() {\r
1522 if (jPanelFdfCTop == null) {\r
1523 jPanelFdfCTop = new JPanel();\r
1524 jPanelFdfCTop.setLayout(new BorderLayout());\r
1525 jPanelFdfCTop.add(getJPanelFdfCTopN(), java.awt.BorderLayout.NORTH);\r
1526 jPanelFdfCTop.add(getJPanelFdfCTopS(), java.awt.BorderLayout.SOUTH);\r
1527 jPanelFdfCTop.add(getJPanelFdfCTopC(), java.awt.BorderLayout.CENTER);\r
1528 }\r
1529 return jPanelFdfCTop;\r
1530 }\r
1531\r
1532 /**\r
1533 * This method initializes jPanelFdfCBottom \r
1534 * \r
1535 * @return javax.swing.JPanel \r
1536 */\r
1537 private JPanel getJPanelFdfCBottom() {\r
1538 if (jPanelFdfCBottom == null) {\r
1539 jPanelFdfCBottom = new JPanel();\r
1540 jPanelFdfCBottom.setLayout(new BorderLayout());\r
1541 jPanelFdfCBottom.add(getJPanelFdfCBottomN(), java.awt.BorderLayout.NORTH);\r
1542 jPanelFdfCBottom.add(getJPanelFdfCBottomC(), java.awt.BorderLayout.CENTER);\r
1543 }\r
1544 return jPanelFdfCBottom;\r
1545 }\r
1546\r
1547 /**\r
1548 * This method initializes jPanelFdfCTopN \r
1549 * \r
1550 * @return javax.swing.JPanel \r
1551 */\r
1552 private JPanel getJPanelFdfCTopN() {\r
1553 if (jPanelFdfCTopN == null) {\r
1554 jLabelFvInFdf = new JLabel();\r
1555 jLabelFvInFdf.setText("FVs in Flash Definition File");\r
1556 jPanelFdfCTopN = new JPanel();\r
1557 jPanelFdfCTopN.add(jLabelFvInFdf, null);\r
1558 }\r
1559 return jPanelFdfCTopN;\r
1560 }\r
1561\r
1562 /**\r
1563 * This method initializes jPanelFdfCTopS \r
1564 * \r
1565 * @return javax.swing.JPanel \r
1566 */\r
1567 private JPanel getJPanelFdfCTopS() {\r
1568 if (jPanelFdfCTopS == null) {\r
1569 FlowLayout flowLayout1 = new FlowLayout();\r
1570 flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
1571 jPanelFdfCTopS = new JPanel();\r
1572 jPanelFdfCTopS.setLayout(flowLayout1);\r
1573 jPanelFdfCTopS.add(getJButtonFvInFdfOptions(), null);\r
1574 }\r
1575 return jPanelFdfCTopS;\r
1576 }\r
1577\r
1578 /**\r
1579 * This method initializes jPanelFdfCTopC \r
1580 * \r
1581 * @return javax.swing.JPanel \r
1582 */\r
1583 private JPanel getJPanelFdfCTopC() {\r
1584 if (jPanelFdfCTopC == null) {\r
1585 jPanelFdfCTopC = new JPanel();\r
1586 jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null);\r
1587 }\r
1588 return jPanelFdfCTopC;\r
1589 }\r
1590\r
1591 /**\r
1592 * This method initializes jPanelFdfCBottomN \r
1593 * \r
1594 * @return javax.swing.JPanel \r
1595 */\r
1596 private JPanel getJPanelFdfCBottomN() {\r
1597 if (jPanelFdfCBottomN == null) {\r
1598 jLabelFvAdditional = new JLabel();\r
1599 jLabelFvAdditional.setText("Additional FVs");\r
1600 jPanelFdfCBottomN = new JPanel();\r
1601 jPanelFdfCBottomN.add(jLabelFvAdditional, null);\r
1602 }\r
1603 return jPanelFdfCBottomN;\r
1604 }\r
1605\r
1606 /**\r
1607 * This method initializes jPanelFdfCBottomC \r
1608 * \r
1609 * @return javax.swing.JPanel \r
1610 */\r
1611 private JPanel getJPanelFdfCBottomC() {\r
1612 if (jPanelFdfCBottomC == null) {\r
1613 jPanelFdfCBottomC = new JPanel();\r
1614 jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);\r
1615 }\r
1616 return jPanelFdfCBottomC;\r
1617 }\r
1618\r
1619 /**\r
1620 * This method initializes jScrollPaneFvInFdf \r
1621 * \r
1622 * @return javax.swing.JScrollPane \r
1623 */\r
1624 private JScrollPane getJScrollPaneFvInFdf() {\r
1625 if (jScrollPaneFvInFdf == null) {\r
1626 jScrollPaneFvInFdf = new JScrollPane();\r
1627 jScrollPaneFvInFdf.setPreferredSize(new java.awt.Dimension(653,200));\r
1628 jScrollPaneFvInFdf.setViewportView(getJTableFvInFdf());\r
1629 }\r
1630 return jScrollPaneFvInFdf;\r
1631 }\r
1632\r
1633 /**\r
1634 * This method initializes jTableFvInFdf \r
1635 * \r
1636 * @return javax.swing.JTable \r
1637 */\r
1638 private JTable getJTableFvInFdf() {\r
1639 if (jTableFvInFdf == null) {\r
1640 jTableFvInFdf = new JTable();\r
1641 jTableFvInFdf.setRowHeight(20);\r
1642 jTableFvInFdf.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
1643 jTableFvInFdf.setModel(getFvInFdfTableModel());\r
1644 }\r
1645 return jTableFvInFdf;\r
1646 }\r
1647\r
1648 /**\r
1649 * This method initializes fvInFdfTableModel \r
1650 * \r
1651 * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel \r
1652 */\r
1653 private NonEditableTableModel getFvInFdfTableModel() {\r
1654 if (fvInFdfTableModel == null) {\r
1655 fvInFdfTableModel = new NonEditableTableModel();\r
1656 fvInFdfTableModel.addColumn("FV Name");\r
1657 fvInFdfTableModel.addColumn("Size");\r
1658 fvInFdfTableModel.addColumn("Corresponding File Name");\r
1659 }\r
1660 return fvInFdfTableModel;\r
1661 }\r
1662\r
1663 /**\r
1664 * This method initializes jButtonFvInFdfOptions \r
1665 * \r
1666 * @return javax.swing.JButton \r
1667 */\r
1668 private JButton getJButtonFvInFdfOptions() {\r
1669 if (jButtonFvInFdfOptions == null) {\r
1670 jButtonFvInFdfOptions = new JButton();\r
1671 jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
b411fc1f 1672 jButtonFvInFdfOptions.setEnabled(true);\r
3658f95e 1673 jButtonFvInFdfOptions.setText("Options");\r
1674 jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() {\r
1675 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1676 int selectedRow = jTableFvInFdf.getSelectedRow();\r
61919f8c 1677 if (selectedRow < 0) {\r
3658f95e 1678 return;\r
1679 }\r
b411fc1f 1680 String fvName = jTableFvInFdf.getValueAt(selectedRow, 0)+"";\r
72426064 1681 if (fvName.length() == 0) {\r
1682 return;\r
1683 }\r
b411fc1f 1684 DefaultTableModel dtm = getFvInFdfOptTableModel();\r
1685 new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
3658f95e 1686 }\r
1687 });\r
1688 }\r
1689 return jButtonFvInFdfOptions;\r
1690 }\r
b411fc1f 1691 \r
1692 private DefaultTableModel getFvInFdfOptTableModel() {\r
1693 if (fvInFdfOptTableModel == null) {\r
1694 fvInFdfOptTableModel = new FvOptsTableModel();\r
1695 fvInFdfOptTableModel.addColumn("Name");\r
1696 fvInFdfOptTableModel.addColumn("Value");\r
1697 Vector<Object> v = new Vector<Object>();\r
1698 v.add("EFI_BLOCK_SIZE");\r
1699 v.add("EFI_NUM_BLOCKS");\r
1700 v.add("EFI_FILE_NAME");\r
1701 fvInFdfOptTableModel.setVKeyWords(v);\r
1702 fvInFdfOptTableModel.setVNonEditableName(v);\r
1703 }\r
1704 return fvInFdfOptTableModel;\r
1705 }\r
72426064 1706 \r
1707 private DefaultTableModel getFvAdditionalOptTableModel() {\r
1708 if (fvAdditionalOptTableModel == null) {\r
1709 fvAdditionalOptTableModel = new FvOptsTableModel();\r
1710 fvAdditionalOptTableModel.addColumn("Name");\r
1711 fvAdditionalOptTableModel.addColumn("Value");\r
1712 Vector<Object> v = new Vector<Object>();\r
1713 v.add("EFI_BLOCK_SIZE");\r
1714 v.add("EFI_NUM_BLOCKS");\r
1715 v.add("EFI_FILE_NAME");\r
1716 fvAdditionalOptTableModel.setVNonEditableName(v);\r
1717 }\r
1718 return fvAdditionalOptTableModel;\r
1719 }\r
3658f95e 1720\r
1721 /**\r
1722 * This method initializes jScrollPaneFvAdditional \r
1723 * \r
1724 * @return javax.swing.JScrollPane \r
1725 */\r
1726 private JScrollPane getJScrollPaneFvAdditional() {\r
1727 if (jScrollPaneFvAdditional == null) {\r
1728 jScrollPaneFvAdditional = new JScrollPane();\r
1729 jScrollPaneFvAdditional.setPreferredSize(new java.awt.Dimension(653,200));\r
1730 jScrollPaneFvAdditional.setViewportView(getJTableFvAdditional());\r
1731 }\r
1732 return jScrollPaneFvAdditional;\r
1733 }\r
1734\r
1735 /**\r
1736 * This method initializes jTableFvAdditional \r
1737 * \r
1738 * @return javax.swing.JTable \r
1739 */\r
1740 private JTable getJTableFvAdditional() {\r
1741 if (jTableFvAdditional == null) {\r
1742 jTableFvAdditional = new JTable();\r
1743 jTableFvAdditional.setRowHeight(20);\r
1744 jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
98c20797 1745 jTableFvAdditional.setModel(getFvAdditionalTableModel());\r
eb8ea829 1746 \r
1747 jTableFvAdditional.getSelectionModel().addListSelectionListener(new ListSelectionListener() {\r
1748 public void valueChanged(ListSelectionEvent e) {\r
1749 if (e.getValueIsAdjusting()) {\r
1750 return;\r
1751 }\r
1752 ListSelectionModel lsm = (ListSelectionModel) e.getSource();\r
1753 if (lsm.isSelectionEmpty()) {\r
1754 return;\r
1755 } else {\r
1756 selectedRowInFvAdditionalTable = lsm.getMinSelectionIndex();\r
1757 oldFvName = jTableFvAdditional.getValueAt(selectedRowInFvAdditionalTable, 0)+"";\r
1758 }\r
1759 }\r
1760 });\r
1761 \r
1762 jTableFvAdditional.getModel().addTableModelListener(new TableModelListener() {\r
1763 public void tableChanged(TableModelEvent arg0) {\r
1764 // TODO Auto-generated method stub\r
1765 int row = arg0.getFirstRow();\r
1766 int col = arg0.getColumn();\r
1767 TableModel m = (TableModel) arg0.getSource();\r
701d95b3 1768 \r
eb8ea829 1769 if (arg0.getType() == TableModelEvent.UPDATE) {\r
1770 if (col == 0) {\r
1771 String newFvName = m.getValueAt(row, 0) + "";\r
1772 if (newFvName.equals(oldFvName)) {\r
1773 return;\r
1774 }\r
1775 if (fvNameExists(newFvName)) {\r
1776 JOptionPane.showMessageDialog(frame, "This FV already exists. Please choose another FV name.");\r
1777 m.setValueAt(oldFvName, row, 0);\r
1778 return;\r
1779 }\r
1780 \r
1781 tabIndexForFv = jTabbedPane.indexOfTab(oldFvName);\r
1782 if (tabIndexForFv >= startIndexOfDynamicTab) {\r
1783 jTabbedPane.setTitleAt(tabIndexForFv, newFvName);\r
1784 // change FvName in UserExtensions\r
1785 ffc.updateBuildOptionsUserExtensions(oldFvName, newFvName);\r
1786 // change FvBinding in ModuleSA\r
1787 ffc.appendFvBindingFor(oldFvName, newFvName);\r
1788 ffc.removeFvBindingAll(oldFvName);\r
1789 // change FvImageNames in Flash\r
1790 ffc.updateFvImageNameAll(oldFvName, newFvName);\r
1791 \r
1792 } else {\r
1793 jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, ""));\r
1794 // Add FvImageNames in Flash\r
1795 String[] fvNames = {newFvName};\r
54aa8673 1796 ffc.addFvImageFvImageNames(fvNames);\r
eb8ea829 1797 }\r
701d95b3 1798 docConsole.setSaved(false);\r
eb8ea829 1799 oldFvName = newFvName;\r
1800 }\r
701d95b3 1801 \r
72426064 1802 if (col == 1 && !sizeFromOptionDlg) {\r
701d95b3 1803 String fvSize = m.getValueAt(row, col) + "";\r
1804 if (!DataValidation.isInt(fvSize) && !DataValidation.isHexDoubleWordDataType(fvSize)) {\r
1805 JOptionPane.showMessageDialog(frame, "FV size should be Integer or Hex format.");\r
1806 return;\r
1807 }\r
1808 HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
1809 ffc.getFvImagesFvImageOptions(oldFvName, mFvOpts);\r
1810 String blkSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
1811 if (blkSize == null) {\r
72426064 1812 if (determinedFvBlockSize != null) {\r
1813 blkSize = determinedFvBlockSize;\r
1814 }\r
1815 else {\r
1816 blkSize = defaultBlkSize;\r
1817 }\r
1818 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", blkSize);\r
701d95b3 1819 int fs = Integer.decode(fvSize);\r
72426064 1820 int bs = Integer.decode(blkSize);\r
701d95b3 1821 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
1822 docConsole.setSaved(false);\r
1823 }\r
1824 else {\r
1825 if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
1826 int retVal = JOptionPane.showConfirmDialog(frame, "Confirm", "FPD file contains error block size format. Would you like to replace it with a default value?", JOptionPane.YES_NO_OPTION);\r
1827 if (retVal == JOptionPane.YES_OPTION) {\r
72426064 1828 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", defaultBlkSize);\r
701d95b3 1829 int fs = Integer.decode(fvSize);\r
72426064 1830 int bs = Integer.decode(defaultBlkSize);\r
701d95b3 1831 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
1832 docConsole.setSaved(false);\r
1833 return;\r
1834 }\r
1835 else {\r
1836 return;\r
1837 }\r
1838 \r
1839 }\r
1840 int fs = Integer.decode(fvSize);\r
1841 int bs = Integer.decode(blkSize);\r
1842 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"");\r
1843 docConsole.setSaved(false);\r
1844 }\r
1845 }\r
1846 \r
72426064 1847 if (col == 2 && !fileFromOptionDlg) {\r
701d95b3 1848 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+"");\r
1849 docConsole.setSaved(false);\r
1850 }\r
1851 \r
eb8ea829 1852 }\r
1853 }\r
1854 });\r
3658f95e 1855 }\r
1856 return jTableFvAdditional;\r
1857 }\r
eb8ea829 1858 \r
98c20797 1859 private boolean fvNameExistsInFvInFdfTable (String fvName) {\r
eb8ea829 1860 for (int i = 0; i < jTableFvInFdf.getRowCount(); ++i) {\r
1861 if (fvInFdfTableModel.getValueAt(i, 0).equals(fvName)) {\r
1862 return true;\r
1863 }\r
1864 }\r
98c20797 1865 return false;\r
1866 }\r
1867 \r
1868 private boolean fvNameExists (String fvName) {\r
1869 if (fvNameExistsInFvInFdfTable(fvName)) {\r
1870 return true;\r
1871 }\r
1872 \r
eb8ea829 1873 for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) {\r
98c20797 1874 if (fvAdditionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) {\r
eb8ea829 1875 return true;\r
1876 }\r
1877 }\r
1878 return false;\r
1879 }\r
3658f95e 1880\r
1881 /**\r
98c20797 1882 * This method initializes fvAdditionalTableModel \r
3658f95e 1883 * \r
1884 * @return javax.swing.table.DefaultTableModel \r
1885 */\r
98c20797 1886 private DefaultTableModel getFvAdditionalTableModel() {\r
1887 if (fvAdditionalTableModel == null) {\r
1888 fvAdditionalTableModel = new DefaultTableModel();\r
1889 fvAdditionalTableModel.addColumn("FV Name");\r
1890 fvAdditionalTableModel.addColumn("Size");\r
1891 fvAdditionalTableModel.addColumn("Corresponding File Name");\r
3658f95e 1892 }\r
98c20797 1893 return fvAdditionalTableModel;\r
3658f95e 1894 }\r
1895\r
1896 /**\r
1897 * This method initializes jButtonAddFv \r
1898 * \r
1899 * @return javax.swing.JButton \r
1900 */\r
1901 private JButton getJButtonAddFv() {\r
1902 if (jButtonAddFv == null) {\r
1903 jButtonAddFv = new JButton();\r
1904 jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20));\r
eb8ea829 1905 jButtonAddFv.setEnabled(true);\r
3658f95e 1906 jButtonAddFv.setText("New");\r
2b70a636 1907 jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {\r
1908 public void actionPerformed(java.awt.event.ActionEvent e) {\r
eb8ea829 1909 if (jTableFvAdditional.isEditing()) {\r
1910 jTableFvAdditional.getCellEditor().stopCellEditing();\r
1911 }\r
1912 String[] row = {"", "", ""};\r
98c20797 1913 fvAdditionalTableModel.addRow(row);\r
2b70a636 1914 }\r
1915 });\r
3658f95e 1916 }\r
1917 return jButtonAddFv;\r
1918 }\r
1919\r
1920 /**\r
1921 * This method initializes jButtonDelFv \r
1922 * \r
1923 * @return javax.swing.JButton \r
1924 */\r
1925 private JButton getJButtonDelFv() {\r
1926 if (jButtonDelFv == null) {\r
1927 jButtonDelFv = new JButton();\r
1928 jButtonDelFv.setPreferredSize(new java.awt.Dimension(80,20));\r
98c20797 1929 jButtonDelFv.setEnabled(true);\r
3658f95e 1930 jButtonDelFv.setText("Delete");\r
2b70a636 1931 jButtonDelFv.addActionListener(new java.awt.event.ActionListener() {\r
1932 public void actionPerformed(java.awt.event.ActionEvent e) {\r
98c20797 1933 //delete row in FvAdditional table.\r
1934 int selectedRow = jTableFvAdditional.getSelectedRow();\r
1935 if (selectedRow < 0) {\r
1936 return;\r
1937 }\r
1938 String fvName = fvAdditionalTableModel.getValueAt(selectedRow, 0) + "";\r
1939 fvAdditionalTableModel.removeRow(selectedRow);\r
1940 //\r
1941 //delete tab with selected FV name.\r
1942 //\r
1943 jTabbedPane.removeTabAt(jTabbedPane.indexOfTab(fvName));\r
1944 //delete FV Name from FvImages element.\r
1945 ffc.updateFvImageNameAll(fvName, null);\r
1946 //delete FvBinding from ModuleSA.\r
1947 ffc.removeFvBindingAll(fvName);\r
1948 docConsole.setSaved(false);\r
2b70a636 1949 }\r
1950 });\r
3658f95e 1951 }\r
1952 return jButtonDelFv;\r
1953 }\r
1954\r
1955 /**\r
1956 * This method initializes jButtonAddFvOptions \r
1957 * \r
1958 * @return javax.swing.JButton \r
1959 */\r
1960 private JButton getJButtonAddFvOptions() {\r
1961 if (jButtonAddFvOptions == null) {\r
1962 jButtonAddFvOptions = new JButton();\r
1963 jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
b411fc1f 1964 jButtonAddFvOptions.setEnabled(true);\r
3658f95e 1965 jButtonAddFvOptions.setText("Options");\r
2b70a636 1966 jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {\r
1967 public void actionPerformed(java.awt.event.ActionEvent e) {\r
72426064 1968 int selectedRow = jTableFvAdditional.getSelectedRow();\r
1969 if (selectedRow < 0) {\r
1970 return;\r
1971 }\r
1972 String fvName = jTableFvAdditional.getValueAt(selectedRow, 0)+"";\r
1973 String oldFvSize = jTableFvAdditional.getValueAt(selectedRow, 1)+"";\r
1974 String oldFileName = jTableFvAdditional.getValueAt(selectedRow, 2)+"";\r
1975 if (fvName.length() == 0) {\r
1976 return;\r
1977 }\r
1978 DefaultTableModel dtm = getFvAdditionalOptTableModel();\r
1979 new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
1980 \r
1981 String[] updatedFvInfo = getBasicFvInfo (fvName);\r
1982 if (!oldFvSize.equalsIgnoreCase(updatedFvInfo[1])) {\r
1983 sizeFromOptionDlg = true;\r
1984 jTableFvAdditional.setValueAt(updatedFvInfo[1], selectedRow, 1);\r
1985 sizeFromOptionDlg = false;\r
1986 }\r
1987 if (!oldFileName.equals(updatedFvInfo[2])) {\r
1988 fileFromOptionDlg = true;\r
1989 jTableFvAdditional.setValueAt(updatedFvInfo[2], selectedRow, 2);\r
1990 fileFromOptionDlg = false;\r
1991 }\r
2b70a636 1992 }\r
1993 });\r
3658f95e 1994 }\r
1995 return jButtonAddFvOptions;\r
1996 }\r
3658f95e 1997 \r
72426064 1998 private String[] getBasicFvInfo (String fvName) {\r
1999 HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
2000 ffc.getFvImagesFvImageOptions(fvName, mFvOpts);\r
2001 String bSize = "";\r
2002 String numBlks = "";\r
2003 String fvSize = "";\r
2004 String fvFile = "";\r
2005 if (mFvOpts.get("EFI_FILE_NAME") != null) {\r
2006 fvFile = mFvOpts.get("EFI_FILE_NAME");\r
2007 }\r
2008 if (mFvOpts.get("EFI_BLOCK_SIZE") != null && mFvOpts.get("EFI_NUM_BLOCKS") != null) {\r
2009 bSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
2010 numBlks = mFvOpts.get("EFI_NUM_BLOCKS");\r
2011 boolean blockSizeWellFormat = true;\r
2012 boolean numOfBlockWellFormat = true;\r
2013 if (!DataValidation.isHexDoubleWordDataType(bSize) && !DataValidation.isInt(bSize)) {\r
2014 blockSizeWellFormat = false;\r
2015 JOptionPane.showMessageDialog(frame, fvName + " block size bad format.");\r
2016 } \r
2017 if (!DataValidation.isHexDoubleWordDataType(numBlks) && !DataValidation.isInt(numBlks)) {\r
2018 numOfBlockWellFormat = false;\r
2019 JOptionPane.showMessageDialog(frame, fvName + " number of blocks bad format.");\r
2020 }\r
2021 if (blockSizeWellFormat && numOfBlockWellFormat) {\r
2022 int size = Integer.decode(bSize);\r
2023 int num = Integer.decode(numBlks);\r
2024 fvSize = "0x" + Integer.toHexString(size*num);\r
2025 }\r
2026 }\r
2027 \r
2028 return new String[]{fvName, fvSize, fvFile};\r
2029\r
2030 }\r
2031 \r
2032 /**\r
2033 * This method initializes jPanelBgFvName \r
2034 * \r
2035 * @return javax.swing.JPanel \r
2036 */\r
2037 private JPanel getJPanelBgFvName() {\r
2038 if (jPanelBgFvName == null) {\r
2039 jPanelBgFvName = new JPanel();\r
2040 jPanelBgFvName.setPreferredSize(new java.awt.Dimension(80,55));\r
54aa8673 2041 jPanelBgFvName.add(getJButtonFvNameAdd(), null);\r
2042 jPanelBgFvName.add(getJButtonFvNameDel(), null);\r
72426064 2043 }\r
2044 return jPanelBgFvName;\r
2045 }\r
2046\r
2047 /**\r
2048 * This method initializes jPanelBgFvImage \r
2049 * \r
2050 * @return javax.swing.JPanel \r
2051 */\r
2052 private JPanel getJPanelBgFvImage() {\r
2053 if (jPanelBgFvImage == null) {\r
2054 jPanelBgFvImage = new JPanel();\r
2055 jPanelBgFvImage.setPreferredSize(new java.awt.Dimension(150,100));\r
2056 jPanelBgFvImage.add(getJButtonAddFvImage(), null);\r
2057 jPanelBgFvImage.add(getJButtonDelFvImage(), null);\r
2058 jPanelBgFvImage.add(getJButtonUpdateFvImage(), null);\r
2059 }\r
2060 return jPanelBgFvImage;\r
2061 }\r
2062\r
2063 /**\r
2064 * This method initializes jPanelW \r
2065 * \r
2066 * @return javax.swing.JPanel \r
2067 */\r
2068 private JPanel getJPanelW() {\r
2069 if (jPanelW == null) {\r
2070 jPanelW = new JPanel();\r
2071 jPanelW.add(getJPanelBgFvImage(), null);\r
2072 }\r
2073 return jPanelW;\r
2074 }\r
2075\r
a13899c5 2076 /**\r
2077 * @param args\r
2078 */\r
2079 public static void main(String[] args) {\r
2080 // TODO Auto-generated method stub\r
2081 new FpdFlash().setVisible(true);\r
2082 }\r
2083\r
2084 /**\r
2085 * This method initializes this\r
2086 * \r
2087 * @return void\r
2088 */\r
2089 private void initialize() {\r
72426064 2090 this.setSize(660, 650);\r
a13899c5 2091 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
2092 this.setContentPane(getJContentPane());\r
2093 this.setTitle("FPD Flash Definitions");\r
44053733 2094 this.addInternalFrameListener(new InternalFrameAdapter(){\r
2095 public void internalFrameDeactivated(InternalFrameEvent e){\r
4da2e625 2096 if (jTableFvProp.isEditing()) {\r
2097 jTableFvProp.getCellEditor().stopCellEditing();\r
44053733 2098 }\r
4da2e625 2099 if (jTableFvImageNames.isEditing()) {\r
2100 jTableFvImageNames.getCellEditor().stopCellEditing();\r
44053733 2101 }\r
4da2e625 2102 if (jTableFvInfo.isEditing()) {\r
2103 jTableFvInfo.getCellEditor().stopCellEditing();\r
44053733 2104 }\r
98c20797 2105 if (jTableFvAdditional.isEditing()) {\r
2106 jTableFvAdditional.getCellEditor().stopCellEditing();\r
2107 }\r
44053733 2108 }\r
2109 });\r
a13899c5 2110 }\r
2111\r
2112 private void init(FpdFileContents ffc) {\r
72426064 2113 initFvAttributes();\r
3658f95e 2114 \r
2115 jTextFieldFdf.setText("");\r
2116 String fdfFile = ffc.getFlashDefinitionFile();\r
701d95b3 2117 if (fdfFile != null && fdfFile.length() > 0) {\r
3658f95e 2118 jTextFieldFdf.setText(fdfFile);\r
701d95b3 2119 String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;\r
2120 initFvInFdfTable(fdfPath);\r
3658f95e 2121 }\r
2122 \r
eb8ea829 2123 initFvAdditionalTable();\r
a13899c5 2124 }\r
2125 \r
ae0d4fd2 2126 private void getOptionNameValue(Map<String, String> m){\r
4da2e625 2127 for (int i = 0; i < jTableFvImageOpts.getRowCount(); ++i) {\r
ae0d4fd2 2128 m.put(fvOptionTableModel.getValueAt(i, 0)+"", fvOptionTableModel.getValueAt(i, 1)+"");\r
a13899c5 2129 }\r
2130 }\r
2131 /**\r
2132 * This method initializes jContentPane\r
2133 * \r
2134 * @return javax.swing.JPanel\r
2135 */\r
2136 private JPanel getJContentPane() {\r
2137 if (jContentPane == null) {\r
2138 jContentPane = new JPanel();\r
2139 jContentPane.setLayout(new BorderLayout());\r
4da2e625 2140 jContentPane.add(getJPanelContentEast(), java.awt.BorderLayout.EAST);\r
2141 jContentPane.add(getJPanelContentSouth(), java.awt.BorderLayout.SOUTH);\r
2142 jContentPane.add(getJPanelContentWest(), java.awt.BorderLayout.WEST);\r
2143 jContentPane.add(getJPanelContentNorth(), java.awt.BorderLayout.NORTH);\r
a13899c5 2144 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
2145 }\r
2146 return jContentPane;\r
2147 }\r
3658f95e 2148 \r
701d95b3 2149 private void getFlashInfoFromFdf (String fdfPath) {\r
98c20797 2150 File fdf = new File(fdfPath);\r
2151 if (!fdf.exists()) {\r
2152 return;\r
2153 }\r
2154 int lines = 0;\r
2155\r
2156 try {\r
2157 FileReader reader = new FileReader(fdf);\r
2158 BufferedReader in = new BufferedReader(reader);\r
2159 String str;\r
2160\r
2161 while ((str = in.readLine()) != null) {\r
2162 ++lines;\r
2163 str = str.trim();\r
2164 //\r
2165 // skip empty line, comment (start with //) \r
2166 //\r
2167 if (str.length() == 0 || str.startsWith("//")) {\r
2168 continue;\r
2169 }\r
2170 //\r
2171 // ErasePolarity\r
2172 //\r
2173 if (str.startsWith("ErasePolarity")) {\r
701d95b3 2174 erasePolarity = str.substring(str.indexOf("=") + 1, str.lastIndexOf(",")).trim();\r
98c20797 2175 }\r
2176 //\r
2177 // dig into Block section.\r
2178 //\r
2179 if (str.startsWith("Block") && str.endsWith("}")) {\r
2180 String[] blockSec = str.split(",");\r
2181 String nv = blockSec[1].trim();\r
2182 String[] sizeSec = nv.split("=");\r
2183 vBlockSize.add(sizeSec[1].trim());\r
2184 }\r
2185 \r
2186 }\r
2187 \r
2188 reader.close();\r
2189 in.close();\r
2190 }\r
2191 catch (Exception e) {\r
2192 \r
2193 }\r
2194 }\r
2195 \r
3658f95e 2196 private void getFvInfoFromFdf(String fdfPath, Vector<FvInfoFromFdf> vFvInfo) {\r
2197 File fdf = new File(fdfPath);\r
2198 if (!fdf.exists()) {\r
2199 return;\r
2200 }\r
2201 int lines = 0;\r
2202\r
2203 try {\r
2204 FileReader reader = new FileReader(fdf);\r
2205 BufferedReader in = new BufferedReader(reader);\r
2206 String str;\r
2207\r
2208 while ((str = in.readLine()) != null) {\r
2209 ++lines;\r
2210 str = str.trim();\r
2211 //\r
2212 // skip empty line, comment (start with //) \r
2213 //\r
2214 if (str.length() == 0 || str.startsWith("//")) {\r
2215 continue;\r
2216 }\r
2217 //\r
2218 // dig into Region {} section, create FvInfoFromFdf object for it.\r
2219 //\r
2220 if (str.startsWith("Region") && str.endsWith("{")) {\r
2221 FvInfoFromFdf fvInfo = new FvInfoFromFdf();\r
2222 boolean nameFound = false;\r
2223 boolean sizeFound = false;\r
2224 while ((str = in.readLine()) != null) {\r
2225 ++lines;\r
2226 str = str.trim();\r
2227 //\r
2228 // skip empty line, comment (start with //) \r
2229 //\r
2230 if (str.length() == 0 || str.startsWith("//")) {\r
2231 continue;\r
2232 }\r
2233 \r
2234 if (str.startsWith("Name")) {\r
2235 int firstQuote = str.indexOf("\"");\r
2236 int lastQuote = str.lastIndexOf("\"");\r
2237 fvInfo.setFvName(str.substring(firstQuote + 1, lastQuote));\r
2238 nameFound = true;\r
2239 }\r
2240 \r
2241 if (str.startsWith("Size")) {\r
2242 int equalIndex = str.indexOf("=");\r
2243 int commaIndex = str.indexOf(",");\r
2244 fvInfo.setSize(str.substring(equalIndex + 1, commaIndex).trim());\r
2245 sizeFound = true;\r
2246 }\r
2247 \r
2248 if (nameFound && sizeFound) {\r
2249 break;\r
2250 }\r
2251 }\r
2252 \r
2253 vFvInfo.add(fvInfo);\r
2254 }\r
2255 //\r
2256 // dig into File {} section, supply file name information to existing FvInfoFromFdf object.\r
2257 //\r
2258 if (str.startsWith("File")) {\r
2259 boolean fileNameFound = false;\r
2260 boolean fvFound = false;\r
2261 String fileName = "";\r
2262 String fvName = "";\r
2263 while ((str = in.readLine()) != null) {\r
2264 ++lines;\r
2265 str = str.trim();\r
2266 //\r
2267 // skip empty line, comment (start with //) \r
2268 //\r
2269 if (str.length() == 0 || str.startsWith("//")) {\r
2270 continue;\r
2271 }\r
2272 \r
2273 if (str.startsWith("Name")) {\r
2274 int firstQuote = str.indexOf("\"");\r
2275 int lastQuote = str.lastIndexOf("\"");\r
2276 fileName = str.substring(firstQuote + 1, lastQuote);\r
2277 fileNameFound = true;\r
2278 }\r
2279 \r
2280 if (str.startsWith("Region")) {\r
2281 int firstQuote = str.indexOf("\"");\r
2282 int lastQuote = str.lastIndexOf("\"");\r
2283 fvName = str.substring(firstQuote + 1, lastQuote);\r
2284 fvFound = true;\r
2285 }\r
2286 \r
2287 if (fileNameFound && fvFound) {\r
2288 break;\r
2289 }\r
2290 }\r
2291 \r
2292 for (int i = 0; i <vFvInfo.size(); ++i) {\r
2293 if (vFvInfo.get(i).getFvName().equals(fvName)) {\r
2294 vFvInfo.get(i).setEfiFileName(fileName);\r
2295 }\r
2296 }\r
2297 }\r
2298 \r
2299 }\r
2b70a636 2300 \r
2301 reader.close();\r
2302 in.close();\r
2303 }\r
2304 catch (Exception e) {\r
3658f95e 2305 \r
2306 }\r
2307\r
2308 }\r
2309 \r
61919f8c 2310 private class ModuleOrderPane extends JPanel {\r
2311\r
2312 /**\r
2313 * \r
2314 */\r
2315 private static final long serialVersionUID = 1L;\r
2316 private JPanel jPanelModOrderN = null;\r
2317 private JPanel jPanelModOrderS = null;\r
2318 private JPanel jPanelModOrderC = null;\r
2319 private JScrollPane jScrollPaneModInFv = null;\r
2320 private JTable jTableModInFv = null;\r
2321 private JPanel jPanelController = null;\r
2322 private JScrollPane jScrollPaneFpdModules = null;\r
2323 private JTable jTableFpdModules = null;\r
2324 private JButton jButtonUp = null;\r
2325 private JButton jButtonInsert = null;\r
2326 private JButton jButtonRemove = null;\r
2327 private JButton jButtonDown = null;\r
2328 private JButton jButtonOk = null;\r
2329 private JButton jButtonCancel = null;\r
2330 private NonEditableTableModel modInFvTableModel = null;\r
2331 private NonEditableTableModel fpdModTableModel = null;\r
2b70a636 2332 private HashMap<String, ModuleIdentification> mGuidToModuleId = null;\r
2333 private ArrayList<String> listModGuidInFv = null;\r
2334 private String title = null;\r
2335 private String outputFileName = null;\r
61919f8c 2336 \r
2b70a636 2337 public ModuleOrderPane(String tabTitle, String file) {\r
61919f8c 2338 super(new BorderLayout());\r
2b70a636 2339 title = tabTitle;\r
2340 outputFileName = file;\r
2341 mGuidToModuleId = new HashMap<String, ModuleIdentification>();\r
2342 listModGuidInFv = new ArrayList<String>();\r
61919f8c 2343 add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH);\r
2344 add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH);\r
2345 add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER);\r
2b70a636 2346 showModulesInFv(title);\r
2347 showAllModulesInPlatform();\r
61919f8c 2348 }\r
2349 \r
2350 private void showModulesInFv(String fvName) {\r
2351 int size = ffc.getUserExtsIncModCount(fvName);\r
2352 \r
2353 if (size != -1) {\r
2354 String[][] saa = new String[size][2];\r
2355 ffc.getUserExtsIncMods(fvName, saa);\r
2356\r
2357 for (int i = 0; i < size; ++i) {\r
2b70a636 2358 listModGuidInFv.add(saa[i][0].toLowerCase());\r
61919f8c 2359 String name = getModuleName(saa[i][0]);\r
2360 String[] row = { name };\r
2361 modInFvTableModel.addRow(row);\r
2362 }\r
2363 }\r
2364 //\r
2365 // From ModuleSAs, get module guids with FvBinding = fvName.\r
2366 //\r
2367 Vector<String> vGuid = new Vector<String>();\r
2368 ffc.getFrameworkModuleGuid(fvName, vGuid);\r
2369 //\r
2370 // If BuildOptions->UserExtensions already contain these module info,\r
2371 // no need to add them into table again.\r
2372 //\r
2373 Iterator<String> iter = vGuid.iterator();\r
2374 while (iter.hasNext()){\r
2375 String guid = iter.next();\r
2b70a636 2376// String moduleName = getModuleName(guid);\r
2377// if (existedInTable(moduleName, modInFvTableModel)) {\r
2378// vGuid.remove(guid);\r
2379// }\r
2380 if (!listModGuidInFv.contains(guid.toLowerCase())) {\r
2381 String[] row = {getModuleName(guid)};\r
2382 modInFvTableModel.addRow(row);\r
61919f8c 2383 }\r
2384 }\r
2b70a636 2385\r
61919f8c 2386 }\r
2387 \r
2388 private void showAllModulesInPlatform() {\r
2389 int size = ffc.getFrameworkModulesCount();\r
2390 String[][] saa = new String[size][5];\r
2391 ffc.getFrameworkModulesInfo(saa);\r
2392 \r
2393 for (int i = 0; i < size; ++i) {\r
2394 String name = getModuleName(saa[i][0]);\r
2395 if (existedInTable(name, modInFvTableModel) || existedInTable(name, fpdModTableModel)) {\r
2396 continue;\r
2397 }\r
2398 String[] row = {name};\r
2399 fpdModTableModel.addRow(row);\r
2400 }\r
2401 \r
2402 TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
2403 sorter.setSortState(0, TableSorter.ASCENDING);\r
2404 }\r
2405 \r
2406 private String getModuleName (String guid) {\r
2407 \r
2408 for (int i = 0; i < GlobalData.vModuleList.size(); ++i) {\r
2b70a636 2409 ModuleIdentification mi = GlobalData.vModuleList.get(i);\r
2410 String mg = mi.getGuid();\r
61919f8c 2411 if (mg == null) {\r
2412 continue;\r
2413 }\r
2414 if (mg.equalsIgnoreCase(guid)) {\r
2b70a636 2415 mGuidToModuleId.put(guid.toLowerCase(), mi);\r
2416 return mi.getName();\r
61919f8c 2417 }\r
2418 }\r
2419 \r
2420 return "";\r
2421 }\r
2422 \r
2423 private boolean existedInTable (String name, DefaultTableModel model) {\r
2424 int size = model.getDataVector().size();\r
2425 for (int i = 0; i < size; ++i) {\r
2426 if (((Vector)model.getDataVector().elementAt(i)).contains(name)) {\r
2427 return true;\r
2428 }\r
2429 }\r
2430 return false;\r
2431 }\r
2432 \r
2b70a636 2433 \r
2434 \r
61919f8c 2435 /**\r
2436 * This method initializes jPanelModOrderN \r
2437 * \r
2438 * @return javax.swing.JPanel \r
2439 */\r
2440 private JPanel getJPanelModOrderN() {\r
2441 if (jPanelModOrderN == null) {\r
2442 jPanelModOrderN = new JPanel();\r
2443 }\r
2444 return jPanelModOrderN;\r
2445 }\r
2446\r
2447 /**\r
2448 * This method initializes jPanelModOrderS \r
2449 * \r
2450 * @return javax.swing.JPanel \r
2451 */\r
2452 private JPanel getJPanelModOrderS() {\r
2453 if (jPanelModOrderS == null) {\r
2454 FlowLayout flowLayout6 = new FlowLayout();\r
2455 flowLayout6.setAlignment(java.awt.FlowLayout.RIGHT);\r
2456 jPanelModOrderS = new JPanel();\r
2457 jPanelModOrderS.setLayout(flowLayout6);\r
2458 jPanelModOrderS.add(getJButtonOk(), null);\r
2459 jPanelModOrderS.add(getJButtonCancel(), null);\r
2460 }\r
2461 return jPanelModOrderS;\r
2462 }\r
2463\r
2464 /**\r
2465 * This method initializes jPanelModOrderC \r
2466 * \r
2467 * @return javax.swing.JPanel \r
2468 */\r
2469 private JPanel getJPanelModOrderC() {\r
2470 if (jPanelModOrderC == null) {\r
2471 jPanelModOrderC = new JPanel();\r
2472 jPanelModOrderC.add(getJScrollPaneModInFv(), null);\r
2473 jPanelModOrderC.add(getJPanelController(), null);\r
2474 jPanelModOrderC.add(getJScrollPaneFpdModules(), null);\r
2475 }\r
2476 return jPanelModOrderC;\r
2477 }\r
2478\r
2479 /**\r
2480 * This method initializes jScrollPaneModInFv \r
2481 * \r
2482 * @return javax.swing.JScrollPane \r
2483 */\r
2484 private JScrollPane getJScrollPaneModInFv() {\r
2485 if (jScrollPaneModInFv == null) {\r
2486 jScrollPaneModInFv = new JScrollPane();\r
2487 jScrollPaneModInFv.setPreferredSize(new java.awt.Dimension(200,500));\r
2488 jScrollPaneModInFv.setViewportView(getJTableModInFv());\r
2489 }\r
2490 return jScrollPaneModInFv;\r
2491 }\r
2492\r
2493 /**\r
2494 * This method initializes jTableModInFv \r
2495 * \r
2496 * @return javax.swing.JTable \r
2497 */\r
2498 private JTable getJTableModInFv() {\r
2499 if (jTableModInFv == null) {\r
2500 modInFvTableModel = new NonEditableTableModel();\r
2501 modInFvTableModel.addColumn("Module Orders in FV");\r
2502 jTableModInFv = new JTable(modInFvTableModel);\r
2503 jTableModInFv.setRowHeight(20);\r
2504 jTableModInFv.setShowGrid(false);\r
2b70a636 2505 \r
61919f8c 2506 }\r
2507 return jTableModInFv;\r
2508 }\r
2509\r
2510 /**\r
2511 * This method initializes jPanelController \r
2512 * \r
2513 * @return javax.swing.JPanel \r
2514 */\r
2515 private JPanel getJPanelController() {\r
2516 if (jPanelController == null) {\r
2517 FlowLayout flowLayout5 = new FlowLayout();\r
2518 flowLayout5.setVgap(50);\r
2519 flowLayout5.setHgap(50);\r
2520 jPanelController = new JPanel();\r
2521 jPanelController.setLayout(flowLayout5);\r
2522 jPanelController.setPreferredSize(new java.awt.Dimension(150,500));\r
2523 jPanelController.add(getJButtonUp(), null);\r
2524 jPanelController.add(getJButtonInsert(), null);\r
2525 jPanelController.add(getJButtonRemove(), null);\r
2526 jPanelController.add(getJButtonDown(), null);\r
2527 }\r
2528 return jPanelController;\r
2529 }\r
2530\r
2531 /**\r
2532 * This method initializes jScrollPaneFpdModules \r
2533 * \r
2534 * @return javax.swing.JScrollPane \r
2535 */\r
2536 private JScrollPane getJScrollPaneFpdModules() {\r
2537 if (jScrollPaneFpdModules == null) {\r
2538 jScrollPaneFpdModules = new JScrollPane();\r
2539 jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(200,500));\r
2540 jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
2541 }\r
2542 return jScrollPaneFpdModules;\r
2543 }\r
2544\r
2545 /**\r
2546 * This method initializes jTableFpdModules \r
2547 * \r
2548 * @return javax.swing.JTable \r
2549 */\r
2550 private JTable getJTableFpdModules() {\r
2551 if (jTableFpdModules == null) {\r
2552 fpdModTableModel = new NonEditableTableModel();\r
2553 TableSorter sorter = new TableSorter(fpdModTableModel);\r
2554 jTableFpdModules = new JTable(sorter);\r
2555 jTableFpdModules.setRowHeight(20);\r
2556 jTableFpdModules.setShowGrid(false);\r
2557 fpdModTableModel.addColumn("Modules in Platform");\r
2b70a636 2558\r
61919f8c 2559 }\r
2560 return jTableFpdModules;\r
2561 }\r
2562\r
2563 /**\r
2564 * This method initializes jButtonUp \r
2565 * \r
2566 * @return javax.swing.JButton \r
2567 */\r
2568 private JButton getJButtonUp() {\r
2569 if (jButtonUp == null) {\r
2570 jButtonUp = new JButton();\r
2571 jButtonUp.setPreferredSize(new java.awt.Dimension(60,20));\r
2572 jButtonUp.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));\r
2573 jButtonUp.setText("^");\r
2574 jButtonUp.addActionListener(new java.awt.event.ActionListener() {\r
2575 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2576 int selectedRow = jTableModInFv.getSelectedRow();\r
2577 if (selectedRow <= 0) {\r
2578 return;\r
2579 }\r
2580 modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow - 1);\r
2581 jTableModInFv.changeSelection(selectedRow - 1, 0, false, false);\r
2582 }\r
2583 });\r
2584 }\r
2585 return jButtonUp;\r
2586 }\r
2587\r
2588 /**\r
2589 * This method initializes jButtonInsert \r
2590 * \r
2591 * @return javax.swing.JButton \r
2592 */\r
2593 private JButton getJButtonInsert() {\r
2594 if (jButtonInsert == null) {\r
2595 jButtonInsert = new JButton();\r
2596 jButtonInsert.setText("<<");\r
2597 jButtonInsert.setPreferredSize(new java.awt.Dimension(60,20));\r
2598 jButtonInsert.addActionListener(new java.awt.event.ActionListener() {\r
2599 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2600 int selectedRowRight = jTableFpdModules.getSelectedRow();\r
2601 if (selectedRowRight < 0) {\r
2602 return;\r
2603 }\r
2604 \r
2605 int rowInModel = ((TableSorter)jTableFpdModules.getModel()).getModelRowIndex(selectedRowRight);\r
2606 \r
2607 String[] row = {jTableFpdModules.getValueAt(selectedRowRight, 0)+""};\r
2608 int selectedRowLeft = jTableModInFv.getSelectedRow();\r
2609 if (selectedRowLeft < 0) {\r
2610 modInFvTableModel.addRow(row);\r
2611 jTableModInFv.changeSelection(jTableModInFv.getRowCount() - 1, 0, false, false);\r
61919f8c 2612 }\r
2613 else {\r
2614 modInFvTableModel.insertRow(selectedRowLeft, row);\r
2615 jTableModInFv.changeSelection(selectedRowLeft, 0, false, false);\r
2616 }\r
2b70a636 2617 fpdModTableModel.removeRow(rowInModel);\r
61919f8c 2618 }\r
2619 });\r
2620 }\r
2621 return jButtonInsert;\r
2622 }\r
2623\r
2624 /**\r
2625 * This method initializes jButtonRemove \r
2626 * \r
2627 * @return javax.swing.JButton \r
2628 */\r
2629 private JButton getJButtonRemove() {\r
2630 if (jButtonRemove == null) {\r
2631 jButtonRemove = new JButton();\r
2632 jButtonRemove.setPreferredSize(new java.awt.Dimension(60,20));\r
2633 jButtonRemove.setText(">>");\r
2634 jButtonRemove.addActionListener(new java.awt.event.ActionListener() {\r
2635 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2636 int selectedRowLeft = jTableModInFv.getSelectedRow();\r
2637 if (selectedRowLeft < 0) {\r
2638 return;\r
2639 }\r
2640 \r
2641 String[] row = {jTableModInFv.getValueAt(selectedRowLeft, 0)+""};\r
2642 fpdModTableModel.addRow(row);\r
2643 int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules\r
2644 .getRowCount() - 1];\r
2645 jTableFpdModules.changeSelection(viewIndex, 0, false, false);\r
2646 modInFvTableModel.removeRow(selectedRowLeft);\r
2647 }\r
2648 });\r
2649 }\r
2650 return jButtonRemove;\r
2651 }\r
2652\r
2653 /**\r
2654 * This method initializes jButtonDown \r
2655 * \r
2656 * @return javax.swing.JButton \r
2657 */\r
2658 private JButton getJButtonDown() {\r
2659 if (jButtonDown == null) {\r
2660 jButtonDown = new JButton();\r
2661 jButtonDown.setPreferredSize(new java.awt.Dimension(60,20));\r
2662 jButtonDown.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));\r
2663 jButtonDown.setText("v");\r
2664 jButtonDown.addActionListener(new java.awt.event.ActionListener() {\r
2665 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2666 int selectedRow = jTableModInFv.getSelectedRow();\r
2667 if (selectedRow >= jTableModInFv.getRowCount() - 1) {\r
2668 return;\r
2669 }\r
2670 modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow + 1);\r
2671 jTableModInFv.changeSelection(selectedRow + 1, 0, false, false);\r
2672 }\r
2673 });\r
2674 }\r
2675 return jButtonDown;\r
2676 }\r
2677 \r
2678 /**\r
2679 * This method initializes jButtonOk \r
2680 * \r
2681 * @return javax.swing.JButton \r
2682 */\r
2683 private JButton getJButtonOk() {\r
2684 if (jButtonOk == null) {\r
2685 jButtonOk = new JButton();\r
2686 jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
eb8ea829 2687 jButtonOk.setText("Ok");\r
2b70a636 2688 jButtonOk.addActionListener(new java.awt.event.ActionListener() {\r
2689 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2690 // need reset FvBindings in ModuleSA.\r
2691 ffc.removeFvBindingAll(title);\r
2692 //\r
2693 // collect module order information to store them into <BuildOptions> -> <UserExtensions>.\r
2694 // also update the FvBinding info in <ModuleSA>.\r
2695 //\r
2696 Vector<String[]> vModInFv = new Vector<String[]>();\r
2697 for (int i = 0; i < jTableModInFv.getRowCount(); ++i) {\r
2698 String moduleName = jTableModInFv.getValueAt(i, 0)+"";\r
2699 if (moduleName.length() == 0) {\r
2700 continue;\r
2701 }\r
2702 ModuleIdentification mi = null;\r
2703 Set<String> key = mGuidToModuleId.keySet();\r
2704 Iterator<String> iter = key.iterator();\r
2705 while (iter.hasNext()) {\r
2706 String guid = iter.next();\r
2707 mi = mGuidToModuleId.get(guid);\r
2708 if (mi.getName().equals(moduleName)) {\r
2709 String[] sa = {guid, WorkspaceProfile.getModuleBaseName(mi)};\r
2710 vModInFv.add(sa);\r
2711 ffc.updateFvBindingInModuleSA (mi, title);\r
2712 break;\r
2713 }\r
2714 }\r
2715 \r
2716 }\r
2717 ffc.removeBuildOptionsUserExtensions(title);\r
2718 ffc.genBuildOptionsUserExtensions(title, outputFileName, vModInFv);\r
2719 \r
2720 docConsole.setSaved(false);\r
2721 jTabbedPane.setSelectedIndex(0);\r
2722 }\r
2723 });\r
61919f8c 2724 }\r
2725 return jButtonOk;\r
2726 }\r
2727\r
2728 /**\r
2729 * This method initializes jButtonCancel \r
2730 * \r
2731 * @return javax.swing.JButton \r
2732 */\r
2733 private JButton getJButtonCancel() {\r
2734 if (jButtonCancel == null) {\r
2735 jButtonCancel = new JButton();\r
2736 jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
2737 jButtonCancel.setText("Cancel");\r
2738 jButtonCancel.addActionListener(new java.awt.event.ActionListener() {\r
2739 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2740 jTabbedPane.setSelectedIndex(0);\r
2741 }\r
2742 });\r
2743 }\r
2744 return jButtonCancel;\r
2745 }\r
2746 }\r
a13899c5 2747\r
2748} // @jve:decl-index=0:visual-constraint="10,10"\r
2749\r
b411fc1f 2750class FvOptsTableModel extends DefaultTableModel {\r
2751\r
2752 private static final long serialVersionUID = 1L;\r
2753 \r
2754 private Vector<Object> vNonEditableName = new Vector<Object>();\r
2755 private Vector<Object> vKeyWords = new Vector<Object>();\r
2756 \r
2757 public boolean isCellEditable(int row, int col) {\r
2758 if (vNonEditableName.size() > 0 || vKeyWords.size() > 0) {\r
2759 if (vKeyWords.contains(getValueAt(row, 0))) {\r
2760 return false;\r
2761 }\r
2762 if (vNonEditableName.contains(getValueAt(row, 0)) && col == 0) {\r
2763 return false;\r
2764 }\r
2765 } \r
2766 \r
2767 return true;\r
2768 }\r
2769\r
2770 /**\r
2771 * @return Returns the vKeyWords.\r
2772 */\r
2773 protected Vector<Object> getVKeyWords() {\r
2774 return vKeyWords;\r
2775 }\r
2776\r
2777 /**\r
2778 * @param keyWords The vKeyWords to set.\r
2779 */\r
2780 protected void setVKeyWords(Vector<Object> keyWords) {\r
2781 vKeyWords.removeAllElements();\r
2782 vKeyWords.addAll(keyWords);\r
2783 }\r
2784\r
2785 /**\r
2786 * @return Returns the vNonEditableName.\r
2787 */\r
2788 protected Vector<Object> getVNonEditableName() {\r
2789 return vNonEditableName;\r
2790 }\r
2791\r
2792 /**\r
2793 * @param nonEditableName The vNonEditableName to set.\r
2794 */\r
2795 protected void setVNonEditableName(Vector<Object> nonEditableName) {\r
2796 vNonEditableName.removeAllElements();\r
2797 vNonEditableName.addAll(nonEditableName);\r
2798 }\r
2799 \r
2800}\r
a13899c5 2801class ImageParaTableModel extends DefaultTableModel {\r
2802\r
44053733 2803 private static final long serialVersionUID = 1L;\r
44053733 2804 \r
2805 public boolean isCellEditable(int row, int col) {\r
98c20797 2806// if (getValueAt(row, 1).equals("ImageName") && col >=1) {\r
2807// return false;\r
2808// }\r
2809// return true;\r
2810 return false;\r
a13899c5 2811 }\r
2812}\r
ae0d4fd2 2813\r
3658f95e 2814class FvInfoFromFdf {\r
2815 private String fvName;\r
2816 private String size;\r
2817 private String efiFileName;\r
2818 \r
2819 public FvInfoFromFdf () {\r
2820 fvName = "";\r
2821 size = "";\r
2822 efiFileName = "";\r
2823 }\r
2824 public FvInfoFromFdf (String f, String s, String e) {\r
2825 this();\r
2826 fvName = f;\r
2827 size = s;\r
2828 efiFileName = e;\r
2829 }\r
2830 public String getEfiFileName() {\r
2831 return efiFileName;\r
2832 }\r
2833 public void setEfiFileName(String efiFileName) {\r
2834 this.efiFileName = efiFileName;\r
2835 }\r
2836 public String getFvName() {\r
2837 return fvName;\r
2838 }\r
2839 public void setFvName(String fvName) {\r
2840 this.fvName = fvName;\r
2841 }\r
2842 public String getSize() {\r
2843 return size;\r
2844 }\r
2845 public void setSize(String size) {\r
2846 this.size = size;\r
2847 }\r
2848 \r
2849}\r