home mail me! syndication

overthinkings

of Ruben Daniels

Javeline Platform 101

State management

In traditional web development all logic runs on the server which handles all state. The server shows the page you clicked on, displays the right item in the menu. Context based content will be displayed in certain area’s. Certain buttons will be available others are not. After compiling the entire state of the webapp in a single HTML page it’s send to the browser where it’s displayed.

With Ajax we use a single page interface. There is no refresh. Thus all the above described state management has to be handled within the browser. Javeline Platform offers clean js API’s and an event system. We could use them to set the states of the components in the GUI. I actually did that for a couple of project. After a while I felt it became tedious to switch to JavaScript for this logic. We came up with a system that can do most of this processing automatically by just specifying what you want the state to be. Here is the first example:

<j:Frame caption="Example 1">
   <j:Radiobutton id="rbPage" value="0">
      Page 1
   </j:Radiobutton>
   <j:Radiobutton id="rbPage" value="1" checked="true">
      Page 2
   </j:Radiobutton>
   <j:Radiobutton id="rbPage" value="2">
      Page 3
   </j:Radiobutton>

   <j:Tab id="tbExample" activepage="[rbPage.value]">
      <j:Page caption="Page 0" />
      <j:Page caption="Page 1" />
      <j:Page caption="Page 2" />
   </j:Tab>

   <j:Button id="btnBlah"
      tooltip="[rbPage.value]"
      onclick="alert(this.tooltip)"
      caption="{'Value=' + rbPage.value}" />

   <j:Textbox value="[rbPage.value]" />
</j:Frame>

Please note that I combined this example with the two below.

You can click around the tab and radiobuttons and change the number in the Textbox. Notice that the state of the components are interconnected. Lets take a look at the code. The radiobuttons look normal. We see each has a value ranging from 0 to 2. The middle one is checked. The first dynamic state is set on the activepage attribute for tbExample. It uses a state binding syntax: [rbPage.value]. The brackets tell Platform to create a two-way bind on that property; whenever the value of rbPage changes the activepage property of tbExample will change and vice verse. In the same way the tooltip property of the button is bound.

The other state syntax is used on the caption property of the button. The curly braces tell Platform to create a one-way bind. The curly braces allow javascript code. In this case the caption of the button is set by combining a string ‘Value=’ and the value of rbPage. More advanced javascript such as function calls is possible as well.

In both cases Platform will take care of setting all the necesary events and makes sure the states of the components are always in sync.

I believe in all projects I’ve done, it’s the visibility property that is used most often in state management. Especially in webapps that look like web sites. See the example below:

<j:Frame caption="Example 2 (Hint: Set Tab to 0)">
   <j:Radiobutton id="rbShow" value="true">
      true
   </j:Radiobutton>
   <j:Radiobutton id="rbShow"
      value="false"
      checked="true">
      false
   </j:Radiobutton>

   <j:Label id="lblShow"
      visible="[rbShow.value]"
      height="20">
      Radio is true
   </j:Label>

   <j:Label id="lblAdv"
      visible="{rbShow.value=='true' and rbPage.value==0}"
      width="200">
      Tab 0 is active and radio is true
   </j:Label>
</j:Frame>


Please be especially aware of this rule: {rbShow.value==’true’ and rbPage.value==0}. This is not entirely JavaScript. JavaScript uses && and || in conditional statements. The problem with && in XML is that you have to encode it so the line would become: {rbShow.value==’true’ &amp;&amp; rbPage.value==0}. To prevent this use ‘and’ and ‘or’ in these conditional statements.

In certain cases you want to set the state of multiple components at the same time. This ’state of the application’ can be defined using a j:State component. By specifying a group you can toggle between two or more states:

<j:Frame caption="Example 3">
   <j:State id="myState1"
      value="false"
      group="group1"
      xvalue="true"
      btnTest.caption="First State" />
   <j:State id="myState2"
      value="false"
      group="group1"
      xvalue="false"
      btnTest.caption="Second State" />

   <a href="javascript:group1.toggle()">Toggle States</a>

   <j:Checkbox id="cbTest"
      value="{group1.xvalue}"
      values="true|false"
      height="20" width="200">
      Choose a state using the 2 links
   </j:Checkbox>

   <j:Button id="btnTest" caption="Start State"/>
</j:Frame>


Pages: 1 2 3 4 5 6 7 8 9 10 11

8 Comments »

  Kai Tischler wrote @ October 4th, 2007 at 12:12 am

Hello Ruben !

I have already sent two emails to the Javeline team via the “info@javeline.nl” email
address, but unfortunately I got no response :-(

So I am contacting You directly here via this blog entry; because I have fallen in love with Your layout engine almost immediately :-) ! I am currently doing some research with regard to layout in the native contemporary browsers, and Your approach seems to be really unique ! I have played around with it a little bit and am so impressed right now that I want to leverage Your layout engine ! I know that I can use the packager to extract only parts out of all the Javeline SDK stuff; but I couldn’t make it extract the layout parts … in fact I couldn’t get it to work at all …

I am also very much excited about Javeline in its whole glory, but this particular blog comment shall address the issue of leveraging Your layout engine separately. Is there a technical way to do it ? And what about licensing then ? Or do You know of other layout engines for browsers which are as capable as Yours seems to be ?

I am looking forward to the comments to come !

Cheers

Kai

  Ruben wrote @ October 4th, 2007 at 9:45 am

Hi Kai,

I just found your e-mail. It got lost in the spam box somehow. You will get a reply from me on that. It is possible to extract the layout engine using the packager. For what purpose would you like to use it? Please register to the internals mailinglist at http://developer.javeline.net/mailinglists.php and sent your answers there so the community can follow them as well.

Kind Regards,

Ruben

  overthinkings » Contextmagic and Repeat wrote @ October 22nd, 2007 at 2:49 pm

[…] this was the first time you read about Javeline PlatForm, this article is a good place to start learning more about this Web Application […]

  Mehmet KURT wrote @ January 2nd, 2008 at 4:27 pm

Please ! Help Me…

Using for Framework Javeline… Help Me??

  bharath wrote @ February 9th, 2008 at 3:25 pm

hi , my name is bharath
i have a doubt in ajax connectivity

how to connect an ajax application to database using jdbc…
can u plz clarify my doubt.. with sample example with coding.
thanx & regards.

  Ruben wrote @ February 14th, 2008 at 8:32 am

Hi Bharath,

Ajax applications connect to a backend. Most popular nowadays is to use REST to connect to a backend. This backend can be written in PHP, Perl, ASP, JSP or any other language. It’s the responsibility of that language to connect to a database using jdbc.

In Javeline PlatForm you would do something like this:

<j:teleport>
   <j:rpc id="comm" protocol="POST">
      <j:method name="getUsers" url="http://example.com/users.php">
         <j:variable name="group_id" />
      </j:method>
   </j:rpc>
</j:teleport>

<j:model id="myUsers" load="rpc:comm.getUsers(10)" />

<j:list model="myUsers">
   <j:bindings>
     <j:caption select="@username" />
     <j:icon select="@icon" />
     <j:traverse select="user" />
   </j:bindings>
</j:list>

or if you want to use the javascript approach with Javeline PlatForm you’d do:


var http = new jpf.http();
var data = http.getXml(”http://example.com/users.php?group_id=10″, function(data, state, extra){
   if(state == __HTTP_SUCCESS__){
      alert(”My XML: ” + data.xml);
   }else{
      alert(”An error has occurred”);
   }
});

Please note that these code examples are for v0.9.8 of Javeline PlatForm which will be released shortly.

Kind Regards,

Ruben

[…] early version of Javeline PlatForm and up untill that moment I had only positioned elements using anchoring. I did remember a nice feature that Visual Basic had, where I could align an element to one of the […]

[…] supports Anchoring, Alignment and position using a grid (similar to a table in […]

Your comment

HTML-Tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

cheap propecia pill buying cialis discount cialis buy cialis internet buy generic cialis online cheap accutane no prescription cialis us online propecia cheapest cialis price accutane for sale buy viagra overnight delivery no rx levitra order levitra on internet levitra without rx buy cialis no prescription required cialis no prescription cheapest levitra cialis bangkok buy propecia overnight delivery accutane malaysia buy accutane on internet viagra in malaysia discount propecia no rx discount accutane without prescription discount viagra overnight delivery find discount cialis online cheapest viagra accutane sales propecia malaysia buy no rx cialis free levitra propecia pills low cost viagra online pharmacy viagra find cheap cialis levitra australia levitra in australia overnight levitra viagra free delivery buy cheapest cialis on line cialis buy order cialis without prescription viagra buy accutane sale overnight propecia order levitra without prescription lowest price accutane cheapest cialis levitra uk levitra free delivery no prescription accutane cheap viagra from usa accutane online pharmacy order discount cialis online viagra tablets cost propecia levitra price cheap accutane from canada accutane from canada find accutane online accutane pills lowest price cialis find accutane no prescription required order viagra on internet cheap propecia from canada lowest price for accutane viagra without a prescription cheap cialis from uk buy levitra in canada find viagra overnight accutane cheap levitra from canada cost of propecia cheap cialis internet find propecia online buy levitra generic levitra tablet cialis cheap price accutane vendors cost accutane discount levitra levitra no rx required buy discount cialis online sale cialis cialis cost propecia without rx accutane without a prescription accutane online online pharmacy cialis propecia bangkok levitra no online prescription cheap levitra no prescription buy propecia without prescription order cialis on internet buy cialis in canada buy viagra online accutane pharmacy online compare accutane prices online find propecia on internet propecia pill generic cialis cialis generic buy discount levitra free accutane buy viagra generic cheap cialis pill propecia drug cialis without a prescription purchase cialis without prescription cheap levitra online overnight cialis pharmacy cialis buy accutane from india find cialis online viagra in us order accutane from us viagra discount levitra online cialis cheap drug buy levitra on line discount viagra find no rx propecia accutane order levitra prescription accutane uk cheap accutane on internet compare levitra prices generic viagra online cialis pills cheap cialis in canada no rx propecia approved levitra pharmacy compare cialis prices order cheap accutane online propecia uk buy cheapest accutane on line order levitra no prescription required order propecia from canada buy viagra on internet order discount levitra propecia canada where to order levitra viagra no rx required drug viagra buy levitra from india buy accutane lowest price levitra in malaysia cheapest levitra online viagra cheap drug cheap levitra from usa levitra in uk cheap levitra on internet no prescription propecia order discount levitra online purchase cialis overnight delivery cheap price propecia cialis free delivery cheapest generic viagra cheap cialis no rx find discount levitra online buy no rx levitra find discount propecia generic levitra buy levitra on internet propecia cheap drug cheap levitra no rx accutane medication compare levitra prices online buy propecia buy accutane us order viagra no prescription required find no rx accutane find propecia propecia no rx viagra overnight buy cheap propecia online cialis from canada buy levitra online purchase propecia overnight delivery buy propecia online cheap accutane pill cheap viagra accutane without rx buy viagra without prescription order propecia without prescription buying accutane cheapest propecia price cialis cheapest price levitra overnight shipping viagra online pharmacy pharmacy levitra find discount levitra propecia online pharmacy cheapest generic accutane purchase accutane without prescription cialis no rx propecia side effects cialis buy online discount cialis online accutane in bangkok buy cheap cialis online order generic viagra order propecia from us accutane india buy propecia us tablet propecia find cheap accutane order accutane on internet cheap propecia find discount viagra levitra in us order levitra order discount viagra buying viagra online buy propecia from canada accutane buy drug viagra canada no rx cialis cheap propecia from usa order levitra online buy viagra us certified propecia accutane cheapest price approved accutane pharmacy cheap viagra without prescription buy cheap levitra internet find accutane buy viagra from india buy cheapest levitra on line propecia from canada low cost propecia cheap cialis in uk buy cialis no rx order accutane in us propecia cheapest price cheapest levitra price cheap viagra in canada buying generic viagra buy viagra no rx propecia rx buy cialis from us propecia buy online discount accutane viagra no prescription buy propecia in us buy levitra buy accutane generic purchase viagra without prescription order cheap cialis viagra pills cheap accutane pharmacy buy cialis from canada propecia in malaysia propecia overnight shipping accutane overnight buying cialis online cheap propecia from uk cialis purchase viagra sales cheap accutane in canada buy accutane online cialis no rx required accutane approved propecia us cialis pill propecia india accutane in malaysia cheap price viagra propecia prescription buy accutane on line propecia sales levitra generic accutane for order cheap viagra online order levitra overnight delivery find cheap propecia online buying levitra cialis sales buy generic accutane buy viagra online cheap order cialis no prescription required buying generic cialis viagra drug buy viagra lowest price viagra price approved propecia pharmacy cheap cialis pharmacy cheap viagra no rx find no rx cialis order cheap propecia cheap levitra in usa cialis without prescription buy cheapest propecia on line where to order viagra accutane cost order propecia cheap online accutane drug cheapest cialis online buy generic cialis cialis for order cialis prescription find cheap propecia compare cialis prices online propecia cost cheap cialis tablet purchase levitra discount propecia overnight delivery cialis india viagra australia accutane cheap drug discount viagra online cheap viagra tablet accutane australia propecia in bangkok buy cheap levitra cialis price buy generic levitra online buy cheapest cialis online levitra cost order levitra from canada viagra pharmacy online viagra without prescription viagra in uk find viagra no prescription required buy generic accutane online propecia pharmacy viagra online buy discount levitra online cialis online pharmacy viagra generic buy cialis lowest price cost of cialis find cialis levitra online drug propecia cialis tablet buy cialis low price propecia vendors cheapest generic cialis cheap propecia in usa discount propecia buy generic viagra online buying generic levitra online accutane buy levitra from canada order propecia overnight delivery best price propecia order accutane no rx cialis side effects order viagra without prescription cheap propecia on internet propecia free delivery tablet viagra levitra pills find cheap viagra buy accutane from us viagra medication buying propecia cialis from india buy cheap cialis buy accutane buy cheap levitra online find no rx levitra buy cheapest viagra on line low cost accutane propecia in us order accutane overnight delivery buy levitra lowest price approved cialis pharmacy purchase cialis online discount cialis overnight delivery buy levitra no rx order no rx levitra online pharmacy accutane discount viagra without prescription accutane no rx required cheap accutane without prescription cialis information cialis overnight fda approved cialis propecia without prescription order levitra in canada buy discount propecia fda approved viagra cheap price cialis lowest price for levitra cialis in bangkok purchase cialis discount levitra no rx cheapest generic levitra lowest price for propecia propecia buy drug cheap cialis no prescription cheap viagra from uk no rx accutane buy levitra us certified levitra cialis order generic propecia find cialis no prescription required buy viagra in us buy cialis us certified cialis levitra overnight delivery levitra without prescription buy cialis on internet fda approved levitra cost viagra viagra pill buy discount viagra online cheap levitra tablet best price for propecia buy discount viagra compare viagra prices online generic levitra cheap accutane side effects cialis order find propecia without prescription levitra accutane overnight shipping find cheap accutane online buy generic levitra levitra vendors buy viagra from us buy cheap viagra online order viagra no prescription buy cialis on line propecia online without prescription cheapest generic levitra online levitra from india cost of levitra cheap propecia overnight delivery viagra overnight shipping cheap accutane internet purchase propecia no rx find levitra viagra cost levitra no rx find cheap levitra online accutane price cheap accutane tablet best price cialis order generic levitra best price viagra levitra canada viagra cheapest price drug cialis viagra approved sale viagra cheap accutane no rx cheapest viagra price cheapest accutane generic cialis online cialis no online prescription find cheap viagra online cheap levitra internet buy no rx accutane