1 19 20 package org.netbeans.modules.j2ee.sun.ide.j2ee; 21 22 import java.util.Vector ; 23 24 import javax.enterprise.deploy.spi.TargetModuleID ; 25 import javax.enterprise.deploy.spi.status.DeploymentStatus ; 26 import javax.enterprise.deploy.spi.status.ProgressEvent ; 27 import javax.enterprise.deploy.spi.status.ProgressListener ; 28 29 import org.openide.util.RequestProcessor; 30 40 public class ProgressEventSupport { 41 42 43 private Object obj; 44 45 private Vector listeners; 46 47 private DeploymentStatus status; 48 49 private TargetModuleID tmID; 50 51 56 public ProgressEventSupport (Object o) { 57 if (o == null) { 58 throw new NullPointerException (); 59 } 60 obj = o; 61 } 62 63 64 public synchronized void addProgressListener (ProgressListener lsnr) { 65 boolean notify = false; 66 if (listeners == null) { 67 listeners = new java.util.Vector (); 68 } 69 listeners.addElement(lsnr); 70 if (status != null && !status.isRunning ()) { 71 notify = true; 72 } 73 if (notify) { 74 RequestProcessor.getDefault ().post (new Runnable () { 76 public void run () { 77 fireHandleProgressEvent (tmID, status); 78 } 79 }); 80 } 81 } 82 83 84 public synchronized void removeProgressListener (ProgressListener lsnr) { 85 if (listeners == null) { 86 return; 87 } 88 listeners.removeElement(lsnr); 89 } 90 91 92 public void fireHandleProgressEvent (TargetModuleID targetModuleID, 93 DeploymentStatus sCode) { 94 ProgressEvent evt = new ProgressEvent (obj, targetModuleID, sCode); 95 status = sCode; 96 tmID = targetModuleID; 97 98 Vector targets = null; 99 synchronized (this) { 100 if (listeners != null) { 101 targets = (Vector ) listeners.clone(); 102 } 103 } 104 105 if (targets != null) { 106 for (int i = 0; i < targets.size(); i++) { 107 ProgressListener target = (ProgressListener )targets.elementAt(i); 108 target.handleProgressEvent (evt); 109 } 110 } 111 } 112 113 115 public DeploymentStatus getDeploymentStatus () { 116 return status; 117 } 118 119 public synchronized void clearProgressListener() { 120 listeners = null; 121 } 122 } 123 124 | Popular Tags |