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