/* * Copyright (c) 2010-2012, 2015 Eike Stepper (Berlin, Germany) 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: * Martin Fluegge - initial API and implementation */ package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest; import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor; import org.eclipse.gmf.runtime.notation.View; import java.util.ArrayList; import java.util.List; /** * @author Martin Fluegge */ public class DawnACoreRootCanonicalEditPolicy extends ACoreRootCanonicalEditPolicy { public DawnACoreRootCanonicalEditPolicy() { super(); AcoreDiagramEditorPlugin.getInstance().logInfo("Running DawnAcoreCanonicalEditPolicy instead of original one"); } @Override protected CreateViewRequest getCreateViewRequest(List<ViewDescriptor> descriptors) { List<View> viewChildren = getViewChildren(); List<ViewDescriptor> tbr = new ArrayList<CreateViewRequest.ViewDescriptor>(); for (ViewDescriptor desc : descriptors) { EObject obj = (EObject)((CanonicalElementAdapter)desc.getElementAdapter()).getRealObject(); boolean found = false; for (View view : viewChildren) { if (view.getElement().equals(obj)) { found = true; break; } } if (!found) { tbr.add(desc); } } descriptors.removeAll(tbr); return new CreateViewRequest(descriptors); } // @Override // protected List getSemanticChildrenList() // { // List semanticChildren = super.getSemanticChildrenList(); // List<View> viewChildren = getViewChildren(); // // //remove all semantic children that do not have a view because the have one in another resource, // //or the child should not have one // semanticChildren.removeAll(cleanCanonicalSemanticChildren(viewChildren, semanticChildren)); // return semanticChildren; // } // /** // * @generated // */ // @Override // public void refreshSemantic() // { // List createdViews = new LinkedList(); // // createdViews.addAll(refreshSemanticChildren()); // List createdConnectionViews = new LinkedList(); // createdConnectionViews.addAll(refreshSemanticConnections()); // createdConnectionViews.addAll(refreshConnections()); // // if (createdViews.size() > 1) // { // // perform a layout of the container // DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host()); // executeCommand(new ICommandProxy(layoutCmd)); // } // // createdViews.addAll(createdConnectionViews); // makeViewsImmutable(createdViews); // } }