/******************************************************************************* | |
* 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 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* 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; | |
} | |
} |