diff --git a/src/com/limelight/Limelight.java b/src/com/limelight/Limelight.java index b3b70fe..a881b48 100644 --- a/src/com/limelight/Limelight.java +++ b/src/com/limelight/Limelight.java @@ -21,6 +21,12 @@ import com.limelight.settings.PreferencesManager; import com.limelight.settings.PreferencesManager.Preferences; import com.limelight.settings.PreferencesManager.Preferences.Resolution; +/** + * Main class for Limelight-pc contains methods for starting the application as well + * as the stream to the host pc. + * @author Diego Waxemberg
+ * Cameron Gutman + */ public class Limelight implements NvConnectionListener { public static final double VERSION = 1.0; @@ -30,10 +36,18 @@ public class Limelight implements NvConnectionListener { private boolean connectionFailed; private static JFrame limeFrame; + /** + * Constructs a new instance based on the given host + * @param host can be hostname or IP address. + */ public Limelight(String host) { this.host = host; } + /* + * Extracts native library into current directory. This is required in order for the library to + * be found when trying to load it. + */ private static void extractNativeLibrary(String libraryName, String targetDirectory) throws IOException { InputStream resource = new Object().getClass().getResourceAsStream("/binlib/"+libraryName); if (resource == null) { @@ -61,6 +75,9 @@ public class Limelight implements NvConnectionListener { } } + /* + * Checks the OS and decides which libraries need to be extracted. + */ private static void prepareNativeLibraries() throws IOException { if (!System.getProperty("os.name").contains("Windows")) { // Nothing to do for platforms other than Windows @@ -81,6 +98,9 @@ public class Limelight implements NvConnectionListener { extractNativeLibrary("avcodec-55.dll", nativeLibDir); } + /* + * Creates a connection to the host and starts up the stream. + */ private void startUp() { streamFrame = new StreamFrame(); @@ -98,6 +118,10 @@ public class Limelight implements NvConnectionListener { } + /* + * Creates a StreamConfiguration given a Resolution. + * Used to specify what kind of stream will be used. + */ private StreamConfiguration createConfiguration(Resolution res) { switch(res) { case RES_720_30: @@ -114,10 +138,16 @@ public class Limelight implements NvConnectionListener { } } + /* + * Starts up a thread that listens for gamepads connected to the system. + */ private static void startControllerListener() { GamepadListener.startUp(); } + /* + * Creates the main frame for the application. + */ private static void createFrame() { MainFrame main = new MainFrame(); main.build(); @@ -125,11 +155,21 @@ public class Limelight implements NvConnectionListener { startControllerListener(); } + /** + * Creates a new instance and starts the stream. + * @param host the host pc to connect to. Can be a hostname or IP address. + */ public static void createInstance(String host) { Limelight limelight = new Limelight(host); limelight.startUp(); } + /** + * The entry point for the application.
+ * Does some initializations and then creates the main frame. + * @param args unused. + */ + //TODO: We should allow command line args to specify things like debug mode (verbose logging) or even start a stream directly. public static void main(String args[]) { //fix the menu bar if we are running in osx if (System.getProperty("os.name").contains("Mac OS X")) { @@ -158,16 +198,29 @@ public class Limelight implements NvConnectionListener { createFrame(); } + /** + * Callback to specify which stage is starting. Used to update UI. + * @param stage the Stage that is starting + */ @Override public void stageStarting(Stage stage) { System.out.println("Starting "+stage.getName()); streamFrame.showSpinner(stage); } + /** + * Callback that a stage has finished loading. + *
NOTE: Currently unimplemented. + * @param stage the Stage that has finished. + */ @Override public void stageComplete(Stage stage) { } + /** + * Callback that a stage has failed. Used to inform user that an error occurred. + * @param stage the Stage that was loading when the error occurred + */ @Override public void stageFailed(Stage stage) { streamFrame.dispose(); @@ -175,12 +228,20 @@ public class Limelight implements NvConnectionListener { displayError("Connection Error", "Starting " + stage.getName() + " failed"); } + /** + * Callback that the connection has finished loading and is started. + */ @Override public void connectionStarted() { streamFrame.hideSpinner(); GamepadListener.startSendingInput(conn); } + /** + * Callback that the connection has been terminated for some reason. + *
This is were the stream shutdown procedure takes place. + * @param e the Exception that was thrown- probable cause of termination. + */ @Override public void connectionTerminated(Exception e) { e.printStackTrace(); @@ -203,11 +264,20 @@ public class Limelight implements NvConnectionListener { } } + /** + * Displays a message to the user in the form of an info dialog. + * @param message the message to show the user + */ @Override public void displayMessage(String message) { JOptionPane.showMessageDialog(limeFrame, message, "Limelight", JOptionPane.INFORMATION_MESSAGE); } + /** + * Displays an error to the user in the form of an error dialog + * @param title the title for the dialog frame + * @param message the message to show the user + */ public void displayError(String title, String message) { JOptionPane.showMessageDialog(limeFrame, message, title, JOptionPane.ERROR_MESSAGE); }