3 The file is used to create, update Ppi section of the MSA 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
.dialog
;
17 import java
.awt
.event
.ActionEvent
;
18 import java
.awt
.event
.ItemEvent
;
19 import java
.awt
.event
.ItemListener
;
20 import java
.util
.Vector
;
22 import javax
.swing
.JButton
;
23 import javax
.swing
.JComboBox
;
24 import javax
.swing
.JLabel
;
25 import javax
.swing
.JPanel
;
26 import javax
.swing
.JScrollPane
;
27 import javax
.swing
.JTextField
;
28 import javax
.swing
.JTextArea
;
30 import org
.tianocore
.frameworkwizard
.common
.DataType
;
31 import org
.tianocore
.frameworkwizard
.common
.DataValidation
;
32 import org
.tianocore
.frameworkwizard
.common
.EnumerationData
;
33 import org
.tianocore
.frameworkwizard
.common
.Log
;
34 import org
.tianocore
.frameworkwizard
.common
.Tools
;
35 import org
.tianocore
.frameworkwizard
.common
.ui
.ArchCheckBox
;
36 import org
.tianocore
.frameworkwizard
.common
.ui
.IDialog
;
37 import org
.tianocore
.frameworkwizard
.common
.ui
.IFrame
;
38 import org
.tianocore
.frameworkwizard
.common
.ui
.StarLabel
;
39 import org
.tianocore
.frameworkwizard
.module
.Identifications
.Ppis
.PpisIdentification
;
40 import org
.tianocore
.frameworkwizard
.workspace
.WorkspaceTools
;
43 * The class is used to create, update Ppi section of the MSA file
48 public class PpisDlg
extends IDialog
implements ItemListener
{
51 // / Define class Serial Version UID
53 private static final long serialVersionUID
= -4284901202357037724L;
56 // Define class members
58 private JPanel jContentPane
= null;
60 private JLabel jLabelC_Name
= null;
62 private JComboBox jComboBoxCName
= null;
64 private JTextField jTextFieldFeatureFlag
= null;
66 private JLabel jLabelFeatureFlag
= null;
68 private JLabel jLabelUsage
= null;
70 private JComboBox jComboBoxUsage
= null;
72 private JLabel jLabelPpiType
= null;
74 private StarLabel jStarLabel1
= null;
76 private StarLabel jStarLabel2
= null;
78 private StarLabel jStarLabel3
= null;
80 private JComboBox jComboBoxPpiType
= null;
82 private JLabel jLabelArch
= null;
84 private JScrollPane jScrollPane
= null;
86 private JLabel jLabelHelpText
= null;
88 private JTextArea jTextAreaHelpText
= null;
90 private JScrollPane jScrollPaneHelpText
= null;
92 private ArchCheckBox jArchCheckBox
= null;
94 private JButton jButtonOk
= null;
96 private JButton jButtonCancel
= null;
101 private PpisIdentification id
= null;
103 private WorkspaceTools wt
= new WorkspaceTools();
105 private EnumerationData ed
= new EnumerationData();
108 * This method initializes jComboBoxPpiType
110 * @return javax.swing.JComboBox
112 private JComboBox
getJComboBoxPpiType() {
113 if (jComboBoxPpiType
== null) {
114 jComboBoxPpiType
= new JComboBox();
115 jComboBoxPpiType
.setBounds(new java
.awt
.Rectangle(168, 12, 320, 20));
116 jComboBoxPpiType
.setPreferredSize(new java
.awt
.Dimension(320, 20));
117 jComboBoxPpiType
.addItemListener(this);
119 .setToolTipText("<html>PPIs are named by GUID.<br>PPI Notify is consumed via a register PPI Notify mechanism");
121 return jComboBoxPpiType
;
125 * This method initializes jTextFieldC_Name
127 * @return javax.swing.JTextField jTextFieldC_Name
130 private JComboBox
getJComboBoxCName() {
131 if (jComboBoxCName
== null) {
132 jComboBoxCName
= new JComboBox();
133 jComboBoxCName
.setBounds(new java
.awt
.Rectangle(168, 37, 320, 20));
134 jComboBoxCName
.setPreferredSize(new java
.awt
.Dimension(320, 20));
135 jComboBoxCName
.setToolTipText("Select Guid C Name of PPI");
137 return jComboBoxCName
;
141 * This method initializes jComboBoxUsage
143 * @return javax.swing.JComboBox jComboBoxUsage
146 private JComboBox
getJComboBoxUsage() {
147 if (jComboBoxUsage
== null) {
148 jComboBoxUsage
= new JComboBox();
149 jComboBoxUsage
.setBounds(new java
.awt
.Rectangle(168, 62, 320, 20));
150 jComboBoxUsage
.setPreferredSize(new java
.awt
.Dimension(320, 20));
152 .setToolTipText("<html><table><tr><td colspan=2 align=center><b>PPI</b></td></tr><tr><td>ALWAYS_CONSUMED</td><td>Module always consumes the PPI</td></tr><tr><td>SOMETIMES_CONSUMED</td><td>Module sometimes consumes the PPI</td></tr><tr><td>ALWAYS_PRODUCED</td><td>Module always produces the PPI</td></tr><tr><td>SOMETIMES_PRODUCED</td><td>Module sometimes produces the PPI</td></tr><tr><td colspan=2 align=center><b>PPI Notify</b></td></tr><tr><td>SOMETIMES_CONSUMED</td><td>Module will consume the PPI if it is produced. Consumption<br>is defined by executing the PPI notify function</td></tr></table></html>");
154 return jComboBoxUsage
;
158 * This method initializes jTextFieldFeatureFlag
160 * @return javax.swing.JTextField jTextFieldFeatureFlag
163 private JTextField
getJTextFieldFeatureFlag() {
164 if (jTextFieldFeatureFlag
== null) {
165 jTextFieldFeatureFlag
= new JTextField();
166 jTextFieldFeatureFlag
.setBounds(new java
.awt
.Rectangle(168, 157, 320, 20));
167 jTextFieldFeatureFlag
.setPreferredSize(new java
.awt
.Dimension(320, 20));
168 jTextFieldFeatureFlag
.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");
169 jTextFieldFeatureFlag
.setEnabled(false);
171 return jTextFieldFeatureFlag
;
175 * This method initializes jScrollPane
177 * @return javax.swing.JScrollPane
179 private JScrollPane
getJScrollPane() {
180 if (jScrollPane
== null) {
181 jScrollPane
= new JScrollPane();
182 jScrollPane
.setViewportView(getJContentPane());
188 * This method initializes jTextAreaHelpText
190 * @return javax.swing.JTextArea
193 private JTextArea
getJTextAreaHelpText() {
194 if (jTextAreaHelpText
== null) {
195 jTextAreaHelpText
= new JTextArea();
196 jTextAreaHelpText
.setLineWrap(true);
197 jTextAreaHelpText
.setWrapStyleWord(true);
199 return jTextAreaHelpText
;
203 * This method initializes jScrollPaneHelpText
205 * @return javax.swing.JScrollPane
208 private JScrollPane
getJScrollPaneHelpText() {
209 if (jScrollPaneHelpText
== null) {
210 jScrollPaneHelpText
= new JScrollPane();
211 jScrollPaneHelpText
.setHorizontalScrollBarPolicy(javax
.swing
.JScrollPane
.HORIZONTAL_SCROLLBAR_NEVER
);
212 jScrollPaneHelpText
.setSize(new java
.awt
.Dimension(320, 40));
213 jScrollPaneHelpText
.setPreferredSize(new java
.awt
.Dimension(320, 40));
214 jScrollPaneHelpText
.setLocation(new java
.awt
.Point(168, 87));
215 jScrollPaneHelpText
.setViewportView(getJTextAreaHelpText());
217 return jScrollPaneHelpText
;
221 * This method initializes jButtonOk
223 * @return javax.swing.JButton
226 private JButton
getJButtonOk() {
227 if (jButtonOk
== null) {
228 jButtonOk
= new JButton();
229 jButtonOk
.setBounds(new java
.awt
.Rectangle(290, 187, 90, 20));
230 jButtonOk
.setText("Ok");
231 jButtonOk
.addActionListener(this);
237 * This method initializes jButtonCancel
239 * @return javax.swing.JButton
242 private JButton
getJButtonCancel() {
243 if (jButtonCancel
== null) {
244 jButtonCancel
= new JButton();
245 jButtonCancel
.setBounds(new java
.awt
.Rectangle(390, 187, 90, 20));
246 jButtonCancel
.setText("Cancel");
247 jButtonCancel
.addActionListener(this);
249 return jButtonCancel
;
252 public static void main(String
[] args
) {
257 * This method initializes this
260 private void init() {
261 this.setSize(505, 260);
262 this.setContentPane(getJScrollPane());
263 this.setTitle("PPI Definitions");
269 * This method initializes this Fill values to all fields if these values are
272 * @param inProtocolsId
275 private void init(PpisIdentification inPpisId
) {
279 if (this.id
!= null) {
280 this.jComboBoxCName
.setSelectedItem(id
.getName());
281 this.jComboBoxPpiType
.setSelectedItem(id
.getType());
282 this.jComboBoxUsage
.setSelectedItem(id
.getUsage());
283 this.jTextAreaHelpText
.setText(id
.getHelp());
284 this.jTextFieldFeatureFlag
.setText(id
.getFeatureFlag());
285 this.jArchCheckBox
.setSelectedItems(id
.getSupArchList());
290 * This is the override edit constructor
292 * @param inProtocolsIdentification
296 public PpisDlg(PpisIdentification inPpisIdentification
, IFrame iFrame
) {
298 init(inPpisIdentification
);
302 * This method initializes jContentPane
304 * @return javax.swing.JPanel jContentPane
307 private JPanel
getJContentPane() {
308 if (jContentPane
== null) {
309 jStarLabel1
= new StarLabel();
310 jStarLabel1
.setLocation(new java
.awt
.Point(2, 12));
311 jLabelPpiType
= new JLabel();
312 jLabelPpiType
.setBounds(new java
.awt
.Rectangle(12, 12, 168, 20));
313 jLabelPpiType
.setText("Select Ppi Type");
315 jStarLabel2
= new StarLabel();
316 jStarLabel2
.setLocation(new java
.awt
.Point(2, 37));
317 jLabelC_Name
= new JLabel();
318 jLabelC_Name
.setText("PPI GUID C Name");
319 jLabelC_Name
.setBounds(new java
.awt
.Rectangle(12, 37, 168, 20));
321 jStarLabel3
= new StarLabel();
322 jStarLabel3
.setLocation(new java
.awt
.Point(2, 62));
323 jLabelUsage
= new JLabel();
324 jLabelUsage
.setText("Usage");
325 jLabelUsage
.setBounds(new java
.awt
.Rectangle(12, 62, 168, 20));
327 jLabelHelpText
= new JLabel();
328 jLabelHelpText
.setBounds(new java
.awt
.Rectangle(14, 87, 168, 20));
329 jLabelHelpText
.setText("Help Text");
331 jLabelFeatureFlag
= new JLabel();
332 jLabelFeatureFlag
.setText("Feature Flag Expression");
333 jLabelFeatureFlag
.setBounds(new java
.awt
.Rectangle(12, 157, 168, 20));
334 jLabelFeatureFlag
.setEnabled(false);
336 jLabelArch
= new JLabel();
337 jLabelArch
.setBounds(new java
.awt
.Rectangle(12, 132, 168, 20));
338 jLabelArch
.setText("Supported Architectures");
339 jArchCheckBox
= new ArchCheckBox();
340 jArchCheckBox
.setBounds(new java
.awt
.Rectangle(168, 132, 320, 20));
341 jArchCheckBox
.setPreferredSize(new java
.awt
.Dimension(320, 20));
343 jContentPane
= new JPanel();
344 jContentPane
.setLayout(null);
345 jContentPane
.setPreferredSize(new java
.awt
.Dimension(485, 215));
347 jContentPane
.add(jStarLabel1
, null);
348 jContentPane
.add(jLabelPpiType
, null);
349 jContentPane
.add(getJComboBoxPpiType(), null);
350 jContentPane
.add(jStarLabel2
, null);
351 jContentPane
.add(jLabelC_Name
, null);
352 jContentPane
.add(getJComboBoxCName(), null);
353 jContentPane
.add(jStarLabel3
, null);
354 jContentPane
.add(jLabelUsage
, null);
355 jContentPane
.add(getJComboBoxUsage(), null);
356 jContentPane
.add(jLabelHelpText
, null);
357 jContentPane
.add(getJScrollPaneHelpText(), null);
358 jContentPane
.add(jLabelFeatureFlag
, null);
359 jContentPane
.add(getJTextFieldFeatureFlag(), null);
360 jContentPane
.add(jLabelArch
, null);
361 jContentPane
.add(jArchCheckBox
, null);
362 jContentPane
.add(getJButtonOk(), null);
363 jContentPane
.add(getJButtonCancel(), null);
369 * This method initializes Usage type
372 private void initFrame() {
373 Tools
.generateComboBoxByVector(jComboBoxCName
, wt
.getAllPpiDeclarationsFromWorkspace());
374 Tools
.generateComboBoxByVector(jComboBoxPpiType
, ed
.getVPpiType());
375 Tools
.generateComboBoxByVector(jComboBoxUsage
, ed
.getVPpiUsage());
381 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
383 * Override actionPerformed to listen all actions
386 public void actionPerformed(ActionEvent arg0
) {
387 if (arg0
.getSource() == jButtonOk
) {
390 this.returnType
= DataType
.RETURN_TYPE_OK
;
391 this.setVisible(false);
395 if (arg0
.getSource() == jButtonCancel
) {
396 this.returnType
= DataType
.RETURN_TYPE_CANCEL
;
397 this.setVisible(false);
402 * Data validation for all fields
404 * @retval true - All datas are valid
405 * @retval false - At least one data is invalid
408 public boolean checkAdd() {
410 // Check if all fields have correct data types
416 if (!isEmpty(this.jComboBoxCName
.getSelectedItem().toString())) {
417 if (!DataValidation
.isC_NameType(this.jComboBoxCName
.getSelectedItem().toString())) {
418 Log
.wrn("Update Ppis", "Incorrect data type for Ppi/PpiNotify Name");
426 if (!isEmpty(this.jTextFieldFeatureFlag
.getText())) {
427 if (!DataValidation
.isFeatureFlag(this.jTextFieldFeatureFlag
.getText())) {
428 Log
.wrn("Update Ppis", "Incorrect data type for Feature Flag");
436 private PpisIdentification
getCurrentPpis() {
437 String arg0
= this.jComboBoxCName
.getSelectedItem().toString();
438 String arg1
= this.jComboBoxPpiType
.getSelectedItem().toString();
439 String arg2
= this.jComboBoxUsage
.getSelectedItem().toString();
441 String arg3
= this.jTextFieldFeatureFlag
.getText();
442 Vector
<String
> arg4
= this.jArchCheckBox
.getSelectedItemsVector();
443 String arg5
= this.jTextAreaHelpText
.getText();
445 id
= new PpisIdentification(arg0
, arg1
, arg2
, arg3
, arg4
, arg5
);
450 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
452 * Reflesh the frame when selected item changed
456 public void itemStateChanged(ItemEvent arg0
) {
457 if (arg0
.getSource() == this.jComboBoxPpiType
&& arg0
.getStateChange() == ItemEvent
.SELECTED
) {
458 if (this.jComboBoxPpiType
.getSelectedItem().toString().equals(ed
.getVPpiType().get(0))) {
459 Tools
.generateComboBoxByVector(this.jComboBoxUsage
, ed
.getVPpiUsage());
461 Tools
.generateComboBoxByVector(this.jComboBoxUsage
, ed
.getVPpiNotifyUsage());
466 public PpisIdentification
getId() {
470 public void setId(PpisIdentification id
) {