Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public class Macro extends ModelObject {
* The currently set value of the macro. If this is null the default is used.
* Ideally an Optional should be here but GSON doesn't understand optionals :(
*/
private String value;
private String value = "";
/**
* The description of the macro.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ public void test_GIVEN_macro_with_value_of_empty_string_WHEN_view_model_created_

@Test
public void test_GIVEN_macro_with_value_WHEN_view_model_created_THEN_use_default_is_false() {
Macro m = new Macro("name", "A_VALUE", "description", "pattern", null, HasDefault.YES, true);
Macro m = new Macro("name", "A_VALUE", "description", "pattern", null, HasDefault.YES, false);
MacroViewModel macroViewModel = new MacroViewModel(m);

boolean useDefault = macroViewModel.getUseDefault();
Expand All @@ -112,7 +112,7 @@ public void test_GIVEN_macro_with_value_WHEN_view_model_created_THEN_use_default
@Test
public void test_GIVEN_macro_with_value_WHEN_view_model_created_THEN_display_value_is_value() {
String expectedMacroValue = "A_VALUE";
Macro m = new Macro("name", expectedMacroValue, "description", "pattern", null, HasDefault.YES, true);
Macro m = new Macro("name", expectedMacroValue, "description", "pattern", null, HasDefault.YES, false);
MacroViewModel macroViewModel = new MacroViewModel(m);

String macroValue = macroViewModel.getDisplayValue();
Expand Down Expand Up @@ -146,7 +146,7 @@ public void test_GIVEN_macro_with_value_of_null_WHEN_use_default_set_false_THEN_
Macro m = new Macro("name", null, "description", "pattern", null, HasDefault.YES, true);
MacroViewModel macroViewModel = new MacroViewModel(m);

macroViewModel.setUseDefault(false);
macroViewModel.setUseDefault(true);

assertEquals("", m.getValue());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ private Collection<Macro> makeDisplayMacroList(Collection<Macro> setMacros, Coll
displayMacros.add(displayMacro);

displayMacro.addPropertyChangeListener("value", addSetMacroListener(displayMacro, setMacros));
displayMacro.addPropertyChangeListener("useDefault", onUseDefaultChangeListener(displayMacro, setMacros));
}

return displayMacros;
Expand All @@ -164,4 +165,29 @@ public void propertyChange(PropertyChangeEvent newValue) {
}
};
}
}

// If the Use Default flag is set or reset add or remove the selected macro from the set of existing Macros.
private PropertyChangeListener onUseDefaultChangeListener(final Macro displayMacro,
final Collection<Macro> setMacros) {
return new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent newValue) {
boolean useDefault = displayMacro.getUseDefault();
if (useDefault) {
setMacros.removeIf(m -> m.getName().equals(displayMacro.getName()));
return;
}

String macroValue = displayMacro.getValue() != null ? displayMacro.getValue() : "";
Optional<Macro> existingMacro = setMacros.stream()
.filter(m -> m.getName().equals(displayMacro.getName())).findFirst();
if (existingMacro.isPresent()) {
existingMacro.get().setValue(macroValue);
existingMacro.get().setUseDefault(false);
} else {
setMacros.add(new Macro(displayMacro));
}
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class MacroViewModel extends ModelObject {
public MacroViewModel(Macro macro) {
this.macro = macro;
macro.addPropertyChangeListener("value", passThrough());
setUseDefault((macro.getValue() == null) || (macro.getValue().equals("")));
macro.addPropertyChangeListener("useDefault", passThrough());
}

/**
Expand Down Expand Up @@ -100,7 +100,7 @@ public String getDisplayDefault() {
*/
public String getDisplayValue() {
String macroDisplayVal = "(default)";
if (macro.getValue() != "") {
if (!macro.getUseDefault()) {
macroDisplayVal = macro.getValue();
}
return macroDisplayVal;
Expand Down
Loading