Pārlūkot izejas kodu

Updating default behavior of DDPropertyChooser

Sam Jaffe 8 gadi atpakaļ
vecāks
revīzija
c9c6983ac9

+ 4 - 0
src/main/lombok/org/leumasjaffe/charsheet/model/DDCharacterClass.java

@@ -164,4 +164,8 @@ public class DDCharacterClass extends Observable.Instance implements Comparable<
 	public void addFeature(DDProperty ddProperty) {
 		this.features.add(ddProperty);
 	}
+
+	public void removeFeature(DDProperty ddProperty) {
+		this.features.remove(this.features.lastIndexOf(ddProperty));
+	}
 }

+ 7 - 2
src/main/lombok/org/leumasjaffe/charsheet/model/features/DDPropertyChooser.java

@@ -19,8 +19,13 @@ public interface DDPropertyChooser {
 	String getHeader();
 	default List<String> getChoices() { return Collections.emptyList(); }
 	public DDProperty get(int selectedIndex);
-	default boolean applySideEffects(DDCharacterClass to, int selectedIndex) { return false; }
-	default void undoSideEffects(DDCharacterClass to, int selectedIndex) {}
+	default boolean applySideEffects(DDCharacterClass to, int selectedIndex) {
+		to.addFeature(get(selectedIndex));
+		return true;
+	}
+	default void undoSideEffects(DDCharacterClass to, int selectedIndex) {
+		to.removeFeature(get(selectedIndex));
+	}
 	
 	@RequiredArgsConstructor
 	@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)