Package zephyropen.device.beamscan

Source Code of zephyropen.device.beamscan.ReplayGUI$replayTimer

package zephyropen.device.beamscan;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.FilenameFilter;
import java.util.TimerTask;

import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import zephyropen.api.ZephyrOpen;
import zephyropen.util.Loader;
import zephyropen.util.Utils;

/**
* @author brad.zdanivsky@gmail.com
*/
public class ReplayGUI implements KeyListener {
 
  public static ZephyrOpen constants = ZephyrOpen.getReference();
  private final String TITLE = "Replay Scan v3.1";
  private JFrame frame = new JFrame(TITLE);
  private JLabel imageLable = new JLabel();
  private File[] files = null;
 
  private java.util.Timer timer = new java.util.Timer();
 
  private JMenuItem startItem = new JMenuItem("Start (r)");
  private JMenuItem stopItem = new JMenuItem("Stop (s)");
  private JMenuItem resetItem = new JMenuItem("Re-Start (q)");
  private JMenuItem scanItem = new JMenuItem("Scan Application (z)");
  private JMenuItem forwardItem = new JMenuItem("Forward (f)");
  private JMenuItem backItem = new JMenuItem("Back (b)");
  private JMenuItem deleteItem = new JMenuItem("Delete (d)");
  private JMenuItem reloadItem = new JMenuItem("Reload Frames (u)");
  private JMenuItem archiveItem = new JMenuItem("Archive All");
 
  private JMenuItem speed1Item = new JCheckBoxMenuItem("1 FPS (1 second)", true);
  private JMenuItem speed2Item = new JCheckBoxMenuItem("2 FPS (500 ms)");
  private JMenuItem speed3Item = new JCheckBoxMenuItem("3 FPS (333 ms)");
  private JMenuItem speed2SecItem = new JCheckBoxMenuItem("Slow (2 seconds)");
 
  private JMenu frameMenue = new JMenu("Frame");
  private JMenu speedMenue = new JMenu("Speed");
  private JMenu replayMenue = new JMenu("Replay");
 
  private int scan_delay = 1000;
  private int i = 0;
 
  /** key codes */
  @Override
  public void keyTyped(KeyEvent e) {
    char chr = e.getKeyChar();
   
    if(chr=='s') stop();
   
    if(chr=='r') start();
   
    if(chr=='q') restart();
   
    if(chr=='f') forward();

    if(chr=='b') back();
   
    if(chr=='u') getFiles()
   
    if(chr=='d') delete();
   
  }
 
  /** driver */
  public static void main(String[] args) {
    constants.init("beamscan", "beamscan");
    new ReplayGUI()
  }
 
  /** create the swing GUI */
  public ReplayGUI() {
       
    scanItem.addActionListener(listener);
    startItem.addActionListener(listener);
    stopItem.addActionListener(listener);
    resetItem.addActionListener(listener);
    forwardItem.addActionListener(listener);
    backItem.addActionListener(listener);
    deleteItem.addActionListener(listener);
    reloadItem.addActionListener(listener);
    archiveItem.addActionListener(listener);

    replayMenue.add(scanItem);
    replayMenue.add(startItem);
    replayMenue.add(stopItem);
    replayMenue.add(resetItem);
   
    frameMenue.add(forwardItem);
    frameMenue.add(backItem);
    frameMenue.add(deleteItem);
    frameMenue.add(reloadItem);
    frameMenue.add(archiveItem);
   
    speedMenue.add(speed1Item);
    speedMenue.add(speed2Item);
    speedMenue.add(speed3Item);
    speedMenue.add(speed2SecItem);
   
    speed1Item.addActionListener(speedListener);
    speed2Item.addActionListener(speedListener);
    speed3Item.addActionListener(speedListener);
    speed2SecItem.addActionListener(speedListener);

    speedMenue.add(speed1Item);
    speedMenue.add(speed2Item);
    speedMenue.add(speed3Item);
    speedMenue.add(speed2SecItem);

    /** Create the menu bar */
    JMenuBar menuBar = new JMenuBar();
    menuBar.add(replayMenue);
    menuBar.add(frameMenue);
    menuBar.add(speedMenue);
   
    /** Create frame */
    frame.setJMenuBar(menuBar);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(imageLable);
    frame.setSize(BeamGUI.WIDTH + 6, (BeamGUI.HEIGHT * 2) + 48); // room for the menu
    frame.setResizable(false);
    frame.setAlwaysOnTop(true);
    frame.setVisible(true);
    frame.addKeyListener(this);
   
    getFiles();
    if(files.length == 0){
      constants.error("no files found to replay!", this);
      frame.setTitle(TITLE + " No files in capture folder");
    } else {
      setImage();
    }
  }

