1 33 34 package com.icesoft.icefaces.samples.showcase.components.progressBar; 35 36 import javax.faces.event.ActionEvent; 37 38 import com.icesoft.faces.async.render.RenderManager; 39 import com.icesoft.faces.async.render.Renderable; 40 import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState; 41 import com.icesoft.faces.webapp.xmlhttp.RenderingException; 42 import org.apache.commons.logging.Log; 43 import org.apache.commons.logging.LogFactory; 44 45 48 public class OutputProgressIndeterminateBean implements Renderable { 49 50 private static Log log = 51 LogFactory.getLog(OutputProgressIndeterminateBean.class); 52 53 56 private PersistentFacesState state; 57 private RenderManager renderManager; 58 59 64 public PersistentFacesState getState() { 65 66 return state; 67 } 68 69 74 public void renderingException(RenderingException renderingException) { 75 renderingException.printStackTrace(); 76 } 77 78 83 public void setRenderManager(RenderManager renderManager) { 84 this.renderManager = renderManager; 85 } 86 87 92 public RenderManager getRenderManager() { 93 return null; 94 } 95 96 private boolean runningTask; 98 99 private int percent; 101 102 106 public OutputProgressIndeterminateBean() { 107 state = PersistentFacesState.getInstance(); 108 } 109 110 115 public int getPercent() { 116 return percent; 117 } 118 119 124 public void setPercent(int percent) { 125 this.percent = percent; 126 } 127 128 133 public boolean isRunningTask() { 134 return runningTask; 135 } 136 137 142 public void setRunningTask(boolean runningTask) { 143 this.runningTask = runningTask; 144 } 145 146 149 public void longOperation(ActionEvent event) { 150 setPercent(1); 151 Thread copyThread = new Thread (new LongOperationRunner(this, 152 PersistentFacesState.getInstance())); 153 copyThread.start(); 154 } 155 156 159 class LongOperationRunner implements Runnable { 160 PersistentFacesState state = null; 161 private OutputProgressIndeterminateBean pbBean; 162 163 public LongOperationRunner(OutputProgressIndeterminateBean progress, 164 PersistentFacesState state) { 165 this.state = state; 166 this.pbBean = progress; 167 } 168 169 public void run() { 170 171 runningTask = true; 172 pbBean.setPercent(1); 173 174 try { 175 Thread.sleep(3000); 176 } catch (InterruptedException e) { 177 if (log.isErrorEnabled()) { 178 log.error("interrupted", e); 179 } 180 } 181 182 runningTask = false; 184 pbBean.setPercent(100); 185 renderManager.requestRender(pbBean); 186 } 187 } 188 } | Popular Tags |