blob: a9942b415d501b72763816a27784f85d595f66fe [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.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;
}
}