diff --git a/plugins/Eiger.java b/plugins/Eiger.java index f4c7da3..0ab2581 100644 --- a/plugins/Eiger.java +++ b/plugins/Eiger.java @@ -1,5 +1,7 @@ import ch.psi.pshell.device.Device; +import ch.psi.pshell.device.DeviceAdapter; +import ch.psi.pshell.device.DeviceListener; import ch.psi.pshell.ui.Panel; import ch.psi.utils.EncoderJson; import ch.psi.utils.State; @@ -20,24 +22,37 @@ public class Eiger extends Panel { renderer.setPersistenceFile(Paths.get(getContext().getSetup().expandPath(RENDERER_PERSIST_FILE))); } + final DeviceListener deviceListener = new DeviceAdapter() { + @Override + public void onStateChanged(Device device, State state, State former) { + updateControls(); + } + }; + //Overridable callbacks @Override public void onInitialize(int runCount) { detector = (Device) getDevice("detector"); stddaq = (Device) getDevice("std_daq"); + if (detector!=null){ + detector.addListener(deviceListener); + } + if (stddaq!=null){ + stddaq.addListener(deviceListener); + } } void updateControls(){ boolean enabled = getState().isReady(); - buttonStart.setEnabled(enabled && ((stddaq!=null) || (stddaq.getState().isReady()))); - buttonStop.setEnabled(enabled && ((stddaq!=null) || (stddaq.getState()==State.Busy))); - buttonConfig.setEnabled(enabled && ((stddaq!=null) || (stddaq.getState().isInitialized()))); + buttonStart.setEnabled(enabled && ((stddaq!=null) && (stddaq.getState().isReady()))); + buttonStop.setEnabled(enabled && ((stddaq!=null) && (stddaq.getState()==State.Busy))); + buttonConfig.setEnabled(enabled && ((stddaq!=null) && (stddaq.getState().isInitialized()))); - buttonStartDet.setEnabled(enabled && ((detector!=null) || (detector.getState().isReady()))); - buttonStopDet.setEnabled(enabled && ((detector!=null) || (detector.getState()==State.Busy))); - buttonConfigDet.setEnabled(enabled && ((detector!=null) || (detector.getState().isInitialized()))); - buttonParsDet.setEnabled(enabled && ((detector!=null) || (detector.getState().isInitialized()))); + buttonStartDet.setEnabled(enabled && ((detector!=null) && (detector.getState().isReady()))); + buttonStopDet.setEnabled(enabled && ((detector!=null) && (detector.getState()==State.Busy))); + buttonConfigDet.setEnabled(enabled && ((detector!=null) && (detector.getState().isInitialized()))); + buttonParsDet.setEnabled(enabled && ((detector!=null) && (detector.getState().isInitialized()))); } @@ -306,7 +321,7 @@ public class Eiger extends Panel { private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStartActionPerformed try{ if (stddaq!=null){ - evalAsync("stddaq.start()"); + evalAsync("std_daq.start()"); } } catch (Exception ex){ showException(ex); @@ -316,7 +331,7 @@ public class Eiger extends Panel { private void buttonStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStopActionPerformed try{ if (stddaq!=null){ - evalAsync("stddaq.stop()"); + evalAsync("std_daq.stop()"); } } catch (Exception ex){ showException(ex); diff --git a/script/devices/Detector.py b/script/devices/Detector.py index e649f2b..607148f 100644 --- a/script/devices/Detector.py +++ b/script/devices/Detector.py @@ -6,10 +6,10 @@ class Detector(DeviceBase): pass def start(self): - setState(State.Busy) + self.setState(State.Busy) def stop(self): - setState(State.Ready) + self.setState(State.Ready) def doClose(self): pass \ No newline at end of file diff --git a/script/devices/StdDaq.py b/script/devices/StdDaq.py index 8ccf9c9..9cc54f2 100644 --- a/script/devices/StdDaq.py +++ b/script/devices/StdDaq.py @@ -6,10 +6,10 @@ class StdDaq(DeviceBase): pass def start(self): - setState(State.Busy) + self.setState(State.Busy) def stop(self): - setState(State.Ready) + self.setState(State.Ready) def doClose(self): pass