Better Software - November 2008 - (Page 31) public class MeetingViewWidget extends Composite implements MeetingView { private Button saveButton = new Button(“Save”); private TextBox capacityText = new TextBox(); public MeetingViewWidget() { VerticalPanel mainPanel = new VerticalPanel(); HorizontalPanel row = new HorizontalPanel(); row.add(new Label(“Capacity:”)); row.add(capacityText); mainPanel.add(row); mainPanel.add(saveButton); // Start with the save button disabled saveButton.setEnabled(false); // Here the view is responsible for creating the model and presenter final Presenter presenter = new Presenter(new Meeting(), this, new RemoteRoomScheduler()); capacityText.addChangeListener(new ChangeListener() { public void onChange(Widget sender) { presenter.requiredCapacityChanged((HasText) sender); } }); initWidget(mainPanel); } public void disableSaveButton() { saveButton.setEnabled(false); } } Listing 7 public AlternatePresenter(Meeting meeting, MeetingView meetingView, RoomScheduler roomScheduler) { this.meeting = meeting; this.meetingView = meetingView; this.roomScheduler = roomScheduler; // Register to receive all widget callbacks to this presenter meetingView.registerPresenter(this); } Listing 8 Note here that the view is instantiating the model and presenter objects, which is one way of ensuring that the presenter is instantiated with a “live” view. You also could have some higherlevel application object construct the view and pass it to the presenter, which would then need to register itself with the view so all the controls know where to send their events. This would look something like listing 8. uring the display widgets. So how do we test it in a GWTTestCase? We don’t. In fact, there’s not much here that can be tested in an automated test. As stated earlier, event propagation won’t work by default in a GWTTestCase, and the layout of widgets is often best checked visually. If you are building a widget library, then you might want to write GWTTestCases that test the widget through its API, which is what Google does with the widgets included in GWT, such as Button, TextBox, and Tree. However, these tests are slow (a sample widget test takes twelve seconds on my two-year-old workstation), and any complex logic could be moved into a simple presenter object, which could be tested in a plain old, fast JUnit TestCase. For more ideas for testing GWT widgets, see the StickyNotes for a link to my blog post on the subject. www.StickyMinds.com testing asynchronous access to Remote services GWT provides a remote procedure call (RPC) mechanism that enables passing Java objects between the server and client using a server-side serialization library. GWTTestCase supports testing of these features by providing utility methods that facilitate writing asynchronous tests. Most of the inforNOVEMBER 2008 BETTER SOFTWARE 31 http://www.StickyMinds.com
Table of Contents Feed for the Digital Edition of Better Software - November 2008 Better Software - November 2008 Contents Mark Your Calendar Contributors eLightenment Technically Speaking Code Craft Test Connection Management Chronicles Getting Agile with User-Centered Design Google Web Toolkit Simple Summaries of Complex Projects Product Announcements 10 Things You Might Not Know About … The Last Word Ad Index Better Software - November 2008 Better Software - November 2008 - (Page Intro) Better Software - November 2008 - (Page bellyband1) Better Software - November 2008 - (Page bellyband2) Better Software - November 2008 - Better Software - November 2008 (Page Cover1) Better Software - November 2008 - Better Software - November 2008 (Page Cover2) Better Software - November 2008 - Better Software - November 2008 (Page 1) Better Software - November 2008 - Better Software - November 2008 (Page 2) Better Software - November 2008 - Contents (Page 3) Better Software - November 2008 - Mark Your Calendar (Page 4) Better Software - November 2008 - Mark Your Calendar (Page 5) Better Software - November 2008 - Contributors (Page 6) Better Software - November 2008 - Contributors (Page 7) Better Software - November 2008 - eLightenment (Page 8) Better Software - November 2008 - eLightenment (Page QA1) Better Software - November 2008 - eLightenment (Page QA2) Better Software - November 2008 - eLightenment (Page 9) Better Software - November 2008 - eLightenment (Page 10) Better Software - November 2008 - eLightenment (Page 11) Better Software - November 2008 - eLightenment (Page 12) Better Software - November 2008 - Technically Speaking (Page 13) Better Software - November 2008 - Code Craft (Page 14) Better Software - November 2008 - Code Craft (Page 15) Better Software - November 2008 - Code Craft (Page 16) Better Software - November 2008 - Code Craft (Page 17) Better Software - November 2008 - Test Connection (Page 18) Better Software - November 2008 - Test Connection (Page 19) Better Software - November 2008 - Management Chronicles (Page 20) Better Software - November 2008 - Management Chronicles (Page 21) Better Software - November 2008 - Getting Agile with User-Centered Design (Page 22) Better Software - November 2008 - Getting Agile with User-Centered Design (Page 23) Better Software - November 2008 - Getting Agile with User-Centered Design (Page 24) Better Software - November 2008 - Getting Agile with User-Centered Design (Page 25) Better Software - November 2008 - Google Web Toolkit (Page 26) Better Software - November 2008 - Google Web Toolkit (Page 27) Better Software - November 2008 - Google Web Toolkit (Page 28) Better Software - November 2008 - Google Web Toolkit (Page 29) Better Software - November 2008 - Google Web Toolkit (Page 30) Better Software - November 2008 - Google Web Toolkit (Page 31) Better Software - November 2008 - Google Web Toolkit (Page 32) Better Software - November 2008 - Google Web Toolkit (Page 33) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 34) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 35) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 36) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 37) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 38) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 39) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 40) Better Software - November 2008 - Simple Summaries of Complex Projects (Page 41) Better Software - November 2008 - Product Announcements (Page 42) Better Software - November 2008 - Product Announcements (Page 43) Better Software - November 2008 - Product Announcements (Page 44) Better Software - November 2008 - Product Announcements (Page 45) Better Software - November 2008 - 10 Things You Might Not Know About … (Page 46) Better Software - November 2008 - The Last Word (Page 47) Better Software - November 2008 - Ad Index (Page 48) Better Software - November 2008 - Ad Index (Page Cover3) Better Software - November 2008 - Ad Index (Page Cover4)
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.