diff --git a/plugins/ScreenPanel.form b/plugins/ScreenPanel.form index 05a3120..b3ac5eb 100644 --- a/plugins/ScreenPanel.form +++ b/plugins/ScreenPanel.form @@ -233,6 +233,9 @@ + + + diff --git a/plugins/ScreenPanel.java b/plugins/ScreenPanel.java index 0ca0bee..49e8c4c 100644 --- a/plugins/ScreenPanel.java +++ b/plugins/ScreenPanel.java @@ -53,7 +53,64 @@ public class ScreenPanel extends Panel implements CamServerViewer.CamServerViewe DiscretePositioner filter; final Logger logger; - + class MyCamServerViewer extends CamServerViewer{ + public void grabBackground() throws Exception { + if (getCamera() != null) { + boolean laserOn1 = false; + boolean laserOn2 = false; + OptionResult ret = SwingUtils.showOption(getTopLevel(), "Capture Background", "Do you want to check laser on delay?", OptionType.YesNoCancel); + if (ret == OptionResult.Yes){ + laserOn1 = getLaserState(1); + laserOn2 = getLaserState(2); + if (laserOn1 || laserOn2) { + if (laserOn1){ + ret = SwingUtils.showOption(getTopLevel(), "Capture Background", "Do you want to put Bunch 1 laser on delay for capturing background?", OptionType.YesNoCancel); + if (ret == OptionResult.No) { + laserOn1 = false; + } + if (ret == OptionResult.Cancel) { + return; + } + } + if (laserOn2){ + ret = SwingUtils.showOption(getTopLevel(), "Capture Background", "Do you want to put Bunch 2 laser on delay for capturing background?", OptionType.YesNoCancel); + if (ret == OptionResult.No) { + laserOn2= false; + } + } + } + } + + if (ret == OptionResult.Cancel) { + return; + } + + if (laserOn1) { + setLaserState(1,false); + } + if (laserOn2) { + setLaserState(2,false); + } + + try { + System.out.println("Grabbing background for: " + getDisplayName()); + if (getServer() != null) { + getServer().captureBackground(5); + } else { + getCamera().captureBackground(5, 0); + } + } finally { + if (laserOn1) { + setLaserState(1,true); + } + if (laserOn2) { + setLaserState(2,true); + } + } + SwingUtils.showMessage(getTopLevel(), "Success", "Success capturing background", 5000); + } + } + } public ScreenPanel() { logger = Logger.getLogger(getClass().getName()); @@ -357,17 +414,13 @@ public class ScreenPanel extends Panel implements CamServerViewer.CamServerViewe boolean getLaserState(int bunch) throws Exception { //return (Epics.get("SIN-TIMAST-TMA:Beam-Las-Delay-Sel", Integer.class) == 0); - try{ - if (bunch<=0){ - return getLaserState(1) && getLaserState(2); - } - if (bunch==2){ - return (Epics.get("SWISSFEL-STATUS:Bunch-2-OnDelay-Sel", Integer.class) == 0); - } - return (Epics.get("SWISSFEL-STATUS:Bunch-1-OnDelay-Sel", Integer.class) == 0); - } catch (Exception ex){ - return false; + if (bunch<=0){ + return getLaserState(1) && getLaserState(2); } + if (bunch==2){ + return (Epics.get("SWISSFEL-STATUS:Bunch-2-OnDelay-Sel", Integer.class) == 0); + } + return (Epics.get("SWISSFEL-STATUS:Bunch-1-OnDelay-Sel", Integer.class) == 0); } @@ -392,7 +445,7 @@ public class ScreenPanel extends Panel implements CamServerViewer.CamServerViewe buttonPulse1 = new javax.swing.JButton(); buttonPulse2 = new javax.swing.JButton(); textPulse = new javax.swing.JTextField(); - camServerViewer = new ch.psi.pshell.ui.CamServerViewer(); + camServerViewer = new MyCamServerViewer(); setPreferredSize(new java.awt.Dimension(873, 600)); setLayout(new java.awt.BorderLayout());