/*****************************************************************************
* Copyright (c) 2009 Atos Origin.
*
*
* 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:
* Atos Origin - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.uml.diagram.sequence.part;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.SharedCursors;
import org.eclipse.gef.Tool;
import org.eclipse.gef.requests.SimpleFactory;
import org.eclipse.gef.tools.ConnectionCreationTool;
import org.eclipse.gmf.runtime.diagram.ui.internal.l10n.DiagramUIPluginImages;
import org.eclipse.gmf.runtime.diagram.ui.services.palette.PaletteFactory;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
import org.eclipse.papyrus.uml.diagram.common.service.AspectUnspecifiedTypeConnectionTool;
import org.eclipse.papyrus.uml.diagram.common.service.AspectUnspecifiedTypeCreationTool;
import org.eclipse.papyrus.uml.diagram.sequence.edit.policies.ObservationLinkPolicy.ObservationLink;
import org.eclipse.papyrus.uml.diagram.sequence.providers.UMLElementTypes;
import org.eclipse.papyrus.uml.diagram.sequence.service.DurationCreationTool;
import org.eclipse.papyrus.uml.diagram.sequence.util.SequenceUtil;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.widgets.Display;
/**
* @generated
*/
public class UMLPaletteFactory extends PaletteFactory.Adapter {
/**
* @generated
*/
private final static String CREATELIFELINE1CREATIONTOOL = "createLifeline1CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEACTIONEXECUTIONSPECIFICATION2CREATIONTOOL = "createActionExecutionSpecification2CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEBEHAVIOREXECUTIONSPECIFICATION3CREATIONTOOL = "createBehaviorExecutionSpecification3CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEINTERACTIONUSE4CREATIONTOOL = "createInteractionUse4CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATECOMBINEDFRAGMENT5CREATIONTOOL = "createCombinedFragment5CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEINTERACTIONOPERAND6CREATIONTOOL = "createInteractionOperand6CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATECONTINUATION7CREATIONTOOL = "createContinuation7CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATESTATEINVARIANT8CREATIONTOOL = "createStateInvariant8CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATECOMMENT9CREATIONTOOL = "createComment9CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATECONSTRAINT10CREATIONTOOL = "createConstraint10CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATECOREGION11CREATIONTOOL = "createCoRegion11CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEDURATIONOBSERVATION12CREATIONTOOL = "createDurationObservation12CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATETIMECONSTRAINT13CREATIONTOOL = "createTimeConstraint13CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATETIMEOBSERVATION14CREATIONTOOL = "createTimeObservation14CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEDURATIONCONSTRAINT15CREATIONTOOL = "createDurationConstraint15CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEDESTRUCTIONEVENT16CREATIONTOOL = "createDestructionEvent16CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEMESSAGESYNC1CREATIONTOOL = "createMessageSync1CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEMESSAGEASYNC2CREATIONTOOL = "createMessageAsync2CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEMESSAGEREPLY3CREATIONTOOL = "createMessageReply3CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEMESSAGECREATE4CREATIONTOOL = "createMessageCreate4CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEMESSAGEDELETE5CREATIONTOOL = "createMessageDelete5CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEMESSAGELOST6CREATIONTOOL = "createMessageLost6CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEMESSAGEFOUND7CREATIONTOOL = "createMessageFound7CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATEGENERALORDERING8CREATIONTOOL = "createGeneralOrdering8CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATECOMMENTLINK9CREATIONTOOL = "createCommentlink9CreationTool"; //$NON-NLS-1$
/**
* @generated
*/
private final static String CREATECONSTRAINTLINK10CREATIONTOOL = "createConstraintlink10CreationTool"; //$NON-NLS-1$
private final static String CREATEOBSERVATIONLINKCREATIONTOOL = "createObservationLinkCreationTool"; //$NON-NLS-1$
/**
* @generated
*/
public UMLPaletteFactory() {
}
/**
* @generated NOT
*/
public Tool createTool(String toolId) {
if(toolId.equals(CREATELIFELINE1CREATIONTOOL)) {
return createLifeline1CreationTool();
}
if(toolId.equals(CREATEACTIONEXECUTIONSPECIFICATION2CREATIONTOOL)) {
return createActionExecutionSpecification2CreationTool();
}
if(toolId.equals(CREATEBEHAVIOREXECUTIONSPECIFICATION3CREATIONTOOL)) {
return createBehaviorExecutionSpecification3CreationTool();
}
if(toolId.equals(CREATEINTERACTIONUSE4CREATIONTOOL)) {
return createInteractionUse4CreationTool();
}
if(toolId.equals(CREATECOMBINEDFRAGMENT5CREATIONTOOL)) {
return createCombinedFragment5CreationTool();
}
// add
if(toolId.equals("createConsiderIgnoreFragment5CreationTool")) {
return createConsiderIgnoreFragmentCreationTool();
}
if(toolId.equals(CREATEINTERACTIONOPERAND6CREATIONTOOL)) {
return createInteractionOperand6CreationTool();
}
if(toolId.equals(CREATECONTINUATION7CREATIONTOOL)) {
return createContinuation7CreationTool();
}
if(toolId.equals(CREATESTATEINVARIANT8CREATIONTOOL)) {
return createStateInvariant8CreationTool();
}
if(toolId.equals(CREATECOMMENT9CREATIONTOOL)) {
return createComment9CreationTool();
}
if(toolId.equals(CREATECONSTRAINT10CREATIONTOOL)) {
return createConstraint10CreationTool();
}
if(toolId.equals(CREATECOREGION11CREATIONTOOL)) {
return createCoRegion11CreationTool();
}
if(toolId.equals(CREATEDURATIONOBSERVATION12CREATIONTOOL)) {
return createDurationObservation12CreationTool();
}
if(toolId.equals(CREATETIMECONSTRAINT13CREATIONTOOL)) {
return createTimeConstraint13CreationTool();
}
if(toolId.equals(CREATETIMEOBSERVATION14CREATIONTOOL)) {
return createTimeObservation14CreationTool();
}
if(toolId.equals(CREATEDURATIONCONSTRAINT15CREATIONTOOL)) {
return createDurationConstraint15CreationTool();
}
if(toolId.equals(CREATEDESTRUCTIONEVENT16CREATIONTOOL)) {
return createDestructionEvent16CreationTool();
}
if(toolId.equals(CREATEMESSAGESYNC1CREATIONTOOL)) {
return createMessageSync1CreationTool();
}
if(toolId.equals(CREATEMESSAGEASYNC2CREATIONTOOL)) {
return createMessageAsync2CreationTool();
}
if(toolId.equals(CREATEMESSAGEREPLY3CREATIONTOOL)) {
return createMessageReply3CreationTool();
}
if(toolId.equals(CREATEMESSAGECREATE4CREATIONTOOL)) {
return createMessageCreate4CreationTool();
}
if(toolId.equals(CREATEMESSAGEDELETE5CREATIONTOOL)) {
return createMessageDelete5CreationTool();
}
if(toolId.equals(CREATEMESSAGELOST6CREATIONTOOL)) {
return createMessageLost6CreationTool();
}
if(toolId.equals(CREATEMESSAGEFOUND7CREATIONTOOL)) {
return createMessageFound7CreationTool();
}
if(toolId.equals(CREATEGENERALORDERING8CREATIONTOOL)) {
return createGeneralOrdering8CreationTool();
}
if(toolId.equals(CREATECOMMENTLINK9CREATIONTOOL)) {
return createCommentlink9CreationTool();
}
if(toolId.equals(CREATECONSTRAINTLINK10CREATIONTOOL)) {
return createConstraintlink10CreationTool();
}
if(toolId.equals(CREATEOBSERVATIONLINKCREATIONTOOL)) {
return createObservationLinkCreationTool();
}
// default return: null
return null;
}
public Object getTemplate(String templateId) {
// default return: null
return null;
}
/**
* @generated
*/
private Tool createLifeline1CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Lifeline_3001);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createActionExecutionSpecification2CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.ActionExecutionSpecification_3006);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createBehaviorExecutionSpecification3CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.BehaviorExecutionSpecification_3003);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createInteractionUse4CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.InteractionUse_3002);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createCombinedFragment5CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(2);
// types.add(UMLElementTypes.ConsiderIgnoreFragment_3007);
types.add(UMLElementTypes.CombinedFragment_3004);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
private Tool createConsiderIgnoreFragmentCreationTool() {
List<IElementType> types = new ArrayList<IElementType>(2);
types.add(UMLElementTypes.ConsiderIgnoreFragment_3007);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createInteractionOperand6CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.InteractionOperand_3005);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createContinuation7CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Continuation_3016);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createStateInvariant8CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.StateInvariant_3017);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createComment9CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Comment_3009);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createConstraint10CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Constraint_3008);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createCoRegion11CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.CombinedFragment_3018);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated NOT use DurationCreationTool
*/
private Tool createDurationObservation12CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.DurationObservation_3024);
// use DurationCreationTool
//Tool tool = new DurationCreationTool(types);
AspectUnspecifiedTypeCreationTool tool = new AspectUnspecifiedTypeCreationTool(types);
tool.setDefaultCursor(SharedCursors.HAND);
tool.setDisabledCursor(SharedCursors.NO);
return tool;
}
/**
* @generated
*/
private Tool createTimeConstraint13CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.TimeConstraint_3019);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createTimeObservation14CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.TimeObservation_3020);
AspectUnspecifiedTypeCreationTool tool = new AspectUnspecifiedTypeCreationTool(types);
tool.setDefaultCursor(SharedCursors.HAND);
tool.setDisabledCursor(SharedCursors.NO);
return tool;
}
/**
* @generated NOT use DurationCreationTool
*/
private Tool createDurationConstraint15CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(2);
types.add(UMLElementTypes.DurationConstraint_3021);
types.add(UMLElementTypes.DurationConstraint_3023);
// use DurationCreationTool
Tool tool = new DurationCreationTool(types);
return tool;
}
/**
* @generated
*/
private Tool createDestructionEvent16CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.DestructionOccurrenceSpecification_3022);
Tool tool = new AspectUnspecifiedTypeCreationTool(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createMessageSync1CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Message_4003);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createMessageAsync2CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Message_4004);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createMessageReply3CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Message_4005);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createMessageCreate4CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Message_4006);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createMessageDelete5CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Message_4007);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createMessageLost6CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Message_4008);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createMessageFound7CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.Message_4009);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated NOT
*/
private Tool createGeneralOrdering8CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.GeneralOrdering_4012);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated
*/
private Tool createCommentlink9CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.CommentAnnotatedElement_4010);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
/**
* @generated
*/
private Tool createConstraintlink10CreationTool() {
List<IElementType> types = new ArrayList<IElementType>(1);
types.add(UMLElementTypes.ConstraintConstrainedElement_4011);
Tool tool = new AspectUnspecifiedTypeConnectionToolEx(types);
return tool;
}
private Tool createObservationLinkCreationTool() {
ConnectionCreationTool tool = new ConnectionCreationTool(new SimpleFactory(ObservationLink.class)){
protected String getCommandName() {
if (isInState(STATE_CONNECTION_STARTED
| STATE_ACCESSIBLE_DRAG_IN_PROGRESS))
return SequenceUtil.OBSERVATION_LINK_REQUEST_END;
else
return SequenceUtil.OBSERVATION_LINK_REQUEST_START;
}
@Override
protected boolean handleButtonUp(int button) {
setUnloadWhenFinished(true);
return super.handleButtonUp(button);
}
protected boolean updateTargetUnderMouse() {
if (!isTargetLocked()) {
EditPart editPart = getCurrentViewer()
.findObjectAtExcluding(getLocation(), getExclusionSet(),
getTargetingConditional());
if (editPart != null)
editPart = editPart.getTargetEditPart(getTargetRequest());
boolean changed = getTargetEditPart() != editPart;
setTargetEditPart(editPart);
return changed;
} else
return false;
}
};
tool.setDefaultCursor(new Cursor(Display.getDefault(),
DiagramUIPluginImages.DESC_CONNECTION_CURSOR_SOURCE.getImageData(),
DiagramUIPluginImages.DESC_CONNECTION_CURSOR_MASK.getImageData(), 0, 0));
tool.setDisabledCursor(new Cursor(Display
.getDefault(), DiagramUIPluginImages.DESC_NO_CONNECTION_CURSOR_SOURCE
.getImageData(), DiagramUIPluginImages.DESC_NO_CONNECTION_CURSOR_MASK
.getImageData(), 0, 0));
return tool;
}
public static class AspectUnspecifiedTypeConnectionToolEx extends AspectUnspecifiedTypeConnectionTool{
private EditPart source;
public AspectUnspecifiedTypeConnectionToolEx(List<IElementType> elementTypes) {
super(elementTypes);
}
@Override
protected void setConnectionSource(EditPart source) {
this.source = source;
super.setConnectionSource(source);
}
public void clearConnectionFeedback(){
if (!isShowingSourceFeedback())
return;
if (source != null) {
Request req = getSourceRequest();
req.setType(REQ_CONNECTION_END);
source.eraseSourceFeedback(req);
}
}
}
}