diff options
author | Laurent Redor | 2015-02-26 11:27:22 +0000 |
---|---|---|
committer | Laurent Redor | 2015-02-27 11:15:50 +0000 |
commit | 987e568a7a28924dcc4da9cbbd83d3f7132c4e3d (patch) | |
tree | 6c420b6ab700e7d81bf164e774ac3f162980e4d1 | |
parent | f1ced527096ebbd0107b278597b45d119eef82f2 (diff) | |
download | org.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.xml | 11 | ||||
-rw-r--r-- | plugins/org.eclipse.sirius.ui.debug/src/org/eclipse/sirius/ui/debug/statusline/StatusLineEditPolicyProvider.java | 105 |
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); + } +} |