001: /*
002: * @(#)QtMenuBarPeer.java 1.11 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027: package sun.awt.qt;
028:
029: import sun.awt.peer.*;
030: import java.awt.*;
031:
032: /**
033: *
034: *
035: * @author Nicholas Allen
036: */
037:
038: class QtMenuBarPeer implements MenuBarPeer, QtMenuContainer {
039: private static native void initIDs();
040:
041: static {
042: initIDs();
043: }
044:
045: /** Creates a new QtMenuBarPeer. */
046:
047: public QtMenuBarPeer(MenuBar target) {
048: this .target = target;
049: create();
050: Font f = target.getFont();
051: if (f != null) {
052: setFont(f);
053: }
054: }
055:
056: public QtMenuBarPeer getMenuBar() {
057: return this ;
058: }
059:
060: protected native void create();
061:
062: public native void dispose();
063:
064: // 4678754
065: public void add(QtMenuItemPeer item) {
066: // This method is called as a side-effect of creating the
067: // peer (See QtMenuItemPeer). The code that computes if the item
068: // passed is a helpmenu will only be correct if this was called
069: // in the context of QtMenuBarPeer creation.
070: //
071: // When this is called after this peer creation, we cannot
072: // determine correctly if the "item" is a help menu, since the
073: // marking of the menu is done after this is called. The good
074: // news is that we will get notified in "addHelpMenu()" if the
075: // item was really a helpmenu.
076: //
077: // The bottom line is, if isHelpMenu is true it is always correct,
078: // and we let the native layer know that information. If it is
079: // false, then AWT code would call "addHelpMenu()", if the item
080: // passed was supposed to be a helpmenu item. In a nutshell we
081: // always do the following actions in either case
082: // - addNative(menuPeer) ;
083: // - if ( menuPeer is an helpMenu )
084: // setAsHelpMenu(menuPeer)
085: boolean isHelpMenu = (((MenuBar) this .target).getHelpMenu() == item.target);
086:
087: addNative(item);
088: if (isHelpMenu) {
089: // set the menupeer as the help menu
090: setAsHelpMenu((QtMenuPeer) item);
091: }
092: }
093:
094: native void addNative(QtMenuItemPeer item);
095:
096: native void setAsHelpMenu(QtMenuPeer menuPeer);
097:
098: // 4678754
099:
100: /** This method does not need to do anything because the menuitem peer will add itself to a
101: QtMenuContainer when it is created. */
102:
103: public void addMenu(Menu m) {
104: }
105:
106: public void delMenu(int index) {
107: }
108:
109: // 4678754
110: public void addHelpMenu(Menu m) {
111: // note : this method is called after addNative() has been called
112: // on "m" (See MenuBar.setHelpMenu() for details)
113: setAsHelpMenu((QtMenuPeer) QtToolkit.getMenuComponentPeer(m));
114: }
115:
116: // 4678754
117:
118: public native void setFont(Font f);
119:
120: private MenuBar target;
121: private int data;
122: }
|