javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java
branchmodel
changeset 950 445d5f1d4177
parent 930 e8916518b38d
child 955 dad881565d0a
     1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java	Thu Apr 04 13:08:26 2013 +0200
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java	Mon Apr 08 12:36:12 2013 +0200
     1.3 @@ -30,6 +30,7 @@
     1.4      private final String name;
     1.5      private final String[] deps;
     1.6      private Knockout model;
     1.7 +    private Runnable onchange;
     1.8  
     1.9      public KOList(String name, String... deps) {
    1.10          this.name = name;
    1.11 @@ -39,6 +40,14 @@
    1.12      public void assign(Knockout model) {
    1.13          this.model = model;
    1.14      }
    1.15 +    
    1.16 +    public KOList<T> onChange(Runnable r) {
    1.17 +        if (this.onchange != null) {
    1.18 +            throw new IllegalStateException();
    1.19 +        }
    1.20 +        this.onchange = r;
    1.21 +        return this;
    1.22 +    }
    1.23  
    1.24      @Override
    1.25      public boolean add(T e) {
    1.26 @@ -133,12 +142,15 @@
    1.27  
    1.28      private void notifyChange() {
    1.29          Knockout m = model;
    1.30 -        if (m == null) {
    1.31 -            return;
    1.32 +        if (m != null) {
    1.33 +            m.valueHasMutated(name);
    1.34 +            for (String dependant : deps) {
    1.35 +                m.valueHasMutated(dependant);
    1.36 +            }
    1.37          }
    1.38 -        m.valueHasMutated(name);
    1.39 -        for (String dependant : deps) {
    1.40 -            m.valueHasMutated(dependant);
    1.41 +        Runnable r = onchange;
    1.42 +        if (r != null) {
    1.43 +            r.run();
    1.44          }
    1.45      }
    1.46