/******************************************************************************* * 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.thumbnail; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.FigureCanvas; import org.eclipse.draw2d.GroupBoxBorder; import org.eclipse.draw2d.LightweightSystem; import org.eclipse.draw2d.LineBorder; import org.eclipse.draw2d.MouseEvent; import org.eclipse.draw2d.MouseListener; import org.eclipse.draw2d.MouseMotionListener; import org.eclipse.draw2d.RectangleFigure; 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; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; /** * This example demonstrates an overview window * * @author hudsonr */ public class ThumbnailExample { private static Figure contents; private static Shell mainShell, overviewShell; private static Dimension offset = new Dimension(); public static void main(String[] args) { Display display = new Display(); mainShell = new Shell(display); mainShell.setText("Source Shell"); mainShell.setLayout(new FillLayout()); FigureCanvas mainCanvas = new FigureCanvas(mainShell); mainCanvas.setContents(getContents()); overviewShell = new Shell(mainShell, 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())); mainShell.setSize(600, 600); mainShell.open(); overviewShell.setSize(200, 200); overviewShell.open(); while (!mainShell.isDisposed()) if (!display.readAndDispatch()) display.sleep(); mainShell.dispose(); overviewShell.dispose(); } protected static Figure getContents() { if (contents == null) contents = createContents(); return contents; } private static Figure createContents() { Figure contents = new Figure(); contents.setBorder(new LineBorder()); contents.setLayoutManager(new XYLayout()); final Figure figure1 = new RectangleFigure(); figure1.setBackgroundColor(ColorConstants.green()); figure1.setBounds(new Rectangle(50, 50, 200, 200)); figure1.addMouseListener(new MouseListener.Stub() { public void mousePressed(MouseEvent event) { offset.setWidth(event.x - figure1.getLocation().x()); offset.setHeight(event.y - figure1.getLocation().y()); } public void mouseReleased(MouseEvent event) { offset.setWidth(0); offset.setHeight(0); } }); figure1.addMouseMotionListener(new MouseMotionListener.Stub() { public void mouseDragged(MouseEvent event) { Rectangle rect = figure1.getBounds().getCopy(); rect.setX(event.x - offset.width()); rect.setY(event.y - offset.height()); figure1.setBounds(rect); } }); contents.add(figure1); final Figure figure2 = new RectangleFigure(); figure2.setBackgroundColor(ColorConstants.blue()); figure2.setBounds(new Rectangle(350, 350, 150, 200)); figure2.addMouseListener(new MouseListener.Stub() { public void mousePressed(MouseEvent event) { offset.setWidth(event.x - figure2.getLocation().x()); offset.setHeight(event.y - figure2.getLocation().y()); } public void mouseReleased(MouseEvent event) { offset.setWidth(0); offset.setHeight(0); } }); figure2.addMouseMotionListener(new MouseMotionListener.Stub() { public void mouseDragged(MouseEvent event) { Rectangle rect = figure2.getBounds().getCopy(); rect.setX(event.x - offset.width()); rect.setY(event.y - offset.height()); figure2.setBounds(rect); } }); contents.add(figure2); return contents; } protected static Figure createThumbnail(Figure source) { Thumbnail thumbnail = new Thumbnail(); thumbnail.setBorder(new GroupBoxBorder("Overview Figure")); thumbnail.setSource(source); return thumbnail; } }