use of java.awt.Checkbox in project JSettlers2 by jdmonin.
the class NewGameOptionsFrame method initInterface_Opt1.
/**
* Add one GridBagLayout row with this game option (component and label(s)).
* The option's descriptive text may have "#" as a placeholder for where
* int/enum value is specified (IntTextField or Choice-dropdown).
* @param op Option data
* @param oc Component with option choices (popup menu, textfield, etc).
* If oc is a {@link TextField} or {@link Choice}, and hasCB,
* changing the component's value will set the checkbox.
* <tt>oc</tt> will be added to {@link #optsControls} and {@link #controlsOpts}.
* @param hasCB Add a checkbox? If oc is {@link Checkbox}, set this true;
* it won't add a second checkbox.
* The checkbox will be added to {@link #boolOptCheckboxes} and {@link #controlsOpts}.
* @param allowPH Allow the "#" placeholder within option desc?
* @param bp Add to this panel
* @param gbl Use this layout
* @param gbc Use these constraints; gridwidth will be set to 1 and then REMAINDER
*/
private void initInterface_Opt1(SOCGameOption op, Component oc, boolean hasCB, boolean allowPH, JPanel bp, GridBagLayout gbl, GridBagConstraints gbc) {
Label L;
// reminder: same gbc widths/weights are used in initInterface_UserPrefs/initInterface_Pref1
gbc.gridwidth = 1;
gbc.weightx = 0;
if (hasCB) {
Checkbox cb;
if (oc instanceof Checkbox)
cb = (Checkbox) oc;
else
cb = new Checkbox();
controlsOpts.put(cb, op);
cb.setState(op.getBoolValue());
cb.setEnabled(!readOnly);
gbl.setConstraints(cb, gbc);
bp.add(cb);
if (!readOnly) {
boolOptCheckboxes.put(op.key, cb);
// for op's ChangeListener and userChanged
cb.addItemListener(this);
}
} else {
// to fill checkbox's column
L = new Label();
gbl.setConstraints(L, gbc);
bp.add(L);
}
final String opDesc = op.getDesc();
final int placeholderIdx = allowPH ? opDesc.indexOf('#') : -1;
// with FlowLayout
Panel optp = new Panel();
try {
FlowLayout fl = (FlowLayout) (optp.getLayout());
fl.setAlignment(FlowLayout.LEFT);
fl.setVgap(0);
fl.setHgap(0);
} catch (Throwable fle) {
}
// Any text to the left of placeholder in op.desc?
if (placeholderIdx > 0) {
L = new Label(opDesc.substring(0, placeholderIdx));
L.setForeground(LABEL_TXT_COLOR);
optp.add(L);
if (hasCB && !readOnly) {
controlsOpts.put(L, op);
// Click label to toggle checkbox
L.addMouseListener(this);
}
}
// TextField or Choice or JComboBox at placeholder position
if (!(oc instanceof Checkbox)) {
controlsOpts.put(oc, op);
oc.setEnabled(!readOnly);
optp.add(oc);
if (hasCB && !readOnly) {
if (oc instanceof TextField) {
// for enable/disable
((TextField) oc).addTextListener(this);
// for ESC/ENTER
((TextField) oc).addKeyListener(this);
} else if (oc instanceof Choice) {
// for related cb, and op.ChangeListener and userChanged
((Choice) oc).addItemListener(this);
} else if (oc instanceof JComboBox) {
// for related cb, and op.ChangeListener and userChanged
((JComboBox) oc).addActionListener(this);
}
}
}
if (!readOnly)
optsControls.put(op.key, oc);
// the text label if there is no placeholder (placeholderIdx == -1).
if (placeholderIdx + 1 < opDesc.length()) {
L = new Label(opDesc.substring(placeholderIdx + 1));
L.setForeground(LABEL_TXT_COLOR);
optp.add(L);
if (hasCB && !readOnly) {
controlsOpts.put(L, op);
// Click label to toggle checkbox
L.addMouseListener(this);
}
}
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.weightx = 1;
gbl.setConstraints(optp, gbc);
bp.add(optp);
}
use of java.awt.Checkbox in project JSettlers2 by jdmonin.
the class NewGameOptionsFrame method textValueChanged.
/**
* When gamename contents change, enable/disable buttons as appropriate. (TextListener)
* Also handles {@link SOCGameOption#OTYPE_INTBOOL} textfield/checkbox combos.
* Also sets {@link SOCGameOption#userChanged}.
* @param e textevent from {@link #gameName}, or from a TextField in {@link #controlsOpts}
*/
public void textValueChanged(TextEvent e) {
if (readOnly)
return;
Object srcObj = e.getSource();
if (!(srcObj instanceof TextField))
return;
final String newText = ((TextField) srcObj).getText().trim();
final boolean notEmpty = (newText.length() > 0);
if (srcObj == gameName) {
if (notEmpty != create.isEnabled())
// enable "create" btn only if game name filled in
create.setEnabled(notEmpty);
} else {
// Check for a ChangeListener for OTYPE_STR and OTYPE_STRHIDE,
// OTYPE_INT and OTYPE_INTBOOL.
// if source is OTYPE_INTBOOL, check its checkbox vs notEmpty.
SOCGameOption opt = controlsOpts.get(srcObj);
if (opt == null)
return;
final String oldText = opt.getStringValue();
boolean validChange = false;
boolean otypeIsInt;
int oldIntValue = 0;
if ((opt.optType == SOCGameOption.OTYPE_STR) || (opt.optType == SOCGameOption.OTYPE_STRHIDE)) {
otypeIsInt = false;
try {
opt.setStringValue(newText);
validChange = true;
} catch (IllegalArgumentException ex) {
}
} else {
otypeIsInt = true;
try // OTYPE_INT, OTYPE_INTBOOL
{
final int iv = Integer.parseInt(newText);
oldIntValue = opt.getIntValue();
// ignored if outside min,max range
opt.setIntValue(iv);
if (iv == opt.getIntValue())
validChange = true;
} catch (NumberFormatException ex) {
}
}
if (validChange && !opt.userChanged)
opt.userChanged = true;
// If this string or int option also has a bool checkbox,
// set or clear that based on string/int not empty.
boolean cbSet = false;
Checkbox cb = boolOptCheckboxes.get(opt.key);
if ((cb != null) && (notEmpty != cb.getState())) {
cb.setState(notEmpty);
opt.setBoolValue(notEmpty);
cbSet = true;
}
SOCGameOption.ChangeListener cl = opt.getChangeListener();
if (cl == null)
return;
// calling fireOptionChangeListener. Boolean is called before int.
if (cbSet) {
// ChangeListener for checkbox
final Boolean newValue = (notEmpty) ? Boolean.TRUE : Boolean.FALSE;
final Boolean oldValue = (notEmpty) ? Boolean.FALSE : Boolean.TRUE;
fireOptionChangeListener(cl, opt, oldValue, newValue);
}
// ChangeListener for text field
if (validChange) {
if (otypeIsInt)
fireOptionChangeListener(cl, opt, new Integer(oldIntValue), new Integer(opt.getIntValue()));
else
fireOptionChangeListener(cl, opt, oldText, newText);
}
}
}
use of java.awt.Checkbox in project GDSC-SMLM by aherbert.
the class TraceMolecules method showDynamicTraceDialog.
private boolean showDynamicTraceDialog() {
pluginTitle = outputName + " Molecules";
final ExtendedGenericDialog gd = new ExtendedGenericDialog(pluginTitle);
gd.addHelp(HelpUrls.getUrl("dynamic-trace-molecules"));
readSettings();
ResultsManager.addInput(gd, pluginSettings.inputOption, InputSource.MEMORY);
// Dynamic Multiple Target Tracing
final TextField tfD = gd.addAndGetNumericField("Diffusion_coefficient", settings.getDiffusionCoefficentMaximum(), 3, 6, "um^2/s");
final TextField tfW = gd.addAndGetNumericField("Temporal_window", settings.getTemporalWindow(), 0, 6, "frames");
final TextField tfLdw = gd.addAndGetNumericField("Local_diffusion_weight", settings.getLocalDiffusionWeight(), 2);
final TextField tfOiw = gd.addAndGetNumericField("On_intensity_weight", settings.getOnIntensityWeight(), 2);
final TextField tfDdf = gd.addAndGetNumericField("Disappearance_decay_factor", settings.getDisappearanceDecayFactor(), 0, 6, "frames");
final TextField tfDt = gd.addAndGetNumericField("Disappearance_threshold", settings.getDisappearanceThreshold(), 0, 6, "frames");
final Checkbox cbDld = gd.addAndGetCheckbox("Disable_local_diffusion_model", settings.getDisableLocalDiffusionModel());
final Checkbox cbDim = gd.addAndGetCheckbox("Disable_intensity_model", settings.getDisableIntensityModel());
// Allow reset to defaults
gd.addAndGetButton("Defaults", e -> {
final DmttConfiguration config = DmttConfiguration.newBuilder(1).build();
tfD.setText(String.valueOf(settings.getDiffusionCoefficentMaximum()));
tfW.setText(String.valueOf(config.getTemporalWindow()));
tfLdw.setText(String.valueOf(config.getLocalDiffusionWeight()));
tfOiw.setText(String.valueOf(config.getOnIntensityWeight()));
tfDdf.setText(String.valueOf(config.getDisappearanceDecayFactor()));
tfDt.setText(String.valueOf(config.getDisappearanceThreshold()));
cbDld.setState(config.isDisableLocalDiffusionModel());
cbDim.setState(config.isDisableIntensityModel());
});
gd.addCheckbox("Save_traces", settings.getSaveTraces());
gd.addCheckbox("Show_histograms", settings.getShowHistograms());
gd.addCheckbox("Save_trace_data", settings.getSaveTraceData());
gd.showDialog();
if (gd.wasCanceled() || !readDynamicTraceDialog(gd)) {
return false;
}
// Load the results
results = ResultsManager.loadInputResults(pluginSettings.inputOption, true, null, null);
if (MemoryPeakResults.isEmpty(results)) {
IJ.error(pluginTitle, "No results could be loaded");
IJ.showStatus("");
return false;
}
// Store exposure time in seconds
exposureTime = results.getCalibrationReader().getExposureTime() / 1000;
return true;
}
use of java.awt.Checkbox in project GDSC-SMLM by aherbert.
the class TraceDiffusion method showTraceDialog.
private boolean showTraceDialog(ArrayList<MemoryPeakResults> allResults) {
final ExtendedGenericDialog gd = new ExtendedGenericDialog(TITLE);
gd.addHelp(HelpUrls.getUrl("trace-diffusion"));
if (!multiMode) {
ResultsManager.addInput(gd, settings.inputOption, InputSource.MEMORY);
}
clusteringSettings = SettingsManager.readClusteringSettings(0).toBuilder();
gd.addChoice("Mode", TRACE_MODE, clusteringSettings.getTraceDiffusionMode(), new OptionListener<Integer>() {
@Override
public boolean collectOptions(Integer value) {
clusteringSettings.setTraceDiffusionMode(value);
return collectOptions(false);
}
@Override
public boolean collectOptions() {
return collectOptions(true);
}
private boolean collectOptions(boolean silent) {
final ExtendedGenericDialog egd = new ExtendedGenericDialog("Trace diffusion options", null);
// Only 2 modes
if (clusteringSettings.getTraceDiffusionMode() == 1) {
// Dynamic Multiple Target Tracing
final TextField tfD = egd.addAndGetNumericField("Diffusion_coefficient", clusteringSettings.getDiffusionCoefficentMaximum(), 3, 6, "um^2/s");
final TextField tfW = egd.addAndGetNumericField("Temporal_window", clusteringSettings.getTemporalWindow(), 0, 6, "frames");
final TextField tfLdw = egd.addAndGetNumericField("Local_diffusion_weight", clusteringSettings.getLocalDiffusionWeight(), 2);
final TextField tfOiw = egd.addAndGetNumericField("On_intensity_weight", clusteringSettings.getOnIntensityWeight(), 2);
final TextField tfDdf = egd.addAndGetNumericField("Disappearance_decay_factor", clusteringSettings.getDisappearanceDecayFactor(), 0, 6, "frames");
final TextField tfDt = egd.addAndGetNumericField("Disappearance_threshold", clusteringSettings.getDisappearanceThreshold(), 0, 6, "frames");
final Checkbox cbDld = egd.addAndGetCheckbox("Disable_local_diffusion_model", clusteringSettings.getDisableLocalDiffusionModel());
final Checkbox cbDim = egd.addAndGetCheckbox("Disable_intensity_model", clusteringSettings.getDisableIntensityModel());
// Allow reset to defaults
egd.addAndGetButton("Defaults", e -> {
final DmttConfiguration config = DmttConfiguration.newBuilder(1).build();
tfD.setText(String.valueOf(clusteringSettings.getDiffusionCoefficentMaximum()));
tfW.setText(String.valueOf(config.getTemporalWindow()));
tfLdw.setText(String.valueOf(config.getLocalDiffusionWeight()));
tfOiw.setText(String.valueOf(config.getOnIntensityWeight()));
tfDdf.setText(String.valueOf(config.getDisappearanceDecayFactor()));
tfDt.setText(String.valueOf(config.getDisappearanceThreshold()));
cbDld.setState(config.isDisableLocalDiffusionModel());
cbDim.setState(config.isDisableIntensityModel());
});
} else {
// Nearest Neighbour
egd.addNumericField("Distance_Threshold (nm)", clusteringSettings.getDistanceThreshold(), 0);
egd.addNumericField("Distance_Exclusion (nm)", clusteringSettings.getDistanceExclusion(), 0);
}
egd.setSilent(silent);
egd.showDialog(true, gd);
if (egd.wasCanceled()) {
return false;
}
if (clusteringSettings.getTraceDiffusionMode() == 1) {
// Dynamic Multiple Target Tracing
clusteringSettings.setDiffusionCoefficentMaximum(egd.getNextNumber());
clusteringSettings.setTemporalWindow((int) egd.getNextNumber());
clusteringSettings.setLocalDiffusionWeight(egd.getNextNumber());
clusteringSettings.setOnIntensityWeight(egd.getNextNumber());
clusteringSettings.setDisappearanceDecayFactor(egd.getNextNumber());
clusteringSettings.setDisappearanceThreshold((int) egd.getNextNumber());
clusteringSettings.setDisableLocalDiffusionModel(egd.getNextBoolean());
clusteringSettings.setDisableIntensityModel(egd.getNextBoolean());
} else {
// Nearest Neighbour
clusteringSettings.setDistanceThreshold(egd.getNextNumber());
clusteringSettings.setDistanceExclusion(Math.abs(egd.getNextNumber()));
}
return true;
}
});
gd.addSlider("Min_trace_length", 2, 20, clusteringSettings.getMinimumTraceLength());
gd.addCheckbox("Ignore_ends", clusteringSettings.getIgnoreEnds());
gd.addCheckbox("Save_traces", clusteringSettings.getSaveTraces());
gd.showDialog();
if (gd.wasCanceled() || !readTraceDialog(gd)) {
return false;
}
// Update the settings
SettingsManager.writeSettings(clusteringSettings.build());
// Load the results
if (!multiMode) {
final MemoryPeakResults results = ResultsManager.loadInputResults(settings.inputOption, true, null, null);
if (MemoryPeakResults.isEmpty(results)) {
IJ.error(TITLE, "No results could be loaded");
IJ.showStatus("");
return false;
}
if (!checkCalibration(results)) {
return false;
}
allResults.add(results);
}
return true;
}
use of java.awt.Checkbox in project GDSC-SMLM by aherbert.
the class Configuration method itemStateChanged.
private void itemStateChanged(ItemEvent event) {
if (event.getSource() instanceof Choice) {
// Update the settings from the template
final Choice choice = (Choice) event.getSource();
final String templateName = choice.getSelectedItem();
// Get the configuration template
final TemplateSettings template = ConfigurationTemplate.getTemplate(templateName);
if (template != null) {
IJ.log("Applying template: " + templateName);
final File file = ConfigurationTemplate.getTemplateFile(templateName);
if (file != null) {
pluginSettings.templateFilename = file.getPath();
}
final StringBuilder sb = new StringBuilder();
for (final String note : template.getNotesList()) {
sb.append(note);
if (!note.endsWith("\n")) {
sb.append("\n");
}
IJ.log(note);
}
pluginSettings.notes = sb.toString();
final boolean custom = ConfigurationTemplate.isCustomTemplate(templateName);
if (template.hasCalibration()) {
refreshSettings(template.getCalibration());
}
if (template.hasPsf()) {
refreshSettings(template.getPsf(), custom);
}
if (template.hasFitEngineSettings()) {
refreshSettings(template.getFitEngineSettings());
}
}
} else if (event.getSource() instanceof Checkbox) {
if (event.getSource() == textSmartFilter) {
textDisableSimpleFilter.setState(textSmartFilter.getState());
}
updateFilterInput();
}
}
Aggregations