/******************************************************************************* * Copyright (c) 2006, 2007 g-Eclipse Consortium * 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 * * Initial development of the original code was made for the g-Eclipse project * funded by European Union project number: FP6-IST-034327 * http://www.geclipse.eu/ * * Contributors: * RUR (http://acet.rdg.ac.uk/) * - Ashish Thandavan - initial API and implementation ******************************************************************************/ package eu.geclipse.workflow.ui.edit.policies; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.RectangleFigure; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.editpolicies.SelectionEditPolicy; import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; /** * @generated */ public class WorkflowTextSelectionEditPolicy extends SelectionEditPolicy { /** * @generated */ private IFigure selectionFeedbackFigure; /** * @generated */ private IFigure focusFeedbackFigure; /** * @generated */ @Override protected void showPrimarySelection() { if( getHostFigure() instanceof WrapLabel ) { ( ( WrapLabel )getHostFigure() ).setSelected( true ); ( ( WrapLabel )getHostFigure() ).setFocus( true ); } else { showSelection(); showFocus(); } } /** * @generated */ @Override protected void showSelection() { if( getHostFigure() instanceof WrapLabel ) { ( ( WrapLabel )getHostFigure() ).setSelected( true ); ( ( WrapLabel )getHostFigure() ).setFocus( false ); } else { hideSelection(); addFeedback( selectionFeedbackFigure = createSelectionFeedbackFigure() ); refreshSelectionFeedback(); hideFocus(); } } /** * @generated */ @Override protected void hideSelection() { if( getHostFigure() instanceof WrapLabel ) { ( ( WrapLabel )getHostFigure() ).setSelected( false ); ( ( WrapLabel )getHostFigure() ).setFocus( false ); } else { if( selectionFeedbackFigure != null ) { removeFeedback( selectionFeedbackFigure ); selectionFeedbackFigure = null; } hideFocus(); } } /** * @generated */ @Override protected void showFocus() { if( getHostFigure() instanceof WrapLabel ) { ( ( WrapLabel )getHostFigure() ).setFocus( true ); } else { hideFocus(); addFeedback( focusFeedbackFigure = createFocusFeedbackFigure() ); refreshFocusFeedback(); } } /** * @generated */ @Override protected void hideFocus() { if( getHostFigure() instanceof WrapLabel ) { ( ( WrapLabel )getHostFigure() ).setFocus( false ); } else { if( focusFeedbackFigure != null ) { removeFeedback( focusFeedbackFigure ); focusFeedbackFigure = null; } } } /** * @generated */ protected Rectangle getFeedbackBounds() { Rectangle bounds; if( getHostFigure() instanceof Label ) { bounds = ( ( Label )getHostFigure() ).getTextBounds(); bounds.intersect( getHostFigure().getBounds() ); } else { bounds = getHostFigure().getBounds().getCopy(); } getHostFigure().getParent().translateToAbsolute( bounds ); getFeedbackLayer().translateToRelative( bounds ); return bounds; } /** * @generated */ protected IFigure createSelectionFeedbackFigure() { if( getHostFigure() instanceof Label ) { Label feedbackFigure = new Label(); feedbackFigure.setOpaque( true ); feedbackFigure.setBackgroundColor( ColorConstants.menuBackgroundSelected ); feedbackFigure.setForegroundColor( ColorConstants.menuForegroundSelected ); return feedbackFigure; } else { RectangleFigure feedbackFigure = new RectangleFigure(); feedbackFigure.setFill( false ); return feedbackFigure; } } /** * @generated */ protected IFigure createFocusFeedbackFigure() { return new Figure() { @Override protected void paintFigure( Graphics graphics ) { graphics.drawFocus( getBounds().getResized( -1, -1 ) ); } }; } /** * @generated */ protected void updateLabel( Label target ) { Label source = ( Label )getHostFigure(); target.setText( source.getText() ); target.setTextAlignment( source.getTextAlignment() ); target.setFont( source.getFont() ); } /** * @generated */ protected void refreshSelectionFeedback() { if( selectionFeedbackFigure != null ) { if( selectionFeedbackFigure instanceof Label ) { updateLabel( ( Label )selectionFeedbackFigure ); selectionFeedbackFigure.setBounds( getFeedbackBounds() ); } else { selectionFeedbackFigure.setBounds( getFeedbackBounds().expand( 5, 5 ) ); } } } /** * @generated */ protected void refreshFocusFeedback() { if( focusFeedbackFigure != null ) { focusFeedbackFigure.setBounds( getFeedbackBounds() ); } } /** * @generated */ public void refreshFeedback() { refreshSelectionFeedback(); refreshFocusFeedback(); } }