package cz.cuni.lf1.lge.ThunderSTORM.rendering.ui; import cz.cuni.lf1.lge.ThunderSTORM.CameraSetupPlugIn; import cz.cuni.lf1.lge.ThunderSTORM.rendering.DensityRendering; import cz.cuni.lf1.lge.ThunderSTORM.rendering.IncrementalRenderingMethod; import cz.cuni.lf1.lge.ThunderSTORM.util.GridBagHelper; import cz.cuni.lf1.lge.ThunderSTORM.util.Range; import cz.cuni.lf1.lge.ThunderSTORM.util.MacroUI.ParameterKey; import cz.cuni.lf1.lge.ThunderSTORM.util.MacroUI.validators.DoubleValidatorFactory; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class DensityRenderingUI extends AbstractRenderingUI { public static final String name = "Normalized Gaussian"; //param names private ParameterKey.Double dx; private ParameterKey.Double dz; private ParameterKey.Boolean forceDx; private ParameterKey.Boolean forceDz; public DensityRenderingUI() { super(); initPars(); } public DensityRenderingUI(int sizeX, int sizeY) { super(sizeX, sizeY); initPars(); } private void initPars() { dx = parameters.createDoubleField("dx", DoubleValidatorFactory.positiveNonZero(), 20); dz = parameters.createDoubleField("dz", DoubleValidatorFactory.positiveNonZero(), 100, threeDCondition); forceDx = parameters.createBooleanField("dxforce", null, false); forceDz = parameters.createBooleanField("dzforce", null, false); } @Override public JPanel getOptionsPanel() { JPanel panel = super.getOptionsPanel(); //dx JCheckBox forceDXCheckBox = new JCheckBox("Force", false); forceDXCheckBox.setBorder(BorderFactory.createEmptyBorder()); parameters.registerComponent(forceDx, forceDXCheckBox); JPanel latUncertaintyPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); panel.add(new JLabel("Lateral uncertainty [nm]:"), GridBagHelper.leftCol()); JTextField dxTextField = new JTextField("", 10); parameters.registerComponent(dx, dxTextField); latUncertaintyPanel.add(dxTextField); latUncertaintyPanel.add(Box.createHorizontalStrut(5)); latUncertaintyPanel.add(forceDXCheckBox); panel.add(latUncertaintyPanel, GridBagHelper.rightCol()); //dz final JCheckBox forceDZCheckBox = new JCheckBox("Force", false); forceDZCheckBox.setBorder(BorderFactory.createEmptyBorder()); parameters.registerComponent(forceDz, forceDZCheckBox); JPanel axUncertaintyPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); final JLabel dzLabel = new JLabel("Axial uncertainty [nm]:"); panel.add(dzLabel, GridBagHelper.leftCol()); final JTextField dzTextField = new JTextField("", 10); parameters.registerComponent(dz, dzTextField); axUncertaintyPanel.add(dzTextField); axUncertaintyPanel.add(Box.createHorizontalStrut(5)); axUncertaintyPanel.add(forceDZCheckBox); panel.add(axUncertaintyPanel, GridBagHelper.rightCol()); //3D final JCheckBox threeDCheckBox = (JCheckBox) parameters.getRegisteredComponent(threeD); threeDCheckBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dzLabel.setEnabled(threeDCheckBox.isSelected()); forceDZCheckBox.setEnabled(threeDCheckBox.isSelected()); dzTextField.setEnabled(threeDCheckBox.isSelected()); } }); parameters.loadPrefs(); return panel; } @Override public String getName() { return name; } @Override public IncrementalRenderingMethod getMethod() { if(threeD.getValue()) { Range r = Range.parseFromStepTo(zRange.getValue()); return new DensityRendering.Builder() .roi(left, left+sizeX, top, top+sizeY) .resolution(1 / magnification.getValue()) .defaultDX(dx.getValue() / CameraSetupPlugIn.getPixelSize()) .forceDefaultDX(forceDx.getValue()) .zRange(r.from, r.to, r.step) .colorize(colorize.getValue()) .colorizationLUT(lutPicker.getLut(colorizationLut.getValue())) .defaultDZ(dz.getValue()) .forceDefaultDZ(forceDz.getValue()) .build(); } else { return new DensityRendering.Builder() .roi(left, left+sizeX, top, top+sizeY) .resolution(1 / magnification.getValue()) .defaultDX(dx.getValue() / CameraSetupPlugIn.getPixelSize()) .forceDefaultDX(forceDx.getValue()).build(); } } }