mirror of
https://github.com/DanilaFe/abacus
synced 2024-12-23 07:50:09 -08:00
Write disabled / enabled plugins to the configuration.
This commit is contained in:
parent
27ffa4c78f
commit
8ae9b2fcbd
|
@ -6,7 +6,6 @@ import com.moandjiezana.toml.TomlWriter;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
@ -100,29 +99,4 @@ public class Configuration {
|
||||||
return disabledPlugins;
|
return disabledPlugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds the given plugin to the disabled plugins list.
|
|
||||||
* @param pluginClass the plugin to disable.
|
|
||||||
*/
|
|
||||||
public void disablePlugin(String pluginClass){
|
|
||||||
disabledPlugins.add(pluginClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes the given plugin from the disabled plugins list.
|
|
||||||
* @param pluginClass the plugin to enable.
|
|
||||||
*/
|
|
||||||
public void enablePlugin(String pluginClass){
|
|
||||||
disabledPlugins.remove(pluginClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the disabled plugins to be as specified.
|
|
||||||
* @param newDisabled the new list of disabled plugins.
|
|
||||||
*/
|
|
||||||
public void setDisabledPlugins(Collection<String> newDisabled){
|
|
||||||
disabledPlugins.clear();
|
|
||||||
disabledPlugins.addAll(newDisabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,9 +9,12 @@ import javafx.scene.text.Text;
|
||||||
import javafx.util.Callback;
|
import javafx.util.Callback;
|
||||||
import javafx.util.StringConverter;
|
import javafx.util.StringConverter;
|
||||||
import org.nwapw.abacus.Abacus;
|
import org.nwapw.abacus.Abacus;
|
||||||
|
import org.nwapw.abacus.config.Configuration;
|
||||||
import org.nwapw.abacus.number.NumberInterface;
|
import org.nwapw.abacus.number.NumberInterface;
|
||||||
import org.nwapw.abacus.tree.TreeNode;
|
import org.nwapw.abacus.tree.TreeNode;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The controller for the abacus FX UI, responsible
|
* The controller for the abacus FX UI, responsible
|
||||||
|
@ -106,10 +109,16 @@ public class AbacusController {
|
||||||
outputColumn.setCellValueFactory(cell -> cell.getValue().outputProperty());
|
outputColumn.setCellValueFactory(cell -> cell.getValue().outputProperty());
|
||||||
|
|
||||||
abacus = new Abacus();
|
abacus = new Abacus();
|
||||||
|
Configuration configuration = abacus.getConfiguration();
|
||||||
|
Set<String> disabledPlugins = configuration.getDisabledPlugins();
|
||||||
numberImplementationOptions.addAll(abacus.getPluginManager().getAllNumbers());
|
numberImplementationOptions.addAll(abacus.getPluginManager().getAllNumbers());
|
||||||
String actualImplementation = abacus.getConfiguration().getNumberImplementation();
|
String actualImplementation = configuration.getNumberImplementation();
|
||||||
String toSelect = (numberImplementationOptions.contains(actualImplementation)) ? actualImplementation : "naive";
|
String toSelect = (numberImplementationOptions.contains(actualImplementation)) ? actualImplementation : "naive";
|
||||||
numberImplementationBox.getSelectionModel().select(toSelect);
|
numberImplementationBox.getSelectionModel().select(toSelect);
|
||||||
|
for(Class<?> pluginClass : abacus.getPluginManager().getLoadedPluginClasses()){
|
||||||
|
String fullName = pluginClass.getName();
|
||||||
|
enabledPlugins.add(new ToggleablePlugin(!disabledPlugins.contains(fullName), fullName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
|
@ -134,4 +143,16 @@ public class AbacusController {
|
||||||
inputField.setText("");
|
inputField.setText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void performReload(){
|
||||||
|
Configuration configuration = abacus.getConfiguration();
|
||||||
|
Set<String> disabledPlugins = configuration.getDisabledPlugins();
|
||||||
|
disabledPlugins.clear();
|
||||||
|
for(ToggleablePlugin pluginEntry : enabledPlugins){
|
||||||
|
if(!pluginEntry.isEnabled()) disabledPlugins.add(pluginEntry.getClassName());
|
||||||
|
}
|
||||||
|
abacus.getPluginManager().reload();
|
||||||
|
abacus.getConfiguration().saveTo(Abacus.CONFIG_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,7 +185,7 @@ public class PluginManager {
|
||||||
*/
|
*/
|
||||||
public void reload() {
|
public void reload() {
|
||||||
unload();
|
unload();
|
||||||
reload();
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -233,4 +233,12 @@ public class PluginManager {
|
||||||
listeners.remove(listener);
|
listeners.remove(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a list of all the plugin class files that have been
|
||||||
|
* added to the plugin manager.
|
||||||
|
* @return the list of all the added plugin classes.
|
||||||
|
*/
|
||||||
|
public Set<Class<?>> getLoadedPluginClasses() {
|
||||||
|
return loadedPluginClasses;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,8 @@
|
||||||
<ListView fx:id="enabledPluginView"
|
<ListView fx:id="enabledPluginView"
|
||||||
GridPane.rowIndex="1" GridPane.columnIndex="0"
|
GridPane.rowIndex="1" GridPane.columnIndex="0"
|
||||||
GridPane.columnSpan="2" maxHeight="100"/>
|
GridPane.columnSpan="2" maxHeight="100"/>
|
||||||
<Button fx:id="reloadButton" text="Reload" GridPane.rowIndex="2" GridPane.columnIndex="0"/>
|
<Button fx:id="reloadButton" text="Reload" GridPane.rowIndex="2" GridPane.columnIndex="0"
|
||||||
|
onAction="#performReload"/>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
</Tab>
|
</Tab>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user