/* * This is part of Geomajas, a GIS framework, http://www.geomajas.org/. * * Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium. * * The program is available in open source according to the GNU Affero * General Public License. All contributions in this program are covered * by the Geomajas Contributors License Agreement. For full licensing * details, see LICENSE.txt in the project root. */ package org.geomajas.gwt.client.action; import org.geomajas.annotation.Api; import org.geomajas.gwt.client.action.event.ToolbarActionDisabledEvent; import org.geomajas.gwt.client.action.event.ToolbarActionEnabledEvent; import org.geomajas.gwt.client.action.event.ToolbarActionHandler; import org.geomajas.gwt.client.action.toolbar.parameter.ButtonLayoutStyle; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerRegistration; /** * Base tool bar action, defines the common bits between {@link ToolbarAction} and {@link ToolbarModalAction}. * * @author Joachim Van der Auwera * @since 1.6.0 */ @Api(allMethods = true) // @extract-start ToolbarBaseAction, ToolbarBaseAction public abstract class ToolbarBaseAction { private String icon; // Link to the image icon that should represent the action's button in the tool bar. private String tooltip; // Text that appears when hovering over the tool bar button. private String title; // Text that appears in the button under (or to the right of) the icon. private String buttonLayout; // Determines to gui of the RibbonButton. /** Is the button for this action disabled or not? */ private boolean disabled; private HandlerManager handlerManager; private ButtonLayoutStyle buttonLayoutStyle; /** * Constructor. * * @param icon icon * @param tooltip tooltip */ public ToolbarBaseAction(String icon, String tooltip) { this(icon, tooltip, tooltip); } /** * Constructor for ToolbarBaseAction. * * @param icon icon * @param title title * @param tooltip tool tip * @since 1.10.0 */ public ToolbarBaseAction(String icon, String title, String tooltip) { this.icon = icon; this.title = title; this.tooltip = tooltip; handlerManager = new HandlerManager(this); } /** * Add toolbar action handler. * * @param handler action handler * @return handler registration */ public HandlerRegistration addToolbarActionHandler(ToolbarActionHandler handler) { return handlerManager.addHandler(ToolbarActionHandler.TYPE, handler); } /** * Link to the image icon that should represent the action's button in the tool bar. * * @return icon link */ public String getIcon() { return icon; } /** * Link to the image icon that should represent the action's button in the tool bar. * * @param icon * The new icon value * */ public void setIcon(String icon) { this.icon = icon; } /** * Text that appears when hovering over the tool bar button. * * @return tool tip */ public String getTooltip() { return tooltip; } /** * Text that appears when hovering over the tool bar button. * * @param tooltip * The new tooltip value */ public void setTooltip(String tooltip) { this.tooltip = tooltip; } /** * Is the button for this action disabled or not? * * @return true when disabled */ public boolean isDisabled() { return disabled; } /** * Is the button for this action disabled or not? * * @param disabled * The new value */ public void setDisabled(boolean disabled) { this.disabled = disabled; if (disabled) { handlerManager.fireEvent(new ToolbarActionDisabledEvent()); } else { handlerManager.fireEvent(new ToolbarActionEnabledEvent()); } } /** * Text that appears in the button under (or to the right of) the icon. * * @return title * @since 1.10.0 */ public String getTitle() { return title; } /** * Text that appears in the button under (or to the right of) the icon. * * @param title * The new value * @since 1.10.0 */ public void setTitle(String title) { this.title = title; } /** * Get the button layout which determines the gui in a RibbonColumn. * * @return The button layout which determines the gui. * @since 1.10.0 * @deprecated Replaced by {@link #getButtonLayoutStyle()} */ @Deprecated public String getButtonLayout() { return buttonLayout; } /** * <p>Set the button layout which determines the gui in a RibbonColumn.<p> * * @param buttonLayout * The button layout which determines the gui. * @since 1.10.0 * @deprecated Replaced by {@link #setButtonLayoutStyle(ButtonLayoutStyle)} */ @Deprecated public void setButtonLayout(String buttonLayout) { this.buttonLayout = buttonLayout; } /** * Get the button layout which determines the gui in a RibbonColumn. * * @return The {@link ButtonLayoutStyle} which determines the gui. * @since 1.11.0 */ public ButtonLayoutStyle getButtonLayoutStyle() { return buttonLayoutStyle; } /** * Get the button layout which determines the gui in a RibbonColumn. * * @param buttonLayoutStyle The {@link ButtonLayoutStyle} which determines the gui. * @since 1.11.0 */ public void setButtonLayoutStyle(ButtonLayoutStyle buttonLayoutStyle) { this.buttonLayoutStyle = buttonLayoutStyle; } } // @extract-end