Manager.java
Go to the documentation of this file.
00001 /*
00002  * Copyright 2012 Phidgets Inc.  All rights reserved.
00003  */
00004 
00005 package com.phidgets;
00006 
00007 import com.phidgets.event.*;
00008 
00009 import java.util.Iterator;
00010 import java.util.LinkedList;
00011 import java.util.Vector;
00012 
00024 public class Manager
00025 {
00026         private Vector phidgets;
00027 
00028         static
00029         {
00030                 try
00031                 {
00032                         System.loadLibrary("phidget21");
00033                 }
00034                 catch(UnsatisfiedLinkError ex)
00035                 {
00036                         String os = System.getProperty("os.name");
00037                         if(os.startsWith("Linux"))
00038                         {
00039                                 throw new ExceptionInInitializerError(ex.getMessage()
00040                                         +"\nCould not locate the Phidget C library (libphidget21.so)."
00041                                         +"\nMake sure it is installed, and add it's path to LD_LIBRARY_PATH.");
00042                         }
00043                         else if(os.startsWith("Windows"))
00044                         {
00045                                 throw new ExceptionInInitializerError(ex.getMessage()
00046                                 +"\nCould not locate the Phidget C library."
00047                                 +"\nThe Windows Phidget21 MSI must be installed.");
00048                         }
00049                         else if(os.startsWith("Mac"))
00050                         {
00051                                 throw new ExceptionInInitializerError(ex.getMessage()
00052                                 +"\nCould not locate the Phidget C library."
00053                                 +"\nThe Mac Phidget21 DMG must be installed.");
00054                         }
00055                         else
00056                         {
00057                                 throw new ExceptionInInitializerError(ex.getMessage()
00058                                 +"\nCould not locate the Phidget C library.");
00059                         }
00060                 }
00061         }
00062 
00063         private long handle = 0;
00069         public Manager() throws PhidgetException
00070         {
00071                 handle = create();
00072                 phidgets = new Vector();
00073                 addAttachListener(new AttachListener()
00074                 {
00075                         public void attached(AttachEvent ae)
00076                         {
00077                                 phidgets.add(ae.getSource());
00078                         }
00079                 });
00080                 addDetachListener(new DetachListener()
00081                 {
00082                         public void detached(DetachEvent ae)
00083                         {
00084                                 phidgets.remove(ae.getSource());
00085                         }
00086                 });
00087         }
00088         private final native long create() throws PhidgetException;
00089 
00096         public final native String getServerAddress() throws PhidgetException;
00104         public final native String getServerID() throws PhidgetException;
00111         public final native int getServerPort() throws PhidgetException;
00118         public final native boolean isAttached() throws PhidgetException;
00119 
00128         public final native boolean isAttachedToServer() throws PhidgetException;
00129 
00130         private final native void nativeClose() throws PhidgetException;
00131         private final native void nativeDelete() throws PhidgetException;
00132         private final native void nativeOpen() throws PhidgetException;
00133         private final native void nativeOpenRemote(String serverID, String pass) throws PhidgetException;
00134         private final native void nativeOpenRemoteIP(String ipAddress, int port, String pass) throws PhidgetException;
00135 
00141         public final void open() throws PhidgetException {
00142                 enableEvents(true);
00143                 nativeOpen();
00144         }
00151         public final void open(String ipAddress, int port, String password) throws PhidgetException
00152         {
00153                 enableEvents(true);
00154                 nativeOpenRemoteIP(ipAddress, port, password);
00155         }
00165         public final void open(String ipAddress, int port) throws PhidgetException
00166         {
00167                 enableEvents(true);
00168                 nativeOpenRemoteIP(ipAddress, port, "");
00169         }
00176         public final void open(String serverID, String password) throws PhidgetException
00177         {
00178                 enableEvents(true);
00179                 nativeOpenRemote(serverID, password);
00180         }
00190         public final void open(String serverID) throws PhidgetException
00191         {
00192                 enableEvents(true);
00193                 nativeOpenRemote(serverID, "");
00194         }
00195 
00201         public final void close() throws PhidgetException {
00202                 enableEvents(false);
00203                 nativeClose();
00204         }
00205 
00206         private void enableEvents(boolean b)
00207         {
00208                 enableManagerAttachEvents(b && attachListeners.size() > 0);
00209                 enableManagerDetachEvents(b && detachListeners.size() > 0);
00210                 enableServerConnectEvents(b && serverConnectListeners.size() > 0);
00211                 enableServerDisconnectEvents(b && serverDisconnectListeners.size() > 0);
00212         }
00213 
00214         private LinkedList attachListeners = new LinkedList();
00215         private long nativeAttachHandler = 0;
00216 
00225         public final void addAttachListener(AttachListener l) {
00226                 synchronized (attachListeners) {
00227                         attachListeners.add(l);
00228                         enableManagerAttachEvents(true);
00229                 }
00230         }
00231 
00235         public final void removeAttachListener(AttachListener l) {
00236                 synchronized (attachListeners) {
00237                         attachListeners.remove(l);
00238                         enableManagerAttachEvents(attachListeners.size() > 0);
00239                 }
00240         }
00241         private void fireAttach(AttachEvent e) {
00242                 synchronized (attachListeners) {
00243                         for (Iterator it = attachListeners.iterator();
00244                           it.hasNext(); )
00245                                 ((AttachListener)it.next()).attached(e);
00246                 }
00247         }
00248         private native void enableManagerAttachEvents(boolean b);
00249 
00250         private LinkedList detachListeners = new LinkedList();
00251         private long nativeDetachHandler = 0;
00252 
00261         public final void addDetachListener(DetachListener l) {
00262                 synchronized (detachListeners) {
00263                         detachListeners.add(l);
00264                         enableManagerDetachEvents(true);
00265                 }
00266         }
00267 
00271         public final void removeDetachListener(DetachListener l) {
00272                 synchronized (detachListeners) {
00273                         detachListeners.remove(l);
00274                         enableManagerDetachEvents(detachListeners.size() > 0);
00275                 }
00276         }
00277         private void fireDetach(DetachEvent e) {
00278                 synchronized (detachListeners) {
00279                         for (Iterator it = detachListeners.iterator();
00280                           it.hasNext(); )
00281                         ((DetachListener)it.next()).detached(e);
00282                 }
00283         }
00284         private native void enableManagerDetachEvents(boolean b);
00285 
00286         private LinkedList serverConnectListeners = new LinkedList();
00287         private long nativeServerConnectHandler = 0;
00288 
00296         public final void addServerConnectListener(ServerConnectListener l)
00297         {
00298                 synchronized (serverConnectListeners)
00299                 {
00300                         serverConnectListeners.add(l);
00301                         enableServerConnectEvents(true);
00302                 }
00303         }
00304 
00308         public final void removeServerConnectListener(ServerConnectListener l)
00309         {
00310                 synchronized (serverConnectListeners)
00311                 {
00312                         serverConnectListeners.remove(l);
00313                         enableServerConnectEvents(serverConnectListeners.size() > 0);
00314                 }
00315         }
00316         private void fireServerConnect(ServerConnectEvent e)
00317         {
00318                 synchronized (serverConnectListeners)
00319                 {
00320                         for (Iterator it = serverConnectListeners.iterator();
00321                           it.hasNext(); )
00322                                 ((ServerConnectListener)it.next()).serverConnected(e);
00323                 }
00324         }
00325         private native void enableServerConnectEvents(boolean b);
00326 
00327 
00328         private LinkedList serverDisconnectListeners = new LinkedList();
00329         private long nativeServerDisconnectHandler = 0;
00330 
00338         public final void addServerDisconnectListener(ServerDisconnectListener l)
00339         {
00340                 synchronized (serverDisconnectListeners)
00341                 {
00342                         serverDisconnectListeners.add(l);
00343                         enableServerDisconnectEvents(true);
00344                 }
00345         }
00346 
00350         public final void removeServerDisconnectListener(ServerDisconnectListener l)
00351         {
00352                 synchronized (serverDisconnectListeners)
00353                 {
00354                         serverDisconnectListeners.remove(l);
00355                         enableServerDisconnectEvents(serverDisconnectListeners.size() > 0);
00356                 }
00357         }
00358         private void fireServerDisconnect(ServerDisconnectEvent e)
00359         {
00360                 synchronized (serverDisconnectListeners)
00361                 {
00362                         for (Iterator it = serverDisconnectListeners.iterator();
00363                           it.hasNext(); )
00364                                 ((ServerDisconnectListener)it.next()).serverDisconnected(e);
00365                 }
00366         }
00367         private native void enableServerDisconnectEvents(boolean b);
00368 
00369         protected void finalize() throws Throwable
00370         {
00371                 try
00372                 {
00373                         close();
00374                 } catch (Exception e) {
00375                         ;
00376                 }
00377                 try
00378                 {
00379                         nativeDelete();
00380                 }
00381                 catch (Exception e)
00382                 {
00383                         ;
00384                 }
00385                 finally{
00386                         handle = 0;
00387                         super.finalize();
00388                 }
00389         }
00390 
00394         public String toString()
00395         {
00396                 return "PhidgetManager: ";
00397         }
00398 
00404         public Vector getPhidgets()
00405         {
00406                 return phidgets;
00407         }
00408 }


pedal_monitor
Author(s): Pedro Mendes
autogenerated on Fri Jun 6 2014 18:37:21