19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this work for additional information regarding copyright ownership. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (the "License"); you may not use this file except in compliance with 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the License. You may obtain a copy of the License at 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt; 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.event.FocusListener; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.event.MouseEvent; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.peer.MenuComponentPeer; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.Serializable; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Locale; //import javax.accessibility.Accessible; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//import javax.accessibility.AccessibleComponent; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//import javax.accessibility.AccessibleContext; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//import javax.accessibility.AccessibleRole; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//import javax.accessibility.AccessibleSelection; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//import javax.accessibility.AccessibleStateSet; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.gl.MultiRectArea; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.state.MenuItemState; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.state.MenuState; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.luni.util.NotImplementedException; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The MenuComponent abstract class is the superclass for menu components. Menu 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * components receive and process AWT events. 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class MenuComponent implements Serializable { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The Constant serialVersionUID. 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final long serialVersionUID = -4536902356223894379L; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The name. 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String name; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The font. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Font font; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The parent. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MenuContainer parent; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The deprecated event handler. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean deprecatedEventHandler = true; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The selected item index. 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int selectedItemIndex; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT: private AccessibleContext accessibleContext; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The toolkit. 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Toolkit toolkit = Toolkit.getDefaultToolkit(); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * protected abstract class AccessibleAWTMenuComponent extends 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * AccessibleContext implements Serializable, AccessibleComponent, 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * AccessibleSelection { private static final long serialVersionUID = 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * -4269533416223798698L; public void addFocusListener(FocusListener 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * listener) { } public boolean contains(Point pt) { return false; } public 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Accessible getAccessibleAt(Point pt) { return null; } public Color 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getBackground() { return null; } public Rectangle getBounds() { return 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * null; } public Cursor getCursor() { return null; } public Font getFont() 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * { return MenuComponent.this.getFont(); } public FontMetrics 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getFontMetrics(Font font) { return null; } public Color getForeground() { 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return null; } public Point getLocation() { return null; } public Point 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getLocationOnScreen() { return null; } public Dimension getSize() { 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return null; } public boolean isEnabled() { return true; // always 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * enabled } public boolean isFocusTraversable() { return true; // always 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * focus traversable } public boolean isShowing() { return true;// always 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * showing } public boolean isVisible() { return true; // always visible } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * public void removeFocusListener(FocusListener listener) { } public void 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * requestFocus() { } public void setBackground(Color color) { } public void 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * setBounds(Rectangle rect) { } public void setCursor(Cursor cursor) { } 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * public void setEnabled(boolean enabled) { } public void setFont(Font 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * font) { MenuComponent.this.setFont(font); } public void 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * setForeground(Color color) { } public void setLocation(Point pt) { } 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * public void setSize(Dimension pt) { } public void setVisible(boolean 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * visible) { } public void addAccessibleSelection(int index) { } public 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * void clearAccessibleSelection() { } public Accessible 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getAccessibleSelection(int index) { return null; } public int 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getAccessibleSelectionCount() { return 0; } public boolean 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * isAccessibleChildSelected(int index) { return false; } public void 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * removeAccessibleSelection(int index) { } public void 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selectAllAccessibleSelection() { } 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public Accessible getAccessibleChild(int index) { return null; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public int getAccessibleChildrenCount() { return 0; } 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public AccessibleComponent getAccessibleComponent() { return 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this; } 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public String getAccessibleDescription() { return 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * super.getAccessibleDescription(); } 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public int getAccessibleIndexInParent() { toolkit.lockAWT(); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * try { Accessible aParent = getAccessibleParent(); int aIndex = -1; if 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (aParent instanceof MenuComponent) { MenuComponent parent = 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (MenuComponent) aParent; int count = parent.getItemCount(); for (int i = 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 0; i < count; i++) { MenuComponent comp = parent.getItem(i); if (comp 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instanceof Accessible) { aIndex++; if (comp == MenuComponent.this) { 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return aIndex; } } } } return -1; } finally { toolkit.unlockAWT(); } } 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public String getAccessibleName() { return 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * super.getAccessibleName(); } 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public Accessible getAccessibleParent() { toolkit.lockAWT(); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * try { Accessible aParent = super.getAccessibleParent(); if (aParent != 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * null) { return aParent; } MenuContainer parent = getParent(); if (parent 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instanceof Accessible) { aParent = (Accessible) parent; } return aParent; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * } finally { toolkit.unlockAWT(); } } 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public AccessibleRole getAccessibleRole() { return 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * AccessibleRole.AWT_COMPONENT; } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public AccessibleSelection getAccessibleSelection() { return 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this; } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public AccessibleStateSet getAccessibleStateSet() { return new 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * AccessibleStateSet(); } 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override public Locale getLocale() { return Locale.getDefault(); } } 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The accessor to MenuComponent internal state, utilized by the visual 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * theme. 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws HeadlessException 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the headless exception. 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * class State implements MenuState { Dimension size; Dimension getSize() { 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if (size == null) { calculate(); } return size; } public int getWidth() { 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return getSize().width; } public int getHeight() { return 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getSize().height; } public Font getFont() { return 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuComponent.this.getFont(); } public int getItemCount() { return 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuComponent.this.getItemCount(); } public int getSelectedItemIndex() { 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return MenuComponent.this.getSelectedItemIndex(); } public boolean 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * isFontSet() { return MenuComponent.this.isFontSet(); } 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @SuppressWarnings("deprecation") public FontMetrics getFontMetrics(Font 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * f) { return MenuComponent.this.toolkit.getFontMetrics(f); } public Point 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getLocation() { return MenuComponent.this.getLocation(); } public 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuItemState getItem(int index) { MenuItem item = 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuComponent.this.getItem(index); return item.itemState; } public void 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * setSize(int w, int h) { this.size = new Dimension(w, h); } void 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * calculate() { size = new Dimension(); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * size.setSize(toolkit.theme.calculateMenuSize(this)); } void reset() { for 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (int i = 0; i < getItemCount(); i++) { ((MenuItem.State) 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getItem(i)).reset(); } } } 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Pop-up box for menu. It transfers the paint events, keyboard and mouse 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events to the menu component itself. 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * class MenuPopupBox extends PopupBox { private final Point lastMousePos = 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * new Point(); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override boolean isMenu() { return true; } 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override void paint(Graphics gr) { MenuComponent.this.paint(gr); } 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override void onKeyEvent(int eventId, int vKey, long when, int 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * modifiers) { MenuComponent.this.onKeyEvent(eventId, vKey, when, 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * modifiers); } 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @Override void onMouseEvent(int eventId, Point where, int mouseButton, 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * long when, int modifiers, int wheelRotation) { // prevent conflict of 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mouse and keyboard // when sub-menu drops down due to keyboard navigation 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if (lastMousePos.equals(where) && (eventId == MouseEvent.MOUSE_MOVED || 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * eventId == MouseEvent.MOUSE_ENTERED)) { return; } 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * lastMousePos.setLocation(where); MenuComponent.this.onMouseEvent(eventId, 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * where, mouseButton, when, modifiers); } } 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Instantiates a new MenuComponent object. 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws HeadlessException 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if the graphical interface environment can't support 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuComponents. 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MenuComponent() throws HeadlessException { 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Toolkit.checkHeadless(); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project name = autoName(); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project selectedItemIndex = -1; 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the name of the MenuComponent object. 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the name of the MenuComponent object. 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getName() { 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return name; 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a String representation of the MenuComponent object. 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a String representation of the MenuComponent object. 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getClass().getName() + "[" + paramString() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the parent menu container. 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the parent. 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MenuContainer getParent() { 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return parent; 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the name of the MenuComponent to the specified string. 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param name 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the new name of the MenuComponent object. 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setName(String name) { 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.name = name; 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Dispatches AWT event. 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param event 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the AWTEvent. 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void dispatchEvent(AWTEvent event) { 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processEvent(event); 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (deprecatedEventHandler) { 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project postDeprecatedEvent(event); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Post deprecated event. 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param event 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event. 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void postDeprecatedEvent(AWTEvent event) { 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Event evt = event.getEvent(); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (evt != null) { 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project postEvent(evt); 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the peer of the MenuComponent; an application must not use this 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * method directly. 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the MenuComponentPeer object. 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws NotImplementedException 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if this method is not implemented by a subclass. 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated an application must not use this method directly. 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MenuComponentPeer getPeer() throws org.apache.harmony.luni.util.NotImplementedException { 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (true) { 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException("Method is not implemented"); //TODO: implement //$NON-NLS-1$ 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the locking object of this MenuComponent. 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the locking object of this MenuComponent. 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected final Object getTreeLock() { 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return toolkit.awtTreeLock; 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Posts the Event to the MenuComponent. 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param e 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Event. 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if the event is posted successfully, false otherwise. 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated Replaced dispatchEvent method. 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @SuppressWarnings("deprecation") 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean postEvent(Event e) { 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (parent != null) { 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return parent.postEvent(e); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the string representation of the MenuComponent state. 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return returns the string representation of the MenuComponent state. 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected String paramString() { 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getName(); 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * public AccessibleContext getAccessibleContext() { toolkit.lockAWT(); try 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * { if (accessibleContext == null) { accessibleContext = 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * createAccessibleContext(); } return accessibleContext; } finally { 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * toolkit.unlockAWT(); } } 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the font of the MenuComponent object. 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the Font of the MenuComponent object. 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Font getFont() { 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (font == null && hasDefaultFont()) { 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return toolkit.getDefaultFont(); 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (font == null && parent != null) { 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return parent.getFont(); 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return font; 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Checks if is font set. 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if is font set 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isFontSet() { 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return font != null 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project || ((parent instanceof MenuComponent) && ((MenuComponent)parent).isFontSet()); 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Checks for default font. 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if successful. 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean hasDefaultFont() { 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Processes an AWTEevent on this menu component. 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param event 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the AWTEvent. 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void processEvent(AWTEvent event) { 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // do nothing 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Removes the peer of the MenuComponent. 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void removeNotify() { 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the Font for this MenuComponent object. 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param font 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the new Font to be used for this MenuComponent. 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setFont(Font font) { 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.lockAWT(); 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.font = font; 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } finally { 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project toolkit.unlockAWT(); 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the parent. 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parent 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the new parent. 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void setParent(MenuContainer parent) { 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.parent = parent; 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the location. 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the location. 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Point getLocation() { 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Point(0, 0); 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the width. 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the width. 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getWidth() { 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the height. 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the height. 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getHeight() { 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 1; 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Recursively find the menu item for a menu shortcut. 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gr 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the gr. 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the menu item; or null if the item is not available for this 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * shortcut. 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuItem getShortcutMenuItemImpl(MenuShortcut ms) { if (ms == null) { 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return null; } for (int i = 0; i < getItemCount(); i++) { MenuItem mi = 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getItem(i); if (mi instanceof Menu) { mi = ((Menu) 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mi).getShortcutMenuItemImpl(ms); if (mi != null) { return mi; } } else if 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (ms.equals(mi.getShortcut())) { return mi; } } return null; } 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void paint(Graphics gr) { 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gr.setColor(Color.LIGHT_GRAY); 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gr.fillRect(0, 0, getWidth(), getHeight()); 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gr.setColor(Color.BLACK); 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Mouse events handler. 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param eventId 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * one of the MouseEvent.MOUSE_* constants. 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param where 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mouse location. 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mouseButton 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * mouse button that was pressed or released. 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param when 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * event time. 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modifiers 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * input event modifiers. 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void onMouseEvent(int eventId, Point where, int mouseButton, long when, int modifiers) { 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Keyboard event handler. 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param eventId 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * one of the KeyEvent.KEY_* constants. 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param vKey 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the key code. 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param when 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * event time. 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modifiers 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * input event modifiers. 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void onKeyEvent(int eventId, int vKey, long when, int modifiers) { 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Post the ActionEvent or ItemEvent, depending on type of the menu item. 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param index 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the index. 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the item rect. 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * void fireItemAction(int item, long when, int modifiers) { MenuItem mi = 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getItem(item); mi.itemSelected(when, modifiers); } MenuItem getItem(int 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * index) { // to be overridden return null; } int getItemCount() { return 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 0; } 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return The sub-menu of currently selecetd item, or null if such a 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * sub-menu is not available. 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Menu getSelectedSubmenu() { if (selectedItemIndex < 0) { return null; } 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuItem item = getItem(selectedItemIndex); return (item instanceof Menu) 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * ? (Menu) item : null; } 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Convenience method for selectItem(index, true). 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * void selectItem(int index) { selectItem(index, true); } 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Change the selection in the menu. 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param index 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * new selecetd item's index. 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param showSubMenu 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if new selected item has a sub-menu, should that sub-menu be 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * displayed. 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * void selectItem(int index, boolean showSubMenu) { if (selectedItemIndex 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * == index) { return; } if (selectedItemIndex >= 0 && 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getItem(selectedItemIndex) instanceof Menu) { ((Menu) 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getItem(selectedItemIndex)).hide(); } MultiRectArea clip = 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getUpdateClip(index, selectedItemIndex); selectedItemIndex = index; 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Graphics gr = getGraphics(clip); if (gr != null) { paint(gr); } if 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (showSubMenu) { showSubMenu(selectedItemIndex); } } 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Change the selected item to the next one in the requested direction 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * moving cyclically, skipping separators 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param forward 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the direction to move the selection. 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param showSubMenu 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if new selected item has a sub-menu, should that sub-menu be 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * displayed. 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * void selectNextItem(boolean forward, boolean showSubMenu) { int selected 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * = getSelectedItemIndex(); int count = getItemCount(); if (count == 0) { 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return; } if (selected < 0) { selected = (forward ? count - 1 : 0); } int 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * i = selected; do { i = (forward ? (i + 1) : (i + count - 1)) % count; i 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * %= count; MenuItem item = getItem(i); if (!"-".equals(item.getLabel())) { 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * //$NON-NLS-1$ selectItem(i, showSubMenu); return; } } while (i != 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * selected); } void showSubMenu(int index) { if ((index < 0) || 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * !isActive()) { return; } MenuItem item = getItem(index); if (item 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instanceof Menu) { Menu menu = ((Menu) getItem(index)); if 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (menu.getItemCount() == 0) { return; } Point location = 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * getSubmenuLocation(index); menu.show(location.x, location.y, false); } } 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the menu bar which is the root of current menu's hierarchy; or 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * null if the hierarchy root is not a menu bar. 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MenuBar getMenuBar() { if (parent instanceof MenuBar) { return (MenuBar) 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * parent; } if (parent instanceof MenuComponent) { return ((MenuComponent) 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * parent).getMenuBar(); } return null; } PopupBox getPopupBox() { return 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * null; } 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Rectangle getItemRect(int index) { 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Determine the clip region when menu selection is changed from index1 to 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * index2. 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param index1 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * old selected item. 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param index2 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * new selected item. 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the region to repaint. 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final MultiRectArea getUpdateClip(int index1, int index2) { 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MultiRectArea clip = new MultiRectArea(); 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (index1 >= 0) { 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project clip.add(getItemRect(index1)); 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (index2 >= 0) { 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project clip.add(getItemRect(index2)); 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return clip; 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the submenu location. 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param index 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the index. 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the submenu location. 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Point getSubmenuLocation(int index) { 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Point(0, 0); 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the selected item index. 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the selected item index. 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int getSelectedItemIndex() { 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return selectedItemIndex; 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Hide. 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void hide() { 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project selectedItemIndex = -1; 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (parent instanceof MenuComponent) { 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ((MenuComponent)parent).itemHidden(this); 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Item hidden. 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mc 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the mc. 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void itemHidden(MenuComponent mc) { 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Checks if is visible. 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if is visible. 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isVisible() { 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Checks if is active. 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if is active. 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isActive() { 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Hide all menu hierarchy. 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void endMenu() { 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT: toolkit.dispatcher.popupDispatcher.deactivateAll(); 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Handle the mouse click or Enter key event on a menu's item. 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param when 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event time. 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param modifiers 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * input event modifiers. 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void itemSelected(long when, int modifiers) { 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project endMenu(); 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Auto name. 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the string. 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String autoName() { 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String name = getClass().getName(); 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (name.indexOf("$") != -1) { //$NON-NLS-1$ 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT: int number = toolkit.autoNumber.nextMenuComponent++; 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int number = 0; 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project name = name.substring(name.lastIndexOf(".") + 1) + Integer.toString(number); //$NON-NLS-1$ 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return name; 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates the Graphics object for the pop-up box of this menu component. 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param clip 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the clip to set on this Graphics. 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the created Graphics object, or null if such object is not 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * available. 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Graphics getGraphics(MultiRectArea clip) { 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // to be overridden 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return accessible context specific for particular menu component. 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ???AWT 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * AccessibleContext createAccessibleContext() { return null; } 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 784