blob: a205d623114319e7ad7191d3d86843181e60701c [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2010 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.internal.contextbuttons;
import java.awt.Rectangle;
import org.eclipse.graphiti.tb.IContextButtonEntry;
import org.eclipse.graphiti.util.IColorConstant;
/**
* A positioned context button is a container for an {@link IContextButtonEntry}
* and several graphical attributes used to paint a context button.
*
* @noinstantiate This class is not intended to be instantiated by clients.
* @noextend This class is not intended to be subclassed by clients.
*/
public class PositionedContextButton {
/**
* The context button entry as described in {@link #getContextButtonEntry()}
* .
*/
private IContextButtonEntry contextButtonEntry;
/**
* The position as described in {@link #getPosition()}.
*/
private Rectangle position;
/**
* The line-width as described in {@link #getLineWidth()}.
*/
private int lineWidth = 1;
/**
* The corner-radius as described in {@link #getCornerRadius()}.
*/
private int cornerRadius = 4;
/**
* The outer line color as described in {@link #getOuterLineColor()}.
*/
private IColorConstant outerLineColor = IColorConstant.BLACK;
/**
* The middle line color as described in {@link #getMiddleLineColor()}.
*/
private IColorConstant middleLineColor = IColorConstant.GRAY;
/**
* The fill color as described in {@link #getFillColor()}.
*/
private IColorConstant fillColor = IColorConstant.LIGHT_GRAY;
/**
* The default opacity as described in {@link #getDefaultOpacity()}.
*/
private double defaultOpacity = 1.0;
/**
* The mouse-over opacity as described in {@link #getMouseOverOpacity()}.
*/
private double mouseOverOpacity = 1.0;
/**
* The mouse-down opacity as described in {@link #getMouseDownOpacity()}.
*/
private double mouseDownOpacity = 1.0;
// =============================== constructor ============================
/**
* Creates a new PositionedContextbutton.
*
* @param contextButtonEntry
* The context button entry as defined in
* {@link #getContextButtonEntry()}.
* @param position
* The position as described in {@link #getPosition()}.
*/
public PositionedContextButton(IContextButtonEntry contextButtonEntry, Rectangle position) {
this.contextButtonEntry = contextButtonEntry;
this.position = position;
}
// =============================== set values =============================
/**
* Sets the graphical attributes for the line(s).
*
* @param lineWidth
* The line-width as described in {@link #getLineWidth()}.
* @param cornerRadius
* The corner radius as described in {@link #getCornerRadius()}.
*/
public final void setLine(int lineWidth, int cornerRadius) {
this.lineWidth = lineWidth;
this.cornerRadius = cornerRadius;
}
/**
* Sets the graphical color attributes.
*
* @param outerLineColor
* The color of the outer line as described in
* {@link #getOuterLineColor()}.
* @param middleLineColor
* The color of the middle line as described in
* {@link #getMiddleLineColor()}.
* @param fillColor
* The fill color as described in {@link #getFillColor()}.
*/
public final void setColors(IColorConstant outerLineColor, IColorConstant middleLineColor, IColorConstant fillColor) {
this.outerLineColor = outerLineColor;
this.middleLineColor = middleLineColor;
this.fillColor = fillColor;
}
/**
* Sets the graphical opacity attributes.
*
* @param defaultOpacity
* The default opacity as described in
* {@link #getDefaultOpacity()}.
* @param mouseOverOpacity
* The mouse-over opacity as described in
* {@link #getMouseOverOpacity()}.
* @param mouseDownOpacity
* The mouse-down opacity as described in
* {@link #getMouseDownOpacity()}.
*/
public final void setOpacity(double defaultOpacity, double mouseOverOpacity, double mouseDownOpacity) {
this.defaultOpacity = defaultOpacity;
this.mouseOverOpacity = mouseOverOpacity;
this.mouseDownOpacity = mouseDownOpacity;
}
// =============================== get values =============================
/**
* Returns the context button entry, which contains the logical definition
* of the context button. The context button entry is set in the constructor
* and can not be changed afterwards.
*
* @return The context button entry, which contains the logical definition
* of the context button.
*/
public final IContextButtonEntry getContextButtonEntry() {
return contextButtonEntry;
}
/**
* Returns the position (location and size) of the context button. The
* position is defined in absolute coordinates. It is not adjusted to the
* current zoom-level. The position is set in the constructor and can not be
* changed afterwards.
*
* @return The position (location and size) of the context button.
*/
public final Rectangle getPosition() {
return position;
}
/**
* Returns the line-width of the context button outline(s). It is not
* adjusted to the current zoom-level.
*
* @return The line-width of the context button outline(s).
*/
public final int getLineWidth() {
return lineWidth;
}
/**
* Returns the corner radius of the context button outline(s). It is not
* adjusted to the current zoom-level.
*
* @return The corner radius of the context button outline(s).
*/
public final int getCornerRadius() {
return cornerRadius;
}
/**
* Returns the color of the outer line of the context button. Directly
* inside this outer line the middle line is painted (see
* {@link #getMiddleLineColor()}).
*
* @return The color of the outer line of the context button.
*/
public final IColorConstant getOuterLineColor() {
return outerLineColor;
}
/**
* Returns the color of the middle line of the context button. It is painted
* directly inside the outer line (see {@link #getOuterLineColor()}).
*
* @return The color of the middle line of the context button.
*/
public final IColorConstant getMiddleLineColor() {
return middleLineColor;
}
/**
* Returns the fill color of the context button.
*
* @return The fill color of the context button.
*/
public final IColorConstant getFillColor() {
return fillColor;
}
/**
* Returns the default opacity of the context button. Values are between 0.0
* (invisible) and 1.0 (opaque).
*
* @return The default opacity of the context button.
*/
public final double getDefaultOpacity() {
return defaultOpacity;
}
/**
* Returns the mouse-over opacity of the context button. Values are between
* 0.0 (invisible) and 1.0 (opaque).
* <p>
* The mouse-over opacity is used when the mouse is over the context button,
* to give visual feedback to the user.
*
* @return The mouse-over opacity of the context button.
*/
public final double getMouseOverOpacity() {
return mouseOverOpacity;
}
/**
* Returns the mouse-down opacity of the context button. Values are between
* 0.0 (invisible) and 1.0 (opaque).
* <p>
* The mouse-down opacity is used when the context button is pressed, to
* give visual feedback to the user.
*
* @return The mouse-down opacity of the context button.
*/
public final double getMouseDownOpacity() {
return mouseDownOpacity;
}
}