OpenNapPlugin.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
org.xnap.plugin.opennap |
![]() |
![]() |
XNap 3 |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* XNap - A P2P framework and client.
*
* See the file AUTHORS for copyright information.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.xnap.plugin.opennap;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.Icon;
import javax.swing.JMenu;
import javax.swing.JTabbedPane;
import org.xnap.XNap;
import org.xnap.XNapFacade;
import org.xnap.gui.AbstractPreferencesDialog;
import org.xnap.gui.DefaultPrefsWizardDialog;
import org.xnap.gui.Dialogs;
import org.xnap.gui.StatusBar;
import org.xnap.gui.XNapFrame;
import org.xnap.gui.action.AbstractWizardAction;
import org.xnap.gui.component.XNapCheckBoxMenuItem;
import org.xnap.gui.component.XNapMenu;
import org.xnap.gui.component.XNapMenuItem;
import org.xnap.gui.event.AbstractPreferencesDialogListener;
import org.xnap.gui.util.IconHelper;
import org.xnap.plugin.AbstractPlugin;
import org.xnap.plugin.opennap.action.OpenNapAddAnyToHotlistAction;
import org.xnap.plugin.opennap.action.OpenNapGetServerListAction;
import org.xnap.plugin.opennap.gui.OpenNapAdvancedPreferencesPanel;
import org.xnap.plugin.opennap.gui.OpenNapPreferencesPanel;
import org.xnap.plugin.opennap.gui.OpenNapSearchOptionsPanel;
import org.xnap.plugin.opennap.gui.OpenNapServerPanel;
import org.xnap.plugin.opennap.gui.OpenNapServerPreferencesPanel;
import org.xnap.plugin.opennap.gui.OpenNapStatusPanel;
import org.xnap.plugin.opennap.gui.OpenNapWhoisPanel;
import org.xnap.plugin.opennap.gui.OpenNapWizardPanel;
import org.xnap.plugin.opennap.gui.UseAutoConnectorAction;
import org.xnap.plugin.opennap.net.OpenNapSearchManager;
import org.xnap.plugin.opennap.net.OpenNapServerManager;
import org.xnap.plugin.opennap.net.OpenNapTransferManager;
import org.xnap.plugin.opennap.net.msg.MessageHandler;
import org.xnap.plugin.opennap.user.OpenNapUserManager;
import org.xnap.plugin.opennap.util.OpenNapPreferences;
/**
* Provides a plugin that can access multiple OpenNap servers.
*/
public class OpenNapPlugin extends AbstractPlugin
{
//--- Constant(s) ---
public static String ICON_FILENAME = "network_local.png";
public static Icon ICON_16 = IconHelper.getIcon(ICON_FILENAME, 16, false);
//--- Data Field(s) ---
private static OpenNapPlugin singleton;
private JMenu jmOpenNap;
private JTabbedPane jtpOpenNap;
private OpenNapServerPanel jpServers;
private OpenNapWhoisPanel jpWhois;
private OpenNapStatusPanel jlStatus;
private PreferencesDialogListener pdl;
private MessageHandler messageHandler;
private OpenNapPreferences napPrefs;
private OpenNapSearchManager searchManager;
private OpenNapServerManager serverManager;
private OpenNapUserManager userManager;
private OpenNapTransferManager transferManager;
private int dataPortErrorCount = 0;
//--- Constructor(s) ---
public OpenNapPlugin()
{
}
//--- Method(s) ---
/**
* Invoked when a DataPortErrorMessage is received.
*/
public synchronized void dataPortErrorReceived()
{
dataPortErrorCount++;
if (dataPortErrorCount == 10) {
if (XNapFrame.getInstance() != null) {
Dialogs.showNotification
(XNapFrame.getInstance(), "DataPortError",
XNap.tr("XNap Warning"),
XNap.tr("A number of notifications have been received that the local port is misconfigured. Therefore it has been disabled. Open the plugin preferences to renable it."),
getPreferences());
}
getPreferences().setFirewalled(true);
dataPortErrorCount = 0;
}
}
public static OpenNapPlugin getInstance()
{
return singleton;
}
public static MessageHandler getMessageHandler()
{
return singleton.messageHandler;
}
public static OpenNapPreferences getPreferences()
{
return singleton.napPrefs;
}
public static OpenNapSearchManager getSearchManager()
{
return singleton.searchManager;
}
public static OpenNapServerManager getServerManager()
{
return singleton.serverManager;
}
public static OpenNapTransferManager getTransferManager()
{
return singleton.transferManager;
}
public static OpenNapUserManager getUserManager()
{
return singleton.userManager;
}
public void start()
{
singleton = this;
napPrefs = new OpenNapPreferences();
userManager = new OpenNapUserManager();
transferManager = new OpenNapTransferManager();
messageHandler = new MessageHandler();
searchManager = new OpenNapSearchManager();
serverManager = new OpenNapServerManager();
userManager.restore();
transferManager.restore();
serverManager.init();
serverManager.getConnector().setEnabled
(napPrefs.getUseAutoconnector());
}
public void startGUI()
{
jtpOpenNap = new JTabbedPane();
jtpOpenNap.setName("opennap");
XNapFrame.getInstance().insertTab
(getInfo().getName(), IconHelper.getListIcon(ICON_FILENAME),
jtpOpenNap);
jpServers = new OpenNapServerPanel();
getServerManager().addStatsListener(jpServers);
jtpOpenNap.add(XNap.tr("Server"), jpServers);
jpWhois = new OpenNapWhoisPanel();
jpWhois.setName("whois");
jtpOpenNap.add(XNap.tr("Whois"), jpWhois);
jlStatus = new OpenNapStatusPanel();
getServerManager().addStatsListener(jlStatus);
StatusBar.getInstance().addComponent(jlStatus);
initializeMenu();
XNapFrame.getInstance().getMainMenuBar().addPluginMenu(jmOpenNap);
pdl = new PreferencesDialogListener();
XNapFacade.addPluginPreferencesDialogListener(pdl);
XNapFrame.getInstance().getSearchPanel().getAdvancedPanel()
.addOptionsPanel(getSearchManager(), new OpenNapSearchOptionsPanel());
if (!napPrefs.getSeenStartupWizard()) {
showWizard();
}
}
public void initializeMenu()
{
jmOpenNap = new XNapMenu(getInfo().getName());
jmOpenNap.setIcon(IconHelper.getMenuIcon(ICON_FILENAME));
XNapMenu jmStartup = new XNapMenu(XNap.tr("Startup"));
jmOpenNap.add(jmStartup);
jmStartup.add(new XNapCheckBoxMenuItem(new UseAutoConnectorAction()));
jmOpenNap.addSeparator();
jmOpenNap.add(new XNapMenuItem(new OpenNapAddAnyToHotlistAction()));
jmOpenNap.addSeparator();
jmOpenNap.add(new XNapMenuItem(new OpenNapGetServerListAction()));
jmOpenNap.addSeparator();
jmOpenNap.add(new XNapMenuItem(new ShowWizardAction()));
}
public void showWizard()
{
DefaultPrefsWizardDialog d
= new DefaultPrefsWizardDialog(napPrefs, "seenStartupWizard");
d.addPanel(new OpenNapWizardPanel());
d.show(XNapFrame.getInstance());
}
public void stop()
{
userManager.save();
transferManager.save();
transferManager.clear();
messageHandler.die();
serverManager.die();
messageHandler = null;
serverManager = null;
searchManager = null;
transferManager = null;
userManager = null;
napPrefs = null;
// we can not cleanly unload the plugin...
//singleton = null;
}
public void stopGUI()
{
XNapFrame.getInstance().getSearchPanel().getAdvancedPanel()
.removeOptionsPanel(getSearchManager());
pdl.dispose();
XNapFacade.removePluginPreferencesDialogListener(pdl);
pdl = null;
XNapFrame.getInstance().getMainMenuBar().removePluginMenu(jmOpenNap);
jmOpenNap = null;
getServerManager().removeStatsListener(jlStatus);
StatusBar.getInstance().removeComponent(jlStatus);
jlStatus = null;
XNapFrame.getInstance().removeTab(jtpOpenNap);
jtpOpenNap = null;
getServerManager().removeStatsListener(jpServers);
jpServers = null;
jpWhois = null;
}
// --- Inner Class(es) ---
private class PreferencesDialogListener
extends AbstractPreferencesDialogListener
{
public void addPanels(AbstractPreferencesDialog dialog, List panels)
{
JTabbedPane jtp = new JTabbedPane();
dialog.addPanel(jtp, getInfo().getName(), ICON_FILENAME,
XNap.tr("{0} settings", getInfo().getName()));
panels.add(jtp);
OpenNapPreferencesPanel npp = new OpenNapPreferencesPanel();
dialog.addTab(jtp, npp);
panels.add(npp);
OpenNapServerPreferencesPanel spp = new OpenNapServerPreferencesPanel();
dialog.addTab(jtp, spp);
panels.add(spp);
OpenNapAdvancedPreferencesPanel napp
= new OpenNapAdvancedPreferencesPanel();
dialog.addTab(jtp, napp);
panels.add(napp);
}
}
private class ShowWizardAction extends AbstractWizardAction
{
public void actionPerformed(ActionEvent event)
{
showWizard();
}
}
}
The table below shows all metrics for OpenNapPlugin.java.



