1:
37:
38: package ;
39:
40: import ;
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46:
47: public class QtMenuPeer extends QtMenuComponentPeer implements MenuPeer
48: {
49: Vector items;
50: boolean itemsAdded;
51:
52: public QtMenuPeer( QtToolkit kit, Menu owner )
53: {
54: super( kit, owner );
55: itemsAdded = false;
56: }
57:
58: protected native void init();
59:
60: protected void setup()
61: {
62: items = new Vector();
63: setLabel( ((Menu)owner).getLabel() );
64: if( ((Menu)owner).isTearOff() )
65: allowTearOff();
66: }
67:
68:
69:
70: void addItems()
71: {
72: if(!itemsAdded)
73: {
74: Menu o = (Menu)owner;
75: for( int i=0; i < o.getItemCount(); i++ )
76: {
77: MenuItem ci = o.getItem(i);
78: if (ci instanceof Menu && ci.getPeer() != null)
79: ((QtMenuPeer)ci.getPeer()).addItems();
80: addItem( ci );
81: }
82: itemsAdded = true;
83: }
84: }
85:
86: private void fireClick()
87: {
88: ActionEvent e = new ActionEvent(owner,
89: ActionEvent.ACTION_PERFORMED,
90: ((Menu)owner).getActionCommand());
91: QtToolkit.eventQueue.postEvent(e);
92: }
93:
94: private native void allowTearOff();
95:
96: private native void insertSeperator();
97:
98: private native void insertItem(QtMenuItemPeer p);
99:
100: private native void insertMenu(QtMenuPeer menu);
101:
102: private native void delItem(long ptr);
103:
104: private void add(long ptr)
105: {
106: items.add(new Long(ptr));
107: }
108:
109:
110:
111: public void addItem( MenuItem item )
112: {
113: if( item instanceof Menu || item instanceof PopupMenu)
114: insertMenu((QtMenuPeer)item.getPeer());
115: else
116: {
117: QtMenuItemPeer p = (QtMenuItemPeer)item.getPeer();
118: insertItem(p);
119: }
120: }
121:
122: public void addSeparator()
123: {
124: insertSeperator();
125: }
126:
127: public void delItem( int index )
128: {
129: long ptr = ((Long)items.elementAt(index)).longValue();
130: delItem(ptr);
131: items.removeElementAt(index);
132: }
133:
134:
135:
136: public void disable()
137: {
138: setEnabled(false);
139: }
140:
141: public void enable()
142: {
143: setEnabled(true);
144: }
145:
146: public native void setEnabled(boolean enabled);
147:
148: public native void setLabel(String text);
149: }