Skip to content

Commit 78ee834

Browse files
hansonrhansonr
authored andcommitted
adds AWT PopupMenu support
1 parent 8eb0480 commit 78ee834

File tree

9 files changed

+390
-32
lines changed

9 files changed

+390
-32
lines changed

sources/net.sf.j2s.java.core/src/java/awt/Component.java

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6875,31 +6875,34 @@ boolean isAutoFocusTransferOnDisposal() {
68756875
return autoFocusTransferOnDisposal;
68766876
}
68776877

6878-
// /**
6879-
// * Adds the specified popup menu to the component.
6880-
// * @param popup the popup menu to be added to the component.
6881-
// * @see #remove(MenuComponent)
6882-
// * @exception NullPointerException if {@code popup} is {@code null}
6883-
// * @since JDK1.1
6884-
// */
6885-
// public void add(PopupMenu popup) {
6886-
// synchronized (getTreeLock()) {
6887-
// if (popup.parent != null) {
6888-
// popup.parent.remove(popup);
6889-
// }
6890-
// if (popups == null) {
6891-
// popups = new Vector();
6892-
// }
6893-
// popups.addElement(popup);
6894-
// popup.parent = this;
6895-
//
6896-
// if (peer != null) {
6897-
// if (popup.peer == null) {
6898-
// popup.addNotify();
6899-
// }
6900-
// }
6901-
// }
6902-
// }
6878+
/**
6879+
* Adds the specified popup menu to the component.
6880+
*
6881+
* @param popup the popup menu to be added to the component.
6882+
* @see #remove(MenuComponent)
6883+
* @exception NullPointerException if {@code popup} is {@code null}
6884+
* @since JDK1.1
6885+
*/
6886+
public void add(PopupMenu popup) {
6887+
popup.setInvoker(this);
6888+
// synchronized (getTreeLock()) {
6889+
// if (popup.parent != null) {
6890+
// popup.parent.remove(popup);
6891+
// }
6892+
// if (popups == null) {
6893+
// popups = new Vector();
6894+
// }
6895+
// popups.addElement(popup);
6896+
// popup.setInvoker(this);
6897+
//// popup.parent = (JComponent) this;
6898+
//
6899+
// if (peer != null) {
6900+
// if (popup.peer == null) {
6901+
// popup.addNotify();
6902+
// }
6903+
// }
6904+
// }
6905+
}
69036906

