package org.osm2world.viewer.control.actions;
import java.awt.event.ActionEvent;
import java.util.Observable;
import java.util.Observer;
import javax.swing.AbstractAction;
import org.osm2world.viewer.model.Data;
import org.osm2world.viewer.model.RenderOptions;
import org.osm2world.viewer.view.ViewerFrame;
import org.osm2world.viewer.view.debug.DebugView;
public class ToggleDebugViewAction extends AbstractAction implements Observer {
private static final long serialVersionUID = -7415950981091744016L;
private final DebugView debugView;
private final ViewerFrame viewerFrame;
private final Data data;
private final RenderOptions renderOptions;
private boolean enabled = false;
public ToggleDebugViewAction(DebugView debugView, int mnemonicKey,
boolean enabled, ViewerFrame viewerFrame,
Data data, RenderOptions renderOptions) {
super(debugView.getClass().getSimpleName());
putValue(SHORT_DESCRIPTION, debugView.getDescription());
putValue(MNEMONIC_KEY, mnemonicKey);
putValue(SELECTED_KEY, enabled);
this.debugView = debugView;
this.viewerFrame = viewerFrame;
this.data = data;
this.renderOptions = renderOptions;
this.enabled = enabled;
if (enabled) {
renderOptions.activeDebugViews.add(debugView);
}
data.addObserver(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (enabled) {
renderOptions.activeDebugViews.remove(debugView);
} else {
renderOptions.activeDebugViews.add(debugView);
}
enabled = !enabled;
putValue(SELECTED_KEY, enabled);
}
@Override
public void update(Observable o, Object arg) {
viewerFrame.setConfiguration(data.getConfig());
debugView.setConfiguration(data.getConfig());
debugView.setConversionResults(
data.getConversionResults());
}
}