/******************************************************************************* * 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.zoom; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.draw2d.ButtonBorder; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.GroupBoxBorder; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.LightweightSystem; import org.eclipse.draw2d.SchemeBorder; import org.eclipse.draw2d.ScrollBar; import org.eclipse.draw2d.ToolbarLayout; import org.eclipse.draw2d.XYLayout; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.draw2d.parts.Thumbnail; import org.eclipse.swt.SWT; /** * This class demonstrates Draw2d's zoom capabilities. * @author delee */ public class ZoomExample { private static Figure contents; //private static Shell overviewShell; public static void main(String args[]){ Display d = new Display(); final Shell shell = new Shell(d); shell.setSize(800, 800); LightweightSystem lws = new LightweightSystem(shell); Figure fig = new Figure(); fig.setLayoutManager(new ToolbarLayout()); final ScrollBar bar = new ScrollBar(); final Label l = new Label("�Zoom�"); l.setBorder(new SchemeBorder(ButtonBorder.SCHEMES.BUTTON_SCROLLBAR())); bar.setThumb(l); bar.setHorizontal(true); bar.setMaximum(200); bar.setMinimum(0); bar.setExtent(25); final ZoomContainer panel = new ZoomContainer(); panel.setBorder(new GroupBoxBorder("Zooming figure")); panel.setMinimumSize(new Dimension(5,5)); panel.setPreferredSize(500, 500); fig.add(bar); fig.add(panel); bar.addPropertyChangeListener("value", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { float z = (bar.getValue()+10) * 0.02f; panel.setZoom(z); } }); panel.add(getContents()); bar.setValue(40); lws.setContents(fig); // overviewShell = new Shell(shell, SWT.TITLE| SWT.RESIZE | SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND); // overviewShell.setText("Overview Shell"); // overviewShell.setLayout(new FillLayout()); // LightweightSystem overviewLWS = new LightweightSystem(overviewShell); // overviewLWS.setContents(createThumbnail(getContents())); // overviewShell.setSize(200, 200); shell.open(); // overviewShell.open(); while (!shell.isDisposed()) while (!d.readAndDispatch()) d.sleep(); // overviewShell.dispose(); } protected static Figure createThumbnail(Figure source) { Thumbnail thumbnail = new Thumbnail(); thumbnail.setBorder(new GroupBoxBorder("Overview Figure")); thumbnail.setSource(source); return thumbnail; } protected static Figure getContents() { if (contents == null) contents = createContents(); return contents; } private static Figure createContents() { Figure contents = new Figure(); XYLayout layout = new XYLayout(); contents.setLayoutManager(layout); Font classFont = new Font(null, "Arial", 12, SWT.BOLD); Label classLabel1 = new Label("Table", new Image(null, ZoomExample.class.getResourceAsStream("images/class_obj.gif"))); classLabel1.setFont(classFont); Label classLabel2 = new Label("Column", new Image(null, ZoomExample.class.getResourceAsStream("images/class_obj.gif"))); classLabel2.setFont(classFont); final UMLClassFigure classFigure = new UMLClassFigure(classLabel1); final UMLClassFigure classFigure2 = new UMLClassFigure(classLabel2); Label attribute1 = new Label("columns: Column[]", new Image(null, UMLClassFigure.class.getResourceAsStream("images/field_private_obj.gif"))); Label attribute2 = new Label("rows: Row[]", new Image(null, UMLClassFigure.class.getResourceAsStream("images/field_private_obj.gif"))); Label attribute3 = new Label("columnID: int", new Image(null, UMLClassFigure.class.getResourceAsStream("images/field_private_obj.gif"))); Label attribute4 = new Label("items: List", new Image(null, UMLClassFigure.class.getResourceAsStream("images/field_private_obj.gif"))); classFigure.getAttributesCompartment().add(attribute1); classFigure.getAttributesCompartment().add(attribute2); classFigure2.getAttributesCompartment().add(attribute3); classFigure2.getAttributesCompartment().add(attribute4); Label method1 = new Label("getColumns(): Column[]", new Image(null, UMLClassFigure.class.getResourceAsStream("images/methpub_obj.gif"))); Label method2 = new Label("getRows(): Row[]", new Image(null, UMLClassFigure.class.getResourceAsStream("images/methpub_obj.gif"))); Label method3 = new Label("getColumnID(): int", new Image(null, UMLClassFigure.class.getResourceAsStream("images/methpub_obj.gif"))); Label method4 = new Label("getItems(): List", new Image(null, UMLClassFigure.class.getResourceAsStream("images/methpub_obj.gif"))); classFigure.getMethodsCompartment().add(method1); classFigure.getMethodsCompartment().add(method2); classFigure2.getMethodsCompartment().add(method3); classFigure2.getMethodsCompartment().add(method4); layout.setConstraint(classFigure, new Rectangle(10,10,-1,-1)); layout.setConstraint(classFigure2, new Rectangle(150, 150, -1, -1)); contents.add(classFigure); contents.add(classFigure2); return contents; } }