diff --git a/devices/CurrentCamera.properties b/devices/CurrentCamera.properties index bfd2855..ced3320 100644 --- a/devices/CurrentCamera.properties +++ b/devices/CurrentCamera.properties @@ -1,4 +1,4 @@ -#Fri Jan 13 14:56:08 CET 2017 +#Fri Jan 13 15:48:47 CET 2017 colormap=Temperature colormapAutomatic=true colormapMax=0.0 diff --git a/plugins/ScreenPanel.java b/plugins/ScreenPanel.java index 2cf222a..4e7cd12 100644 --- a/plugins/ScreenPanel.java +++ b/plugins/ScreenPanel.java @@ -68,9 +68,7 @@ import java.util.List; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; -import javax.swing.JCheckBoxMenuItem; import javax.swing.JDialog; -import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.SwingUtilities; import javax.swing.event.PopupMenuEvent; @@ -479,6 +477,9 @@ public class ScreenPanel extends Panel { buttonGrabBackground.setEnabled(false); checkBackground.setEnabled(false); spinnerThreshold.setEnabled(false); + comboScreen.setModel(new DefaultComboBoxModel()); + comboFilter.setModel(new DefaultComboBoxModel()); + checkThreshold.setEnabled(false); if (camera != null) { @@ -560,6 +561,7 @@ public class ScreenPanel extends Panel { showException(ex); } camera.initialize(); + camera.assertInitialized(); if (camera instanceof Camtool) { //Managing no background exception. Can be done in a better way? checkBackground.setEnabled(true); @@ -649,40 +651,44 @@ public class ScreenPanel extends Panel { checkReticle(); onTimer(); } - try { - screen = new DiscretePositioner("CurrentScreen", cameraName + ":SET_SCREEN1_POS", cameraName + ":GET_SCREEN1_POS"); - screen.initialize(); - DefaultComboBoxModel model = new DefaultComboBoxModel(); - for (String pos : screen.getPositions()) { - model.addElement(pos); - } - comboScreen.setModel(model); - comboScreen.setSelectedItem(screen.read()); + if (camera.isInitialized()){ + Thread t = new Thread(() -> { + try { + screen = new DiscretePositioner("CurrentScreen", cameraName + ":SET_SCREEN1_POS", cameraName + ":GET_SCREEN1_POS"); + screen.initialize(); + DefaultComboBoxModel model = new DefaultComboBoxModel(); + for (String pos : screen.getPositions()) { + model.addElement(pos); + } + comboScreen.setModel(model); + comboScreen.setSelectedItem(screen.read()); - } catch (Exception ex) { - comboScreen.setModel(new DefaultComboBoxModel()); - System.err.println(ex.getMessage()); - screen = null; - } - comboScreen.setEnabled(screen != null); - valueScreen.setDevice(screen); - - try { - filter = new DiscretePositioner("CurrentFilter", cameraName + ":SET_FILTER", cameraName + ":GET_FILTER"); - filter.initialize(); - DefaultComboBoxModel model = new DefaultComboBoxModel(); - for (String pos : filter.getPositions()) { - model.addElement(pos); + } catch (Exception ex) { + comboScreen.setModel(new DefaultComboBoxModel()); + System.err.println(ex.getMessage()); + screen = null; + } + comboScreen.setEnabled(screen != null); + valueScreen.setDevice(screen); + }); + t.start(); + try { + filter = new DiscretePositioner("CurrentFilter", cameraName + ":SET_FILTER", cameraName + ":GET_FILTER"); + filter.initialize(); + DefaultComboBoxModel model = new DefaultComboBoxModel(); + for (String pos : filter.getPositions()) { + model.addElement(pos); + } + comboFilter.setModel(model); + comboFilter.setSelectedItem(filter.read()); + } catch (Exception ex) { + System.err.println(ex.getMessage()); + filter = null; } - comboFilter.setModel(model); - comboFilter.setSelectedItem(filter.read()); - } catch (Exception ex) { - comboFilter.setModel(new DefaultComboBoxModel()); - System.err.println(ex.getMessage()); - filter = null; + comboFilter.setEnabled(filter != null); + valueFilter.setDevice(filter); + t.join(); } - comboFilter.setEnabled(filter != null); - valueFilter.setDevice(filter); } @@ -2015,9 +2021,9 @@ public class ScreenPanel extends Panel { if (!comboCameras.isEnabled()) { throw new Exception("Invalid state"); } - //comboCameras.setEnabled(false); - //buttonCamtool.setEnabled(false); - //buttonDirect.setEnabled(false); + comboCameras.setEnabled(false); + buttonCamtool.setEnabled(false); + buttonDirect.setEnabled(false); final String cameraName = (String) comboCameras.getSelectedItem(); new Thread(new Runnable() { @Override @@ -2027,9 +2033,9 @@ public class ScreenPanel extends Panel { } catch (Exception ex) { ex.printStackTrace(); } finally { - //comboCameras.setEnabled(true); - //buttonCamtool.setEnabled(true); - //buttonDirect.setEnabled(true); + comboCameras.setEnabled(true); + buttonCamtool.setEnabled(true); + buttonDirect.setEnabled(true); } } }).start();