blob: c1b3c79f076263f46180b75bc260fb1ee2a1f988 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2002, 2006 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
****************************************************************************/
package org.eclipse.gmf.runtime.diagram.ui.actions.internal;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds;
import org.eclipse.gmf.runtime.diagram.ui.actions.CheckedPropertyAction;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.l10n.DiagramUIActionsMessages;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.l10n.DiagramUIActionsPluginImages;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart;
import org.eclipse.gmf.runtime.diagram.ui.internal.l10n.DiagramUIPluginImages;
import org.eclipse.gmf.runtime.diagram.ui.internal.properties.Properties;
import org.eclipse.gmf.runtime.notation.Routing;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IWorkbenchPage;
/**
* Connection router action
*
* @author melaasar
*/
public class RouterAction extends CheckedPropertyAction {
/**
* @param workbenchPage
* @param routerType
*/
protected RouterAction(IWorkbenchPage workbenchPage, Routing routerType) {
super(
workbenchPage,
Properties.ID_ROUTING,
DiagramUIActionsMessages.ChangeRouterAction_ChangePropertyValueRequest_label,
routerType);
}
/**
* Creates the rectilinear router action
*
* @param workbenchPage
* @return
*/
public static RouterAction createRectilinearRouterAction(IWorkbenchPage workbenchPage) {
RouterAction action =
new RouterAction(workbenchPage, Routing.RECTILINEAR_LITERAL);
action.setId(ActionIds.ACTION_ROUTER_RECTILINEAR);
action
.setText(DiagramUIActionsMessages.ChangeRouterAction_Rectilinear_ActionLabelText);
action
.setToolTipText(DiagramUIActionsMessages.ChangeRouterAction_Rectilinear_ActionToolTipText);
action
.setImageDescriptor(DiagramUIActionsPluginImages.DESC_CHANGEROUTERACTION_RECTILINEAR);
action
.setDisabledImageDescriptor(DiagramUIActionsPluginImages.DESC_CHANGEROUTERACTION_RECTILINEAR_DISABLED);
action
.setHoverImageDescriptor(DiagramUIActionsPluginImages.DESC_CHANGEROUTERACTION_RECTILINEAR);
return action;
}
/**
* Creates the rectilinear router action
*
* @param workbenchPage
* @return
*/
public static RouterAction createObliqueRouterAction(IWorkbenchPage workbenchPage) {
RouterAction action =
new RouterAction(workbenchPage, Routing.MANUAL_LITERAL);
action.setId(ActionIds.ACTION_ROUTER_OBLIQUE);
action.setText(DiagramUIActionsMessages.ChangeRouterAction_Oblique_ActionLabelText);
action.setToolTipText(DiagramUIActionsMessages.ChangeRouterAction_Oblique_ActionToolTipText);
ImageDescriptor enabledImage = DiagramUIPluginImages.DESC_CHANGEROUTERACTION_OBLIQUE;
action.setImageDescriptor(enabledImage);
action
.setDisabledImageDescriptor(DiagramUIPluginImages.DESC_CHANGEROUTERACTION_OBLIQUE_DISABLED);
action.setHoverImageDescriptor(enabledImage);
return action;
}
/**
* Creates the tree router action
*
* @param workbenchPage
* @return
*/
public static RouterAction createTreeRouterAction(IWorkbenchPage workbenchPage) {
RouterAction action =
new RouterAction(workbenchPage, Routing.TREE_LITERAL);
action.setId(ActionIds.ACTION_ROUTER_TREE);
action.setText(DiagramUIActionsMessages.ChangeRouterAction_Tree_ActionLabelText);
action.setToolTipText(DiagramUIActionsMessages.ChangeRouterAction_Tree_ActionToolTipText);
ImageDescriptor enabledImage = DiagramUIPluginImages.DESC_CHANGEROUTERACTION_TREE;
action.setImageDescriptor(enabledImage);
action
.setDisabledImageDescriptor(DiagramUIPluginImages.DESC_CHANGEROUTERACTION_TREE_DISABLED);
action.setHoverImageDescriptor(enabledImage);
return action;
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#calculateEnabled()
*/
protected boolean calculateEnabled() {
if (getId() == ActionIds.ACTION_ROUTER_TREE) {
List selected = getSelectedObjects();
if (selected.size() < 2)
return false;
ListIterator li = selected.listIterator();
while (li.hasNext()) {
if (!(li.next() instanceof ITreeBranchEditPart))
return false;
}
}
return super.calculateEnabled();
}
/*
* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#createOperationSet()
*/
protected List createOperationSet() {
List operationSet = super.createOperationSet();
List connectionSet = new ArrayList();
ListIterator iter = operationSet.listIterator();
while (iter.hasNext()) {
Object obj = iter.next();
if (obj instanceof ConnectionEditPart) {
connectionSet.add(obj);
}
}
return connectionSet;
}
}