blob: c5c1beed86f1af89e692630a60130674e891a045 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2010 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.gef.internal.ui.palette.editparts;
import org.eclipse.swt.graphics.Color;
import org.eclipse.draw2d.Border;
import org.eclipse.draw2d.ButtonModel;
import org.eclipse.draw2d.ChangeEvent;
import org.eclipse.draw2d.ChangeListener;
import org.eclipse.draw2d.FigureUtilities;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.ImageFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.Toggle;
import org.eclipse.gef.internal.InternalImages;
import org.eclipse.gef.internal.ui.palette.PaletteColorUtil;
import org.eclipse.gef.ui.palette.PaletteMessages;
/**
* This is the figure for the pinned and unpinned toggle.
*
* @author crevells
* @since 3.4
*/
public class PinFigure extends Toggle {
private static final Color PIN_HOTSPOT_COLOR = FigureUtilities.mixColors(
PaletteColorUtil.WIDGET_LIST_BACKGROUND,
PaletteColorUtil.WIDGET_NORMAL_SHADOW, 0.60);
private static final Border TOOLTIP_BORDER = new MarginBorder(0, 2, 1, 0);
public PinFigure() {
super(new ImageFigure(InternalImages.get(InternalImages.IMG_UNPINNED)));
setRolloverEnabled(true);
setRequestFocusEnabled(false);
Label tooltip = new Label(PaletteMessages.TOOLTIP_PIN_FIGURE);
tooltip.setBorder(TOOLTIP_BORDER);
setToolTip(tooltip);
setOpaque(false);
addChangeListener(new ChangeListener() {
public void handleStateChanged(ChangeEvent e) {
if (e.getPropertyName().equals(ButtonModel.SELECTED_PROPERTY)) {
if (isSelected()) {
((ImageFigure) (getChildren().get(0)))
.setImage(InternalImages
.get(InternalImages.IMG_PINNED));
((Label) getToolTip())
.setText(PaletteMessages.TOOLTIP_UNPIN_FIGURE);
} else {
((ImageFigure) (getChildren().get(0)))
.setImage(InternalImages
.get(InternalImages.IMG_UNPINNED));
((Label) getToolTip())
.setText(PaletteMessages.TOOLTIP_PIN_FIGURE);
}
}
}
});
}
protected void paintFigure(Graphics graphics) {
super.paintFigure(graphics);
ButtonModel model = getModel();
if (isRolloverEnabled() && model.isMouseOver()) {
graphics.setBackgroundColor(PIN_HOTSPOT_COLOR);
graphics.fillRoundRectangle(getClientArea().getCopy().shrink(1, 1),
3, 3);
}
}
}