[jboss-cvs] jboss-seam/seam-gen/icefaces/src ...

Michael Yuan michael.yuan at jboss.com
Fri Sep 14 22:30:00 EDT 2007


  User: myuan   
  Date: 07/09/14 22:30:00

  Added:       seam-gen/icefaces/src   TimerBean.java TimerBeanImpl.java
  Log:
  icefaces integration support
  
  Revision  Changes    Path
  1.3       +8 -6      jboss-seam/seam-gen/icefaces/src/TimerBean.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: TimerBean.java
  ===================================================================
  RCS file: TimerBean.java
  diff -N TimerBean.java
  --- /dev/null	1 Jan 1970 00:00:00 -0000
  +++ TimerBean.java	15 Sep 2007 02:29:59 -0000	1.3
  @@ -0,0 +1,56 @@
  +/*
  + * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  + *
  + * "The contents of this file are subject to the Mozilla Public License
  + * Version 1.1 (the "License"); you may not use this file except in
  + * compliance with the License. You may obtain a copy of the License at
  + * http://www.mozilla.org/MPL/
  + *
  + * Software distributed under the License is distributed on an "AS IS"
  + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  + * License for the specific language governing rights and limitations under
  + * the License.
  + *
  + * The Original Code is ICEfaces 1.5 open source software code, released
  + * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
  + * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
  + * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
  + *
  + * Contributor(s): _____________________.
  + *
  + * Alternatively, the contents of this file may be used under the terms of
  + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
  + * License), in which case the provisions of the LGPL License are
  + * applicable instead of those above. If you wish to allow use of your
  + * version of this file only under the terms of the LGPL License and not to
  + * allow others to use your version of this file under the MPL, indicate
  + * your decision by deleting the provisions above and replace them with
  + * the notice and other provisions required by the LGPL License. If you do
  + * not delete the provisions above, a recipient may use your version of
  + * this file under either the MPL or the LGPL License."
  + *
  + */
  +package @actionPackage@;
  +
  +
  +import javax.ejb.Local;
  +import com.icesoft.faces.context.effects.Effect;
  +/**
  + * @author ICEsoft Technologies, Inc.
  + */
  + at Local
  +public interface TimerBean {
  +
  +    public String getCurrentTime();
  +    public String getRenderMode();
  +    public void remove();
  +    public String getCurrentConversation();
  +
  +	public String getLongRunning();
  +    public boolean getExpanded();
  +    public void setExpanded(boolean expanded);
  +    public boolean isVisibility() ;
  +    public void setVisibility(boolean visibility);
  +    public String toggleExpanded();
  +    public Effect getExpandEffect();
  +}
  
  
  
  1.3       +65 -10    jboss-seam/seam-gen/icefaces/src/TimerBeanImpl.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: TimerBeanImpl.java
  ===================================================================
  RCS file: TimerBeanImpl.java
  diff -N TimerBeanImpl.java
  --- /dev/null	1 Jan 1970 00:00:00 -0000
  +++ TimerBeanImpl.java	15 Sep 2007 02:29:59 -0000	1.3
  @@ -0,0 +1,246 @@
  +/*
  + * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  + *
  + * "The contents of this file are subject to the Mozilla Public License
  + * Version 1.1 (the "License"); you may not use this file except in
  + * compliance with the License. You may obtain a copy of the License at
  + * http://www.mozilla.org/MPL/
  + *
  + * Software distributed under the License is distributed on an "AS IS"
  + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  + * License for the specific language governing rights and limitations under
  + * the License.
  + *
  + * The Original Code is ICEfaces 1.5 open source software code, released
  + * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
  + * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
  + * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
  + *
  + * Contributor(s): _____________________.
  + *
  + * Alternatively, the contents of this file may be used under the terms of
  + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
  + * License), in which case the provisions of the LGPL License are
  + * applicable instead of those above. If you wish to allow use of your
  + * version of this file only under the terms of the LGPL License and not to
  + * allow others to use your version of this file under the MPL, indicate
  + * your decision by deleting the provisions above and replace them with
  + * the notice and other provisions required by the LGPL License. If you do
  + * not delete the provisions above, a recipient may use your version of
  + * this file under either the MPL or the LGPL License."
  + *
  + */
  +package @actionPackage@;
  +
  +import org.jboss.seam.annotations.Name;
  +import org.jboss.seam.annotations.Destroy;
  +import org.jboss.seam.annotations.Scope;
  +import org.jboss.seam.annotations.Begin;
  +import org.jboss.seam.annotations.In;
  +import org.jboss.seam.ScopeType;
  +import org.jboss.seam.core.Manager;
  +
  +import javax.faces.context.FacesContext;
  +import javax.ejb.Stateful;
  +import javax.ejb.Remove;
  +import java.util.Date;
  +import java.text.DateFormat;
  +import java.io.Serializable;
  +import javax.faces.event.ActionEvent;
  +
  +import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState;
  +import com.icesoft.faces.webapp.xmlhttp.RenderingException;
  +import com.icesoft.faces.async.render.RenderManager;
  +import com.icesoft.faces.async.render.IntervalRenderer;
  +import com.icesoft.faces.async.render.Renderable;
  +import com.icesoft.faces.context.ViewListener;
  +
  +import com.icesoft.faces.context.effects.Effect;
  +import com.icesoft.faces.context.effects.BlindDown;
  +import com.icesoft.faces.context.effects.BlindUp;
  +
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
  +
  +/**
  + * @author ICEsoft Technologies, Inc.
  + * 
  + */
  +
  + at Name("timer")
  + at Scope(ScopeType.PAGE)
  +public class TimerBeanImpl implements Renderable, ViewListener, Serializable {
  +
  +    // expand/contract effects to take place of panelCollapsible
  +    private Effect currentEffect=new BlindUp();
  +    private boolean visibility=false;
  +    private boolean toggledEffect;
  +    private boolean expanded = false;
  +
  +    private DateFormat dateFormatter;
  +    private static Log log = LogFactory.getLog(TimerBeanImpl.class);
  +
  +    @In
  +    private RenderManager renderManager;
  +    private boolean doneSetup;
  +    private IntervalRenderer ir;
  +    private PersistentFacesState state = PersistentFacesState.getInstance();
  +    private String synchronous;
  +
  +    private int myId; 
  +
  +    private static int id;
  +
  +
  +    public PersistentFacesState getState() {
  +        return state;
  +    }
  +
  +    public void renderingException( RenderingException re) {
  +        if(log.isTraceEnabled() ) { 
  +           log.trace("*** View obsoleted: " + myId );
  +        } 
  +        cleanup();
  +    }
  +
  +
  +    public TimerBeanImpl() {
  +        dateFormatter =  DateFormat.getDateTimeInstance();
  +        myId = ++id;      
  +    }
  +
  +
  +    /** to simulate panelCollapsible */   
  +    private void buildEffect() {
  +       if (expanded) {
  +            currentEffect = new BlindDown();
  +       } else {
  +           currentEffect = new BlindUp();
  +       }
  +           currentEffect.setSubmit(true);
  +           currentEffect.setTransitory(false);
  +           currentEffect.setDuration(.2f);
  +    }
  +
  +    public boolean getExpanded() {
  +        return expanded;
  +    }
  +    public void setExpanded(boolean expanded) {
  +        this.expanded = expanded;
  +        visibility = expanded;
  +        buildEffect();
  +        currentEffect.setFired(true);
  +    }
  +       public boolean isVisibility() {
  +        return visibility;
  +    }
  +    public void setVisibility(boolean visibility) {
  +        this.visibility = visibility;
  +    }
  + 
  +    /**
  +     * Method used to toggle the expanded status of this item This would be
  +     * called from the front end pages
  +     *
  +     * @return "toggleExpanded" for use with faces-config navigation
  +     */
  +    public String toggleExpanded() {
  +        expanded = !expanded;
  +        buildEffect();
  +        toggledEffect = true;
  +        currentEffect.setFired(false);
  +        currentEffect.setSubmit(true);
  +        return null;
  +    }
  +    /**
  +     * Gets the effect used when a cell is expanded or contracted
  +     *
  +     * @return effect
  +     */
  +    public Effect getExpandEffect() {
  +        if (!toggledEffect) {
  +            currentEffect.setSubmit(false);
  +        }
  +        toggledEffect = false;
  +        return currentEffect;
  +    }
  +    
  +    public String getCurrentTime() {
  +
  +        state = PersistentFacesState.getInstance();
  +
  +        if (!doneSetup) {
  +
  +            if(log.isTraceEnabled() ) { 
  +                log.trace("*** new TimerBean renderable... " + myId );
  +            } 
  +
  +            state.addViewListener(this );
  +            FacesContext fc = FacesContext.getCurrentInstance();
  +            synchronous = (String) fc.getExternalContext().getInitParameterMap().
  +                    get( "com.icesoft.faces.synchronousUpdate" );
  +            boolean timed = Boolean.valueOf( (String) fc.getExternalContext().getInitParameterMap().
  +                    get("org.icesoft.examples.serverClock"));
  +
  +            if (timed) {
  +                ir = renderManager.getIntervalRenderer("org.icesoft.clock.clockRenderer");
  +                ir.setInterval(5000);
  +                ir.add(this);
  +                ir.requestRender();
  +            }
  +        }
  +        
  +        doneSetup = true;
  +        return dateFormatter.format( new Date( System.currentTimeMillis() ) );
  +    }
  +
  +    public String getRenderMode() {
  +        return  synchronous + " " + myId;        
  +    }
  +
  +    // Don't make this begin a conversation as this class is 
  +    // intended to be used in a footer. 
  +    // If this method starts a conversation 
  +    // it can't be added to the foot of applications that don't 
  +    // expect conversations to already be in progress
  +    public String getCurrentConversation() {
  +        Manager m = Manager.instance();
  +        return m.getCurrentConversationId();
  +    }
  +
  +    public String getLongRunning() {
  +        Manager m = Manager.instance();
  +        return Boolean.toString( m.isLongRunningConversation() );
  +    } 
  +
  +    @Remove
  +    @Destroy
  +    public void remove() {
  +        if(log.isTraceEnabled() ) { 
  +           log.trace("*** View removed: " + myId );
  +        } 
  +        cleanup(); 
  +    }
  +
  +    public void viewCreated() {
  +    }
  +
  +    public void viewDisposed() {
  +        if(log.isTraceEnabled() ) { 
  +           log.trace("*** View disposed: " + myId );
  +        } 
  +        cleanup();
  +    }
  +
  +    private void cleanup() {
  +        if (ir != null) {
  +            ir.remove(this);
  +            if (ir.isEmpty() ) {
  +                if(log.isTraceEnabled() ) { 
  +                   log.trace("*** IntervalRenderer Stopped " );
  +                } 
  +                ir.requestStop();
  +            }
  +        }
  +    } 
  +}
  
  
  



More information about the jboss-cvs-commits mailing list