All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.guise.framework.model.ui.PresentationModel Maven / Gradle / Ivy

There is a newer version: 0.5.3
Show newest version
/*
 * Copyright © 2005-2008 GlobalMentor, Inc. 
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package io.guise.framework.model.ui;

import java.net.URI;
import java.util.List;

import io.guise.framework.GuiseSession;
import io.guise.framework.component.layout.*;
import io.guise.framework.geometry.*;
import io.guise.framework.model.*;
import io.guise.framework.style.*;

import static com.globalmentor.java.Classes.*;

/**
 * Encapsulation of presentation-related information.
 * @author Garret Wilson
 */
public interface PresentationModel extends Model, Displayable {

	/** The bound property of the background color. */
	public static final String BACKGROUND_COLOR_PROPERTY = getPropertyName(PresentationModel.class, "backgroundColor");
	/** The bound property of the line near border color. */
	public static final String BORDER_LINE_NEAR_COLOR_PROPERTY = getPropertyName(PresentationModel.class, "borderLineNearColor");
	/** The bound property of the line far border color. */
	public static final String BORDER_LINE_FAR_COLOR_PROPERTY = getPropertyName(PresentationModel.class, "borderLineFarColor");
	/** The bound property of the page near border color. */
	public static final String BORDER_PAGE_NEAR_COLOR_PROPERTY = getPropertyName(PresentationModel.class, "borderPageNearColor");
	/** The bound property of the page far border color. */
	public static final String BORDER_PAGE_FAR_COLOR_PROPERTY = getPropertyName(PresentationModel.class, "borderPageFarColor");
	/** The bound property of the line near border extent. */
	public static final String BORDER_LINE_NEAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "borderLineNearExtent");
	/** The bound property of the line far border extent. */
	public static final String BORDER_LINE_FAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "borderLineFarExtent");
	/** The bound property of the page near border extent. */
	public static final String BORDER_PAGE_NEAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "borderPageNearExtent");
	/** The bound property of the page far border extent. */
	public static final String BORDER_PAGE_FAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "borderPageFarExtent");
	/** The bound property of the line near border style. */
	public static final String BORDER_LINE_NEAR_STYLE_PROPERTY = getPropertyName(PresentationModel.class, "borderLineNearStyle");
	/** The bound property of the line far border style. */
	public static final String BORDER_LINE_FAR_STYLE_PROPERTY = getPropertyName(PresentationModel.class, "borderLineFarStyle");
	/** The bound property of the page near border style. */
	public static final String BORDER_PAGE_NEAR_STYLE_PROPERTY = getPropertyName(PresentationModel.class, "borderPageNearStyle");
	/** The bound property of the page far border style. */
	public static final String BORDER_PAGE_FAR_STYLE_PROPERTY = getPropertyName(PresentationModel.class, "borderPageFarStyle");
	/** The bound property of the line near page near corner arc size. */
	public static final String CORNER_LINE_NEAR_PAGE_NEAR_ARC_SIZE_PROPERTY = getPropertyName(PresentationModel.class, "cornerLineNearPageNearArcSize");
	/** The bound property of the line far page near corner arc size. */
	public static final String CORNER_LINE_FAR_PAGE_NEAR_ARC_SIZE_PROPERTY = getPropertyName(PresentationModel.class, "cornerLineFarPageNearArcSize");
	/** The bound property of the line near page far corner arc size. */
	public static final String CORNER_LINE_NEAR_PAGE_FAR_ARC_SIZE_PROPERTY = getPropertyName(PresentationModel.class, "cornerLineNearPageFarArcSize");
	/** The bound property of the line far page far corner arc size. */
	public static final String CORNER_LINE_FAR_PAGE_FAR_ARC_SIZE_PROPERTY = getPropertyName(PresentationModel.class, "cornerLineFarPageFarArcSize");
	/** The bound property of the cursor. */
	public static final String CURSOR_PROPERTY = getPropertyName(PresentationModel.class, "cursor");
	/** The line extent (width in left-to-right top-to-bottom orientation) bound property. */
	public static final String LINE_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "lineExtent");
	/** The page extent (height in left-to-right top-to-bottom orientation) bound property. */
	public static final String PAGE_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "pageExtent");
	/** The bound property of the font families. */
	public static final String FONT_FAMILIES_PROPERTY = getPropertyName(PresentationModel.class, "fontFamilies");
	/** The bound property of the font size. */
	public static final String FONT_SIZE_PROPERTY = getPropertyName(PresentationModel.class, "fontSize");
	/** The bound property of the font style. */
	public static final String FONT_STYLE_PROPERTY = getPropertyName(PresentationModel.class, "fontStyle");
	/** The bound property of the font weight. */
	public static final String FONT_WEIGHT_PROPERTY = getPropertyName(PresentationModel.class, "fontWeight");
	/** The bound property of the label font families. */
	public static final String LABEL_FONT_FAMILIES_PROPERTY = getPropertyName(PresentationModel.class, "labelFontFamilies");
	/** The bound property of the label font size. */
	public static final String LABEL_FONT_SIZE_PROPERTY = getPropertyName(PresentationModel.class, "labelFontSize");
	/** The bound property of the label font style. */
	public static final String LABEL_FONT_STYLE_PROPERTY = getPropertyName(PresentationModel.class, "labelFontStyle");
	/** The bound property of the label font weight. */
	public static final String LABEL_FONT_WEIGHT_PROPERTY = getPropertyName(PresentationModel.class, "labelFontWeight");
	/** The bound property of the label text color. */
	public static final String LABEL_TEXT_COLOR_PROPERTY = getPropertyName(PresentationModel.class, "labelTextColor");
	/** The bound property of the line near margin extent. */
	public static final String MARGIN_LINE_NEAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "marginLineNearExtent");
	/** The bound property of the line far margin extent. */
	public static final String MARGIN_LINE_FAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "marginLineFarExtent");
	/** The bound property of the page near margin extent. */
	public static final String MARGIN_PAGE_NEAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "marginPageNearExtent");
	/** The bound property of the page far margin extent. */
	public static final String MARGIN_PAGE_FAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "marginPageFarExtent");
	/** The opacity bound property. */
	public static final String OPACITY_PROPERTY = getPropertyName(PresentationModel.class, "opacity");
	/** The bound property of the line near padding extent. */
	public static final String PADDING_LINE_NEAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "paddingLineNearExtent");
	/** The bound property of the line far padding extent. */
	public static final String PADDING_LINE_FAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "paddingLineFarExtent");
	/** The bound property of the page near padding extent. */
	public static final String PADDING_PAGE_NEAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "paddingPageNearExtent");
	/** The bound property of the page far padding extent. */
	public static final String PADDING_PAGE_FAR_EXTENT_PROPERTY = getPropertyName(PresentationModel.class, "paddingPageFarExtent");
	/** The bound property of the component style ID. */
	public static final String STYLE_ID_PROPERTY = getPropertyName(PresentationModel.class, "styleID");
	/** The bound property of the text color. */
	public static final String TEXT_COLOR_PROPERTY = getPropertyName(PresentationModel.class, "textColor");
	/** The bound property of whether the component has tooltips enabled. */
	public static final String TOOLTIP_ENABLED_PROPERTY = getPropertyName(PresentationModel.class, "tooltipEnabled");
	/** The bound property of whether the component is visible. */
	public static final String VISIBLE_PROPERTY = getPropertyName(PresentationModel.class, "visible");

	/*The constant value representing a general rounded corner.*/
	public static final Dimensions ROUNDED_CORNER_ARC_SIZE = new Dimensions(0.25, 0.25, Unit.EM);

	/**
	 * The normal font weight.
	 * @see #setFontWeight(double)
	 */
	public static final double FONT_WEIGHT_NORMAL = 0.5;

	/**
	 * The bold font weight.
	 * @see #setFontWeight(double)
	 */
	public static final double FONT_WEIGHT_BOLD = 0.75;

	/** @return The background color of the component, or null if no background color is specified for this component. */
	public Color getBackgroundColor();

	/**
	 * Sets the background color of the component. This is a bound property.
	 * @param newBackgroundColor The background color of the component, or null if the default background color should be used.
	 * @see #BACKGROUND_COLOR_PROPERTY
	 */
	public void setBackgroundColor(final Color newBackgroundColor);

	/**
	 * Returns the border color of the indicated border.
	 * @param border The border for which a border color should be returned.
	 * @return The border color of the given border, or null if the default border color should be used.
	 */
	public Color getBorderColor(final Border border);

	/**
	 * Returns the border color of the line near page near border.
	 * @return The border color of the border, or null if the default border color should be used.
	 */
	public Color BorderLineNearColor();

	/**
	 * Returns the border color of the line far page near border.
	 * @return The border color of the border, or null if the default border color should be used.
	 */
	public Color BorderLineFarColor();

	/**
	 * Returns the border color of the line near page far border.
	 * @return The border color of the border, or null if the default border color should be used.
	 */
	public Color BorderPageNearColor();

	/**
	 * Returns the border color of the line far page far border.
	 * @return The border color of the border, or null if the default border color should be used.
	 */
	public Color BorderPageFarColor();

	/**
	 * Sets the border color of a given border. The border color of each border represents a bound property.
	 * @param border The border for which the border color should be set.
	 * @param newBorderColor The border color, or null if the default border color should be used.
	 * @throws NullPointerException if the given border is null.
	 * @see #BORDER_LINE_NEAR_COLOR_PROPERTY
	 * @see #BORDER_LINE_FAR_COLOR_PROPERTY
	 * @see #BORDER_PAGE_NEAR_COLOR_PROPERTY
	 * @see #BORDER_PAGE_FAR_COLOR_PROPERTY
	 */
	public void setBorderColor(final Border border, final Color newBorderColor);

	/**
	 * Sets the border COLOR of the line near border. This is a bound property.
	 * @param newBorderColor The border color, or null if the default border color should be used.
	 * @see #BORDER_LINE_NEAR_COLOR_PROPERTY
	 */
	public void setBorderLineNearColor(final Color newBorderColor);

	/**
	 * Sets the border color of the line far border. This is a bound property.
	 * @param newBorderColor The border color, or null if the default border color should be used.
	 * @see #BORDER_LINE_FAR_COLOR_PROPERTY
	 */
	public void setBorderLineFarColor(final Color newBorderColor);

	/**
	 * Sets the border color of the page near border. This is a bound property.
	 * @param newBorderColor The border color, or null if the default border color should be used.
	 * @see #BORDER_PAGE_NEAR_COLOR_PROPERTY
	 */
	public void setBorderPageNearColor(final Color newBorderColor);

	/**
	 * Sets the border color of the page far border. This is a bound property.
	 * @param newBorderColor The border color, or null if the default border color should be used.
	 * @see #BORDER_PAGE_FAR_COLOR_PROPERTY
	 */
	public void setBorderPageFarColor(final Color newBorderColor);

	/**
	 * Sets the border color of all borders. The border color of each border represents a bound property. This is a convenience method that calls
	 * {@link #setBorderColor(Border, Color)} for each border.
	 * @param newBorderColor The border color, or null if the default border color should be used.
	 * @see #BORDER_LINE_NEAR_COLOR_PROPERTY
	 * @see #BORDER_LINE_FAR_COLOR_PROPERTY
	 * @see #BORDER_PAGE_NEAR_COLOR_PROPERTY
	 * @see #BORDER_PAGE_FAR_COLOR_PROPERTY
	 */
	public void setBorderColor(final Color newBorderColor);

	/**
	 * Returns the border extent of the indicated border.
	 * @param border The border for which a border extent should be returned.
	 * @return The border extent of the given border.
	 */
	public Extent getBorderExtent(final Border border);

	/**
	 * Returns the border extent of the line near page near border.
	 * @return The border extent of the given border.
	 */
	public Extent BorderLineNearExtent();

	/**
	 * Returns the border extent of the line far page near border.
	 * @return The border extent of the given border.
	 */
	public Extent BorderLineFarExtent();

	/**
	 * Returns the border extent of the line near page far border.
	 * @return The border extent of the given border.
	 */
	public Extent BorderPageNearExtent();

	/**
	 * Returns the border extent of the line far page far border.
	 * @return The border extent of the given border.
	 */
	public Extent BorderPageFarExtent();

	/**
	 * Sets the border extent of a given border. The border extent of each border represents a bound property.
	 * @param border The border for which the border extent should be set.
	 * @param newBorderExtent The border extent.
	 * @throws NullPointerException if the given border and/or border extent is null.
	 * @see #BORDER_LINE_NEAR_EXTENT_PROPERTY
	 * @see #BORDER_LINE_FAR_EXTENT_PROPERTY
	 * @see #BORDER_PAGE_NEAR_EXTENT_PROPERTY
	 * @see #BORDER_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setBorderExtent(final Border border, final Extent newBorderExtent);

	/**
	 * Sets the border extent of the line near border. This is a bound property.
	 * @param newBorderExtent The border extent.
	 * @throws NullPointerException if the given border extent is null.
	 * @see #BORDER_LINE_NEAR_EXTENT_PROPERTY
	 */
	public void setBorderLineNearExtent(final Extent newBorderExtent);

	/**
	 * Sets the border extent of the line far border. This is a bound property.
	 * @param newBorderExtent The border extent.
	 * @throws NullPointerException if the given border extent is null.
	 * @see #BORDER_LINE_FAR_EXTENT_PROPERTY
	 */
	public void setBorderLineFarExtent(final Extent newBorderExtent);

	/**
	 * Sets the border extent of the page near border. This is a bound property.
	 * @param newBorderExtent The border extent.
	 * @throws NullPointerException if the given border extent is null.
	 * @see #BORDER_PAGE_NEAR_EXTENT_PROPERTY
	 */
	public void setBorderPageNearExtent(final Extent newBorderExtent);

	/**
	 * Sets the border extent of the page far border. This is a bound property.
	 * @param newBorderExtent The border extent.
	 * @throws NullPointerException if the given border extent is null.
	 * @see #BORDER_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setBorderPageFarExtent(final Extent newBorderExtent);

	/**
	 * Sets the border extent of all borders. The border extent of each border represents a bound property. This is a convenience method that calls
	 * {@link #setBorderExtent(Border, Extent)} for each border.
	 * @param newBorderExtent The border extent.
	 * @throws NullPointerException if the given border extent is null.
	 * @see #BORDER_LINE_NEAR_EXTENT_PROPERTY
	 * @see #BORDER_LINE_FAR_EXTENT_PROPERTY
	 * @see #BORDER_PAGE_NEAR_EXTENT_PROPERTY
	 * @see #BORDER_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setBorderExtent(final Extent newBorderExtent);

	/**
	 * Returns the border style of the indicated border.
	 * @param border The border for which a border style should be returned.
	 * @return The border style of the given border.
	 */
	public LineStyle getBorderStyle(final Border border);

	/**
	 * Returns the border style of the line near page near border.
	 * @return The border style of the given border.
	 */
	public LineStyle BorderLineNearStyle();

	/**
	 * Returns the border style of the line far page near border.
	 * @return The border style of the given border.
	 */
	public LineStyle BorderLineFarStyle();

	/**
	 * Returns the border style of the line near page far border.
	 * @return The border style of the given border.
	 */
	public LineStyle BorderPageNearStyle();

	/**
	 * Returns the border style of the line far page far border.
	 * @return The border style of the given border.
	 */
	public LineStyle BorderPageFarStyle();

	/**
	 * Sets the border style of a given border. The border style of each border represents a bound property.
	 * @param border The border for which the border style should be set.
	 * @param newBorderStyle The border style.
	 * @throws NullPointerException if the given border and/or border style is null.
	 * @see #BORDER_LINE_NEAR_STYLE_PROPERTY
	 * @see #BORDER_LINE_FAR_STYLE_PROPERTY
	 * @see #BORDER_PAGE_NEAR_STYLE_PROPERTY
	 * @see #BORDER_PAGE_FAR_STYLE_PROPERTY
	 */
	public void setBorderStyle(final Border border, final LineStyle newBorderStyle);

	/**
	 * Sets the border style of the line near border. This is a bound property.
	 * @param newBorderStyle The border style.
	 * @throws NullPointerException if the given border style is null.
	 * @see #BORDER_LINE_NEAR_STYLE_PROPERTY
	 */
	public void setBorderLineNearStyle(final LineStyle newBorderStyle);

	/**
	 * Sets the border style of the line far border. This is a bound property.
	 * @param newBorderStyle The border style.
	 * @throws NullPointerException if the given border style is null.
	 * @see #BORDER_LINE_FAR_STYLE_PROPERTY
	 */
	public void setBorderLineFarStyle(final LineStyle newBorderStyle);

	/**
	 * Sets the border style of the page near border. This is a bound property.
	 * @param newBorderStyle The border style.
	 * @throws NullPointerException if the given border style is null.
	 * @see #BORDER_PAGE_NEAR_STYLE_PROPERTY
	 */
	public void setBorderPageNearStyle(final LineStyle newBorderStyle);

	/**
	 * Sets the border style of the page far border. This is a bound property.
	 * @param newBorderStyle The border style.
	 * @throws NullPointerException if the given border style is null.
	 * @see #BORDER_PAGE_FAR_STYLE_PROPERTY
	 */
	public void setBorderPageFarStyle(final LineStyle newBorderStyle);

	/**
	 * Sets the border style of all borders. The border style of each border represents a bound property. This is a convenience method that calls
	 * {@link #setBorderStyle(Border, LineStyle)} for each border.
	 * @param newBorderStyle The border style.
	 * @throws NullPointerException if the given border style is null.
	 * @see #BORDER_LINE_NEAR_STYLE_PROPERTY
	 * @see #BORDER_LINE_FAR_STYLE_PROPERTY
	 * @see #BORDER_PAGE_NEAR_STYLE_PROPERTY
	 * @see #BORDER_PAGE_FAR_STYLE_PROPERTY
	 */
	public void setBorderStyle(final LineStyle newBorderStyle);

	/**
	 * Returns the arc size for the indicated corner.
	 * @param corner The corner for which an arc size should be returned.
	 * @return The dimensions indicating the two radiuses of the given corner arc, or dimensions of zero if the corner should not be rounded.
	 */
	public Dimensions getCornerArcSize(final Corner corner);

	/**
	 * Returns the arc size for the line near page near corner.
	 * @return The dimensions indicating the two radiuses of the corner arc, or dimensions of zero if the corner should not be rounded.
	 */
	public Dimensions getCornerLineNearPageNearArcSize();

	/**
	 * Returns the arc size for the line far page near corner.
	 * @return The dimensions indicating the two radiuses of the corner arc, or dimensions of zero if the corner should not be rounded.
	 */
	public Dimensions getCornerLineFarPageNearArcSize();

	/**
	 * Returns the arc size for the line near page far corner.
	 * @return The dimensions indicating the two radiuses of the corner arc, or dimensions of zero if the corner should not be rounded.
	 */
	public Dimensions getCornerLineNearPageFarArcSize();

	/**
	 * Returns the arc size for the line far page far corner.
	 * @return The dimensions indicating the two radiuses of the corner arc, or dimensions of zero if the corner should not be rounded.
	 */
	public Dimensions getCornerLineFarPageFarArcSize();

	/**
	 * Sets the arc size of a given corner. The radius of each corner represents a bound property.
	 * @param corner The corner for which the arc size should be set.
	 * @param newCornerArcSize The dimensions indicating the two radiuses of the corner, or dimensions of zero if the corner should not be rounded.
	 * @throws NullPointerException if the given corner and/or arc size is null.
	 * @see #CORNER_LINE_NEAR_PAGE_NEAR_ARC_SIZE_PROPERTY
	 * @see #CORNER_LINE_FAR_PAGE_NEAR_ARC_SIZE_PROPERTY
	 * @see #CORNER_LINE_NEAR_PAGE_FAR_ARC_SIZE_PROPERTY
	 * @see #CORNER_LINE_FAR_PAGE_FAR_ARC_SIZE_PROPERTY
	 */
	public void setCornerArcSize(final Corner corner, final Dimensions newCornerArcSize);

	/**
	 * Sets the arc size of the line near page near corner. This is a bound property.
	 * @param newCornerArcSize The dimensions indicating the two radiuses of the corner, or dimensions of zero if the corner should not be rounded.
	 * @throws NullPointerException if the given size is null.
	 * @see #CORNER_LINE_NEAR_PAGE_NEAR_ARC_SIZE_PROPERTY
	 */
	public void setCornerLineNearPageNearArcSize(final Dimensions newCornerArcSize);

	/**
	 * Sets the arc size of the line far page near corner. This is a bound property.
	 * @param newCornerArcSize The dimensions indicating the two radiuses of the corner, or dimensions of zero if the corner should not be rounded.
	 * @throws NullPointerException if the given size is null.
	 * @see #CORNER_LINE_FAR_PAGE_NEAR_ARC_SIZE_PROPERTY
	 */
	public void setCornerLineFarPageNearArcSize(final Dimensions newCornerArcSize);

	/**
	 * Sets the arc size of the line near page far corner. This is a bound property.
	 * @param newCornerArcSize The dimensions indicating the two radiuses of the corner, or dimensions of zero if the corner should not be rounded.
	 * @throws NullPointerException if the given size is null.
	 * @see #CORNER_LINE_NEAR_PAGE_FAR_ARC_SIZE_PROPERTY
	 */
	public void setCornerLineNearPageFarArcSize(final Dimensions newCornerArcSize);

	/**
	 * Sets the arc size of the line far page far corner. This is a bound property.
	 * @param newCornerArcSize The dimensions indicating the two radiuses of the corner, or dimensions of zero if the corner should not be rounded.
	 * @throws NullPointerException if the given size is null.
	 * @see #CORNER_LINE_FAR_PAGE_FAR_ARC_SIZE_PROPERTY
	 */
	public void setCornerLineFarPageFarArcSize(final Dimensions newCornerArcSize);

	/**
	 * Sets the arc size of all corners. The radius of each corner represents a bound property. This is a convenience method that calls
	 * {@link #setCornerArcSize(Corner, Dimensions)} for each corner.
	 * @param newCornerArcSize The dimensions indicating the two radiuses of the corners, or dimensions of zero if the corners should not be rounded.
	 * @throws NullPointerException if the given arc size is null.
	 * @see #CORNER_LINE_NEAR_PAGE_NEAR_ARC_SIZE_PROPERTY
	 * @see #CORNER_LINE_FAR_PAGE_NEAR_ARC_SIZE_PROPERTY
	 * @see #CORNER_LINE_NEAR_PAGE_FAR_ARC_SIZE_PROPERTY
	 * @see #CORNER_LINE_FAR_PAGE_FAR_ARC_SIZE_PROPERTY
	 */
	public void setCornerArcSize(final Dimensions newCornerArcSize);

	/** @return The cursor URI, which may be a resource URI. */
	public URI getCursor();

	/**
	 * Sets the URI of the cursor. This is a bound property.
	 * @param newCursor The new URI of the cursor, which may be a resource URI.
	 * @throws NullPointerException if the given cursor URI is null.
	 * @see #CURSOR_PROPERTY
	 */
	public void setCursor(final URI newCursor);

	/**
	 * Returns the extent of the indicated flow.
	 * @param flow The flow for which an extent should be returned.
	 * @return The extent of the given flow.
	 */
	public Extent getExtent(final Flow flow);

	/**
	 * Returns the extent of the line flow. In left-to-right top-to-bottom orientation, this is commonly known as the width.
	 * @return The extent of the flow, or null if no preferred extent has been specified
	 */
	public Extent getLineExtent();

	/**
	 * Returns the extent of the page flow. In left-to-right top-to-bottom orientation, this is commonly known as the height.
	 * @return The extent of the flow, or null if no preferred extent has been specified
	 */
	public Extent getPageExtent();

	/**
	 * Sets the extent of a given flow. The extent of each flow represents a bound property.
	 * @param flow The flow for which the extent should be set.
	 * @param newExtent The new requested extent of the component, or null there is no extent preference.
	 * @throws NullPointerException if the given flow is null.
	 * @see #LINE_EXTENT_PROPERTY
	 * @see #PAGE_EXTENT_PROPERTY
	 */
	public void setExtent(final Flow flow, final Extent newExtent);

	/**
	 * Sets the extent of the line flow. In left-to-right top-to-bottom orientation, this is commonly known as the width. This is a bound property.
	 * @param newExtent The new requested extent of the component, or null there is no extent preference.
	 * @see #LINE_EXTENT_PROPERTY
	 */
	public void setLineExtent(final Extent newExtent);

	/**
	 * Sets the extent of the page flow. In left-to-right top-to-bottom orientation, this is commonly known as the height. This is a bound property.
	 * @param newExtent The new requested extent of the component, or null there is no extent preference.
	 * @see #PAGE_EXTENT_PROPERTY
	 */
	public void setPageExtent(final Extent newExtent);

	/** @return The prioritized list of font family names, or null if no font family names have been specified. */
	public List getFontFamilies();

	/**
	 * Sets the font families of the component. This is a bound property.
	 * @param newFontFamilies The new prioritized list of font family names, or null if no font family names are specified.
	 * @see #FONT_FAMILIES_PROPERTY
	 */
	public void setFontFamilies(final List newFontFamilies);

	/** @return The size of the font from baseline to baseline, or null if no font size has been specified. */
	public Extent getFontSize();

	/**
	 * Sets the font size of the component. This is a bound property.
	 * @param newFontSize The new size of the font from baseline to baseline, or null there is no font size specified.
	 * @see #FONT_SIZE_PROPERTY
	 */
	public void setFontSize(final Extent newFontSize);

	/** @return The style of the font. */
	public FontStyle getFontStyle();

	/**
	 * Sets the style of the font. This is a bound property.
	 * @param newFontStyle The style of the font.
	 * @throws NullPointerException if the given font style is null.
	 * @see #FONT_STYLE_PROPERTY
	 */
	public void setFontStyle(final FontStyle newFontStyle);

	/** @return The weight of a font relative to a normal value of 0.5. */
	public double getFontWeight();

	/**
	 * Sets the weight of the font. The weight of a font relative to a normal value of 0.5. A font weight of 0.75 is equivalent to a bold font. It is recommended
	 * that the constant variables {@link #FONT_WEIGHT_NORMAL} and {@link #FONT_WEIGHT_BOLD} be used for the most compatibility across platforms. This is a bound
	 * property of type {@link Double}.
	 * @param newFontWeight The weight of a font relative to a normal value of 0.5.
	 * @see #FONT_WEIGHT_PROPERTY
	 * @see #FONT_WEIGHT_NORMAL
	 * @see #FONT_WEIGHT_BOLD
	 */
	public void setFontWeight(final double newFontWeight);

	/** @return The prioritized list of label font family names, or null if no label font family names have been specified. */
	public List getLabelFontFamilies();

	/**
	 * Sets the font families of the label. This is a bound property.
	 * @param newLabelFontFamilies The new prioritized list of label font family names, or null if no label font family names are specified.
	 * @see #LABEL_FONT_FAMILIES_PROPERTY
	 */
	public void setLabelFontFamilies(final List newLabelFontFamilies);

	/** @return The size of the label font from baseline to baseline, or null if no label font size has been specified. */
	public Extent getLabelFontSize();

	/**
	 * Sets the label font size of the component. This is a bound property.
	 * @param newLabelFontSize The new size of the label font from baseline to baseline, or null there is no label font size specified.
	 * @see #LABEL_FONT_SIZE_PROPERTY
	 */
	public void setLabelFontSize(final Extent newLabelFontSize);

	/** @return The style of the label font. */
	public FontStyle getLabelFontStyle();

	/**
	 * Sets the style of the label font. This is a bound property.
	 * @param newLabelFontStyle The style of the label font.
	 * @throws NullPointerException if the given label font style is null.
	 * @see #LABEL_FONT_STYLE_PROPERTY
	 */
	public void setLabelFontStyle(final FontStyle newLabelFontStyle);

	/** @return The weight of the label font relative to a normal value of 0.5. */
	public double getLabelFontWeight();

	/**
	 * Sets the weight of the label font. The weight of the label font relative to a normal value of 0.5. A font weight of 0.75 is equivalent to a bold font. It
	 * is recommended that the constant variables {@link #FONT_WEIGHT_NORMAL} and {@link #FONT_WEIGHT_BOLD} be used for the most compatibility across platforms.
	 * This is a bound property of type {@link Double}.
	 * @param newLabelFontWeight The weight of the label font relative to a normal value of 0.5.
	 * @see #FONT_WEIGHT_PROPERTY
	 * @see #FONT_WEIGHT_NORMAL
	 * @see #FONT_WEIGHT_BOLD
	 */
	public void setLabelFontWeight(final double newLabelFontWeight);

	/** @return The text color of the label, or null if no text color is specified for the label. */
	public Color getLabelTextColor();

	/**
	 * Sets the text color of the label. This is a bound property.
	 * @param newLabelTextColor The text color of the label, or null if the default text color should be used.
	 * @see #LABEL_TEXT_COLOR_PROPERTY
	 */
	public void setLabelTextColor(final Color newLabelTextColor);

	/**
	 * Returns the margin extent of the indicated border.
	 * @param border The border for which a margin extent should be returned.
	 * @return The margin extent of the given border.
	 */
	public Extent getMarginExtent(final Border border);

	/**
	 * Returns the margin extent of the line near page near border.
	 * @return The margin extent of the given border.
	 */
	public Extent getMarginLineNearExtent();

	/**
	 * Returns the margin extent of the line far page near border.
	 * @return The margin extent of the given border.
	 */
	public Extent getMarginLineFarExtent();

	/**
	 * Returns the margin extent of the line near page far border.
	 * @return The margin extent of the given border.
	 */
	public Extent getMarginPageNearExtent();

	/**
	 * Returns the margin extent of the line far page far border.
	 * @return The margin extent of the given border.
	 */
	public Extent getMarginPageFarExtent();

	/**
	 * Sets the margin extent of a given border. The margin extent of each border represents a bound property.
	 * @param border The border for which the margin extent should be set.
	 * @param newMarginExtent The margin extent.
	 * @throws NullPointerException if the given border and/or margin extent is null.
	 * @see #MARGIN_LINE_NEAR_EXTENT_PROPERTY
	 * @see #MARGIN_LINE_FAR_EXTENT_PROPERTY
	 * @see #MARGIN_PAGE_NEAR_EXTENT_PROPERTY
	 * @see #MARGIN_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setMarginExtent(final Border border, final Extent newMarginExtent);

	/**
	 * Sets the margin extent of the line near border. This is a bound property.
	 * @param newMarginExtent The margin extent.
	 * @throws NullPointerException if the given margin extent is null.
	 * @see #MARGIN_LINE_NEAR_EXTENT_PROPERTY
	 */
	public void setMarginLineNearExtent(final Extent newMarginExtent);

	/**
	 * Sets the margin extent of the line far border. This is a bound property.
	 * @param newMarginExtent The margin extent, or null if the default margin extent should be used.
	 * @throws NullPointerException if the given margin extent is null.
	 * @see #MARGIN_LINE_FAR_EXTENT_PROPERTY
	 */
	public void setMarginLineFarExtent(final Extent newMarginExtent);

	/**
	 * Sets the margin extent of the page near border. This is a bound property.
	 * @param newMarginExtent The margin extent, or null if the default margin extent should be used.
	 * @throws NullPointerException if the given margin extent is null.
	 * @see #MARGIN_PAGE_NEAR_EXTENT_PROPERTY
	 */
	public void setMarginPageNearExtent(final Extent newMarginExtent);

	/**
	 * Sets the margin extent of the page far border. This is a bound property.
	 * @param newMarginExtent The margin extent, or null if the default margin extent should be used.
	 * @throws NullPointerException if the given margin extent is null.
	 * @see #MARGIN_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setMarginPageFarExtent(final Extent newMarginExtent);

	/**
	 * Sets the margin extent of all borders. The margin extent of each border represents a bound property. This is a convenience method that calls
	 * {@link #setMarginExtent(Border, Extent)} for each border.
	 * @param newMarginExtent The margin extent.
	 * @throws NullPointerException if the given margin extent is null.
	 * @see #MARGIN_LINE_NEAR_EXTENT_PROPERTY
	 * @see #MARGIN_LINE_FAR_EXTENT_PROPERTY
	 * @see #MARGIN_PAGE_NEAR_EXTENT_PROPERTY
	 * @see #MARGIN_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setMarginExtent(final Extent newMarginExtent);

	/** @return The opacity of the entire component in the range (0.0-1.0), with a default of 1.0. */
	public double getOpacity();

	/**
	 * Sets the opacity of the entire component. This is a bound property of type {@link Double}.
	 * @param newOpacity The new opacity of the entire component in the range (0.0-1.0).
	 * @throws IllegalArgumentException if the given opacity is not within the range (0.0-1.0).
	 * @see #OPACITY_PROPERTY
	 */
	public void setOpacity(final double newOpacity);

	/**
	 * Returns the padding extent of the indicated border.
	 * @param border The border for which a padding extent should be returned.
	 * @return The padding extent of the given border.
	 */
	public Extent getPaddingExtent(final Border border);

	/**
	 * Returns the padding extent of the line near page near border.
	 * @return The padding extent of the given border.
	 */
	public Extent getPaddingLineNearExtent();

	/**
	 * Returns the padding extent of the line far page near border.
	 * @return The padding extent of the given border.
	 */
	public Extent getPaddingLineFarExtent();

	/**
	 * Returns the padding extent of the line near page far border.
	 * @return The padding extent of the given border.
	 */
	public Extent getPaddingPageNearExtent();

	/**
	 * Returns the padding extent of the line far page far border.
	 * @return The padding extent of the given border.
	 */
	public Extent getPaddingPageFarExtent();

	/**
	 * Sets the padding extent of a given border. The padding extent of each border represents a bound property.
	 * @param border The border for which the padding extent should be set.
	 * @param newPaddingExtent The padding extent.
	 * @throws NullPointerException if the given border and/or padding extent is null.
	 * @see #PADDING_LINE_NEAR_EXTENT_PROPERTY
	 * @see #PADDING_LINE_FAR_EXTENT_PROPERTY
	 * @see #PADDING_PAGE_NEAR_EXTENT_PROPERTY
	 * @see #PADDING_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setPaddingExtent(final Border border, final Extent newPaddingExtent);

	/**
	 * Sets the padding extent of the line near border. This is a bound property.
	 * @param newPaddingExtent The padding extent.
	 * @throws NullPointerException if the given padding extent is null.
	 * @see #PADDING_LINE_NEAR_EXTENT_PROPERTY
	 */
	public void setPaddingLineNearExtent(final Extent newPaddingExtent);

	/**
	 * Sets the padding extent of the line far border. This is a bound property.
	 * @param newPaddingExtent The padding extent, or null if the default padding extent should be used.
	 * @throws NullPointerException if the given padding extent is null.
	 * @see #PADDING_LINE_FAR_EXTENT_PROPERTY
	 */
	public void setPaddingLineFarExtent(final Extent newPaddingExtent);

	/**
	 * Sets the padding extent of the page near border. This is a bound property.
	 * @param newPaddingExtent The padding extent, or null if the default padding extent should be used.
	 * @throws NullPointerException if the given padding extent is null.
	 * @see #PADDING_PAGE_NEAR_EXTENT_PROPERTY
	 */
	public void setPaddingPageNearExtent(final Extent newPaddingExtent);

	/**
	 * Sets the padding extent of the page far border. This is a bound property.
	 * @param newPaddingExtent The padding extent, or null if the default padding extent should be used.
	 * @throws NullPointerException if the given padding extent is null.
	 * @see #PADDING_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setPaddingPageFarExtent(final Extent newPaddingExtent);

	/**
	 * Sets the padding extent of all borders. The padding extent of each border represents a bound property. This is a convenience method that calls
	 * {@link #setPaddingExtent(Border, Extent)} for each border.
	 * @param newPaddingExtent The padding extent.
	 * @throws NullPointerException if the given padding extent is null.
	 * @see #PADDING_LINE_NEAR_EXTENT_PROPERTY
	 * @see #PADDING_LINE_FAR_EXTENT_PROPERTY
	 * @see #PADDING_PAGE_NEAR_EXTENT_PROPERTY
	 * @see #PADDING_PAGE_FAR_EXTENT_PROPERTY
	 */
	public void setPaddingExtent(final Extent newPaddingExtent);

	/** @return The Guise session that owns this component. */
	public GuiseSession getSession();

	/** @return The style identifier, or null if there is no style ID. */
	public String getStyleID();

	/**
	 * Identifies the style for the component. This is a bound property.
	 * @param newStyleID The style identifier, or null if there is no style ID.
	 * @see #STYLE_ID_PROPERTY
	 */
	public void setStyleID(final String newStyleID);

	/**
	 * @return Whether the component is visible.
	 * @see #isDisplayed()
	 */
	public boolean isVisible();

	/**
	 * Sets whether the component is visible. This is a bound property of type {@link Boolean}.
	 * @param newVisible true if the component should be visible, else false.
	 * @see #VISIBLE_PROPERTY
	 * @see #setDisplayed(boolean)
	 */
	public void setVisible(final boolean newVisible);

	/**
	 * @return Whether the component is displayed or has no representation, taking up no space.
	 * @see #isVisible()
	 */
	public boolean isDisplayed();

	/**
	 * Sets whether the component is displayed or has no representation, taking up no space. This is a bound property of type {@link Boolean}.
	 * @param newDisplayed true if the component should be displayed, else false if the component should take up no space.
	 * @see Displayable#DISPLAYED_PROPERTY
	 * @see #setVisible(boolean)
	 */
	public void setDisplayed(final boolean newDisplayed);

	/** @return The text color of the component, or null if no text color is specified. */
	public Color getTextColor();

	/**
	 * Sets the text color of the component. This is a bound property.
	 * @param newTextColor The text color of the component, or null if the default text color should be used.
	 * @see #TEXT_COLOR_PROPERTY
	 */
	public void setTextColor(final Color newTextColor);

	/** @return Whether tooltips are enabled for this component. */
	public boolean isTooltipEnabled();

	/**
	 * Sets whether tooltips are enabled for this component. Tooltips contain information from the component model's "info" property. This is a bound property of
	 * type {@link Boolean}.
	 * @param newTooltipEnabled true if the component should display tooltips, else false.
	 * @see InfoModel#getInfo()
	 * @see #TOOLTIP_ENABLED_PROPERTY
	 */
	public void setTooltipEnabled(final boolean newTooltipEnabled);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy