blob: 77eaf3a23ce0a20c8cf69d3bd3058ba993e960ba [file] [log] [blame]
/*****************************************************************************************
* Copyright (c) 2004 IBM Corporation and others. All rights reserved. This program and
* the accompanying materials are made available under the terms of the Common Public
* License v1.0 which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
****************************************************************************************/
package org.eclipse.draw2d.examples.text;
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.rap.swt.SWT;
import org.eclipse.draw2d.text.BlockFlow;
import org.eclipse.draw2d.text.FlowPage;
import org.eclipse.draw2d.text.TextFlow;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class BidiBlockExample extends AbstractExample {
public static void main(String[] args) {
new BidiBlockExample().run();
}
// The backwards figure canvas for bidi
protected FigureCanvas cf;
protected String s = "\u0634\u0635\u062c\u062d \u0630\u0628\u063a and some english text.";
protected IFigure getContents() {
FlowPage page = new FlowPage();
BlockFlow para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.LEFT_TO_RIGHT);
para.setHorizontalAligment(PositionConstants.LEFT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.LEFT_TO_RIGHT);
para.setHorizontalAligment(PositionConstants.RIGHT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.LEFT_TO_RIGHT);
para.setHorizontalAligment(PositionConstants.ALWAYS_LEFT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.LEFT_TO_RIGHT);
para.setHorizontalAligment(PositionConstants.ALWAYS_RIGHT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.LEFT_TO_RIGHT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.RIGHT_TO_LEFT);
para.setHorizontalAligment(PositionConstants.LEFT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.RIGHT_TO_LEFT);
para.setHorizontalAligment(PositionConstants.RIGHT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.RIGHT_TO_LEFT);
para.setHorizontalAligment(PositionConstants.ALWAYS_LEFT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.RIGHT_TO_LEFT);
para.setHorizontalAligment(PositionConstants.ALWAYS_RIGHT);
para.add(new TextFlow(s));
para = new BlockFlow();
page.add(para);
para.setOrientation(SWT.RIGHT_TO_LEFT);
para.add(new TextFlow(s));
return page;
}
protected void run() {
Display d = Display.getDefault();
shell = new Shell(d);
String appName = getClass().getName();
appName = appName.substring(appName.lastIndexOf('.') + 1);
shell.setText(appName);
shell.setLayout(new GridLayout(2, true));
fc = new FigureCanvas(shell);
fc.setContents(getContents());
cf = new FigureCanvas(shell, SWT.RIGHT_TO_LEFT);
cf.setContents(getContents());
fc.getViewport().setContentsTracksWidth(true);
cf.getViewport().setContentsTracksWidth(true);
fc.setLayoutData(new GridData(GridData.FILL_BOTH));
cf.setLayoutData(new GridData(GridData.FILL_BOTH));
cf.getViewport().setVerticalRangeModel(fc.getViewport().getVerticalRangeModel());
shell.pack();
shell.open();
while (!shell.isDisposed())
while (!d.readAndDispatch())
d.sleep();
}
}