Author: scabanovich
Date: 2008-06-07 06:16:52 -0400 (Sat, 07 Jun 2008)
New Revision: 8628
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand2.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPolicy.java
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/ecore/pages/impl/PagesModelImpl.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java
Log:
JBIDE-2307
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand.java 2008-06-07
10:15:36 UTC (rev 8627)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand.java 2008-06-07
10:16:52 UTC (rev 8628)
@@ -11,6 +11,7 @@
package org.jboss.tools.seam.ui.pages.editor.commands;
import org.eclipse.gef.commands.Command;
+import org.jboss.tools.seam.pages.xml.model.handlers.PageAdopt;
import org.jboss.tools.seam.ui.pages.editor.dnd.DndHelper;
import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
@@ -23,15 +24,28 @@
super("ReconnectSourceLinkCommand");
}
- public void setLink(Link child){
+ public void setLink(Link child) {
ReconnectSourceLinkCommand.child= child;
}
- public boolean canExecute(){
- return DndHelper.isDropEnabled(child.getData());
+
+ public boolean canExecute() {
+ PageAdopt.move_case = true;
+ try {
+ return DndHelper.isDropEnabled(child.getData());
+ } finally {
+ PageAdopt.move_case = false;
+ }
}
- public void execute(){
- if(child != null)DndHelper.drop(child.getData());
+ public void execute() {
+ if(child != null) {
+ PageAdopt.move_case = true;
+ try {
+ DndHelper.drop(child.getData());
+ } finally {
+ PageAdopt.move_case = false;
+ }
+ }
child = null;
}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand2.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand2.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/commands/ReconnectSourceLinkCommand2.java 2008-06-07
10:16:52 UTC (rev 8628)
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * 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.commands;
+
+import org.eclipse.gef.commands.Command;
+
+import org.jboss.tools.seam.pages.xml.model.handlers.PageAdopt;
+import org.jboss.tools.seam.ui.pages.editor.dnd.DndHelper;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Page;
+
+public class ReconnectSourceLinkCommand2 extends Command{
+
+ static Page page = null;
+
+ public ReconnectSourceLinkCommand2(){
+ super("ReconnectSourceLinkCommand2");
+ }
+
+ public void setPage(Page page){
+ ReconnectSourceLinkCommand2.page = page;
+ }
+ public boolean canExecute() {
+ PageAdopt.move_case = true;
+ try {
+ return DndHelper.isDropEnabled(page.getData());
+ } finally {
+ PageAdopt.move_case = false;
+ }
+ }
+
+ public void execute(){
+ if(page != null) {
+ PageAdopt.move_case = true;
+ try {
+ DndHelper.drop(page.getData());
+ } finally {
+ PageAdopt.move_case = false;
+ }
+ }
+ page = null;
+ }
+
+ public boolean canUndo() {
+ return false;
+ }
+}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/ecore/pages/impl/PagesModelImpl.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/ecore/pages/impl/PagesModelImpl.java 2008-06-07
10:15:36 UTC (rev 8627)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/ecore/pages/impl/PagesModelImpl.java 2008-06-07
10:16:52 UTC (rev 8628)
@@ -7,8 +7,10 @@
package org.jboss.tools.seam.ui.pages.editor.ecore.pages.impl;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
@@ -327,16 +329,29 @@
PagesElement removed = findElement(event.getInfo());
if(removed != null) {
Link[] ls = removed.getOutputLinks().toArray(new Link[0]);
+ Set<Link> r = new HashSet<Link>();
for (int i = 0; i < ls.length; i++) {
ls[i].setFromElement(null);
ls[i].setToElement(null);
+ r.add(ls[i]);
}
ls = removed.getInputLinks().toArray(new Link[0]);
for (int i = 0; i < ls.length; i++) {
- ls[i].setFromElement(null);
+// ls[i].setFromElement(null);
ls[i].setToElement(null);
+// r.add(ls[i]);
}
+ if(!r.isEmpty()) {
+ Iterator<Link> it = linksByPath.values().iterator();
+ while(it.hasNext()) {
+ Link l = it.next();
+ if(r.contains(l)) {
+ it.remove();
+ }
+ }
+ }
getChildren().remove(removed);
+
}
} else if(findElement(target) != null) {
Link removed = findLink(event.getInfo());
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java 2008-06-07
10:15:36 UTC (rev 8627)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/LinkEndpointEditPolicy.java 2008-06-07
10:16:52 UTC (rev 8628)
@@ -28,6 +28,8 @@
import org.eclipse.gef.handles.AbstractHandle;
import org.eclipse.gef.handles.ConnectionHandle;
import org.eclipse.gef.tools.ConnectionEndpointTracker;
+import org.jboss.tools.seam.ui.pages.editor.dnd.DndHelper;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Link;
import org.jboss.tools.seam.ui.pages.editor.figures.FigureFactory;
@@ -160,7 +162,7 @@
public void mouseDown(MouseEvent me, EditPartViewer epv) {
super.mouseDown(me, epv);
removeJSFHandles();
- //DndHelper.drag(((ILink) getHost().getModel()).getSource());
+ DndHelper.drag(((Link) getHost().getModel()).getData());
}
public void mouseUp(MouseEvent me, EditPartViewer epv) {
@@ -170,7 +172,7 @@
}
protected boolean handleNativeDragFinished(DragSourceEvent event) {
- //DndHelper.dragEnd();
+ DndHelper.dragEnd();
return false;
}
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java 2008-06-07
10:15:36 UTC (rev 8627)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPart.java 2008-06-07
10:16:52 UTC (rev 8628)
@@ -126,8 +126,8 @@
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null);
// installEditPolicy(EditPolicy.COMPONENT_ROLE, new PageEditPolicy());
// installEditPolicy(EditPolicy.LAYOUT_ROLE, new JSFFlowEditPolicy());
- // installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,
- // new PageEditPolicy());
+ installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE,
+ new PageEditPolicy());
}
/**
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPolicy.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPolicy.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui.pages/src/org/jboss/tools/seam/ui/pages/editor/edit/PageEditPolicy.java 2008-06-07
10:16:52 UTC (rev 8628)
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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.List;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.requests.ReconnectRequest;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.seam.ui.pages.editor.commands.ReconnectSourceLinkCommand;
+import org.jboss.tools.seam.ui.pages.editor.commands.ReconnectSourceLinkCommand2;
+import org.jboss.tools.seam.ui.pages.editor.commands.ReconnectTargetLinkCommand;
+import org.jboss.tools.seam.ui.pages.editor.dnd.DndHelper;
+import org.jboss.tools.seam.ui.pages.editor.ecore.pages.Page;
+
+public class PageEditPolicy extends org.eclipse.gef.editpolicies.ComponentEditPolicy {
+
+ private PageEditPart getPageEditPart() {
+ return (PageEditPart) getHost();
+ }
+
+ public Command getCommand(Request request) {
+ if (RequestConstants.REQ_CONNECTION_END.equals(request.getType()))
+ return getConnectionEndCommand();
+ else if (RequestConstants.REQ_RECONNECT_SOURCE
+ .equals(request.getType())) {
+ return getReconnectionSourceCommand((ReconnectRequest) request);
+ } else if (RequestConstants.REQ_RECONNECT_TARGET.equals(request
+ .getType()))
+ return getReconnectionTargetCommand((ReconnectRequest) request);
+
+ return super.getCommand(request);
+ }
+
+ protected Command getConnectionEndCommand() {
+ Page p = (Page)getPageEditPart().getModel();
+ if (!DndHelper.isDropEnabled((XModelObject)p.getData()))
+ return null;
+ ConnectionEndCommand command = new ConnectionEndCommand();
+ command.setChild(p);
+ return command;
+ }
+
+ protected Command getReconnectionSourceCommand(ReconnectRequest request) {
+ ReconnectSourceLinkCommand command = new ReconnectSourceLinkCommand();
+ ConnectionAnchor ctor = getPageEditPart().getSourceConnectionAnchor(
+ request);
+ List list = getPageEditPart().getSourceConnections();
+ LinkEditPart part;
+ for (int i = 0; i < list.size(); i++) {
+ part = (LinkEditPart) list.get(i);
+ if (part.equals(request.getConnectionEditPart())) {
+ continue;
+ }
+ if (part != null) {
+ if (part.getConnectionFigure().getSourceAnchor().equals(ctor)) {
+ command.setLink(part.getLink());
+ return command;
+ }
+ }
+ }
+ ReconnectSourceLinkCommand2 command2 = new ReconnectSourceLinkCommand2();
+ command2.setPage(getPageEditPart().getPageModel());
+ return command2;
+ }
+
+ protected Command getReconnectionTargetCommand(ReconnectRequest request) {
+ Page p = (Page)getPageEditPart().getModel();
+ ReconnectTargetLinkCommand command = new ReconnectTargetLinkCommand();
+ command.setChild(p);
+ return command;
+ }
+
+ static class ConnectionEndCommand extends org.eclipse.gef.commands.Command {
+
+ Page child = null;
+
+ public ConnectionEndCommand() {
+ super("ConnectionEndCommand");
+ }
+
+ public void setChild(Page child) {
+ this.child = child;
+ }
+
+ public void execute() {
+ }
+
+ public boolean canUndo() {
+ return false;
+ }
+ }
+
+}