Package

Source Code of TimerBeanImpl

/*
* 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.effects.Effect;
import com.icesoft.faces.context.effects.BlindDown;
import com.icesoft.faces.context.effects.BlindUp;

import org.jboss.seam.annotations.Logger;
import org.jboss.seam.log.Log;

/**
* @author ICEsoft Technologies, Inc.
*
*/

@Name("timer")
@Scope(ScopeType.PAGE)
public class TimerBeanImpl implements Renderable, Serializable {

    @Logger private Log log;

    // 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;

    @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 );
            }

            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();
    }


    private void cleanup() {
        if (ir != null) {
            ir.remove(this);
            if (ir.isEmpty() ) {
                if(log.isTraceEnabled() ) {
                   log.trace("*** IntervalRenderer Stopped " );
                }
                ir.requestStop();
            }
        }
    }
}
TOP

Related Classes of TimerBeanImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.