source: domaineditor/src/main/java/geniusweb/domaineditor/model/DiscreteValueSetModel.java@ 52

Last change on this file since 52 was 52, checked in by ruud, 14 months ago

Fixed small issues in domaineditor.

File size: 2.3 KB
Line 
1package geniusweb.domaineditor.model;
2
3import java.util.Arrays;
4import java.util.Collection;
5import java.util.LinkedList;
6import java.util.List;
7import java.util.logging.Level;
8
9import geniusweb.issuevalue.DiscreteValue;
10import geniusweb.issuevalue.DiscreteValueSet;
11import geniusweb.issuevalue.ValueSet;
12import tudelft.utilities.logging.Reporter;
13import tudelft.utilities.mvc.model.BasicModel;
14import tudelft.utilities.mvc.model.DefaultListModel;
15import tudelft.utilities.mvc.model.ListModel;
16import tudelft.utilities.mvc.model.StringModel;
17
18/**
19 * Model for a {@link DiscreteValueSet}. This is basically a
20 * ListModel<StringModel>. However the list can never be empty, there must be
21 * always at least 1 value.
22 */
23public class DiscreteValueSetModel extends DefaultListModel<StringModel>
24 implements ValueSetModel {
25
26 public DiscreteValueSetModel(List<StringModel> values, Reporter log) {
27 super(values, log);
28 }
29
30 public DiscreteValueSetModel(Reporter log) {
31 super(Arrays.asList(new StringModel("value", log)), log);
32 }
33
34 @Override
35 public void remove(StringModel value) {
36 if (getSize() == 1) {
37 log.log(Level.WARNING,
38 "remove not allowed, as value set always must contain at least 1 value");
39 return;
40 }
41 super.remove(value);
42 }
43
44 /**
45 *
46 * @return the {@link DiscreteValueSet} as set up by this model
47 */
48 @Override
49 public DiscreteValueSet getCurrentValue() {
50 Collection<DiscreteValue> dvals = new LinkedList<>();
51 for (int n = 0; n < getSize(); n++) {
52 dvals.add(new DiscreteValue(get(n).getValue()));
53 }
54 return new DiscreteValueSet(dvals);
55 }
56
57 @Override
58 public BasicModel first() {
59 return get(0);
60 }
61
62 @Override
63 public ListModel<StringModel> getList() {
64 return this;
65 }
66
67 @Override
68 public void setCurrentValue(ValueSet obj) throws IllegalArgumentException {
69 if (!(obj instanceof DiscreteValueSet))
70 throw new IllegalArgumentException(
71 "Argument must be a DiscreteValueSet but got " + obj);
72 DiscreteValueSet valset = (DiscreteValueSet) obj;
73 List<StringModel> oldvals = new LinkedList<>();
74 for (int n = 0; n < getSize(); n++) {
75 oldvals.add(get(n));
76 }
77
78 // first add the new vals because minimum size.
79 for (DiscreteValue val : valset.getValues()) {
80 add(new StringModel(val.getValue(), log));
81 }
82 for (StringModel old : oldvals) {
83 remove(old);
84 }
85 }
86
87}
Note: See TracBrowser for help on using the repository browser.