# HG changeset patch # User Jaroslav Tulach # Date 1371727090 -7200 # Node ID 7ff8ac49cd8ca7b1ccbb97d8b2bca1f796f8d87d # Parent 65cadba2cf022ec4af3916f6637df666a859c47f Rewriting to be Grizzly independent and also ajusting to Twitter's removal of 1.0 APIs diff -r 65cadba2cf02 -r 7ff8ac49cd8c twitter/nbactions.xml --- a/twitter/nbactions.xml Mon May 20 12:45:50 2013 +0200 +++ b/twitter/nbactions.xml Thu Jun 20 13:18:10 2013 +0200 @@ -23,23 +23,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---> - - - run - - process-classes - bck2brwsr:brwsr - - - - debug - - process-classes - bck2brwsr:brwsr - - - maven - - +--> + + debug + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + -Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath org.apidesign.html.demo.twitter.TwitterMain + java + true + + + + run + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.2.1:exec + + + -classpath %classpath org.apidesign.html.demo.twitter.TwitterMain + java + + diff -r 65cadba2cf02 -r 7ff8ac49cd8c twitter/pom.xml --- a/twitter/pom.xml Mon May 20 12:45:50 2013 +0200 +++ b/twitter/pom.xml Thu Jun 20 13:18:10 2013 +0200 @@ -20,8 +20,8 @@ UTF-8 - 0.1 - 0.7 + 0.4-SNAPSHOT + 0.8-SNAPSHOT MINIMAL org/apidesign/html/demo/twitter/index.html @@ -121,6 +121,12 @@ ${net.java.html.version} jar + + org.apidesign.html + boot-fx + 0.4-SNAPSHOT + runtime + @@ -140,7 +146,7 @@ - org.apidesign.bck2brwsr.launcher.FXBrwsrLauncher + org.apidesign.html.demo.twitter.TwitterMain true lib/ diff -r 65cadba2cf02 -r 7ff8ac49cd8c twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterClient.java --- a/twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterClient.java Mon May 20 12:45:50 2013 +0200 +++ b/twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterClient.java Thu Jun 20 13:18:10 2013 +0200 @@ -26,7 +26,6 @@ import java.util.Arrays; import java.util.List; import net.java.html.json.ComputedProperty; -import net.java.html.json.Context; import net.java.html.json.Function; import net.java.html.json.Model; import net.java.html.json.OnPropertyChange; @@ -52,14 +51,28 @@ }) static class Twttrs { } + @Model(className = "User", properties = { + @Property(name = "name", type = String.class), + @Property(name = "profile_image_url", type = String.class), + @Property(name = "id", type = int.class) + }) + static class Usr { + } @Model(className = "Tweet", properties = { - @Property(name = "from_user", type = String.class), - @Property(name = "from_user_id", type = int.class), + @Property(name = "user", type = User.class), @Property(name = "profile_image_url", type = String.class), @Property(name = "text", type = String.class), @Property(name = "created_at", type = String.class), }) static final class Twt { + @ComputedProperty static String from_user(User user) { + return user != null ? user.getName() : null; + } + + @ComputedProperty static String imageUrl(User user) { + return user != null ? user.getProfile_image_url() : null; + } + @ComputedProperty static String html(String text) { StringBuilder sb = new StringBuilder(320); for (int pos = 0;;) { @@ -79,20 +92,20 @@ } } - @ComputedProperty static String userUrl(String from_user) { - return "http://twitter.com/" + from_user; + @ComputedProperty static String userUrl(User user) { + return "http://twitter.com/" + user.getName(); } } @Model(className = "TwitterQuery", properties = { - @Property(array = true, name = "results", type = Twt.class) + @Property(array = true, name = "statuses", type = Twt.class) }) public static final class TwttrQr { } - @OnReceive(url="{root}/search.json?{query}&callback={me}", jsonp="me") + @OnReceive(url="{url}?{query}&callback={me}", jsonp="me") static void queryTweets(TwitterModel page, TwitterQuery q) { page.getCurrentTweets().clear(); - page.getCurrentTweets().addAll(q.getResults()); + page.getCurrentTweets().addAll(q.getStatuses()); page.setLoading(false); } @@ -106,26 +119,37 @@ @OnPropertyChange({ "activeTweeters", "activeTweetersCount" }) static void refreshTweets(TwitterModel model) { StringBuilder sb = new StringBuilder(); - sb.append("rpp=25&q="); + sb.append("users="); String sep = ""; for (String p : model.getActiveTweeters()) { sb.append(sep); - sb.append("from:"); sb.append(p); - sep = " OR "; + sep = "%7C"; + } + if (sep.isEmpty()) { + return; } model.setLoading(true); - model.queryTweets("http://search.twitter.com", sb.toString()); + model.queryTweets("http://services.netbeans.org/synergy/server/api/twitter.php", sb.toString()); } - private static final Context DEFAULT = Context.findDefault(TwitterClient.class); static { - final TwitterModel model = new TwitterModel(DEFAULT); + try { + init(); + } catch (Throwable ex) { + ex.printStackTrace(); + } + } + private static void init() { + System.setProperty("http.proxyHost", "www-proxy.uk.oracle.com"); + System.setProperty("http.proxyPort", "80"); + + final TwitterModel model = new TwitterModel(); final List svdLst = model.getSavedLists(); 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("NetBeans", "GeertjanW","monacotoni", "NetBeans", "petrjiricka", "ladariha")); svdLst.add(newTweeters("Tech pundits", "Scobleizer", "LeoLaporte", "techcrunch", "BoingBoing", "timoreilly", "codinghorror")); model.setActiveTweetersName("NetBeans"); @@ -161,7 +185,7 @@ final List sl = model.getSavedLists(); sl.remove(findByName(sl, model.getActiveTweetersName())); if (sl.isEmpty()) { - final Tweeters t = new Tweeters(DEFAULT); + final Tweeters t = new Tweeters(); t.setName("New"); sl.add(t); } @@ -195,11 +219,11 @@ return l; } } - return list.isEmpty() ? new Tweeters(DEFAULT) : list.get(0); + return list.isEmpty() ? new Tweeters() : list.get(0); } private static Tweeters newTweeters(String listName, String... userNames) { - Tweeters t = new Tweeters(DEFAULT); + Tweeters t = new Tweeters(); t.setName(listName); t.getUserNames().addAll(Arrays.asList(userNames)); return t; diff -r 65cadba2cf02 -r 7ff8ac49cd8c twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterMain.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/twitter/src/main/java/org/apidesign/html/demo/twitter/TwitterMain.java Thu Jun 20 13:18:10 2013 +0200 @@ -0,0 +1,19 @@ +package org.apidesign.html.demo.twitter; + +import net.java.html.boot.BrowserBuilder; + +/** + * + * @author Jaroslav Tulach + */ +public class TwitterMain { + private TwitterMain() { + } + + public static void main(String... args) { + BrowserBuilder.newBrowser(). + loadClass(TwitterClient.class). + loadPage("index.html"). + showAndWait(); + } +} diff -r 65cadba2cf02 -r 7ff8ac49cd8c twitter/src/main/resources/org/apidesign/html/demo/twitter/index.html --- a/twitter/src/main/resources/org/apidesign/html/demo/twitter/index.html Mon May 20 12:45:50 2013 +0200 +++ b/twitter/src/main/resources/org/apidesign/html/demo/twitter/index.html Thu Jun 20 13:18:10 2013 +0200 @@ -83,7 +83,7 @@
Loading...
- +
@@ -93,13 +93,5 @@
- - - - -