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