/******************************************************************************* * 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; } }