| /******************************************************************************* |
| * Copyright (c) 2000, 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.draw2d.text; |
| |
| /** |
| * The context that a {@link FlowFigureLayout} uses to perform its layout. |
| * |
| * <P> |
| * WARNING: This interface is not intended to be implemented by clients. It |
| * exists to define the API between the layout and its context. |
| */ |
| public interface FlowContext { |
| |
| /** |
| * Adds the given box into the current line. |
| * |
| * @param box |
| * the FlowBox to add |
| */ |
| void addToCurrentLine(FlowBox box); |
| |
| /** |
| * Adds an entire line into the context. If there is a previous line, it is |
| * ended. |
| * |
| * @param box |
| * the line being added |
| * @since 3.1 |
| */ |
| void addLine(CompositeBox box); |
| |
| /** |
| * The current line should be committed if it is occupied, and then set to |
| * <code>null</code>. Otherwise, do nothing. |
| */ |
| void endLine(); |
| |
| /** |
| * This method can be used to query the amount of space left on the current |
| * line. It can help determine where to wrap during layout. |
| * |
| * @return the amount of space left on the current line |
| * @since 3.1 |
| */ |
| int getRemainingLineWidth(); |
| |
| /** |
| * This method is used to convey layout state to different FlowFigures. This |
| * state is cleared when a fragment is added to the current line and once |
| * the layout is complete. |
| * |
| * @return <code>true</code> if the next fragment should be placed on the |
| * current line |
| * @since 3.1 |
| * @see #setContinueOnSameLine(boolean) |
| */ |
| boolean getContinueOnSameLine(); |
| |
| /** |
| * This method looks ahead for line-breaks. When laying out, this method can |
| * be used to determine the next line-break across multiple figures. |
| * |
| * @param child |
| * the search will occur starting from the figure after the given |
| * child |
| * @param width |
| * the width before the next line-break (if one's found; all the |
| * width, otherwise) will be added on to the first int in the |
| * given array |
| * @since 3.1 |
| */ |
| void getWidthLookahead(FlowFigure child, int width[]); |
| |
| /** |
| * @return <code>true</code> if the current line contains any fragments |
| */ |
| boolean isCurrentLineOccupied(); |
| |
| /** |
| * This method is used to convey layout state to different FlowFigures. This |
| * state is cleared when a fragment is added and once the layout is |
| * complete. |
| * |
| * @param value |
| * <code>true</code> indicates that the first fragment of the |
| * next TextFlow should be laid out on the current line, and not |
| * a new one |
| * @since 3.1 |
| * @see #getContinueOnSameLine() |
| */ |
| void setContinueOnSameLine(boolean value); |
| |
| } |