blob: 8ef886777e60afeaf0ecf9ddb73928968b41aa32 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 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.examples.text;
import org.eclipse.swt.graphics.Font;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.draw2d.examples.AbstractExample;
import org.eclipse.draw2d.text.BlockFlow;
import org.eclipse.draw2d.text.FlowPage;
import org.eclipse.draw2d.text.InlineFlow;
import org.eclipse.draw2d.text.SimpleTextLayout;
import org.eclipse.draw2d.text.TextFlow;
/**
* This example shows the basic ways that the draw2d.text figures can be used.
*
* @author hudsonr
* @since 2.0
*/
public class TextFlowExample extends AbstractExample {
static protected IFigure createAlignmentParagraph() {
BlockFlow block = new BlockFlow();
block.setHorizontalAligment(PositionConstants.RIGHT);
block.add(new TextFlow("An inline flow figure's aligment is determined "
+ "by the block flow in which it resides. This block is aligned using "));
TextFlow text = new TextFlow("PositionConstants.RIGHT");
text.setFont(COURIER);
block.add(text);
block.add(new TextFlow(", which results in right text aligment"));
return block;
}
static protected IFigure createBaselineParagraph() {
BlockFlow block = new BlockFlow();
String message[] = {
"Text fragments ",
"with different ",
"Font sizes will ",
"have their ",
"baseline ",
"vertically ",
"aligned ",
"within ",
"the current ",
"line"
};
for (int i=0; i<message.length; i++){
TextFlow tf = new TextFlow(message[i]);
//This is a resource leak.
tf.setFont(new Font(null, "Helvetica", i+8, 0));
block.add(tf);
}
return block;
}
static protected IFigure createBlockParagraph() {
BlockFlow blockFlow = new BlockFlow();
blockFlow.setFont(COURIER);
TextFlow contents = new TextFlow();
contents.setLayoutManager(new SimpleTextLayout(contents));
contents.setText(
"/**\n" +
" * The SimpleTextLayout only breaks at newlines\n" +
" * It can be used to render source code.\r" +
" */\r\n" +
"public void foo() {\n" +
" //TABs are not handled currently, only spaces.\n" +
" System.out.println(\"foo\")\n" +
"}"
);
blockFlow.add(contents);
return blockFlow;
}
static protected IFigure createNestedInlineParagraph() {
BlockFlow blockFlow = new BlockFlow();
TextFlow text;
blockFlow.add(new TextFlow("A paragraph can contain multiple children, including"
+ " nested structure using InlineFlows. "));
InlineFlow inline = new InlineFlow();
inline.setForegroundColor(ColorConstants.darkBlue());
inline.add(new TextFlow("This TextFlow is inside an InlineFlow with a blue "
+ "foreground color. Children can have "));
text = new TextFlow("Bold ");
text.setFont(BOLD);
inline.add(text);
inline.add(new TextFlow("or "));
text = new TextFlow("Italic ");
text.setFont(ITALICS);
inline.add(text);
inline.add(new TextFlow("Font, or override other inherited attributes."));
blockFlow.add(inline);
return blockFlow;
}
static protected IFigure createParagraph() {
BlockFlow blockFlow = new BlockFlow();
TextFlow contents = new TextFlow();
contents.setText("A paragraph is created by using a BlockFlow figure. A "
+ "paragraph usually wraps to the width of the current page. "
+ "To see this, try resizing the example's window. "
+ "The contents of this paragraph were created using a TextFlow figure "
+ "in its default layout, which breaks at whitespace. "
+ "a block of text that doesn't wrap can be created by using the "
+ "SimpleTextLayout on a TextFlow");
blockFlow.add(contents);
return blockFlow;
}
static protected IFigure createTitle() {
BlockFlow blockFlow = new BlockFlow();
TextFlow contents = new TextFlow("Draw2D TextFlow Example");
contents.setFont(HEADING_1);
blockFlow.add(contents);
return blockFlow;
}
/**
* @see org.eclipse.draw2d.examples.AbstractExample#getContents()
*/
protected IFigure getContents() {
FlowPage page = new FlowPage();
page.setOpaque(true);
page.setBackgroundColor(ColorConstants.white());
page.add(createTitle());
page.add(createParagraph());
page.add(createBlockParagraph());
page.add(createNestedInlineParagraph());
page.add(createBaselineParagraph());
page.add(createAlignmentParagraph());
return page;
}
public static void main(String[] args) {
new TextFlowExample().run();
}
/**
* @see org.eclipse.draw2d.examples.AbstractExample#setFigureCanvas(FigureCanvas)
*/
protected void setFigureCanvas(FigureCanvas canvas) {
super.setFigureCanvas(canvas);
// canvas.setVerticalScrollBarVisibility(canvas.ALWAYS);
canvas.getViewport().setContentsTracksWidth(true);
}
}