69046907
// /**
69056908
// * Removes the specified popup menu from the component.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package java.awt;
2+
3+
public interface MenuComponent {
4+
5+
public void addFocusListener(java.awt.event.FocusListener l);
6+
7+
public boolean contains(Point p);
8+
9+
public void dispatchEvent(AWTEvent e);
10+
11+
public Color getBackground();
12+
13+
public Rectangle getBounds();
14+
15+
public Cursor getCursor();
16+
17+
public FontMetrics getFontMetrics(Font f);
18+
19+
public Color getForeground();
20+
21+
public java.util.Locale getLocale();
22+
23+
public Point getLocation();
24+
25+
public Point getLocationOnScreen();
26+
27+
public String getName();
28+
29+
// public MenuContainer getParent();
30+
31+
public Dimension getSize();
32+
33+
public boolean isEnabled();
34+
35+
public boolean isFocusTraversable();
36+
37+
public boolean isShowing();
38+
39+
public boolean isVisible();
40+
41+
public void removeFocusListener(java.awt.event.FocusListener l);
42+
43+
public void removeNotify();
44+
45+
public void requestFocus();
46+
47+
public void setBackground(Color c);
48+
49+
public void setBounds(Rectangle r);
50+
51+
public void setCursor(Cursor cursor);
52+
53+
public void setEnabled(boolean b);
54+
55+
public void setFont(Font f);
56+
57+
public void setForeground(Color c);
58+
59+
public void setLocation(Point p);
60+
61+
public void setName(String name);
62+
63+
public void setSize(Dimension d);
64+
65+
public void setVisible(boolean b);
66+
67+
// original MenuContainer
68+
Font getFont();
69+
70+
@Deprecated
71+
boolean postEvent(Event evt);
72+
73+
void remove(MenuComponent comp);
74+
75+
76+
77+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright (c) 1995, 2004, Oracle and/or its affiliates. All rights reserved.
3+
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
4+
*
5+
*
6+
*
7+
*
8+
*
9+
*
10+
*
11+
*
12+
*
13+
*
14+
*
15+
*
16+
*
17+
*
18+
*
19+
*
20+
*
21+
*
22+
*
23+
*
24+
*/
25+
package java.awt;
26+
27+
/**
28+
* The super class of all menu related containers.
29+
*
30+
* @author Arthur van Hoff
31+
*/
32+
33+
public interface MenuContainer {
34+
Font getFont();
35+
void remove(MenuComponent comp);
36+
37+
/**
38+
* @deprecated As of JDK version 1.1
39+
* replaced by dispatchEvent(AWTEvent).
40+
*/
41+
@Deprecated
42+
boolean postEvent(Event evt);
43+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package swingjs.a2s;
2+
3+
import javax.swing.JMenuItem;
4+
5+
public interface AWTMenu extends AWTMenuItem {
6+
7+
public boolean isTearOff();
8+
public int getItemCount();
9+
public int countItems();
10+
public java.awt.MenuItem getItem(int index);
11+
public java.awt.MenuItem add(java.awt.MenuItem mi);
12+
public JMenuItem add(String label); // was void
13+
public void insert(java.awt.MenuItem menuitem, int index);
14+
public void insert(String label, int index);
15+
public void addSeparator();
16+
public void insertSeparator(int index);
17+
public void remove(int index);
18+
public void removeAll();
19+
20+
21+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package swingjs.a2s;
2+
3+
import java.awt.MenuComponent;
4+
import java.awt.MenuShortcut;
5+
import java.awt.event.ActionListener;
6+
import java.util.EventListener;
7+
8+
public interface AWTMenuItem extends MenuComponent {
9+
10+
public void addNotify();
11+
public String getLabel();
12+
public void setLabel(String label);
13+
public void enable();
14+
public void enable(boolean b);
15+
public void disable();
16+
public MenuShortcut getShortcut();
17+
public void setShortcut(MenuShortcut s);
18+
public void deleteShortcut();
19+
public void setActionCommand(String command);
20+
public String getActionCommand();
21+
public void addActionListener(ActionListener l);
22+
public void removeActionListener(ActionListener l);
23+
public ActionListener[] getActionListeners();
24+
public <T extends EventListener> T[] getListeners(Class<T> listenerType);
25+
26+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package swingjs.a2s;
2+
3+
import java.awt.Component;
4+
import java.awt.Container;
5+
6+
public interface AWTPopupMenu extends AWTMenu {
7+
public Container getParent();
8+
public void show(Component origin, int x, int y);
9+
10+
}
Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,70 @@
11
package swingjs.a2s;
22

3+
import java.awt.MenuComponent;
4+
import java.awt.MenuShortcut;
5+
import java.awt.event.ActionEvent;
6+
import java.awt.event.KeyEvent;
7+
8+
import javax.swing.JComponent;
39
import javax.swing.JMenu;
10+
import javax.swing.JMenuItem;
11+
import javax.swing.KeyStroke;
412

5-
public class Menu extends JMenu {
13+
public class Menu extends JMenu implements AWTMenu {
614

715
public Menu(String title) {
8-
this(title, false);
16+
this(title, false);
917
}
1018

1119
public Menu() {
12-
this("", false);
13-
String s = null;
20+
this("", false);
1421
}
1522

1623
public Menu(String title, boolean isTearOff) {
1724
super(title);
1825
}
1926

27+
@Override
2028
public int countItems() {
2129
return super.getComponentCount();
2230
}
2331

32+
@Override
33+
public java.awt.MenuItem getItem(int index) {
34+
return (java.awt.MenuItem) getComponent(index);
35+
}
36+
37+
@Override
38+
public java.awt.MenuItem add(java.awt.MenuItem mi) {
39+
return (java.awt.MenuItem) this.add((JComponent) mi);
40+
}
41+
42+
@Override
43+
public void insert(java.awt.MenuItem menuitem, int index) {
44+
insert((JMenuItem) menuitem, index);
45+
}
46+
47+
@Override
48+
public void remove(MenuComponent comp) {
49+
remove((JComponent) comp);
50+
}
51+
52+
@Override
53+
public MenuShortcut getShortcut() {
54+
KeyStroke a = getAccelerator();
55+
return (a == null ? null : new MenuShortcut(a.getKeyCode(), (a.getModifiers() & KeyEvent.SHIFT_MASK) != 0));
56+
}
57+
58+
@Override
59+
public void setShortcut(MenuShortcut s) {
60+
setAccelerator(KeyStroke.getKeyStroke(s.getKey(),
61+
ActionEvent.CTRL_MASK | (s.usesShiftModifier() ? ActionEvent.SHIFT_MASK : 0)));
62+
}
63+
64+
@Override
65+
public void deleteShortcut() {
66+
setAccelerator(null);
67+
}
68+
69+
2470
}

sources/net.sf.j2s.java.core/src/swingjs/a2s/MenuItem.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package swingjs.a2s;
22

3+
import java.awt.MenuComponent;
34
import java.awt.MenuShortcut;
5+
import java.awt.event.ActionEvent;
6+
import java.awt.event.KeyEvent;
47

8+
import javax.swing.JComponent;
59
import javax.swing.JMenuItem;
10+
import javax.swing.KeyStroke;
611

7-
public class MenuItem extends JMenuItem {
12+
public class MenuItem extends JMenuItem implements AWTMenuItem {
813

914
public MenuItem() {
1015
super();
@@ -15,7 +20,30 @@ public MenuItem(String string) {
1520
}
1621

1722
public MenuItem(String label, MenuShortcut s) {
18-
super(label, s.getKey()); // skips s.usesShiftModifier();
23+
super(label);
24+
setShortcut(s);
25+
}
26+
27+
@Override
28+
public void remove(MenuComponent comp) {
29+
super.remove((JComponent) comp);
30+
}
31+
32+
@Override
33+
public MenuShortcut getShortcut() {
34+
KeyStroke a = getAccelerator();
35+
return (a == null ? null : new MenuShortcut(a.getKeyCode(), (a.getModifiers() & KeyEvent.SHIFT_MASK) != 0));
36+
}
37+
38+
@Override
39+
public void setShortcut(MenuShortcut s) {
40+
setAccelerator(KeyStroke.getKeyStroke(s.getKey(),
41+
ActionEvent.CTRL_MASK | (s.usesShiftModifier() ? ActionEvent.SHIFT_MASK : 0)));
42+
}
43+
44+
@Override
45+
public void deleteShortcut() {
46+
setAccelerator(null);
1947
}
2048

2149
}

0 commit comments

Comments
 (0)