001: /*******************************************************************************
002: * Copyright (c) 2000, 2007 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.internal.forms.widgets;
011:
012: import java.util.Hashtable;
013:
014: import org.eclipse.swt.graphics.*;
015: import org.eclipse.swt.graphics.GC;
016:
017: /**
018: * @version 1.0
019: * @author
020: */
021: public abstract class ParagraphSegment {
022: /**
023: * Moves the locator according to the content of this segment.
024: * @param gc
025: * @param wHint
026: * @param loc
027: * @param objectTable
028: * @param computeHeightOnly
029: * @return <code>true</code> if text wrapped to the new line, <code>false</code> otherwise.
030: */
031: public abstract boolean advanceLocator(GC gc, int wHint,
032: Locator loc, Hashtable objectTable,
033: boolean computeHeightOnly);
034:
035: /**
036: * Computes bounding rectangles and row heights of this segments.
037: * @param gc
038: * @param width
039: * @param loc
040: * @param resourceTable
041: * @param selected
042: */
043: public abstract void layout(GC gc, int width, Locator loc,
044: Hashtable resourceTable, boolean selected);
045:
046: /**
047: * Paints this segment.
048: * @param gc
049: * @param hover
050: * @param resourceTable
051: * @param selected
052: * @param selData
053: * @param region
054: */
055: public abstract void paint(GC gc, boolean hover,
056: Hashtable resourceTable, boolean selected,
057: SelectionData selData, Rectangle region);
058:
059: /**
060: * Paints this segment.
061: * @param gc
062: * @param resourceTable
063: * @param selData
064: */
065: public abstract void computeSelection(GC gc,
066: Hashtable resourceTable, SelectionData selData);
067:
068: /**
069: * Tests if the coordinates are contained in one of the
070: * bounding rectangles of this segment.
071: * @param x
072: * @param y
073: * @return true if inside the bounding rectangle, false otherwise.
074: */
075: public abstract boolean contains(int x, int y);
076:
077: /**
078: * Tests if the source rectangle intersects with
079: * one of the bounding rectangles of this segment.
080: * @param rect
081: * @return true if the two rectangles intersect, false otherwise.
082: */
083: public abstract boolean intersects(Rectangle rect);
084:
085: /**
086: * Returns the tool tip of this segment or <code>null</code>
087: * if not defined.
088: * @return tooltip or <code>null</code>.
089: */
090: public String getTooltipText() {
091: return null;
092: }
093:
094: /**
095: * Clears the text metrics cache for the provided font id.
096: * @param fontId the id of the font that the cache is kept for.
097: *
098: */
099: public void clearCache(String fontId) {
100: }
101: }
|