Everything can be shared with users and groups! Sophisticated Access Right Model at user level Applications : Individual user, Families, Associations, Companies, Departments, All kinds of teams, ...
M odel - V iew - R emoting Remoting Model View notify Synchronous call Add listener xxxService xxxServiceAsync DTOs Shared between front-end and back-end Asynchronous call with command piggybacking Front-end only AbstractModel ModelObject ModelFolder abstractions Asynchronous call AsyncCallback
'Tip of the Day': Enhanced AsyncCallback
Throbber handling
Generic RPC exceptions handling
Commands piggybacking
public class COAsyncCallback implements AsyncCallback { … public COAsyncCallback(AsyncCallback callback, Command onSuccessCommand) {
'Tip of the Day' (2) public void save(Command chainCommand) { getCalendarService().saveEvent(this, new COAsyncCallback( new GetEventDetailsCallback(), chainCommand)); } public static void showCreationDialog(Event event) { event.save( new ShowDialogCommand(event)); } private static class ShowDialogCommand implements Command { private final Event m_event ; public ShowDialogCommand(Event event) { m_event = event; } public void execute() { new EventPropertiesDialog(m_event).showCentered(); } } EventPropertiesDialog.java (View) : Event.java (Model) : Create an event object in the back-end, then edit its properties
Current Interface
http://www.contactoffice.com
New GWT based Interface
http://beta.contactoffice.com
Indication of new + total number of items in lists Navigation repeated on left Help and extra information Dashboard giving quick access to main features
New GWT based Interface Horizontal splitter COMenuBar extends MenuBar Frame
New GWT based Interface - TreeView StackPanel TreeView
'Tree' based Composite
Drag & drop source and target
Contextual menus
Close relationship with 'ModelFolder' and 'ModelObject'
New GWT based Interface - ListView Marquee selection Click to sort
Multiselect, select range, (un) Select all
Data grid, logical scrolling
Close relationship with 'ModelFolder' and 'ModelObject'
Invocation is hard (right-click portability issues…)
Drag & Drop
D&D engine handles:
Regular D&D
Marquee selection
Splitters
(Rectangular) drag sources & drop targets
Could be hidden in widgets implementation
Multi-select
JavaScript Google Web Toolkit ContactOffice Enhancements
Legacy pages integration Legacy page (jsp) New page (GWT)
New calendar D&D event Access group & member's calendars Resizeable & overlap
Back-end (1) RemoteServiceServlet (GWT) GWTServlet AbstractHandler MailHandler MailServices … Instantiates (on each RPC invocation) CalendarHandler CalendarServices … HTTP request/session User credentials DB Transactions handling RemoteService (GWT) Actual RPC implementation ~ Invokes the Business Logic
Back-end (2)
Straightforward integration
Super-clean with a Java POJO back-end
Fast migration path from DWR
~ 5000 specific lines of code, 13 classes/interfaces
0 comments
Post a comment