]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Java/Source/FrameworkWizard/src/org/tianocore/frameworkwizard/common/ui/IComboBox.java
1. Fix EDKT496 Framework Wizard should allow user to pick up a Protocol Guid to tag...
[mirror_edk2.git] / Tools / Java / Source / FrameworkWizard / src / org / tianocore / frameworkwizard / common / ui / IComboBox.java
CommitLineData
a13899c5 1/** @file\r
2 \r
3 The file is used to override JComboBox to provides customized interfaces \r
4 \r
5 Copyright (c) 2006, Intel Corporation\r
6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 **/\r
15package org.tianocore.frameworkwizard.common.ui;\r
16\r
17import java.awt.event.FocusEvent;\r
18import java.awt.event.FocusListener;\r
19import java.awt.event.KeyEvent;\r
20import java.awt.event.KeyListener;\r
21import java.awt.event.MouseEvent;\r
22import java.awt.event.MouseListener;\r
23\r
24import javax.swing.JComboBox;\r
25import javax.swing.JFrame;\r
26import javax.swing.JPanel;\r
27\r
28/**\r
29 The class is used to override JComboBox to provides customized interfaces\r
30 It extends JComboBox implements KeyListener, MouseListener and FocusListener\r
31 \r
32\r
33 \r
34 **/\r
35public class IComboBox extends JComboBox implements KeyListener, MouseListener, FocusListener {\r
36\r
37 ///\r
38 /// Define class Serial Version UID\r
39 ///\r
40 private static final long serialVersionUID = -1940262568168458911L;\r
41\r
42 public void focusGained(FocusEvent arg0) {\r
43 // TODO Auto-generated method stub\r
44\r
45 }\r
46\r
47 /* (non-Javadoc)\r
48 * @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)\r
49 * \r
50 * Override focusLost to exit edit mode\r
51 * \r
52 */\r
53 public void focusLost(FocusEvent arg0) {\r
54 this.closeEdit();\r
55 }\r
56\r
57 /**\r
58 Main class, used for test\r
59 \r
60 @param args\r
61 \r
62 **/\r
63 public static void main(String[] args) {\r
64 JFrame jf = new JFrame();\r
65 jf.setSize(500, 200);\r
66 JPanel jp = new JPanel();\r
67 jp.setLayout(null);\r
68 IComboBox icb = new IComboBox();\r
69 jp.add(icb, null);\r
70 jf.setContentPane(jp);\r
71 jf.setVisible(true);\r
72 }\r
73\r
74 /**\r
75 This is the default constructor\r
76 \r
77 **/\r
78 public IComboBox() {\r
79 super();\r
80 init();\r
81 }\r
82\r
83 /**\r
84 This method initializes this\r
85 \r
86 **/\r
87 private void init() {\r
88 this.setSize(320, 20);\r
89 this.setEditable(false);\r
90 this.editor.addActionListener(this);\r
91 this.addMouseListener(this);\r
92 this.addKeyListener(this);\r
93 this.getEditor().getEditorComponent().addKeyListener(this);\r
94 this.getEditor().getEditorComponent().addFocusListener(this);\r
af6afe48 95 this.setToolTipText("<html>Double Click to add an entry, then finish by press ENTER.<br>"\r
96 + "Selecting DELETE will remove selected entry.</html>");\r
a13899c5 97 }\r
98\r
99 public void keyPressed(KeyEvent arg0) {\r
100 // TODO Auto-generated method stub\r
101 }\r
102\r
103 /* (non-Javadoc)\r
104 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)\r
105 * \r
106 * Override keyReleased to listen key action\r
107 * \r
108 */\r
109 public void keyReleased(KeyEvent arg0) {\r
110 //\r
111 //Add new item to list when press ENTER\r
112 //\r
113 if (arg0.getSource() == this.getEditor().getEditorComponent()) {\r
114 if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {\r
115 String strCurrentText = this.getEditor().getItem().toString().trim();\r
116 if (strCurrentText.length() == 0) {\r
117 if (this.getItemCount() > 0) {\r
118 this.setSelectedIndex(0);\r
119 }\r
120 } else {\r
121 this.addItem(strCurrentText);\r
122 this.setSelectedItem(strCurrentText);\r
123 }\r
124 this.setEditable(false);\r
125 }\r
a929458e 126\r
a13899c5 127 if (arg0.getKeyCode() == KeyEvent.VK_ESCAPE) {\r
128 closeEdit();\r
129 }\r
130 }\r
131\r
132 if (arg0.getSource() == this) {\r
133 //\r
134 //Remove item from the list when press DEL\r
135 //\r
136 if (arg0.getKeyCode() == KeyEvent.VK_DELETE) {\r
137 int intSelected = this.getSelectedIndex();\r
138 if (intSelected > -1) {\r
139 this.removeItemAt(this.getSelectedIndex());\r
140 if (this.getItemCount() > 0) {\r
141 this.setSelectedIndex(0);\r
142 } else {\r
143 this.removeAllItems();\r
144 }\r
145 }\r
146 }\r
147 }\r
148 }\r
149\r
150 public void keyTyped(KeyEvent arg0) {\r
151 // TODO Auto-generated method stub\r
152 }\r
153\r
154 /* (non-Javadoc)\r
155 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)\r
156 * \r
157 * Override mouseClicked to enter edit mode when double click mouse\r
158 * \r
159 */\r
160 public void mouseClicked(MouseEvent arg0) {\r
161 if (arg0.getClickCount() == 2) {\r
162 this.setEditable(true);\r
163 this.getEditor().setItem("");\r
164 }\r
a13899c5 165 }\r
166\r
167 public void mouseEntered(MouseEvent arg0) {\r
168 // TODO Auto-generated method stub\r
169\r
170 }\r
171\r
172 public void mouseExited(MouseEvent arg0) {\r
173 // TODO Auto-generated method stub\r
174\r
175 }\r
176\r
177 public void mousePressed(MouseEvent arg0) {\r
178 // TODO Auto-generated method stub\r
179\r
180 }\r
181\r
182 public void mouseReleased(MouseEvent arg0) {\r
183 // TODO Auto-generated method stub\r
184\r
185 }\r
186\r
187 /**\r
188 Exit edit mode\r
189 \r
190 **/\r
191 private void closeEdit() {\r
192 this.setEditable(false);\r
193 this.getEditor().setItem("");\r
a13899c5 194 }\r
55683eab 195\r
196 /**\r
197 Set the input item as selected\r
198 \r
199 @param item the item which is needed to be set selected\r
200 \r
201 **/\r
202 public void setSelectedItem(Object item) {\r
203 boolean isFind = false;\r
204 //\r
205 // If the input value is not in the default list, add it to the list\r
206 //\r
207 if (item != null) {\r
208 for (int index = 0; index < this.getItemCount(); index++) {\r
209 if (this.getItemAt(index).equals(item)) {\r
210 isFind = true;\r
211 break;\r
212 }\r
213 }\r
214 //\r
215 // Add this item to IComboBox if not found\r
216 //\r
217 if (!isFind && !item.toString().equals("")) {\r
218 super.addItem(item);\r
219 }\r
220 }\r
221 \r
222 //\r
223 // Call super function to set the item selected.\r
224 //\r
225 super.setSelectedItem(item);\r
226 }\r
a13899c5 227}\r