| /******************************************************************************* |
| * <copyright> |
| * |
| * Copyright (c) 2005, 2012 SAP AG. |
| * 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: |
| * SAP AG - initial API, implementation and documentation |
| * |
| * </copyright> |
| * |
| *******************************************************************************/ |
| package org.eclipse.graphiti.ui.internal.policy; |
| |
| import org.eclipse.draw2d.IFigure; |
| import org.eclipse.gef.EditPart; |
| import org.eclipse.gef.GraphicalEditPart; |
| import org.eclipse.gef.Request; |
| import org.eclipse.gef.RequestConstants; |
| import org.eclipse.gef.editpolicies.GraphicalEditPolicy; |
| import org.eclipse.graphiti.platform.ga.IVisualState; |
| import org.eclipse.graphiti.platform.ga.IVisualStateHolder; |
| import org.eclipse.graphiti.ui.platform.IConfigurationProvider; |
| |
| /** |
| * Gives feedback on hovering. It does not create any commands. |
| * |
| * @see org.eclipse.graphiti.ui.internal.policy.IEditPolicyFactory#createShapeHighlightEditPolicy() |
| * @noinstantiate This class is not intended to be instantiated by clients. |
| * @noextend This class is not intended to be subclassed by clients. |
| */ |
| public class ShapeHoverEditPolicy extends GraphicalEditPolicy { |
| |
| private IConfigurationProvider _configurationProvider; |
| |
| /** |
| * Creates a new ShapeHighlightEditPolicy. |
| * |
| * @param configurationProvider |
| * The IConfigurationProviderInternal. |
| */ |
| protected ShapeHoverEditPolicy(IConfigurationProvider configurationProvider) { |
| _configurationProvider = configurationProvider; |
| } |
| |
| protected final IConfigurationProvider getConfigurationProvider() { |
| return _configurationProvider; |
| } |
| |
| /** |
| * Returns a _target EditPart only, if the request is REQ_SELECTION_HOVER. |
| * By this it filters all other requests out (note, that this EditPolicy |
| * does not overwrite getCommand(), which is usually used to filter the |
| * requests). |
| * |
| * @see org.eclipse.gef.EditPolicy#getTargetEditPart(org.eclipse.gef.Request) |
| */ |
| @Override |
| public EditPart getTargetEditPart(Request request) { |
| return request.getType().equals(RequestConstants.REQ_SELECTION_HOVER) ? getHost() : null; |
| } |
| |
| /** |
| * Is called, when the previously 'selected' EditPart is 'deselected'. It |
| * then disables the highlight of the selected EditPart. |
| * |
| * @see org.eclipse.gef.EditPolicy#eraseTargetFeedback(org.eclipse.gef.Request) |
| */ |
| @Override |
| public void eraseTargetFeedback(Request request) { |
| IFigure containerFigure = ((GraphicalEditPart) getHost()).getFigure(); |
| if (containerFigure instanceof IVisualStateHolder) { |
| IVisualStateHolder feedbackRenderer = (IVisualStateHolder) containerFigure; |
| IVisualState vs = feedbackRenderer.getVisualState(); |
| vs.setHoverFeedback(IVisualState.HOVER_OFF); |
| } |
| } |
| |
| /** |
| * Is called when the EditPart is 'selected'. It then checks, if the request |
| * is one of those, which can be handled by the selected EditPart (which |
| * means that EditPart.getCommand(request) returns an executeable command. |
| * In this case it highlights the selected EditPart. |
| * |
| * @see org.eclipse.gef.EditPolicy#showTargetFeedback(org.eclipse.gef.Request) |
| */ |
| @Override |
| public void showTargetFeedback(Request request) { |
| if (request.getType().equals(RequestConstants.REQ_SELECTION_HOVER)) { |
| IFigure containerFigure = ((GraphicalEditPart) getHost()).getFigure(); |
| if (containerFigure instanceof IVisualStateHolder) { |
| IVisualStateHolder feedbackRenderer = (IVisualStateHolder) containerFigure; |
| IVisualState vs = feedbackRenderer.getVisualState(); |
| vs.setHoverFeedback(IVisualState.HOVER_ON); |
| } |
| } |
| } |
| |
| } |