1 /* 2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.swing.plaf.basic; 27 28 import javax.swing.*; 29 import java.awt.*; 30 import java.awt.event.*; 31 import javax.swing.plaf.*; 32 import javax.swing.border.*; 33 34 /** 35 * BasicRadioButtonMenuItem implementation 36 * 37 * @author Georges Saab 38 * @author David Karlton 39 */ 40 public class BasicRadioButtonMenuItemUI extends BasicMenuItemUI 41 { 42 /** 43 * Returns a new instance of {@code BasicRadioButtonMenuItemUI}. 44 * 45 * @param b a component 46 * @return a new instance of {@code BasicRadioButtonMenuItemUI} 47 */ 48 public static ComponentUI createUI(JComponent b) { 49 return new BasicRadioButtonMenuItemUI(); 50 } 51 52 protected String getPropertyPrefix() { 53 return "RadioButtonMenuItem"; 54 } 55 56 /** 57 * Invoked when mouse event occurs. 58 * 59 * @param item a menu item 60 * @param e a mouse event 61 * @param path an array of {@code MenuElement} 62 * @param manager an instance of {@code MenuSelectionManager} 63 */ 64 public void processMouseEvent(JMenuItem item,MouseEvent e,MenuElement path[],MenuSelectionManager manager) { 65 Point p = e.getPoint(); 66 if(p.x >= 0 && p.x < item.getWidth() && 67 p.y >= 0 && p.y < item.getHeight()) { 68 if(e.getID() == MouseEvent.MOUSE_RELEASED) { 69 manager.clearSelectedPath(); 70 item.doClick(0); 71 item.setArmed(false); 72 } else 73 manager.setSelectedPath(path); 74 } else if(item.getModel().isArmed()) { 75 MenuElement newPath[] = new MenuElement[path.length-1]; 76 int i,c; 77 for(i=0,c=path.length-1;i<c;i++) 78 newPath[i] = path[i]; 79 manager.setSelectedPath(newPath); 80 } 81 } 82 }