| /******************************************************************************* |
| * Copyright (c) 2010 BSI Business Systems Integration AG. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * BSI Business Systems Integration AG - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.scout.sdk.ui.action; |
| |
| import org.eclipse.core.commands.ExecutionEvent; |
| import org.eclipse.core.commands.ExecutionException; |
| import org.eclipse.core.commands.IHandler2; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.scout.sdk.ui.view.outline.pages.IPage; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.menus.CommandContributionItemParameter; |
| |
| /** |
| * Represents a scout menu contribution |
| */ |
| public interface IScoutHandler extends IHandler2 { |
| |
| /** |
| * <h3>{@link Category}</h3> Enum for the supported context menu categories. The grouping of the menus is according to |
| * the category. |
| * |
| * @author Matthias Villiger |
| * @since 3.10.0 18.09.2013 |
| */ |
| enum Category { |
| OPEN("org.eclipse.scout.sdk.ui.menu.category.new", 5), |
| NEW("org.eclipse.scout.sdk.ui.menu.category.new", 10), |
| RENAME("org.eclipse.scout.sdk.ui.menu.category.rename", 20), |
| UDPATE("org.eclipse.scout.sdk.ui.menu.category.update", 30), |
| MOVE("org.eclipse.scout.sdk.ui.menu.category.move", 40), |
| TEMPLATE("org.eclipse.scout.sdk.ui.menu.category.template", 50), |
| IMPORT("org.eclipse.scout.sdk.ui.menu.category.import", 900), |
| DELETE("org.eclipse.scout.sdk.ui.menu.category.delete", 1000), |
| WS("org.eclipse.scout.sdk.ui.menu.category.ws", 2000), |
| SPEC("org.eclipse.scout.sdk.ui.menu.category.spec", 3000), |
| WICKET("org.eclipse.scout.sdk.ui.menu.category.wicket", 4000), |
| OTHER("org.eclipse.scout.sdk.ui.menu.category.other", 10000); |
| |
| private String m_id; |
| private int m_order; |
| |
| private Category(String id, int order) { |
| m_id = id; |
| m_order = order; |
| } |
| |
| public int getOrder() { |
| return m_order; |
| } |
| |
| public String getId() { |
| return m_id; |
| } |
| } |
| |
| /** |
| * is evaluated after the menu has been prepared by the contributor. |
| * |
| * @return true if the menu should be visible. false otherwise. |
| */ |
| boolean isVisible(); |
| |
| /** |
| * is evaluated after the menu has been prepared by the contributor. |
| * |
| * @return true if the menu should be enabled. false otherwise. |
| */ |
| boolean isActive(); |
| |
| /** |
| * @return the text shown on the context menu |
| */ |
| String getLabel(); |
| |
| /** |
| * @param label |
| * the text shown on the context menu. |
| */ |
| void setLabel(String label); |
| |
| /** |
| * Currently not supported. |
| * |
| * @see {@link CommandContributionItemParameter#tooltip} |
| * @param toolTip |
| */ |
| void setToolTip(String toolTip); |
| |
| /** |
| * Currently not supported. |
| * |
| * @see {@link CommandContributionItemParameter#tooltip} |
| * @param toolTip |
| */ |
| String getToolTip(); |
| |
| /** |
| * @return the icon of the context menu. |
| */ |
| ImageDescriptor getImage(); |
| |
| /** |
| * @param imageName |
| * the icon of the context menu |
| */ |
| void setImage(ImageDescriptor imageName); |
| |
| /** |
| * @return the key stroke used for the context menu |
| */ |
| String getKeyStroke(); |
| |
| /** |
| * @param keyStroke |
| * the key stroke used for the context menu |
| */ |
| void setKeyStroke(String keyStroke); |
| |
| /** |
| * multi selection evaluation is done before the page has been prepared by the contributor. |
| * |
| * @return true if the context menu supports multi selection. If true, the context menu will also be shown, when |
| * multiple pages supporting a context menu are selected. |
| */ |
| boolean isMultiSelectSupported(); |
| |
| /** |
| * sets if the context menu supports multi selection |
| * |
| * @param multiSelectSupported |
| */ |
| void setMultiSelectSupported(boolean multiSelectSupported); |
| |
| /** |
| * @return the category of the context menu. |
| * @see Category |
| */ |
| Category getCategory(); |
| |
| /** |
| * @param category |
| * The category of the context menu. |
| * @see Category |
| */ |
| void setCategory(Category category); |
| |
| /** |
| * @return the id of the context menu. must be unique over all context menus. |
| */ |
| String getId(); |
| |
| /** |
| * called when the context menu is invoked by the user. |
| * |
| * @param shell |
| * the shell in which the menu exists. |
| * @param selection |
| * the pages selected while invoking the menu. |
| * @param event |
| * @return |
| * @throws ExecutionException |
| */ |
| Object execute(Shell shell, IPage[] selection, ExecutionEvent event) throws ExecutionException; |
| } |