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