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