}
if (!deleteList.isEmpty()) {
log("Plugins delete: "+deleteList);
}
final ReadLocalPluginInformationTask task = new ReadLocalPluginInformationTask();
Runnable r = new Runnable() {
@Override
public void run() {
if (task.isCanceled()) return;
synchronized (CustomConfigurator.class) {
try { // proceed only after all other tasks were finished
while (busy) CustomConfigurator.class.wait();
} catch (InterruptedException ex) {
Main.warn("InterruptedException while reading local plugin information");
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
List<PluginInformation> availablePlugins = task.getAvailablePlugins();
List<PluginInformation> toInstallPlugins = new ArrayList<>();
List<PluginInformation> toRemovePlugins = new ArrayList<>();
List<PluginInformation> toDeletePlugins = new ArrayList<>();
for (PluginInformation pi: availablePlugins) {
String name = pi.name.toLowerCase();