home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.motif;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Event;
- import java.awt.Menu;
- import java.awt.MenuItem;
- import java.awt.Point;
- import java.awt.PopupMenu;
- import java.awt.peer.PopupMenuPeer;
-
- public class MPopupMenuPeer extends MMenuPeer implements PopupMenuPeer {
- native void createMenu(MComponentPeer var1);
-
- void createPopupMenu() {
- if (super.target.getParent() instanceof Component) {
- Component var1 = (Component)super.target.getParent();
- MComponentPeer var2 = (MComponentPeer)MToolkit.targetToPeer(var1);
- if (var2 == null) {
- Container var3 = MToolkit.getNativeContainer(var1);
- var2 = (MComponentPeer)MToolkit.targetToPeer(var3);
- }
-
- this.createMenu(var2);
- super.nativeCreated = true;
- this.createItems((Menu)super.target);
- } else {
- throw new IllegalArgumentException("illegal popup menu container class");
- }
- }
-
- void createItems(Menu var1) {
- int var2 = var1.getItemCount();
- MMenuPeer var3 = (MMenuPeer)MToolkit.targetToPeer(var1);
-
- for(int var4 = 0; var4 < var2; ++var4) {
- MenuItem var5 = var1.getItem(var4);
- MMenuItemPeer var6 = (MMenuItemPeer)MToolkit.targetToPeer(var5);
- var6.create(var3);
- if (var5 instanceof Menu) {
- this.createItems((Menu)var5);
- }
- }
-
- }
-
- public MPopupMenuPeer(PopupMenu var1) {
- super.target = var1;
- }
-
- native void pShow(Event var1, int var2, int var3, MComponentPeer var4);
-
- public void show(Event var1) {
- this.createPopupMenu();
- Component var2 = (Component)var1.target;
- MComponentPeer var3 = (MComponentPeer)MToolkit.targetToPeer(var2);
- int var4 = var1.x;
- int var5 = var1.y;
- if (var3 == null) {
- Container var6 = MToolkit.getNativeContainer(var2);
- var3 = (MComponentPeer)MToolkit.targetToPeer(var6);
-
- for(Object var7 = var2; var7 != var6; var7 = ((Component)var7).getParent()) {
- Point var8 = ((Component)var7).getLocation();
- var4 += var8.x;
- var5 += var8.y;
- }
- }
-
- this.pShow(var1, var4, var5, var3);
- }
-
- private void disposeItems(Menu var1) {
- int var2 = var1.getItemCount();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- MenuItem var4 = var1.getItem(var3);
- if (var4 instanceof Menu) {
- this.disposeItems((Menu)var4);
- }
-
- MMenuItemPeer var5 = (MMenuItemPeer)MToolkit.targetToPeer(var1.getItem(var3));
- var5.dispose();
- }
-
- }
-
- public void dispose() {
- if (super.nativeCreated) {
- PopupMenu var1 = (PopupMenu)super.target;
- this.disposeItems(var1);
- this.pDispose();
- super.nativeCreated = false;
- }
- }
-
- native void pDispose();
- }
-