/*
* This file is part of the OSMembrane project.
* More informations under www.osmembrane.de
*
* The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0.
* for more details about the license see http://www.osmembrane.de/license/
*
* Source: $HeadURL$ ($Revision$)
* Last changed: $Date$
*/
package de.osmembrane.view.dialogs;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import de.osmembrane.view.interfaces.IBoundingBoxDialog;
import de.unistuttgart.iev.osm.bboxchooser.BBoxChooserDialog;
import de.unistuttgart.iev.osm.bboxchooser.Bounds;
import de.unistuttgart.iev.osm.bboxchooser.DialogResponse;
/**
*
* Simple dialog to display the generated command line, export it, or copy it to
* the clipboard.
*
* @see "Spezifikation.pdf, chapter 2.4 (German)"
*
* @author tobias_kuhn
*
*/
public class BoundingBoxDialog implements IBoundingBoxDialog {
private static final long serialVersionUID = 5182327519016989905L;
/**
* The external {@link BBoxChooserDialog} that will be used.
*/
private BBoxChooserDialog dialog;
/**
* Creates a new {@link BoundingBoxDialog}
*/
@SuppressWarnings("serial")
public BoundingBoxDialog(Window owner) {
dialog = new BBoxChooserDialog();
dialog.setModal(true);
dialog.getLayeredPane().getActionMap()
.put("close", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
hideWindow();
}
});
dialog.getLayeredPane()
.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "close");
}
@Override
public void hideWindow() {
dialog.setVisible(false);
}
@Override
public void setWindowTitle(String viewTitle) {
dialog.setTitle(viewTitle);
}
@Override
public void centerWindow() {
Point screenCenter = GraphicsEnvironment.getLocalGraphicsEnvironment()
.getCenterPoint();
Point edgeLeftTop = new Point(screenCenter.x - (dialog.getWidth() / 2),
screenCenter.y - (dialog.getHeight() / 2));
dialog.setLocation(edgeLeftTop.x, edgeLeftTop.y);
}
@Override
public void bringToFront() {
dialog.toFront();
}
@Override
public void showWindow() {
dialog.setVisible(true);
}
@Override
public Bounds getBoundingBox() {
return (dialog.getResponse() == DialogResponse.OK) ? dialog
.getBoundingBox() : null;
}
@Override
public void setBoundingBox(Bounds bounds) {
dialog.setBoundingBox(bounds);
}
@Override
public void dispose() {
dialog.dispose();
}
}