/******************************************************************************* * Copyright (c) 2002-2006 Innoopract Informationssysteme GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package com.w4t.webcontainerkit; import java.io.IOException; import org.eclipse.rwt.internal.browser.*; import org.eclipse.rwt.internal.resources.ResourceManagerImpl; import org.eclipse.rwt.internal.util.HTML; import org.eclipse.rwt.resources.IResourceManager; import com.w4t.*; import com.w4t.util.RendererCache; /** <p>the superclass of all Renderers that render org.eclipse.rap.WebContainer.</p> */ public abstract class WebContainerRenderer extends Renderer { private static final String WINDOWMANAGER_JS = "resources/js/windowmanager/windowmanager.js"; private static final String EVENTHANDLER_IE_JS = "resources/js/eventhandler/eventhandler_ie.js"; private static final String EVENTHANDLER_DEFAULT_JS = "resources/js/eventhandler/eventhandler_default.js"; // TODO: [fappel] move this to the respective component renderer static { IResourceManager manager = W4TContext.getResourceManager(); manager.register( "resources/images/add.gif" ); manager.register( "resources/images/blindlight.gif" ); manager.register( "resources/images/commit.gif" ); manager.register( "resources/images/copy.gif" ); manager.register( "resources/images/cut.gif" ); manager.register( "resources/images/del.gif" ); manager.register( "resources/images/delete.gif" ); manager.register( "resources/images/disabledcopy.gif" ); manager.register( "resources/images/disabledcut.gif" ); manager.register( "resources/images/disableddelete.gif" ); manager.register( "resources/images/disabledfirstrec.gif" ); manager.register( "resources/images/disabledlastrec.gif" ); manager.register( "resources/images/disablednextrec.gif" ); manager.register( "resources/images/disabledpointer.gif" ); manager.register( "resources/images/disabledprevrec.gif" ); manager.register( "resources/images/disabledtransparent.gif" ); manager.register( "resources/images/doubleclick.gif" ); manager.register( "resources/images/dragDrop.gif" ); manager.register( "resources/images/favicon.ico" ); manager.register( "resources/images/firstrec.gif" ); manager.register( "resources/images/firstrecd.gif" ); manager.register( "resources/images/greenlight.gif" ); manager.register( "resources/images/insert.gif" ); manager.register( "resources/images/lastrec.gif" ); manager.register( "resources/images/lastrecd.gif" ); manager.register( "resources/images/nextpage.gif" ); manager.register( "resources/images/nextpaged.gif" ); manager.register( "resources/images/nextrec.gif" ); manager.register( "resources/images/open.gif" ); manager.register( "resources/images/pointer.gif" ); manager.register( "resources/images/prevpage.gif" ); manager.register( "resources/images/prevpaged.gif" ); manager.register( "resources/images/prevrec.gif" ); manager.register( "resources/images/redlight.gif" ); manager.register( "resources/images/reset.gif" ); manager.register( "resources/images/save.gif" ); manager.register( "resources/images/saveCode.gif" ); manager.register( "resources/images/submitter.gif" ); manager.register( "resources/images/transparent.gif" ); manager.register( "resources/images/treeview/closedFolder.gif" ); manager.register( "resources/images/treeview/document.gif" ); manager.register( "resources/images/treeview/documentCol.gif" ); manager.register( "resources/images/treeview/documentExp.gif" ); manager.register( "resources/images/treeview/docWithChildsCol.gif" ); manager.register( "resources/images/treeview/docWithChildsExp.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_Empty.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_IconCol.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_IconExpWithChildren.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_IconExpWithoutChildren.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_Inner.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_Last.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_LeafIcon.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_Line.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_MinusInner.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_MinusLast.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_PlusInner.gif" ); manager.register( "resources/images/treeview/explorer/Explorer_PlusLast.gif" ); manager.register( "resources/images/treeview/folderCol.gif" ); manager.register( "resources/images/treeview/folderExp.gif" ); manager.register( "resources/images/treeview/leaf.gif" ); manager.register( "resources/images/treeview/minus.gif" ); manager.register( "resources/images/treeview/modern/Modern_Empty.gif" ); manager.register( "resources/images/treeview/modern/Modern_IconCol.gif" ); manager.register( "resources/images/treeview/modern/Modern_IconExpWithChildren.gif" ); manager.register( "resources/images/treeview/modern/Modern_IconExpWithoutChildren.gif" ); manager.register( "resources/images/treeview/modern/Modern_Inner.gif" ); manager.register( "resources/images/treeview/modern/Modern_Last.gif" ); manager.register( "resources/images/treeview/modern/Modern_LeafIcon.gif" ); manager.register( "resources/images/treeview/modern/Modern_Line.gif" ); manager.register( "resources/images/treeview/modern/Modern_MinusInner.gif" ); manager.register( "resources/images/treeview/modern/Modern_MinusLast.gif" ); manager.register( "resources/images/treeview/modern/Modern_PlusInner.gif" ); manager.register( "resources/images/treeview/modern/Modern_PlusLast.gif" ); manager.register( "resources/images/treeview/openFolder.gif" ); manager.register( "resources/images/treeview/plus.gif" ); manager.register( "resources/images/treeview/swing/Swing_Empty.gif" ); manager.register( "resources/images/treeview/swing/Swing_IconCol.gif" ); manager.register( "resources/images/treeview/swing/Swing_IconExpWithChildren.gif" ); manager.register( "resources/images/treeview/swing/Swing_IconExpWithoutChildren.gif" ); manager.register( "resources/images/treeview/swing/Swing_Inner.gif" ); manager.register( "resources/images/treeview/swing/Swing_Last.gif" ); manager.register( "resources/images/treeview/swing/Swing_LeafIcon.gif" ); manager.register( "resources/images/treeview/swing/Swing_Line.gif" ); manager.register( "resources/images/treeview/swing/Swing_MinusInner.gif" ); manager.register( "resources/images/treeview/swing/Swing_MinusLast.gif" ); manager.register( "resources/images/treeview/swing/Swing_PlusInner.gif" ); manager.register( "resources/images/treeview/swing/Swing_PlusLast.gif" ); manager.register( "resources/images/update.gif" ); manager.register( "resources/images/yellowlight.gif" ); } public void processAction( final WebComponent component ) { WebContainer container = ( WebContainer )component; WebLayout layout = container.getWebLayout(); RendererCache rendererCache = RendererCache.getInstance(); if( rendererCache.getRendererClass( layout.getClass() ) != null ) { Renderer renderer = rendererCache.retrieveRenderer( layout.getClass() ); renderer.processAction( component ); } } public void scheduleRendering( final WebComponent component ) { WebContainer container = ( WebContainer )component; WebLayout layout = container.getWebLayout(); RendererCache rendererCache = RendererCache.getInstance(); if( rendererCache.getRendererClass( layout.getClass() ) != null ) { Renderer renderer = rendererCache.retrieveRenderer( layout.getClass() ); renderer.scheduleRendering( container ); } else { for( int i = 0; i < container.getWebComponentCount(); i++ ) { if( container.get( i ).isVisible() ) { getRenderingSchedule().schedule( container.get( i ) ); } } } } public void render( final WebComponent component ) throws IOException { setJSLibraries(); WebContainer wct = ( WebContainer )component; wct.getWebLayout().layoutWebContainer( wct ); } // TODO [rh] Find a better solution than hardwired browser to js mapping private void setJSLibraries() { IResourceManager manager = ResourceManagerImpl.getInstance(); // EventHandler Browser browser = W4TContext.getBrowser(); String eventHandler; if( browser instanceof Mozilla ) { eventHandler = EVENTHANDLER_DEFAULT_JS; } else if( browser instanceof Opera8 || browser instanceof Opera8up ) { eventHandler = EVENTHANDLER_DEFAULT_JS; } else if( browser instanceof Safari ) { eventHandler = EVENTHANDLER_DEFAULT_JS; } else { eventHandler = EVENTHANDLER_IE_JS; } manager.register( eventHandler, HTML.CHARSET_NAME_ISO_8859_1, IResourceManager.RegisterOptions.VERSION_AND_COMPRESS ); getResponseWriter().useJSLibrary( eventHandler ); // WindowManager manager.register( WINDOWMANAGER_JS, HTML.CHARSET_NAME_ISO_8859_1, IResourceManager.RegisterOptions.VERSION_AND_COMPRESS ); getResponseWriter().useJSLibrary( WINDOWMANAGER_JS ); } }