/******************************************************************************* | |
* 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.Iterator; | |
import java.util.List; | |
import org.eclipse.bpel.model.BPELPackage; | |
import org.eclipse.bpel.model.PartnerLink; | |
import org.eclipse.bpel.model.PartnerLinks; | |
import org.eclipse.bpel.ui.BPELUIPlugin; | |
import org.eclipse.bpel.ui.IBPELUIConstants; | |
import org.eclipse.bpel.ui.Messages; | |
import org.eclipse.bpel.ui.adapters.delegates.IndirectContainer; | |
import org.eclipse.bpel.ui.adapters.delegates.ReferenceContainer; | |
import org.eclipse.bpel.ui.editparts.OutlineTreeEditPart; | |
import org.eclipse.bpel.ui.editparts.ReferencePartnerLinksEditPart; | |
import org.eclipse.bpel.ui.properties.PropertiesLabelProvider; | |
import org.eclipse.bpel.ui.uiextensionmodel.ReferencePartnerLinks; | |
import org.eclipse.bpel.ui.util.ModelHelper; | |
import org.eclipse.emf.common.notify.Notifier; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.gef.EditPart; | |
import org.eclipse.gef.EditPartFactory; | |
import org.eclipse.swt.graphics.Image; | |
public class ReferencePartnerLinksAdapter extends ContainerAdapter implements EditPartFactory, | |
ILabeledElement, IOutlineEditPartFactory, ITrayEditPartFactory | |
{ | |
/* IContainer delegate */ | |
@Override | |
public IContainer createContainerDelegate() { | |
return new IndirectContainer(BPELPackage.eINSTANCE.getProcess_Activity(), // bogus feature | |
new ReferenceContainer(BPELPackage.eINSTANCE.getPartnerLinks_Children())) | |
{ | |
@Override | |
protected EObject getTarget(Object object) { | |
return ((ReferencePartnerLinks)object).getPartnerLinks(); | |
} | |
}; | |
} | |
/* EditPartFactory */ | |
public EditPart createEditPart(EditPart context, Object model) { | |
ReferencePartnerLinksEditPart result = new ReferencePartnerLinksEditPart(); | |
result.setLabelProvider(PropertiesLabelProvider.getInstance()); | |
result.setModel(model); | |
return result; | |
} | |
/* ITrayEditPartFactory */ | |
public EditPart createTrayEditPart(EditPart context, Object model) { | |
return createEditPart(context, model); | |
} | |
/* ILabeledElement */ | |
public Image getSmallImage(Object object) { | |
String imageName = IBPELUIConstants.ICON_PARTNER_OUT_16; | |
return BPELUIPlugin.INSTANCE.getImage(imageName); | |
} | |
public Image getLargeImage(Object object) { | |
String imageName = IBPELUIConstants.ICON_PARTNER_OUT_16; | |
return BPELUIPlugin.INSTANCE.getImage(imageName); | |
} | |
public String getTypeLabel(Object object) { | |
return Messages.PartnerLinksEditPart_Partners_1; | |
} | |
public String getLabel(Object object) { | |
return Messages.ReferencePartnerLinksAdapter_0; | |
} | |
/* IOutlineEditPartFactory */ | |
public EditPart createOutlineEditPart(EditPart context, final Object model) { | |
EditPart result = new OutlineTreeEditPart() { | |
@Override | |
protected List getModelChildren() { | |
List list = new ArrayList(); | |
for (Iterator iter = ((ReferencePartnerLinks)model).getPartnerLinks().getChildren().iterator(); iter.hasNext();) { | |
PartnerLink partner = (PartnerLink) iter.next(); | |
if (ModelHelper.isReferencePartnerLink(partner) && !ModelHelper.isInterfacePartnerLink(partner)) { | |
list.add(partner); | |
} | |
} | |
return list; | |
} | |
@Override | |
protected void addAllAdapters() { | |
PartnerLinks partnerLinks = ((ReferencePartnerLinks)getModel()).getPartnerLinks(); | |
adapter.addToObject(partnerLinks); | |
if (partnerLinks.eResource() != null) { | |
EObject extension = ModelHelper.getExtension(partnerLinks); | |
((Notifier)getModel()).eAdapters().add(adapter); | |
if (extension != null) adapter.addToObject(extension); | |
} | |
} | |
}; | |
result.setModel(model); | |
return result; | |
} | |
} |