package visad.test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.rmi.RemoteException;
import java.util.logging.Logger;
import javax.media.j3d.View;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import ucar.netcdf.Netcdf;
import ucar.netcdf.NetcdfFile;
import visad.ContourControl;
import visad.DataReferenceImpl;
import visad.Display;
import visad.DisplayImpl;
import visad.FieldImpl;
import visad.GraphicsModeControl;
import visad.RealType;
import visad.ScalarMap;
import visad.VisADException;
import visad.data.netcdf.QuantityDB;
import visad.data.netcdf.QuantityDBManager;
import visad.data.netcdf.in.NetcdfAdapter;
import visad.java3d.DisplayImplJ3D;
import visad.util.CmdlineConsumer;
import visad.util.CmdlineParser;
public class TriangleStripBuilderTest implements CmdlineConsumer {
private static Logger log = Logger.getLogger(TriangleStripBuilderTest.class.getName());
private int verbosity = 0;
private String filename;
private CmdlineParser parser;
public TriangleStripBuilderTest() {
parser = new CmdlineParser(this);
}
public static void main(String[] args) throws Exception {
// Logger logger = Logger.getLogger("visad");
// logger.setLevel(Level.FINEST);
// logger.setUseParentHandlers(false);
// Handler console = new ConsoleHandler();
// console.setLevel(Level.FINEST);
// console.setFormatter(new Formatter() {
// public String format(LogRecord r) {
// if (r.getThrown() != null) {
// ByteArrayOutputStream buf = new ByteArrayOutputStream();
// r.getThrown().printStackTrace(new PrintStream(buf));
// return String.format("[%s] %s\n%s", r.getLevel().getName(), r.getMessage(), buf.toString());
// }
// return String.format("[%s] %s\n", r.getLevel().getName(), r.getMessage());
// }
// });
// logger.addHandler(console);
TriangleStripBuilderTest test = new TriangleStripBuilderTest();
test.parser.processArgs(args);
Netcdf netcdf = new NetcdfFile(test.filename, true);
QuantityDB db = QuantityDBManager.instance();
NetcdfAdapter adapter = new NetcdfAdapter(netcdf, db);
final FieldImpl data = (FieldImpl) adapter.getData();
log.info("loaded " + data.getType().toString());
final DisplayImpl display = new DisplayImplJ3D("display");
ScalarMap xmap = new ScalarMap(RealType.Longitude, Display.XAxis);
display.addMap(xmap);
ScalarMap ymap = new ScalarMap(RealType.Latitude, Display.YAxis);
display.addMap(ymap);
// ScalarMap zmap = new ScalarMap(RealType.Altitude, Display.ZAxis);
// display.addMap(zmap);
// zmap.setRange(-20, 20);
ScalarMap rgbaMap = new ScalarMap(RealType.Altitude, Display.RGBA);
display.addMap(rgbaMap);
ScalarMap map1contour = new ScalarMap(RealType.Altitude, Display.IsoContour);
display.addMap(map1contour);
ContourControl ctrl = (ContourControl) map1contour.getControl();
ctrl.setDashedStyle(GraphicsModeControl.SOLID_STYLE);
ctrl.setContourFill(true);
GraphicsModeControl mode = display.getGraphicsModeControl();
mode.setProjectionPolicy(View.PARALLEL_PROJECTION);
mode.setScaleEnable(true);
final DataReferenceImpl ref = new DataReferenceImpl("r");
ref.setData(data);
// display.addReference(ref, null);
JFrame jframe = new JFrame();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setLayout(new BorderLayout());
jframe.add((JPanel) display.getComponent(), BorderLayout.CENTER);
JPanel panel = new JPanel();
JButton start = new JButton("Start");
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
display.addReference(ref, null);
} catch (RemoteException e) {
e.printStackTrace();
} catch (VisADException e) {
e.printStackTrace();
}
}
});
panel.add(start);
jframe.add(panel, BorderLayout.SOUTH);
jframe.pack();
jframe.setVisible(true);
//
// ContourWidget cw = new ContourWidget(map1contour);
//
// JPanel big_panel = new JPanel();
// big_panel.setLayout(new BorderLayout());
// big_panel.add("Center", cw);
//
// JFrame jframe2 = new JFrame();
// jframe2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//
// jframe2.setContentPane(big_panel);
// jframe2.pack();
// jframe2.setVisible(true);
//
//// LabeledColorWidget caw = new LabeledColorWidget(rgbaMap);
// JPanel big_panel2 = new JPanel();
// big_panel2.setLayout(new BorderLayout());
// big_panel2.add(caw, BorderLayout.CENTER);
// JFrame jframe3 = new JFrame();
// jframe3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// jframe3.setContentPane(big_panel2);
// jframe3.pack();
// jframe3.setVisible(true);
}
public int checkKeyword(String mainName, int thisArg, String[] args) {
filename = args[thisArg];
if (!(new File(filename).exists())) {
return -1;
}
return 1;
}
public int checkOption(String mainName, char ch, String arg) {
switch (ch) {
case 'v':
verbosity++;
return 1;
}
return 0;
}
public boolean finalizeArgs(String mainName) {
visad.util.Util.configureLogging(verbosity);
return true;
}
public void initializeArgs() {
}
public String keywordUsage() {
return "";
}
public String optionUsage() {
return "[-v ...] <nc file>";
}
}