diff --git a/modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectControllerImpl.java b/modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectControllerImpl.java index ca4fd6e5f14989c3f45da46aa3d3b43aad9b34fc..f4d1bedf6da881f10d3168723ecc32f5861023a3 100644 --- a/modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectControllerImpl.java +++ b/modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectControllerImpl.java @@ -63,6 +63,7 @@ import org.gephi.project.io.DuplicateTask; import org.gephi.project.io.LoadTask; import org.gephi.project.io.SaveTask; import org.gephi.utils.longtask.api.LongTaskExecutor; +import org.openide.util.Exceptions; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; @@ -453,7 +454,13 @@ public class ProjectControllerImpl implements ProjectController { listeners = new ArrayList<>(projectListeners); listeners.addAll(Lookup.getDefault().lookupAll(ProjectListener.class)); } - listeners.forEach(consumer); + for (ProjectListener listener : listeners) { + try { + consumer.accept(listener); + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + } } private void fireWorkspaceEvent(EventType event, Workspace workspace) { @@ -463,22 +470,26 @@ public class ProjectControllerImpl implements ProjectController { listeners.addAll(Lookup.getDefault().lookupAll(WorkspaceListener.class)); } for (WorkspaceListener wl : listeners) { - switch (event) { - case INITIALIZE: - wl.initialize(workspace); - break; - case SELECT: - wl.select(workspace); - break; - case UNSELECT: - wl.unselect(workspace); - break; - case CLOSE: - wl.close(workspace); - break; - case DISABLE: - wl.disable(); - break; + try { + switch (event) { + case INITIALIZE: + wl.initialize(workspace); + break; + case SELECT: + wl.select(workspace); + break; + case UNSELECT: + wl.unselect(workspace); + break; + case CLOSE: + wl.close(workspace); + break; + case DISABLE: + wl.disable(); + break; + } + } catch (Exception e) { + Exceptions.printStackTrace(e); } } } diff --git a/modules/ToolsPlugin/src/main/java/org/gephi/ui/tools/plugin/edit/EditToolTopComponent.java b/modules/ToolsPlugin/src/main/java/org/gephi/ui/tools/plugin/edit/EditToolTopComponent.java index 41fae0f745cb1aa4530829c8c7879fef27844833..5b2cd3bfc249182de63568a590efbd437c9e931c 100644 --- a/modules/ToolsPlugin/src/main/java/org/gephi/ui/tools/plugin/edit/EditToolTopComponent.java +++ b/modules/ToolsPlugin/src/main/java/org/gephi/ui/tools/plugin/edit/EditToolTopComponent.java @@ -42,6 +42,7 @@ Portions Copyrighted 2011 Gephi Consortium. package org.gephi.ui.tools.plugin.edit; +import javax.swing.SwingUtilities; import org.gephi.graph.api.Edge; import org.gephi.graph.api.Node; import org.gephi.project.api.ProjectController; @@ -81,7 +82,9 @@ public final class EditToolTopComponent extends TopComponent { @Override public void select(Workspace workspace) { - propertySheet.setEnabled(true); + SwingUtilities.invokeLater(() -> { + propertySheet.setEnabled(true); + }); } @Override @@ -95,8 +98,10 @@ public final class EditToolTopComponent extends TopComponent { @Override public void disable() { - propertySheet.setEnabled(false); - EditToolTopComponent.this.close(); + SwingUtilities.invokeLater(() -> { + propertySheet.setEnabled(false); + EditToolTopComponent.this.close(); + }); } }); }