/*
* File : PluginManager.java
* Created : 14-Dec-2003
* By : parg
*
* Azureus - a Java Bittorrent client
*
* 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; either version 2 of the License.
*
* 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 ( see the LICENSE file ).
*
* 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.gudy.azureus2.plugins;
import java.util.Properties;
import org.gudy.azureus2.pluginsimpl.local.*;
import org.gudy.azureus2.plugins.installer.*;
/**
* This class allows Azureus to be started as an embedded component and also allows plugins to
* be dynamically registered
* @author parg
*/
public abstract class
PluginManager
{
/**
* No user interface
*
* @since 2.0.8.0
*/
public static final int UI_NONE = 0;
/**
* SWT user inferface
*
* @since 2.0.6.0
*/
public static final int UI_SWT = 1;
/**
* Property Key: Allow multiple instances.
* Normally Azureus will only permit a single instance to run per machine.
* Values for this key are: "true" or "false"
*
* @since 2.0.7.0
*/
public static final String PR_MULTI_INSTANCE = "MULTI_INSTANCE";
public static PluginManagerDefaults
getDefaults()
{
return( PluginManagerDefaultsImpl.getSingleton());
}
/**
* Runs Azureus
* @param ui_type Type of user interface to provide. See UI_* Constants
* @param properties A list of properties to pass Azureus. See PR_* constants.
*
* @since 2.0.6.0
*/
public static PluginManager
startAzureus(
int ui_type,
Properties properties )
{
return( PluginManagerImpl.startAzureus( ui_type, properties ));
}
/**
* Shuts down Azureus
* @throws PluginException
*
* @since 2.0.8.0
*/
public static void
stopAzureus()
throws PluginException
{
PluginManagerImpl.stopAzureus();
}
/**
* restarts azureus and performs any Update actions defined via the plugin "update"
* interface. Currently only works for SWT UIs.
* @throws PluginException
*
* @since 2.1.0.0
*/
public static void
restartAzureus()
throws PluginException
{
PluginManagerImpl.restartAzureus();
}
/**
* Programatic plugin registration interface
* @param plugin_class this must implement Plugin
*
* @since 2.0.6.0
*/
public static void
registerPlugin(
Class plugin_class )
{
PluginManagerImpl.registerPlugin( plugin_class );
}
public static void
registerPlugin(
Plugin plugin,
String id )
{
PluginManagerImpl.registerPlugin( plugin, id );
}
/**
* returns the plugin interface with a given id, or null if not found
* @param id
* @return
*
* @since 2.1.0.0
*/
public abstract PluginInterface
getPluginInterfaceByID(
String id );
/**
*
* @since 2.1.0.0
*/
public abstract PluginInterface
getPluginInterfaceByClass(
String class_name );
public abstract PluginInterface
getPluginInterfaceByClass(
Class c );
/**
* Gets the current set of registered plugins. During initialisation this will probably give partial
* results as plugin initialisation is non-deterministic.
* @return
*
* @since 2.1.0.0
*/
public abstract PluginInterface[]
getPluginInterfaces();
/**
* returns the default plugin interface that can be used to access plugin functionality without an
* explicit plugin
* @return null if unavailable
*/
public abstract PluginInterface
getDefaultPluginInterface();
/**
* Gets the current set of registered plugins. During initialisation this will probably give partial
* results as plugin initialisation is non-deterministic.
* @return
*
* @since 2.1.0.0
*/
public abstract PluginInterface[]
getPlugins();
public abstract void
firePluginEvent(
int event_type );
public abstract PluginInstaller
getPluginInstaller();
/**
*
*/
public abstract void refreshPluginList();
public abstract boolean
isSilentRestartEnabled();
}