1 7 package com.sshtools.ui.swing; 8 9 import javax.swing.Action ; 10 import javax.swing.BorderFactory ; 11 import javax.swing.JButton ; 12 import javax.swing.JPopupMenu ; 13 import javax.swing.JToggleButton ; 14 import javax.swing.event.PopupMenuEvent ; 15 import javax.swing.event.PopupMenuListener ; 16 17 18 public class ToggledPopupMenu extends JPopupMenu { 19 20 private ToolBarToggleButton toggle; 21 private ToggledPopupAction action; 22 23 public ToggledPopupMenu(ToggledPopupAction action, String iconKey) { 24 super((String ) action.getValue(Action.NAME)); 25 this.action = action; 26 27 toggle = new ToolBarToggleButton(action, iconKey, false); 28 29 action.setPopup(this); 30 action.setToggle(toggle); 31 32 setLightWeightPopupEnabled(true); 33 addPopupMenuListener(new PopupMenuListener () { 34 35 public void popupMenuWillBecomeVisible(PopupMenuEvent e) { 36 if (!ToggledPopupMenu.this.toggle.isSelected()) { 37 ToggledPopupMenu.this.toggle.setSelected(true); 38 } 39 } 40 41 public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { 42 ToggledPopupMenu.this.toggle.setSelected(false); 43 44 } 45 46 public void popupMenuCanceled(PopupMenuEvent e) { 47 } 48 49 }); 50 } 51 52 public JButton addButtonAction(AppAction action) { 53 ActionButton item = new ActionButton(action, false, false); 54 item.setOpaque(false); 55 item.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); 56 add(item); 57 return item; 58 } 59 60 public ToggledPopupAction getAction() { 61 return action; 62 } 63 64 public JToggleButton getToggleButton() { 65 return toggle; 66 } 67 } | Popular Tags |