diff --git a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java index ae9441762fd5..4202df86dd97 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java +++ b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java @@ -193,7 +193,7 @@ public final class AndroidDesignerEditorPanel extends DesignerEditorPanel { } catch (RuntimeException e) { myPSIChangeListener.clear(); - showError("Parsing error", e.getCause()); + showError("Parsing error", e.getCause() == null ? e : e.getCause()); } } @@ -289,7 +289,7 @@ public final class AndroidDesignerEditorPanel extends DesignerEditorPanel { RenderUtil.renderLayout(myModule, layoutXmlText, myFile, null, target, facet, config, xdpi, ydpi, theme, 10000, true); if (ApplicationManagerEx.getApplicationEx().isInternal()) { - System.out.println("Render time: " + (System.currentTimeMillis() - time)); + System.out.println("Render time: " + (System.currentTimeMillis() - time)); // XXX } if (result == null) { @@ -303,8 +303,10 @@ public final class AndroidDesignerEditorPanel extends DesignerEditorPanel { @Override public void run() { try { - hideProgress(); - runnable.run(); + if (!getProject().isDisposed()) { + hideProgress(); + runnable.run(); + } } catch (Throwable e) { myPSIChangeListener.clear(); diff --git a/plugins/android-designer/src/com/intellij/android/designer/designSurface/ExternalPSIChangeListener.java b/plugins/android-designer/src/com/intellij/android/designer/designSurface/ExternalPSIChangeListener.java index 65bf00b1fd07..12ff7e639f9b 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/designSurface/ExternalPSIChangeListener.java +++ b/plugins/android-designer/src/com/intellij/android/designer/designSurface/ExternalPSIChangeListener.java @@ -54,14 +54,14 @@ public class ExternalPSIChangeListener extends PsiTreeChangeAdapter { public void start() { if (!myRunState) { myRunState = true; - PsiManager.getInstance(myFile.getProject()).addPsiTreeChangeListener(this); + PsiManager.getInstance(myDesigner.getProject()).addPsiTreeChangeListener(this); } } public void stop() { if (myRunState) { myRunState = false; - PsiManager.getInstance(myFile.getProject()).removePsiTreeChangeListener(this); + PsiManager.getInstance(myDesigner.getProject()).removePsiTreeChangeListener(this); clear(); } } @@ -107,7 +107,7 @@ public class ExternalPSIChangeListener extends PsiTreeChangeAdapter { myAlarm.addRequest(new Runnable() { @Override public void run() { - if (myRunState && myInitialize) { + if (myRunState && myInitialize && !myDesigner.getProject().isDisposed()) { runnable.run(); } } diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java index 866cb0ab577a..9d4abf1af184 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java @@ -316,6 +316,10 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider } public final void showError(@NotNull String message, @NotNull Throwable e) { + if (getProject().isDisposed()) { + return; + } + while (e instanceof InvocationTargetException) { if (e.getCause() == null) { break;