package cbclipse; import java.util.ArrayList; import org.eclipse.core.resources.IResource; import cbcdownloader.CommunicationException; import cbcdownloader.DownloadConfiguration; import cbcdownloader.Downloader; public class Connection { private Downloader downloader = null; private DownloadConfiguration config = null; private ArrayList<Runnable> listeners = new ArrayList<Runnable>(); private static boolean connected = false; public Connection(Downloader downloader, DownloadConfiguration config) { super(); setDownloader(downloader, config); } public void setDownloader(Downloader downloader, DownloadConfiguration config) { this.downloader = downloader; this.config = config; downloader.setup(config); } public void connect() throws CommunicationException { if(connected) return; System.out.println("Downloader connecting.."); downloader.connect(); connected = true; } public boolean isConnected() { return connected; } public void disconnect() { if(!connected) return; downloader.disconnect(); connected = false; } public void addListener(IResource resource, Runnable listener) { listeners.add(listener); } public void removeListener(IResource resource, Runnable listener) { listeners.remove(listener); } public void updateListeners() throws CommunicationException { downloader.connect(); System.out.println("Updating " + listeners.size() + " listener(s)."); for(Runnable listener : listeners) { listener.run(); } downloader.disconnect(); } public boolean isDownloaderSet() { return downloader != null; } public Downloader getDownloader() { return downloader; } public DownloadConfiguration getConfig() { return config; } }