Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2009-2011, EzWare
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * Redistributions of source code must retain the above copyright notice,
  * this list of conditions and the following disclaimer.Redistributions
  * in binary form must reproduce the above copyright notice, this list of
  * conditions and the following disclaimer in the documentation and/or
  * other materials provided with the distribution.Neither the name of the
  * EzWare nor the names of its contributors may be used to endorse or
  * promote products derived from this software without specific prior
  * written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
  */
 
 package org.oxbow.swingbits.action;
 
 
 
 
 
 	protected <T> T createGroupMenuAdapter<T> menuCollection<Actionactions ) {
 		int item = 1; // has to be 1 to compare to size
 		int size = actions.size();
 		forAction aactions ) {
 			createActionmenuaitem++ == size );
 		}
 		return menu.get();
 	}
 
 	@SuppressWarnings("unchecked")
 	private <T> T createActionMenuAdapter<T> menuAction aboolean isLast ) {
 		
 		if ( a instanceof Collection ) {
 
 			if ( isCollapsed(a)) {
 				JMenu m = createGroupnew JMenuAdapter(new JMenu(a)), (Collection<Action>)a );
 				menu.add(m);
 			} else {
 				menu.addSeparator();
 				createGroupmenu, (Collection<Action>)a );
 				if ( !isLast ) menu.addSeparator();
 			}
 
 		} else {
 
 			if ( Actions.isSeparator(a)) {
 				if ( !isLast ) menu.addSeparator();
 			} else {
 				
 				if ( isCheckAction(a)) {
 				} else if ( isRadioAction(a)) {
 					menu.getButtonGroup().additem );
 				} else {
 					menu.add(new JMenuItem(a));
 				}
 			}
 
 		}
 
 		return menu.get();
 
 	}
 	
 	private Action prepareCheckActionAction a ) {
 		if ( a.getValue(.) == null ) {
		}
		return a;
	}
	private boolean isCheckActionAction a ) {
		return a.getClass().getAnnotation(CheckAction.class) != null;
	}
	private boolean isRadioActionAction a ) {
		return a.getClass().getAnnotation(RadioAction.class) != null;
	}
	private boolean isCollapsedAction a ) {
		return a instanceof ActionGroup && ((ActionGroup)a).isCollapsed();
	}
 /////// ADAPTERS ///////////////////////////////////////////////////////////////////////	
	abstract class MenuAdapter<T> {
		protected T target;
		private ButtonGroup bg;
		public MenuAdapter( T target ) {
			this. = target;
		}
		public T get() { return ;	}
		public void addSeparator() {}
			if ( == null) {
				 = new ButtonGroup();
			}
			return ;
		}
		public abstract JMenuItem addJMenuItem  menuItem );
	}
		public JMenuBarAdapterJMenuBar mb ) {
			supermb );
		}
		public JMenuItem add(JMenuItem menuItem) {
			Component c = .add(menuItem);
			if ( c instanceof JMenu ) {
				((JMenu)c).setIcon(null);
			}
			return menuItem;
		}
	}
		public JToolBarAdapterJToolBar tb ) {
			supertb );
		}
		public JMenuItem add(JMenuItem menuItem) {
			Action action = menuItem.getAction();
//			Action action = menuItem instanceof JMenu? new ActionDropDownMenu((ActionGroup) menuAction): menuAction;
			AbstractButton b = addactionmenuItem );
			b.putClientProperty("hideActionText"action.getValue(.) != null);
			return menuItem;
		}
		private AbstractButton addAction actionJMenuItem item ) {
			if ( item instanceof JCheckBoxMenuItem || item instanceof JRadioButtonMenuItem ) {
				return (AbstractButton.addnew JToggleButtonaction ));
else if ( item instanceof JMenu ) {
				return .addnew ActionDropDownMenu((ActionGroupaction) );
else {
				return .addaction );
			}
		}
	}
		public JPopupMenuAdapterJPopupMenu menu ) {
			supermenu );
		}
		public JMenuItem add(JMenuItem menuItem) {
			.add(menuItem);
			return menuItem;
		}
		public void addSeparator() {
			int count = .getComponentCount();
			boolean canAddSeparator = count != 0 &&
			if ( canAddSeparator ) .addSeparator();
		}
	}
	class JMenuAdapter extends MenuAdapter<JMenu> {
		public JMenuAdapterJMenu menu ) {
			super(menu);
		}
		public JMenuItem add(JMenuItem menuItem) {
			.add(menuItem);
			return menuItem;
		}
		public void addSeparator() {
			int count = .getMenuComponentCount();
			boolean canAddSeparator = count != 0 &&
			if ( canAddSeparator ) .addSeparator();
		}
	}
New to GrepCode? Check out our FAQ X