Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add widget group option to Parameter annotations and implementations
  • Loading branch information
karlduderstadt committed Jul 28, 2021
commit 1949891258de0c7b6399919c6542572a769b8718
5 changes: 5 additions & 0 deletions src/main/java/org/scijava/command/CommandModuleItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,11 @@ public String getCallback() {
public String getWidgetStyle() {
return getParameter().style();
}

@Override
public String getWidgetGroup() {
return getParameter().group();
}

@Override
public T getMinimumValue() {
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/scijava/module/AbstractModuleItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public String toString() {
sm.append("persistKey", getPersistKey());
sm.append("callback", getCallback());
sm.append("widgetStyle", getWidgetStyle());
sm.append("widgetGroup", getWidgetGroup());
sm.append("default", getDefaultValue());
sm.append("min", getMinimumValue());
sm.append("max", getMaximumValue());
Expand Down Expand Up @@ -231,6 +232,11 @@ public void callback(final Module module) throws MethodCallException {
public String getWidgetStyle() {
return null;
}

@Override
public String getWidgetGroup() {
return null;
}

@Override
public T getDefaultValue() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public class DefaultMutableModuleItem<T> extends AbstractModuleItem<T>
private String validater;
private String callback;
private String widgetStyle;
private String widgetGroup;
private T defaultValue;
private T minimumValue;
private T maximumValue;
Expand Down Expand Up @@ -94,6 +95,7 @@ public DefaultMutableModuleItem(final ModuleInfo info, final String name,
validater = super.getValidater();
callback = super.getCallback();
widgetStyle = super.getWidgetStyle();
widgetGroup = super.getWidgetGroup();
minimumValue = super.getMinimumValue();
maximumValue = super.getMaximumValue();
stepSize = super.getStepSize();
Expand Down Expand Up @@ -122,6 +124,7 @@ public DefaultMutableModuleItem(final ModuleInfo info,
validater = item.getValidater();
callback = item.getCallback();
widgetStyle = item.getWidgetStyle();
widgetGroup = item.getWidgetGroup();
minimumValue = item.getMinimumValue();
maximumValue = item.getMaximumValue();
softMinimum = item.getSoftMinimum();
Expand Down Expand Up @@ -288,6 +291,11 @@ public String getCallback() {
public String getWidgetStyle() {
return widgetStyle;
}

@Override
public String getWidgetGroup() {
return widgetGroup;
}

@Override
public T getDefaultValue() {
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/org/scijava/module/ModuleItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,12 @@ public interface ModuleItem<T> extends BasicDetails {
* interface.
*/
String getWidgetStyle();

/**
* Gets the name of the group the widget belongs to so it can be displayed within
* the group.
*/
String getWidgetGroup();

/** Gets the default value. */
T getDefaultValue();
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/org/scijava/plugin/Parameter.java
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,9 @@
* </p>
*/
String style() default "";

/** Defines the widget group. */
String group() default "";

/** Defines the minimum allowed value (numeric parameters only). */
String min() default "";
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/org/scijava/widget/DefaultWidgetModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,11 @@ public String getWidgetLabel() {
public boolean isStyle(final String style) {
return WidgetStyle.isStyle(getItem(), style);
}

@Override
public boolean isGroup(final String group) {
return getItem().getWidgetGroup().equals(group);
}

@Override
public Object getValue() {
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/org/scijava/widget/WidgetModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ public interface WidgetModel extends Contextual {
* {@code style.equals(getItem().getWidgetStyle())}.
*/
boolean isStyle(String style);

/**
* Gets whether the widget is part of the group.
*/
boolean isGroup(String group);

/**
* Gets the current value of the module input.
Expand Down
11 changes: 6 additions & 5 deletions src/test/java/org/scijava/script/ScriptInfoTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -266,18 +266,18 @@ public void testParameters() {

final ModuleItem<?> log = info.getInput("log");
assertItem("log", LogService.class, null, ItemIO.INPUT, false, true, null,
null, null, null, null, null, null, null, noChoices, log);
null, null, null, null, null, null, null, null, noChoices, log);

final ModuleItem<?> sliderValue = info.getInput("sliderValue");
assertItem("sliderValue", int.class, "Slider Value", ItemIO.INPUT, true,
true, null, " slidEr,", 11, null, null, 5, 15, 3.0, noChoices, sliderValue);
true, null, " slidEr,", null, 11, null, null, 5, 15, 3.0, noChoices, sliderValue);
assertTrue("Case-insensitive trimmed style", WidgetStyle.isStyle(sliderValue, "slider"));

final ModuleItem<?> animal = info.getInput("animal");
final List<String> animalChoices = //
Arrays.asList("quick brown fox", "lazy dog");
assertItem("animal", String.class, null, ItemIO.INPUT, true, false,
null, null, null, null, null, null, null, null, animalChoices, animal);
null, null, null, null, null, null, null, null, null, animalChoices, animal);
assertEquals(animal.get("family"), "Carnivora"); // test custom attribute

final ModuleItem<?> notAutoFilled = info.getInput("notAutoFilled");
Expand All @@ -288,7 +288,7 @@ public void testParameters() {

final ModuleItem<?> buffer = info.getOutput("buffer");
assertItem("buffer", StringBuilder.class, null, ItemIO.BOTH, true, true,
null, null, null, null, null, null, null, null, noChoices, buffer);
null, null, null, null, null, null, null, null, null, noChoices, buffer);

int inputCount = 0;
final ModuleItem<?>[] inputs = { log, sliderValue, animal, notAutoFilled, msg, buffer };
Expand Down Expand Up @@ -367,7 +367,7 @@ private String id(final String path, final String script) {
private void assertItem(final String name, final Class<?> type,
final String label, final ItemIO ioType, final boolean required,
final boolean persist, final String persistKey, final String style,
final Object value, final Object min, final Object max,
final String group, final Object value, final Object min, final Object max,
final Object softMin, final Object softMax, final Number stepSize,
final List<?> choices, final ModuleItem<?> item)
{
Expand All @@ -379,6 +379,7 @@ private void assertItem(final String name, final Class<?> type,
assertEquals(persist, item.isPersisted());
assertEquals(persistKey, item.getPersistKey());
assertEquals(style, item.getWidgetStyle());
assertEquals(group, item.getWidgetGroup());
assertEquals(value, item.getDefaultValue());
assertEquals(min, item.getMinimumValue());
assertEquals(max, item.getMaximumValue());
Expand Down