Some of you may remember the advertisements for the Evelyn Wood Reading Dynamics course back in the 1970s. Here's a flashback in which Steve Allen (an excellent former host of the Tonight Show), is interviewing students of this course. Gotta love those '70s hairstyles :-)
This course promised to increase reading speed and comprehension, partially (as I recall) by using the technique of scanning a page while limiting eye movement.
The ability to digest new information quickly is at least as important now as it was 20+ cranks of Moore's Law ago. RSS and Atom feeds have provided mechanisms to publish information as it becomes available, and social networking tools such as Twitter have HTTP-based APIs. Because it is time consuming to visit various sources of new information, I've begun developing a tool named SpeedReaderFX to present information obtained via RSS, Atom, and social networking APIs in one place.
Here's a screen shot of SpeedReaderFX as it is displaying new items of interest:
In the screen shot above, there are tweets from interesting people (Josh Marinacci and Dean Iverson), a picture taken by some fortunate soul viewing a beautiful Australian sunrise, a video containing stunning new pictures from the Hubble telescope, and an article about an expensive bottle of wine. These are displayed in the very impressive Table component that Stephen Chin and Keith Combs are creating for the open source JFXtras project. A future post will explain how to use the JFXtras Table component, using this SpeedReaderFX program as the example.
The popup menu shown above enables the user to hide a given feed (l8r, Dean!), or open the URL associated with an item in a browser (in this case, Dean's Twitter post). Note that because JavaFX does not yet have a popup menu, I leveraged the menu bar/menu capabilities of the JFXtras project to make this slightly odd-looking popup menu. If a popup menu isn't available in the next version of JavaFX, one will be created in the JFXtras project.
To inform SpeedReaderFX about your items of interest, choose the Channels>Configure menu option. The Criteria dialog will appear (a portion shown below), enabling you to specify user names, tags, and blog feeds for various feed sources and social networks.
The prompts in the shorter text boxes indicate the type of information that may be typed into the box. For example, you'll separate the search tags in a Flickr text box with commas. The program has some text boxes filled in with examples, but you can overwrite them. A not-too-distant future version of this program will automatically save your criteria when exiting, and will load it again upon start-up. The SpeedReaderFX category of this blog will contain posts that point out some JavaFX code behind new functionality, as well as catching you up on some of the code used so far in this program. For example, I'll cite the JavaFX library that Rakesh Menon created to read the YouTube Data API, which I'm using in this program.
Selecting a check box causes the associated information source to be read and displayed in the table shown previously, with its items interspersed with items from other sources in reverse chronological order. Deselecting a check box removes the associated items from the table, which is the same result as the Hide this feed popup menu item discussed earlier.
When you're finished with the Criteria dialog, click the Close button in the upper right corner, or select the Channels>Configure menu option again. By the way, the View menu has a couple of options that help you manage the application's window, given that you'll be opening up content in a browser. One menu item is the self-explanatory Always on Top, and the other one enables you to Hide the Date Published Column.
Now that you know how to use SpeedReaderFX, please give it a whirl by clicking the Web Start Launch button below. As always, please leave a comment if you have any questions or comments.
Regards,
Jim Weaver




Jim,
Thank you very much for your prompt and early response.
Now after taking your code and implementing, I ended up in a wierd situation. Below is the problem description. Could you pls help me out ?
I included the code in the Main.fx on mouse right click event and also included the popup in the stage and I was able to see the popup menu.
Now, I created a separate class exclusively for popup menu included the code in a method(createPopup). When I invoke this method from a different method, I couldn't see the popup.
I tried returning the popup menu from the createPopup() method to the method that invokes it also finally to the Main class but in vain.
could you please help how to achieve the popup when invoked from a different method ?
Thanks a billion ton in advance.
Posted by: priyank | September 23, 2009 at 01:13 AM
"can u please help me out or can share a piece of code for this functionality?"
priyank,
The SpeedReaderFX program is a sample in the JFXtras open source project (http://jfxtras.org). The SVN checkout command is:
svn checkout http://jfxtras.googlecode.com/svn/jfxtras.samples/trunk/ jfxtras-read-only
Posted by: Jim Weaver | September 22, 2009 at 08:54 AM
When i right-click on the SpeedReaderFX , i get one popup menu having hide this feed... etc. I also want to include this menu in my project if i click on the rectangles. Can u please help me how to make this popup menu?? I used jfxtras's NativePopupMenu class, but when i right click one applet also gets open. i need only the menu on right click. can u please help me out or can share a piece of code for this fuctionality?
Posted by: priyank | September 22, 2009 at 08:12 AM
I Like the application.
One small critisize : To have a better look (more cool à la iphone look, if I can say) I believe it is good to put rounded corners to images. Small thing to do I suppose but really adds something to look and feel.
By the way I also like the new image on top of the blog.
PS: Of course "look & feel" perception by the user is, after development productivity ... the second best thing javaFx has over Swing. Let's us not forget it.
Thanks for the nice blog.
Posted by: Thierry | September 14, 2009 at 03:45 AM
"I would like to download the source code to learn how you've implemented the table component. Would you please send me a download link?"
Charles,
The NetBeans project containing the SpeedReaderFX source code is located in the jfxpert.samples SVN repository:
svn checkout http://jfxtras.googlecode.com/svn/jfxtras.samples/trunk/ jfxtras-read-only
This will download all of the JFXtras samples, and the SpeedReaderFX sample is in a folder with that name.
The Table component itself is in the jfxtras.core repository: svn checkout http://jfxtras.googlecode.com/svn/jfxtras.core/trunk/ jfxtras-read-only
More info on the JFXtras project may be found at jfxtras.org
Enjoy!
Jim Weaver
Posted by: Jim Weaver | September 13, 2009 at 11:49 PM
Hi James,
Thanks for your demo app. I would like to download the source code to learn how you've implemented the table component. Would you please send me a download link?
Posted by: Charles Tam | September 13, 2009 at 08:07 PM
Looks nice. Doesn't handle images from this Identi.ca atom feed.
https://identi.ca/api/statuses/friends_timeline/pla1.atom
Thanks, PLA
Posted by: Patrick L Archibald | September 10, 2009 at 07:46 PM
I really like the responsive interface. Also, it loads the RSS content on my PC very fast!
I can't though wait for the day when you we can click a button on the rss feed that says "Show Details", and viola up pops that JWebPane right there in the app. ;) (hint, hint, Sun)
Posted by: Vance | September 10, 2009 at 06:38 PM
Re: l8r Dean!
It's nice to see I'm still your favorite punching bag. :-)
I'm always willing to take one for the team.
Posted by: Dean Iverson | September 10, 2009 at 05:01 PM
"... The main reason why I haven't released any updates for the JFXtras menubar is because it's now being built into the next major FX release itself. This has the benefit of using other API available to make the menus 'pop out' of the window, meaning that they are no longer visible only within the window frame."
Sweet! Thanks Jonathan!
Jim Weaver
Posted by: Jim Weaver | September 10, 2009 at 04:57 PM
Jim,
It's good to see my menubar being used, even if it's being used in a few odd ways as well :-)
I think http://javafx-jira.kenai.com/browse/RT-5513 is a good indication of menu/menubar/popup menu support moving toward the Soma release. Note that it is attached to my name, so feel free to get in touch either in the bug report or privately if you have any comments. The main reason why I haven't released any updates for the JFXtras menubar is because it's now being built into the next major FX release itself. This has the benefit of using other API available to make the menus 'pop out' of the window, meaning that they are no longer visible only within the window frame.
Cheers,
Jonathan Giles
Posted by: Jonathan Giles | September 10, 2009 at 04:48 PM