package org.osm2world.viewer.control.actions;
import java.awt.HeadlessException;
import java.io.File;
import java.io.IOException;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.osm2world.core.target.obj.ObjWriter;
import org.osm2world.viewer.model.Data;
import org.osm2world.viewer.model.MessageManager;
import org.osm2world.viewer.model.RenderOptions;
import org.osm2world.viewer.view.ViewerFrame;
public class ExportObjDirAction extends AbstractExportAction {
private static final long serialVersionUID = 6380889966390760664L; //generated serialVersionUID
public ExportObjDirAction(ViewerFrame viewerFrame, Data data,
MessageManager messageManager, RenderOptions renderOptions) {
super("Export OBJ directory", viewerFrame, data, messageManager, renderOptions);
putValue(SHORT_DESCRIPTION, "Writes several smaller Wavefront .obj files to a directory");
}
@Override
protected boolean chooseDirectory() {
return true;
}
protected FileNameExtensionFilter getFileNameExtensionFilter() {
return null;
}
@Override
protected void performExport(File file) throws HeadlessException {
try {
String thresholdString = JOptionPane.showInputDialog(
viewerFrame, "Graphics primitives per file", 10000);
int primitiveThresholdPerFile = Integer.parseInt(thresholdString);
/* write the file */
ObjWriter.writeObjFiles(
file,
data.getConversionResults().getMapData(),
data.getConversionResults().getMapProjection(),
null, renderOptions.projection,
primitiveThresholdPerFile);
messageManager.addMessage("exported Wavefront .obj file " + file);
} catch (IOException e) {
JOptionPane.showMessageDialog(viewerFrame,
e.toString(),
"Could not export Wavefront .obj file",
JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(viewerFrame,
e.toString(),
"please enter a valid number of primitives per file",
JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
}