javaquery/demo-twitter/src/main/java/org/apidesign/bck2brwsr/demo/twitter/TwitterClient.java
branchmodel
changeset 955 dad881565d0a
parent 954 6448c284fe21
child 956 7fc6b7e9c982
     1.1 --- a/javaquery/demo-twitter/src/main/java/org/apidesign/bck2brwsr/demo/twitter/TwitterClient.java	Mon Apr 08 16:51:30 2013 +0200
     1.2 +++ b/javaquery/demo-twitter/src/main/java/org/apidesign/bck2brwsr/demo/twitter/TwitterClient.java	Mon Apr 08 18:26:11 2013 +0200
     1.3 @@ -31,7 +31,7 @@
     1.4  @Page(xhtml="index.html", className="TwitterModel", properties={
     1.5      @Property(name="savedLists", type=TwitterClient.Twttrs.class, array = true),
     1.6      @Property(name="activeTweetersName", type=String.class),
     1.7 -    @Property(name="modifiedList", type=TwitterClient.Twttrs.class),
     1.8 +    @Property(name="activeTweeters", type=TwitterClient.Twttrs.class),
     1.9      @Property(name="userNameToAdd", type=String.class),
    1.10      @Property(name="currentTweets", type=TwitterClient.Twt.class, array = true)
    1.11  })
    1.12 @@ -63,26 +63,27 @@
    1.13          page.getCurrentTweets().addAll(q.getResults());
    1.14      }
    1.15      
    1.16 +    @OnPropertyChange("activeTweetersName")
    1.17 +    static void changeTweetersList(TwitterModel model) {
    1.18 +        Tweeters people = findByName(model.getSavedLists(), model.getActiveTweetersName());        
    1.19 +        model.setActiveTweeters(people.clone());
    1.20 +    }
    1.21 +    
    1.22      @OnPropertyChange("activeTweeters")
    1.23      static void refreshTweets(TwitterModel model) {
    1.24          Tweeters people = model.getActiveTweeters();
    1.25 -        StringBuilder sb = new StringBuilder();
    1.26 -        sb.append("rpp=25&q=");
    1.27 -        String sep = "";
    1.28 -        for (String p : people.getUserNames()) {
    1.29 -            sb.append(sep);
    1.30 -            sb.append("from:");
    1.31 -            sb.append(p);
    1.32 -            sep = " OR ";
    1.33 +        if (people != null) {
    1.34 +            StringBuilder sb = new StringBuilder();
    1.35 +            sb.append("rpp=25&q=");
    1.36 +            String sep = "";
    1.37 +            for (String p : people.getUserNames()) {
    1.38 +                sb.append(sep);
    1.39 +                sb.append("from:");
    1.40 +                sb.append(p);
    1.41 +                sep = " OR ";
    1.42 +            }
    1.43 +            model.queryTweets("http://search.twitter.com", sb.toString());
    1.44          }
    1.45 -        model.queryTweets("http://search.twitter.com", sb.toString());
    1.46 -    }
    1.47 -    
    1.48 -    private static Tweeters tweeters(String listName, String... userNames) {
    1.49 -        Tweeters t = new Tweeters();
    1.50 -        t.setName(listName);
    1.51 -        t.getUserNames().addAll(Arrays.asList(userNames));
    1.52 -        return t;
    1.53      }
    1.54      
    1.55      static {
    1.56 @@ -100,31 +101,21 @@
    1.57      }
    1.58      
    1.59      @ComputedProperty
    1.60 -    static Tweeters activeTweeters(String activeTweetersName, List<Tweeters> savedLists, Tweeters modifiedList) {
    1.61 -        if (modifiedList != null && modifiedList.getName() != null) {
    1.62 -            if (modifiedList.getName().equals(activeTweetersName)) {
    1.63 -                return modifiedList;
    1.64 -            }
    1.65 +    static boolean hasUnsavedChanges(Tweeters activeTweeters, List<Tweeters> savedLists, String activeTweetersName) {
    1.66 +        Tweeters tw = findByName(savedLists, activeTweetersName);
    1.67 +        if (activeTweeters == null) {
    1.68 +            return false;
    1.69          }
    1.70 -        return findByName(savedLists, activeTweetersName);
    1.71 -    }
    1.72 -    
    1.73 -    @OnPropertyChange("activeTweetersName")
    1.74 -    static void clearModifiedList(TwitterModel m) {
    1.75 -        m.setModifiedList(null);
    1.76 +        return !tw.equals(activeTweeters);
    1.77      }
    1.78      
    1.79      @ComputedProperty
    1.80 -    static boolean hasUnsavedChanges(Tweeters modifiedList) {
    1.81 -        return modifiedList != null;
    1.82 -    }
    1.83 -    
    1.84 -    @ComputedProperty
    1.85 -    static boolean userNameToAddIsValid(String userNameToAdd, String activeTweetersName, List<Tweeters> savedLists, Tweeters modifiedList) {
    1.86 -        Tweeters editingList = activeTweeters(activeTweetersName, savedLists, modifiedList);
    1.87 -        return editingList != null && userNameToAdd != null && 
    1.88 +    static boolean userNameToAddIsValid(
    1.89 +        String userNameToAdd, String activeTweetersName, List<Tweeters> savedLists, Tweeters activeTweeters
    1.90 +    ) {
    1.91 +        return activeTweeters != null && userNameToAdd != null && 
    1.92              userNameToAdd.matches("[a-zA-Z0-9_]{1,15}") &&
    1.93 -            !editingList.getUserNames().contains(userNameToAdd);
    1.94 +            !activeTweeters.getUserNames().contains(userNameToAdd);
    1.95      }
    1.96      
    1.97      @OnFunction
    1.98 @@ -143,33 +134,37 @@
    1.99      static void saveChanges(TwitterModel model) {
   1.100          Tweeters t = findByName(model.getSavedLists(), model.getActiveTweetersName());
   1.101          int indx = model.getSavedLists().indexOf(t);
   1.102 -        assert indx != -1;
   1.103 -        model.getSavedLists().set(indx, model.getModifiedList());
   1.104 -        model.setModifiedList(null);
   1.105 +        if (indx != -1) {
   1.106 +            model.getSavedLists().set(indx, model.getActiveTweeters());
   1.107 +        } else {
   1.108 +            model.getSavedLists().add(model.getActiveTweeters());
   1.109 +        }
   1.110      }
   1.111      
   1.112      @OnFunction
   1.113      static void addUser(TwitterModel model) {
   1.114          String n = model.getUserNameToAdd();
   1.115 -        findModifiedList(model).getUserNames().add(n);
   1.116 +        model.getActiveTweeters().getUserNames().add(n);
   1.117      }
   1.118      @OnFunction
   1.119      static void removeUser(String data, TwitterModel model) {
   1.120 -        findModifiedList(model).getUserNames().remove(data);
   1.121 +        model.getActiveTweeters().getUserNames().remove(data);
   1.122      }
   1.123      
   1.124 -    private static Tweeters findModifiedList(TwitterModel model) {
   1.125 -        if (model.getModifiedList() == null || model.getModifiedList().getName() == null) {
   1.126 -            model.setModifiedList(model.getActiveTweeters().clone());
   1.127 -        }
   1.128 -        return model.getModifiedList();
   1.129 -    }
   1.130      private static Tweeters findByName(List<Tweeters> list, String name) {
   1.131          for (Tweeters l : list) {
   1.132              if (l.getName() != null && l.getName().equals(name)) {
   1.133                  return l;
   1.134              }
   1.135          }
   1.136 -        return list.isEmpty() ? null : list.get(0);
   1.137 +        return list.isEmpty() ? new Tweeters() : list.get(0);
   1.138      }
   1.139 +    
   1.140 +    private static Tweeters tweeters(String listName, String... userNames) {
   1.141 +        Tweeters t = new Tweeters();
   1.142 +        t.setName(listName);
   1.143 +        t.getUserNames().addAll(Arrays.asList(userNames));
   1.144 +        return t;
   1.145 +    }
   1.146 +    
   1.147  }