blob: 0793239824ed822d4d0ed139ee5a6493d3c0c7d3 [file] [log] [blame]
/*******************************************************************************
* 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);
}