I know this is probably a few years too late, but for those people who still are supporting legacy GWT-Ext applications and are looking for a way to migrate them to Smart GWT in bits and pieces, here's something that might help you.
Our GWT-Ext app was far too large and our team far too small to do an entire rewrite all at once, so we came up with a wrapper class that allows us to embed Smart GWT canvases into GWT-Ext panels. Our plan is to slowly convert our UI to Smart GWT from the bottom up, on a per-tab basis, and this works wonderfully for us.
Class:
Script to prevent GWT-Ext Plus from being broken by Smart GWT javascript global pollution:
You'll also need to make a small tweak to ext-all.css, removing the td element from the first line (Smart Client wasn't designed to work with CSS reset).
Hope this helps someone!
Our GWT-Ext app was far too large and our team far too small to do an entire rewrite all at once, so we came up with a wrapper class that allows us to embed Smart GWT canvases into GWT-Ext panels. Our plan is to slowly convert our UI to Smart GWT from the bottom up, on a per-tab basis, and this works wonderfully for us.
Class:
Code:
public class SmartGWTPanel extends Panel { private final Canvas canvas; public SmartGWTPanel(Canvas canvas, String title) { this.canvas = canvas; setTitle(title); setLayout(new FitLayout()); canvas.setWidth100(); canvas.setHeight100(); // necessary so that the SmartGWT canvas properly responds to the panel being resized addListener(new PanelListenerAdapter() { public void onBodyResize(Panel panel, String width, String height) { canvas.setWidth(width); canvas.setHeight(height); } }); addListener(new ComponentListenerAdapter() { // necessary so that the canvas elements get properly removed from the DOM public boolean doBeforeDestroy(Component component) { canvas.markForDestroy(); return true; } // render the canvas on-demand instead of immediately (calling add(canvas) triggers an immediate render) public boolean doBeforeRender(Component component) { add(canvas); return true; } // these show/hide calls are necessary so that the canvas can know when it's not visible public void onShow(Component component) { canvas.show(); } public void onHide(Component component) { canvas.hide(); } }); } }
Code:
<script type="text/javascript"> // necessary due to GWT-Ext Plus -- without this over-override, deserializing of data fields on beans fails isc.addMethods(Date, { parseDate : function(A,C){ if(Date.parseFunctions[C]==null){ Date.createParser(C) } var B=Date.parseFunctions[C]; return Date[B](A) } }); </script>
Hope this helps someone!