]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/platform/ui/FpdFlash.java
Add Fv option value edit support;
[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
0cc00bf0 1058 getFvInFdfTableModel().setRowCount(0);\r
4da2e625 1059 jTextFieldFdf.setEnabled(false);\r
0cc00bf0 1060 jTextFieldFdf.setText("");\r
4da2e625 1061 jButtonFdfBrowse.setEnabled(false);\r
0cc00bf0 1062 ffc.genFlashDefinitionFile("");\r
1063 docConsole.setSaved(false);\r
1064 int selectedBackup = selectedRowInFvAdditionalTable;\r
1065 selectedRowInFvAdditionalTable = -1;\r
1066 initFvAdditionalTable();\r
1067 selectedRowInFvAdditionalTable = selectedBackup;\r
a13899c5 1068 }\r
1069 }\r
1070 });\r
1071 }\r
4da2e625 1072 return jCheckBoxFdf;\r
a13899c5 1073 }\r
1074\r
1075 /**\r
1076 * This method initializes jTextField3 \r
1077 * \r
1078 * @return javax.swing.JTextField \r
1079 */\r
4da2e625 1080 private JTextField getJTextFieldFdf() {\r
1081 if (jTextFieldFdf == null) {\r
1082 jTextFieldFdf = new JTextField();\r
1083 jTextFieldFdf.setEnabled(false);\r
2b70a636 1084 jTextFieldFdf.setEditable(false);\r
4da2e625 1085 jTextFieldFdf.setPreferredSize(new Dimension(300, 20));\r
1086 jTextFieldFdf.addFocusListener(new java.awt.event.FocusAdapter() {\r
908b1c05 1087 public void focusLost(java.awt.event.FocusEvent e) {\r
4da2e625 1088 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
908b1c05 1089 }\r
1090 });\r
a13899c5 1091 }\r
4da2e625 1092 return jTextFieldFdf;\r
a13899c5 1093 }\r
1094\r
1095 /**\r
1096 * This method initializes jButton5 \r
1097 * \r
1098 * @return javax.swing.JButton \r
1099 */\r
4da2e625 1100 private JButton getJButtonFdfBrowse() {\r
1101 if (jButtonFdfBrowse == null) {\r
1102 jButtonFdfBrowse = new JButton();\r
1103 jButtonFdfBrowse.setEnabled(false);\r
1104 jButtonFdfBrowse.setText("Browse");\r
1105 jButtonFdfBrowse.setPreferredSize(new Dimension(78, 20));\r
1106 jButtonFdfBrowse.addActionListener(new AbstractAction(){\r
44053733 1107 /**\r
1108 * \r
1109 */\r
1110 private static final long serialVersionUID = 1L;\r
1111\r
a13899c5 1112 public void actionPerformed(ActionEvent e) {\r
1113 // TODO Auto-generated method stub\r
908b1c05 1114 String wsDir = System.getenv("WORKSPACE");\r
1115 JFileChooser chooser = new JFileChooser(wsDir);\r
a13899c5 1116 chooser.setMultiSelectionEnabled(false);\r
1117 chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);\r
1118 int retval = chooser.showOpenDialog(frame);\r
1119 if (retval == JFileChooser.APPROVE_OPTION) {\r
1120\r
1121 File theFile = chooser.getSelectedFile();\r
908b1c05 1122 String filePath = theFile.getPath();\r
1123 if (!filePath.startsWith(wsDir)) {\r
1124 JOptionPane.showMessageDialog(frame, "You can only select files in current WORKSPACE.");\r
1125 return;\r
1126 }\r
4da2e625 1127 jTextFieldFdf.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/'));\r
3658f95e 1128 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
1129 docConsole.setSaved(false);\r
2b70a636 1130 initFvInFdfTable(filePath);\r
a13899c5 1131 }\r
1132 }\r
1133 \r
1134 });\r
1135 }\r
4da2e625 1136 return jButtonFdfBrowse;\r
a13899c5 1137 }\r
eb8ea829 1138 \r
72426064 1139 private void initFvAttributes () {\r
1140 if (ffc.getFvImagesFvImageCount("Attributes") == 0 && ffc.getFvImagesFvImageCount("Components") == 0) {\r
1141 return;\r
1142 }\r
1143 String[][] saa = new String[ffc.getFvImagesFvImageCount("Attributes")][2];\r
1144 ffc.getFvImagesFvImages(saa, "Attributes");\r
1145 \r
1146 int i = 0;\r
1147 while (i < saa.length) {\r
1148 fvImageParaTableModel.addRow(saa[i]);\r
1149 ++i;\r
1150 }\r
1151 \r
1152 saa = new String[ffc.getFvImagesFvImageCount("Components")][2];\r
1153 ffc.getFvImagesFvImages(saa, "Components");\r
1154 i = 0;\r
1155 while (i < saa.length) {\r
1156 fvImageParaTableModel.addRow(saa[i]);\r
1157 ++i;\r
1158 }\r
1159 \r
1160 saa = new String[ffc.getFvImagesNameValueCount()][2];\r
1161 ffc.getFvImagesNameValues(saa);\r
1162 for (int m = 0; m < saa.length; ++m) {\r
1163 fvPropertyTableModel.addRow(saa[m]);\r
1164 }\r
1165 }\r
1166 \r
eb8ea829 1167 private void initFvAdditionalTable() {\r
98c20797 1168 Vector<String> vFvNames = new Vector<String>();\r
1169 ffc.getFvImagesFvImageFvImageNames(vFvNames);\r
1170 for (int i = 0; i < vFvNames.size(); ++i) {\r
1171 String fvName = vFvNames.get(i);\r
1172 if (fvNameExists(fvName)) {\r
1173 continue;\r
1174 }\r
72426064 1175 fvAdditionalTableModel.addRow(getBasicFvInfo(fvName));\r
98c20797 1176 addTabForFv(new FvInfoFromFdf(fvName, "", ""));\r
1177 }\r
eb8ea829 1178 }\r
a13899c5 1179\r
2b70a636 1180 private void initFvInFdfTable(String fdfPath){\r
1181 Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
1182 getFvInfoFromFdf(fdfPath, vFvInfo);\r
701d95b3 1183 getFlashInfoFromFdf (fdfPath);\r
1184 if (!erasePolarity.equals("1") && !erasePolarity.equals("0")) {\r
1185 JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid Erase Polarity.");\r
1186 }\r
1187 else {\r
54aa8673 1188 ffc.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity);\r
701d95b3 1189 }\r
1190 \r
98c20797 1191 // BugBug: assume all blocks have same size;\r
701d95b3 1192 \r
72426064 1193 String blkSize = defaultBlkSize;\r
701d95b3 1194 if (vBlockSize.size() > 0) {\r
1195 blkSize = vBlockSize.get(0);\r
1196 if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
1197 JOptionPane.showMessageDialog(frame, "FDF file does NOT contain valid FV block size. Default size 0x10000 will be used.");\r
72426064 1198 blkSize = defaultBlkSize;\r
701d95b3 1199 }\r
1200 }\r
1201 determinedFvBlockSize = blkSize;\r
98c20797 1202 \r
2b70a636 1203 getFvInFdfTableModel().setRowCount(0);\r
0cc00bf0 1204 Vector<String> vExistingFvNameInFpd = new Vector<String>();\r
1205 ffc.getFvImagesFvImageFvImageNames(vExistingFvNameInFpd);\r
2b70a636 1206 for (int j = 0; j < vFvInfo.size(); ++j) {\r
1207 FvInfoFromFdf fvInfo = vFvInfo.get(j);\r
1208 String[] row = {fvInfo.getFvName(), fvInfo.getSize(), fvInfo.getEfiFileName()};\r
0cc00bf0 1209 \r
1210 if (row[0].length() > 0 && !vExistingFvNameInFpd.contains(row[0])) {\r
1211 ffc.addFvImageFvImageNames(new String[]{row[0]});\r
1212 }\r
1213 \r
701d95b3 1214 // if FV addtional table contains the same FV from fdf file, remove that row.\r
1215 for (int k = 0; k < jTableFvAdditional.getRowCount(); ++k) {\r
1216 if (fvAdditionalTableModel.getValueAt(k, 0).equals(row[0])) {\r
1217 fvAdditionalTableModel.removeRow(k);\r
1218 }\r
1219 }\r
2b70a636 1220 getFvInFdfTableModel().addRow(row);\r
98c20797 1221 try {\r
1222 int blockSize = Integer.decode(blkSize);\r
1223 int fvSize = Integer.decode(row[1]);\r
1224 int numBlocks = fvSize/blockSize;\r
701d95b3 1225 HashMap<String, String> mOptions = new HashMap<String, String>();\r
98c20797 1226 // if no options for this FV before, generate a new options entry for this FV.\r
1227 if (ffc.getFvImagesFvImageWithName(row[0], "Options") == null) {\r
701d95b3 1228 \r
98c20797 1229 mOptions.put("EFI_BLOCK_SIZE", blkSize);\r
1230 mOptions.put("EFI_NUM_BLOCKS", numBlocks+"");\r
1231 mOptions.put("EFI_FILE_NAME", row[2]);\r
1232 ffc.genFvImagesFvImage(new String[]{row[0]}, "Options", mOptions);\r
1233 memModified = true;\r
1234 }\r
1235 else {\r
701d95b3 1236 ffc.getFvImagesFvImageOptions(row[0], mOptions);\r
1237 if (mOptions.get("EFI_BLOCK_SIZE") == null || !mOptions.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize)) {\r
0cc00bf0 1238 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize, null);\r
701d95b3 1239 memModified = true;\r
1240 }\r
1241 if (mOptions.get("EFI_NUM_BLOCKS") == null || Integer.decode(mOptions.get("EFI_NUM_BLOCKS")) != numBlocks) {\r
0cc00bf0 1242 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + "", null);\r
701d95b3 1243 memModified = true;\r
1244 }\r
1245 if (mOptions.get("EFI_FILE_NAME") == null || !mOptions.get("EFI_FILE_NAME").equals(row[2])) {\r
0cc00bf0 1246 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2], null);\r
701d95b3 1247 memModified = true;\r
1248 }\r
1249 \r
98c20797 1250 }\r
1251 }\r
1252 catch (NumberFormatException e){\r
1253 JOptionPane.showMessageDialog(frame, e.getMessage());\r
1254 }\r
2b70a636 1255 }\r
1256\r
1257 for (int k = 0; k < vFvInfo.size(); ++k) {\r
1258 FvInfoFromFdf fvInfo = vFvInfo.get(k);\r
1259 addTabForFv(fvInfo);\r
1260 }\r
98c20797 1261 \r
2b70a636 1262 }\r
1263 \r
1264 private void addTabForFv (FvInfoFromFdf fvInfo) {\r
1265 String fvName = fvInfo.getFvName();\r
1266 String outputFile = fvInfo.getEfiFileName();\r
eb8ea829 1267 int index = jTabbedPane.indexOfTab(fvName);\r
1268 if (index >= startIndexOfDynamicTab) {\r
1269 return;\r
2b70a636 1270 }\r
1271 jTabbedPane.addTab(fvName, null, new ModuleOrderPane(fvName, outputFile), null);\r
1272 }\r
44053733 1273 /**\r
ae0d4fd2 1274 * This method initializes jTextField4 \r
44053733 1275 * \r
ae0d4fd2 1276 * @return javax.swing.JTextField \r
44053733 1277 */\r
4da2e625 1278 private JTextField getJTextFieldFvImageOptName() {\r
1279 if (jTextFieldFvImageOptName == null) {\r
1280 jTextFieldFvImageOptName = new JTextField();\r
1281 jTextFieldFvImageOptName.setEnabled(true);\r
1282 jTextFieldFvImageOptName.setPreferredSize(new Dimension(100, 20));\r
44053733 1283 }\r
4da2e625 1284 return jTextFieldFvImageOptName;\r
ae0d4fd2 1285 }\r
1286\r
1287 /**\r
1288 * This method initializes jTextField5 \r
1289 * \r
1290 * @return javax.swing.JTextField \r
1291 */\r
4da2e625 1292 private JTextField getJTextFieldFvImageOptValue() {\r
1293 if (jTextFieldFvImageOptValue == null) {\r
1294 jTextFieldFvImageOptValue = new JTextField();\r
1295 jTextFieldFvImageOptValue.setEnabled(true);\r
1296 jTextFieldFvImageOptValue.setPreferredSize(new Dimension(100, 20));\r
ae0d4fd2 1297 }\r
4da2e625 1298 return jTextFieldFvImageOptValue;\r
ae0d4fd2 1299 }\r
1300\r
1301 /**\r
1302 * This method initializes jPanel8 \r
1303 * \r
1304 * @return javax.swing.JPanel \r
1305 */\r
4da2e625 1306 private JPanel getJPanelFvImageOptsButtonGroup() {\r
1307 if (jPanelFvImageOptsButtonGroup == null) {\r
1308 jPanelFvImageOptsButtonGroup = new JPanel();\r
1309 jPanelFvImageOptsButtonGroup.setPreferredSize(new Dimension(80, 55));\r
1310 jPanelFvImageOptsButtonGroup.add(getJButtonFvImageOptAdd(), null);\r
1311 jPanelFvImageOptsButtonGroup.add(getJButtonFvImageOptDel(), null);\r
ae0d4fd2 1312 }\r
4da2e625 1313 return jPanelFvImageOptsButtonGroup;\r
ae0d4fd2 1314 }\r
1315\r
1316 /**\r
1317 * This method initializes jButton7 \r
1318 * \r
1319 * @return javax.swing.JButton \r
1320 */\r
4da2e625 1321 private JButton getJButtonFvImageOptAdd() {\r
1322 if (jButtonFvImageOptAdd == null) {\r
1323 jButtonFvImageOptAdd = new JButton();\r
1324 jButtonFvImageOptAdd.setEnabled(true);\r
1325 jButtonFvImageOptAdd.setText("Add");\r
1326 jButtonFvImageOptAdd.setPreferredSize(new Dimension(80, 20));\r
1327 jButtonFvImageOptAdd.addActionListener(new AbstractAction() {\r
ae0d4fd2 1328 /**\r
1329 * \r
1330 */\r
1331 private static final long serialVersionUID = 1L;\r
1332\r
1333 public void actionPerformed(ActionEvent e) {\r
4da2e625 1334 if (jTextFieldFvImageOptName.getText().length() > 0 && jTextFieldFvImageOptValue.getText().length() > 0){\r
54aa8673 1335 int selectedRow = jTableFvInfo.getSelectedRow();\r
1336 if (selectedRow < 0) {\r
1337 return;\r
1338 }\r
1339 \r
1340 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
1341 String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
1342 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
1343 String[] row = {jTextFieldFvImageOptName.getText(), jTextFieldFvImageOptValue.getText()};\r
1344 \r
1345 if (fvImagePos < 0) {\r
1346 return;\r
1347 }\r
1348 else {\r
1349 //append options to FvImage.\r
1350 ffc.setFvImagesFvImageNameValue(fvImagePos, row[0], row[1]);\r
1351 }\r
1352 docConsole.setSaved(false);\r
ae0d4fd2 1353 fvOptionTableModel.addRow(row);\r
54aa8673 1354 jTableFvImageOpts.changeSelection(jTableFvImageOpts.getRowCount() - 1, 0, false, false);\r
ae0d4fd2 1355 }\r
1356 }\r
1357 });\r
1358 }\r
4da2e625 1359 return jButtonFvImageOptAdd;\r
ae0d4fd2 1360 }\r
1361\r
1362 /**\r
1363 * This method initializes jButton8 \r
1364 * \r
1365 * @return javax.swing.JButton \r
1366 */\r
4da2e625 1367 private JButton getJButtonFvImageOptDel() {\r
1368 if (jButtonFvImageOptDel == null) {\r
1369 jButtonFvImageOptDel = new JButton();\r
1370 jButtonFvImageOptDel.setEnabled(true);\r
1371 jButtonFvImageOptDel.setText("Delete");\r
1372 jButtonFvImageOptDel.setPreferredSize(new Dimension(80, 20));\r
1373 jButtonFvImageOptDel.addActionListener(new AbstractAction() {\r
ae0d4fd2 1374 /**\r
1375 * \r
1376 */\r
1377 private static final long serialVersionUID = 1L;\r
1378\r
1379 public void actionPerformed(ActionEvent e) {\r
4da2e625 1380 if (jTableFvImageOpts.getSelectedRow() >= 0){\r
54aa8673 1381 int selectedRow = jTableFvInfo.getSelectedRow();\r
1382 if (selectedRow < 0) {\r
1383 return;\r
1384 }\r
1385 \r
1386 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
1387 String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
1388 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
1389 if (fvImagePos < 0) {\r
1390 return;\r
1391 }\r
1392 \r
1393 String optName = fvOptionTableModel.getValueAt(jTableFvImageOpts.getSelectedRow(), 0)+"";\r
1394 ffc.removeFvImageNameValue(fvImagePos, optName);\r
1395 docConsole.setSaved(false);\r
1396 fvOptionTableModel.removeRow(jTableFvImageOpts.getSelectedRow());\r
ae0d4fd2 1397 }\r
1398 }\r
1399 });\r
1400 }\r
4da2e625 1401 return jButtonFvImageOptDel;\r
ae0d4fd2 1402 }\r
1403\r
1404 /**\r
1405 * This method initializes jScrollPane \r
1406 * \r
1407 * @return javax.swing.JScrollPane \r
1408 */\r
1409 private JScrollPane getJScrollPane() {\r
1410 if (jScrollPane == null) {\r
1411 jScrollPane = new JScrollPane();\r
72426064 1412 jScrollPane.setPreferredSize(new java.awt.Dimension(350,100));\r
4da2e625 1413 jScrollPane.setViewportView(getJTableFvImageOpts());\r
ae0d4fd2 1414 }\r
1415 return jScrollPane;\r
1416 }\r
1417\r
1418 /**\r
1419 * This method initializes jTable3 \r
1420 * \r
1421 * @return javax.swing.JTable \r
1422 */\r
4da2e625 1423 private JTable getJTableFvImageOpts() {\r
1424 if (jTableFvImageOpts == null) {\r
ed850fbf 1425 fvOptionTableModel = new IDefaultTableModel();\r
ae0d4fd2 1426 fvOptionTableModel.addColumn("Name");\r
1427 fvOptionTableModel.addColumn("Value");\r
4da2e625 1428 jTableFvImageOpts = new JTable(fvOptionTableModel);\r
ae0d4fd2 1429\r
4da2e625 1430 jTableFvImageOpts.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
1431 jTableFvImageOpts.setRowHeight(20);\r
ae0d4fd2 1432 \r
1433 }\r
4da2e625 1434 return jTableFvImageOpts;\r
ae0d4fd2 1435 }\r
1436\r
1437 /**\r
1438 * This method initializes jButton9 \r
1439 * \r
1440 * @return javax.swing.JButton \r
1441 */\r
4da2e625 1442 private JButton getJButtonUpdateFvImage() {\r
1443 if (jButtonUpdateFvImage == null) {\r
1444 jButtonUpdateFvImage = new JButton();\r
72426064 1445 jButtonUpdateFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
4da2e625 1446 jButtonUpdateFvImage.setActionCommand("Update");\r
72426064 1447 jButtonUpdateFvImage.setText("Update FV Attributes");\r
1448 jButtonUpdateFvImage.setVisible(false);\r
4da2e625 1449 jButtonUpdateFvImage.addActionListener(new java.awt.event.ActionListener() {\r
ae0d4fd2 1450 public void actionPerformed(java.awt.event.ActionEvent e) {\r
4da2e625 1451 int row = jTableFvInfo.getSelectedRow();\r
1452 if (jTableFvInfo.isEditing()) {\r
1453 jTableFvInfo.getCellEditor().stopCellEditing();\r
ae0d4fd2 1454 }\r
4da2e625 1455 if (jTableFvImageOpts.isEditing()) {\r
1456 jTableFvImageOpts.getCellEditor().stopCellEditing();\r
ae0d4fd2 1457 }\r
1458 \r
1459 //ToDo Check data validity before update\r
1460 String name = fvImageParaTableModel.getValueAt(row, 0) + "";\r
1461 String type = fvImageParaTableModel.getValueAt(row, 1) + "";\r
1462 \r
1463 LinkedHashMap<String, String> lhm = new LinkedHashMap<String, String>();\r
1464 getOptionNameValue(lhm);\r
1465 \r
d6d24759 1466 docConsole.setSaved(false);\r
ae0d4fd2 1467 ffc.updateFvImagesFvImage(row, name.split(" "), type, lhm);\r
1468 \r
1469 }\r
1470 });\r
1471 }\r
4da2e625 1472 return jButtonUpdateFvImage;\r
44053733 1473 }\r
1474\r
3658f95e 1475 /**\r
1476 * This method initializes jPanelFdfN \r
1477 * \r
1478 * @return javax.swing.JPanel \r
1479 */\r
1480 private JPanel getJPanelFdfN() {\r
1481 if (jPanelFdfN == null) {\r
1482 jPanelFdfN = new JPanel();\r
1483 jPanelFdfN.add(getJCheckBoxFdf(), null);\r
1484 jPanelFdfN.add(getJTextFieldFdf(), null);\r
1485 jPanelFdfN.add(getJButtonFdfBrowse(), null);\r
1486 }\r
1487 return jPanelFdfN;\r
1488 }\r
1489\r
1490 /**\r
1491 * This method initializes jPanelFdfS \r
1492 * \r
1493 * @return javax.swing.JPanel \r
1494 */\r
1495 private JPanel getJPanelFdfS() {\r
1496 if (jPanelFdfS == null) {\r
1497 FlowLayout flowLayout4 = new FlowLayout();\r
1498 flowLayout4.setAlignment(java.awt.FlowLayout.RIGHT);\r
1499 jPanelFdfS = new JPanel();\r
1500 jPanelFdfS.setLayout(flowLayout4);\r
1501 jPanelFdfS.add(getJButtonAddFv(), null);\r
1502 jPanelFdfS.add(getJButtonDelFv(), null);\r
1503 jPanelFdfS.add(getJButtonAddFvOptions(), null);\r
1504 }\r
1505 return jPanelFdfS;\r
1506 }\r
1507\r
1508 /**\r
1509 * This method initializes jSplitPaneFdfC \r
1510 * \r
1511 * @return javax.swing.JSplitPane \r
1512 */\r
1513 private JSplitPane getJSplitPaneFdfC() {\r
1514 if (jSplitPaneFdfC == null) {\r
1515 jSplitPaneFdfC = new JSplitPane();\r
1516 jSplitPaneFdfC.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);\r
1517 jSplitPaneFdfC.setDividerSize(5);\r
1518 jSplitPaneFdfC.setTopComponent(getJPanelFdfCTop());\r
1519 jSplitPaneFdfC.setBottomComponent(getJPanelFdfCBottom());\r
1520 jSplitPaneFdfC.setDividerLocation(280);\r
1521 }\r
1522 return jSplitPaneFdfC;\r
1523 }\r
1524\r
1525 /**\r
1526 * This method initializes jPanelFdfCTop \r
1527 * \r
1528 * @return javax.swing.JPanel \r
1529 */\r
1530 private JPanel getJPanelFdfCTop() {\r
1531 if (jPanelFdfCTop == null) {\r
1532 jPanelFdfCTop = new JPanel();\r
1533 jPanelFdfCTop.setLayout(new BorderLayout());\r
1534 jPanelFdfCTop.add(getJPanelFdfCTopN(), java.awt.BorderLayout.NORTH);\r
1535 jPanelFdfCTop.add(getJPanelFdfCTopS(), java.awt.BorderLayout.SOUTH);\r
618737f8 1536 jPanelFdfCTop.add(getJScrollPaneFvInFdf(), java.awt.BorderLayout.CENTER);\r
3658f95e 1537 }\r
1538 return jPanelFdfCTop;\r
1539 }\r
1540\r
1541 /**\r
1542 * This method initializes jPanelFdfCBottom \r
1543 * \r
1544 * @return javax.swing.JPanel \r
1545 */\r
1546 private JPanel getJPanelFdfCBottom() {\r
1547 if (jPanelFdfCBottom == null) {\r
1548 jPanelFdfCBottom = new JPanel();\r
1549 jPanelFdfCBottom.setLayout(new BorderLayout());\r
1550 jPanelFdfCBottom.add(getJPanelFdfCBottomN(), java.awt.BorderLayout.NORTH);\r
618737f8 1551 jPanelFdfCBottom.add(getJScrollPaneFvAdditional(), java.awt.BorderLayout.CENTER);\r
3658f95e 1552 }\r
1553 return jPanelFdfCBottom;\r
1554 }\r
1555\r
1556 /**\r
1557 * This method initializes jPanelFdfCTopN \r
1558 * \r
1559 * @return javax.swing.JPanel \r
1560 */\r
1561 private JPanel getJPanelFdfCTopN() {\r
1562 if (jPanelFdfCTopN == null) {\r
1563 jLabelFvInFdf = new JLabel();\r
1564 jLabelFvInFdf.setText("FVs in Flash Definition File");\r
1565 jPanelFdfCTopN = new JPanel();\r
1566 jPanelFdfCTopN.add(jLabelFvInFdf, null);\r
1567 }\r
1568 return jPanelFdfCTopN;\r
1569 }\r
1570\r
1571 /**\r
1572 * This method initializes jPanelFdfCTopS \r
1573 * \r
1574 * @return javax.swing.JPanel \r
1575 */\r
1576 private JPanel getJPanelFdfCTopS() {\r
1577 if (jPanelFdfCTopS == null) {\r
1578 FlowLayout flowLayout1 = new FlowLayout();\r
1579 flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);\r
1580 jPanelFdfCTopS = new JPanel();\r
1581 jPanelFdfCTopS.setLayout(flowLayout1);\r
1582 jPanelFdfCTopS.add(getJButtonFvInFdfOptions(), null);\r
1583 }\r
1584 return jPanelFdfCTopS;\r
1585 }\r
1586\r
1587 /**\r
1588 * This method initializes jPanelFdfCTopC \r
1589 * \r
1590 * @return javax.swing.JPanel \r
1591 */\r
618737f8 1592// private JPanel getJPanelFdfCTopC() {\r
1593// if (jPanelFdfCTopC == null) {\r
1594// jPanelFdfCTopC = new JPanel();\r
1595// jPanelFdfCTopC.add(getJScrollPaneFvInFdf(), null);\r
1596// }\r
1597// return jPanelFdfCTopC;\r
1598// }\r
3658f95e 1599\r
1600 /**\r
1601 * This method initializes jPanelFdfCBottomN \r
1602 * \r
1603 * @return javax.swing.JPanel \r
1604 */\r
1605 private JPanel getJPanelFdfCBottomN() {\r
1606 if (jPanelFdfCBottomN == null) {\r
1607 jLabelFvAdditional = new JLabel();\r
1608 jLabelFvAdditional.setText("Additional FVs");\r
1609 jPanelFdfCBottomN = new JPanel();\r
1610 jPanelFdfCBottomN.add(jLabelFvAdditional, null);\r
1611 }\r
1612 return jPanelFdfCBottomN;\r
1613 }\r
1614\r
1615 /**\r
1616 * This method initializes jPanelFdfCBottomC \r
1617 * \r
1618 * @return javax.swing.JPanel \r
1619 */\r
618737f8 1620// private JPanel getJPanelFdfCBottomC() {\r
1621// if (jPanelFdfCBottomC == null) {\r
1622// jPanelFdfCBottomC = new JPanel();\r
1623// jPanelFdfCBottomC.add(getJScrollPaneFvAdditional(), null);\r
1624// }\r
1625// return jPanelFdfCBottomC;\r
1626// }\r
3658f95e 1627\r
1628 /**\r
1629 * This method initializes jScrollPaneFvInFdf \r
1630 * \r
1631 * @return javax.swing.JScrollPane \r
1632 */\r
1633 private JScrollPane getJScrollPaneFvInFdf() {\r
1634 if (jScrollPaneFvInFdf == null) {\r
1635 jScrollPaneFvInFdf = new JScrollPane();\r
1636 jScrollPaneFvInFdf.setPreferredSize(new java.awt.Dimension(653,200));\r
1637 jScrollPaneFvInFdf.setViewportView(getJTableFvInFdf());\r
1638 }\r
1639 return jScrollPaneFvInFdf;\r
1640 }\r
1641\r
1642 /**\r
1643 * This method initializes jTableFvInFdf \r
1644 * \r
1645 * @return javax.swing.JTable \r
1646 */\r
1647 private JTable getJTableFvInFdf() {\r
1648 if (jTableFvInFdf == null) {\r
1649 jTableFvInFdf = new JTable();\r
1650 jTableFvInFdf.setRowHeight(20);\r
1651 jTableFvInFdf.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
1652 jTableFvInFdf.setModel(getFvInFdfTableModel());\r
1653 }\r
1654 return jTableFvInFdf;\r
1655 }\r
1656\r
1657 /**\r
1658 * This method initializes fvInFdfTableModel \r
1659 * \r
1660 * @return org.tianocore.frameworkwizard.platform.ui.NonEditableTableModel \r
1661 */\r
ed850fbf 1662 private IDefaultTableModel getFvInFdfTableModel() {\r
3658f95e 1663 if (fvInFdfTableModel == null) {\r
ed850fbf 1664 fvInFdfTableModel = new IDefaultTableModel();\r
3658f95e 1665 fvInFdfTableModel.addColumn("FV Name");\r
1666 fvInFdfTableModel.addColumn("Size");\r
1667 fvInFdfTableModel.addColumn("Corresponding File Name");\r
1668 }\r
1669 return fvInFdfTableModel;\r
1670 }\r
1671\r
1672 /**\r
1673 * This method initializes jButtonFvInFdfOptions \r
1674 * \r
1675 * @return javax.swing.JButton \r
1676 */\r
1677 private JButton getJButtonFvInFdfOptions() {\r
1678 if (jButtonFvInFdfOptions == null) {\r
1679 jButtonFvInFdfOptions = new JButton();\r
1680 jButtonFvInFdfOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
b411fc1f 1681 jButtonFvInFdfOptions.setEnabled(true);\r
3658f95e 1682 jButtonFvInFdfOptions.setText("Options");\r
1683 jButtonFvInFdfOptions.addActionListener(new java.awt.event.ActionListener() {\r
1684 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1685 int selectedRow = jTableFvInFdf.getSelectedRow();\r
61919f8c 1686 if (selectedRow < 0) {\r
3658f95e 1687 return;\r
1688 }\r
b411fc1f 1689 String fvName = jTableFvInFdf.getValueAt(selectedRow, 0)+"";\r
72426064 1690 if (fvName.length() == 0) {\r
1691 return;\r
1692 }\r
b411fc1f 1693 DefaultTableModel dtm = getFvInFdfOptTableModel();\r
1694 new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
3658f95e 1695 }\r
1696 });\r
1697 }\r
1698 return jButtonFvInFdfOptions;\r
1699 }\r
b411fc1f 1700 \r
1701 private DefaultTableModel getFvInFdfOptTableModel() {\r
1702 if (fvInFdfOptTableModel == null) {\r
1703 fvInFdfOptTableModel = new FvOptsTableModel();\r
1704 fvInFdfOptTableModel.addColumn("Name");\r
1705 fvInFdfOptTableModel.addColumn("Value");\r
1706 Vector<Object> v = new Vector<Object>();\r
1707 v.add("EFI_BLOCK_SIZE");\r
1708 v.add("EFI_NUM_BLOCKS");\r
1709 v.add("EFI_FILE_NAME");\r
1710 fvInFdfOptTableModel.setVKeyWords(v);\r
1711 fvInFdfOptTableModel.setVNonEditableName(v);\r
1712 }\r
1713 return fvInFdfOptTableModel;\r
1714 }\r
72426064 1715 \r
1716 private DefaultTableModel getFvAdditionalOptTableModel() {\r
1717 if (fvAdditionalOptTableModel == null) {\r
1718 fvAdditionalOptTableModel = new FvOptsTableModel();\r
1719 fvAdditionalOptTableModel.addColumn("Name");\r
1720 fvAdditionalOptTableModel.addColumn("Value");\r
1721 Vector<Object> v = new Vector<Object>();\r
1722 v.add("EFI_BLOCK_SIZE");\r
1723 v.add("EFI_NUM_BLOCKS");\r
1724 v.add("EFI_FILE_NAME");\r
1725 fvAdditionalOptTableModel.setVNonEditableName(v);\r
1726 }\r
1727 return fvAdditionalOptTableModel;\r
1728 }\r
3658f95e 1729\r
1730 /**\r
1731 * This method initializes jScrollPaneFvAdditional \r
1732 * \r
1733 * @return javax.swing.JScrollPane \r
1734 */\r
1735 private JScrollPane getJScrollPaneFvAdditional() {\r
1736 if (jScrollPaneFvAdditional == null) {\r
1737 jScrollPaneFvAdditional = new JScrollPane();\r
1738 jScrollPaneFvAdditional.setPreferredSize(new java.awt.Dimension(653,200));\r
1739 jScrollPaneFvAdditional.setViewportView(getJTableFvAdditional());\r
1740 }\r
1741 return jScrollPaneFvAdditional;\r
1742 }\r
1743\r
1744 /**\r
1745 * This method initializes jTableFvAdditional \r
1746 * \r
1747 * @return javax.swing.JTable \r
1748 */\r
1749 private JTable getJTableFvAdditional() {\r
1750 if (jTableFvAdditional == null) {\r
1751 jTableFvAdditional = new JTable();\r
1752 jTableFvAdditional.setRowHeight(20);\r
1753 jTableFvAdditional.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);\r
98c20797 1754 jTableFvAdditional.setModel(getFvAdditionalTableModel());\r
eb8ea829 1755 \r
1756 jTableFvAdditional.getSelectionModel().addListSelectionListener(new ListSelectionListener() {\r
1757 public void valueChanged(ListSelectionEvent e) {\r
1758 if (e.getValueIsAdjusting()) {\r
1759 return;\r
1760 }\r
1761 ListSelectionModel lsm = (ListSelectionModel) e.getSource();\r
1762 if (lsm.isSelectionEmpty()) {\r
1763 return;\r
1764 } else {\r
1765 selectedRowInFvAdditionalTable = lsm.getMinSelectionIndex();\r
1766 oldFvName = jTableFvAdditional.getValueAt(selectedRowInFvAdditionalTable, 0)+"";\r
1767 }\r
1768 }\r
1769 });\r
1770 \r
1771 jTableFvAdditional.getModel().addTableModelListener(new TableModelListener() {\r
1772 public void tableChanged(TableModelEvent arg0) {\r
1773 // TODO Auto-generated method stub\r
1774 int row = arg0.getFirstRow();\r
1775 int col = arg0.getColumn();\r
1776 TableModel m = (TableModel) arg0.getSource();\r
701d95b3 1777 \r
eb8ea829 1778 if (arg0.getType() == TableModelEvent.UPDATE) {\r
1779 if (col == 0) {\r
1780 String newFvName = m.getValueAt(row, 0) + "";\r
1781 if (newFvName.equals(oldFvName)) {\r
1782 return;\r
1783 }\r
1784 if (fvNameExists(newFvName)) {\r
1785 JOptionPane.showMessageDialog(frame, "This FV already exists. Please choose another FV name.");\r
1786 m.setValueAt(oldFvName, row, 0);\r
1787 return;\r
1788 }\r
1789 \r
1790 tabIndexForFv = jTabbedPane.indexOfTab(oldFvName);\r
1791 if (tabIndexForFv >= startIndexOfDynamicTab) {\r
1792 jTabbedPane.setTitleAt(tabIndexForFv, newFvName);\r
1793 // change FvName in UserExtensions\r
1794 ffc.updateBuildOptionsUserExtensions(oldFvName, newFvName);\r
1795 // change FvBinding in ModuleSA\r
1796 ffc.appendFvBindingFor(oldFvName, newFvName);\r
1797 ffc.removeFvBindingAll(oldFvName);\r
1798 // change FvImageNames in Flash\r
1799 ffc.updateFvImageNameAll(oldFvName, newFvName);\r
1800 \r
1801 } else {\r
1802 jTabbedPane.addTab(newFvName, new ModuleOrderPane(newFvName, ""));\r
1803 // Add FvImageNames in Flash\r
1804 String[] fvNames = {newFvName};\r
54aa8673 1805 ffc.addFvImageFvImageNames(fvNames);\r
eb8ea829 1806 }\r
701d95b3 1807 docConsole.setSaved(false);\r
eb8ea829 1808 oldFvName = newFvName;\r
1809 }\r
701d95b3 1810 \r
72426064 1811 if (col == 1 && !sizeFromOptionDlg) {\r
701d95b3 1812 String fvSize = m.getValueAt(row, col) + "";\r
1813 if (!DataValidation.isInt(fvSize) && !DataValidation.isHexDoubleWordDataType(fvSize)) {\r
1814 JOptionPane.showMessageDialog(frame, "FV size should be Integer or Hex format.");\r
1815 return;\r
1816 }\r
1817 HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
1818 ffc.getFvImagesFvImageOptions(oldFvName, mFvOpts);\r
1819 String blkSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
1820 if (blkSize == null) {\r
72426064 1821 if (determinedFvBlockSize != null) {\r
1822 blkSize = determinedFvBlockSize;\r
1823 }\r
1824 else {\r
1825 blkSize = defaultBlkSize;\r
1826 }\r
0cc00bf0 1827 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", blkSize, null);\r
701d95b3 1828 int fs = Integer.decode(fvSize);\r
72426064 1829 int bs = Integer.decode(blkSize);\r
0cc00bf0 1830 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
701d95b3 1831 docConsole.setSaved(false);\r
1832 }\r
1833 else {\r
1834 if (!DataValidation.isInt(blkSize) && !DataValidation.isHexDoubleWordDataType(blkSize)) {\r
1835 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
1836 if (retVal == JOptionPane.YES_OPTION) {\r
0cc00bf0 1837 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", defaultBlkSize, null);\r
701d95b3 1838 int fs = Integer.decode(fvSize);\r
72426064 1839 int bs = Integer.decode(defaultBlkSize);\r
0cc00bf0 1840 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
701d95b3 1841 docConsole.setSaved(false);\r
1842 return;\r
1843 }\r
1844 else {\r
1845 return;\r
1846 }\r
1847 \r
1848 }\r
1849 int fs = Integer.decode(fvSize);\r
1850 int bs = Integer.decode(blkSize);\r
0cc00bf0 1851 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
701d95b3 1852 docConsole.setSaved(false);\r
1853 }\r
1854 }\r
1855 \r
72426064 1856 if (col == 2 && !fileFromOptionDlg) {\r
0cc00bf0 1857 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+"", null);\r
701d95b3 1858 docConsole.setSaved(false);\r
1859 }\r
1860 \r
eb8ea829 1861 }\r
1862 }\r
1863 });\r
3658f95e 1864 }\r
1865 return jTableFvAdditional;\r
1866 }\r
eb8ea829 1867 \r
98c20797 1868 private boolean fvNameExistsInFvInFdfTable (String fvName) {\r
eb8ea829 1869 for (int i = 0; i < jTableFvInFdf.getRowCount(); ++i) {\r
1870 if (fvInFdfTableModel.getValueAt(i, 0).equals(fvName)) {\r
1871 return true;\r
1872 }\r
1873 }\r
98c20797 1874 return false;\r
1875 }\r
1876 \r
1877 private boolean fvNameExists (String fvName) {\r
1878 if (fvNameExistsInFvInFdfTable(fvName)) {\r
1879 return true;\r
1880 }\r
1881 \r
eb8ea829 1882 for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) {\r
98c20797 1883 if (fvAdditionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) {\r
eb8ea829 1884 return true;\r
1885 }\r
1886 }\r
1887 return false;\r
1888 }\r
3658f95e 1889\r
1890 /**\r
98c20797 1891 * This method initializes fvAdditionalTableModel \r
3658f95e 1892 * \r
1893 * @return javax.swing.table.DefaultTableModel \r
1894 */\r
98c20797 1895 private DefaultTableModel getFvAdditionalTableModel() {\r
1896 if (fvAdditionalTableModel == null) {\r
1897 fvAdditionalTableModel = new DefaultTableModel();\r
1898 fvAdditionalTableModel.addColumn("FV Name");\r
1899 fvAdditionalTableModel.addColumn("Size");\r
1900 fvAdditionalTableModel.addColumn("Corresponding File Name");\r
3658f95e 1901 }\r
98c20797 1902 return fvAdditionalTableModel;\r
3658f95e 1903 }\r
1904\r
1905 /**\r
1906 * This method initializes jButtonAddFv \r
1907 * \r
1908 * @return javax.swing.JButton \r
1909 */\r
1910 private JButton getJButtonAddFv() {\r
1911 if (jButtonAddFv == null) {\r
1912 jButtonAddFv = new JButton();\r
1913 jButtonAddFv.setPreferredSize(new java.awt.Dimension(80,20));\r
eb8ea829 1914 jButtonAddFv.setEnabled(true);\r
3658f95e 1915 jButtonAddFv.setText("New");\r
2b70a636 1916 jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {\r
1917 public void actionPerformed(java.awt.event.ActionEvent e) {\r
eb8ea829 1918 if (jTableFvAdditional.isEditing()) {\r
1919 jTableFvAdditional.getCellEditor().stopCellEditing();\r
1920 }\r
1921 String[] row = {"", "", ""};\r
98c20797 1922 fvAdditionalTableModel.addRow(row);\r
2b70a636 1923 }\r
1924 });\r
3658f95e 1925 }\r
1926 return jButtonAddFv;\r
1927 }\r
1928\r
1929 /**\r
1930 * This method initializes jButtonDelFv \r
1931 * \r
1932 * @return javax.swing.JButton \r
1933 */\r
1934 private JButton getJButtonDelFv() {\r
1935 if (jButtonDelFv == null) {\r
1936 jButtonDelFv = new JButton();\r
1937 jButtonDelFv.setPreferredSize(new java.awt.Dimension(80,20));\r
98c20797 1938 jButtonDelFv.setEnabled(true);\r
3658f95e 1939 jButtonDelFv.setText("Delete");\r
2b70a636 1940 jButtonDelFv.addActionListener(new java.awt.event.ActionListener() {\r
1941 public void actionPerformed(java.awt.event.ActionEvent e) {\r
98c20797 1942 //delete row in FvAdditional table.\r
1943 int selectedRow = jTableFvAdditional.getSelectedRow();\r
1944 if (selectedRow < 0) {\r
1945 return;\r
1946 }\r
1947 String fvName = fvAdditionalTableModel.getValueAt(selectedRow, 0) + "";\r
1948 fvAdditionalTableModel.removeRow(selectedRow);\r
1949 //\r
1950 //delete tab with selected FV name.\r
1951 //\r
1952 jTabbedPane.removeTabAt(jTabbedPane.indexOfTab(fvName));\r
1953 //delete FV Name from FvImages element.\r
1954 ffc.updateFvImageNameAll(fvName, null);\r
1955 //delete FvBinding from ModuleSA.\r
1956 ffc.removeFvBindingAll(fvName);\r
1957 docConsole.setSaved(false);\r
2b70a636 1958 }\r
1959 });\r
3658f95e 1960 }\r
1961 return jButtonDelFv;\r
1962 }\r
1963\r
1964 /**\r
1965 * This method initializes jButtonAddFvOptions \r
1966 * \r
1967 * @return javax.swing.JButton \r
1968 */\r
1969 private JButton getJButtonAddFvOptions() {\r
1970 if (jButtonAddFvOptions == null) {\r
1971 jButtonAddFvOptions = new JButton();\r
1972 jButtonAddFvOptions.setPreferredSize(new java.awt.Dimension(80,20));\r
b411fc1f 1973 jButtonAddFvOptions.setEnabled(true);\r
3658f95e 1974 jButtonAddFvOptions.setText("Options");\r
2b70a636 1975 jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {\r
1976 public void actionPerformed(java.awt.event.ActionEvent e) {\r
72426064 1977 int selectedRow = jTableFvAdditional.getSelectedRow();\r
1978 if (selectedRow < 0) {\r
1979 return;\r
1980 }\r
1981 String fvName = jTableFvAdditional.getValueAt(selectedRow, 0)+"";\r
1982 String oldFvSize = jTableFvAdditional.getValueAt(selectedRow, 1)+"";\r
1983 String oldFileName = jTableFvAdditional.getValueAt(selectedRow, 2)+"";\r
1984 if (fvName.length() == 0) {\r
1985 return;\r
1986 }\r
1987 DefaultTableModel dtm = getFvAdditionalOptTableModel();\r
1988 new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
1989 \r
1990 String[] updatedFvInfo = getBasicFvInfo (fvName);\r
1991 if (!oldFvSize.equalsIgnoreCase(updatedFvInfo[1])) {\r
1992 sizeFromOptionDlg = true;\r
1993 jTableFvAdditional.setValueAt(updatedFvInfo[1], selectedRow, 1);\r
1994 sizeFromOptionDlg = false;\r
1995 }\r
1996 if (!oldFileName.equals(updatedFvInfo[2])) {\r
1997 fileFromOptionDlg = true;\r
1998 jTableFvAdditional.setValueAt(updatedFvInfo[2], selectedRow, 2);\r
1999 fileFromOptionDlg = false;\r
2000 }\r
2b70a636 2001 }\r
2002 });\r
3658f95e 2003 }\r
2004 return jButtonAddFvOptions;\r
2005 }\r
3658f95e 2006 \r
72426064 2007 private String[] getBasicFvInfo (String fvName) {\r
2008 HashMap<String, String> mFvOpts = new HashMap<String, String>();\r
2009 ffc.getFvImagesFvImageOptions(fvName, mFvOpts);\r
2010 String bSize = "";\r
2011 String numBlks = "";\r
2012 String fvSize = "";\r
2013 String fvFile = "";\r
2014 if (mFvOpts.get("EFI_FILE_NAME") != null) {\r
2015 fvFile = mFvOpts.get("EFI_FILE_NAME");\r
2016 }\r
2017 if (mFvOpts.get("EFI_BLOCK_SIZE") != null && mFvOpts.get("EFI_NUM_BLOCKS") != null) {\r
2018 bSize = mFvOpts.get("EFI_BLOCK_SIZE");\r
2019 numBlks = mFvOpts.get("EFI_NUM_BLOCKS");\r
2020 boolean blockSizeWellFormat = true;\r
2021 boolean numOfBlockWellFormat = true;\r
2022 if (!DataValidation.isHexDoubleWordDataType(bSize) && !DataValidation.isInt(bSize)) {\r
2023 blockSizeWellFormat = false;\r
2024 JOptionPane.showMessageDialog(frame, fvName + " block size bad format.");\r
2025 } \r
2026 if (!DataValidation.isHexDoubleWordDataType(numBlks) && !DataValidation.isInt(numBlks)) {\r
2027 numOfBlockWellFormat = false;\r
2028 JOptionPane.showMessageDialog(frame, fvName + " number of blocks bad format.");\r
2029 }\r
2030 if (blockSizeWellFormat && numOfBlockWellFormat) {\r
2031 int size = Integer.decode(bSize);\r
2032 int num = Integer.decode(numBlks);\r
2033 fvSize = "0x" + Integer.toHexString(size*num);\r
2034 }\r
2035 }\r
2036 \r
2037 return new String[]{fvName, fvSize, fvFile};\r
2038\r
2039 }\r
2040 \r
2041 /**\r
2042 * This method initializes jPanelBgFvName \r
2043 * \r
2044 * @return javax.swing.JPanel \r
2045 */\r
2046 private JPanel getJPanelBgFvName() {\r
2047 if (jPanelBgFvName == null) {\r
2048 jPanelBgFvName = new JPanel();\r
2049 jPanelBgFvName.setPreferredSize(new java.awt.Dimension(80,55));\r
54aa8673 2050 jPanelBgFvName.add(getJButtonFvNameAdd(), null);\r
2051 jPanelBgFvName.add(getJButtonFvNameDel(), null);\r
72426064 2052 }\r
2053 return jPanelBgFvName;\r
2054 }\r
2055\r
2056 /**\r
2057 * This method initializes jPanelBgFvImage \r
2058 * \r
2059 * @return javax.swing.JPanel \r
2060 */\r
2061 private JPanel getJPanelBgFvImage() {\r
2062 if (jPanelBgFvImage == null) {\r
2063 jPanelBgFvImage = new JPanel();\r
2064 jPanelBgFvImage.setPreferredSize(new java.awt.Dimension(150,100));\r
2065 jPanelBgFvImage.add(getJButtonAddFvImage(), null);\r
2066 jPanelBgFvImage.add(getJButtonDelFvImage(), null);\r
2067 jPanelBgFvImage.add(getJButtonUpdateFvImage(), null);\r
2068 }\r
2069 return jPanelBgFvImage;\r
2070 }\r
2071\r
2072 /**\r
2073 * This method initializes jPanelW \r
2074 * \r
2075 * @return javax.swing.JPanel \r
2076 */\r
2077 private JPanel getJPanelW() {\r
2078 if (jPanelW == null) {\r
2079 jPanelW = new JPanel();\r
2080 jPanelW.add(getJPanelBgFvImage(), null);\r
2081 }\r
2082 return jPanelW;\r
2083 }\r
2084\r
31095724 2085 /**\r
2086 * This method initializes jPanelFvImageParaN \r
2087 * \r
2088 * @return javax.swing.JPanel \r
2089 */\r
2090 private JPanel getJPanelFvImageParaN() {\r
2091 if (jPanelFvImageParaN == null) {\r
2092 FlowLayout flowLayout3 = new FlowLayout();\r
2093 flowLayout3.setAlignment(java.awt.FlowLayout.CENTER);\r
2094 jPanelFvImageParaN = new JPanel();\r
2095 jPanelFvImageParaN.setLayout(flowLayout3);\r
2096 jPanelFvImageParaN.add(new StarLabel(), null);\r
2097 jPanelFvImageParaN.add(jLabelFvImageNames, null);\r
2098 jPanelFvImageParaN.add(jLabelFvParaName, null);\r
2099 jPanelFvImageParaN.add(getJTextFieldFvParaName(), null);\r
2100 }\r
2101 return jPanelFvImageParaN;\r
2102 }\r
2103\r
2104 /**\r
2105 * This method initializes jPanelFvImageParaS \r
2106 * \r
2107 * @return javax.swing.JPanel \r
2108 */\r
2109 private JPanel getJPanelFvImageParaS() {\r
2110 if (jPanelFvImageParaS == null) {\r
2111 FlowLayout flowLayout6 = new FlowLayout();\r
2112 flowLayout6.setAlignment(java.awt.FlowLayout.CENTER);\r
2113 jPanelFvImageParaS = new JPanel();\r
2114 jPanelFvImageParaS.setLayout(flowLayout6);\r
2115 jPanelFvImageParaS.add(jLabelFvParaType, null);\r
2116 jPanelFvImageParaS.add(getJComboBoxFvParaType(), null);\r
2117 }\r
2118 return jPanelFvImageParaS;\r
2119 }\r
2120\r
2121 /**\r
2122 * This method initializes jPanelFvImageParaC \r
2123 * \r
2124 * @return javax.swing.JPanel \r
2125 */\r
618737f8 2126// private JPanel getJPanelFvImageParaC() {\r
2127// if (jPanelFvImageParaC == null) {\r
2128// jPanelFvImageParaC = new JPanel();\r
2129// jPanelFvImageParaC.add(getJScrollPaneFvImageNames(), null);\r
2130// }\r
2131// return jPanelFvImageParaC;\r
2132// }\r
31095724 2133\r
2134 /**\r
2135 * This method initializes jPanelFvImageOptsN \r
2136 * \r
2137 * @return javax.swing.JPanel \r
2138 */\r
2139 private JPanel getJPanelFvImageOptsN() {\r
2140 if (jPanelFvImageOptsN == null) {\r
2141 jPanelFvImageOptsN = new JPanel();\r
2142 jPanelFvImageOptsN.add(jLabelOptions, null);\r
2143 jPanelFvImageOptsN.add(jLabelFvImageOptName, null);\r
2144 jPanelFvImageOptsN.add(getJTextFieldFvImageOptName(), null);\r
2145 jPanelFvImageOptsN.add(jLabelFvImageOptValue, null);\r
2146 jPanelFvImageOptsN.add(getJTextFieldFvImageOptValue(), null);\r
2147 }\r
2148 return jPanelFvImageOptsN;\r
2149 }\r
2150\r
2151 /**\r
2152 * This method initializes jPanelFvImageOptsS \r
2153 * \r
2154 * @return javax.swing.JPanel \r
2155 */\r
2156 private JPanel getJPanelFvImageOptsS() {\r
2157 if (jPanelFvImageOptsS == null) {\r
2158 jPanelFvImageOptsS = new JPanel();\r
2159 }\r
2160 return jPanelFvImageOptsS;\r
2161 }\r
2162\r
2163 /**\r
2164 * This method initializes jPanelFvImageOptsC \r
2165 * \r
2166 * @return javax.swing.JPanel \r
2167 */\r
618737f8 2168// private JPanel getJPanelFvImageOptsC() {\r
2169// if (jPanelFvImageOptsC == null) {\r
2170// jPanelFvImageOptsC = new JPanel();\r
2171// jPanelFvImageOptsC.add(getJScrollPane(), null);\r
2172// }\r
2173// return jPanelFvImageOptsC;\r
2174// }\r
2175\r
2176 /**\r
2177 * This method initializes jPanelFvImageParaE \r
2178 * \r
2179 * @return javax.swing.JPanel \r
2180 */\r
2181 private JPanel getJPanelFvImageParaE() {\r
2182 if (jPanelFvImageParaE == null) {\r
2183 jPanelFvImageParaE = new JPanel();\r
2184 jPanelFvImageParaE.add(getJPanelBgFvName(), null);\r
2185 }\r
2186 return jPanelFvImageParaE;\r
2187 }\r
2188\r
2189 /**\r
2190 * This method initializes jPanelFvImageOptsE \r
2191 * \r
2192 * @return javax.swing.JPanel \r
2193 */\r
2194 private JPanel getJPanelFvImageOptsE() {\r
2195 if (jPanelFvImageOptsE == null) {\r
2196 jPanelFvImageOptsE = new JPanel();\r
2197 jPanelFvImageOptsE.add(getJPanelFvImageOptsButtonGroup(), null);\r
2198 }\r
2199 return jPanelFvImageOptsE;\r
2200 }\r
2201\r
2202 /**\r
2203 * This method initializes jPanelFvImageSN \r
2204 * \r
2205 * @return javax.swing.JPanel \r
2206 */\r
2207 private JPanel getJPanelFvImageSN() {\r
2208 if (jPanelFvImageSN == null) {\r
2209 jPanelFvImageSN = new JPanel();\r
2210 jPanelFvImageSN.add(getJCheckBoxFvProperty(), null);\r
2211 jPanelFvImageSN.add(jLabelFvPropName, null);\r
2212 jPanelFvImageSN.add(getJTextFieldFvPropName(), null);\r
2213 jPanelFvImageSN.add(jLabelFvPropValue, null);\r
2214 jPanelFvImageSN.add(getJTextFieldFvPropValue(), null);\r
2215 }\r
2216 return jPanelFvImageSN;\r
2217 }\r
2218\r
2219 /**\r
2220 * This method initializes jPanelFvImageSE \r
2221 * \r
2222 * @return javax.swing.JPanel \r
2223 */\r
2224 private JPanel getJPanelFvImageSE() {\r
2225 if (jPanelFvImageSE == null) {\r
2226 jPanelFvImageSE = new JPanel();\r
2227 jPanelFvImageSE.add(getJPanelFvPropButtonGroup(), null);\r
2228 }\r
2229 return jPanelFvImageSE;\r
2230 }\r
2231\r
2232 /**\r
2233 * This method initializes jPanelFvImageSS \r
2234 * \r
2235 * @return javax.swing.JPanel \r
2236 */\r
2237 private JPanel getJPanelFvImageSS() {\r
2238 if (jPanelFvImageSS == null) {\r
2239 jPanelFvImageSS = new JPanel();\r
31095724 2240 }\r
618737f8 2241 return jPanelFvImageSS;\r
31095724 2242 }\r
2243\r
a13899c5 2244 /**\r
2245 * @param args\r
2246 */\r
2247 public static void main(String[] args) {\r
2248 // TODO Auto-generated method stub\r
2249 new FpdFlash().setVisible(true);\r
2250 }\r
2251\r
2252 /**\r
2253 * This method initializes this\r
2254 * \r
2255 * @return void\r
2256 */\r
2257 private void initialize() {\r
72426064 2258 this.setSize(660, 650);\r
a13899c5 2259 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
2260 this.setContentPane(getJContentPane());\r
2261 this.setTitle("FPD Flash Definitions");\r
44053733 2262 this.addInternalFrameListener(new InternalFrameAdapter(){\r
2263 public void internalFrameDeactivated(InternalFrameEvent e){\r
4da2e625 2264 if (jTableFvProp.isEditing()) {\r
2265 jTableFvProp.getCellEditor().stopCellEditing();\r
44053733 2266 }\r
4da2e625 2267 if (jTableFvImageNames.isEditing()) {\r
2268 jTableFvImageNames.getCellEditor().stopCellEditing();\r
44053733 2269 }\r
4da2e625 2270 if (jTableFvInfo.isEditing()) {\r
2271 jTableFvInfo.getCellEditor().stopCellEditing();\r
44053733 2272 }\r
98c20797 2273 if (jTableFvAdditional.isEditing()) {\r
2274 jTableFvAdditional.getCellEditor().stopCellEditing();\r
2275 }\r
44053733 2276 }\r
2277 });\r
a13899c5 2278 }\r
2279\r
2280 private void init(FpdFileContents ffc) {\r
72426064 2281 initFvAttributes();\r
3658f95e 2282 \r
2283 jTextFieldFdf.setText("");\r
2284 String fdfFile = ffc.getFlashDefinitionFile();\r
701d95b3 2285 if (fdfFile != null && fdfFile.length() > 0) {\r
0cc00bf0 2286 jCheckBoxFdf.setSelected(true);\r
3658f95e 2287 jTextFieldFdf.setText(fdfFile);\r
701d95b3 2288 String fdfPath = System.getenv("WORKSPACE") + File.separator + fdfFile;\r
2289 initFvInFdfTable(fdfPath);\r
3658f95e 2290 }\r
2291 \r
eb8ea829 2292 initFvAdditionalTable();\r
a13899c5 2293 }\r
2294 \r
ae0d4fd2 2295 private void getOptionNameValue(Map<String, String> m){\r
4da2e625 2296 for (int i = 0; i < jTableFvImageOpts.getRowCount(); ++i) {\r
ae0d4fd2 2297 m.put(fvOptionTableModel.getValueAt(i, 0)+"", fvOptionTableModel.getValueAt(i, 1)+"");\r
a13899c5 2298 }\r
2299 }\r
2300 /**\r
2301 * This method initializes jContentPane\r
2302 * \r
2303 * @return javax.swing.JPanel\r
2304 */\r
2305 private JPanel getJContentPane() {\r
2306 if (jContentPane == null) {\r
2307 jContentPane = new JPanel();\r
2308 jContentPane.setLayout(new BorderLayout());\r
4da2e625 2309 jContentPane.add(getJPanelContentEast(), java.awt.BorderLayout.EAST);\r
2310 jContentPane.add(getJPanelContentSouth(), java.awt.BorderLayout.SOUTH);\r
2311 jContentPane.add(getJPanelContentWest(), java.awt.BorderLayout.WEST);\r
2312 jContentPane.add(getJPanelContentNorth(), java.awt.BorderLayout.NORTH);\r
a13899c5 2313 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
2314 }\r
2315 return jContentPane;\r
2316 }\r
3658f95e 2317 \r
701d95b3 2318 private void getFlashInfoFromFdf (String fdfPath) {\r
98c20797 2319 File fdf = new File(fdfPath);\r
2320 if (!fdf.exists()) {\r
2321 return;\r
2322 }\r
2323 int lines = 0;\r
2324\r
2325 try {\r
2326 FileReader reader = new FileReader(fdf);\r
2327 BufferedReader in = new BufferedReader(reader);\r
2328 String str;\r
2329\r
2330 while ((str = in.readLine()) != null) {\r
2331 ++lines;\r
2332 str = str.trim();\r
2333 //\r
2334 // skip empty line, comment (start with //) \r
2335 //\r
2336 if (str.length() == 0 || str.startsWith("//")) {\r
2337 continue;\r
2338 }\r
2339 //\r
2340 // ErasePolarity\r
2341 //\r
2342 if (str.startsWith("ErasePolarity")) {\r
701d95b3 2343 erasePolarity = str.substring(str.indexOf("=") + 1, str.lastIndexOf(",")).trim();\r
98c20797 2344 }\r
2345 //\r
2346 // dig into Block section.\r
2347 //\r
2348 if (str.startsWith("Block") && str.endsWith("}")) {\r
2349 String[] blockSec = str.split(",");\r
2350 String nv = blockSec[1].trim();\r
2351 String[] sizeSec = nv.split("=");\r
2352 vBlockSize.add(sizeSec[1].trim());\r
2353 }\r
2354 \r
2355 }\r
2356 \r
2357 reader.close();\r
2358 in.close();\r
2359 }\r
2360 catch (Exception e) {\r
2361 \r
2362 }\r
2363 }\r
2364 \r
3658f95e 2365 private void getFvInfoFromFdf(String fdfPath, Vector<FvInfoFromFdf> vFvInfo) {\r
2366 File fdf = new File(fdfPath);\r
2367 if (!fdf.exists()) {\r
2368 return;\r
2369 }\r
2370 int lines = 0;\r
2371\r
2372 try {\r
2373 FileReader reader = new FileReader(fdf);\r
2374 BufferedReader in = new BufferedReader(reader);\r
2375 String str;\r
2376\r
2377 while ((str = in.readLine()) != null) {\r
2378 ++lines;\r
2379 str = str.trim();\r
2380 //\r
2381 // skip empty line, comment (start with //) \r
2382 //\r
2383 if (str.length() == 0 || str.startsWith("//")) {\r
2384 continue;\r
2385 }\r
2386 //\r
2387 // dig into Region {} section, create FvInfoFromFdf object for it.\r
2388 //\r
2389 if (str.startsWith("Region") && str.endsWith("{")) {\r
2390 FvInfoFromFdf fvInfo = new FvInfoFromFdf();\r
2391 boolean nameFound = false;\r
2392 boolean sizeFound = false;\r
2393 while ((str = in.readLine()) != null) {\r
2394 ++lines;\r
2395 str = str.trim();\r
2396 //\r
2397 // skip empty line, comment (start with //) \r
2398 //\r
2399 if (str.length() == 0 || str.startsWith("//")) {\r
2400 continue;\r
2401 }\r
2402 \r
2403 if (str.startsWith("Name")) {\r
2404 int firstQuote = str.indexOf("\"");\r
2405 int lastQuote = str.lastIndexOf("\"");\r
2406 fvInfo.setFvName(str.substring(firstQuote + 1, lastQuote));\r
2407 nameFound = true;\r
2408 }\r
2409 \r
2410 if (str.startsWith("Size")) {\r
2411 int equalIndex = str.indexOf("=");\r
2412 int commaIndex = str.indexOf(",");\r
2413 fvInfo.setSize(str.substring(equalIndex + 1, commaIndex).trim());\r
2414 sizeFound = true;\r
2415 }\r
2416 \r
2417 if (nameFound && sizeFound) {\r
2418 break;\r
2419 }\r
2420 }\r
2421 \r
2422 vFvInfo.add(fvInfo);\r
2423 }\r
2424 //\r
2425 // dig into File {} section, supply file name information to existing FvInfoFromFdf object.\r
2426 //\r
2427 if (str.startsWith("File")) {\r
2428 boolean fileNameFound = false;\r
2429 boolean fvFound = false;\r
2430 String fileName = "";\r
2431 String fvName = "";\r
2432 while ((str = in.readLine()) != null) {\r
2433 ++lines;\r
2434 str = str.trim();\r
2435 //\r
2436 // skip empty line, comment (start with //) \r
2437 //\r
2438 if (str.length() == 0 || str.startsWith("//")) {\r
2439 continue;\r
2440 }\r
2441 \r
2442 if (str.startsWith("Name")) {\r
2443 int firstQuote = str.indexOf("\"");\r
2444 int lastQuote = str.lastIndexOf("\"");\r
2445 fileName = str.substring(firstQuote + 1, lastQuote);\r
2446 fileNameFound = true;\r
2447 }\r
2448 \r
2449 if (str.startsWith("Region")) {\r
2450 int firstQuote = str.indexOf("\"");\r
2451 int lastQuote = str.lastIndexOf("\"");\r
2452 fvName = str.substring(firstQuote + 1, lastQuote);\r
2453 fvFound = true;\r
2454 }\r
2455 \r
2456 if (fileNameFound && fvFound) {\r
2457 break;\r
2458 }\r
2459 }\r
2460 \r
2461 for (int i = 0; i <vFvInfo.size(); ++i) {\r
2462 if (vFvInfo.get(i).getFvName().equals(fvName)) {\r
2463 vFvInfo.get(i).setEfiFileName(fileName);\r
2464 }\r
2465 }\r
2466 }\r
2467 \r
2468 }\r
2b70a636 2469 \r
2470 reader.close();\r
2471 in.close();\r
2472 }\r
2473 catch (Exception e) {\r
3658f95e 2474 \r
2475 }\r
2476\r
2477 }\r
17bd391e 2478 \r
2479// class ModuleSAInfo {\r
2480// private int rowNumber = -1;\r
2481// private String moduleGuid = null;\r
2482// private String moduleVersion = null;\r
2483// private String packageGuid = null;\r
2484// private String packageVersion = null;\r
2485// private String arch = null;\r
2486// \r
2487// public ModuleSAInfo (String mg, String mv, String pg, String pv, String a) {\r
2488// moduleGuid = mg;\r
2489// moduleVersion = mv;\r
2490// packageGuid = pg;\r
2491// packageVersion = pv;\r
2492// arch = a;\r
2493// }\r
2494//\r
2495// /**\r
2496// * @return Returns the arch.\r
2497// */\r
2498// public String getArch() {\r
2499// return arch;\r
2500// }\r
2501//\r
2502// /**\r
2503// * @param arch The arch to set.\r
2504// */\r
2505// public void setArch(String arch) {\r
2506// this.arch = arch;\r
2507// }\r
2508//\r
2509// /**\r
2510// * @return Returns the moduleGuid.\r
2511// */\r
2512// public String getModuleGuid() {\r
2513// return moduleGuid;\r
2514// }\r
2515//\r
2516// /**\r
2517// * @param moduleGuid The moduleGuid to set.\r
2518// */\r
2519// public void setModuleGuid(String moduleGuid) {\r
2520// this.moduleGuid = moduleGuid;\r
2521// }\r
2522//\r
2523// /**\r
2524// * @return Returns the moduleVersion.\r
2525// */\r
2526// public String getModuleVersion() {\r
2527// return moduleVersion;\r
2528// }\r
2529//\r
2530// /**\r
2531// * @param moduleVersion The moduleVersion to set.\r
2532// */\r
2533// public void setModuleVersion(String moduleVersion) {\r
2534// this.moduleVersion = moduleVersion;\r
2535// }\r
2536//\r
2537// /**\r
2538// * @return Returns the packageGuid.\r
2539// */\r
2540// public String getPackageGuid() {\r
2541// return packageGuid;\r
2542// }\r
2543//\r
2544// /**\r
2545// * @param packageGuid The packageGuid to set.\r
2546// */\r
2547// public void setPackageGuid(String packageGuid) {\r
2548// this.packageGuid = packageGuid;\r
2549// }\r
2550//\r
2551// /**\r
2552// * @return Returns the packageVersion.\r
2553// */\r
2554// public String getPackageVersion() {\r
2555// return packageVersion;\r
2556// }\r
2557//\r
2558// /**\r
2559// * @param packageVersion The packageVersion to set.\r
2560// */\r
2561// public void setPackageVersion(String packageVersion) {\r
2562// this.packageVersion = packageVersion;\r
2563// }\r
2564//\r
2565// /**\r
2566// * @return Returns the rowNumber.\r
2567// */\r
2568// public int getRowNumber() {\r
2569// return rowNumber;\r
2570// }\r
2571//\r
2572// /**\r
2573// * @param rowNumber The rowNumber to set.\r
2574// */\r
2575// public void setRowNumber(int rowNumber) {\r
2576// this.rowNumber = rowNumber;\r
2577// }\r
2578// }\r
2579 \r
61919f8c 2580 private class ModuleOrderPane extends JPanel {\r
2581\r
2582 /**\r
2583 * \r
2584 */\r
2585 private static final long serialVersionUID = 1L;\r
2586 private JPanel jPanelModOrderN = null;\r
2587 private JPanel jPanelModOrderS = null;\r
2588 private JPanel jPanelModOrderC = null;\r
2589 private JScrollPane jScrollPaneModInFv = null;\r
2590 private JTable jTableModInFv = null;\r
2591 private JPanel jPanelController = null;\r
2592 private JScrollPane jScrollPaneFpdModules = null;\r
2593 private JTable jTableFpdModules = null;\r
2594 private JButton jButtonUp = null;\r
2595 private JButton jButtonInsert = null;\r
2596 private JButton jButtonRemove = null;\r
2597 private JButton jButtonDown = null;\r
2598 private JButton jButtonOk = null;\r
2599 private JButton jButtonCancel = null;\r
ed850fbf 2600 private IDefaultTableModel modInFvTableModel = null;\r
2601 private IDefaultTableModel fpdModTableModel = null;\r
17bd391e 2602// private ArrayList<ModuleSAInfo> listTableModInFvModuleSAInfo = null;\r
2603// private ArrayList<ModuleSAInfo> listTableFpdModulesModuleSAInfo = null;\r
2b70a636 2604 private String title = null;\r
2605 private String outputFileName = null;\r
61919f8c 2606 \r
2b70a636 2607 public ModuleOrderPane(String tabTitle, String file) {\r
61919f8c 2608 super(new BorderLayout());\r
2b70a636 2609 title = tabTitle;\r
2610 outputFileName = file;\r
17bd391e 2611// listTableModInFvModuleSAInfo = new ArrayList<ModuleSAInfo>();\r
2612// listTableFpdModulesModuleSAInfo = new ArrayList<ModuleSAInfo>();\r
61919f8c 2613 add(getJPanelModOrderN(), java.awt.BorderLayout.NORTH);\r
2614 add(getJPanelModOrderS(), java.awt.BorderLayout.SOUTH);\r
2615 add(getJPanelModOrderC(), java.awt.BorderLayout.CENTER);\r
2b70a636 2616 showModulesInFv(title);\r
2617 showAllModulesInPlatform();\r
61919f8c 2618 }\r
2619 \r
2620 private void showModulesInFv(String fvName) {\r
2621 int size = ffc.getUserExtsIncModCount(fvName);\r
2622 \r
2623 if (size != -1) {\r
17bd391e 2624 String[][] saa = new String[size][5];\r
61919f8c 2625 ffc.getUserExtsIncMods(fvName, saa);\r
2626\r
2627 for (int i = 0; i < size; ++i) {\r
17bd391e 2628 String moduleKey = saa[i][0] + " " + saa[i][1] + " " + saa[i][2] + " " + saa[i][3];\r
2629 ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
2630 String name = "N/A";\r
2631 if (mi != null) {\r
2632 name = mi.getName();\r
2633 }\r
a0783edc 2634 \r
17bd391e 2635 String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] };\r
61919f8c 2636 modInFvTableModel.addRow(row);\r
2637 }\r
2638 }\r
2639 //\r
2640 // From ModuleSAs, get module guids with FvBinding = fvName.\r
2641 //\r
17bd391e 2642 Vector<String[]> vModuleSA = new Vector<String[]>();\r
2643 ffc.getFrameworkModuleSAByFvBinding(fvName, vModuleSA);\r
61919f8c 2644 //\r
2645 // If BuildOptions->UserExtensions already contain these module info,\r
2646 // no need to add them into table again.\r
2647 //\r
17bd391e 2648 Iterator<String[]> iter = vModuleSA.iterator();\r
61919f8c 2649 while (iter.hasNext()){\r
17bd391e 2650 String[] sa = iter.next();\r
2651 if (!moduleInfoInTable (sa, modInFvTableModel)) {\r
2652 String moduleKey = sa[0] + " " + sa[1] + " " + sa[2] + " " + sa[3];\r
2653 ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
2654 String name = "N/A";\r
2655 if (mi != null) {\r
2656 name = mi.getName();\r
2657 }\r
2658 String[] row = { name, sa[0] , sa[1], sa[2] , sa[3], sa[4] };\r
2b70a636 2659 modInFvTableModel.addRow(row);\r
61919f8c 2660 }\r
2661 }\r
2b70a636 2662\r
61919f8c 2663 }\r
2664 \r
2665 private void showAllModulesInPlatform() {\r
2666 int size = ffc.getFrameworkModulesCount();\r
2667 String[][] saa = new String[size][5];\r
2668 ffc.getFrameworkModulesInfo(saa);\r
2669 \r
2670 for (int i = 0; i < size; ++i) {\r
17bd391e 2671 if (moduleInfoInTable(saa[i], modInFvTableModel) || moduleInfoInTable(saa[i], fpdModTableModel)) {\r
61919f8c 2672 continue;\r
2673 }\r
17bd391e 2674 String moduleKey = saa[i][0] + " " + saa[i][1] + " " + saa[i][2] + " " + saa[i][3];\r
2675 ModuleIdentification mi = WorkspaceProfile.getModuleId(moduleKey);\r
2676 String name = "N/A";\r
2677 if (mi != null) {\r
2678 name = mi.getName();\r
2679 }\r
2680 String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] };\r
61919f8c 2681 fpdModTableModel.addRow(row);\r
2682 }\r
2683 \r
2684 TableSorter sorter = (TableSorter)jTableFpdModules.getModel();\r
2685 sorter.setSortState(0, TableSorter.ASCENDING);\r
2686 }\r
2687 \r
61919f8c 2688 \r
17bd391e 2689 private boolean moduleInfoInTable (String[] moduleInfo, DefaultTableModel model) {\r
2690 boolean matched = false;\r
61919f8c 2691 int size = model.getDataVector().size();\r
2692 for (int i = 0; i < size; ++i) {\r
17bd391e 2693 Vector rowData = (Vector)model.getDataVector().elementAt(i);\r
2694 for (int j = 1; j < rowData.size(); ++j) {\r
2695 if (rowData.elementAt(j) == null && moduleInfo[j-1] == null) {\r
2696 matched = true;\r
2697 }\r
2698 else if (rowData.elementAt(j).equals("null") && moduleInfo[j-1] == null) {\r
2699 matched = true;\r
2700 }\r
2701 else if (rowData.elementAt(j) == null && moduleInfo[j-1].equals("null")) {\r
2702 matched = true;\r
2703 }\r
2704 else if (rowData.elementAt(j) != null && rowData.elementAt(j).toString().equalsIgnoreCase(moduleInfo[j-1])) {\r
2705 matched = true;\r
2706 }\r
2707 else {\r
2708 matched = false;\r
2709 break;\r
2710 }\r
2711 }\r
2712 \r
2713 if (matched) {\r
61919f8c 2714 return true;\r
2715 }\r
17bd391e 2716 \r
61919f8c 2717 }\r
2718 return false;\r
2719 }\r
2720 \r
2b70a636 2721 \r
2722 \r
61919f8c 2723 /**\r
2724 * This method initializes jPanelModOrderN \r
2725 * \r
2726 * @return javax.swing.JPanel \r
2727 */\r
2728 private JPanel getJPanelModOrderN() {\r
2729 if (jPanelModOrderN == null) {\r
2730 jPanelModOrderN = new JPanel();\r
2731 }\r
2732 return jPanelModOrderN;\r
2733 }\r
2734\r
2735 /**\r
2736 * This method initializes jPanelModOrderS \r
2737 * \r
2738 * @return javax.swing.JPanel \r
2739 */\r
2740 private JPanel getJPanelModOrderS() {\r
2741 if (jPanelModOrderS == null) {\r
2742 FlowLayout flowLayout6 = new FlowLayout();\r
2743 flowLayout6.setAlignment(java.awt.FlowLayout.RIGHT);\r
2744 jPanelModOrderS = new JPanel();\r
2745 jPanelModOrderS.setLayout(flowLayout6);\r
2746 jPanelModOrderS.add(getJButtonOk(), null);\r
2747 jPanelModOrderS.add(getJButtonCancel(), null);\r
2748 }\r
2749 return jPanelModOrderS;\r
2750 }\r
2751\r
2752 /**\r
2753 * This method initializes jPanelModOrderC \r
2754 * \r
2755 * @return javax.swing.JPanel \r
2756 */\r
2757 private JPanel getJPanelModOrderC() {\r
2758 if (jPanelModOrderC == null) {\r
2759 jPanelModOrderC = new JPanel();\r
2760 jPanelModOrderC.add(getJScrollPaneModInFv(), null);\r
2761 jPanelModOrderC.add(getJPanelController(), null);\r
2762 jPanelModOrderC.add(getJScrollPaneFpdModules(), null);\r
2763 }\r
2764 return jPanelModOrderC;\r
2765 }\r
2766\r
2767 /**\r
2768 * This method initializes jScrollPaneModInFv \r
2769 * \r
2770 * @return javax.swing.JScrollPane \r
2771 */\r
2772 private JScrollPane getJScrollPaneModInFv() {\r
2773 if (jScrollPaneModInFv == null) {\r
2774 jScrollPaneModInFv = new JScrollPane();\r
2775 jScrollPaneModInFv.setPreferredSize(new java.awt.Dimension(200,500));\r
2776 jScrollPaneModInFv.setViewportView(getJTableModInFv());\r
2777 }\r
2778 return jScrollPaneModInFv;\r
2779 }\r
2780\r
2781 /**\r
2782 * This method initializes jTableModInFv \r
2783 * \r
2784 * @return javax.swing.JTable \r
2785 */\r
2786 private JTable getJTableModInFv() {\r
2787 if (jTableModInFv == null) {\r
ed850fbf 2788 modInFvTableModel = new IDefaultTableModel();\r
17bd391e 2789 \r
2790 jTableModInFv = new JTable(modInFvTableModel){\r
2791 /**\r
2792 * \r
2793 */\r
2794 private static final long serialVersionUID = 4903583933542581721L;\r
2795\r
2796 public String getToolTipText(MouseEvent e) {\r
2797 String tip = null;\r
2798 java.awt.Point p = e.getPoint();\r
2799 int rowIndex = rowAtPoint(p);\r
2800// int colIndex = columnAtPoint(p);\r
2801// int realColumnIndex = convertColumnIndexToModel(colIndex);\r
2802\r
2803 TableModel model = getModel();\r
2804 String mg = (String) model.getValueAt(rowIndex, 1);\r
2805 String mv = (String) model.getValueAt(rowIndex, 2);\r
2806 String pg = (String) model.getValueAt(rowIndex, 3);\r
2807 String pv = (String) model.getValueAt(rowIndex, 4);\r
2808 String arch = (String) model.getValueAt(rowIndex, 5);\r
2809 ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
2810 if (mi != null) {\r
2811 tip = "Path: " + mi.getPath() + "; Arch: " + arch + ";";\r
2812 }\r
2813 else {\r
2814 tip = "No Module Path Information."; \r
2815 }\r
2816 \r
2817 return tip;\r
2818 }\r
2819\r
2820 };\r
61919f8c 2821 modInFvTableModel.addColumn("Module Orders in FV");\r
17bd391e 2822 modInFvTableModel.addColumn("mg");\r
2823 modInFvTableModel.addColumn("mv");\r
2824 modInFvTableModel.addColumn("pg");\r
2825 modInFvTableModel.addColumn("pv");\r
2826 modInFvTableModel.addColumn("arch");\r
2827 \r
2828 for (int i = 1; i < 6; ++i) {\r
2829 jTableModInFv.removeColumn(jTableModInFv.getColumnModel().getColumn(jTableModInFv.getColumnCount()-1));\r
2830 }\r
2831 \r
61919f8c 2832 jTableModInFv.setRowHeight(20);\r
2833 jTableModInFv.setShowGrid(false);\r
423ba71f 2834 jTableModInFv.setAutoCreateColumnsFromModel(false);\r
17bd391e 2835 jTableModInFv.addMouseListener(new MouseAdapter() {\r
2836\r
2837 /* (non-Javadoc)\r
2838 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)\r
2839 */\r
2840 @Override\r
2841 public void mouseClicked(MouseEvent arg0) {\r
2842 if (arg0.getButton() == MouseEvent.BUTTON3) {\r
2843 java.awt.Point p = arg0.getPoint();\r
2844 int rowIndex = jTableModInFv.rowAtPoint(p);\r
2845 TableModel model = jTableModInFv.getModel();\r
2846 String mg = (String) model.getValueAt(rowIndex, 1);\r
2847 String mv = (String) model.getValueAt(rowIndex, 2);\r
2848 String pg = (String) model.getValueAt(rowIndex, 3);\r
2849 String pv = (String) model.getValueAt(rowIndex, 4);\r
2850 ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
2851 String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2852 if (mi != null) {\r
2853 details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2854 }\r
2855 JOptionPane.showMessageDialog(frame, details);\r
2856 }\r
2857 }\r
2858 \r
2859 });\r
61919f8c 2860 }\r
2861 return jTableModInFv;\r
2862 }\r
2863\r
2864 /**\r
2865 * This method initializes jPanelController \r
2866 * \r
2867 * @return javax.swing.JPanel \r
2868 */\r
2869 private JPanel getJPanelController() {\r
2870 if (jPanelController == null) {\r
2871 FlowLayout flowLayout5 = new FlowLayout();\r
2872 flowLayout5.setVgap(50);\r
2873 flowLayout5.setHgap(50);\r
2874 jPanelController = new JPanel();\r
2875 jPanelController.setLayout(flowLayout5);\r
2876 jPanelController.setPreferredSize(new java.awt.Dimension(150,500));\r
2877 jPanelController.add(getJButtonUp(), null);\r
2878 jPanelController.add(getJButtonInsert(), null);\r
2879 jPanelController.add(getJButtonRemove(), null);\r
2880 jPanelController.add(getJButtonDown(), null);\r
2881 }\r
2882 return jPanelController;\r
2883 }\r
2884\r
2885 /**\r
2886 * This method initializes jScrollPaneFpdModules \r
2887 * \r
2888 * @return javax.swing.JScrollPane \r
2889 */\r
2890 private JScrollPane getJScrollPaneFpdModules() {\r
2891 if (jScrollPaneFpdModules == null) {\r
2892 jScrollPaneFpdModules = new JScrollPane();\r
2893 jScrollPaneFpdModules.setPreferredSize(new java.awt.Dimension(200,500));\r
2894 jScrollPaneFpdModules.setViewportView(getJTableFpdModules());\r
2895 }\r
2896 return jScrollPaneFpdModules;\r
2897 }\r
2898\r
2899 /**\r
2900 * This method initializes jTableFpdModules \r
2901 * \r
2902 * @return javax.swing.JTable \r
2903 */\r
2904 private JTable getJTableFpdModules() {\r
2905 if (jTableFpdModules == null) {\r
ed850fbf 2906 fpdModTableModel = new IDefaultTableModel();\r
61919f8c 2907 TableSorter sorter = new TableSorter(fpdModTableModel);\r
17bd391e 2908 jTableFpdModules = new JTable(sorter){\r
2909 /**\r
2910 * \r
2911 */\r
2912 private static final long serialVersionUID = -4666296888377637808L;\r
2913\r
2914 public String getToolTipText(MouseEvent e) {\r
2915 String tip = null;\r
2916 java.awt.Point p = e.getPoint();\r
2917 int rowIndex = rowAtPoint(p);\r
2918// int colIndex = columnAtPoint(p);\r
2919// int realColumnIndex = convertColumnIndexToModel(colIndex);\r
2920\r
2921 TableModel model = getModel();\r
2922 String mg = (String) model.getValueAt(rowIndex, 1);\r
2923 String mv = (String) model.getValueAt(rowIndex, 2);\r
2924 String pg = (String) model.getValueAt(rowIndex, 3);\r
2925 String pv = (String) model.getValueAt(rowIndex, 4);\r
2926 String arch = (String) model.getValueAt(rowIndex, 5);\r
2927 ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
2928 if (mi != null) {\r
2929 tip = "Path: " + mi.getPath() + "; Arch: " + arch + ";";\r
2930 }\r
2931 else {\r
2932 tip = "No Module Path Information."; \r
2933 }\r
2934 \r
2935 return tip;\r
2936 }\r
2937\r
2938 };\r
2939 \r
2940 fpdModTableModel.addColumn("Modules in Platform");\r
2941 fpdModTableModel.addColumn("mg");\r
2942 fpdModTableModel.addColumn("mv");\r
2943 fpdModTableModel.addColumn("pg");\r
2944 fpdModTableModel.addColumn("pv");\r
2945 fpdModTableModel.addColumn("arch");\r
2946 \r
2947 for (int i = 1; i < 6; ++i) {\r
2948 jTableFpdModules.removeColumn(jTableFpdModules.getColumnModel().getColumn(jTableFpdModules.getColumnCount()-1));\r
2949 }\r
61919f8c 2950 jTableFpdModules.setRowHeight(20);\r
2951 jTableFpdModules.setShowGrid(false);\r
423ba71f 2952 jTableFpdModules.setAutoCreateColumnsFromModel(false);\r
17bd391e 2953 jTableFpdModules.addMouseListener(new MouseAdapter() {\r
2954\r
2955 /* (non-Javadoc)\r
2956 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)\r
2957 */\r
2958 @Override\r
2959 public void mouseClicked(MouseEvent arg0) {\r
2960 if (arg0.getButton() == MouseEvent.BUTTON3) {\r
2961 java.awt.Point p = arg0.getPoint();\r
2962 int rowIndex = jTableFpdModules.rowAtPoint(p);\r
2963 TableModel model = jTableFpdModules.getModel();\r
2964 String mg = (String) model.getValueAt(rowIndex, 1);\r
2965 String mv = (String) model.getValueAt(rowIndex, 2);\r
2966 String pg = (String) model.getValueAt(rowIndex, 3);\r
2967 String pv = (String) model.getValueAt(rowIndex, 4);\r
2968 ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
2969 String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2970 if (mi != null) {\r
2971 details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2972 }\r
2973 JOptionPane.showMessageDialog(frame, details);\r
2974 }\r
2975 }\r
2976 \r
2977 });\r
2b70a636 2978\r
61919f8c 2979 }\r
2980 return jTableFpdModules;\r
2981 }\r
2982\r
2983 /**\r
2984 * This method initializes jButtonUp \r
2985 * \r
2986 * @return javax.swing.JButton \r
2987 */\r
2988 private JButton getJButtonUp() {\r
2989 if (jButtonUp == null) {\r
2990 jButtonUp = new JButton();\r
2991 jButtonUp.setPreferredSize(new java.awt.Dimension(60,20));\r
2992 jButtonUp.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 14));\r
2993 jButtonUp.setText("^");\r
2994 jButtonUp.addActionListener(new java.awt.event.ActionListener() {\r
2995 public void actionPerformed(java.awt.event.ActionEvent e) {\r
2996 int selectedRow = jTableModInFv.getSelectedRow();\r
2997 if (selectedRow <= 0) {\r
2998 return;\r
2999 }\r
3000 modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow - 1);\r
3001 jTableModInFv.changeSelection(selectedRow - 1, 0, false, false);\r
3002 }\r
3003 });\r
3004 }\r
3005 return jButtonUp;\r
3006 }\r
3007\r
3008 /**\r
3009 * This method initializes jButtonInsert \r
3010 * \r
3011 * @return javax.swing.JButton \r
3012 */\r
3013 private JButton getJButtonInsert() {\r
3014 if (jButtonInsert == null) {\r
3015 jButtonInsert = new JButton();\r
53427242 3016 jButtonInsert.setText("<");\r
61919f8c 3017 jButtonInsert.setPreferredSize(new java.awt.Dimension(60,20));\r
3018 jButtonInsert.addActionListener(new java.awt.event.ActionListener() {\r
3019 public void actionPerformed(java.awt.event.ActionEvent e) {\r
3020 int selectedRowRight = jTableFpdModules.getSelectedRow();\r
3021 if (selectedRowRight < 0) {\r
3022 return;\r
3023 }\r
3024 \r
3025 int rowInModel = ((TableSorter)jTableFpdModules.getModel()).getModelRowIndex(selectedRowRight);\r
423ba71f 3026 String name = fpdModTableModel.getValueAt(rowInModel, 0)+"";\r
3027 String mg = fpdModTableModel.getValueAt(rowInModel, 1)+"";\r
3028 String mv = fpdModTableModel.getValueAt(rowInModel, 2)+"";\r
3029 String pg = fpdModTableModel.getValueAt(rowInModel, 3)+"";\r
3030 String pv = fpdModTableModel.getValueAt(rowInModel, 4)+"";\r
3031 String arch = fpdModTableModel.getValueAt(rowInModel, 5)+"";\r
17bd391e 3032 String[] row = {name, mg, mv, pg, pv, arch};\r
3033 if (name.length() == 0 || name.equals("N/A")) {\r
3034 return;\r
3035 }\r
61919f8c 3036 \r
61919f8c 3037 int selectedRowLeft = jTableModInFv.getSelectedRow();\r
3038 if (selectedRowLeft < 0) {\r
3039 modInFvTableModel.addRow(row);\r
3040 jTableModInFv.changeSelection(jTableModInFv.getRowCount() - 1, 0, false, false);\r
61919f8c 3041 }\r
3042 else {\r
3043 modInFvTableModel.insertRow(selectedRowLeft, row);\r
3044 jTableModInFv.changeSelection(selectedRowLeft, 0, false, false);\r
3045 }\r
2b70a636 3046 fpdModTableModel.removeRow(rowInModel);\r
61919f8c 3047 }\r
3048 });\r
3049 }\r
3050 return jButtonInsert;\r
3051 }\r
3052\r
3053 /**\r
3054 * This method initializes jButtonRemove \r
3055 * \r
3056 * @return javax.swing.JButton \r
3057 */\r
3058 private JButton getJButtonRemove() {\r
3059 if (jButtonRemove == null) {\r
3060 jButtonRemove = new JButton();\r
3061 jButtonRemove.setPreferredSize(new java.awt.Dimension(60,20));\r
53427242 3062 jButtonRemove.setText(">");\r
61919f8c 3063 jButtonRemove.addActionListener(new java.awt.event.ActionListener() {\r
3064 public void actionPerformed(java.awt.event.ActionEvent e) {\r
3065 int selectedRowLeft = jTableModInFv.getSelectedRow();\r
3066 if (selectedRowLeft < 0) {\r
3067 return;\r
3068 }\r
3069 \r
17bd391e 3070 String name = modInFvTableModel.getValueAt(selectedRowLeft, 0)+"";\r
3071 String mg = modInFvTableModel.getValueAt(selectedRowLeft, 1)+"";\r
3072 String mv = modInFvTableModel.getValueAt(selectedRowLeft, 2)+"";\r
3073 String pg = modInFvTableModel.getValueAt(selectedRowLeft, 3)+"";\r
3074 String pv = modInFvTableModel.getValueAt(selectedRowLeft, 4)+"";\r
3075 String arch = modInFvTableModel.getValueAt(selectedRowLeft, 5)+"";\r
3076 String[] row = {name, mg, mv, pg, pv, arch};\r
a0783edc 3077 String moduleKey = mg + " " + mv + " " + pg + " " + pv + " " + arch; \r
3078 if (name.length() == 0 || name.equals("N/A") || ffc.getModuleSA(moduleKey) == null) {\r
3079 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
3080 modInFvTableModel.removeRow(selectedRowLeft);\r
17bd391e 3081 return;\r
3082 }\r
a0783edc 3083 \r
61919f8c 3084 fpdModTableModel.addRow(row);\r
3085 int viewIndex = ((TableSorter) jTableFpdModules.getModel()).getViewIndexArray()[jTableFpdModules\r
3086 .getRowCount() - 1];\r
3087 jTableFpdModules.changeSelection(viewIndex, 0, false, false);\r
3088 modInFvTableModel.removeRow(selectedRowLeft);\r
3089 }\r
3090 });\r
3091 }\r
3092 return jButtonRemove;\r
3093 }\r
3094\r
3095 /**\r
3096 * This method initializes jButtonDown \r
3097 * \r
3098 * @return javax.swing.JButton \r
3099 */\r
3100 private JButton getJButtonDown() {\r
3101 if (jButtonDown == null) {\r
3102 jButtonDown = new JButton();\r
3103 jButtonDown.setPreferredSize(new java.awt.Dimension(60,20));\r
3104 jButtonDown.setFont(new java.awt.Font("Dialog", java.awt.Font.BOLD, 10));\r
3105 jButtonDown.setText("v");\r
3106 jButtonDown.addActionListener(new java.awt.event.ActionListener() {\r
3107 public void actionPerformed(java.awt.event.ActionEvent e) {\r
3108 int selectedRow = jTableModInFv.getSelectedRow();\r
3109 if (selectedRow >= jTableModInFv.getRowCount() - 1) {\r
3110 return;\r
3111 }\r
3112 modInFvTableModel.moveRow(selectedRow, selectedRow, selectedRow + 1);\r
3113 jTableModInFv.changeSelection(selectedRow + 1, 0, false, false);\r
3114 }\r
3115 });\r
3116 }\r
3117 return jButtonDown;\r
3118 }\r
3119 \r
3120 /**\r
3121 * This method initializes jButtonOk \r
3122 * \r
3123 * @return javax.swing.JButton \r
3124 */\r
3125 private JButton getJButtonOk() {\r
3126 if (jButtonOk == null) {\r
3127 jButtonOk = new JButton();\r
3128 jButtonOk.setPreferredSize(new java.awt.Dimension(80,20));\r
eb8ea829 3129 jButtonOk.setText("Ok");\r
2b70a636 3130 jButtonOk.addActionListener(new java.awt.event.ActionListener() {\r
3131 public void actionPerformed(java.awt.event.ActionEvent e) {\r
3132 // need reset FvBindings in ModuleSA.\r
3133 ffc.removeFvBindingAll(title);\r
3134 //\r
3135 // collect module order information to store them into <BuildOptions> -> <UserExtensions>.\r
3136 // also update the FvBinding info in <ModuleSA>.\r
3137 //\r
3138 Vector<String[]> vModInFv = new Vector<String[]>();\r
3139 for (int i = 0; i < jTableModInFv.getRowCount(); ++i) {\r
17bd391e 3140 String moduleName = modInFvTableModel.getValueAt(i, 0)+"";\r
3141 if (moduleName.length() == 0 || moduleName.equals("N/A")) {\r
2b70a636 3142 continue;\r
3143 }\r
17bd391e 3144 \r
3145 String mg = modInFvTableModel.getValueAt(i, 1)+"";\r
3146 String mv = modInFvTableModel.getValueAt(i, 2)+"";\r
3147 String pg = modInFvTableModel.getValueAt(i, 3)+"";\r
3148 String pv = modInFvTableModel.getValueAt(i, 4)+"";\r
3149 String arch = modInFvTableModel.getValueAt(i, 5)+"";\r
3150 \r
3151 String moduleInfo = mg + " " + mv + " " + pg + " " + pv + " " + arch;\r
3152 \r
3153 String[] sa = { mg, mv, pg, pv, arch};\r
3154 vModInFv.add(sa);\r
3155 ffc.updateFvBindingInModuleSA(moduleInfo, title);\r
2b70a636 3156 \r
3157 }\r
3158 ffc.removeBuildOptionsUserExtensions(title);\r
3159 ffc.genBuildOptionsUserExtensions(title, outputFileName, vModInFv);\r
3160 \r
3161 docConsole.setSaved(false);\r
3162 jTabbedPane.setSelectedIndex(0);\r
3163 }\r
3164 });\r
61919f8c 3165 }\r
3166 return jButtonOk;\r
3167 }\r
3168\r
3169 /**\r
3170 * This method initializes jButtonCancel \r
3171 * \r
3172 * @return javax.swing.JButton \r
3173 */\r
3174 private JButton getJButtonCancel() {\r
3175 if (jButtonCancel == null) {\r
3176 jButtonCancel = new JButton();\r
3177 jButtonCancel.setPreferredSize(new java.awt.Dimension(80,20));\r
3178 jButtonCancel.setText("Cancel");\r
3179 jButtonCancel.addActionListener(new java.awt.event.ActionListener() {\r
3180 public void actionPerformed(java.awt.event.ActionEvent e) {\r
3181 jTabbedPane.setSelectedIndex(0);\r
3182 }\r
3183 });\r
3184 }\r
3185 return jButtonCancel;\r
3186 }\r
3187 }\r
a13899c5 3188\r
3189} // @jve:decl-index=0:visual-constraint="10,10"\r
3190\r
b411fc1f 3191class FvOptsTableModel extends DefaultTableModel {\r
3192\r
3193 private static final long serialVersionUID = 1L;\r
3194 \r
3195 private Vector<Object> vNonEditableName = new Vector<Object>();\r
3196 private Vector<Object> vKeyWords = new Vector<Object>();\r
3197 \r
3198 public boolean isCellEditable(int row, int col) {\r
0cc00bf0 3199\r
b411fc1f 3200 if (vNonEditableName.size() > 0 || vKeyWords.size() > 0) {\r
3201 if (vKeyWords.contains(getValueAt(row, 0))) {\r
3202 return false;\r
3203 }\r
3204 if (vNonEditableName.contains(getValueAt(row, 0)) && col == 0) {\r
3205 return false;\r
3206 }\r
0cc00bf0 3207 }\r
3208 \r
3209 if (col == 0 && getValueAt(row, 0) != null && getValueAt(row, 0).toString().length() > 0) {\r
3210 return false;\r
3211 }\r
b411fc1f 3212 \r
3213 return true;\r
3214 }\r
3215\r
3216 /**\r
3217 * @return Returns the vKeyWords.\r
3218 */\r
3219 protected Vector<Object> getVKeyWords() {\r
3220 return vKeyWords;\r
3221 }\r
3222\r
3223 /**\r
3224 * @param keyWords The vKeyWords to set.\r
3225 */\r
3226 protected void setVKeyWords(Vector<Object> keyWords) {\r
3227 vKeyWords.removeAllElements();\r
3228 vKeyWords.addAll(keyWords);\r
3229 }\r
3230\r
3231 /**\r
3232 * @return Returns the vNonEditableName.\r
3233 */\r
3234 protected Vector<Object> getVNonEditableName() {\r
3235 return vNonEditableName;\r
3236 }\r
3237\r
3238 /**\r
3239 * @param nonEditableName The vNonEditableName to set.\r
3240 */\r
3241 protected void setVNonEditableName(Vector<Object> nonEditableName) {\r
3242 vNonEditableName.removeAllElements();\r
3243 vNonEditableName.addAll(nonEditableName);\r
3244 }\r
3245 \r
3246}\r
a13899c5 3247class ImageParaTableModel extends DefaultTableModel {\r
3248\r
44053733 3249 private static final long serialVersionUID = 1L;\r
44053733 3250 \r
3251 public boolean isCellEditable(int row, int col) {\r
98c20797 3252// if (getValueAt(row, 1).equals("ImageName") && col >=1) {\r
3253// return false;\r
3254// }\r
3255// return true;\r
3256 return false;\r
a13899c5 3257 }\r
3258}\r
ae0d4fd2 3259\r
3658f95e 3260class FvInfoFromFdf {\r
3261 private String fvName;\r
3262 private String size;\r
3263 private String efiFileName;\r
3264 \r
3265 public FvInfoFromFdf () {\r
3266 fvName = "";\r
3267 size = "";\r
3268 efiFileName = "";\r
3269 }\r
3270 public FvInfoFromFdf (String f, String s, String e) {\r
3271 this();\r
3272 fvName = f;\r
3273 size = s;\r
3274 efiFileName = e;\r
3275 }\r
3276 public String getEfiFileName() {\r
3277 return efiFileName;\r
3278 }\r
3279 public void setEfiFileName(String efiFileName) {\r
3280 this.efiFileName = efiFileName;\r
3281 }\r
3282 public String getFvName() {\r
3283 return fvName;\r
3284 }\r
3285 public void setFvName(String fvName) {\r
3286 this.fvName = fvName;\r
3287 }\r
3288 public String getSize() {\r
3289 return size;\r
3290 }\r
3291 public void setSize(String size) {\r
3292 this.size = size;\r
3293 }\r
3294 \r
3295}\r