3 The file is used to create, update PCD of MSA/MBD file
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 package org
.tianocore
.frameworkwizard
.module
.ui
;
17 import java
.awt
.Dimension
;
18 import java
.awt
.event
.ActionEvent
;
19 import java
.awt
.event
.ComponentEvent
;
20 import java
.awt
.event
.MouseEvent
;
21 import java
.util
.Vector
;
23 import javax
.swing
.JButton
;
24 import javax
.swing
.JPanel
;
25 import javax
.swing
.JScrollPane
;
26 import javax
.swing
.JTable
;
27 import javax
.swing
.ListSelectionModel
;
28 import javax
.swing
.event
.ListSelectionEvent
;
30 import org
.tianocore
.PcdCodedDocument
;
31 import org
.tianocore
.PcdItemTypes
;
32 import org
.tianocore
.PcdUsage
;
33 import org
.tianocore
.ModuleSurfaceAreaDocument
.ModuleSurfaceArea
;
34 import org
.tianocore
.PcdCodedDocument
.PcdCoded
;
35 import org
.tianocore
.PcdCodedDocument
.PcdCoded
.PcdEntry
;
36 import org
.tianocore
.frameworkwizard
.common
.DataType
;
37 import org
.tianocore
.frameworkwizard
.common
.IDefaultTableModel
;
38 import org
.tianocore
.frameworkwizard
.common
.Log
;
39 import org
.tianocore
.frameworkwizard
.common
.Tools
;
40 import org
.tianocore
.frameworkwizard
.common
.Identifications
.OpeningModuleType
;
41 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
42 import org
.tianocore
.frameworkwizard
.common
.ui
.IInternalFrame
;
43 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdCodedIdentification
;
44 import org
.tianocore
.frameworkwizard
.module
.Identifications
.PcdCoded
.PcdCodedVector
;
45 import org
.tianocore
.frameworkwizard
.module
.ui
.dialog
.PCDsDlg
;
48 The class is used to create, update PCD of MSA/MBD file
49 It extends IInternalFrame
54 public class ModulePCDs
extends IInternalFrame
{
57 /// Define class Serial Version UID
59 private static final long serialVersionUID
= 2227717658188438696L;
62 //Define class members
64 private JPanel jContentPane
= null;
66 private JButton jButtonAdd
= null;
68 private JButton jButtonRemove
= null;
70 private JButton jButtonUpdate
= null;
72 private JScrollPane jScrollPane
= null;
74 private JScrollPane jScrollPaneTable
= null;
76 private JTable jTable
= null;
81 private OpeningModuleType omt
= null;
83 private ModuleSurfaceArea msa
= null;
85 private PcdCodedDocument
.PcdCoded pcds
= null;
87 private PcdCodedIdentification id
= null;
89 private PcdCodedVector vid
= new PcdCodedVector();
91 private IDefaultTableModel model
= null;
93 private int selectedRow
= -1;
95 private IFrame parentFrame
= null;
98 This method initializes jButtonAdd
100 @return javax.swing.JButton jButtonAdd
103 private JButton
getJButtonAdd() {
104 if (jButtonAdd
== null) {
105 jButtonAdd
= new JButton();
106 jButtonAdd
.setBounds(new java
.awt
.Rectangle(230, 245, 90, 20));
107 jButtonAdd
.setText("Add");
108 jButtonAdd
.addActionListener(this);
109 jButtonAdd
.setPreferredSize(new java
.awt
.Dimension(90, 20));
115 This method initializes jButtonRemove
117 @return javax.swing.JButton jButtonRemove
120 private JButton
getJButtonRemove() {
121 if (jButtonRemove
== null) {
122 jButtonRemove
= new JButton();
123 jButtonRemove
.setBounds(new java
.awt
.Rectangle(400, 245, 90, 20));
124 jButtonRemove
.setText("Remove");
125 jButtonRemove
.addActionListener(this);
126 jButtonRemove
.setPreferredSize(new java
.awt
.Dimension(90, 20));
128 return jButtonRemove
;
132 This method initializes jButtonUpdate
134 @return javax.swing.JButton jButtonUpdate
137 private JButton
getJButtonUpdate() {
138 if (jButtonUpdate
== null) {
139 jButtonUpdate
= new JButton();
140 jButtonUpdate
.setBounds(new java
.awt
.Rectangle(315, 245, 90, 20));
141 jButtonUpdate
.setPreferredSize(new java
.awt
.Dimension(90, 20));
142 jButtonUpdate
.setText("Edit");
143 jButtonUpdate
.addActionListener(this);
145 return jButtonUpdate
;
149 This method initializes jScrollPane
151 @return javax.swing.JScrollPane
153 private JScrollPane
getJScrollPane() {
154 if (jScrollPane
== null) {
155 jScrollPane
= new JScrollPane();
156 jScrollPane
.setViewportView(getJContentPane());
162 This method initializes jScrollPaneTable
164 @return javax.swing.JScrollPane
166 private JScrollPane
getJScrollPaneTable() {
167 if (jScrollPaneTable
== null) {
168 jScrollPaneTable
= new JScrollPane();
169 jScrollPaneTable
.setBounds(new java
.awt
.Rectangle(15, 10, 470, 420));
170 jScrollPaneTable
.setPreferredSize(new Dimension(470, 420));
171 jScrollPaneTable
.setViewportView(getJTable());
173 return jScrollPaneTable
;
177 This method initializes jTable
179 @return javax.swing.JTable
181 private JTable
getJTable() {
182 if (jTable
== null) {
183 jTable
= new JTable();
184 model
= new IDefaultTableModel();
185 jTable
= new JTable(model
);
186 jTable
.setRowHeight(20);
188 model
.addColumn("Name");
189 model
.addColumn("Type");
190 model
.addColumn("Value");
191 model
.addColumn("Usage");
193 jTable
.setSelectionMode(ListSelectionModel
.SINGLE_SELECTION
);
194 jTable
.getSelectionModel().addListSelectionListener(this);
195 jTable
.getModel().addTableModelListener(this);
196 jTable
.addMouseListener(this);
201 public static void main(String
[] args
) {
206 This method initializes this
209 private void init() {
210 this.setSize(500, 515);
211 this.setContentPane(getJScrollPane());
212 this.setTitle("Pcd Coded");
216 This method initializes this
217 Fill values to all fields if these values are not empty
219 @param inPackageDependencies
222 private void init(PcdCoded inPcdCodeds
) {
224 this.pcds
= inPcdCodeds
;
226 if (this.pcds
!= null) {
227 if (this.pcds
.getPcdEntryList().size() > 0) {
228 for (int index
= 0; index
< this.pcds
.getPcdEntryList().size(); index
++) {
229 String arg0
= pcds
.getPcdEntryList().get(index
).getCName();
230 String arg1
= pcds
.getPcdEntryList().get(index
).getTokenSpaceGuidCName();
232 String arg2
= pcds
.getPcdEntryList().get(index
).getFeatureFlag();
233 Vector
<String
> arg3
= Tools
.convertListToVector(pcds
.getPcdEntryList().get(index
).getSupArchList());
235 String arg4
= pcds
.getPcdEntryList().get(index
).getDefaultValue();
236 String arg5
= pcds
.getPcdEntryList().get(index
).getHelpText();
238 if (pcds
.getPcdEntryList().get(index
).getPcdItemType() != null) {
239 arg6
= pcds
.getPcdEntryList().get(index
).getPcdItemType().toString();
242 if (pcds
.getPcdEntryList().get(index
).getUsage() != null) {
243 arg7
= pcds
.getPcdEntryList().get(index
).getUsage().toString();
245 id
= new PcdCodedIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
, arg6
, arg7
);
254 This is the default constructor
257 public ModulePCDs() {
260 this.setVisible(true);
264 This is the override edit constructor
266 @param inPcds The input data of PCDsDocument.PCDs
269 public ModulePCDs(OpeningModuleType inOmt
, IFrame iFrame
) {
272 this.msa
= omt
.getXmlMsa();
273 this.parentFrame
= iFrame
;
274 init(msa
.getPcdCoded());
275 this.setVisible(true);
279 This method initializes jContentPane
281 @return javax.swing.JPanel jContentPane
284 private JPanel
getJContentPane() {
285 if (jContentPane
== null) {
286 jContentPane
= new JPanel();
287 jContentPane
.setLayout(null);
288 jContentPane
.setPreferredSize(new java
.awt
.Dimension(490, 490));
290 jContentPane
.add(getJButtonAdd(), null);
291 jContentPane
.add(getJButtonRemove(), null);
292 jContentPane
.add(getJButtonUpdate(), null);
293 jContentPane
.add(getJScrollPaneTable(), null);
298 private void showEdit(int index
) {
299 PCDsDlg dlg
= new PCDsDlg(vid
.getPcdCoded(index
), this.parentFrame
, omt
.getId());
300 int result
= dlg
.showDialog();
301 if (result
== DataType
.RETURN_TYPE_OK
) {
303 this.vid
.addPcdCoded(dlg
.getId());
305 this.vid
.setPcdCoded(dlg
.getId(), index
);
311 if (result
== DataType
.RETURN_TYPE_CANCEL
) {
320 private void clearAll() {
322 for (int index
= model
.getRowCount() - 1; index
>= 0; index
--) {
323 model
.removeRow(index
);
329 Read content of vector and put then into table
332 private void showTable() {
335 if (vid
.size() > 0) {
336 for (int index
= 0; index
< vid
.size(); index
++) {
337 model
.addRow(vid
.toStringVector(index
));
340 this.jTable
.repaint();
341 this.jTable
.updateUI();
345 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
347 * Override actionPerformed to listen all actions
350 public void actionPerformed(ActionEvent arg0
) {
351 if (arg0
.getSource() == jButtonAdd
) {
354 if (arg0
.getSource() == jButtonUpdate
) {
355 if (this.selectedRow
< 0) {
356 Log
.wrn("Update PcdCoded", "Please select one record first.");
359 showEdit(selectedRow
);
362 if (arg0
.getSource() == jButtonRemove
) {
363 if (jTable
.isEditing()) {
364 jTable
.getCellEditor().stopCellEditing();
366 if (selectedRow
> -1) {
367 this.model
.removeRow(selectedRow
);
368 this.vid
.removePcdCoded(selectedRow
);
376 Save all components of PCDs
377 if exists pcds, set the value directly
378 if not exists pcds, new an instance first
383 int count
= this.vid
.size();
385 this.pcds
= PcdCoded
.Factory
.newInstance();
387 for (int index
= 0; index
< count
; index
++) {
388 PcdEntry p
= PcdEntry
.Factory
.newInstance();
389 if (!isEmpty(vid
.getPcdCoded(index
).getName())) {
390 p
.setCName(vid
.getPcdCoded(index
).getName());
392 if (!isEmpty(vid
.getPcdCoded(index
).getGuid())) {
393 p
.setTokenSpaceGuidCName(vid
.getPcdCoded(index
).getGuid());
395 if (!isEmpty(vid
.getPcdCoded(index
).getFeatureFlag())) {
396 p
.setFeatureFlag(vid
.getPcdCoded(index
).getFeatureFlag());
398 if (vid
.getPcdCoded(index
).getSupArchList() != null
399 && vid
.getPcdCoded(index
).getSupArchList().size() > 0) {
400 p
.setSupArchList(vid
.getPcdCoded(index
).getSupArchList());
402 if (!isEmpty(vid
.getPcdCoded(index
).getValue())) {
403 p
.setDefaultValue(vid
.getPcdCoded(index
).getValue());
405 if (!isEmpty(vid
.getPcdCoded(index
).getHelp())) {
406 p
.setHelpText(vid
.getPcdCoded(index
).getHelp());
408 if (!isEmpty(vid
.getPcdCoded(index
).getType())) {
409 p
.setPcdItemType(PcdItemTypes
.Enum
.forString(vid
.getPcdCoded(index
).getType()));
411 if (!isEmpty(vid
.getPcdCoded(index
).getUsage())) {
412 p
.setUsage(PcdUsage
.Enum
.forString(vid
.getPcdCoded(index
).getUsage()));
414 this.pcds
.addNewPcdEntry();
415 this.pcds
.setPcdEntryArray(pcds
.getPcdEntryList().size() - 1, p
);
419 this.msa
.setPcdCoded(pcds
);
420 this.omt
.setSaved(false);
421 } catch (Exception e
) {
422 Log
.wrn("Update PcdCoded", e
.getMessage());
423 Log
.err("Update PcdCoded", e
.getMessage());
428 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
431 public void valueChanged(ListSelectionEvent arg0
) {
432 if (arg0
.getValueIsAdjusting()) {
435 ListSelectionModel lsm
= (ListSelectionModel
) arg0
.getSource();
436 if (lsm
.isSelectionEmpty()) {
439 selectedRow
= lsm
.getMinSelectionIndex();
444 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
447 public void mouseClicked(MouseEvent arg0
) {
448 if (arg0
.getClickCount() == 2) {
449 if (this.selectedRow
< 0) {
452 showEdit(selectedRow
);
458 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
460 * Override componentResized to resize all components when frame's size is changed
462 public void componentResized(ComponentEvent arg0
) {
463 int intCurrentWidth
= this.getJContentPane().getWidth();
464 int intCurrentHeight
= this.getJContentPane().getHeight();
465 int intPreferredWidth
= this.getJContentPane().getPreferredSize().width
;
466 int intPreferredHeight
= this.getJContentPane().getPreferredSize().height
;
468 Tools
.resizeComponent(this.jScrollPaneTable
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
470 Tools
.relocateComponent(this.jButtonAdd
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
471 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_ADD_BUTTON
,
472 DataType
.SPACE_TO_BOTTOM_FOR_ADD_BUTTON
);
473 Tools
.relocateComponent(this.jButtonRemove
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
474 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_REMOVE_BUTTON
,
475 DataType
.SPACE_TO_BOTTOM_FOR_REMOVE_BUTTON
);
476 Tools
.relocateComponent(this.jButtonUpdate
, intCurrentWidth
, intCurrentHeight
, intPreferredWidth
,
477 intPreferredHeight
, DataType
.SPACE_TO_RIGHT_FOR_UPDATE_BUTTON
,
478 DataType
.SPACE_TO_BOTTOM_FOR_UPDATE_BUTTON
);