mirror of
https://github.com/DanilaFe/abacus
synced 2024-12-23 16:00:09 -08:00
Rename load to onLoad and add onDisable to plugin.
This commit is contained in:
parent
7d822a3e77
commit
f29fea6106
|
@ -28,6 +28,10 @@ public abstract class Plugin {
|
||||||
* not inside this package,
|
* not inside this package,
|
||||||
*/
|
*/
|
||||||
private PluginManager manager;
|
private PluginManager manager;
|
||||||
|
/**
|
||||||
|
* Whether this plugin has been loaded.
|
||||||
|
*/
|
||||||
|
private boolean enabled;
|
||||||
|
|
||||||
private Plugin(){ }
|
private Plugin(){ }
|
||||||
|
|
||||||
|
@ -38,6 +42,8 @@ public abstract class Plugin {
|
||||||
public Plugin(PluginManager manager) {
|
public Plugin(PluginManager manager) {
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
functions = new HashMap<>();
|
functions = new HashMap<>();
|
||||||
|
operators = new HashMap<>();
|
||||||
|
enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,6 +80,28 @@ public abstract class Plugin {
|
||||||
return operators.get(operatorName);
|
return operators.get(operatorName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables the function, loading the necessary instances
|
||||||
|
* of functions.
|
||||||
|
*/
|
||||||
|
public final void enable(){
|
||||||
|
if(enabled) return;
|
||||||
|
onEnable();
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disables the plugin, clearing loaded data store by default
|
||||||
|
* and calling its disable() method.
|
||||||
|
*/
|
||||||
|
public final void disable(){
|
||||||
|
if(!enabled) return;
|
||||||
|
onDisable();
|
||||||
|
functions.clear();
|
||||||
|
operators.clear();
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To be used in load(). Registers a function abstract class with the
|
* To be used in load(). Registers a function abstract class with the
|
||||||
* plugin internally, which makes it accessible to the plugin manager.
|
* plugin internally, which makes it accessible to the plugin manager.
|
||||||
|
@ -132,6 +160,12 @@ public abstract class Plugin {
|
||||||
* are supposed to register the functions they provide and do any other
|
* are supposed to register the functions they provide and do any other
|
||||||
* necessary setup.
|
* necessary setup.
|
||||||
*/
|
*/
|
||||||
public abstract void load();
|
public abstract void onEnable();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract method overridden by the plugin implementation, in which the plugins
|
||||||
|
* are supposed to dispose of loaded functions, operators, and macros.
|
||||||
|
*/
|
||||||
|
public abstract void onDisable();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,18 @@ public class PluginManager {
|
||||||
* that is, found in a plugin and returned.
|
* that is, found in a plugin and returned.
|
||||||
*/
|
*/
|
||||||
private HashMap<String, Operator> cachedOperators;
|
private HashMap<String, Operator> cachedOperators;
|
||||||
|
/**
|
||||||
|
* List of all functions loaded by the plugins.
|
||||||
|
*/
|
||||||
|
private HashSet<String> allFunctions;
|
||||||
|
/**
|
||||||
|
* List of all operators loaded by the plugins.
|
||||||
|
*/
|
||||||
|
private HashSet<String> allOperators;
|
||||||
|
/**
|
||||||
|
* The list of plugin listeners attached to this instance.
|
||||||
|
*/
|
||||||
|
private HashSet<PluginListener> listeners;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new plugin manager.
|
* Creates a new plugin manager.
|
||||||
|
@ -34,6 +46,8 @@ public class PluginManager {
|
||||||
plugins = new ArrayList<>();
|
plugins = new ArrayList<>();
|
||||||
cachedFunctions = new HashMap<>();
|
cachedFunctions = new HashMap<>();
|
||||||
cachedOperators = new HashMap<>();
|
cachedOperators = new HashMap<>();
|
||||||
|
allFunctions = new HashSet<>();
|
||||||
|
allOperators = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -89,9 +103,6 @@ public class PluginManager {
|
||||||
* @param plugin the plugin to add.
|
* @param plugin the plugin to add.
|
||||||
*/
|
*/
|
||||||
public void addInstantiated(Plugin plugin){
|
public void addInstantiated(Plugin plugin){
|
||||||
plugin.load();
|
|
||||||
cachedFunctions.clear();
|
|
||||||
cachedOperators.clear();
|
|
||||||
plugins.add(plugin);
|
plugins.add(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,4 +120,47 @@ public class PluginManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads all the plugins in the PluginManager.
|
||||||
|
*/
|
||||||
|
public void load(){
|
||||||
|
for(Plugin plugin : plugins) plugin.enable();
|
||||||
|
for(Plugin plugin : plugins){
|
||||||
|
allFunctions.addAll(plugin.providedFunctions());
|
||||||
|
allOperators.addAll(plugin.providedOperators());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unloads all the plugins in the PluginManager.
|
||||||
|
*/
|
||||||
|
public void unload(){
|
||||||
|
for(Plugin plugin : plugins) plugin.disable();
|
||||||
|
allFunctions.clear();
|
||||||
|
allOperators.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reloads all the plugins in the PluginManager.
|
||||||
|
*/
|
||||||
|
public void reload(){
|
||||||
|
unload();
|
||||||
|
reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all the functions loaded by the Plugin Manager.
|
||||||
|
* @return the set of all functions that were loaded.
|
||||||
|
*/
|
||||||
|
public HashSet<String> getAllFunctions() {
|
||||||
|
return allFunctions;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all the operators loaded by the Plugin Manager.
|
||||||
|
* @return the set of all operators that were loaded.
|
||||||
|
*/
|
||||||
|
public HashSet<String> getAllOperators() {
|
||||||
|
return allOperators;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class StandardPlugin extends Plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load() {
|
public void onEnable() {
|
||||||
registerFunction("+", new Function() {
|
registerFunction("+", new Function() {
|
||||||
@Override
|
@Override
|
||||||
protected boolean matchesParams(NumberInterface[] params) {
|
protected boolean matchesParams(NumberInterface[] params) {
|
||||||
|
@ -108,6 +108,11 @@ public class StandardPlugin extends Plugin {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisable() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the nth term of the Taylor series (centered at 0) of e^x
|
* Returns the nth term of the Taylor series (centered at 0) of e^x
|
||||||
* @param n the term required (n >= 0).
|
* @param n the term required (n >= 0).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user