00001 00002 /* 00003 * Copyright 2006 Phidgets Inc. All rights reserved. 00004 */ 00005 00006 package com.phidgets; 00007 import java.util.Iterator; 00008 import java.util.LinkedList; 00009 import com.phidgets.event.*; 00019 public final class WeightSensorPhidget extends Phidget 00020 { 00021 public WeightSensorPhidget () throws PhidgetException 00022 { 00023 super (create ()); 00024 } 00025 private static native long create () throws PhidgetException; 00034 public native double getWeight () throws PhidgetException; 00043 public native void setWeightChangeTrigger (double newVal) throws PhidgetException; 00052 public native double getWeightChangeTrigger () throws PhidgetException; 00053 00054 private final void enableDeviceSpecificEvents (boolean b) 00055 { 00056 enableWeightChangeEvents (b && weightChangeListeners.size () > 0); 00057 } 00066 public final void addWeightChangeListener (WeightChangeListener l) 00067 { 00068 synchronized (weightChangeListeners) 00069 { 00070 weightChangeListeners.add (l); 00071 enableWeightChangeEvents (true); 00072 }} private LinkedList weightChangeListeners = new LinkedList (); 00073 private long nativeWeightChangeHandler = 0; 00074 public final void removeWeightChangeListener (WeightChangeListener l) 00075 { 00076 synchronized (weightChangeListeners) 00077 { 00078 weightChangeListeners.remove (l); 00079 enableWeightChangeEvents (weightChangeListeners.size () > 0); 00080 }} private void fireWeightChange (WeightChangeEvent e) 00081 { 00082 synchronized (weightChangeListeners) 00083 { 00084 for (Iterator it = weightChangeListeners.iterator (); it.hasNext ();) 00085 ((WeightChangeListener) it.next ()).weightChanged (e); 00086 } 00087 } 00088 private native void enableWeightChangeEvents (boolean b); 00089 }