package org.osm2world.viewer.control.actions;
import java.awt.event.ActionEvent;
import java.util.Observable;
import java.util.Observer;
import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
import org.osm2world.core.ConversionFacade.Results;
import org.osm2world.core.map_data.creation.MapProjection;
import org.osm2world.core.math.VectorXYZ;
import org.osm2world.viewer.model.Data;
import org.osm2world.viewer.model.RenderOptions;
public class ShowCameraConfigurationAction
extends AbstractAction implements Observer {
private static final long serialVersionUID = -3461617949419339009L;
private final Data data;
private final RenderOptions renderOptions;
public ShowCameraConfigurationAction(Data data, RenderOptions renderOptions) {
super("Show current camera configuration");
this.data = data;
this.renderOptions = renderOptions;
setEnabled(false);
data.addObserver(this);
}
@Override
public void actionPerformed(ActionEvent arg0) {
Results r = data.getConversionResults();
if (r == null) {
JOptionPane.showMessageDialog(null, "no Camera defined");
return;
}
MapProjection mapProjection = data.getConversionResults().getMapProjection();
VectorXYZ pos = renderOptions.camera.getPos();
VectorXYZ lookAt = renderOptions.camera.getLookAt();
JOptionPane.showMessageDialog(null,
"posLat = " + mapProjection.calcLat(pos.xz())
+ "\nposLon = " + mapProjection.calcLon(pos.xz())
+ "\nposEle = " + pos.y
+ "\nlookAtLat = " + mapProjection.calcLat(lookAt.xz())
+ "\nlookAtLon = " + mapProjection.calcLon(lookAt.xz())
+ "\nlookAtEle = " + lookAt.y,
"Current camera configuration", JOptionPane.INFORMATION_MESSAGE);
}
@Override
public void update(Observable o, Object arg) {
setEnabled(data.getConversionResults() != null);
}
}