[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[List Home]
|
[stp-commits] r3330 - org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd
|
- From: genie@xxxxxxxxxxx
- Date: Tue, 15 Sep 2009 13:08:21 -0400 (EDT)
- Delivered-to: stp-commits@eclipse.org
Author: sdrapeau
Date: 2009-09-15 13:08:21 -0400 (Tue, 15 Sep 2009)
New Revision: 3330
Added:
org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/AbstractCompositeFileDD.java
org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/ScaCompositeFileImplementationDDOnComposite.java
Log:
DnD composite file on composite.
Added: org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/AbstractCompositeFileDD.java
===================================================================
--- org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/AbstractCompositeFileDD.java (rev 0)
+++ org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/AbstractCompositeFileDD.java 2009-09-15 17:08:21 UTC (rev 3330)
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2007-2008-2009
+ *
+ * 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:
+ * Jamil Shaikh (RIM) <jshaikh@xxxxxxx> - initial API and implementation
+ */
+package org.eclipse.stp.sca.diagram.sca.dnd;
+
+import java.util.Collection;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest;
+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest.ViewAndElementDescriptor;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.emf.type.core.IHintedType;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
+import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.internal.core.JarEntryFile;
+import org.eclipse.stp.sca.Component;
+import org.eclipse.stp.sca.Composite;
+import org.eclipse.stp.sca.common.java.utils.JDTUtils;
+import org.eclipse.stp.sca.diagram.dnd.AbstractFileDD;
+import org.eclipse.stp.sca.introspection.CompositeImplementationResolver;
+import org.eclipse.stp.sca.util.ScaCompositeUtils;
+
+/**
+ * @author Jamil Shaikh - RIM
+ */
+public abstract class AbstractCompositeFileDD extends AbstractFileDD {
+
+ public AbstractTransactionalCommand getAbstractTransactionalCommand(
+ final IGraphicalEditPart host, final GraphicalEditPart editPart,
+ final Request request) {
+ AbstractTransactionalCommand cmd = null;
+ if (editPartIsOk(editPart)) {
+ Object transfer = getDnDedObject(request);
+ if (transfer != null) {
+ IResource file = getCompositeFile(transfer);
+ if (file != null) {
+ if (file.getFileExtension().equals("composite")) {
+ cmd = getCommand(host, editPart, request, file);
+ }
+ }
+ }
+ }
+ return cmd;
+ }
+
+ private IResource getCompositeFile(Object transfer) {
+ IResource file = null;
+ if (transfer instanceof IFile) {
+ file = (IResource) transfer;
+ } else if (transfer instanceof JarEntryFile) {
+ JarEntryFile jarEntry = (JarEntryFile) transfer;
+ IPackageFragmentRoot jarRoot = jarEntry.getPackageFragmentRoot();
+ IJavaProject jp = jarRoot.getJavaProject();
+ String projectPath = jp.getProject().getLocation().toString();
+ java.io.File tmpFile = new java.io.File(new java.io.File(
+ projectPath).toString()
+ + "/" + jarEntry.getName());
+ file = JDTUtils.copyFileEnclosedInJar(jarEntry, tmpFile);
+ }
+ return file;
+ }
+
+ private AbstractTransactionalCommand getCommand(IGraphicalEditPart host,
+ final GraphicalEditPart editPart, final Request request,
+ final IResource file) {
+
+ AbstractTransactionalCommand cmd = new AbstractTransactionalCommand(
+ host.getEditingDomain(), "DnD SCA composite", //$NON-NLS-1$
+ null) {
+
+ @Override
+ protected CommandResult doExecuteWithResult(
+ IProgressMonitor monitor, IAdaptable info)
+ throws ExecutionException {
+
+ IElementType type = getType(editPart);
+
+ ViewAndElementDescriptor viewDescriptor = new ViewAndElementDescriptor(
+ new CreateElementRequestAdapter(
+ new CreateElementRequest(type)), Node.class,
+ ((IHintedType) type).getSemanticHint(), editPart
+ .getDiagramPreferencesHint());
+
+ CreateViewAndElementRequest req = new CreateViewAndElementRequest(
+ viewDescriptor);
+ CompoundCommand cmd = new CompoundCommand("Creation");//$NON-NLS-1$
+ cmd.add(editPart.getCommand(req));
+ editPart.getDiagramEditDomain().getDiagramCommandStack()
+ .execute(cmd);
+ Composite composite = ScaCompositeUtils.getComposite(file);
+
+ Collection<?> results = DiagramCommandStack
+ .getReturnValues(cmd);
+ for (Object res : results) {
+ if (res instanceof IAdaptable) {
+ IAdaptable adapter = (IAdaptable) res;
+ View view = (View) adapter.getAdapter(View.class);
+ if (view != null) {
+ Component component = postTreatment(editPart, view,
+ composite);
+ if (component != null) {
+ launchIntrospection(component, composite);
+ }
+ }
+ }
+ }
+ if (getDnDedObject(request) instanceof JarEntryFile) {
+ file.getFullPath().toFile().delete();
+ }
+ return CommandResult.newOKCommandResult();
+ }
+
+ };
+ return cmd;
+ }
+
+ public void launchIntrospection(Component component, Composite composite) {
+ CompositeImplementationResolver resolver = new CompositeImplementationResolver();
+ resolver.resolveServices(component, composite);
+ resolver.resolveReferences(component, composite);
+ resolver.resolveProperties(component, composite);
+ }
+
+ protected abstract Component postTreatment(GraphicalEditPart editPart,
+ View view, Composite composite);
+
+}
Property changes on: org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/AbstractCompositeFileDD.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/ScaCompositeFileImplementationDDOnComposite.java
===================================================================
--- org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/ScaCompositeFileImplementationDDOnComposite.java (rev 0)
+++ org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/ScaCompositeFileImplementationDDOnComposite.java 2009-09-15 17:08:21 UTC (rev 3330)
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2007-2008-2009
+ *
+ * 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:
+ * Jamil Shaikh (RIM) <jshaikh@xxxxxxx> - initial API and implementation
+ */
+package org.eclipse.stp.sca.diagram.sca.dnd;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+import org.eclipse.emf.ecore.xml.type.internal.QName;
+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.stp.sca.Component;
+import org.eclipse.stp.sca.Composite;
+import org.eclipse.stp.sca.SCAImplementation;
+import org.eclipse.stp.sca.ScaFactory;
+import org.eclipse.stp.sca.ScaPackage;
+import org.eclipse.stp.sca.diagram.edit.parts.CompositeCompositeAreaCompartmentEditPart;
+import org.eclipse.stp.sca.diagram.providers.ScaElementTypes;
+
+/**
+ * @author Jamil Shaikh - RIM
+ */
+public class ScaCompositeFileImplementationDDOnComposite extends AbstractCompositeFileDD {
+
+ @Override
+ public boolean editPartIsOk(GraphicalEditPart editPart) {
+ return editPart instanceof CompositeCompositeAreaCompartmentEditPart;
+ }
+
+ @Override
+ protected Component postTreatment(GraphicalEditPart editPart, View view,
+ Composite composite) {
+ Component component = (Component) view.getElement();
+ QName name = new QName(composite.getTargetNamespace(),composite.getName(),"");
+ SetRequest reqSet = new SetRequest(editPart.getEditingDomain(),
+ component, ScaPackage.Literals.COMPONENT__NAME, composite.getName());
+ SetValueCommand operation = new SetValueCommand(reqSet);
+ editPart.getDiagramEditDomain().getDiagramCommandStack().execute(
+ new ICommandProxy(operation));
+
+ createScaImplementation(component, name);
+
+ return component;
+ }
+
+ private void createScaImplementation(Component component, QName name) {
+ SCAImplementation scaImplem = ScaFactory.eINSTANCE
+ .createSCAImplementation();
+ scaImplem.setName(name);
+ ((FeatureMap.Internal) component.getImplementationGroup()).clear();
+ ((FeatureMap.Internal) component.getImplementationGroup()).add(
+ ScaPackage.Literals.COMPONENT__IMPLEMENTATION_GROUP,
+ FeatureMapUtil.createEntry(
+ ScaPackage.Literals.DOCUMENT_ROOT__IMPLEMENTATION_COMPOSITE,
+ scaImplem));
+ }
+
+ @Override
+ protected IElementType getType(GraphicalEditPart editPart) {
+ return ScaElementTypes.Component_3012;
+ }
+}
Property changes on: org.eclipse.stp.sca/trunk/org.eclipse.stp.sca.diagram.sca/src/org/eclipse/stp/sca/diagram/sca/dnd/ScaCompositeFileImplementationDDOnComposite.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain