package com.revolsys.swing.menu;
import java.awt.Component;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JMenuItem;
import com.revolsys.swing.action.AbstractAction;
import com.revolsys.swing.action.RunnableAction;
import com.revolsys.swing.action.enablecheck.EnableCheck;
import com.revolsys.swing.component.ComponentFactory;
import com.revolsys.util.Exceptions;
public class ActionMainMenuItemFactory implements ComponentFactory<JMenuItem> {
private final AbstractAction action;
private EnableCheck checkBoxSelectedCheck;
private String iconName;
public ActionMainMenuItemFactory(final AbstractAction action) {
this.action = action;
if (action instanceof RunnableAction) {
final RunnableAction runnableAction = (RunnableAction)action;
this.iconName = runnableAction.getIconName();
}
}
public ActionMainMenuItemFactory(final EnableCheck checkBoxSelectedCheck,
final AbstractAction action) {
this(action);
this.checkBoxSelectedCheck = checkBoxSelectedCheck;
}
@Override
public ActionMainMenuItemFactory clone() {
try {
return (ActionMainMenuItemFactory)super.clone();
} catch (final CloneNotSupportedException e) {
return Exceptions.throwUncheckedException(e);
}
}
@Override
public void close(final Component component) {
}
@Override
public final Icon getIcon() {
return (Icon)this.action.getValue(Action.SMALL_ICON);
}
@Override
public String getIconName() {
return this.iconName;
}
@Override
public String getName() {
return (String)this.action.getValue(Action.NAME);
}
@Override
public String getToolTip() {
return (String)this.action.getValue(Action.SHORT_DESCRIPTION);
}
@Override
public JMenuItem newComponent() {
if (this.checkBoxSelectedCheck == null) {
return this.action.newMenuItem();
} else {
final CheckBoxMenuItem menuItem = this.action.newCheckboxMenuItem();
menuItem.setSelectedCheck(this.checkBoxSelectedCheck);
return menuItem;
}
}
@Override
public String toString() {
return this.action.toString();
}
}