diff -r dad881565d0a -r 7fc6b7e9c982 javaquery/demo-twitter/src/main/java/org/apidesign/bck2brwsr/demo/twitter/TwitterClient.java
--- a/javaquery/demo-twitter/src/main/java/org/apidesign/bck2brwsr/demo/twitter/TwitterClient.java Mon Apr 08 18:26:11 2013 +0200
+++ b/javaquery/demo-twitter/src/main/java/org/apidesign/bck2brwsr/demo/twitter/TwitterClient.java Mon Apr 08 19:30:22 2013 +0200
@@ -31,7 +31,7 @@
@Page(xhtml="index.html", className="TwitterModel", properties={
@Property(name="savedLists", type=TwitterClient.Twttrs.class, array = true),
@Property(name="activeTweetersName", type=String.class),
- @Property(name="activeTweeters", type=TwitterClient.Twttrs.class),
+ @Property(name="activeTweeters", type=String.class, array = true),
@Property(name="userNameToAdd", type=String.class),
@Property(name="currentTweets", type=TwitterClient.Twt.class, array = true)
})
@@ -50,6 +50,28 @@
@Property(name = "created_at", type = String.class),
})
static final class Twt {
+ @ComputedProperty static String html(String text) {
+ StringBuilder sb = new StringBuilder(320);
+ for (int pos = 0;;) {
+ int http = text.indexOf("http", pos);
+ if (http == -1) {
+ sb.append(text.substring(pos));
+ return sb.toString();
+ }
+ int spc = text.indexOf(' ', http);
+ if (spc == -1) {
+ spc = text.length();
+ }
+ sb.append(text.substring(pos, http));
+ String url = text.substring(http, spc);
+ sb.append("").append(url).append("");
+ pos = spc;
+ }
+ }
+
+ @ComputedProperty static String userUrl(String from_user) {
+ return "http://twitter.com/" + from_user;
+ }
}
@Model(className = "TwitterQuery", properties = {
@Property(array = true, name = "results", type = Twt.class)
@@ -66,34 +88,32 @@
@OnPropertyChange("activeTweetersName")
static void changeTweetersList(TwitterModel model) {
Tweeters people = findByName(model.getSavedLists(), model.getActiveTweetersName());
- model.setActiveTweeters(people.clone());
+ model.getActiveTweeters().clear();
+ model.getActiveTweeters().addAll(people.getUserNames());
}
- @OnPropertyChange("activeTweeters")
+ @OnPropertyChange({ "activeTweeters", "activeTweetersCount" })
static void refreshTweets(TwitterModel model) {
- Tweeters people = model.getActiveTweeters();
- if (people != null) {
- StringBuilder sb = new StringBuilder();
- sb.append("rpp=25&q=");
- String sep = "";
- for (String p : people.getUserNames()) {
- sb.append(sep);
- sb.append("from:");
- sb.append(p);
- sep = " OR ";
- }
- model.queryTweets("http://search.twitter.com", sb.toString());
+ StringBuilder sb = new StringBuilder();
+ sb.append("rpp=25&q=");
+ String sep = "";
+ for (String p : model.getActiveTweeters()) {
+ sb.append(sep);
+ sb.append("from:");
+ sb.append(p);
+ sep = " OR ";
}
+ model.queryTweets("http://search.twitter.com", sb.toString());
}
static {
final TwitterModel model = new TwitterModel();
final List svdLst = model.getSavedLists();
- svdLst.add(tweeters("API Design", "JaroslavTulach"));
- svdLst.add(tweeters("Celebrities", "JohnCleese", "MCHammer", "StephenFry", "algore", "StevenSanderson"));
- svdLst.add(tweeters("Microsoft people", "BillGates", "shanselman", "ScottGu"));
- svdLst.add(tweeters("NetBeans", "GeertjanW","monacotoni", "NetBeans"));
- svdLst.add(tweeters("Tech pundits", "Scobleizer", "LeoLaporte", "techcrunch", "BoingBoing", "timoreilly", "codinghorror"));
+ svdLst.add(newTweeters("API Design", "JaroslavTulach"));
+ svdLst.add(newTweeters("Celebrities", "JohnCleese", "MCHammer", "StephenFry", "algore", "StevenSanderson"));
+ svdLst.add(newTweeters("Microsoft people", "BillGates", "shanselman", "ScottGu"));
+ svdLst.add(newTweeters("NetBeans", "GeertjanW","monacotoni", "NetBeans", "petrjiricka"));
+ svdLst.add(newTweeters("Tech pundits", "Scobleizer", "LeoLaporte", "techcrunch", "BoingBoing", "timoreilly", "codinghorror"));
model.setActiveTweetersName("NetBeans");
@@ -101,27 +121,32 @@
}
@ComputedProperty
- static boolean hasUnsavedChanges(Tweeters activeTweeters, List savedLists, String activeTweetersName) {
+ static boolean hasUnsavedChanges(List activeTweeters, List savedLists, String activeTweetersName) {
Tweeters tw = findByName(savedLists, activeTweetersName);
if (activeTweeters == null) {
return false;
}
- return !tw.equals(activeTweeters);
+ return !tw.getUserNames().equals(activeTweeters);
+ }
+
+ @ComputedProperty
+ static int activeTweetersCount(List activeTweeters) {
+ return activeTweeters.size();
}
@ComputedProperty
static boolean userNameToAddIsValid(
- String userNameToAdd, String activeTweetersName, List savedLists, Tweeters activeTweeters
+ String userNameToAdd, String activeTweetersName, List savedLists, List activeTweeters
) {
- return activeTweeters != null && userNameToAdd != null &&
+ return userNameToAdd != null &&
userNameToAdd.matches("[a-zA-Z0-9_]{1,15}") &&
- !activeTweeters.getUserNames().contains(userNameToAdd);
+ !activeTweeters.contains(userNameToAdd);
}
@OnFunction
static void deleteList(TwitterModel model) {
final List sl = model.getSavedLists();
- sl.remove(model.getActiveTweeters());
+ sl.remove(findByName(sl, model.getActiveTweetersName()));
if (sl.isEmpty()) {
final Tweeters t = new Tweeters();
t.setName("New");
@@ -135,20 +160,20 @@
Tweeters t = findByName(model.getSavedLists(), model.getActiveTweetersName());
int indx = model.getSavedLists().indexOf(t);
if (indx != -1) {
- model.getSavedLists().set(indx, model.getActiveTweeters());
- } else {
- model.getSavedLists().add(model.getActiveTweeters());
+ t.setName(model.getActiveTweetersName());
+ t.getUserNames().clear();
+ t.getUserNames().addAll(model.getActiveTweeters());
}
}
@OnFunction
static void addUser(TwitterModel model) {
String n = model.getUserNameToAdd();
- model.getActiveTweeters().getUserNames().add(n);
+ model.getActiveTweeters().add(n);
}
@OnFunction
static void removeUser(String data, TwitterModel model) {
- model.getActiveTweeters().getUserNames().remove(data);
+ model.getActiveTweeters().remove(data);
}
private static Tweeters findByName(List list, String name) {
@@ -160,11 +185,10 @@
return list.isEmpty() ? new Tweeters() : list.get(0);
}
- private static Tweeters tweeters(String listName, String... userNames) {
+ private static Tweeters newTweeters(String listName, String... userNames) {
Tweeters t = new Tweeters();
t.setName(listName);
t.getUserNames().addAll(Arrays.asList(userNames));
return t;
}
-
}