home *** CD-ROM | disk | FTP | other *** search
Java Source | 1998-06-30 | 3.9 KB | 129 lines |
- /*
- * @(#)MotifMenuItemUI.java 1.36 98/02/02
- *
- * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the confidential and proprietary information of Sun
- * Microsystems, Inc. ("Confidential Information"). You shall not
- * disclose such Confidential Information and shall use it only in
- * accordance with the terms of the license agreement you entered into
- * with Sun.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
- * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
- * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
- * THIS SOFTWARE OR ITS DERIVATIVES.
- *
- */
-
- package com.sun.java.swing.plaf.motif;
-
-
- import com.sun.java.swing.*;
- import com.sun.java.swing.event.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.Serializable;
-
- import com.sun.java.swing.plaf.*;
- import com.sun.java.swing.plaf.basic.BasicMenuItemUI;
- import com.sun.java.swing.plaf.basic.BasicGraphicsUtils;
-
-
- /**
- * MotifMenuItem implementation
- * <p>
- * Warning: serialized objects of this class will not be compatible with
- * future swing releases. The current serialization support is appropriate
- * for short term storage or RMI between Swing1.0 applications. It will
- * not be possible to load serialized Swing1.0 objects with future releases
- * of Swing. The JDK1.2 release of Swing will be the compatibility
- * baseline for the serialized form of Swing objects.
- *
- * @author Rich Schiavi
- * @author Georges Saab
- */
- public class MotifMenuItemUI extends BasicMenuItemUI
- {
- protected ChangeListener changeListener;
-
- public static ComponentUI createUI(JComponent c)
- {
- return new MotifMenuItemUI();
- }
-
- protected void initListeners(JComponent c) {
- super.initListeners(c);
- changeListener = createChangeListener(c);
- }
-
- protected void addListeners(JComponent c) {
- super.addListeners(c);
- ((JMenuItem)c).addChangeListener(changeListener);
- }
-
- protected void removeListeners(JComponent c) {
- super.removeListeners(c);
- ((JMenuItem)c).removeChangeListener(changeListener);
- }
-
- protected ChangeListener createChangeListener(JComponent c) {
- return new MenuChangeListener();
- }
-
- public Dimension getPreferredSize(JComponent c) {
- return BasicGraphicsUtils.getPreferredMenuItemSize(c,
- checkIcon, menuArrow, defaultTextIconGap);
- }
-
- public void paint(Graphics g, JComponent c) {
- MotifGraphicsUtils.paintMenuItem(g, c, checkIcon,menuArrow,
- pressedBackground, pressedForeground,
- defaultTextIconGap);
- }
-
-
- public void processMouseEvent(JMenuItem item,MouseEvent e,MenuElement path[],MenuSelectionManager manager) {
- Point p = e.getPoint();
- if(p.x >= 0 && p.x < item.getWidth() &&
- p.y >= 0 && p.y < item.getHeight()) {
- if(e.getID() == MouseEvent.MOUSE_RELEASED) {
- manager.clearSelectedPath();
- item.doClick(0);
- item.setArmed(false);
- } else if(e.getID() == MouseEvent.MOUSE_DRAGGED || e.getID() == MouseEvent.MOUSE_PRESSED)
- manager.setSelectedPath(path);
- } else if(e.getID() == MouseEvent.MOUSE_RELEASED) {
- manager.clearSelectedPath();
- } else if(item.getModel().isArmed() && e.getID() == MouseEvent.MOUSE_DRAGGED) {
- MenuElement newPath[] = new MenuElement[path.length-1];
- int i,c;
- for(i=0,c=path.length-1;i<c;i++)
- newPath[i] = path[i];
- manager.setSelectedPath(newPath);
- }
- }
-
- protected class MenuChangeListener implements ChangeListener, Serializable {
-
- public void stateChanged(ChangeEvent e) {
- JMenuItem c = (JMenuItem)e.getSource();
- if (c.isArmed() || c.isSelected()) {
- c.setBorderPainted(true);
- } else {
- c.setBorderPainted(false);
- }
- }
- }
-
- }
-
-
-
-
-
-
-
-