blob: 3ba7ce79b5dc829acdcc8b5fde48fe2dddcedffd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2012 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.bpel.ui.adapters;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.bpel.model.BPELPackage;
import org.eclipse.bpel.model.EventHandler;
import org.eclipse.bpel.model.FaultHandler;
import org.eclipse.bpel.model.Process;
import org.eclipse.bpel.ui.BPELUIPlugin;
import org.eclipse.bpel.ui.IBPELUIConstants;
import org.eclipse.bpel.ui.Messages;
import org.eclipse.bpel.ui.actions.CreateCorrelationSetAction;
import org.eclipse.bpel.ui.actions.CreateMessageExchangeAction;
import org.eclipse.bpel.ui.actions.CreateVariableAction;
import org.eclipse.bpel.ui.actions.CreatePartnerLinkAction;
import org.eclipse.bpel.ui.actions.editpart.AbstractAction;
import org.eclipse.bpel.ui.actions.editpart.IEditPartAction;
import org.eclipse.bpel.ui.adapters.delegates.ActivityContainer;
import org.eclipse.bpel.ui.adapters.delegates.IndirectContainer;
import org.eclipse.bpel.ui.adapters.delegates.MultiContainer;
import org.eclipse.bpel.ui.adapters.delegates.ReferenceContainer;
import org.eclipse.bpel.ui.editparts.ProcessEditPart;
import org.eclipse.bpel.ui.editparts.ProcessOutlineEditPart;
import org.eclipse.bpel.ui.editparts.ProcessTrayEditPart;
import org.eclipse.bpel.ui.properties.PropertiesLabelProvider;
import org.eclipse.bpel.ui.uiextensionmodel.UiextensionmodelFactory;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
import org.eclipse.swt.graphics.Image;
public class ProcessAdapter extends ContainerAdapter implements INamedElement,
EditPartFactory, IOutlineEditPartFactory, IFaultHandlerHolder,
ILabeledElement, IEventHandlerHolder, ITrayEditPartFactory,
IExtensionFactory, IEditPartActionContributor
{
/* IContainer delegate */
@Override
public IContainer createContainerDelegate() {
MultiContainer omc = new MultiContainer();
omc.add(new ActivityContainer(BPELPackage.eINSTANCE.getProcess_Activity()));
omc.add(new IndirectContainer(BPELPackage.eINSTANCE.getProcess_PartnerLinks(),
new ReferenceContainer(BPELPackage.eINSTANCE.getPartnerLinks_Children())));
omc.add(new IndirectContainer(BPELPackage.eINSTANCE.getProcess_CorrelationSets(),
new ReferenceContainer(BPELPackage.eINSTANCE.getCorrelationSets_Children())));
omc.add(new IndirectContainer(BPELPackage.eINSTANCE.getProcess_Variables(),
new ReferenceContainer(BPELPackage.eINSTANCE.getVariables_Children())));
omc.add(new IndirectContainer(BPELPackage.eINSTANCE.getProcess_MessageExchanges(),
new ReferenceContainer(BPELPackage.eINSTANCE.getMessageExchanges_Children())));
omc.add(new ReferenceContainer(BPELPackage.eINSTANCE.getProcess_FaultHandlers()));
omc.add(new ReferenceContainer(BPELPackage.eINSTANCE.getProcess_EventHandlers()));
return omc;
}
/* INamedElement */
public String getName(Object namedElement) {
return ((Process)namedElement).getName();
}
public void setName(Object namedElement, String name) {
((Process)namedElement).setName(name);
}
public boolean isNameAffected(Object modelObject, Notification n) {
return (n.getFeatureID(Process.class) == BPELPackage.PROCESS__NAME);
}
/* EditPartFactory */
public EditPart createEditPart(EditPart context, Object model) {
EditPart result = new ProcessEditPart();
result.setModel(model);
return result;
}
/* IOutlineEditPartFactory */
public EditPart createOutlineEditPart(EditPart context, Object model) {
EditPart result = new ProcessOutlineEditPart();
result.setModel(model);
return result;
}
/* ITrayEditPartFactory */
public EditPart createTrayEditPart(EditPart context, Object model) {
ProcessTrayEditPart result = new ProcessTrayEditPart();
result.setLabelProvider(PropertiesLabelProvider.getInstance());
result.setModel(model);
return result;
}
/* IFaultHandlerHolder */
public FaultHandler getFaultHandler(Object object) {
return ((Process)object).getFaultHandlers();
}
public void setFaultHandler(Object object, FaultHandler faultHandler) {
((Process)object).setFaultHandlers(faultHandler);
}
/* IEventHandlerHolder */
public EventHandler getEventHandler(Object object) {
return ((Process)object).getEventHandlers();
}
public void setEventHandler(Object object, EventHandler eventHandler) {
((Process)object).setEventHandlers(eventHandler);
}
/* ILabeledElement */
public String getLabel(Object object) {
// TODO: Labels
String name = getName(object);
if (name != null)
return name;
return getTypeLabel(object);
}
public Image getLargeImage(Object object) {
return BPELUIPlugin.INSTANCE.getImage(IBPELUIConstants.ICON_PROCESS_32);
}
public Image getSmallImage(Object object) {
return BPELUIPlugin.INSTANCE.getImage(IBPELUIConstants.ICON_PROCESS_16);
}
public String getTypeLabel(Object object) {
return Messages.ProcessAdapter_Process_1;
}
/* IExtensionFactory */
public EObject createExtension(EObject object) {
return UiextensionmodelFactory.eINSTANCE.createProcessExtension();
}
/*
* Overrides the base class actions and appends the declaration actions
* @see https://issues.jboss.org/browse/JBIDE-7953
*/
@Override
public List<? extends IEditPartAction> getEditPartActions(EditPart editPart) {
List<AbstractAction> actions = new ArrayList<AbstractAction>();
actions.add(new CreatePartnerLinkAction(editPart));
actions.add(new CreateVariableAction(editPart));
actions.add(new CreateCorrelationSetAction(editPart));
actions.add(new CreateMessageExchangeAction(editPart));
return actions;
}
}