/***************************************************************************************** * 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.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(); } }