package cz.cuni.lf1.lge.ThunderSTORM.rendering.ui; import cz.cuni.lf1.lge.ThunderSTORM.rendering.ASHRendering; 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.IntegerValidatorFactory; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class ASHRenderingUI extends AbstractRenderingUI { public static final String name = "Averaged shifted histograms"; private ParameterKey.Integer shifts; private ParameterKey.Integer zShifts; private void initPars() { shifts = parameters.createIntField("shifts", IntegerValidatorFactory.positiveNonZero(), 2); zShifts = parameters.createIntField("zshifts", IntegerValidatorFactory.positiveNonZero(), 2, threeDCondition); } public ASHRenderingUI() { super(); initPars(); } public ASHRenderingUI(int sizeX, int sizeY) { super(sizeX, sizeY); initPars(); } @Override public String getName() { return name; } @Override public JPanel getOptionsPanel() { JPanel panel = super.getOptionsPanel(); JTextField shiftsTextField = new JTextField("", 20); parameters.registerComponent(shifts, shiftsTextField); panel.add(new JLabel("Lateral shifts:"), GridBagHelper.leftCol()); panel.add(shiftsTextField, GridBagHelper.rightCol()); final JTextField zShiftsTextField = new JTextField("", 20); parameters.registerComponent(zShifts, zShiftsTextField); final JLabel zShiftsLabel = new JLabel("Axial shifts:"); panel.add(zShiftsLabel, GridBagHelper.leftCol()); panel.add(zShiftsTextField, GridBagHelper.rightCol()); final JCheckBox threeDCheckBox = (JCheckBox) parameters.getRegisteredComponent(threeD); threeDCheckBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { zShiftsLabel.setEnabled(threeDCheckBox.isSelected()); zShiftsTextField.setEnabled(threeDCheckBox.isSelected()); } }); parameters.loadPrefs(); return panel; } @Override public IncrementalRenderingMethod getMethod() { if(parameters.getBoolean(threeD)) { Range r = Range.parseFromStepTo(zRange.getValue()); return new ASHRendering.Builder() .roi(left, left+sizeX, top, top+sizeY) .resolution(1 / magnification.getValue()) .shifts(shifts.getValue()) .zRange(r.from, r.to, r.step) .colorize(colorize.getValue()) .colorizationLUT(lutPicker.getLut(colorizationLut.getValue())) .zShifts(zShifts.getValue()).build(); } else { return new ASHRendering.Builder() .roi(left, left+sizeX, top, top+sizeY) .resolution(1 / magnification.getValue()) .shifts(shifts.getValue()).build(); } } }