Package jrdesktop.viewer

Source Code of jrdesktop.viewer.Recorder

package jrdesktop.viewer;

import java.net.InetAddress;

import jrdesktop.Commons;
import jrdesktop.Config;
import jrdesktop.HostProperties;
import jrdesktop.rmi.server.RMIServer;
import jrdesktop.server.Server;
import jrdesktop.utilities.ClipbrdUtility;
import jrdesktop.utilities.InetAdrUtility;
import jrdesktop.viewer.FileMng.FileManager;

/**
* Recorder.java
* @author benbac
*/

public class Recorder extends Thread {
   
    private boolean recording = false;          // control recording
    private boolean viewOnly = false;
    private boolean pause = false;
    private boolean hold = false;
    private boolean side = Commons.viewerSide;
   
    public Config config;
    public Server server;
    public Viewer viewer;   
    public ViewerGUI viewerGUI;
    public ScreenPlayer screenPlayer;
    public EventsListener eventsListener;
    public ClipbrdUtility clipbrdUtility;
    public ViewerOptions viewerOptions;
    public FileManager fileManager;
   
    public Recorder (InetAddress inetAddress) {
        config = RMIServer.serverConfig;
       
        init();      
        viewerOptions = new ViewerOptions(inetAddress);        
        screenPlayer = new ScreenPlayer(this);
        eventsListener = new EventsListener(this);
        viewerGUI = new ViewerGUI(this);
        viewerGUI.Start();
    }
   
    public Recorder(Viewer viewer, Config config) {
        this.viewer = viewer;  
        this.config = config;       
        side = Commons.viewerSide;
       
        init();
        viewerOptions = new ViewerOptions(InetAdrUtility.getLocalHost(),
                HostProperties.getLocalProperties());        
        start();           
       
        screenPlayer = new ScreenPlayer(this);
        eventsListener = new EventsListener(this);
        viewerGUI = new ViewerGUI(this);       
    }
   
    public Recorder(Server server, Config config) {
        this.server = server;
        this.config = config;
        side = Commons.serverSide;
       
        init();
        viewerOptions = new ViewerOptions(InetAdrUtility.getLocalHost(),
                HostProperties.getLocalProperties());
       
        Start();
    }
   
    public void init () {           
        clipbrdUtility = new ClipbrdUtility();     
        fileManager = new FileManager(this);                   
    }   

    @Override
    public void  run() {
        while (true) {
            Wait();
           
            while (recording && !pause && !hold) {               
                viewer.sendData()
                viewer.receiveData();
                Sleep();
            }
        }
    }
  
    public void Wait() {
        try {
            synchronized(this) {   
                wait();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }        
    }
   
    public void Notify() {
        try {
            synchronized(this){           
                notify();
            }   
        }
        catch (Exception e) {
            e.printStackTrace();
        }  
    }

    public void Sleep() {
        synchronized(this) {
            try {
                // usefull for reducing CPU usage
                sleep(viewerOptions.getRefreshRate());
            }
           catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
   
    public void Stop() {
        recording = false;  
        pause = true;
        hold = true;
        viewOnly = false;
        clipbrdUtility.removeFlavorListener();    
        if (viewerGUI.isFullScreenMode())
            viewerGUI.changeFullScreenMode();    
        if ((config.reverseConnection && side == Commons.viewerSide) ||
                !config.reverseConnection)  {
            eventsListener.removeAdapters(true);
            //viewerOptions.getCapture().clearScreen();
        }

       if (config.reverseConnection && side == Commons.viewerSide)  
            Viewer.removeViewer(this);
    }
   
    public void terminate () {
        Stop();
        if (viewer != null) {
            viewer.disconnect();
            viewer.interrupt();
        }
        interrupt();
    }
   
    public void Start() {                
        if (config.reverseConnection && side == Commons.serverSide) {           
            if (!server.isConnected())
                if (server.connect() == -1) return;            
        }
       
        if (!config.reverseConnection) { 
            if (!viewer.isConnected())
                if (viewer.connect() == -1) return;
        }

        if ((config.reverseConnection && side == Commons.viewerSide) ||
                !config.reverseConnection)           
            eventsListener.addAdapters(true);

        clipbrdUtility.addFlavorListener();
     
        recording = true;           
        pause = false;  
        hold = false;
        viewOnly = false;    

        if (!config.reverseConnection) {
            viewer.setOptions(viewerOptions.getOptions());
            Notify();
        }        
    }
   
    public boolean isRecording () {
        return recording;
    }
   
    public boolean isPaused() {
       // if (config.reverseConnection && side == Commons.viewerSide)
      //      return Viewer.isViewerPaused(this);
     //   else
            return pause;
    }
   
    public void setPause(boolean bool) {
        if (config.reverseConnection && side == Commons.viewerSide)
            Viewer.setPause(this, bool);
        else {
            pause = bool;
            if (pause) {
                   eventsListener.removeAdapters(true);
                   //viewerOptions.getCapture().clearScreen();
            }
            else
            {           
                if (recording && !viewOnly)
                    eventsListener.addAdapters(true);
                if (recording) Notify();           
            }
        }
    }
   
    public void setViewOnly(boolean bool){
        viewOnly = bool;
        if (viewOnly)
            eventsListener.removeAdapters();
        else
        {
            if (recording && !pause)
                eventsListener.addAdapters();
        }
    }
   
    public void setHold (boolean bool) {
        hold = bool;
    }
   
    public boolean isViewOnly() {
        return viewOnly;
    }
}
TOP

Related Classes of jrdesktop.viewer.Recorder

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.