javaquery/demo-twitter/src/main/java/org/apidesign/bck2brwsr/demo/twitter/TwitterClient.java
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 }