| /****************************************************************************** |
| * Copyright (c) 2007 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.gmf.runtime.diagram.ui.label; |
| |
| import org.eclipse.draw2d.PositionConstants; |
| import org.eclipse.draw2d.geometry.Rectangle; |
| import org.eclipse.swt.graphics.Image; |
| |
| /** |
| * The purpose of this interface is to provide a generic way for editparts, |
| * editpolicies, text direct edit managers, etc. to deal with label figures |
| * (i.e. figures containing text and/or an image). This way, if a client would |
| * like to provide their own type of label figure they may not need to override |
| * all the pieces that interact with the label figure. |
| * <p> |
| * The methods in this interface are documented in a way that they were intended |
| * to be used; however, if the client is overriding the pieces of GMF that |
| * interact with the label (e.g. editpart, editpolicies, text direct edit |
| * manager) and creating their own label figure, they are free to use this API |
| * as they see fit. For this reason, the supported alignment and placement |
| * values are not documented here. These would be determined by the the client's |
| * label figure being used. |
| * <p> |
| * IMPORTANT: This interface is <EM>not</EM> intended to be implemented by |
| * clients. Clients should inherit from {@link ILabelDelegate.Stub}. New |
| * methods may be added to this interface in the future. |
| * </p> |
| * |
| * @since 2.1 |
| * @author crevells |
| * |
| */ |
| public interface ILabelDelegate { |
| |
| /** |
| * Sets the focus state of the label. Implementors may want to react by |
| * drawing a focus rectangle around the text in the label. |
| * |
| * @param focus |
| * the focus state |
| */ |
| public void setFocus(boolean focus); |
| |
| /** |
| * Gets the focus state of the label. |
| * |
| * @return the focus state of the label |
| */ |
| public boolean hasFocus(); |
| |
| /** |
| * Sets the selected state of the label. Implementors may want to react by |
| * drawing a selection rectangle around the text in the label. |
| * |
| * @param selected |
| * the selected state |
| */ |
| public void setSelected(boolean selected); |
| |
| /** |
| * Gets the selected state of the label. |
| * |
| * @return the selected state of the label |
| */ |
| public boolean isSelected(); |
| |
| /** |
| * Sets the text in the label. This will be called when the text has changed |
| * and the label figure should be updated. |
| * |
| * @param text |
| * the new text |
| */ |
| public void setText(String text); |
| |
| /** |
| * Returns the text of the label. Unless clients require customized |
| * behavior, implementors should generally return the complete text of the |
| * label, regardless of whether it is currently being truncated. |
| * |
| * @return the text in the label |
| */ |
| public String getText(); |
| |
| /** |
| * Sets the label's icon at given index. |
| * |
| * @param image |
| * The icon image or null to remove the icon |
| * @param index |
| * The icon index |
| */ |
| public void setIcon(Image image, int index); |
| |
| /** |
| * Gets the label's icon at given index. |
| * |
| * @param index |
| * the icon index |
| * @return the image |
| */ |
| public Image getIcon(int index); |
| |
| /** |
| * Sets whether the label's text should be striked-through |
| * |
| * @param strikeThrough |
| * whether the label's text should be striked-through |
| */ |
| public void setTextStrikeThrough(boolean strikeThrough); |
| |
| /** |
| * Should the label's text should be striked-through? |
| * |
| * @return true if the label's text should be striked-through; false |
| * otherwise |
| */ |
| public boolean isTextStrikedThrough(); |
| |
| /** |
| * Sets whether the label's text should be underlined |
| * |
| * @param underline |
| * whether the label's text should be underlined |
| */ |
| public void setTextUnderline(boolean underline); |
| |
| /** |
| * Should the label's text should be underlined? |
| * |
| * @return true if the label's text should be underlined; false otherwise |
| */ |
| public boolean isTextUnderlined(); |
| |
| /** |
| * Sets the alignment of the label (icon and text) within the figure. If |
| * this figure's bounds are larger than the size needed to display the |
| * label, the label will be aligned accordingly. |
| * |
| * @param alignment |
| * label alignment |
| */ |
| public void setAlignment(int alignment); |
| |
| /** |
| * Gets the alignment of the label (icon and text) within the figure. |
| * |
| * @return the alignment |
| */ |
| public int getAlignment(); |
| |
| /** |
| * Sets the current placement of the label's text relative to its icon. If |
| * the text placement is set to {@link PositionConstants#EAST}, then the |
| * text would be placed on the right of the icon. Similarly, if text |
| * placement is set to {@link PositionConstants#WEST}, the text will be |
| * placed on the left of the icon; {@link PositionConstants#NORTH} would put |
| * the text above the icon; and {@link PositionConstants#SOUTH} would place |
| * the text below the icon. |
| * |
| * @param placement |
| * the text placement relative to the icon |
| */ |
| public void setTextPlacement(int placement); |
| |
| /** |
| * Gets the placement of the label's text relative to its icon. |
| * |
| * @return the placement |
| */ |
| public int getTextPlacement(); |
| |
| /** |
| * Sets the alignment of the label's icon relative to the label's text |
| * bounds. This is only relevant if the icon's width or height (depending on |
| * the location of the icon relative to the text) is smaller than the text's |
| * width or height. |
| * |
| * @param alignment |
| * the icon alignment relative to the text bounds |
| */ |
| public void setIconAlignment(int alignment); |
| |
| /** |
| * Gets the alignment of the label's icon relative to the label's text |
| * bounds. |
| * |
| * @return the alignment |
| */ |
| public int getIconAlignment(); |
| |
| /** |
| * Sets the alignment of the label's text relative to the label's icon |
| * bounds. This is only relevant if the text's width or height (depending on |
| * the location of the text relative to the icon) is smaller than the icon's |
| * width or height. |
| * |
| * @param alignment |
| * the text alignment relative to the icon bounds |
| */ |
| public void setTextAlignment(int alignment); |
| |
| /** |
| * Gets the alignment of the label's text relative to the label's icon |
| * bounds. |
| * |
| * @return the alignment |
| */ |
| public int getTextAlignment(); |
| |
| /** |
| * Sets the text justification of the label's text. |
| * |
| * @param justification |
| * the text justification |
| */ |
| public void setTextJustification(int justification); |
| |
| /** |
| * Gets the text justification of the label's text. |
| * |
| * @return the text justification |
| */ |
| public int getTextJustification(); |
| |
| /** |
| * Returns true if the label's text wrapping feature is turned on; false |
| * otherwise. |
| * |
| * @return true if the label's text wrapping feature is turned on; false |
| * otherwise |
| */ |
| public boolean isTextWrapOn(); |
| |
| /** |
| * Turns the label's text wrapping feature on or off. |
| * |
| * @param textWrapOn |
| * true if the label's text wrapping feature is to be turned on; |
| * false otherwise |
| */ |
| public void setTextWrapOn(boolean textWrapOn); |
| |
| /** |
| * Returns the bounds of the label's complete text in absolute coordinates. |
| * One use of this method is by the text direct edit manager to determine |
| * the size and location of the cell editor popup. |
| * |
| * @return the bounds of the label's complete text in absolute coordinates |
| */ |
| public Rectangle getTextBounds(); |
| |
| /** |
| * This is a stub implementation of the <code>ILabelDelegate</code> |
| * interface. Clients should subclass this stub to avoid any breakage if API |
| * is added to the ILabelDelegate in the future. Clients only need to |
| * override methods in this stub that our applicable to their label. For |
| * example, if the client's label does not support complicated label |
| * alignment then there is no need to override such methods. All methods do |
| * nothing by default or return some default value. |
| * |
| * @since 2.1 |
| * @author crevells |
| */ |
| public class Stub |
| implements ILabelDelegate { |
| |
| public void setFocus(boolean b) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public boolean hasFocus() { |
| return false; |
| } |
| |
| public void setSelected(boolean b) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public boolean isSelected() { |
| return false; |
| } |
| |
| public int getTextJustification() { |
| return PositionConstants.LEFT; |
| } |
| |
| public void setTextJustification(int justification) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public void setIcon(Image image, int index) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public Image getIcon(int index) { |
| return null; |
| } |
| |
| public String getText() { |
| return ""; //$NON-NLS-1$ |
| } |
| |
| public void setText(String text) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public void setAlignment(int alignment) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public int getAlignment() { |
| return PositionConstants.CENTER; |
| } |
| |
| public void setTextPlacement(int placement) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public int getTextPlacement() { |
| return PositionConstants.CENTER; |
| } |
| |
| public void setTextAlignment(int alignment) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public int getTextAlignment() { |
| return PositionConstants.CENTER; |
| } |
| |
| public void setIconAlignment(int alignment) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public int getIconAlignment() { |
| return PositionConstants.CENTER; |
| } |
| |
| public void setTextStrikeThrough(boolean strikeThrough) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public boolean isTextStrikedThrough() { |
| return false; |
| } |
| |
| public void setTextUnderline(boolean underline) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public boolean isTextUnderlined() { |
| return false; |
| } |
| |
| public void setTextWrapOn(boolean textWrappingOn) { |
| // do nothing by default, clients may override if desired |
| } |
| |
| public boolean isTextWrapOn() { |
| return false; |
| } |
| |
| public Rectangle getTextBounds() { |
| return new Rectangle(); |
| } |
| |
| } |
| |
| } |