[83] | 1 | package genius.gui.tree;
|
---|
| 2 |
|
---|
[95] | 3 | import genius.core.listener.Listener;
|
---|
[84] | 4 | import genius.core.utility.UncertainAdditiveUtilitySpace;
|
---|
| 5 | import genius.core.utility.UtilitySpace;
|
---|
[83] | 6 | import genius.gui.panels.BooleanModel;
|
---|
[227] | 7 | import genius.gui.panels.DoubleModel;
|
---|
[91] | 8 | import genius.gui.panels.IntegerModel;
|
---|
[83] | 9 |
|
---|
| 10 | /**
|
---|
[139] | 11 | * Holds the uncertainty settings (while editing a profile). This MVC model
|
---|
| 12 | * contains listenable fields and coordinates changes
|
---|
[83] | 13 | */
|
---|
| 14 | public class UncertaintySettingsModel {
|
---|
[130] | 15 | private final BooleanModel isEnabled;
|
---|
| 16 | private final IntegerModel comparisons;
|
---|
| 17 | private final IntegerModel errors;
|
---|
[227] | 18 | private final DoubleModel elicitationCost;
|
---|
[155] | 19 | private final BooleanModel isFixedSeed;
|
---|
[130] | 20 | private final BooleanModel isExperimental;
|
---|
| 21 | private final long totalBids;
|
---|
[83] | 22 |
|
---|
| 23 | /**
|
---|
[95] | 24 | * @oaran space the {@link UtilitySpace} we're working with. This panel is
|
---|
| 25 | * enabled by default iff the space is an
|
---|
| 26 | * {@link UncertainAdditiveUtilitySpace}. If the space is
|
---|
| 27 | * {@link UncertainAdditiveUtilitySpace} we also copy the default
|
---|
| 28 | * values from there. Otherwise all default values are set to 0.
|
---|
[83] | 29 | */
|
---|
[95] | 30 | public UncertaintySettingsModel(UtilitySpace space) {
|
---|
[130] | 31 | final UncertainAdditiveUtilitySpace uspace = space instanceof UncertainAdditiveUtilitySpace
|
---|
| 32 | ? (UncertainAdditiveUtilitySpace) space
|
---|
| 33 | : null;
|
---|
| 34 |
|
---|
| 35 | isEnabled = new BooleanModel(uspace != null);
|
---|
| 36 |
|
---|
[84] | 37 | totalBids = space.getDomain().getNumberOfPossibleBids();
|
---|
[130] | 38 |
|
---|
[155] | 39 | isFixedSeed = new BooleanModel(
|
---|
| 40 | (uspace != null) ? uspace.isFixedSeed() : true);
|
---|
| 41 |
|
---|
[130] | 42 | isExperimental = new BooleanModel(
|
---|
| 43 | uspace != null ? uspace.isExperimental() : false);
|
---|
| 44 |
|
---|
[91] | 45 | comparisons = new IntegerModel(
|
---|
[232] | 46 | uspace != null ? uspace.getComparisons() : 2, 2, (int) totalBids, 1);
|
---|
[130] | 47 |
|
---|
[91] | 48 | errors = new IntegerModel(uspace != null ? uspace.getErrors() : 0, 0,
|
---|
[88] | 49 | (int) totalBids, 1);
|
---|
[227] | 50 |
|
---|
| 51 | elicitationCost = new DoubleModel(uspace != null ? uspace.getElicitationCost() : 0);
|
---|
[95] | 52 |
|
---|
| 53 | // copy enabledness -> lockedness of other components
|
---|
| 54 | isEnabled.addListener(new Listener<Boolean>() {
|
---|
| 55 | @Override
|
---|
| 56 | public void notifyChange(Boolean enabled) {
|
---|
| 57 | updateEnabledness(!enabled);
|
---|
| 58 | }
|
---|
| 59 | });
|
---|
| 60 | updateEnabledness(!isEnabled.getValue());
|
---|
[83] | 61 | }
|
---|
| 62 |
|
---|
[91] | 63 | public IntegerModel getComparisons() {
|
---|
[83] | 64 | return comparisons;
|
---|
| 65 | }
|
---|
| 66 |
|
---|
[91] | 67 | public IntegerModel getErrors() {
|
---|
[83] | 68 | return errors;
|
---|
| 69 | }
|
---|
[227] | 70 |
|
---|
| 71 | public DoubleModel getElicitationCost() {
|
---|
| 72 | return elicitationCost;
|
---|
| 73 | }
|
---|
[83] | 74 |
|
---|
| 75 | public BooleanModel getIsExperimental() {
|
---|
| 76 | return isExperimental;
|
---|
| 77 | }
|
---|
| 78 |
|
---|
| 79 | public BooleanModel getIsEnabled() {
|
---|
| 80 | return isEnabled;
|
---|
[155] | 81 | }
|
---|
| 82 |
|
---|
| 83 | public BooleanModel getIsFixedSeed() {
|
---|
| 84 | return isFixedSeed;
|
---|
[83] | 85 | }
|
---|
| 86 |
|
---|
| 87 | public long getTotalBids() {
|
---|
| 88 | return totalBids;
|
---|
| 89 | }
|
---|
| 90 |
|
---|
[95] | 91 | private void updateEnabledness(boolean lock) {
|
---|
| 92 | comparisons.setLock(lock);
|
---|
| 93 | errors.setLock(lock);
|
---|
[227] | 94 | elicitationCost.setLock(lock);
|
---|
[155] | 95 | isFixedSeed.setLock(lock);
|
---|
[95] | 96 | isExperimental.setLock(lock);
|
---|
| 97 | }
|
---|
| 98 |
|
---|
[83] | 99 | }
|
---|