blob: 755f1ce4e0e2801e7e31da82fe774557a52a66dd [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2007, 2009 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.Collections;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.Request;
import org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.l10n.DiagramUIActionsMessages;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart;
import org.eclipse.gmf.runtime.diagram.ui.requests.SelectConnectionEndRequest;
import org.eclipse.ui.IWorkbenchPage;
/**
* @author mmostafa
*
* Action to select one of the connection's ends
*
*/
public class SelectConnectionEndAction extends DiagramAction{
private boolean isSource = false;
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#createTargetRequest()
*/
protected Request createTargetRequest() {
return new SelectConnectionEndRequest(isSource);
}
/**
* creats a select connection source action
* @param workbenchPage
* @return action that will select the connection source
*/
static SelectConnectionEndAction createSelectConnectionSourceAction(IWorkbenchPage workbenchPage){
return new SelectConnectionEndAction(workbenchPage,true);
}
/**
* creats a select connection target action
* @param workbenchPage
* @return action that will select the connection target
*/
static SelectConnectionEndAction createSelectConnectionTargetAction(IWorkbenchPage workbenchPage){
return new SelectConnectionEndAction(workbenchPage,false);
}
/**
* constructor
* @param workbenchPage
* @param true means select connection source, false means select connection end
*/
public SelectConnectionEndAction(IWorkbenchPage workbenchPage, boolean source) {
super(workbenchPage);
isSource = source;
if (isSource){
setText(DiagramUIActionsMessages.SelectConnectionEndAction_SelectSource_ActionLabelText);
setText(DiagramUIActionsMessages.SelectConnectionEndAction_SelectSource_ActionToolTipText);
}else {
setText(DiagramUIActionsMessages.SelectConnectionEndAction_SelectTarget_ActionLabelText);
setText(DiagramUIActionsMessages.SelectConnectionEndAction_SelectTarget_ActionToolTipText);
}
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#isSelectionListener()
*/
protected boolean isSelectionListener() {
return false;
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#calculateEnabled()
*/
protected boolean calculateEnabled() {
List operationSet = getOperationSet();
if (operationSet.size()!=1)
return false;
return true;
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#doRun(org.eclipse.core.runtime.IProgressMonitor)
*/
protected void doRun(IProgressMonitor progressMonitor) {
List operationSet = getOperationSet();
if (operationSet.isEmpty())
return;
ConnectionEditPart connectionEditPart =
(ConnectionEditPart)operationSet.get(0);
EditPart editPartToSelect = null;
if (isSource){
editPartToSelect = connectionEditPart.getSource();
}
else {
editPartToSelect = connectionEditPart.getTarget();
}
editPartToSelect.getViewer().reveal(editPartToSelect);
editPartToSelect.getViewer().select(editPartToSelect);
}
/* (non-Javadoc)
* @see org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction#getTargetEditParts(org.eclipse.gef.EditPart)
*/
protected List getTargetEditParts(EditPart editpart) {
return Collections.singletonList(editpart);
}
}