]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/module/ui/dialog/GuidsDlg.java
Fixed Absolute position of fields, Added ToolTipText and made HelpText a Scrolling...
[mirror_edk2.git] / Tools / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / module / ui / dialog / GuidsDlg.java
CommitLineData
06a19cee 1/** @file\r
5b38b75b 2 <<The file is used to create, update Guids of the MSA file>>\r
06a19cee 3 \r
4 Copyright (c) 2006, Intel Corporation\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9 \r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12 \r
13 **/\r
14package org.tianocore.frameworkwizard.module.ui.dialog;\r
15\r
16import java.awt.event.ActionEvent;\r
17import java.util.Vector;\r
18\r
19import javax.swing.JButton;\r
20import javax.swing.JComboBox;\r
21import javax.swing.JLabel;\r
22import javax.swing.JPanel;\r
23import javax.swing.JScrollPane;\r
24import javax.swing.JTextField;\r
5b38b75b 25import javax.swing.JTextArea;\r
06a19cee 26\r
27import org.tianocore.frameworkwizard.common.DataType;\r
28import org.tianocore.frameworkwizard.common.DataValidation;\r
29import org.tianocore.frameworkwizard.common.EnumerationData;\r
30import org.tianocore.frameworkwizard.common.Log;\r
31import org.tianocore.frameworkwizard.common.Tools;\r
32import org.tianocore.frameworkwizard.common.ui.ArchCheckBox;\r
33import org.tianocore.frameworkwizard.common.ui.IDialog;\r
34import org.tianocore.frameworkwizard.common.ui.IFrame;\r
35import org.tianocore.frameworkwizard.common.ui.StarLabel;\r
36import org.tianocore.frameworkwizard.module.Identifications.Guids.GuidsIdentification;\r
37import org.tianocore.frameworkwizard.workspace.WorkspaceTools;\r
38\r
39/**\r
5b38b75b 40 * The class is used to create, update Guids of the MSA file\r
41 * \r
42 * It extends IDialog\r
43 * \r
44 */\r
45public class GuidsDlg extends IDialog {\r
06a19cee 46\r
5b38b75b 47 // /\r
48 // / Define class Serial Version UID\r
49 // /\r
50 private static final long serialVersionUID = 6710858997766979803L;\r
06a19cee 51\r
5b38b75b 52 //\r
53 // Define class members\r
54 //\r
55 private JPanel jContentPane = null;\r
06a19cee 56\r
5b38b75b 57 private JLabel jLabelC_Name = null;\r
06a19cee 58\r
5b38b75b 59 private JComboBox jComboBoxCName = null;\r
06a19cee 60\r
5b38b75b 61 private JLabel jLabelUsage = null;\r
06a19cee 62\r
5b38b75b 63 private JComboBox jComboBoxUsage = null;\r
06a19cee 64\r
5b38b75b 65 private StarLabel jStarLabel1 = null;\r
06a19cee 66\r
5b38b75b 67 private StarLabel jStarLabel2 = null;\r
06a19cee 68\r
5b38b75b 69 private JLabel jLabelFeatureFlag = null;\r
06a19cee 70\r
5b38b75b 71 private JTextField jTextFieldFeatureFlag = null;\r
06a19cee 72\r
5b38b75b 73 private JLabel jLabelArch = null;\r
06a19cee 74\r
5b38b75b 75 private JScrollPane jScrollPane = null;\r
06a19cee 76\r
5b38b75b 77 private JLabel jLabelHelpText = null;\r
06a19cee 78\r
5b38b75b 79 private JTextArea jTextAreaHelpText = null;\r
06a19cee 80\r
5b38b75b 81 private JScrollPane jScrollPaneHelpText = null;\r
82 \r
83 private ArchCheckBox jArchCheckBox = null;\r
06a19cee 84\r
5b38b75b 85 private JButton jButtonOk = null;\r
06a19cee 86\r
5b38b75b 87 private JButton jButtonCancel = null;\r
06a19cee 88\r
5b38b75b 89 //\r
90 // Not used by UI\r
91 //\r
92 private GuidsIdentification id = null;\r
06a19cee 93\r
5b38b75b 94 private EnumerationData ed = new EnumerationData();\r
06a19cee 95\r
5b38b75b 96 private WorkspaceTools wt = new WorkspaceTools();\r
06a19cee 97\r
5b38b75b 98 /**\r
99 * This method initializes jTextFieldC_Name\r
100 * \r
101 * @return javax.swing.JTextField jTextFieldC_Name\r
102 * \r
103 */\r
104 private JComboBox getJComboBoxCName() {\r
105 if (jComboBoxCName == null) {\r
106 jComboBoxCName = new JComboBox();\r
107 jComboBoxCName.setBounds(new java.awt.Rectangle(160, 10, 320, 20));\r
108 jComboBoxCName.setPreferredSize(new java.awt.Dimension(320, 20));\r
109 jComboBoxCName.setToolTipText("Select the C Name of the GUID");\r
06a19cee 110 }\r
5b38b75b 111 return jComboBoxCName;\r
112 }\r
113\r
114 /**\r
115 * This method initializes jComboBoxUsage\r
116 * \r
117 * @return javax.swing.JComboBox jComboBoxUsage\r
118 * \r
119 */\r
120 private JComboBox getJComboBoxUsage() {\r
121 if (jComboBoxUsage == null) {\r
122 jComboBoxUsage = new JComboBox();\r
123 jComboBoxUsage.setBounds(new java.awt.Rectangle(160, 35, 320, 20));\r
124 jComboBoxUsage.setPreferredSize(new java.awt.Dimension(320, 20));\r
125 jComboBoxUsage.setToolTipText("<html><table><tr><td>ALWAYS_CONSUMED</td><td>Module always consumes the GUID</td></tr><tr><td>SOMETIMES_CONSUMED</td><td>Module will use the GUID only if it is present</td></tr><tr><td>ALWAYS_PRODUCED</td><td>Module always produces the GUID</td></tr><tr><td>SOMETIMES_PRODUCED</td><td>Module will sometimes produce the GUID</td></tr><tr><td>DEFAULT</td><td>Default is the the GUID that specified the<br>instance of the package</td></tr></table></html>");\r
06a19cee 126 }\r
5b38b75b 127 return jComboBoxUsage;\r
128 }\r
129\r
130 /**\r
131 * This method initializes jTextFieldFeatureFlag\r
132 * \r
133 * @return javax.swing.JTextField\r
134 * \r
135 */\r
136 private JTextField getJTextFieldFeatureFlag() {\r
137 if (jTextFieldFeatureFlag == null) {\r
138 jTextFieldFeatureFlag = new JTextField();\r
139 jTextFieldFeatureFlag.setBounds(new java.awt.Rectangle(160, 105, 320, 20));\r
140 jTextFieldFeatureFlag.setPreferredSize(new java.awt.Dimension(320, 20));\r
141 jTextFieldFeatureFlag.setToolTipText("Postfix expression that must evaluate to TRUE or FALSE");\r
06a19cee 142 }\r
5b38b75b 143 return jTextFieldFeatureFlag;\r
144 }\r
145\r
146 /**\r
147 * This method initializes jScrollPane\r
148 * \r
149 * @return javax.swing.JScrollPane\r
150 */\r
151 private JScrollPane getJScrollPane() {\r
152 if (jScrollPane == null) {\r
153 jScrollPane = new JScrollPane();\r
154 jScrollPane.setViewportView(getJContentPane());\r
06a19cee 155 }\r
5b38b75b 156 return jScrollPane;\r
157 }\r
158\r
159 /**\r
160 * This method initializes jTextAreaHelpText\r
161 * \r
162 * @return javax.swing.JTextArea\r
163 * \r
164 */\r
165 private JTextArea getJTextAreaHelpText() {\r
166 if (jTextAreaHelpText == null) {\r
167 jTextAreaHelpText = new JTextArea();\r
168 jTextAreaHelpText.setLineWrap(true);\r
169 jTextAreaHelpText.setWrapStyleWord(true);\r
06a19cee 170 }\r
5b38b75b 171 return jTextAreaHelpText;\r
172 }\r
173\r
174 /**\r
175 * \r
176 * This method initializes jScrollPaneHelpText\r
177 * \r
178 * @return javax.swing.JScrollPane jScrollPaneHelpText\r
179 * \r
180 **/\r
181 private JScrollPane getJScrollPaneHelpText() {\r
182 if (jScrollPaneHelpText == null){\r
183 jScrollPaneHelpText = new JScrollPane();\r
184 jScrollPaneHelpText.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r
185 jScrollPaneHelpText.setSize(new java.awt.Dimension(320, 40));\r
186 jScrollPaneHelpText.setLocation(new java.awt.Point(160,60));\r
187 jScrollPaneHelpText.setViewportView(getJTextAreaHelpText());\r
06a19cee 188 }\r
5b38b75b 189 return jScrollPaneHelpText;\r
190 }\r
191 /**\r
192 * This method initializes jButtonOk\r
193 * \r
194 * @return javax.swing.JButton\r
195 * \r
196 */\r
197 private JButton getJButtonOk() {\r
198 if (jButtonOk == null) {\r
199 jButtonOk = new JButton();\r
200 jButtonOk.setBounds(new java.awt.Rectangle(290, 157, 90, 20));\r
201 jButtonOk.setText("Ok");\r
202 jButtonOk.addActionListener(this);\r
06a19cee 203 }\r
5b38b75b 204 return jButtonOk;\r
205 }\r
206\r
207 /**\r
208 * This method initializes jButtonCancel\r
209 * \r
210 * @return javax.swing.JButton\r
211 * \r
212 */\r
213 private JButton getJButtonCancel() {\r
214 if (jButtonCancel == null) {\r
215 jButtonCancel = new JButton();\r
216 jButtonCancel.setBounds(new java.awt.Rectangle(390, 157, 90, 20));\r
217 jButtonCancel.setText("Cancel");\r
218 jButtonCancel.addActionListener(this);\r
06a19cee 219 }\r
5b38b75b 220 return jButtonCancel;\r
221 }\r
222\r
223 public static void main(String[] args) {\r
224\r
225 }\r
226\r
227 /**\r
228 * \r
229 * This method initializes this\r
230 * \r
231 */\r
232 private void init() {\r
233 this.setSize(500, 230);\r
234 this.setContentPane(getJScrollPane());\r
235 this.setTitle("Guids");\r
236 initFrame();\r
237 this.setViewMode(false);\r
238 this.centerWindow();\r
239 }\r
240\r
241 /**\r
242 * \r
243 * This method initializes this Fill values to all fields if these values are\r
244 * not empty\r
245 * \r
246 * @param inGuidsId\r
247 * \r
248 */\r
249 private void init(GuidsIdentification inGuidsId) {\r
250 init();\r
251 this.id = inGuidsId;\r
252\r
253 if (this.id != null) {\r
254 this.jComboBoxCName.setSelectedItem(id.getName());\r
255 this.jComboBoxUsage.setSelectedItem(id.getUsage());\r
256 this.jTextAreaHelpText.setText(id.getHelp());\r
257 this.jTextFieldFeatureFlag.setText(id.getFeatureFlag());\r
258 this.jArchCheckBox.setSelectedItems(id.getSupArchList());\r
06a19cee 259 }\r
5b38b75b 260 }\r
261\r
262 /**\r
263 * This is the override edit constructor\r
264 * \r
265 * @param inGuidsIdentification\r
266 * @param iFrame\r
267 * \r
268 */\r
269 public GuidsDlg(GuidsIdentification inGuidsIdentification, IFrame iFrame) {\r
270 super(iFrame, true);\r
271 init(inGuidsIdentification);\r
272 }\r
273\r
274 /**\r
275 * Disable all components when the mode is view\r
276 * \r
277 * @param isView\r
278 * true - The view mode; false - The non-view mode\r
279 * \r
280 */\r
281 public void setViewMode(boolean isView) {\r
282 if (isView) {\r
283 this.jComboBoxUsage.setEnabled(!isView);\r
06a19cee 284 }\r
5b38b75b 285 }\r
286\r
287 /**\r
288 * This method initializes jContentPane\r
289 * \r
290 * @return javax.swing.JPanel jContentPane\r
291 * \r
292 */\r
293 private JPanel getJContentPane() {\r
294 if (jContentPane == null) {\r
295 jStarLabel1 = new StarLabel();\r
296 jStarLabel1.setLocation(new java.awt.Point(2, 10));\r
297 jLabelC_Name = new JLabel();\r
298 jLabelC_Name.setText("Select GUID's C Name");\r
299 jLabelC_Name.setBounds(new java.awt.Rectangle(15, 10, 145, 20));\r
300\r
301 jStarLabel2 = new StarLabel();\r
302 jStarLabel2.setLocation(new java.awt.Point(2, 35));\r
303 jLabelUsage = new JLabel();\r
304 jLabelUsage.setText("Usage");\r
305 jLabelUsage.setBounds(new java.awt.Rectangle(15, 35, 145, 20));\r
306\r
307 jLabelHelpText = new JLabel();\r
308 jLabelHelpText.setBounds(new java.awt.Rectangle(14, 60, 145, 20));\r
309 jLabelHelpText.setText("Help Text");\r
310\r
311 jLabelFeatureFlag = new JLabel();\r
312 jLabelFeatureFlag.setBounds(new java.awt.Rectangle(15, 105, 145, 20));\r
313 jLabelFeatureFlag.setText("Feature Flag Expression");\r
314\r
315 jLabelArch = new JLabel();\r
316 jLabelArch.setBounds(new java.awt.Rectangle(15, 130, 145, 20));\r
317 jLabelArch.setText("Supported Architectures");\r
318 jArchCheckBox = new ArchCheckBox();\r
319 jArchCheckBox.setBounds(new java.awt.Rectangle(160, 130, 320, 20));\r
320 jArchCheckBox.setPreferredSize(new java.awt.Dimension(320, 20));\r
321\r
322 jContentPane = new JPanel();\r
323 jContentPane.setLayout(null);\r
324 jContentPane.setPreferredSize(new java.awt.Dimension(490, 165));\r
325 \r
326 jContentPane.add(jStarLabel1, null);\r
327 jContentPane.add(jLabelC_Name, null);\r
328 jContentPane.add(getJComboBoxCName(), null);\r
329 jContentPane.add(jStarLabel2, null);\r
330 jContentPane.add(jLabelUsage, null);\r
331 jContentPane.add(getJComboBoxUsage(), null);\r
332 jContentPane.add(jLabelHelpText, null);\r
333 jContentPane.add(getJScrollPaneHelpText(), null);\r
334 jContentPane.add(jLabelFeatureFlag, null);\r
335 jContentPane.add(getJTextFieldFeatureFlag(), null);\r
336 jContentPane.add(jLabelArch, null);\r
337 jContentPane.add(jArchCheckBox, null);\r
338 jContentPane.add(getJButtonOk(), null);\r
339 jContentPane.add(getJButtonCancel(), null);\r
06a19cee 340 }\r
5b38b75b 341 return jContentPane;\r
342 }\r
343\r
344 /**\r
345 * This method initializes Usage type\r
346 * \r
347 */\r
348 private void initFrame() {\r
349 Tools.generateComboBoxByVector(jComboBoxCName, wt\r
350 .getAllGuidDeclarationsFromWorkspace());\r
351 Tools.generateComboBoxByVector(jComboBoxUsage, ed.getVGuidUsage());\r
352 }\r
353\r
354 /*\r
355 * (non-Javadoc)\r
356 * \r
357 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)\r
358 * \r
359 * Override actionPerformed to listen all actions\r
360 * \r
361 */\r
362 public void actionPerformed(ActionEvent arg0) {\r
363 if (arg0.getSource() == jButtonOk) {\r
364 if (checkAdd()) {\r
365 getCurrentGuids();\r
366 this.returnType = DataType.RETURN_TYPE_OK;\r
367 this.setVisible(false);\r
368 }\r
06a19cee 369 }\r
370\r
5b38b75b 371 if (arg0.getSource() == jButtonCancel) {\r
372 this.returnType = DataType.RETURN_TYPE_CANCEL;\r
373 this.setVisible(false);\r
06a19cee 374 }\r
5b38b75b 375 }\r
376\r
377 /**\r
378 * Data validation for all fields\r
379 * \r
380 * @retval true - All datas are valid\r
381 * @retval false - At least one data is invalid\r
382 * \r
383 */\r
384 public boolean checkAdd() {\r
385 //\r
386 // Check if all fields have correct data types\r
387 //\r
06a19cee 388\r
5b38b75b 389 //\r
390 // Check Name\r
391 //\r
392 if (!isEmpty(this.jComboBoxCName.getSelectedItem().toString())) {\r
393 if (!DataValidation.isC_NameType(this.jComboBoxCName.getSelectedItem()\r
394 .toString())) {\r
395 Log.wrn("Update Guids", "Incorrect data type for Guid Name");\r
396 return false;\r
397 }\r
06a19cee 398 }\r
399\r
5b38b75b 400 //\r
401 // Check FeatureFlag\r
402 //\r
403 if (!isEmpty(this.jTextFieldFeatureFlag.getText())) {\r
404 if (!DataValidation.isFeatureFlag(this.jTextFieldFeatureFlag.getText())) {\r
405 Log.wrn("Update Guids", "Incorrect data type for Feature Flag");\r
406 return false;\r
407 }\r
06a19cee 408 }\r
409\r
5b38b75b 410 return true;\r
411 }\r
412\r
413private GuidsIdentification getCurrentGuids() {\r
06a19cee 414 String arg0 = this.jComboBoxCName.getSelectedItem().toString();\r
415 String arg1 = this.jComboBoxUsage.getSelectedItem().toString();\r
416\r
417 String arg2 = this.jTextFieldFeatureFlag.getText();\r
418 Vector<String> arg3 = this.jArchCheckBox.getSelectedItemsVector();\r
5b38b75b 419 String arg4 = this.jTextAreaHelpText.getText();\r
06a19cee 420\r
421 id = new GuidsIdentification(arg0, arg1, arg2, arg3, arg4);\r
422 return id;\r
5b38b75b 423 } public GuidsIdentification getId() {\r
424 return id;\r
425 }\r
06a19cee 426\r
5b38b75b 427 public void setId(GuidsIdentification id) {\r
428 this.id = id;\r
429 }\r
06a19cee 430}\r