⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scope.java

📁 一个用java写的地震分析软件(无源码)
💻 JAVA
字号:
package org.trinet.apps;

import org.trinet.jiggle.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;

import org.trinet.jasi.*;
import org.trinet.util.*;
import org.trinet.util.WaveClient;

/**
 * GUI to allow viewing of current data for a set of channels. <p>
 *
 * Usage: Scope <seconds> "<nt.sta.chan nt.sta.chan ...>"
 */

public class Scope {

    static final String versionNumber  = "2002.05.16";

    MasterView mv = new MasterView();

    JFrame frame;
    WFScroller wfScroller = new WFScroller();
    ZoomPanel zpanel = new ZoomPanel();
    JSplitPane waveSplit = new JSplitPane();

    String waveServerFile = "";

    ChannelList chanList = new ChannelList();

    int duration = 120;

    int panelsInView = 10;
    int secsInView = 60;

    public Dimension singlePanelSize = new Dimension (640, 60);

    public static String defaulthost = "k2";
    public static String host = defaulthost;
    public static String dbasename = defaulthost+"db";

    static boolean debug = true;
//    static boolean debug = false;

    public Scope() {

    }


    public static void main (String args[])
    {
  // create an instance else everything must be 'static'
        Scope scope = new Scope();

  if (args.length < 2)	// insufficient args
  {
    System.out.println ("Usage: Scope <seconds> \"<nt.sta.chan nt.sta.chan ...>\"");
    System.exit(0);
  }

     // read props file to get waveserver filename
       JiggleProperties props = new JiggleProperties("properties");

     try {
         // Make a WaveClient
            WaveServerGroup waveClient = props.getWaveServerGroup();

         int nservers = waveClient.numberOfServers();
         if (nservers <= 0) {
       System.err.println(
       "getDataFromWaveServer Error: no waveservers specified in properties file: " +
              scope.waveServerFile);
       System.exit(-1);
         }
            Waveform.setWaveSource (waveClient);
      }
     catch (Exception ex) {
         System.err.println(ex.toString());
         ex.printStackTrace();
     }

        // duration of data capture
    Integer val = Integer.valueOf(args[0]);
    scope.duration = (int) val.intValue();

       // parse the sta list and make a ChannelList
       StringTokenizer strTok = new StringTokenizer(args[1], " ,\t\n\r\f");
       while (strTok.hasMoreElements()) {
          ChannelName cn = ChannelName.fromDelimitedString(strTok.nextToken(), ".");
          scope.chanList.add(Channel.create().setChannelName(cn));
          if (debug) System.out.println (cn.toString());
       }
        System.out.println ("Making connection...");
  DataSource init = new TestDataSource(host);  // make connection
  init.setWriteBackEnabled(true);

  scope.startup();
    }

    void startup () {
// Make graphics components
//        waveSplit = makeWaveSplit();

  JButton refreshButton = new JButton("REFRESH");
  refreshButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
          refreshGUI();
       }
  });
// make a main frame
        frame = new JFrame("Scope v."+ versionNumber);

        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        });

        frame.getContentPane().add(waveSplit, BorderLayout.CENTER);	    // add splitPane to frame
  frame.getContentPane().add(refreshButton, BorderLayout.SOUTH );
        frame.pack();
        frame.setVisible(true);

  int height = 900;
  int width  = 640;
  frame.setSize(width, height);	// must be done AFTER setVisible

      //debug

     System.out.println ("++++++++++++++++++++++++++++++++++++++++++++++++++++");
     System.out.println ("WFView count        = "+ mv.getWFViewCount());
     System.out.println ("masterWFPanelModel  = "+ mv.masterWFViewModel.countListeners());
     System.out.println ("masterWFWindowModel = "+ mv.masterWFWindowModel.countListeners());
     System.out.println ("++++++++++++++++++++++++++++++++++++++++++++++++++++");

     // get and display the data
      refreshGUI();
    }
    void refreshGUI () {

  if (debug) System.out.println ("Creating GUI...");

  frame.getContentPane().remove(waveSplit);  // remove old one

  // make new graphics from new masterView
  mv = makeMasterView(chanList, duration);
  waveSplit = makeWaveSplit(mv);

  frame.getContentPane().add(waveSplit, BorderLayout.CENTER);	    // add splitPane to frame

        wfScroller.setSecondsInViewport(secsInView);
  setSelectedInZoom(mv);
  frame.validate();
    }

/** */
   JSplitPane makeWaveSplit(MasterView mv) {

  boolean isActive = true;
  wfScroller = new WFScroller(mv, panelsInView, isActive);
  wfScroller.setShowRowHeader(true);
      wfScroller.setMinimumSize(new Dimension(300, 100) );

  zpanel = new ZoomPanel(mv);
  // set minsize or splitpane won't move
  zpanel.setMinimumSize(new Dimension(100, 100) );

  // make a split pane with the zpanel and wfScroller
  JSplitPane waveSplit =
      new JSplitPane(JSplitPane.VERTICAL_SPLIT,
         false,       // don't repaint until resizing is done
         zpanel,      // top component
         wfScroller); // bottom component
  waveSplit.setOneTouchExpandable(true);
  waveSplit.setDividerLocation(0.5);

  return waveSplit;

  }

    void setSelectedInZoom(MasterView mv) {
          // Retain previously selected WFPanel if there is one,
    // if none default to the first WFPanel in the list
   WFView wfvSel = mv.masterWFViewModel.get();
   // none selected, use the 1st one in the scroller
   if (wfvSel == null && mv.getWFViewCount() > 0) {
    wfvSel = (WFView) mv.wfvList.get(0);
   }

    // Must reset selected WFPanel because PickingPanel and WFScroller are
    // new and must be notified (via listeners) of the selected WFPanel.  It might
    // be null if no data is loaded.
     if (wfvSel != null ) {
       wfScroller.groupPanel.getWFPanel(wfvSel).setSelected(true);
       mv.masterWFViewModel.set(wfvSel);
       mv.masterWFWindowModel.setFullView(wfvSel.getWaveform());
     }
    }
    /**
     * Returns a new MasterView containing wf's for the set of channels with a
     * time window starting now and going back 'dur' seconds
     */
  public MasterView makeMasterView (ChannelList chanList, double dur) {

       double padding = 0.0;    // seconds

       double end = new DateTime().getEpochSeconds();
       System.out.println(EpochTime.toString(end));
       // cut some slack, latancy is not 0
       end = end - padding;            // backoff 20 secs
       double start = end - dur;

      // make a new view list with current time window
       ArrayList viewList = new ArrayList(chanList.size());

       // make a list of channel time windows
       for (int i = 0 ; i< chanList.size(); i++) {
//		viewList.add(new  TriggerChannelTimeWindow(
    viewList.add(new  ChannelTimeWindow(
                (Channel) chanList.get(i),
          start, end
          ));
       }

      // define the Master View
      mv.destroy();       // destroy previous, free listeners, etc.
      mv = new MasterView();
      //mv.defineByTriggerChannelTimeWindowList(viewList);
      mv.defineByChannelTimeWindowList(viewList);

      mv.setLoadChannelData(true);
      mv.loadChannelData();
      mv.setWaveFormLoadMode(MasterView.LoadAllInBackground);

      return mv;
  }

} // EventViewer

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -