<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3837712541181314500</id><updated>2012-02-16T20:39:43.216Z</updated><title type='text'>Web 2 tips, tricks and development cheat sheet</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3837712541181314500.post-7187371728219613350</id><published>2010-03-15T23:53:00.000Z</published><updated>2010-03-15T23:53:53.911Z</updated><title type='text'>Endless loop in smartGWT listgrid retrieving data from REST back end</title><content type='html'>So you have written your DataSource, instantiated your ListGrid and tested the calls to your back end REST (e.g. Rails controller) in your browser. You know that the back end is delivering the data in correct JSON, but yet your smartGWT is looping endlessly, loading the data.&lt;br /&gt;&lt;br /&gt;The console shows no errors but loads of RPC calls.&lt;br /&gt;&lt;br /&gt;Check your record XPath in your DataSource.The value given for the call to &lt;i&gt;setRecordXPath&lt;/i&gt; must match precisely the JSON data path. If you get this wrong, smartGWT fails silently, looping forever attempting to get the records and it knows from the meta data should be there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3837712541181314500-7187371728219613350?l=web2blog.kieser.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/7187371728219613350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://web2blog.kieser.net/2010/03/endless-loop-in-smartgwt-listgrid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/7187371728219613350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/7187371728219613350'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/2010/03/endless-loop-in-smartgwt-listgrid.html' title='Endless loop in smartGWT listgrid retrieving data from REST back end'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3837712541181314500.post-1428239838956433453</id><published>2010-02-28T22:06:00.002Z</published><updated>2010-02-28T22:55:16.984Z</updated><title type='text'>Displaying lookups from other tables in ListGrid</title><content type='html'>Here's a problem in smartGWT: You have a ListGrid that displays data from a table table. One or more columns are integer IDs that refer to other tables. Those tables have meaningful text in them (e.g. code-description tables or perhaps account or client names).&lt;br /&gt;&lt;br /&gt;Let's assume that you are displaying client data. Rather than displaying the internal row ID for the client, you want to display the client name using the foreign key ID on your ListGrid data to look up the name in the client table.&lt;br /&gt;&lt;br /&gt;This is easy in smartGWT. You need to use a facility called "OptionDataSource". The smartGWT documentation says that you need to set OptionDataSource on the column in question.&lt;br /&gt;&lt;br /&gt;Now the smartGWT documentation leads you up the gardent path a bit with using this facility. Put bluntly, their method doesn't work when you have a ListGrid that is based entirely on a datasource. This is because you cannot use ListGrid.getField(...) to get the column in order to set OptionDataSource because, until it's displayed, the ListGrid is empty. So you continually get an error trying to set attributes on a null!&lt;br /&gt;&lt;br /&gt;To work around this problem. smartGWT has ListGrid..setUseAllDataSourceFields. If you set &lt;i&gt;true&lt;/i&gt; for this, this means that you can now create one or more ListGridField types, call setOptionDataSource on these new objects as well as setValueField and setDisplayField and then, crucially, at the end of all this, you call ListGrid.setFields to add these to the ListGrid.&lt;br /&gt;&lt;br /&gt;Here's the part that is very unclear in the smartGWT documentation: You need to use setName to name your new objects to the &lt;i&gt;same name&lt;/i&gt; as the columns in the ListGrid's datasource that you want to set the OptionDataSource values for. What happens is that smartGWT will then use your new objects to overwrite the objects in the datasource, i.e. you are replacing those columns with your own versions of those columns.&lt;br /&gt;&lt;br /&gt;The part that is really not clear in any documentation or forum entries is that this is how you are establishing the mapping between the column in the ListGrid datasource that has the ID (in our example, the client ID) that you wish to display the meaningful text for from the alternative table (OptionsDataSource). In our example this is the client's name.&lt;br /&gt;&lt;br /&gt;Specifically:&lt;br /&gt;&amp;nbsp;&amp;nbsp; ListGridField.&lt;b&gt;setName&lt;/b&gt;: Set to the ListGrid datasource column that you wish to implement the lookup on.&lt;br /&gt;&amp;nbsp;&amp;nbsp; ListGridField.&lt;b&gt;setOptionDataSource&lt;/b&gt;: Set the alternative datasource that contains the lookup data (must have the code and the displayed value)&lt;br /&gt;&amp;nbsp; ListGridField.&lt;b&gt;setValueField&lt;/b&gt;: Set the column in the alternative datasource that has the code values that match those in the ListGrid column that you specified in setName above (in our example, this is the client id column of the lookup table). After you have set this as well as setName above, smartGWT now has both column names that are used to lookup the data.&lt;br /&gt;&amp;nbsp; ListGridField.&lt;b&gt;setDisplayField&lt;/b&gt;: This tells smartGWT what column to use to display instead of the ID (in our example, this is the client name column of the lookup table).&lt;br /&gt;&lt;br /&gt;Here is some sample code that implements a lookup of &lt;i&gt;Group Name&lt;/i&gt; based on a group_id in the ListGrid datasource. The ListGrid object is &lt;i&gt;recipientGrid&lt;/i&gt; and the lookup datasource is GroupHeaderDS.&lt;br /&gt;&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ListGridField groupID=new ListGridField();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; groupID.setOptionDataSource(GroupHeaderDS.getInstance());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; groupID.setValueField("group_id");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; groupID.setDisplayField("group_name");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; groupID.setName("group_id");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; groupID.setTitle("Group Name");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; groupID.setAutoFetchDisplayMap(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; recipientGrid.setFields(groupID);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; recipientGrid.setAutoFetchDisplayMap(true);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3837712541181314500-1428239838956433453?l=web2blog.kieser.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/1428239838956433453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://web2blog.kieser.net/2010/02/displaying-lookups-from-other-tables-in.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/1428239838956433453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/1428239838956433453'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/2010/02/displaying-lookups-from-other-tables-in.html' title='Displaying lookups from other tables in ListGrid'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3837712541181314500.post-3626998636030873523</id><published>2010-02-18T17:00:00.000Z</published><updated>2010-02-18T17:00:59.301Z</updated><title type='text'>smartGWT - how to implement a date and time picker/chooser</title><content type='html'>SmartGWT is severly lacking a nice date/time picker/chooser. So for now, you need to use a work-around. The solution is to use the date picker in combination with a suitable method of selecting time. The standard TimeItem in smartGWT is particularly shoddy and user-unfriendly.&lt;br /&gt;&lt;br /&gt;What you want is a spinner for the hours, a spinner for the seconds and a decent defaulting to today's date and time.&lt;br /&gt;&lt;br /&gt;Well, fret no more, here is a solution. For the purposes of this example, we are implementing a &lt;i&gt;send&lt;/i&gt; timestamp where the user selects a date and time to send an item. It gets placed on a dynamic form item so that it can be added to a layout.&lt;br /&gt;&lt;br /&gt;Note that I set the borders here so that you can see the way that it's laid out. You will want to remove those lines in the real world. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; final DynamicForm scheduleForm = new DynamicForm();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; DateItem sendDate&amp;nbsp; = new DateItem();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; sendDate.setDisplayFormat(DateDisplayFormat.TOSERIALIZEABLEDATE);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendDate.setEnforceDate(true);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendDate.setRequired(true);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendDate.setInputFormat("YMD");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendDate.setTitle("Send at:");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; // This part sets up the spinners for choosing a time to send at&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; // We need to default it to now&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; Date rightNow= new Date();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; int hour= rightNow.getHours();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; int min=rightNow.getMinutes();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; SpinnerItem sendTimeHr = new SpinnerItem();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeHr.setName("sendTimeHr");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeHr.setMax(23);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeHr.setMin(0);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeHr.setTitle("Time:");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeHr.setWidth(2);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeHr.setDefaultValue(hour);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; SpinnerItem sendTimeMin = new SpinnerItem();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeMin.setName("sendTimeMins");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeMin.setMax(59);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeMin.setMax(0);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeMin.setTitle(" ");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sendTimeMin.setDefaultValue(min);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; scheduleForm.setNumCols(6);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; scheduleForm.setWidth(414);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; scheduleForm.setBorder("2px solid black");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; scheduleForm.setCellBorder(1);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; scheduleForm.setFields(sendDate,sendTimeHr,sendTimeMin);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3837712541181314500-3626998636030873523?l=web2blog.kieser.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/3626998636030873523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://web2blog.kieser.net/2010/02/smartgwt-how-to-implement-date-and-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/3626998636030873523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/3626998636030873523'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/2010/02/smartgwt-how-to-implement-date-and-time.html' title='smartGWT - how to implement a date and time picker/chooser'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3837712541181314500.post-5900285484193843764</id><published>2010-02-18T16:54:00.000Z</published><updated>2010-02-18T16:54:36.461Z</updated><title type='text'>Getting current time in GWT</title><content type='html'>The Calendar class isn't supported in GWT because the Java cannot be compiled into JavaScript.&lt;br /&gt;&lt;br /&gt;So for now, you need to use the deprecated Date class in Java:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; import java.util.Date;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; .&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; .&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; .&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; Date rightNow= new Date();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; int hour= rightNow.getHours();&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; int min=rightNow.getMinutes();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am still trying to find a better supported way to solve this problem, but for now, deprecated code seems to be the best solution available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3837712541181314500-5900285484193843764?l=web2blog.kieser.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/5900285484193843764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://web2blog.kieser.net/2010/02/getting-current-time-in-gwt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/5900285484193843764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/5900285484193843764'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/2010/02/getting-current-time-in-gwt.html' title='Getting current time in GWT'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3837712541181314500.post-1445147871998340711</id><published>2010-02-17T16:02:00.001Z</published><updated>2010-02-17T16:03:23.689Z</updated><title type='text'>How to add a Date and Time popup to smartGWT</title><content type='html'>There are a lot of queries about how to add a popup for selecting time and date in smartGWT. The bottom line is that smartGWT is lacking a single widget to do this, so you have to use a DateItem and TimeItem together.&lt;br /&gt;&lt;br /&gt;Here is some sample code that adds these items to a VLayout call leftPanel:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;final DynamicForm scheduleForm = new DynamicForm();&lt;br /&gt;&amp;nbsp;DateItem sendDate&amp;nbsp; = new DateItem();&lt;br /&gt;&amp;nbsp;TimeItem sendTime = new TimeItem();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;scheduleForm.setFields(sendDate,sendTime);&lt;br /&gt;&amp;nbsp;leftPanel.addMember(scheduleForm);&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3837712541181314500-1445147871998340711?l=web2blog.kieser.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/1445147871998340711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://web2blog.kieser.net/2010/02/how-to-add-date-and-time-popup-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/1445147871998340711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/1445147871998340711'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/2010/02/how-to-add-date-and-time-popup-to.html' title='How to add a Date and Time popup to smartGWT'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3837712541181314500.post-2324480172144060275</id><published>2010-01-30T12:29:00.000Z</published><updated>2010-01-30T12:29:19.608Z</updated><title type='text'>smartGWT MenuBar - this.menus is undefined error</title><content type='html'>When you are attempting to add a smartGWT MenuBar to your screen, usually at system startup. If you get an error like this:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; com.google.gwt.core.client.JavaScriptException: (TypeError): this.menus is undefined&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;then check that you have used setMenus in when you first instantiate the menu bar. For example:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuBar menuBar = new MenuBar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuBar.setMenus(myFirstMenu,mySecondMenu);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuBar.setVisible(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuBar.setKeepInParentRect(false);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; RootPanel.get("menuPanel").add(menuBar);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is possible to use the &lt;i&gt;add&lt;/i&gt; functions to add members and menus, but the underlying JavaScript needs a setMenu call to have the array that stores the menus initialised.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3837712541181314500-2324480172144060275?l=web2blog.kieser.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/2324480172144060275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://web2blog.kieser.net/2010/01/smartgwt-menubar-thismenus-is-undefined.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/2324480172144060275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/2324480172144060275'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/2010/01/smartgwt-menubar-thismenus-is-undefined.html' title='smartGWT MenuBar - this.menus is undefined error'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3837712541181314500.post-4571661066684681216</id><published>2010-01-30T11:56:00.000Z</published><updated>2010-01-30T11:56:30.138Z</updated><title type='text'>smartGWT MenuBar - setMenus and addMenus undefined</title><content type='html'>If you are using smartGWT and you are attempting to use the smartGWT MenuBar class, but keep getting "setMenu undefined" or "addMenu undefined" errors, then check your imports.&lt;br /&gt;&lt;br /&gt;Google have a MenuBar in GWT as well. The package is com.google.gwt.user.client.ui.MenuBar.&lt;br /&gt;&lt;br /&gt;The correct package to be using is&amp;nbsp; com.smartgwt.client.widgets.menu.MenuBar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3837712541181314500-4571661066684681216?l=web2blog.kieser.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://web2blog.kieser.net/feeds/4571661066684681216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://web2blog.kieser.net/2010/01/smartgwt-menubar-setmenus-and-addmenus.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/4571661066684681216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3837712541181314500/posts/default/4571661066684681216'/><link rel='alternate' type='text/html' href='http://web2blog.kieser.net/2010/01/smartgwt-menubar-setmenus-and-addmenus.html' title='smartGWT MenuBar - setMenus and addMenus undefined'/><author><name>Bradley Kieser</name><uri>http://www.blogger.com/profile/10723853755510927711</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_iZ-YXgCJsC8/S1YnFCicyiI/AAAAAAAAAK4/t-ix9xqqeXc/S220/brad_smaller.jpg'/></author><thr:total>1</thr:total></entry></feed>