  /** */
  private void getFiles() {
    FilenameFilter filter = new FilenameFilter() {
          public boolean accept(File directory, String fileName) {
              return fileName.endsWith(".png");
          }
      };
     
      files = new File(constants.get(ZephyrOpen.userHome) + ZephyrOpen.fs + "capture").listFiles(filter)
  }
 
  /** */
  public void scanner(){
    new Loader("zephyropen.device.beamscan.BeamGUI","");
    Utils.delay(1000);
    System.exit(0);
  }

  /** run on timer */
  private class replayTimer extends TimerTask {
    @Override
    public void run() {   
      forward();
    }
  }

  /** Listen for menu */
  private ActionListener listener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent event) {
      Object source = event.getSource();
      if(source == scanItem) scanner();
      if(source == startItem) start();
      if(source == stopItem) stop();
      if(source == resetItem) restart();
      if(source == forwardItem) forward();
      if(source == backItem) back();
      if(source == deleteItem) delete();
      if(source == archiveItem) archive();
      if(source == reloadItem) getFiles();
    }
  };

  /** Listen for delay info */
  private ActionListener speedListener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent event) {
     
      speed1Item.setSelected(false);
      speed2Item.setSelected(false);
      speed3Item.setSelected(false);
      speed2SecItem.setSelected(false);
     
      Object source = event.getSource();
      if (source.equals(speed1Item)) {
        speed1Item.setSelected(true);
        scan_delay = 1000;
      } else if(source.equals(speed2Item)){
        speed2Item.setSelected(true);
        scan_delay = 500;
      } else if(source.equals(speed3Item)){
        speed3Item.setSelected(true);
        scan_delay = 333;
      } else if(source.equals(speed2SecItem)){
        speed2SecItem.setSelected(true);
        scan_delay = 2000;
      }
    }
  };
 
  /** */
  private void start() {
    if(timer != null) timer.cancel();
    timer = new java.util.Timer();
    timer.scheduleAtFixedRate(new replayTimer(), 0, scan_delay)
  }
 
  /** */
  private void stop(){
    if(timer != null) timer.cancel();
    timer = null;
  }
 
  /** */
  private void restart() {
    stop();
    getFiles();
    i=0;
    setImage();
  //  forward();
  }
 
  /** */
  private void back(){
    stop();
    if(i <= 0) return;
    i--;
    setImage();
  }
 
  /** */
  private void forward(){
    if(i >= files.length-1) {
      stop();
      return;
    }
    i++;
    setImage();
  }
 
  /** */
  public void archive() {
    stop();   
    getFiles();
    Util.archive(files);
    Utils.delay(1500);
    scanner();
  }

  /** */
  private void delete() {
    stop();
    files[i].delete();
    getFiles();
    setImage();
  }
 
  /** */
  private void setImage(){
    if(files==null) return;
    if(files.length <= 0) return;
   
    frame.setTitle(TITLE + " (" + i + " of " + (files.length-1) + ")");
    imageLable.setIcon(new ImageIcon(files[i].getAbsolutePath()));
  }

  @Override
  public void keyPressed(KeyEvent e) {}

  @Override
  public void keyReleased(KeyEvent e) {}
}
TOP

Related Classes of zephyropen.device.beamscan.ReplayGUI$replayTimer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.