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