]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - 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
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
19import javax.swing.JFileChooser;\r
20import javax.swing.JFrame;\r
21import javax.swing.JOptionPane;\r
22import javax.swing.JTabbedPane;\r
23import javax.swing.JButton;\r
24import javax.swing.ListSelectionModel;\r
25\r
26import org.tianocore.PlatformSurfaceAreaDocument;\r
27import org.tianocore.frameworkwizard.common.DataValidation;\r
28import org.tianocore.frameworkwizard.common.IDefaultTableModel;\r
29import org.tianocore.frameworkwizard.common.Identifications.OpeningPlatformType;\r
30import org.tianocore.frameworkwizard.common.ui.IInternalFrame;\r
31import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
32import org.tianocore.frameworkwizard.module.Identifications.ModuleIdentification;\r
33import org.tianocore.frameworkwizard.platform.ui.global.WorkspaceProfile;\r
34import org.tianocore.frameworkwizard.workspace.Workspace;\r
35\r
36import java.awt.FlowLayout;\r
37import java.awt.event.ActionEvent;\r
38import java.awt.event.ActionListener;\r
39import java.awt.event.ComponentAdapter;\r
40import java.awt.event.ComponentEvent;\r
41import java.awt.event.ItemEvent;\r
42import java.awt.event.ItemListener;\r
43import java.awt.event.MouseAdapter;\r
44import java.awt.event.MouseEvent;\r
45import java.io.BufferedReader;\r
46import java.io.File;\r
47import java.io.FileReader;\r
48import java.util.HashMap;\r
49import java.util.Iterator;\r
50import java.util.LinkedHashMap;\r
51import java.util.Map;\r
52import java.util.Set;\r
53import java.util.Vector;\r
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
61import javax.swing.event.InternalFrameAdapter;\r
62import javax.swing.event.InternalFrameEvent;\r
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
68import javax.swing.table.TableModel;\r
69import javax.swing.JComboBox;\r
70import java.awt.Dimension;\r
71import javax.swing.JSplitPane;\r
72\r
73public class FpdFlash extends IInternalFrame {\r
74\r
75 /**\r
76 * \r
77 */\r
78 private static final long serialVersionUID = 1L;\r
79 private final int startIndexOfDynamicTab = 2;\r
80 static JFrame frame;\r
81 private JPanel jContentPane = null;\r
82 private JPanel jPanelContentEast = null;\r
83 private JPanel jPanelContentSouth = null;\r
84 private JPanel jPanelContentWest = null;\r
85 private JPanel jPanelContentNorth = null;\r
86 private JTabbedPane jTabbedPane = null;\r
87 private JPanel jPanelFvImages = null;\r
88 private JPanel jPanelFvImageS = null;\r
89 private JPanel jPanelFvImageN = null;\r
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
100 private DefaultTableModel fvPropertyTableModel = null;\r
101 private DefaultTableModel fvImageNameTableModel = null;\r
102 private ImageParaTableModel fvImageParaTableModel = null;\r
103 private DefaultTableModel fvOptionTableModel = null;\r
104 private JPanel jPanelFvImageC = null;\r
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
110 private JButton jButtonFvNameAdd = null;\r
111 private JScrollPane jScrollPaneFvImageNames = null;\r
112 private JTable jTableFvImageNames = null;\r
113 private JButton jButtonFvNameDel = null;\r
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
119 private JPanel jPanelFvImagePara = null;\r
120 private OpeningPlatformType docConsole = null;\r
121 private FpdFileContents ffc = null;\r
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
133 private JScrollPane jScrollPane = null;\r
134 private JTable jTableFvImageOpts = null;\r
135 private JButton jButtonUpdateFvImage = null;\r
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
143// private JPanel jPanelFdfCTopC = null;\r
144 private JPanel jPanelFdfCBottomN = null;\r
145// private JPanel jPanelFdfCBottomC = null;\r
146 private JLabel jLabelFvInFdf = null;\r
147 private JLabel jLabelFvAdditional = null;\r
148 private JScrollPane jScrollPaneFvInFdf = null;\r
149 private JTable jTableFvInFdf = null;\r
150 private IDefaultTableModel fvInFdfTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
151 private JButton jButtonFvInFdfOptions = null;\r
152 private JScrollPane jScrollPaneFvAdditional = null;\r
153 private JTable jTableFvAdditional = null;\r
154 private DefaultTableModel fvAdditionalTableModel = null; // @jve:decl-index=0:visual-constraint=""\r
155 private JButton jButtonAddFv = null;\r
156 private JButton jButtonDelFv = null;\r
157 private JButton jButtonAddFvOptions = null;\r
158 private int tabIndexForFv = -1;\r
159 private int selectedRowInFvAdditionalTable = -1;\r
160 private String oldFvName = null;\r
161 private Vector<String> vBlockSize = new Vector<String>();\r
162 private String determinedFvBlockSize = null;\r
163 private final String defaultBlkSize = "0x10000";\r
164 private String erasePolarity = "";\r
165 boolean memModified = false;\r
166 private FvOptsTableModel fvInFdfOptTableModel = null;\r
167 private FvOptsTableModel fvAdditionalOptTableModel = null;\r
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
174 private JPanel jPanelFvImageParaN = null;\r
175 private JPanel jPanelFvImageParaS = null;\r
176// private JPanel jPanelFvImageParaC = null;\r
177 private JPanel jPanelFvImageOptsN = null;\r
178 private JPanel jPanelFvImageOptsS = null;\r
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
185 \r
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
201 public FpdFlash(OpeningPlatformType opt) {\r
202 this(opt.getXmlFpd());\r
203 docConsole = opt;\r
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
209 }\r
210 \r
211 /**\r
212 * This method initializes jPanel \r
213 * \r
214 * @return javax.swing.JPanel \r
215 */\r
216 private JPanel getJPanelContentEast() {\r
217 if (jPanelContentEast == null) {\r
218 FlowLayout flowLayout7 = new FlowLayout();\r
219 flowLayout7.setVgap(50);\r
220 jPanelContentEast = new JPanel();\r
221 jPanelContentEast.setLayout(flowLayout7);\r
222 }\r
223 return jPanelContentEast;\r
224 }\r
225\r
226 /**\r
227 * This method initializes jPanel1 \r
228 * \r
229 * @return javax.swing.JPanel \r
230 */\r
231 private JPanel getJPanelContentSouth() {\r
232 if (jPanelContentSouth == null) {\r
233 FlowLayout flowLayout = new FlowLayout();\r
234 flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);\r
235 flowLayout.setHgap(15);\r
236 jPanelContentSouth = new JPanel();\r
237 jPanelContentSouth.setLayout(flowLayout);\r
238 jPanelContentSouth.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);\r
239 }\r
240 return jPanelContentSouth;\r
241 }\r
242\r
243 /**\r
244 * This method initializes jPanel2 \r
245 * \r
246 * @return javax.swing.JPanel \r
247 */\r
248 private JPanel getJPanelContentWest() {\r
249 if (jPanelContentWest == null) {\r
250 jPanelContentWest = new JPanel();\r
251 }\r
252 return jPanelContentWest;\r
253 }\r
254\r
255 /**\r
256 * This method initializes jPanel3 \r
257 * \r
258 * @return javax.swing.JPanel \r
259 */\r
260 private JPanel getJPanelContentNorth() {\r
261 if (jPanelContentNorth == null) {\r
262 jPanelContentNorth = new JPanel();\r
263 }\r
264 return jPanelContentNorth;\r
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
275 jTabbedPane.addTab("General", null, getJPanelFdf(), null);\r
276 jTabbedPane.addTab("Advanced", null, getJPanelFvImages(), null);\r
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
291 jPanelFvImages.add(getJPanelFvImageN(), java.awt.BorderLayout.NORTH);\r
292 jPanelFvImages.add(getJPanelFvImageS(), java.awt.BorderLayout.SOUTH);\r
293 jPanelFvImages.add(getJPanelFvImageC(), java.awt.BorderLayout.CENTER);\r
294 jPanelFvImages.add(getJPanelW(), java.awt.BorderLayout.EAST);\r
295 jPanelFvImages.addComponentListener(new java.awt.event.ComponentAdapter() {\r
296 public void componentShown(java.awt.event.ComponentEvent e) {\r
297// fvImageParaTableModel.setRowCount(0);\r
298// fvPropertyTableModel.setRowCount(0);\r
299 \r
300 \r
301 }\r
302 });\r
303 \r
304 }\r
305 return jPanelFvImages;\r
306 }\r
307\r
308 /**\r
309 * This method initializes jPanelFvImageN \r
310 * \r
311 * @return javax.swing.JPanel \r
312 */\r
313 private JPanel getJPanelFvImageS() {\r
314 if (jPanelFvImageS == null) {\r
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
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
332 }\r
333 return jPanelFvImageS;\r
334 }\r
335\r
336 /**\r
337 * This method initializes jPanelFvImageS \r
338 * \r
339 * @return javax.swing.JPanel \r
340 */\r
341 private JPanel getJPanelFvImageN() {\r
342 if (jPanelFvImageN == null) {\r
343 GridLayout gridLayout2 = new GridLayout();\r
344 gridLayout2.setRows(1);\r
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
349 }\r
350 return jPanelFvImageN;\r
351 }\r
352\r
353\r
354 /**\r
355 * This method initializes jCheckBox1 \r
356 * \r
357 * @return javax.swing.JCheckBox \r
358 */\r
359 private JCheckBox getJCheckBoxFvProperty() {\r
360 if (jCheckBoxFvProperty == null) {\r
361 jCheckBoxFvProperty = new JCheckBox();\r
362 jCheckBoxFvProperty.setText("Global FV Variables");\r
363 jCheckBoxFvProperty.addItemListener(new ItemListener(){\r
364\r
365 public void itemStateChanged(ItemEvent arg0) {\r
366 // TODO Auto-generated method stub\r
367 boolean seleted = jCheckBoxFvProperty.isSelected();\r
368 \r
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
376 \r
377 \r
378 }\r
379 \r
380 });\r
381 }\r
382 return jCheckBoxFvProperty;\r
383 }\r
384\r
385\r
386 /**\r
387 * This method initializes jTextField \r
388 * \r
389 * @return javax.swing.JTextField \r
390 */\r
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
396 }\r
397 return jTextFieldFvPropName;\r
398 }\r
399\r
400\r
401 /**\r
402 * This method initializes jTextField1 \r
403 * \r
404 * @return javax.swing.JTextField \r
405 */\r
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
411 }\r
412 return jTextFieldFvPropValue;\r
413 }\r
414\r
415\r
416 /**\r
417 * This method initializes jButton \r
418 * \r
419 * @return javax.swing.JButton \r
420 */\r
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
428 /**\r
429 * \r
430 */\r
431 private static final long serialVersionUID = 1L;\r
432\r
433 public void actionPerformed(ActionEvent e) {\r
434 if (jTextFieldFvPropName.getText().length() > 0 && jTextFieldFvPropValue.getText().length() > 0){\r
435 String[] row = {jTextFieldFvPropName.getText(), jTextFieldFvPropValue.getText()}; \r
436 fvPropertyTableModel.addRow(row);\r
437 docConsole.setSaved(false);\r
438 ffc.genFvImagesNameValue(row[0], row[1]);\r
439 }\r
440 }\r
441 });\r
442 }\r
443 return jButtonFvPropAdd;\r
444 }\r
445\r
446\r
447 /**\r
448 * This method initializes jScrollPane1 \r
449 * \r
450 * @return javax.swing.JScrollPane \r
451 */\r
452 private JScrollPane getJScrollPaneFvProp() {\r
453 if (jScrollPaneFvProp == null) {\r
454 jScrollPaneFvProp = new JScrollPane();\r
455 jScrollPaneFvProp.setPreferredSize(new java.awt.Dimension(350,100));\r
456 jScrollPaneFvProp.setViewportView(getJTableFvProp());\r
457 }\r
458 return jScrollPaneFvProp;\r
459 }\r
460\r
461\r
462 /**\r
463 * This method initializes jTable \r
464 * \r
465 * @return javax.swing.JTable \r
466 */\r
467 private JTable getJTableFvProp() {\r
468 if (jTableFvProp == null) {\r
469 fvPropertyTableModel = new DefaultTableModel();\r
470 jTableFvProp = new JTable(fvPropertyTableModel);\r
471 fvPropertyTableModel.addColumn("Name");\r
472 fvPropertyTableModel.addColumn("Value");\r
473 jTableFvProp.setRowHeight(20);\r
474 jTableFvProp.setEnabled(false);\r
475 \r
476 jTableFvProp.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
477 jTableFvProp.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
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
492 jTableFvProp.getModel().addTableModelListener(new TableModelListener(){\r
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
501 docConsole.setSaved(false);\r
502 ffc.updateFvImagesNameValue(row, name, value);\r
503 }\r
504 }\r
505 });\r
506 }\r
507 return jTableFvProp;\r
508 }\r
509\r
510\r
511 /**\r
512 * This method initializes jPanel4 \r
513 * \r
514 * @return javax.swing.JPanel \r
515 */\r
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
520 \r
521 jPanelFvPropButtonGroup.add(getJButtonFvPropAdd(), null);\r
522 jPanelFvPropButtonGroup.add(getJButtonFvPropDel(), null);\r
523 }\r
524 return jPanelFvPropButtonGroup;\r
525 }\r
526\r
527\r
528 /**\r
529 * This method initializes jButton1 \r
530 * \r
531 * @return javax.swing.JButton \r
532 */\r
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
540 /**\r
541 * \r
542 */\r
543 private static final long serialVersionUID = 1L;\r
544\r
545 public void actionPerformed(ActionEvent e) {\r
546 if (jTableFvProp.getSelectedRow() >= 0){\r
547 fvPropertyTableModel.removeRow(jTableFvProp.getSelectedRow());\r
548 docConsole.setSaved(false);\r
549 ffc.removeFvImagesNameValue(jTableFvProp.getSelectedRow());\r
550 }\r
551 }\r
552 });\r
553 }\r
554 return jButtonFvPropDel;\r
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
565 GridLayout gridLayout = new GridLayout();\r
566 gridLayout.setRows(2);\r
567 jLabelFvParaName = new JLabel();\r
568 jLabelFvParaName.setPreferredSize(new Dimension(38, 20));\r
569 jLabelFvParaName.setText("Name");\r
570 jLabelFvImageNames = new JLabel();\r
571 jLabelFvImageNames.setText("FV Image Names");\r
572 jLabelFvImageNames.setPreferredSize(new java.awt.Dimension(150,20));\r
573 jLabelFvParaType = new JLabel();\r
574 jLabelFvParaType.setText("Type");\r
575 jLabelFvParaType.setPreferredSize(new java.awt.Dimension(70,20));\r
576 jPanelFvImageC = new JPanel();\r
577 jPanelFvImageC.setLayout(gridLayout);\r
578 jPanelFvImageC.add(getJPanelFvImagePara(), null);\r
579 jPanelFvImageC.add(getJPanelFvImageOpts(), null);\r
580 \r
581 \r
582 }\r
583 return jPanelFvImageC;\r
584 }\r
585\r
586\r
587 /**\r
588 * This method initializes jComboBox \r
589 * \r
590 * @return javax.swing.JComboBox \r
591 */\r
592 private JComboBox getJComboBoxFvParaType() {\r
593 if (jComboBoxFvParaType == null) {\r
594 jComboBoxFvParaType = new JComboBox();\r
595 jComboBoxFvParaType.addItem("Attributes");\r
596 jComboBoxFvParaType.addItem("Components");\r
597 jComboBoxFvParaType.setSelectedIndex(0);\r
598 jComboBoxFvParaType.setPreferredSize(new java.awt.Dimension(180,20));\r
599 jComboBoxFvParaType.addItemListener(new ItemListener() {\r
600\r
601 public void itemStateChanged(ItemEvent arg0) {\r
602 // TODO disable attribute settings when ValidImageNames selected.\r
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
613 \r
614 String type = jComboBoxFvParaType.getSelectedItem()+"";\r
615 ffc.updateFvImagesFvImageType(fvImagePos, type);\r
616 jTableFvInfo.setValueAt(type, selectedRow, 1);\r
617 docConsole.setSaved(false);\r
618 }\r
619 \r
620 });\r
621 }\r
622 return jComboBoxFvParaType;\r
623 }\r
624\r
625\r
626 /**\r
627 * This method initializes jTextField2 \r
628 * \r
629 * @return javax.swing.JTextField \r
630 */\r
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
635 }\r
636 return jTextFieldFvParaName;\r
637 }\r
638\r
639\r
640 /**\r
641 * This method initializes jButton2 \r
642 * \r
643 * @return javax.swing.JButton \r
644 */\r
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
652 /**\r
653 * \r
654 */\r
655 private static final long serialVersionUID = 1L;\r
656\r
657 public void actionPerformed(java.awt.event.ActionEvent e) {\r
658 if (jTextFieldFvParaName.getText().length() > 0){\r
659 String[] row = {jTextFieldFvParaName.getText()}; \r
660 int selectedRow = jTableFvInfo.getSelectedRow();\r
661 if (selectedRow < 0) {\r
662 return;\r
663 }\r
664 \r
665 String fvNameList = jTableFvInfo.getValueAt(selectedRow, 0)+"";\r
666 String type = jTableFvInfo.getValueAt(selectedRow, 1)+"";\r
667 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
668 \r
669 if (fvImagePos < 0) {\r
670 // new FvImage.\r
671 ffc.genFvImagesFvImage(row, jComboBoxFvParaType.getSelectedItem()+"", null); \r
672 }\r
673 else {\r
674 //append Fv name.\r
675 ffc.addFvImageNamesInFvImage(fvImagePos, row); \r
676 }\r
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
683 }\r
684 }\r
685 });\r
686 }\r
687 return jButtonFvNameAdd;\r
688 }\r
689\r
690\r
691 /**\r
692 * This method initializes jScrollPane2 \r
693 * \r
694 * @return javax.swing.JScrollPane \r
695 */\r
696 private JScrollPane getJScrollPaneFvImageNames() {\r
697 if (jScrollPaneFvImageNames == null) {\r
698 jScrollPaneFvImageNames = new JScrollPane();\r
699 jScrollPaneFvImageNames.setPreferredSize(new java.awt.Dimension(350,80));\r
700 jScrollPaneFvImageNames.setViewportView(getJTableFvImageNames());\r
701 }\r
702 return jScrollPaneFvImageNames;\r
703 }\r
704\r
705\r
706 /**\r
707 * This method initializes jTable1 \r
708 * \r
709 * @return javax.swing.JTable \r
710 */\r
711 private JTable getJTableFvImageNames() {\r
712 if (jTableFvImageNames == null) {\r
713 fvImageNameTableModel = new IDefaultTableModel();\r
714 jTableFvImageNames = new JTable(fvImageNameTableModel);\r
715 jTableFvImageNames.setRowHeight(20);\r
716 fvImageNameTableModel.addColumn("FV Image Name");\r
717 \r
718 }\r
719 return jTableFvImageNames;\r
720 }\r
721\r
722\r
723 /**\r
724 * This method initializes jButton3 \r
725 * \r
726 * @return javax.swing.JButton \r
727 */\r
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
735 /**\r
736 * \r
737 */\r
738 private static final long serialVersionUID = 1L;\r
739\r
740 public void actionPerformed(java.awt.event.ActionEvent e) {\r
741 if (jTableFvImageNames.getSelectedRow() >= 0){\r
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
762 fvImageNameTableModel.removeRow(jTableFvImageNames.getSelectedRow());\r
763 }\r
764 }\r
765 });\r
766 }\r
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
794\r
795 \r
796 private JPanel getJPanelFvImageOpts() {\r
797 \r
798\r
799 if (jPanelFvImageOpts == null) {\r
800 //ToDo add ButtonGroup for RadioButtons\r
801 jLabelOptions = new JLabel();\r
802 jLabelOptions.setText("Attribute");\r
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
812 jPanelFvImageOpts.setLayout(new BorderLayout());\r
813 jPanelFvImageOpts.setPreferredSize(new java.awt.Dimension(450,130));\r
814 \r
815 \r
816 jPanelFvImageOpts.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED));\r
817\r
818 jPanelFvImageOpts.add(getJPanelFvImageOptsN(), java.awt.BorderLayout.NORTH);\r
819 jPanelFvImageOpts.add(getJPanelFvImageOptsS(), java.awt.BorderLayout.SOUTH);\r
820 jPanelFvImageOpts.add(getJScrollPane(), java.awt.BorderLayout.CENTER);\r
821\r
822 jPanelFvImageOpts.add(getJPanelFvImageOptsE(), java.awt.BorderLayout.EAST);\r
823 }\r
824 return jPanelFvImageOpts;\r
825 }\r
826\r
827\r
828 /**\r
829 * This method initializes jButton4 \r
830 * \r
831 * @return javax.swing.JButton \r
832 */\r
833 private JButton getJButtonAddFvImage() {\r
834 if (jButtonAddFvImage == null) {\r
835 jButtonAddFvImage = new JButton();\r
836 jButtonAddFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
837 jButtonAddFvImage.setText("New FV Attributes");\r
838 jButtonAddFvImage.addActionListener(new AbstractAction() {\r
839 /**\r
840 * \r
841 */\r
842 private static final long serialVersionUID = 1L;\r
843\r
844 public void actionPerformed(java.awt.event.ActionEvent e) {\r
845 \r
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
850// }\r
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
863 }\r
864 });\r
865 }\r
866 return jButtonAddFvImage;\r
867 }\r
868\r
869\r
870 /**\r
871 * This method initializes jScrollPane3 \r
872 * \r
873 * @return javax.swing.JScrollPane \r
874 */\r
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
880 }\r
881 return jScrollPaneFvInfo;\r
882 }\r
883\r
884\r
885 /**\r
886 * This method initializes jTable2 \r
887 * \r
888 * @return javax.swing.JTable \r
889 */\r
890 private JTable getJTableFvInfo() {\r
891 if (jTableFvInfo == null) {\r
892 fvImageParaTableModel = new ImageParaTableModel();\r
893 jTableFvInfo = new JTable(fvImageParaTableModel);\r
894 fvImageParaTableModel.addColumn("FvImageNames");\r
895 fvImageParaTableModel.addColumn("Type");\r
896 \r
897 jTableFvInfo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
898 jTableFvInfo.setRowHeight(20);\r
899 jTableFvInfo.getSelectionModel().addListSelectionListener(new ListSelectionListener(){\r
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
909 int selectedRow = lsm.getMinSelectionIndex();\r
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
915 fvOptionTableModel.setRowCount(0);\r
916 for (int i = 0; i < fvNames.length; ++i) {\r
917 String[] row = { fvNames[i] };\r
918 if (row[0].length() > 0) {\r
919 fvImageNameTableModel.addRow(row);\r
920 }\r
921 }\r
922 \r
923 int fvImagePos = ffc.getFvImagePosInFvImages(fvNameList, type);\r
924 if (fvImagePos < 0) {\r
925 return;\r
926 }\r
927 LinkedHashMap<String, String> optionMap = new LinkedHashMap<String, String>();\r
928 ffc.getFvImagesFvImageOptions(fvImagePos, optionMap);\r
929 if (optionMap.size() > 0){\r
930 Set<String> key = optionMap.keySet();\r
931 Iterator<String> i = key.iterator();\r
932 while (i.hasNext()) {\r
933 String k = (String)i.next();\r
934 String[] row = {k, optionMap.get(k)};\r
935 fvOptionTableModel.addRow(row);\r
936 }\r
937 }\r
938 }\r
939 }\r
940 });\r
941 \r
942 \r
943 }\r
944 return jTableFvInfo;\r
945 }\r
946\r
947\r
948 /**\r
949 * This method initializes jButton6 \r
950 * \r
951 * @return javax.swing.JButton \r
952 */\r
953 private JButton getJButtonDelFvImage() {\r
954 if (jButtonDelFvImage == null) {\r
955 jButtonDelFvImage = new JButton();\r
956 jButtonDelFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
957 jButtonDelFvImage.setText("Delete FV Attributes");\r
958 jButtonDelFvImage.addActionListener(new AbstractAction() {\r
959 /**\r
960 * \r
961 */\r
962 private static final long serialVersionUID = 1L;\r
963\r
964 public void actionPerformed(ActionEvent arg0) {\r
965 // TODO Auto-generated method stub\r
966 if (jTableFvInfo.getSelectedRow() >= 0 ) {\r
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
971 fvImageParaTableModel.removeRow(jTableFvInfo.getSelectedRow());\r
972 docConsole.setSaved(false);\r
973 \r
974 fvImageNameTableModel.setRowCount(0);\r
975 fvOptionTableModel.setRowCount(0);\r
976 }\r
977 }\r
978 \r
979 });\r
980 }\r
981 return jButtonDelFvImage;\r
982 }\r
983\r
984\r
985 /**\r
986 * This method initializes jPanel6 \r
987 * \r
988 * @return javax.swing.JPanel \r
989 */\r
990 private JPanel getJPanelFvImagePara() {\r
991 if (jPanelFvImagePara == null) {\r
992 StarLabel starLabel = new StarLabel();\r
993 starLabel.setVisible(false);\r
994 jPanelFvImagePara = new JPanel();\r
995 jPanelFvImagePara.setLayout(new BorderLayout());\r
996 jPanelFvImagePara.setPreferredSize(new java.awt.Dimension(450,140));\r
997 jPanelFvImagePara.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));\r
998\r
999 jPanelFvImagePara.add(getJPanelFvImageParaN(), java.awt.BorderLayout.NORTH);\r
1000 jPanelFvImagePara.add(getJPanelFvImageParaS(), java.awt.BorderLayout.SOUTH);\r
1001 jPanelFvImagePara.add(getJScrollPaneFvImageNames(), java.awt.BorderLayout.CENTER);\r
1002\r
1003 jPanelFvImagePara.add(getJPanelFvImageParaE(), java.awt.BorderLayout.EAST);\r
1004// \r
1005// \r
1006// \r
1007 }\r
1008 return jPanelFvImagePara;\r
1009 }\r
1010\r
1011 /**\r
1012 * This method initializes jPanel7 \r
1013 * \r
1014 * @return javax.swing.JPanel \r
1015 */\r
1016 private JPanel getJPanelFdf() {\r
1017 if (jPanelFdf == null) {\r
1018 jPanelFdf = new JPanel();\r
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
1024 jPanelFdf.addComponentListener(new ComponentAdapter(){\r
1025 public void componentShown(ComponentEvent e) {\r
1026// if (ffc.getFlashDefinitionFile() != null) {\r
1027// jTextFieldFdf.setText(ffc.getFlashDefinitionFile());\r
1028// initFvInFdfTable(Workspace.getCurrenetWorkspace() + File.separator + jTextFieldFdf.getText());\r
1029// \r
1030// }\r
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
1038 }\r
1039 return jPanelFdf;\r
1040 }\r
1041\r
1042 /**\r
1043 * This method initializes jCheckBox \r
1044 * \r
1045 * @return javax.swing.JCheckBox \r
1046 */\r
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
1052\r
1053 public void itemStateChanged(ItemEvent arg0) {\r
1054 // TODO Auto-generated method stub\r
1055 if (jCheckBoxFdf.isSelected()){\r
1056 jTextFieldFdf.setEnabled(true);\r
1057 jButtonFdfBrowse.setEnabled(true);\r
1058 }\r
1059 else {\r
1060 getFvInFdfTableModel().setRowCount(0);\r
1061 jTextFieldFdf.setEnabled(false);\r
1062 jTextFieldFdf.setText("");\r
1063 jButtonFdfBrowse.setEnabled(false);\r
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
1070 }\r
1071 }\r
1072 });\r
1073 }\r
1074 return jCheckBoxFdf;\r
1075 }\r
1076\r
1077 /**\r
1078 * This method initializes jTextField3 \r
1079 * \r
1080 * @return javax.swing.JTextField \r
1081 */\r
1082 private JTextField getJTextFieldFdf() {\r
1083 if (jTextFieldFdf == null) {\r
1084 jTextFieldFdf = new JTextField();\r
1085 jTextFieldFdf.setEnabled(false);\r
1086 jTextFieldFdf.setEditable(false);\r
1087 jTextFieldFdf.setPreferredSize(new Dimension(300, 20));\r
1088 jTextFieldFdf.addFocusListener(new java.awt.event.FocusAdapter() {\r
1089 public void focusLost(java.awt.event.FocusEvent e) {\r
1090 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
1091 }\r
1092 });\r
1093 }\r
1094 return jTextFieldFdf;\r
1095 }\r
1096\r
1097 /**\r
1098 * This method initializes jButton5 \r
1099 * \r
1100 * @return javax.swing.JButton \r
1101 */\r
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
1109 /**\r
1110 * \r
1111 */\r
1112 private static final long serialVersionUID = 1L;\r
1113\r
1114 public void actionPerformed(ActionEvent e) {\r
1115 // TODO Auto-generated method stub\r
1116 String wsDir = Workspace.getCurrentWorkspace();\r
1117 JFileChooser chooser = new JFileChooser(wsDir);\r
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
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
1129 jTextFieldFdf.setText(filePath.substring(wsDir.length() + 1).replace('\\', '/'));\r
1130 ffc.genFlashDefinitionFile(jTextFieldFdf.getText());\r
1131 docConsole.setSaved(false);\r
1132 initFvInFdfTable(filePath);\r
1133 }\r
1134 }\r
1135 \r
1136 });\r
1137 }\r
1138 return jButtonFdfBrowse;\r
1139 }\r
1140 \r
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
1169 private void initFvAdditionalTable() {\r
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
1177 fvAdditionalTableModel.addRow(getBasicFvInfo(fvName));\r
1178 addTabForFv(new FvInfoFromFdf(fvName, "", ""));\r
1179 }\r
1180 }\r
1181\r
1182 private void initFvInFdfTable(String fdfPath){\r
1183 Vector<FvInfoFromFdf> vFvInfo = new Vector<FvInfoFromFdf>();\r
1184 getFvInfoFromFdf(fdfPath, vFvInfo);\r
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
1190 ffc.setTypedFvImageNameValue("Attributes", "EFI_ERASE_POLARITY", erasePolarity);\r
1191 }\r
1192 \r
1193 // BugBug: assume all blocks have same size;\r
1194 \r
1195 String blkSize = defaultBlkSize;\r
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
1200 blkSize = defaultBlkSize;\r
1201 }\r
1202 }\r
1203 determinedFvBlockSize = blkSize;\r
1204 \r
1205 getFvInFdfTableModel().setRowCount(0);\r
1206 Vector<String> vExistingFvNameInFpd = new Vector<String>();\r
1207 ffc.getFvImagesFvImageFvImageNames(vExistingFvNameInFpd);\r
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
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
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
1222 getFvInFdfTableModel().addRow(row);\r
1223 try {\r
1224 int blockSize = Integer.decode(blkSize);\r
1225 int fvSize = Integer.decode(row[1]);\r
1226 int numBlocks = fvSize/blockSize;\r
1227 HashMap<String, String> mOptions = new HashMap<String, String>();\r
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
1230 \r
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
1238 ffc.getFvImagesFvImageOptions(row[0], mOptions);\r
1239 if (mOptions.get("EFI_BLOCK_SIZE") == null || !mOptions.get("EFI_BLOCK_SIZE").equalsIgnoreCase(blkSize)) {\r
1240 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_BLOCK_SIZE", blkSize, null);\r
1241 memModified = true;\r
1242 }\r
1243 if (mOptions.get("EFI_NUM_BLOCKS") == null || Integer.decode(mOptions.get("EFI_NUM_BLOCKS")) != numBlocks) {\r
1244 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_NUM_BLOCKS", numBlocks + "", null);\r
1245 memModified = true;\r
1246 }\r
1247 if (mOptions.get("EFI_FILE_NAME") == null || !mOptions.get("EFI_FILE_NAME").equals(row[2])) {\r
1248 ffc.setTypedNamedFvImageNameValue(row[0], "Options", "EFI_FILE_NAME", row[2], null);\r
1249 memModified = true;\r
1250 }\r
1251 \r
1252 }\r
1253 }\r
1254 catch (NumberFormatException e){\r
1255 JOptionPane.showMessageDialog(frame, e.getMessage());\r
1256 }\r
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
1263 \r
1264 }\r
1265 \r
1266 private void addTabForFv (FvInfoFromFdf fvInfo) {\r
1267 String fvName = fvInfo.getFvName();\r
1268 String outputFile = fvInfo.getEfiFileName();\r
1269 int index = jTabbedPane.indexOfTab(fvName);\r
1270 if (index >= startIndexOfDynamicTab) {\r
1271 return;\r
1272 }\r
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
1277 }\r
1278 /**\r
1279 * This method initializes jTextField4 \r
1280 * \r
1281 * @return javax.swing.JTextField \r
1282 */\r
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
1288 }\r
1289 return jTextFieldFvImageOptName;\r
1290 }\r
1291\r
1292 /**\r
1293 * This method initializes jTextField5 \r
1294 * \r
1295 * @return javax.swing.JTextField \r
1296 */\r
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
1302 }\r
1303 return jTextFieldFvImageOptValue;\r
1304 }\r
1305\r
1306 /**\r
1307 * This method initializes jPanel8 \r
1308 * \r
1309 * @return javax.swing.JPanel \r
1310 */\r
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
1317 }\r
1318 return jPanelFvImageOptsButtonGroup;\r
1319 }\r
1320\r
1321 /**\r
1322 * This method initializes jButton7 \r
1323 * \r
1324 * @return javax.swing.JButton \r
1325 */\r
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
1333 /**\r
1334 * \r
1335 */\r
1336 private static final long serialVersionUID = 1L;\r
1337\r
1338 public void actionPerformed(ActionEvent e) {\r
1339 if (jTextFieldFvImageOptName.getText().length() > 0 && jTextFieldFvImageOptValue.getText().length() > 0){\r
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
1358 fvOptionTableModel.addRow(row);\r
1359 jTableFvImageOpts.changeSelection(jTableFvImageOpts.getRowCount() - 1, 0, false, false);\r
1360 }\r
1361 }\r
1362 });\r
1363 }\r
1364 return jButtonFvImageOptAdd;\r
1365 }\r
1366\r
1367 /**\r
1368 * This method initializes jButton8 \r
1369 * \r
1370 * @return javax.swing.JButton \r
1371 */\r
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
1379 /**\r
1380 * \r
1381 */\r
1382 private static final long serialVersionUID = 1L;\r
1383\r
1384 public void actionPerformed(ActionEvent e) {\r
1385 if (jTableFvImageOpts.getSelectedRow() >= 0){\r
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
1402 }\r
1403 }\r
1404 });\r
1405 }\r
1406 return jButtonFvImageOptDel;\r
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
1417 jScrollPane.setPreferredSize(new java.awt.Dimension(350,100));\r
1418 jScrollPane.setViewportView(getJTableFvImageOpts());\r
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
1428 private JTable getJTableFvImageOpts() {\r
1429 if (jTableFvImageOpts == null) {\r
1430 fvOptionTableModel = new IDefaultTableModel();\r
1431 fvOptionTableModel.addColumn("Name");\r
1432 fvOptionTableModel.addColumn("Value");\r
1433 jTableFvImageOpts = new JTable(fvOptionTableModel);\r
1434\r
1435 jTableFvImageOpts.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);\r
1436 jTableFvImageOpts.setRowHeight(20);\r
1437 \r
1438 }\r
1439 return jTableFvImageOpts;\r
1440 }\r
1441\r
1442 /**\r
1443 * This method initializes jButton9 \r
1444 * \r
1445 * @return javax.swing.JButton \r
1446 */\r
1447 private JButton getJButtonUpdateFvImage() {\r
1448 if (jButtonUpdateFvImage == null) {\r
1449 jButtonUpdateFvImage = new JButton();\r
1450 jButtonUpdateFvImage.setPreferredSize(new java.awt.Dimension(150,20));\r
1451 jButtonUpdateFvImage.setActionCommand("Update");\r
1452 jButtonUpdateFvImage.setText("Update FV Attributes");\r
1453 jButtonUpdateFvImage.setVisible(false);\r
1454 jButtonUpdateFvImage.addActionListener(new java.awt.event.ActionListener() {\r
1455 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1456 int row = jTableFvInfo.getSelectedRow();\r
1457 if (jTableFvInfo.isEditing()) {\r
1458 jTableFvInfo.getCellEditor().stopCellEditing();\r
1459 }\r
1460 if (jTableFvImageOpts.isEditing()) {\r
1461 jTableFvImageOpts.getCellEditor().stopCellEditing();\r
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
1471 docConsole.setSaved(false);\r
1472 ffc.updateFvImagesFvImage(row, name.split(" "), type, lhm);\r
1473 \r
1474 }\r
1475 });\r
1476 }\r
1477 return jButtonUpdateFvImage;\r
1478 }\r
1479\r
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
1541 jPanelFdfCTop.add(getJScrollPaneFvInFdf(), java.awt.BorderLayout.CENTER);\r
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
1556 jPanelFdfCBottom.add(getJScrollPaneFvAdditional(), java.awt.BorderLayout.CENTER);\r
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
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
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
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
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
1667 private IDefaultTableModel getFvInFdfTableModel() {\r
1668 if (fvInFdfTableModel == null) {\r
1669 fvInFdfTableModel = new IDefaultTableModel();\r
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
1686 jButtonFvInFdfOptions.setEnabled(true);\r
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
1691 if (selectedRow < 0) {\r
1692 return;\r
1693 }\r
1694 String fvName = jTableFvInFdf.getValueAt(selectedRow, 0)+"";\r
1695 if (fvName.length() == 0) {\r
1696 return;\r
1697 }\r
1698 DefaultTableModel dtm = getFvInFdfOptTableModel();\r
1699 new FpdFvOptions(fvName, dtm, ffc, docConsole);\r
1700 }\r
1701 });\r
1702 }\r
1703 return jButtonFvInFdfOptions;\r
1704 }\r
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
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
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
1759 jTableFvAdditional.setModel(getFvAdditionalTableModel());\r
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
1782 \r
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
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
1811 // Add FvImageNames in Flash\r
1812 String[] fvNames = {newFvName};\r
1813 ffc.addFvImageFvImageNames(fvNames);\r
1814 }\r
1815 docConsole.setSaved(false);\r
1816 oldFvName = newFvName;\r
1817 }\r
1818 \r
1819 if (col == 1 && !sizeFromOptionDlg) {\r
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
1829 if (determinedFvBlockSize != null) {\r
1830 blkSize = determinedFvBlockSize;\r
1831 }\r
1832 else {\r
1833 blkSize = defaultBlkSize;\r
1834 }\r
1835 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", blkSize, null);\r
1836 int fs = Integer.decode(fvSize);\r
1837 int bs = Integer.decode(blkSize);\r
1838 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
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
1845 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_BLOCK_SIZE", defaultBlkSize, null);\r
1846 int fs = Integer.decode(fvSize);\r
1847 int bs = Integer.decode(defaultBlkSize);\r
1848 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
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
1859 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_NUM_BLOCKS", (fs/bs)+"", null);\r
1860 docConsole.setSaved(false);\r
1861 }\r
1862 }\r
1863 \r
1864 if (col == 2 && !fileFromOptionDlg) {\r
1865 ffc.setTypedNamedFvImageNameValue(oldFvName, "Options", "EFI_FILE_NAME", m.getValueAt(row, col)+"", null);\r
1866 docConsole.setSaved(false);\r
1867 }\r
1868 \r
1869 }\r
1870 }\r
1871 });\r
1872 }\r
1873 return jTableFvAdditional;\r
1874 }\r
1875 \r
1876 private boolean fvNameExistsInFvInFdfTable (String fvName) {\r
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
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
1890 for (int j = 0; j < jTableFvAdditional.getRowCount(); ++j) {\r
1891 if (fvAdditionalTableModel.getValueAt(j, 0).equals(fvName) && j != selectedRowInFvAdditionalTable) {\r
1892 return true;\r
1893 }\r
1894 }\r
1895 return false;\r
1896 }\r
1897\r
1898 /**\r
1899 * This method initializes fvAdditionalTableModel \r
1900 * \r
1901 * @return javax.swing.table.DefaultTableModel \r
1902 */\r
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
1909 }\r
1910 return fvAdditionalTableModel;\r
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
1922 jButtonAddFv.setEnabled(true);\r
1923 jButtonAddFv.setText("New");\r
1924 jButtonAddFv.addActionListener(new java.awt.event.ActionListener() {\r
1925 public void actionPerformed(java.awt.event.ActionEvent e) {\r
1926 if (jTableFvAdditional.isEditing()) {\r
1927 jTableFvAdditional.getCellEditor().stopCellEditing();\r
1928 }\r
1929 String[] row = {"", "", ""};\r
1930 fvAdditionalTableModel.addRow(row);\r
1931 }\r
1932 });\r
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
1946 jButtonDelFv.setEnabled(true);\r
1947 jButtonDelFv.setText("Delete");\r
1948 jButtonDelFv.addActionListener(new java.awt.event.ActionListener() {\r
1949 public void actionPerformed(java.awt.event.ActionEvent e) {\r
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
1966 }\r
1967 });\r
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
1981 jButtonAddFvOptions.setEnabled(true);\r
1982 jButtonAddFvOptions.setText("Options");\r
1983 jButtonAddFvOptions.addActionListener(new java.awt.event.ActionListener() {\r
1984 public void actionPerformed(java.awt.event.ActionEvent e) {\r
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
2009 }\r
2010 });\r
2011 }\r
2012 return jButtonAddFvOptions;\r
2013 }\r
2014 \r
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
2058 jPanelBgFvName.add(getJButtonFvNameAdd(), null);\r
2059 jPanelBgFvName.add(getJButtonFvNameDel(), null);\r
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
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
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
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
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
2248 }\r
2249 return jPanelFvImageSS;\r
2250 }\r
2251\r
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
2266 this.setSize(660, 650);\r
2267 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
2268 this.setContentPane(getJContentPane());\r
2269 this.setTitle("FPD Flash Definitions");\r
2270 this.addInternalFrameListener(new InternalFrameAdapter(){\r
2271 public void internalFrameDeactivated(InternalFrameEvent e){\r
2272 if (jTableFvProp.isEditing()) {\r
2273 jTableFvProp.getCellEditor().stopCellEditing();\r
2274 }\r
2275 if (jTableFvImageNames.isEditing()) {\r
2276 jTableFvImageNames.getCellEditor().stopCellEditing();\r
2277 }\r
2278 if (jTableFvInfo.isEditing()) {\r
2279 jTableFvInfo.getCellEditor().stopCellEditing();\r
2280 }\r
2281 if (jTableFvAdditional.isEditing()) {\r
2282 jTableFvAdditional.getCellEditor().stopCellEditing();\r
2283 }\r
2284 }\r
2285 });\r
2286 }\r
2287\r
2288 private void init(FpdFileContents ffc) {\r
2289 initFvAttributes();\r
2290 \r
2291 jTextFieldFdf.setText("");\r
2292 String fdfFile = ffc.getFlashDefinitionFile();\r
2293 if (fdfFile != null && fdfFile.length() > 0) {\r
2294 jCheckBoxFdf.setSelected(true);\r
2295 jTextFieldFdf.setText(fdfFile);\r
2296 String fdfPath = Workspace.getCurrentWorkspace() + File.separator + fdfFile;\r
2297 initFvInFdfTable(fdfPath);\r
2298 }\r
2299 \r
2300 initFvAdditionalTable();\r
2301 }\r
2302 \r
2303 private void getOptionNameValue(Map<String, String> m){\r
2304 for (int i = 0; i < jTableFvImageOpts.getRowCount(); ++i) {\r
2305 m.put(fvOptionTableModel.getValueAt(i, 0)+"", fvOptionTableModel.getValueAt(i, 1)+"");\r
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
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
2321 jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);\r
2322 }\r
2323 return jContentPane;\r
2324 }\r
2325 \r
2326 private void getFlashInfoFromFdf (String fdfPath) {\r
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
2351 erasePolarity = str.substring(str.indexOf("=") + 1, str.lastIndexOf(",")).trim();\r
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
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
2477 \r
2478 reader.close();\r
2479 in.close();\r
2480 }\r
2481 catch (Exception e) {\r
2482 \r
2483 }\r
2484\r
2485 }\r
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
2503 \r
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
2531 \r
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
2542 \r
2543 }\r
2544 \r
2545 public void showModulesInFv(String fvName) {\r
2546 \r
2547 if (modInFvTableModel == null) {\r
2548 return;\r
2549 }\r
2550 int size = ffc.getUserExtsIncModCount(fvName, "IMAGES", 1);\r
2551 \r
2552 if (size != -1) {\r
2553 String[][] saa = new String[size][5];\r
2554 ffc.getUserExtsIncMods(fvName, "IMAGES", 1, saa);\r
2555\r
2556 for (int i = 0; i < size; ++i) {\r
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
2563 \r
2564 String[] row = { name, saa[i][0] , saa[i][1], saa[i][2] , saa[i][3], saa[i][4] };\r
2565 modInFvTableModel.addRow(row);\r
2566 }\r
2567 }\r
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
2586 }\r
2587 String[] row = { name, sa[0] , sa[1], sa[2] , sa[3], sa[4] };\r
2588 modInFvTableModel.addRow(row);\r
2589 }\r
2590 }\r
2591\r
2592 }\r
2593 \r
2594 public void showAllModulesInPlatform() {\r
2595 \r
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
2602 \r
2603 for (int i = 0; i < size; ++i) {\r
2604 if (moduleInfoInTable(saa[i], modInFvTableModel) || moduleInfoInTable(saa[i], fpdModTableModel)) {\r
2605 continue;\r
2606 }\r
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
2612 }\r
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
2644 }\r
2645 \r
2646 if (matched) {\r
2647 return true;\r
2648 }\r
2649 \r
2650 }\r
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
2667\r
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
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
2783 ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
2784 String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2785 if (mi != null) {\r
2786 details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2787 }\r
2788 JOptionPane.showMessageDialog(ModuleOrderPane.this, details);\r
2789 }\r
2790 }\r
2791 \r
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
2863 }\r
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
2882 }\r
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
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
2901 ModuleIdentification mi = WorkspaceProfile.getModuleId(mg + " " + mv + " " + pg + " " + pv);\r
2902 String details = "PackageGuid: " + pg + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2903 if (mi != null) {\r
2904 details = "In Package " + mi.getPackageId().getName() + "; ModuleVer:" + mv + "; PkgVer:" + pv;\r
2905 }\r
2906 JOptionPane.showMessageDialog(ModuleOrderPane.this, details);\r
2907 }\r
2908 }\r
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
2932 }\r
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
2940\r
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
2956 }\r
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
2968 }\r
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
2974 }\r
2975 else {\r
2976 modInFvTableModel.insertRow(selectedRowLeft, row);\r
2977 jTableModInFv.changeSelection(selectedRowLeft, 0, false, false);\r
2978 }\r
2979 fpdModTableModel.removeRow(rowInModel);\r
2980 }\r
2981 });\r
2982 }\r
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
3001 }\r
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
3015 }\r
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
3113 }\r
3114 ffc.removeBuildOptionsUserExtensions(title, "IMAGES", 1);\r
3115 ffc.genBuildOptionsUserExtensions(title, "IMAGES", "1", outputFileName, vModInFv);\r
3116 \r
3117 }\r
3118 }\r
3119\r
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
3135\r
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
3144\r
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
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
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
3192class ImageParaTableModel extends DefaultTableModel {\r
3193\r
3194 private static final long serialVersionUID = 1L;\r
3195 \r
3196 public boolean isCellEditable(int row, int col) {\r
3197// if (getValueAt(row, 1).equals("ImageName") && col >=1) {\r
3198// return false;\r
3199// }\r
3200// return true;\r
3201 return false;\r
3202 }\r
3203}\r
3204\r
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