LWChoicePeer.java revision 5166
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
implements ChoicePeer, ItemListener {
/**
* According to Choice specification item events are sent in response to
* user input, but not in response to calls to select(). But JComboBox are
* sent item events in both cases. Should be used under delegateLock.
*/
private boolean skipPostMessage;
final PlatformComponent platformComponent) {
super(target, platformComponent);
}
return new JComboBoxDelegate();
}
void initializeImpl() {
super.initializeImpl();
synchronized (getDelegateLock()) {
for (int i = 0; i < count; ++i) {
}
// NOTE: the listener must be added at the very end, otherwise it
// fires events upon initialization of the combo box.
combo.addItemListener(this);
}
}
public void itemStateChanged(final ItemEvent e) {
// AWT Choice sends SELECTED event only whereas JComboBox
// sends both SELECTED and DESELECTED.
synchronized (getDelegateLock()) {
if (skipPostMessage) {
return;
}
}
}
}
synchronized (getDelegateLock()) {
}
}
synchronized (getDelegateLock()) {
// We shouldn't post event, if selected item was removed.
skipPostMessage = true;
skipPostMessage = false;
}
}
public void removeAll() {
synchronized (getDelegateLock()) {
}
}
synchronized (getDelegateLock()) {
skipPostMessage = true;
skipPostMessage = false;
}
}
}
public boolean isFocusable() {
return true;
}
// Empty non private constructor was added because access to this
// class shouldn't be emulated by a synthetic accessor method.
super();
}
public boolean hasFocus() {
}
//Needed for proper popup menu location
public Point getLocationOnScreen() {
return LWChoicePeer.this.getLocationOnScreen();
}
/**
* We should post ITEM_STATE_CHANGED event when the same element is
* reselected.
*/
}
super.setSelectedItem(anObject);
}
public void firePopupMenuWillBecomeVisible() {
super.firePopupMenuWillBecomeVisible();
public void run() {
popupMenu.setVisible(false);
}
}
}
});
}
private JPopupMenu getPopupMenu() {
if (child instanceof JPopupMenu) {
return (JPopupMenu) child;
}
}
return null;
}
}
}