| /******************************************************************************* |
| * Copyright (c) 2006 Sybase, Inc. 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: |
| * Sybase, Inc. - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.pagedesigner.css2.layout; |
| |
| /** |
| * Copied from draw2d. Enhanced to meet page designer's needs. 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); |
| |
| /** |
| * The current line should be committed if it is occupied, and then set to |
| * <code>null</code>. Otherwise, do nothing. |
| */ |
| void endLine(); |
| |
| /** |
| * Obtains the current line, creating a new line if there is no current |
| * line. if create a new line, the new line's x will be set correctly |
| * without considering the new element's left margin. Also, if create new |
| * line, it will treat as the new line's top margin is 0. |
| * |
| * @return the current line |
| */ |
| LineBox getCurrentLine(); |
| |
| /** |
| * if create a new line, the new line's x will be set correctly without |
| * considering the new element's left margin. |
| * |
| * @param topMargin |
| * @return the current line |
| */ |
| LineBox getCurrentLine(int topMargin); |
| |
| /** |
| * Returns the current Y value. |
| * |
| * @return the current Y value |
| */ |
| int getCurrentY(); |
| |
| /** |
| * @return <code>true</code> if the current line contains any fragments |
| */ |
| boolean isCurrentLineOccupied(); |
| |
| /** |
| * @return the last margin right coord |
| */ |
| int getLastMarginRight(); |
| |
| /** |
| * when layout table, we need to calculate max width of a cell. This is done |
| * by don't break line (other than explicit required). Currently, the |
| * solution is to make the recommended width to be very big, and when create |
| * block element we don't set the block element's size to be recommended |
| * width. Please see CSSBlockFlowLayout |
| * |
| * @return true if is calculating max width |
| */ |
| boolean isCalculatingMaxWidth(); |
| |
| /** |
| * when calculating percentage width, we need the container width |
| * |
| * @return container width |
| */ |
| int getContainerWidth(); |
| } |