Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpguilet2017-12-05 14:11:30 +0000
committerLaurent Redor2017-12-20 17:19:57 +0000
commit5f0b59fa8b6d88e0c862bd676c1ae19c378768f6 (patch)
treec020c748001eb743278deeb913990a7c10adaf54
parent06a3692998e4dddce596ac45330ebb5d91d413d0 (diff)
downloadorg.eclipse.sirius-5f0b59fa8b6d88e0c862bd676c1ae19c378768f6.tar.gz
org.eclipse.sirius-5f0b59fa8b6d88e0c862bd676c1ae19c378768f6.tar.xz
org.eclipse.sirius-5f0b59fa8b6d88e0c862bd676c1ae19c378768f6.zip
[527109] Change double click behavior while in showing mode
A double click done on a diagram edit part now switch its visibility status instead of applying any existing double click tool. As a reminder, the goal of the four commits concerning 527109 is a POC. Several tasks are remaining to have a fully operational feature. A complete list will be added directly in bug 527109, a not exhaustive list is: -Double click should change the hidden status and not the visibility one that is caused by several reasons. -Double click on an hidden edge should also reveal source and target node -Check double click policy on all kind of parts -The showing mode button's icon could be improved -Layouting and showing mode should be exclusive. -Transparency on hidden elements should be available for all parts. Bug: 527109 Change-Id: I248779b3f44a20ca5e8b600a406d0fe33aba0bc4 Signed-off-by: pguilet <pierre.guilet@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicy.java30
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java10
2 files changed, 32 insertions, 8 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicy.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicy.java
index 9d31c71351..f6a41f8d3b 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicy.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicy.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 THALES GLOBAL SERVICES.
+ * Copyright (c) 2007, 2017 THALES GLOBAL SERVICES.
* 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
@@ -11,6 +11,7 @@
package org.eclipse.sirius.diagram.ui.graphical.edit.policies;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.gef.EditPart;
@@ -20,7 +21,9 @@ import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.OpenEditPolicy;
import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.DDiagramElement;
+import org.eclipse.sirius.diagram.Messages;
import org.eclipse.sirius.diagram.description.DiagramElementMapping;
import org.eclipse.sirius.diagram.tools.api.command.IDiagramCommandFactory;
import org.eclipse.sirius.diagram.tools.api.command.IDiagramCommandFactoryProvider;
@@ -42,6 +45,7 @@ public class DoubleClickEditPolicy extends OpenEditPolicy {
*/
@Override
protected Command getOpenCommand(Request request) {
+ Command result = null;
EditPart editPart = this.getHost();
Object model = editPart.getModel();
if (model instanceof View) {
@@ -49,7 +53,25 @@ public class DoubleClickEditPolicy extends OpenEditPolicy {
if (element instanceof DDiagramElement) {
final DDiagramElement ddiagramElement = (DDiagramElement) element;
DiagramElementMapping diagramElementMapping = ddiagramElement.getDiagramElementMapping();
- if (diagramElementMapping.getDoubleClickDescription() != null) {
+ DDiagram parentDiagram = ddiagramElement.getParentDiagram();
+ if (parentDiagram.isIsInShowingMode()) {
+ final TransactionalEditingDomain transactionalEditingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
+ RecordingCommand cmd = new RecordingCommand(transactionalEditingDomain) {
+ @Override
+ protected void doExecute() {
+ ddiagramElement.setVisible(!ddiagramElement.isVisible());
+ }
+
+ @Override
+ public String getLabel() {
+ if (ddiagramElement.isVisible()) {
+ return Messages.HideDDiagramElement_hideElementLabel;
+ }
+ return Messages.RevealDDiagramElements_revealElementLabel;
+ }
+ };
+ result = new ICommandProxy(new GMFCommandWrapper(transactionalEditingDomain, cmd));
+ } else if (diagramElementMapping.getDoubleClickDescription() != null) {
final TransactionalEditingDomain transactionalEditingDomain = TransactionUtil.getEditingDomain(element);
final DDiagramEditor diagramEditor = (DDiagramEditor) this.getHost().getViewer().getProperty(DDiagramEditor.EDITOR_ID);
final Object adapter = diagramEditor.getAdapter(IDiagramCommandFactoryProvider.class);
@@ -57,11 +79,11 @@ public class DoubleClickEditPolicy extends OpenEditPolicy {
final IDiagramCommandFactory emfCommandFactory = cmdFactoryProvider.getCommandFactory(transactionalEditingDomain);
final org.eclipse.emf.common.command.Command cmd = emfCommandFactory.buildDoubleClickOnElementCommandFromTool(ddiagramElement, diagramElementMapping.getDoubleClickDescription());
final TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
- return new ICommandProxy(new GMFCommandWrapper(editingDomain, cmd));
+ result = new ICommandProxy(new GMFCommandWrapper(editingDomain, cmd));
}
}
}
- return null;
+ return result;
}
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java
index 98f483eba0..4fd9771ae4 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/graphical/edit/policies/DoubleClickEditPolicyProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 THALES GLOBAL SERVICES.
+ * Copyright (c) 2007, 2017 THALES GLOBAL SERVICES.
* 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
@@ -22,7 +22,6 @@ import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.CreateEditPolicies
import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.sirius.diagram.DDiagramElement;
-import org.eclipse.sirius.diagram.description.DiagramElementMapping;
import org.eclipse.sirius.diagram.ui.edit.api.part.IAbstractDiagramNodeEditPart;
import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramEdgeEditPart;
import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramNameEditPart;
@@ -50,6 +49,7 @@ public class DoubleClickEditPolicyProvider implements IEditPolicyProvider {
*
* @see org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider#createEditPolicies(org.eclipse.gef.EditPart)
*/
+ @Override
public void createEditPolicies(EditPart editPart) {
if (editPart instanceof IAbstractDiagramNodeEditPart || editPart instanceof IDiagramEdgeEditPart || editPart instanceof IDiagramNameEditPart) {
editPart.installEditPolicy(EditPolicyRoles.OPEN_ROLE, new DoubleClickEditPolicy());
@@ -61,6 +61,7 @@ public class DoubleClickEditPolicyProvider implements IEditPolicyProvider {
*
* @see org.eclipse.gmf.runtime.common.core.service.IProvider#addProviderChangeListener(org.eclipse.gmf.runtime.common.core.service.IProviderChangeListener)
*/
+ @Override
public void addProviderChangeListener(IProviderChangeListener listener) {
this.listeners.add(listener);
}
@@ -70,6 +71,7 @@ public class DoubleClickEditPolicyProvider implements IEditPolicyProvider {
*
* @see org.eclipse.gmf.runtime.common.core.service.IProvider#provides(org.eclipse.gmf.runtime.common.core.service.IOperation)
*/
+ @Override
public boolean provides(IOperation operation) {
if (operation instanceof CreateEditPoliciesOperation) {
CreateEditPoliciesOperation castedOperation = (CreateEditPoliciesOperation) operation;
@@ -78,8 +80,7 @@ public class DoubleClickEditPolicyProvider implements IEditPolicyProvider {
if (model instanceof View) {
EObject element = ((View) model).getElement();
if (element instanceof DDiagramElement) {
- DiagramElementMapping diagramElementMapping = ((DDiagramElement) element).getDiagramElementMapping();
- return diagramElementMapping.getDoubleClickDescription() != null;
+ return true;
}
}
}
@@ -91,6 +92,7 @@ public class DoubleClickEditPolicyProvider implements IEditPolicyProvider {
*
* @see org.eclipse.gmf.runtime.common.core.service.IProvider#removeProviderChangeListener(org.eclipse.gmf.runtime.common.core.service.IProviderChangeListener)
*/
+ @Override
public void removeProviderChangeListener(IProviderChangeListener listener) {
this.listeners.remove(listener);
}

Back to the top