623 lines
32 KiB
Java
Executable File
623 lines
32 KiB
Java
Executable File
import ch.psi.pshell.epics.ChannelDouble;
|
|
import ch.psi.pshell.epics.ChannelInteger;
|
|
import ch.psi.pshell.imaging.ColormapSource;
|
|
import ch.psi.pshell.framework.Panel;
|
|
import ch.psi.pshell.utils.State;
|
|
import java.io.IOException;
|
|
import java.util.logging.Level;
|
|
import java.util.concurrent.TimeUnit;
|
|
import javax.swing.SwingUtilities;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public class Eiger extends Panel {
|
|
boolean updatingControls=true;
|
|
ChannelInteger bitDepth;
|
|
ChannelInteger mode;
|
|
ChannelDouble exposure;
|
|
ChannelDouble threshold;
|
|
|
|
public Eiger() {
|
|
initComponents();
|
|
}
|
|
|
|
void initializeDevices() throws IOException, InterruptedException{
|
|
}
|
|
|
|
//Overridable callbacks
|
|
@Override
|
|
public void onInitialize(int runCount) {
|
|
try {
|
|
this.stopTimer();
|
|
renderer.clearOverlays();
|
|
bitDepth = ((ChannelInteger)getDevice("eiger_bit_depth"));
|
|
mode = ((ChannelInteger) getDevice("eiger_mode"));
|
|
exposure = ((ChannelDouble) getDevice("eiger_exposure"));
|
|
threshold = ((ChannelDouble) getDevice("eiger_threshold"));
|
|
startTimer(1000,10);
|
|
} catch (Exception ex) {
|
|
showException(ex);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onStateChange(State state, State former) {
|
|
if (former==State.Initializing){
|
|
if (checkMeasurements.isSelected()){
|
|
checkMeasurementsActionPerformed(null);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onExecutedFile(String fileName, Object result) {
|
|
}
|
|
|
|
@Override
|
|
public void onTimer() {
|
|
updatingControls=true;
|
|
//initializeDevices();
|
|
try{
|
|
try{
|
|
String value = String.valueOf(bitDepth.take());
|
|
comboDepth.setSelectedItem(value);
|
|
} catch (Exception ex){
|
|
comboDepth.setSelectedIndex(comboDepth.getItemCount()-1); //Set "Unknown"
|
|
}
|
|
try{
|
|
comboMode.setSelectedIndex(mode.take());
|
|
} catch (Exception ex){
|
|
}
|
|
try{
|
|
spinnerExposure.setValue(exposure.take());
|
|
} catch (Exception ex){
|
|
}
|
|
try{
|
|
spinnerThreshold.setValue(threshold.take());
|
|
} catch (Exception ex){
|
|
}
|
|
comboDepth.setEnabled(bitDepth.isInitialized());
|
|
comboMode.setEnabled(mode.isInitialized());
|
|
spinnerExposure.setEnabled(exposure.isInitialized());
|
|
spinnerThreshold.setEnabled(threshold.isInitialized());
|
|
|
|
} finally{
|
|
updatingControls=false;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void onShow() {
|
|
super.onShow();
|
|
new Thread(()->{
|
|
String fov="";
|
|
try {
|
|
fov = String.valueOf(eval("fov.take()", true));
|
|
} catch (Exception ex) {
|
|
}
|
|
String label =fov;
|
|
SwingUtilities.invokeLater(()->{
|
|
textFOV.setText(label);
|
|
});
|
|
}).start();
|
|
}
|
|
|
|
|
|
//Callback to perform update - in event thread
|
|
@Override
|
|
protected void doUpdate() {
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
|
private void initComponents() {
|
|
|
|
renderer = new ch.psi.pshell.imaging.DeviceRenderer();
|
|
jLabel1 = new javax.swing.JLabel();
|
|
comboDepth = new javax.swing.JComboBox<>();
|
|
jLabel2 = new javax.swing.JLabel();
|
|
comboMode = new javax.swing.JComboBox<>();
|
|
jLabel3 = new javax.swing.JLabel();
|
|
spinnerExposure = new javax.swing.JSpinner();
|
|
deviceValuePanel1 = new ch.psi.pshell.swing.DeviceValuePanel();
|
|
deviceValuePanel2 = new ch.psi.pshell.swing.DeviceValuePanel();
|
|
deviceValuePanel3 = new ch.psi.pshell.swing.DeviceValuePanel();
|
|
deviceValuePanel4 = new ch.psi.pshell.swing.DeviceValuePanel();
|
|
buttonShowDetectorPanel = new javax.swing.JButton();
|
|
checkMeasurements = new javax.swing.JCheckBox();
|
|
buttonAquire = new javax.swing.JButton();
|
|
buttonDone = new javax.swing.JButton();
|
|
buttonOpenVG10 = new javax.swing.JButton();
|
|
buttonCloseVG10 = new javax.swing.JButton();
|
|
comboScale = new javax.swing.JComboBox<>();
|
|
jLabel4 = new javax.swing.JLabel();
|
|
spinnerMax = new javax.swing.JSpinner();
|
|
spinnerMin = new javax.swing.JSpinner();
|
|
jLabel5 = new javax.swing.JLabel();
|
|
jLabel6 = new javax.swing.JLabel();
|
|
jLabel7 = new javax.swing.JLabel();
|
|
textFOV = new javax.swing.JTextField();
|
|
jLabel8 = new javax.swing.JLabel();
|
|
spinnerThreshold = new javax.swing.JSpinner();
|
|
deviceValuePanel5 = new ch.psi.pshell.swing.DeviceValuePanel();
|
|
|
|
renderer.setDeviceName("image");
|
|
renderer.setMode(ch.psi.pshell.imaging.RendererMode.Stretch);
|
|
|
|
jLabel1.setText("Bit Depth:");
|
|
|
|
comboDepth.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "8", "16", "32" }));
|
|
comboDepth.setEnabled(false);
|
|
comboDepth.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
comboDepthActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
jLabel2.setText("Mode:");
|
|
|
|
comboMode.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Single", "Continuous" }));
|
|
comboMode.setEnabled(false);
|
|
comboMode.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
comboModeActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
jLabel3.setText("Exposure [s]:");
|
|
|
|
spinnerExposure.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.001d, 300.0d, 1.0d));
|
|
spinnerExposure.setEnabled(false);
|
|
spinnerExposure.addChangeListener(new javax.swing.event.ChangeListener() {
|
|
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
|
spinnerExposureStateChanged(evt);
|
|
}
|
|
});
|
|
|
|
deviceValuePanel1.setDeviceName("eiger_mode_rbv");
|
|
|
|
deviceValuePanel2.setDeviceName("eiger_bit_depth_rbv");
|
|
|
|
deviceValuePanel3.setDeviceName("eiger_exposure_rbv");
|
|
|
|
deviceValuePanel4.setDeviceName("eiger_status");
|
|
|
|
buttonShowDetectorPanel.setText("Control Panel");
|
|
buttonShowDetectorPanel.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
buttonShowDetectorPanelActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
checkMeasurements.setText("Measurements");
|
|
checkMeasurements.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
checkMeasurementsActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
buttonAquire.setText("Start");
|
|
buttonAquire.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
buttonAquireActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
buttonDone.setText("Stop");
|
|
buttonDone.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
buttonDoneActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
buttonOpenVG10.setText("Open VG10");
|
|
buttonOpenVG10.setMaximumSize(new java.awt.Dimension(68, 27));
|
|
buttonOpenVG10.setMinimumSize(new java.awt.Dimension(68, 27));
|
|
buttonOpenVG10.setPreferredSize(new java.awt.Dimension(68, 27));
|
|
buttonOpenVG10.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
buttonOpenVG10ActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
buttonCloseVG10.setText("Close VG10");
|
|
buttonCloseVG10.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
buttonCloseVG10ActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
comboScale.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Auto", "Manual" }));
|
|
comboScale.addActionListener(new java.awt.event.ActionListener() {
|
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
comboScaleActionPerformed(evt);
|
|
}
|
|
});
|
|
|
|
jLabel4.setText("Scale:");
|
|
|
|
spinnerMax.addChangeListener(new javax.swing.event.ChangeListener() {
|
|
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
|
spinnerMaxStateChanged(evt);
|
|
}
|
|
});
|
|
|
|
spinnerMin.addChangeListener(new javax.swing.event.ChangeListener() {
|
|
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
|
spinnerMinStateChanged(evt);
|
|
}
|
|
});
|
|
|
|
jLabel5.setText("Max:");
|
|
|
|
jLabel6.setText("Min:");
|
|
|
|
jLabel7.setText("FOV:");
|
|
|
|
textFOV.setHorizontalAlignment(javax.swing.JTextField.CENTER);
|
|
textFOV.setDisabledTextColor(new java.awt.Color(0, 0, 0));
|
|
textFOV.setEnabled(false);
|
|
|
|
jLabel8.setText("Threshold [eV]:");
|
|
|
|
spinnerThreshold.setModel(new javax.swing.SpinnerNumberModel(0.0d, null, null, 1.0d));
|
|
spinnerThreshold.setEnabled(false);
|
|
spinnerThreshold.addChangeListener(new javax.swing.event.ChangeListener() {
|
|
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
|
spinnerThresholdStateChanged(evt);
|
|
}
|
|
});
|
|
spinnerThreshold.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
|
|
public void propertyChange(java.beans.PropertyChangeEvent evt) {
|
|
spinnerThresholdPropertyChange(evt);
|
|
}
|
|
});
|
|
|
|
deviceValuePanel5.setDeviceName("eiger_threshold_rbv");
|
|
|
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
|
this.setLayout(layout);
|
|
layout.setHorizontalGroup(
|
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addContainerGap()
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(renderer, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addComponent(comboScale, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(jLabel4)
|
|
.addComponent(jLabel6)
|
|
.addComponent(jLabel5)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
|
.addComponent(spinnerMax, javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addComponent(spinnerMin, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE))
|
|
.addComponent(checkMeasurements))
|
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addComponent(jLabel1)
|
|
.addComponent(jLabel2)
|
|
.addComponent(jLabel3)
|
|
.addComponent(jLabel7))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
|
.addComponent(spinnerExposure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(deviceValuePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(textFOV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
|
.addComponent(jLabel8)
|
|
.addGap(10, 10, 10)))
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(spinnerThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
|
.addComponent(deviceValuePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(comboMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addComponent(comboDepth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(buttonAquire, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
.addComponent(buttonDone, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addComponent(buttonCloseVG10, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(buttonOpenVG10, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
|
.addGap(166, 166, 166))))
|
|
);
|
|
|
|
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboDepth, comboMode, deviceValuePanel1, deviceValuePanel2, deviceValuePanel3, spinnerExposure, textFOV});
|
|
|
|
layout.setVerticalGroup(
|
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
|
.addContainerGap()
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER, false)
|
|
.addComponent(jLabel2)
|
|
.addComponent(comboMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(deviceValuePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
|
.addComponent(buttonAquire, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(buttonOpenVG10, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER, false)
|
|
.addComponent(jLabel1)
|
|
.addComponent(comboDepth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(buttonCloseVG10, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(buttonDone, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(deviceValuePanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
|
|
.addComponent(jLabel3)
|
|
.addComponent(spinnerExposure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(deviceValuePanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(deviceValuePanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE))
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addComponent(deviceValuePanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
|
.addComponent(jLabel7)
|
|
.addComponent(textFOV, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addComponent(jLabel8)
|
|
.addComponent(spinnerThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addGap(36, 36, 36)
|
|
.addComponent(checkMeasurements)
|
|
.addGap(45, 45, 45)
|
|
.addComponent(jLabel4)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(comboScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
|
.addComponent(jLabel5)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(jLabel6)
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
.addGap(0, 0, Short.MAX_VALUE))
|
|
.addGroup(layout.createSequentialGroup()
|
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
.addComponent(renderer, javax.swing.GroupLayout.DEFAULT_SIZE, 368, Short.MAX_VALUE))))
|
|
);
|
|
|
|
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboDepth, comboMode, deviceValuePanel1, deviceValuePanel2, deviceValuePanel3, deviceValuePanel4, spinnerExposure, textFOV});
|
|
|
|
}// </editor-fold>//GEN-END:initComponents
|
|
|
|
private void comboDepthActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboDepthActionPerformed
|
|
try{
|
|
if (!updatingControls){
|
|
ch.psi.pshell.device.Camera eiger = (ch.psi.pshell.device.Camera) getDevice("eiger");
|
|
if (eiger.isStarted()){
|
|
buttonDoneActionPerformed(null);
|
|
eiger.waitState(State.Ready, 10000); //Timeout of 10s
|
|
}
|
|
if (comboDepth.getSelectedIndex()!=comboDepth.getItemCount()) {
|
|
Integer value = Integer.valueOf((String)comboDepth.getSelectedItem());
|
|
bitDepth.write(value);
|
|
}
|
|
}
|
|
} catch (Exception ex){
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_comboDepthActionPerformed
|
|
|
|
private void comboModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboModeActionPerformed
|
|
try{
|
|
if (!updatingControls){
|
|
ch.psi.pshell.device.Camera eiger = (ch.psi.pshell.device.Camera) getDevice("eiger");
|
|
if (eiger.isStarted()){
|
|
buttonDoneActionPerformed(null);
|
|
eiger.waitState(State.Ready, 10000); //Timeout of 10s
|
|
}
|
|
Integer value = comboMode.getSelectedIndex();
|
|
if (value==1){
|
|
value++;
|
|
}
|
|
mode.write(value);
|
|
}
|
|
} catch (Exception ex){
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_comboModeActionPerformed
|
|
|
|
private void spinnerExposureStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerExposureStateChanged
|
|
try{
|
|
if (!updatingControls){
|
|
ch.psi.pshell.device.Camera eiger = (ch.psi.pshell.device.Camera) getDevice("eiger");
|
|
if (eiger.isStarted()){
|
|
buttonDoneActionPerformed(null);
|
|
eiger.waitState(State.Ready, 10000); //Timeout of 10s
|
|
}
|
|
//((ch.psi.pshell.device.Camera) getDevice("eiger")).stop();
|
|
//TimeUnit.SECONDS.sleep(1);
|
|
exposure.write((Double)spinnerExposure.getValue());
|
|
}
|
|
} catch (Exception ex){
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_spinnerExposureStateChanged
|
|
|
|
private void buttonShowDetectorPanelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonShowDetectorPanelActionPerformed
|
|
try {
|
|
showDevicePanel("eiger");
|
|
} catch (Exception ex) {
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_buttonShowDetectorPanelActionPerformed
|
|
|
|
private void checkMeasurementsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkMeasurementsActionPerformed
|
|
try {
|
|
if (checkMeasurements.isSelected()){
|
|
setGlobalVar("PLUGIN_RENDERER", renderer);
|
|
evalAsync("start_measurements(renderer=PLUGIN_RENDERER)");
|
|
} else {
|
|
evalAsync("stop_measurements()");
|
|
}
|
|
} catch (Exception ex) {
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_checkMeasurementsActionPerformed
|
|
|
|
private void buttonDoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDoneActionPerformed
|
|
try {
|
|
((ch.psi.pshell.device.Camera) getDevice("eiger")).stop();
|
|
} catch (Exception ex) {
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_buttonDoneActionPerformed
|
|
|
|
private void buttonAquireActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAquireActionPerformed
|
|
try {
|
|
((ch.psi.pshell.device.Camera) getDevice("eiger")).start();
|
|
} catch (Exception ex) {
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_buttonAquireActionPerformed
|
|
|
|
private void buttonOpenVG10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonOpenVG10ActionPerformed
|
|
try {
|
|
evalAsync("open_vg10()").handle((ret,ex)->{
|
|
if (ex!=null){
|
|
showException((Exception)ex);
|
|
}
|
|
return ret;
|
|
});
|
|
} catch (Exception ex) {
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_buttonOpenVG10ActionPerformed
|
|
|
|
private void buttonCloseVG10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCloseVG10ActionPerformed
|
|
try {
|
|
evalAsync("close_vg10()").handle((ret,ex)->{
|
|
if (ex!=null){
|
|
showException((Exception)ex);
|
|
}
|
|
return ret;
|
|
});
|
|
} catch (Exception ex) {
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_buttonCloseVG10ActionPerformed
|
|
|
|
private void comboScaleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboScaleActionPerformed
|
|
ColormapSource source = (ColormapSource) renderer.getOrigin();
|
|
|
|
try{
|
|
if (!updatingControls){
|
|
Integer value = comboScale.getSelectedIndex();
|
|
if(value == 0){
|
|
source.getConfig().colormapAutomatic = true;
|
|
}
|
|
else if(value == 1){
|
|
source.getConfig().colormapAutomatic = false;
|
|
}
|
|
source.getConfig().save();
|
|
}
|
|
} catch (Exception ex){
|
|
getLogger().log(Level.WARNING, null, ex);
|
|
}
|
|
}//GEN-LAST:event_comboScaleActionPerformed
|
|
|
|
private void spinnerMaxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerMaxStateChanged
|
|
ColormapSource source = (ColormapSource) renderer.getOrigin();
|
|
|
|
try {
|
|
source.getConfig().colormapMax = ((Integer)spinnerMax.getValue());
|
|
source.getConfig().save();
|
|
} catch (Exception ex) {
|
|
getLogger().log(Level.WARNING, null, ex);
|
|
}
|
|
|
|
}//GEN-LAST:event_spinnerMaxStateChanged
|
|
|
|
private void spinnerMinStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerMinStateChanged
|
|
ColormapSource source = (ColormapSource) renderer.getOrigin();
|
|
|
|
try {
|
|
source.getConfig().colormapMin = ((Integer)spinnerMin.getValue());
|
|
source.getConfig().save();
|
|
} catch (Exception ex) {
|
|
getLogger().log(Level.WARNING, null, ex);
|
|
}
|
|
|
|
}//GEN-LAST:event_spinnerMinStateChanged
|
|
|
|
private void spinnerThresholdStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_spinnerThresholdStateChanged
|
|
try{
|
|
if (!updatingControls){
|
|
ch.psi.pshell.device.Camera eiger = (ch.psi.pshell.device.Camera) getDevice("eiger");
|
|
if (eiger.isStarted()){
|
|
buttonDoneActionPerformed(null);
|
|
eiger.waitState(State.Ready, 10000); //Timeout of 10s
|
|
}
|
|
//((ch.psi.pshell.device.Camera) getDevice("eiger")).stop();
|
|
//TimeUnit.SECONDS.sleep(1);
|
|
threshold.write((Double)spinnerThreshold.getValue());
|
|
}
|
|
} catch (Exception ex){
|
|
showException(ex);
|
|
}
|
|
}//GEN-LAST:event_spinnerThresholdStateChanged
|
|
|
|
private void spinnerThresholdPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_spinnerThresholdPropertyChange
|
|
// TODO add your handling code here:
|
|
}//GEN-LAST:event_spinnerThresholdPropertyChange
|
|
|
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
|
private javax.swing.JButton buttonAquire;
|
|
private javax.swing.JButton buttonCloseVG10;
|
|
private javax.swing.JButton buttonDone;
|
|
private javax.swing.JButton buttonOpenVG10;
|
|
private javax.swing.JButton buttonShowDetectorPanel;
|
|
private javax.swing.JCheckBox checkMeasurements;
|
|
private javax.swing.JComboBox<String> comboDepth;
|
|
private javax.swing.JComboBox<String> comboMode;
|
|
private javax.swing.JComboBox<String> comboScale;
|
|
private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel1;
|
|
private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel2;
|
|
private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel3;
|
|
private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel4;
|
|
private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel5;
|
|
private javax.swing.JLabel jLabel1;
|
|
private javax.swing.JLabel jLabel2;
|
|
private javax.swing.JLabel jLabel3;
|
|
private javax.swing.JLabel jLabel4;
|
|
private javax.swing.JLabel jLabel5;
|
|
private javax.swing.JLabel jLabel6;
|
|
private javax.swing.JLabel jLabel7;
|
|
private javax.swing.JLabel jLabel8;
|
|
private ch.psi.pshell.imaging.DeviceRenderer renderer;
|
|
private javax.swing.JSpinner spinnerExposure;
|
|
private javax.swing.JSpinner spinnerMax;
|
|
private javax.swing.JSpinner spinnerMin;
|
|
private javax.swing.JSpinner spinnerThreshold;
|
|
private javax.swing.JTextField textFOV;
|
|
// End of variables declaration//GEN-END:variables
|
|
}
|