Author: scabanovich
Date: 2008-07-04 05:57:04 -0400 (Fri, 04 Jul 2008)
New Revision: 9069
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/SelectionUtil.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
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-07-04
09:12:56 UTC (rev 9068)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesContextMenuProvider.java 2008-07-04
09:57:04 UTC (rev 9069)
@@ -24,12 +24,8 @@
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.jboss.tools.common.model.XModelObject;
-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.edit.LinkEditPart;
import org.jboss.tools.seam.ui.pages.editor.edit.PagesDiagramEditPart;
-import org.jboss.tools.seam.ui.pages.editor.edit.PagesEditPart;
-import org.jboss.tools.seam.ui.pages.editor.edit.ParamEditPart;
+import org.jboss.tools.seam.ui.pages.editor.edit.SelectionUtil;
public class PagesContextMenuProvider extends org.eclipse.gef.ContextMenuProvider {
private ActionRegistry actionRegistry;
@@ -68,7 +64,7 @@
ISelection s = getViewer().getSelection();
if(s.isEmpty() || !(s instanceof IStructuredSelection)) return;
IStructuredSelection ss = (IStructuredSelection)s;
- XModelObject object = getTarget(ss.getFirstElement());
+ XModelObject object = SelectionUtil.getTarget(ss.getFirstElement());
if(object != null) {
Properties p = new Properties();
if(lastDownEvent != null) {
@@ -78,48 +74,11 @@
p.setProperty("mouse.y", "" + point.y);
lastDownEvent = null;
}
- XModelObjectActionList list = new
XModelObjectActionList(object.getModelEntity().getActionList(), object, getTargets(ss),
new Object[]{object, p});
+ XModelObjectActionList list = new
XModelObjectActionList(object.getModelEntity().getActionList(), object,
SelectionUtil.getTargets(ss), new Object[]{object, p});
Menu menu = getMenu();
list.createMenu(menu);
list.removeLastSeparator(menu);
}
}
- private XModelObject[] getTargets(IStructuredSelection ss) {
- if(ss.size() < 2) return null;
- Iterator it = ss.iterator();
- ArrayList<XModelObject> l = new ArrayList<XModelObject>();
- while(it.hasNext()) {
- XModelObject o = getTarget(it.next());
- if(o != null) l.add(o);
- }
- return l.toArray(new XModelObject[0]);
- }
-
- private XModelObject getTarget(Object selected) {
- if(selected instanceof PagesEditPart) {
- PagesEditPart part = (PagesEditPart)selected;
- Object partModel = part.getModel();
- if(partModel instanceof PagesElement) {
- return (XModelObject)((PagesElement)partModel).getData();
- }
- }
- if(selected instanceof LinkEditPart) {
- LinkEditPart part = (LinkEditPart)selected;
- Object partModel = part.getModel();
- if(partModel instanceof Link) {
- return (XModelObject)((Link)partModel).getData();
- }
- }
- if(selected instanceof ParamEditPart) {
- ParamEditPart part = (ParamEditPart)selected;
- Object partModel = part.getParamModel().getPagesModel();
- if(partModel instanceof PagesElement) {
- return (XModelObject)((PagesElement)partModel).getData();
- }
- }
-
- return null;
- }
-
-}
\ No newline at end of file
+}
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-07-04
09:12:56 UTC (rev 9068)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/PagesEditor.java 2008-07-04
09:57:04 UTC (rev 9069)
@@ -28,24 +28,16 @@
import org.eclipse.draw2d.ConnectionLayer;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.FreeformViewport;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.PositionConstants;
-import org.eclipse.draw2d.PrinterGraphics;
-import org.eclipse.draw2d.SWTGraphics;
import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.KeyHandler;
-import org.eclipse.gef.LayerConstants;
import org.eclipse.gef.SnapToGrid;
import org.eclipse.gef.dnd.TemplateTransferDragSourceListener;
-import org.eclipse.gef.editparts.LayerManager;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.editparts.ZoomListener;
import org.eclipse.gef.editparts.ZoomManager;
@@ -60,7 +52,6 @@
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.requests.SimpleFactory;
import org.eclipse.gef.ui.actions.ActionRegistry;
-import org.eclipse.gef.ui.actions.WorkbenchPartAction;
import org.eclipse.gef.ui.actions.ZoomInAction;
import org.eclipse.gef.ui.actions.ZoomOutAction;
import org.eclipse.gef.ui.palette.PaletteContextMenuProvider;
@@ -79,14 +70,8 @@
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.printing.PrintDialog;
-import org.eclipse.swt.printing.Printer;
-import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
@@ -105,7 +90,7 @@
import org.jboss.tools.common.gef.outline.xpl.DiagramContentOutlinePage;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.XModelTransferBuffer;
-import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+import org.jboss.tools.jst.web.model.ReferenceObject;
import org.jboss.tools.seam.pages.xml.model.handlers.SelectOnDiagramHandler;
import org.jboss.tools.seam.pages.xml.model.helpers.SeamPagesDiagramStructureHelper;
import org.jboss.tools.seam.ui.pages.SeamUIPagesMessages;
@@ -113,15 +98,13 @@
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;
import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesModelListener;
import org.jboss.tools.seam.ui.pages.editor.edit.GraphicalPartFactory;
-import org.jboss.tools.seam.ui.pages.editor.edit.LinkEditPart;
import org.jboss.tools.seam.ui.pages.editor.edit.PagesDiagramEditPart;
import org.jboss.tools.seam.ui.pages.editor.edit.PagesEditPart;
-import org.jboss.tools.seam.ui.pages.editor.edit.ParamEditPart;
+import org.jboss.tools.seam.ui.pages.editor.edit.SelectionUtil;
import org.jboss.tools.seam.ui.pages.editor.edit.xpl.PagesConnectionRouter;
import org.jboss.tools.seam.ui.pages.editor.figures.NodeFigure;
import org.jboss.tools.seam.ui.pages.editor.palette.PagesPaletteViewerPreferences;
@@ -559,6 +542,10 @@
if (viewer == null)
return null;
XModelObject o = getTarget(viewer.getSelection());
+ if(!(o instanceof ReferenceObject)) {
+ //Case of param object which does not have wrapper in diagram model.
+ return o;
+ }
XModelObject ref = SeamPagesDiagramStructureHelper.instance.getReference(o);
return ref;
}
@@ -639,34 +626,9 @@
private XModelObject getTarget(ISelection ss) {
if (ss.isEmpty() || !(ss instanceof StructuredSelection))
return null;
- return getTarget(((StructuredSelection) ss).getFirstElement());
+ return SelectionUtil.getTarget(((StructuredSelection) ss).getFirstElement());
}
- private XModelObject getTarget(Object selected) {
- if (selected instanceof PagesEditPart) {
- PagesEditPart part = (PagesEditPart) selected;
- Object partModel = part.getModel();
- if (partModel instanceof PagesElement) {
- return (XModelObject) ((PagesElement) partModel).getData();
- }
- }
- if (selected instanceof LinkEditPart) {
- LinkEditPart part = (LinkEditPart) selected;
- Object partModel = part.getModel();
- if (partModel instanceof Link) {
- return (XModelObject) ((Link)partModel).getData();
- }
- }
- if(selected instanceof ParamEditPart) {
- ParamEditPart part = (ParamEditPart)selected;
- Object partModel = part.getParamModel().getPagesModel();
- if(partModel instanceof PagesElement) {
- return (XModelObject)((PagesElement)partModel).getData();
- }
- }
- return null;
- }
-
protected void hookGraphicalViewer() {
getSelectionSynchronizer().addViewer(getGraphicalViewer());
}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/SelectionUtil.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/SelectionUtil.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/SelectionUtil.java 2008-07-04
09:57:04 UTC (rev 9069)
@@ -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.edit;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.jst.web.model.ReferenceObject;
+import org.jboss.tools.seam.pages.xml.model.SeamPagesConstants;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.PagesElement;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SelectionUtil {
+
+ /**
+ * Returns array of XModelObject objects associated with selection
+ * containing PagesEditPart objects.
+ * @param ss
+ * @return
+ */
+ public static XModelObject[] getTargets(IStructuredSelection ss) {
+ if(ss.size() < 2) return null;
+ Iterator it = ss.iterator();
+ ArrayList<XModelObject> l = new ArrayList<XModelObject>();
+ while(it.hasNext()) {
+ XModelObject o = getTarget(it.next());
+ if(o != null) l.add(o);
+ }
+ return l.toArray(new XModelObject[0]);
+ }
+
+ /**
+ * Returns XModelObject associated with PagesEditPart
+ * @param selected
+ * @return
+ */
+ public static XModelObject getTarget(Object selected) {
+ if(selected instanceof ParamEditPart) {
+ ParamEditPart part = (ParamEditPart)selected;
+ Object partModel = part.getParamModel().getParent();
+ if(partModel instanceof PagesElement) {
+ XModelObject o = (XModelObject)((PagesElement)partModel).getData();
+ if(o instanceof ReferenceObject) {
+ XModelObject p = ((ReferenceObject)o).getReference();
+ if(p != null) {
+ String name = part.getParamModel().getName();
+ XModelObject[] cs = p.getChildren();
+ for (int i = 0; i < cs.length; i++) {
+ if(name.equals(cs[i].getAttributeValue(SeamPagesConstants.ATTR_NAME))) {
+ return cs[i];
+ }
+ }
+
+ }
+ }
+ return o;
+ }
+ }
+ if(selected instanceof PagesEditPart) {
+ PagesEditPart part = (PagesEditPart)selected;
+ Object partModel = part.getModel();
+ if(partModel instanceof PagesElement) {
+ return (XModelObject)((PagesElement)partModel).getData();
+ }
+ }
+ if(selected instanceof LinkEditPart) {
+ LinkEditPart part = (LinkEditPart)selected;
+ Object partModel = part.getModel();
+ if(partModel instanceof Link) {
+ return (XModelObject)((Link)partModel).getData();
+ }
+ }
+
+ return null;
+ }
+
+}