]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/PackageEditor/src/org/tianocore/packaging/UpdatePkgHeader.java
Fix the problem "update action multiple times fail".
[mirror_edk2.git] / Tools / Source / PackageEditor / src / org / tianocore / packaging / UpdatePkgHeader.java
CommitLineData
878ddf1f 1/** @file\r
2 Java class UpdatePkgHeader is GUI for update Package Header 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.packaging;\r
14\r
15import javax.swing.DefaultCellEditor;\r
16import javax.swing.JComboBox;\r
17import javax.swing.JPanel;\r
18import javax.swing.JFrame;\r
19import javax.swing.JLabel;\r
20import javax.swing.JTextField;\r
21import javax.swing.JButton;\r
22\r
23import javax.swing.JScrollPane;\r
24import javax.swing.JTable;\r
25import javax.swing.table.*;\r
26\r
27import org.tianocore.common.Tools;\r
28\r
24dba7f3 29import java.awt.Dimension;\r
30import java.awt.Toolkit;\r
878ddf1f 31import java.awt.event.ActionEvent;\r
32import java.awt.event.ActionListener;\r
33import java.io.*;\r
34\r
35/**\r
36 GUI for update Package Header in spd file\r
37 \r
38 @since PackageEditor 1.0\r
39**/\r
40public class UpdatePkgHeader extends JFrame implements ActionListener {\r
41\r
42 private JPanel jContentPane = null;\r
43\r
44 private JScrollPane jScrollPane = null;\r
45\r
46 private JTable jTable = null;\r
47\r
48 private SpdFileContents sfc = null;\r
49\r
50 private JButton jButtonOk = null;\r
51\r
52 private JButton jButtonCancel = null;\r
53\r
54 private DefaultTableModel model = null;\r
55\r
56 private JButton jButton = null;\r
57\r
58 /**\r
59 This is the default constructor\r
60 **/\r
61 public UpdatePkgHeader(SpdFileContents sfc) {\r
62 super();\r
63 this.sfc = sfc;\r
64 initialize();\r
65\r
66 }\r
67\r
68 public void actionPerformed(ActionEvent arg0) {\r
69 if (arg0.getSource() == jButtonOk) {\r
70 this.save();\r
71 this.dispose();\r
72\r
73 }\r
74 if (arg0.getSource() == jButtonCancel) {\r
75 this.dispose();\r
76\r
77 }\r
78\r
79 if (arg0.getSource() == jButton) {\r
80 String[] o = { "BASE", "" };\r
81 model.addRow(o);\r
82 }\r
83 }\r
84\r
85 /**\r
86 This method initializes this\r
87 \r
88 @return void\r
89 **/\r
90 private void initialize() {\r
91 this.setSize(604, 553);\r
92 this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);\r
93 this.setTitle("Update Package Headers");\r
94 this.setContentPane(getJContentPane());\r
24dba7f3 95 this.centerWindow();\r
96 }\r
97 /**\r
98 Start the window at the center of screen\r
99 \r
100 **/\r
101 protected void centerWindow(int intWidth, int intHeight) {\r
102 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();\r
103 this.setLocation((d.width - intWidth) / 2, (d.height - intHeight) / 2);\r
878ddf1f 104 }\r
105\r
24dba7f3 106 /**\r
107 Start the window at the center of screen\r
108 \r
109 **/\r
110 protected void centerWindow() {\r
111 centerWindow(this.getSize().width, this.getSize().height);\r
112 }\r
878ddf1f 113 /**\r
114 This method initializes jContentPane\r
115 \r
116 @return javax.swing.JPanel\r
117 **/\r
118 private JPanel getJContentPane() {\r
119 if (jContentPane == null) {\r
120 jContentPane = new JPanel();\r
121 jContentPane.setLayout(null);\r
122 jContentPane.add(getJScrollPane(), null);\r
123 jContentPane.add(getJButtonOk(), null);\r
124 jContentPane.add(getJButtonCancel(), null);\r
125 jContentPane.add(getJButton(), null);\r
126 }\r
127 return jContentPane;\r
128 }\r
129\r
130 /**\r
131 This method initializes jScrollPane \r
132 \r
133 @return javax.swing.JScrollPane \r
134 **/\r
135 private JScrollPane getJScrollPane() {\r
136 if (jScrollPane == null) {\r
137 jScrollPane = new JScrollPane();\r
138 jScrollPane.setBounds(new java.awt.Rectangle(38, 45, 453, 419));\r
139 jScrollPane.setViewportView(getJTable());\r
140 }\r
141 return jScrollPane;\r
142 }\r
143\r
144 /**\r
145 This method initializes jTable \r
146 \r
147 @return javax.swing.JTable \r
148 **/\r
149 private JTable getJTable() {\r
150 if (jTable == null) {\r
151 model = new DefaultTableModel();\r
152 jTable = new JTable(model);\r
153 jTable.setRowHeight(20);\r
154 model.addColumn("ModuleType");\r
155 model.addColumn("IncludeHeader");\r
156 //\r
157 // Using combobox to display ModuleType in table\r
158 //\r
159 TableColumn typeColumn = jTable.getColumnModel().getColumn(0);\r
160 JComboBox jComboBoxSelect = new JComboBox();\r
161 jComboBoxSelect.addItem("BASE");\r
162 jComboBoxSelect.addItem("SEC");\r
163 jComboBoxSelect.addItem("PEI_CORE");\r
164 jComboBoxSelect.addItem("PEIM");\r
165 jComboBoxSelect.addItem("DXE_CORE");\r
166 jComboBoxSelect.addItem("DXE_DRIVER");\r
167 jComboBoxSelect.addItem("DXE_RUNTIME_DRIVER");\r
168 jComboBoxSelect.addItem("DXE_SAL_DRIVER");\r
169 jComboBoxSelect.addItem("DXE_SMM_DRIVER");\r
170 jComboBoxSelect.addItem("TOOLS");\r
171 jComboBoxSelect.addItem("UEFI_DRIVER");\r
172 jComboBoxSelect.addItem("UEFI_APPLICATION");\r
173 jComboBoxSelect.addItem("USER_DEFINED");\r
174 typeColumn.setCellEditor(new DefaultCellEditor(jComboBoxSelect));\r
175\r
176 if (sfc.getSpdPackageHeaderCount() == 0) {\r
177 return jTable;\r
178 }\r
179 String[][] saa = new String[sfc.getSpdPackageHeaderCount()][2];\r
180 sfc.getSpdPackageHeaders(saa);\r
181 int i = 0;\r
182 while (i < saa.length) {\r
183 model.addRow(saa[i]);\r
184 i++;\r
185 }\r
186\r
187 }\r
188 return jTable;\r
189 }\r
190\r
191 /**\r
192 Remove original package headers before saving updated ones\r
193 **/\r
194 protected void save() {\r
ee19dec6 195 if (jTable.isEditing()) {\r
196 jTable.getCellEditor().stopCellEditing();\r
197 }\r
878ddf1f 198 sfc.removeSpdPkgHeader();\r
199 int rowCount = model.getRowCount();\r
200 int i = 0;\r
201 while (i < rowCount) {\r
202 String headFile = null;\r
203 if (model.getValueAt(i, 1) != null) {\r
204 headFile = model.getValueAt(i, 1).toString();\r
205 }\r
206 sfc.genSpdModuleHeaders(model.getValueAt(i, 0).toString(), headFile, null, null, null, null, null, null);\r
207 i++;\r
208 }\r
209 }\r
210\r
211 /**\r
212 This method initializes jButtonOk \r
213 \r
214 @return javax.swing.JButton \r
215 **/\r
216 private JButton getJButtonOk() {\r
217 if (jButtonOk == null) {\r
218 jButtonOk = new JButton();\r
219 jButtonOk.setText("Ok");\r
220 jButtonOk.setSize(new java.awt.Dimension(84, 20));\r
221 jButtonOk.setLocation(new java.awt.Point(316, 486));\r
222 jButtonOk.addActionListener(this);\r
223 }\r
224 return jButtonOk;\r
225 }\r
226\r
227 /**\r
228 This method initializes jButtonCancel \r
229 \r
230 @return javax.swing.JButton \r
231 **/\r
232 private JButton getJButtonCancel() {\r
233 if (jButtonCancel == null) {\r
234 jButtonCancel = new JButton();\r
235 jButtonCancel.setText("Cancel");\r
236 jButtonCancel.setSize(new java.awt.Dimension(82, 20));\r
237 jButtonCancel.setLocation(new java.awt.Point(411, 486));\r
238 jButtonCancel.addActionListener(this);\r
239 }\r
240 return jButtonCancel;\r
241 }\r
242\r
243 /**\r
244 This method initializes jButton \r
245 \r
246 @return javax.swing.JButton \r
247 **/\r
248 private JButton getJButton() {\r
249 if (jButton == null) {\r
250 jButton = new JButton();\r
251 jButton.setBounds(new java.awt.Rectangle(220, 486, 85, 20));\r
252 jButton.setText("Insert");\r
253 jButton.addActionListener(this);\r
254 }\r
255 return jButton;\r
256 }\r
257} // @jve:decl-index=0:visual-constraint="11,7"\r