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 ...] ";
  }

}

 

Ads help maintain this website.