All Posts

Comments(0)

The Ajaxian has posted a link to a survey asking how people are using Ajax.

It has three simple questions:

1. I am currently using Ajax frameworks, toolkits, or libraries
2. I’m using Ajax in conjunction with
3. I mostly use the following Ajax frameworks, toolkits, or JavaScript libraries

ThinWire is on the list of frameworks in question 3.  Please take the time to answer this survey and show your support for ThinWire.

All Posts
News

Comments(5)

We just received notification that ThinWire has been chosen as a finalist for an eWEEK Excellence Award in the Application Development category along with Adobe Flex and Komodo IDE. Previous winners in this category include Borland JBuilder, IBM Websphere Studio, and Microsoft Visual Studio .NET 2003.We are obvoiusly very excited about this and look forward to the announcement of the winners on June 11.

All Posts
News

Comments(6)

Richard Baldwin, long time tutorial writer, just had the third tutorial in his five part series on ThinWire published on IBM Developer Works. Here’s an excerpt from his article:

ThinWire is an open source development framework that lets you build Web applications that look and feel like desktop applications. This five-part series explores how to develop rich Web applications using ThinWire and Java™ programming. In this installation, learn how to write a template class that defines one of the most commonly used Web page layouts.

Although he wrote this tutorial prior to RC1, the majority of the content is still accurate so this should server as a great tutorial to help developers get a handle on the component level styling model in ThinWire. Get your free developer works id today and read the full article

All Posts

Comments(0)

Quickly browsing through the forums, blog comments, and email, I can see that the top two topics are the next release and our commercial licensing.

Release Candidate 1

Josh and I have been working around the clock trying to cram in as many features and bug-fixes as we can so that when we release, RC1 will be solid and stable and green lit for 1.2 final. Our intent with the release candidate is that it be feature complete, and it’s release will begin a “curing” process by the community that will expose any bugs that need to be fixed before we can release a final version. We’re targeting the week after Thanksgiving for this release.

Licensing

While working on RC1, we’re also working out the final details of our licensing policy. Our desire is to build a strong community around the ThinWire platform, and we want our licensing policy to be supportive of that goal. We know that ultimately the success of ThinWire lies in the hands of the development community. We are planning on making an official statement on licensing the week after Thanksgiving.

So, all I can say right now is thank you for your patience. We’ll have answers for you soon. In the meantime, keep updating from SVN, requesting features, logging bugs, and helping each other out in the forums.

All Posts

Comments(6)

The introduction of the Style API in beta2 was well received, but everyone wanted more. With the Style API, you can change the font or background color of a GridBox, but not of an individual Row. There have been many discussions on how to increase the granularity of styling in the framework, and some interesting and complex solutions were discussed, but the simplest solution of all eluded us. Until now.

Starting today, all components that have a text property except for Editor components can be styled by passing HTML tags into the text property. Note that this is not a change in our rendering methodology. We are still not sending HTML down to the client. Behind the scenes, the markup is validated and translated into the appropriate styling instructions. We have defined a set of valid tags and attributes, some are directly from HTML and others mirror our own Style API.

Continue Reading »

All Posts

Comments(0)

If you upgraded to IE 7, you probably noticed that ThinWire apps became unusable. Upon loading, the browser collapses to only the toolbars. Any attempt to resize is futile. Apparently the method we were using to determine the frame height in IE 6 is no longer valid in IE 7. In investigating this problem we were able to consolidate some code and find a better method for all browsers. The SVN trunk contains this latest fix.

Mail App in IE7

If you upgraded to Firefox 2.0 yesterday, you noticed that ThinWire apps worked exactly the same as they did in Firefox 1.5.

ThinWire Playground in Firefox 2.0

Here’s to painless browser upgrades!

All Posts

Comments(1)

The announcement of a DropDownDateBox that has the same API as DropDownGridBox combined with the existence of a Component called DropDown brings up the question, “Can any component be in a DropDown?”

Instead of implementing a new Component for the DropDownDateBox, I actually took the opportunity to make DropDown completely generic. Now, any developer can make a DropDown component.

If you look at the code for DropDownDateBox, you can see an example of how to put any component in a DropDown. Basically, you need to implement a DropDown.View for the Component you want in the DropDown.

The View defines:

  • Which Component will collapse the DropDown upon clicking
  • How to represent the “value” of the Component in the TextField
  • How to set the “value” of the Component based on what is in the TextField
  • Any listeners necessary to keep the Component’s value and TextField’s value in sync
  • Logic to calculate the optimal width and height for the Component being dropped down

If I have a chance, I’ll put together a tutorial showing how to create a custom Component (extending Panel) and then place it inside a DropDown. In the meantime, DropDownDateBox is your best reference.

All Posts

Comments(0)

Ok, DateBox is cool, but the most common use of a calendar control in a web application (or any application for that case) is in the context of a DropDown.

Meet the DropDownDateBox.

DropDownDateBox

The API is exactly the same as DropDownGridBox with one nuance. The edit mask is restricted to valid date characters. Setting the edit mask also sets the format of the date that is returned from the DateBox component. (ex: an edit mask of “MM/dd/yy” will return the date shown above as 10/19/06).

All Posts

Comments(0)

One comment I’ve heard a lot is, “ThinWire looks great, but do you have a calendar?” Unfortunately I’ve always had to say no, until now. (Actually last week)

The DateBox is a Component that displays a month-view calendar. You can get and set the selectedDate (as well as listen on PROPERTY_SELECTED_DATE). Users can select dates by clicking on calendar cells, and can scroll months by clicking on arrows in the header. The DateBox also holds a reference to today’s date at the bottom of the Component. Clicking on today’s date sets the selectedDate to today’s date. DateBox is also an ActionEventComponent, which means it can fire click and double-click actions.
DateBox

All Posts

Comments(0)

When we released, one of the components listed was the FileChooser: a Dialog that provided the means for a user to upload a file to the application. The problem is that this component only worked in IE (sorta).

I am pleased to announde a new FileChooser that plays nicely in all browsers, and behaves itself in the framework better than its predecessor. The new FileChooser is essentially a compound component (you know, the kind of component we keep saying that any developer can create). It is a Panel with a TextField and a Button. Of course there is some client JavaScript magic that gets invoked, but the amount of that has been significantly reduced.

FileChooser is no longer a floating Dialog, but the new Component contains a static method that behaves just like the old FileChooser (except that it works in all browsers). Just call FileChooser.show() to get the dialog.

The new FileChooser is a Component that can be added to any Panel. The user clicks the button and is presented with the browser’s file dialog. When the user selects a file, the file name is populated into the TextField. The file itself isn’t uploaded until the getFileInfo() method is called. This method causes the browser to submit the file, and returns a FileInfo object.

File Chooser