1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.xnap.plugin.azureus;
21
22 import java.util.Hashtable;
23 import java.util.Iterator;
24 import java.util.List;
25
26 import org.apache.log4j.Logger;
27 import org.gudy.azureus2.core3.config.COConfigurationManager;
28 import org.gudy.azureus2.core3.download.DownloadManager;
29 import org.gudy.azureus2.core3.global.GlobalManager;
30 import org.gudy.azureus2.core3.global.GlobalManagerFactory;
31 import org.gudy.azureus2.core3.global.GlobalManagerListener;
32 import org.gudy.azureus2.core3.internat.ILocaleUtilChooser;
33 import org.gudy.azureus2.core3.internat.LocaleUtil;
34 import org.gudy.azureus2.core3.logging.LGLogger;
35 import org.gudy.azureus2.ui.common.util.LocaleUtilHeadless;
36 import org.xnap.XNapFacade;
37 import org.xnap.gui.AbstractPreferencesDialog;
38 import org.xnap.gui.XNapFrame;
39 import org.xnap.gui.event.AbstractPreferencesDialogListener;
40 import org.xnap.gui.util.IconHelper;
41 import org.xnap.plugin.AbstractPlugin;
42
43 /***
44 * Provides a gnutella network plugin based on the azureus library.
45 */
46 public class AzureusPlugin extends AbstractPlugin
47 implements GlobalManagerListener, ILocaleUtilChooser
48 {
49
50
51
52
53
54 private static Logger logger = Logger.getLogger(AzureusPlugin.class);
55 private static AzureusPlugin singleton;
56
57 private AzureusPreferences azureusPrefs;
58 private GlobalManager globalManager;
59 private AzureusTorrentPanel torrentPanel;
60 private PreferencesDialogListener pdl;
61
62 private boolean started = false;
63 private Hashtable downloadByManager;
64
65
66
67 public AzureusPlugin()
68 {
69 }
70
71
72
73 public static AzureusPlugin getInstance()
74 {
75 return singleton;
76 }
77
78 public static AzureusPreferences getPreferences()
79 {
80 return singleton.azureusPrefs;
81 }
82
83 /***
84 * Returns the global manager.
85 */
86 public static GlobalManager getGlobalManager()
87 {
88 return singleton.globalManager;
89 }
90
91 /***
92 * Starts the plugin.
93 */
94 public void start()
95 {
96 singleton = this;
97
98 downloadByManager = new Hashtable();
99
100 COConfigurationManager.checkConfiguration();
101 LGLogger.initialise();
102
103 LocaleUtil.setLocaleUtilChooser(this);
104
105 azureusPrefs = new AzureusPreferences();
106
107 globalManager = GlobalManagerFactory.create(false);
108 globalManager.addListener(this);
109
110
111
112
113
114 }
115
116 /***
117 * Starts the GUI of the plugin.
118 */
119 public void startGUI()
120 {
121 torrentPanel = new AzureusTorrentPanel();
122 XNapFrame.getInstance().insertTab
123 (getInfo().getName(), IconHelper.getListIcon("socket.png"), torrentPanel);
124
125 pdl = new PreferencesDialogListener();
126 XNapFacade.addPluginPreferencesDialogListener(pdl);
127 }
128
129 /***
130 * Stops the plugin. Disposes all singletons.
131 */
132 public void stop()
133 {
134 for (Iterator it = downloadByManager.values().iterator(); it.hasNext();) {
135 org.xnap.transfer.DownloadManager.getInstance().remove
136 ((AzureusDownloadContainer)it.next());
137 }
138 downloadByManager = null;
139
140 globalManager = null;
141 azureusPrefs = null;
142
143 singleton = null;
144 }
145
146 /***
147 * Stops the GUI of the plugin.
148 */
149 public void stopGUI()
150 {
151 pdl.dispose();
152 XNapFacade.removePluginPreferencesDialogListener(pdl);
153 pdl = null;
154
155 XNapFrame.getInstance().removeTab(torrentPanel);
156 torrentPanel = null;
157 }
158
159
160
161 private class PreferencesDialogListener
162 extends AbstractPreferencesDialogListener
163 {
164
165 public void addPanels(AbstractPreferencesDialog dialog, List panels)
166 {
167
168
169
170 }
171
172 }
173
174 /***
175 * @see org.gudy.azureus2.core3.global.GlobalManagerListener#downloadManagerAdded(org.gudy.azureus2.core3.download.DownloadManager)
176 */
177 public synchronized void downloadManagerAdded(DownloadManager d)
178 {
179 if (!downloadByManager.contains(d)) {
180 AzureusDownloadContainer container = new AzureusDownloadContainer(d);
181 downloadByManager.put(d, container);
182 org.xnap.transfer.DownloadManager.getInstance().add(container);
183 }
184 }
185
186 /***
187 * @see org.gudy.azureus2.core3.global.GlobalManagerListener#downloadManagerRemoved(org.gudy.azureus2.core3.download.DownloadManager)
188 */
189 public synchronized void downloadManagerRemoved(DownloadManager d)
190 {
191 AzureusDownloadContainer container = (AzureusDownloadContainer)downloadByManager.get(d);
192 if (container != null) {
193 downloadByManager.remove(d);
194 org.xnap.transfer.DownloadManager.getInstance().remove(container);
195 }
196 }
197
198 /***
199 * @see org.gudy.azureus2.core3.global.GlobalManagerListener#destroyInitiated()
200 */
201 public void destroyInitiated()
202 {
203 logger.warn("GlobalManager destroy initiated");
204 }
205
206 /***
207 * @see org.gudy.azureus2.core3.global.GlobalManagerListener#destroyed()
208 */
209 public void destroyed()
210 {
211 logger.warn("GlobalManager destroyed");
212 }
213
214 /***
215 * @see org.gudy.azureus2.core3.internat.ILocaleUtilChooser#getProperLocaleUtil()
216 */
217 public LocaleUtil getProperLocaleUtil()
218 {
219 return new LocaleUtilHeadless();
220 }
221
222 }