package org.javabuilders.event; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.EventObject; import org.javabuilders.BuildResult; /** * Standard event for methods that run in background * @author Jacek Furmankiewicz */ @SuppressWarnings("serial") public class BackgroundEvent extends EventObject { private Boolean isCancelable = false; private CancelStatus cancelStatus = CancelStatus.FORBIDDEN; private Integer progressStart = 0, progressEnd = 100, progressValue = 0; private String progressMessage = ""; private Object originalEvent = null; private Boolean isProgressIndeterminate = false; private Boolean isBlocking = true; //needed for data binding to work private PropertyChangeSupport support = null; /** * @param source Source object */ public BackgroundEvent(Object source, Object originalEvent, boolean isBlocking, BuildResult result) { super(source); this.originalEvent = originalEvent; this.support = result.getConfig().createPropertyChangeSupport(this); this.progressMessage = result.getResource("label.processing"); this.isBlocking = isBlocking; } /** * For binding support * @param listener */ public void addPropertyChangeListener(PropertyChangeListener listener) { support.addPropertyChangeListener(listener); } /** * For binding support * @param propertyName * @param listener */ public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { support.addPropertyChangeListener(propertyName, listener); } /** * For binding support * @param listener */ public void removePropertyChangeListener(PropertyChangeListener listener) { support.removePropertyChangeListener(listener); } /** * For binding support * @param propertyName * @param listener */ public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { support.removePropertyChangeListener(propertyName, listener); } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#isCancelable() */ public boolean isCancelable() { return isCancelable; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#setCancelable(java.lang.Boolean) */ public synchronized void setCancelable(Boolean isCancelable) { Boolean oldValue = this.isCancelable; this.isCancelable = isCancelable; support.firePropertyChange("cancelable", oldValue, this.isCancelable); if (isCancelable) { if (cancelStatus == CancelStatus.NONE) { cancelStatus = CancelStatus.FORBIDDEN; } } else { cancelStatus = CancelStatus.FORBIDDEN; } } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#getCancelStatus() */ public CancelStatus getCancelStatus() { return cancelStatus; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#setCancelStatus(org.javabuilders.event.CancelStatus) */ public synchronized void setCancelStatus(CancelStatus cancelStatus) { if (cancelStatus != CancelStatus.FORBIDDEN) { CancelStatus oldValue = this.cancelStatus; this.cancelStatus = cancelStatus; support.firePropertyChange("cancelStatus", oldValue, this.cancelStatus); } } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#getProgressStart() */ public Integer getProgressStart() { return progressStart; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#setProgressStart(java.lang.Integer) */ public synchronized void setProgressStart(Integer progressStart) { Integer oldValue = this.progressStart; this.progressStart = progressStart; support.firePropertyChange("progressStart", oldValue, this.progressStart); } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#getProgressEnd() */ public Integer getProgressEnd() { return progressEnd; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#setProgressEnd(java.lang.Integer) */ public synchronized void setProgressEnd(Integer progressEnd) { Integer oldValue = this.progressEnd; this.progressEnd = progressEnd; support.firePropertyChange("progressEnd",oldValue,progressEnd); } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#getProgressValue() */ public Integer getProgressValue() { return progressValue; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#setProgressValue(java.lang.Integer) */ public synchronized void setProgressValue(Integer currentProgressValue) { Integer oldValue = this.progressValue; this.progressValue = currentProgressValue; support.firePropertyChange("progressValue", oldValue, progressValue); } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#getProgressMessage() */ public String getProgressMessage() { return progressMessage; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#setProgressMessage(java.lang.String) */ public synchronized void setProgressMessage(String progressMessage) { String oldValue = this.progressMessage; this.progressMessage = progressMessage; support.firePropertyChange("progressMessage",oldValue,progressMessage); } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#getOriginalEvent() */ public Object getOriginalEvent() { return originalEvent; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#getProgressIndeterminate() */ public Boolean getProgressIndeterminate() { return isProgressIndeterminate; } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#setProgressIndeterminate(java.lang.Boolean) */ public synchronized void setProgressIndeterminate(Boolean isProgressIndeterminate) { Boolean oldValue = this.isProgressIndeterminate; this.isProgressIndeterminate = isProgressIndeterminate; support.firePropertyChange("progressIndeterminate", oldValue, isProgressIndeterminate); } /* (non-Javadoc) * @see org.javabuilders.event.IBackgroundEvent#isBlocking() */ public boolean isBlocking() { return isBlocking; } }