Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2015-02-26 11:27:22 +0000
committerLaurent Redor2015-02-27 11:15:50 +0000
commit987e568a7a28924dcc4da9cbbd83d3f7132c4e3d (patch)
tree6c420b6ab700e7d81bf164e774ac3f162980e4d1
parentf1ced527096ebbd0107b278597b45d119eef82f2 (diff)
downloadorg.eclipse.sirius-987e568a7a28924dcc4da9cbbd83d3f7132c4e3d.tar.gz
org.eclipse.sirius-987e568a7a28924dcc4da9cbbd83d3f7132c4e3d.tar.xz
org.eclipse.sirius-987e568a7a28924dcc4da9cbbd83d3f7132c4e3d.zip
[cleanup] Display mouse location
A Part of initial commit [1], about custom view to help debug Sirius-specific issues, has been forgotten. This commit adds it. This is to display the mouse location. [1] http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=5dae0dea4848261a90234fa25ba8501271e9d6c2 Change-Id: I40f89a66235dece65899c96e98005a8d32fd633e Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.ui.debug/plugin.xml11
-rw-r--r--plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/statusline/StatusLineEditPolicyProvider.java105
2 files changed, 115 insertions, 1 deletions
diff --git a/plugins/org.eclipse.sirius.ui.debug/plugin.xml b/plugins/org.eclipse.sirius.ui.debug/plugin.xml
index 09d166884c..37050973a6 100644
--- a/plugins/org.eclipse.sirius.ui.debug/plugin.xml
+++ b/plugins/org.eclipse.sirius.ui.debug/plugin.xml
@@ -36,11 +36,20 @@
</propertySections>
</extension>
<extension
+ point="org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders">
+ <editpolicyProvider
+ class="org.eclipse.sirius.ui.debug.statusline.StatusLineEditPolicyProvider">
+ <Priority
+ name="Lowest">
+ </Priority>
+ </editpolicyProvider>
+ </extension>
+ <extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="toolbar:org.eclipse.ui.trim.status">
<toolbar
- id="fr.obeo.dsl.viewpoint.diagram.debug.statusline.mouseLocationContribution">
+ id="org.eclipse.sirius.ui.debug.statusline.mouseLocationContribution">
<control
class="org.eclipse.sirius.ui.debug.statusline.MouseLocationContribution"
id="contributions.mouseLocationContrib">
diff --git a/plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/statusline/StatusLineEditPolicyProvider.java b/plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/statusline/StatusLineEditPolicyProvider.java
new file mode 100644
index 0000000000..b905dea94e
--- /dev/null
+++ b/plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/statusline/StatusLineEditPolicyProvider.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2015 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.ui.debug.statusline;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.gmf.runtime.common.core.service.IOperation;
+import org.eclipse.gmf.runtime.common.core.service.IProviderChangeListener;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.CreateEditPoliciesOperation;
+import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * Provides Edit Policy on Diagram to display mouse location.
+ *
+ * @author ymortier
+ */
+public class StatusLineEditPolicyProvider implements IEditPolicyProvider {
+
+ /** the property change support. */
+ private final List<IProviderChangeListener> listeners;
+
+ /**
+ * Create a new {@link StatusLineEditPolicyProvider}.
+ */
+ public StatusLineEditPolicyProvider() {
+ this.listeners = new ArrayList<IProviderChangeListener>();
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider#createEditPolicies(org.eclipse.gef.EditPart)
+ */
+ public void createEditPolicies(final EditPart editPart) {
+ if (editPart instanceof DiagramEditPart) {
+ final DiagramEditPart diagramEditPart = (DiagramEditPart) editPart;
+ final RootEditPart root = diagramEditPart.getRoot();
+ final EditPartViewer viewer = root.getViewer();
+
+ if (viewer != null) {
+ final MouseListeners mouseListeners = new MouseListeners(viewer);
+
+ viewer.getControl().addDisposeListener(new DisposeListener() {
+
+ public void widgetDisposed(final DisposeEvent e) {
+ e.widget.removeDisposeListener(this);
+ if (e.widget instanceof Control) {
+ ((Control) e.widget).removeMouseMoveListener(mouseListeners);
+ ((Control) e.widget).removeMouseTrackListener(mouseListeners);
+ }
+ }
+ });
+ viewer.getControl().addMouseMoveListener(mouseListeners);
+ viewer.getControl().addMouseTrackListener(mouseListeners);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.gmf.runtime.common.core.service.IProvider#addProviderChangeListener(org.eclipse.gmf.runtime.common.core.service.IProviderChangeListener)
+ */
+ public void addProviderChangeListener(final IProviderChangeListener listener) {
+ this.listeners.add(listener);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.gmf.runtime.common.core.service.IProvider#provides(org.eclipse.gmf.runtime.common.core.service.IOperation)
+ */
+ public boolean provides(final IOperation operation) {
+ boolean result = false;
+ if (operation instanceof CreateEditPoliciesOperation) {
+ result = true;
+ }
+ return result;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.gmf.runtime.common.core.service.IProvider#removeProviderChangeListener(org.eclipse.gmf.runtime.common.core.service.IProviderChangeListener)
+ */
+ public void removeProviderChangeListener(final IProviderChangeListener listener) {
+ this.listeners.remove(listener);
+ }
+}

Back to the top