Author: scabanovich
Date: 2008-05-29 10:29:29 -0400 (Thu, 29 May 2008)
New Revision: 8437
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/DndHelper.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/FileTransferDropTargetListener.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/PagesTemplateTransferDropTargetListener.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/XModelTransferDropTargetListener.java
Removed:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesContextMenuProvider.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java
Log:
JBIDE-1189
Deleted:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java 2008-05-29
14:28:56 UTC (rev 8436)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/FakePageEditor.java 2008-05-29
14:29:29 UTC (rev 8437)
@@ -1,21 +0,0 @@
-package org.jboss.tools.seam.ui.pages.editor;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.IEditorInput;
-
-public class FakePageEditor implements IAdaptable {
-
- public FakePageEditor(IEditorInput input) {}
-
- public ISelectionProvider getModelSelectionProvider() {
- return null;
- }
-
- public Object getAdapter(Class adapter) {
- return null;
- }
-
- public void dispose() {}
-
-}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesContextMenuProvider.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesContextMenuProvider.java 2008-05-29
14:28:56 UTC (rev 8436)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesContextMenuProvider.java 2008-05-29
14:29:29 UTC (rev 8437)
@@ -107,7 +107,7 @@
LinkEditPart part = (LinkEditPart)selected;
Object partModel = part.getModel();
if(partModel instanceof Link) {
-// return (XModelObject)((Link)partModel).getData();
+ return (XModelObject)((Link)partModel).getData();
}
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java 2008-05-29
14:28:56 UTC (rev 8436)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java 2008-05-29
14:29:29 UTC (rev 8437)
@@ -25,8 +25,6 @@
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
import org.eclipse.draw2d.ConnectionLayer;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.FreeformViewport;
@@ -108,6 +106,9 @@
import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesProcessStructureHelper;
import org.jboss.tools.seam.ui.pages.SeamUIPagesMessages;
import org.jboss.tools.seam.ui.pages.SeamUiPagesPlugin;
+import org.jboss.tools.seam.ui.pages.editor.dnd.FileTransferDropTargetListener;
+import org.jboss.tools.seam.ui.pages.editor.dnd.PagesTemplateTransferDropTargetListener;
+import org.jboss.tools.seam.ui.pages.editor.dnd.XModelTransferDropTargetListener;
import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesElement;
import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesModel;
@@ -122,8 +123,6 @@
public class PagesEditor extends GEFEditor implements PagesModelListener{
-
-
protected void createPaletteViewer(Composite parent) {
PaletteViewer viewer = new PaletteViewer();
PagesPaletteViewerPreferences prefs = new PagesPaletteViewerPreferences(
@@ -414,17 +413,17 @@
protected void initializeGraphicalViewer() {
getGraphicalViewer().setContents(getPagesModel());
-// getGraphicalViewer().addDropTargetListener(
-// new XModelTransferDropTargetListener(this));
-//
-// getGraphicalViewer().addDropTargetListener(
-// new FileTransferDropTargetListener(this));
+ getGraphicalViewer().addDropTargetListener(
+ new XModelTransferDropTargetListener(this));
-// getGraphicalViewer()
-// .addDropTargetListener(
-// (TransferDropTargetListener) new JSFTemplateTransferDropTargetListener(
-// getGraphicalViewer()));
+ getGraphicalViewer().addDropTargetListener(
+ new FileTransferDropTargetListener(this));
+ getGraphicalViewer()
+ .addDropTargetListener(
+ (TransferDropTargetListener) new PagesTemplateTransferDropTargetListener(
+ getGraphicalViewer()));
+
((ConnectionLayer) ((ScalableFreeformRootEditPart) getGraphicalViewer()
.getRootEditPart())
.getLayer(ScalableFreeformRootEditPart.CONNECTION_LAYER))
@@ -620,8 +619,7 @@
LinkEditPart part = (LinkEditPart) selected;
Object partModel = part.getModel();
if (partModel instanceof Link) {
-//TODO
-// return (XModelObject) ((Link) partModel).getSource();
+ return (XModelObject) ((Link)partModel).getData();
}
}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/DndHelper.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/DndHelper.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/DndHelper.java 2008-05-29
14:29:29 UTC (rev 8437)
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.pages.editor.dnd;
+
+import java.util.Properties;
+
+import org.jboss.tools.common.model.XModelException;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.XModelTransferBuffer;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.jboss.tools.common.model.ui.dnd.DnDUtil;
+import org.jboss.tools.common.meta.action.XAction;
+import org.jboss.tools.seam.ui.pages.SeamUiPagesPlugin;
+
+public class DndHelper{
+
+ public DndHelper() {
+ }
+
+ public static boolean drag(Object source) {
+ if (source == null)
+ return false;
+ XAction copy = (XAction) DnDUtil.getEnabledAction(
+ (XModelObject) source, null, "CopyActions.Copy");
+ if (copy == null)
+ return false;
+ XModelTransferBuffer.getInstance().enable();
+ Properties properties = new Properties();
+ properties.setProperty("isDrop", "true");
+ properties.setProperty("isDrag", "true");
+ properties.setProperty("actionSourceGUIComponentID", "editor");
+ try {
+ copy.executeHandler((XModelObject) source, properties);
+ } catch (XModelException e) {
+ SeamUiPagesPlugin.getDefault().logError(e);
+ XModelTransferBuffer.getInstance().disable();
+ return false;
+ }
+ return true;
+ }
+
+ public static void dragEnd() {
+ XModelTransferBuffer.getInstance().disable();
+ }
+
+ public static void drop(Object target, Point point) {
+ if (target == null)
+ return;
+ Properties properties = new Properties();
+ properties.setProperty("isDrop", "true");
+ properties.setProperty("actionSourceGUIComponentID", "editor");
+ if (point != null) {
+ properties.put("process.mouse.x", "" + point.x);
+ properties.put("process.mouse.y", "" + point.y);
+ }
+ try {
+ DnDUtil.paste((XModelObject) target, properties);
+ } catch (XModelException ex) {
+ SeamUiPagesPlugin.getDefault().logError(ex);
+ }
+ }
+
+ public static void drop(Object target) {
+ drop(target, null);
+ }
+
+ public static boolean isDropEnabled(Object target) {
+ return DnDUtil.isPasteEnabled((XModelObject) target);
+ }
+
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/FileTransferDropTargetListener.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/FileTransferDropTargetListener.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/FileTransferDropTargetListener.java 2008-05-29
14:29:29 UTC (rev 8437)
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.pages.editor.dnd;
+
+import java.io.File;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.jface.util.TransferDropTargetListener;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
+import org.jboss.tools.seam.ui.pages.editor.PagesEditor;
+import org.jboss.tools.seam.ui.pages.editor.edit.PagesDiagramEditPart;
+
+public class FileTransferDropTargetListener implements TransferDropTargetListener {
+ PagesEditor editor;
+ boolean baseDropAccept = false;
+
+ public FileTransferDropTargetListener(PagesEditor editor) {
+ this.editor = editor;
+ }
+
+ public void dragOperationChanged(DropTargetEvent event) {
+
+ }
+
+ public void dragEnter(DropTargetEvent event) {
+ String[] os = (String[]) FileTransfer.getInstance().nativeToJava(
+ event.currentDataType);
+ if (os == null || os.length != 1 || !new File(os[0]).isFile())
+ return;
+ IFile f = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(
+ new Path(os[0]));
+ if (f == null || !f.exists())
+ return;
+ if (!DndHelper.drag(EclipseResourceUtil.getObjectByResource(f)))
+ return;
+
+ if (DndHelper.isDropEnabled(editor.getPagesModel().getData())) {
+ baseDropAccept = true;
+ } else {
+ baseDropAccept = false;
+ }
+ }
+
+ public void dragOver(DropTargetEvent event) {
+ if (!baseDropAccept)
+ event.detail = DND.DROP_NONE;
+ else
+ event.detail = DND.DROP_COPY;
+
+ }
+
+ public void dragLeave(DropTargetEvent event) {
+ }
+
+ public void dropAccept(DropTargetEvent event) {
+ }
+
+ public void drop(DropTargetEvent event) {
+ org.eclipse.swt.graphics.Point parentPoint = editor
+ .getScrollingGraphicalViewer().getControl().toControl(event.x,
+ event.y);
+ Point point = new Point(parentPoint.x, parentPoint.y);
+ ((PagesDiagramEditPart) editor.getScrollingGraphicalViewer()
+ .getRootEditPart().getChildren().get(0)).getFigure()
+ .translateToRelative(point);
+ DndHelper.drop(editor.getPagesModel().getData(), point);
+ }
+
+ public Transfer getTransfer() {
+ return FileTransfer.getInstance();
+ }
+
+ public boolean isEnabled(DropTargetEvent event) {
+ return true;
+ }
+
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/PagesTemplateTransferDropTargetListener.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/PagesTemplateTransferDropTargetListener.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/PagesTemplateTransferDropTargetListener.java 2008-05-29
14:29:29 UTC (rev 8437)
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.pages.editor.dnd;
+
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.dnd.TemplateTransferDropTargetListener;
+import org.eclipse.gef.requests.CreationFactory;
+
+public class PagesTemplateTransferDropTargetListener extends
TemplateTransferDropTargetListener {
+
+ public PagesTemplateTransferDropTargetListener(EditPartViewer viewer) {
+ super(viewer);
+ }
+
+ protected CreationFactory getFactory(Object template) {
+ return new JSFTemplateFactory();
+ }
+
+ class JSFTemplateFactory implements CreationFactory {
+ public Object getNewObject() {
+ return "view";
+ }
+
+ public Object getObjectType() {
+ return String.class;
+ }
+ }
+
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/XModelTransferDropTargetListener.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/XModelTransferDropTargetListener.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/dnd/XModelTransferDropTargetListener.java 2008-05-29
14:29:29 UTC (rev 8437)
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Exadel, Inc. and Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.seam.ui.pages.editor.dnd;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.jboss.tools.common.model.ui.dnd.ModelTransfer;
+import org.eclipse.gef.dnd.TemplateTransfer;
+import org.eclipse.jface.util.TransferDropTargetListener;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import java.io.File;
+import java.util.Properties;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.jboss.tools.common.meta.action.XActionInvoker;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
+
+import org.jboss.tools.seam.ui.pages.editor.PagesEditor;
+import org.jboss.tools.seam.ui.pages.editor.edit.PagesDiagramEditPart;
+
+public class XModelTransferDropTargetListener implements TransferDropTargetListener {
+ PagesEditor editor;
+
+ boolean baseDropAccept = false;
+
+ public XModelTransferDropTargetListener(PagesEditor editor) {
+ this.editor = editor;
+ }
+
+ public void dragOperationChanged(DropTargetEvent event) {
+
+ }
+
+ public void dragEnter(DropTargetEvent event) {
+ if (TemplateTransfer.getInstance().isSupportedType(
+ event.currentDataType)) {
+ baseDropAccept = true;
+ return;
+ } else if (FileTransfer.getInstance().isSupportedType(
+ event.currentDataType)) {
+ String[] os = (String[]) FileTransfer.getInstance().nativeToJava(
+ event.currentDataType);
+ if (os == null || os.length != 1 || !new File(os[0]).isFile())
+ return;
+ IFile f = ResourcesPlugin.getWorkspace().getRoot()
+ .getFileForLocation(new Path(os[0]));
+ if (f == null || !f.exists())
+ return;
+ if (!DndHelper.drag(EclipseResourceUtil.getObjectByResource(f)))
+ return;
+ }
+ if (DndHelper.isDropEnabled(editor.getPagesModel().getData())) {
+ baseDropAccept = true;
+ } else {
+ baseDropAccept = false;
+ }
+ }
+
+ public void dragOver(DropTargetEvent event) {
+ if (!baseDropAccept)
+ event.detail = DND.DROP_NONE;
+ else
+ event.detail = DND.DROP_COPY;
+ }
+
+ public void dragLeave(DropTargetEvent event) {
+ }
+
+ public void dropAccept(DropTargetEvent event) {
+ }
+
+ public void drop(DropTargetEvent event) {
+ org.eclipse.swt.graphics.Point parentPoint = editor
+ .getScrollingGraphicalViewer().getControl().toControl(event.x,
+ event.y);
+ Point point = new Point(parentPoint.x, parentPoint.y);
+
+ ((PagesDiagramEditPart) editor.getScrollingGraphicalViewer()
+ .getRootEditPart().getChildren().get(0)).getFigure()
+ .translateToRelative(point);
+ if (TemplateTransfer.getInstance().isSupportedType(
+ event.currentDataType)) {
+ Properties properties = new Properties();
+ if (point != null) {
+ properties.put("process.mouse.x", "" + point.x);
+ properties.put("process.mouse.y", "" + point.y);
+ }
+
+ XActionInvoker
+ .invoke("CreateActions.AddPage", (XModelObject) editor
+ .getPagesModel().getData(), properties);
+ return;
+ }
+ DndHelper.drop(editor.getPagesModel().getData(), point);
+ }
+
+ public Transfer getTransfer() {
+ return ModelTransfer.getInstance();
+ }
+
+ public boolean isEnabled(DropTargetEvent event) {
+ return true;
+ }
+
+}