Protect write to permanent pipelines
This commit is contained in:
@@ -21,7 +21,6 @@ import ch.psi.pshell.swing.SwingUtils.OptionType;
|
||||
import ch.psi.pshell.screenpanel.Options;
|
||||
import ch.psi.pshell.screenpanel.CamServerViewer;
|
||||
import ch.psi.pshell.utils.Threading;
|
||||
import java.awt.Color;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.io.IOException;
|
||||
@@ -30,11 +29,15 @@ import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.DefaultComboBoxModel;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JSpinner;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.PopupMenuEvent;
|
||||
import javax.swing.event.PopupMenuListener;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -60,6 +63,10 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
|
||||
boolean detached;
|
||||
String detachedInstance;
|
||||
String originalInstance;
|
||||
boolean pipelineControlsEnabled;
|
||||
|
||||
final boolean disable_detach;
|
||||
final boolean edit_permanent;
|
||||
|
||||
final Logger logger;
|
||||
|
||||
@@ -76,6 +83,7 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
|
||||
public ScreenPanelSLS() {
|
||||
logger = Logger.getLogger(getClass().getName());
|
||||
initComponents();
|
||||
pipelineControlsEnabled = true;
|
||||
panelParameters.setVisible(false);
|
||||
panelScreen.setVisible(false);
|
||||
panelControls.setVisible(false);
|
||||
@@ -87,7 +95,9 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
|
||||
camServerViewer.setSidePanelVisible(true);
|
||||
camServerViewer.setShowFit(true);
|
||||
camServerViewer.setShowProfile(true);
|
||||
camServerViewer.setShowReticle(true);
|
||||
camServerViewer.setShowReticle(true);
|
||||
disable_detach = App.hasAdditionalArgument("disable_detach");
|
||||
edit_permanent = !disable_detach && App.hasAdditionalArgument("edit_permanent");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -114,6 +124,28 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
|
||||
} catch (Exception ex) {
|
||||
logger.log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
if (!edit_permanent){
|
||||
camServerViewer.getRenderer().getPopupMenu().addPopupMenuListener(new PopupMenuListener() {
|
||||
@Override
|
||||
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
|
||||
if (!pipelineControlsEnabled){
|
||||
SwingUtilities.invokeLater(()->{
|
||||
SwingUtils.getMenuItem(camServerViewer.getRenderer().getPopupMenu(), "Set ROI", true).setEnabled(false);
|
||||
SwingUtils.getMenuItem(camServerViewer.getRenderer().getPopupMenu(), "Reset ROI", true).setEnabled(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void popupMenuCanceled(PopupMenuEvent e) {
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -154,8 +186,17 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void setPipelineControlsEnabled(boolean value){
|
||||
pipelineControlsEnabled = value;
|
||||
for (JCheckBox button : SwingUtils.getComponentsByType(camServerViewer.getPanelPipeline(), JCheckBox.class)){
|
||||
button.setEnabled(value);
|
||||
}
|
||||
for (JSpinner spinner : SwingUtils.getComponentsByType(camServerViewer.getPanelPipeline(), JSpinner.class)){
|
||||
spinner.setEnabled(value);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTimer() {
|
||||
//for (Device dev : new Device[]{screen, exposure}) {
|
||||
@@ -207,10 +248,12 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
|
||||
panelParameters.setVisible(false);
|
||||
panelScreen.setVisible(false);
|
||||
panelControls.setVisible(false);
|
||||
}
|
||||
boolean wasDetached = detached && detachedInstance.startsWith(name);
|
||||
detached = (name!=null) && name.contains("detached_instance");
|
||||
panelEpicsHandler.setVisible(detached || wasDetached);
|
||||
}
|
||||
if (!disable_detach){
|
||||
boolean wasDetached = detached && detachedInstance.startsWith(name);
|
||||
detached = (name!=null) && name.contains("detached_instance");
|
||||
panelEpicsHandler.setVisible(detached || wasDetached);
|
||||
}
|
||||
updateDialogTitle();
|
||||
}
|
||||
|
||||
@@ -237,10 +280,15 @@ public class ScreenPanelSLS extends Panel implements CamServerViewer.CamServerVi
|
||||
panelScreen.setVisible(cameraControls);
|
||||
panelControls.setVisible(cameraControls);
|
||||
|
||||
if(permanentInstances!=null){
|
||||
boolean permanent = permanentInstances.keySet().contains(instance);
|
||||
ckDebugEpicsHandler.setSelected(detached);
|
||||
panelEpicsHandler.setVisible(detached || permanent);
|
||||
if (!disable_detach){
|
||||
if(permanentInstances!=null){
|
||||
boolean permanent = permanentInstances.keySet().contains(instance);
|
||||
ckDebugEpicsHandler.setSelected(detached);
|
||||
panelEpicsHandler.setVisible(detached || permanent);
|
||||
if (!edit_permanent){
|
||||
setPipelineControlsEnabled(!permanent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cameraName!=null){
|
||||
|
||||
Reference in New Issue
Block a user