diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index 4cb54acf4a6b..535a36da14d5 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -430,22 +430,26 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext return buffer.toString(); } - public PsiComment findExistingDocComment(final PsiComment _element) { - PsiElement parentElement = _element.getParent(); - - return parentElement instanceof PsiDocCommentOwner ? ((PsiDocCommentOwner)parentElement).getDocComment() : null; + public PsiComment findExistingDocComment(final PsiComment comment) { + if (comment instanceof PsiDocComment) { + final PsiDocCommentOwner owner = ((PsiDocComment)comment).getOwner(); + if (owner != null) { + return owner.getDocComment(); + } + } + return null; } - public String generateDocumentationContentStub(PsiComment _element) { - PsiElement parentElement = _element.getParent(); - final Project project = _element.getProject(); + public String generateDocumentationContentStub(PsiComment _comment) { + final PsiDocCommentOwner commentOwner = ((PsiDocComment)_comment).getOwner(); + final Project project = commentOwner.getProject(); final StringBuilder builder = StringBuilderSpinAllocator.alloc(); try { - if (parentElement instanceof PsiMethod) { - PsiMethod psiMethod = (PsiMethod)parentElement; + final CodeDocumentationAwareCommenter commenter = (CodeDocumentationAwareCommenter)LanguageCommenters.INSTANCE + .forLanguage(commentOwner.getLanguage()); + if (commentOwner instanceof PsiMethod) { + PsiMethod psiMethod = (PsiMethod)commentOwner; final PsiParameter[] parameters = psiMethod.getParameterList().getParameters(); - final CodeDocumentationAwareCommenter commenter = (CodeDocumentationAwareCommenter)LanguageCommenters.INSTANCE - .forLanguage(parentElement.getLanguage()); final Map param2Description = new HashMap(); final PsiMethod[] superMethods = psiMethod.findSuperMethods(); for (PsiMethod superMethod : superMethods) { @@ -499,11 +503,9 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext builder.append(LINE_SEPARATOR); } } - else if (parentElement instanceof PsiClass) { - final PsiTypeParameterList typeParameterList = ((PsiClass)parentElement).getTypeParameterList(); + else if (commentOwner instanceof PsiClass) { + final PsiTypeParameterList typeParameterList = ((PsiClass)commentOwner).getTypeParameterList(); if (typeParameterList != null) { - final CodeDocumentationAwareCommenter commenter = (CodeDocumentationAwareCommenter)LanguageCommenters.INSTANCE - .forLanguage(parentElement.getLanguage()); createTypeParamsListComment(builder, project, commenter, typeParameterList); } } diff --git a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsDocCommentImpl.java b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsDocCommentImpl.java index c8b345eb626e..cc5d98a28476 100644 --- a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsDocCommentImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsDocCommentImpl.java @@ -15,7 +15,6 @@ */ package com.intellij.psi.impl.compiled; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.JavaDocElementType; import com.intellij.psi.impl.source.tree.TreeElement; @@ -26,12 +25,10 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; class ClsDocCommentImpl extends ClsElementImpl implements PsiDocComment, JavaTokenType, PsiJavaToken { - private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.compiled.ClsDocCommentImpl"); - - private final ClsElementImpl myParent; + private final PsiDocCommentOwner myParent; private final PsiDocTag[] myTags; - ClsDocCommentImpl(ClsElementImpl parent) { + ClsDocCommentImpl(PsiDocCommentOwner parent) { myParent = parent; PsiDocTag[] tags = new PsiDocTag[1]; @@ -63,10 +60,16 @@ class ClsDocCommentImpl extends ClsElementImpl implements PsiDocComment, JavaTok return myParent; } + public PsiDocCommentOwner getOwner() { + return myParent; + } + + @NotNull public PsiElement[] getDescriptionElements() { return EMPTY_ARRAY; } + @NotNull public PsiDocTag[] getTags() { return myTags; } @@ -76,6 +79,7 @@ class ClsDocCommentImpl extends ClsElementImpl implements PsiDocComment, JavaTok return getTags()[0]; } + @NotNull public PsiDocTag[] findTagsByName(@NonNls String name) { if (!name.equals("deprecated")) return PsiDocTag.EMPTY_ARRAY; return getTags(); diff --git a/java/java-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocCommentImpl.java b/java/java-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocCommentImpl.java index 3da36a9530bc..a061625051c5 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocCommentImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocCommentImpl.java @@ -18,10 +18,7 @@ package com.intellij.psi.impl.source.javadoc; import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; -import com.intellij.psi.JavaElementVisitor; -import com.intellij.psi.JavaTokenType; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.psi.impl.source.Constants; import com.intellij.psi.impl.source.PsiElementArrayConstructor; @@ -57,18 +54,32 @@ public class PsiDocCommentImpl extends LazyParseablePsiElement implements PsiDoc super(JavaDocElementType.DOC_COMMENT, text); } + public PsiDocCommentOwner getOwner() { + final PsiElement parent = getParent(); + if (parent instanceof PsiDocCommentOwner) { + final PsiDocCommentOwner owner = (PsiDocCommentOwner)parent; + if (owner.getDocComment() == this) { + return owner; + } + } + + return null; + } + + @NotNull public PsiElement[] getDescriptionElements() { - ArrayList array = new ArrayList(); + ArrayList array = new ArrayList(); for (ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()) { IElementType i = child.getElementType(); if (i == DOC_TAG) break; if (i != DOC_COMMENT_START && i != DOC_COMMENT_END && i != DOC_COMMENT_LEADING_ASTERISKS) { - array.add(child); + array.add(child.getPsi()); } } return array.toArray(new PsiElement[array.size()]); } + @NotNull public PsiDocTag[] getTags() { return getChildrenAsPsiElements(TAG_BIT_SET, PSI_TAG_ARRAY_CONSTRUCTOR); } @@ -92,6 +103,7 @@ public class PsiDocCommentImpl extends LazyParseablePsiElement implements PsiDoc return null; } + @NotNull public PsiDocTag[] findTagsByName(String name) { ArrayList array = new ArrayList(); PsiDocTag[] tags = getTags(); diff --git a/java/jsp-spi/src/com/intellij/psi/impl/source/jsp/JspManager.java b/java/jsp-spi/src/com/intellij/psi/impl/source/jsp/JspManager.java index 14e8472811fc..4d8e88f29b2b 100644 --- a/java/jsp-spi/src/com/intellij/psi/impl/source/jsp/JspManager.java +++ b/java/jsp-spi/src/com/intellij/psi/impl/source/jsp/JspManager.java @@ -40,8 +40,6 @@ import java.util.Set; */ public abstract class JspManager implements IBaseJspManager { - public static final Key DIRECTORIES_KEY = Key.create("TagDirOriginalDirs"); - public static JspManager getInstance(@NotNull Project project) { return ServiceManager.getService(project, JspManager.class); } diff --git a/java/openapi/src/com/intellij/psi/javadoc/PsiDocComment.java b/java/openapi/src/com/intellij/psi/javadoc/PsiDocComment.java index 7710a8530059..83132393c6f8 100644 --- a/java/openapi/src/com/intellij/psi/javadoc/PsiDocComment.java +++ b/java/openapi/src/com/intellij/psi/javadoc/PsiDocComment.java @@ -16,13 +16,25 @@ package com.intellij.psi.javadoc; import com.intellij.psi.PsiComment; +import com.intellij.psi.PsiDocCommentOwner; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface PsiDocComment extends PsiComment { + @Nullable + PsiDocCommentOwner getOwner(); + + @NotNull PsiElement[] getDescriptionElements(); + + @NotNull PsiDocTag[] getTags(); + @Nullable PsiDocTag findTagByName(@NonNls String name); + + @NotNull PsiDocTag[] findTagsByName(@NonNls String name); } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java index d1a884083fc8..46ed4d5f7801 100644 --- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/OptionTreeWithPreviewPanel.java @@ -15,27 +15,14 @@ */ package com.intellij.application.options.codeStyle; -import com.intellij.application.options.CodeStyleAbstractPanel; -import com.intellij.ide.DataManager; -import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.editor.colors.EditorColorsScheme; -import com.intellij.openapi.editor.highlighter.EditorHighlighter; -import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.fileTypes.LanguageFileType; -import com.intellij.openapi.fileTypes.StdFileTypes; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.treeStructure.Tree; import com.intellij.util.containers.HashMap; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.tree.*; @@ -46,7 +33,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.lang.reflect.Field; import java.util.ArrayList; -import java.util.Arrays; /** * @author max @@ -54,8 +40,8 @@ import java.util.Arrays; public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleAbstractPanel { private static final Logger LOG = Logger.getInstance("#com.intellij.application.options.CodeStyleSpacesPanel"); private final JTree myOptionsTree; - private final HashMap myKeyToFieldMap = new HashMap(); - private final ArrayList myKeys = new ArrayList(); + private final HashMap myKeyToFieldMap = new HashMap(); + private final ArrayList myKeys = new ArrayList(); private final JPanel myPanel = new JPanel(new GridBagLayout()); public OptionTreeWithPreviewPanel(CodeStyleSettings settings) { @@ -84,32 +70,14 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(); String groupName = ""; DefaultMutableTreeNode groupNode = null; - for (int i = 0; i < myKeys.size(); i++) { - if (myKeys.get(i) instanceof BooleanOptionKey) { - BooleanOptionKey key = (BooleanOptionKey)myKeys.get(i); - String newGroupName = key.groupName; - if (!newGroupName.equals(groupName) || groupNode == null) { - groupName = newGroupName; - groupNode = new DefaultMutableTreeNode(newGroupName); - rootNode.add(groupNode); - } - groupNode.add(new MyToggleTreeNode(key, key.cbName)); - } - else if (myKeys.get(i) instanceof IntSelectionOptionKey) { - IntSelectionOptionKey key = (IntSelectionOptionKey)myKeys.get(i); - String newGroupName = key.groupName; - if (!newGroupName.equals(groupName) || groupNode == null) { - groupName = newGroupName; - groupNode = new DefaultMutableTreeNode(newGroupName); - rootNode.add(groupNode); - } - MyToggleTreeNode[] nodes = new MyToggleTreeNode[key.rbNames.length]; - for (int j = 0; j < nodes.length; j++) { - nodes[j] = new MyToggleTreeNode(key, key.rbNames[j]); - groupNode.add(nodes[j]); - } - key.setCreatedNodes(nodes); + for (BooleanOptionKey key: myKeys) { + String newGroupName = key.groupName; + if (!newGroupName.equals(groupName) || groupNode == null) { + groupName = newGroupName; + groupNode = new DefaultMutableTreeNode(newGroupName); + rootNode.add(groupNode); } + groupNode.add(new MyToggleTreeNode(key, key.cbName)); } DefaultTreeModel model = new DefaultTreeModel(rootNode); @@ -156,19 +124,7 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA Object o = treePath.getLastPathComponent(); if (o instanceof MyToggleTreeNode) { MyToggleTreeNode node = (MyToggleTreeNode)o; - if (node.isCheckbox()) { - node.setSelected(!node.isSelected()); - } - else { - MyToggleTreeNode[] group = node.getGroup(); - for (int i = 0; i < group.length; i++) { - MyToggleTreeNode groupNode = group[i]; - groupNode.setSelected(false); - int row = myOptionsTree.getRowForPath(new TreePath(groupNode.getPath())); - myOptionsTree.repaint(myOptionsTree.getRowBounds(row)); - } - node.setSelected(true); - } + node.setSelected(!node.isSelected()); int row = myOptionsTree.getRowForPath(treePath); myOptionsTree.repaint(myOptionsTree.getRowBounds(row)); //updatePreview(); @@ -201,21 +157,9 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA private void resetMyTreeNode(MyToggleTreeNode childNode, final CodeStyleSettings settings) { try { - if (childNode.getKey() instanceof BooleanOptionKey) { - BooleanOptionKey key = (BooleanOptionKey)childNode.getKey(); - Field field = (Field)myKeyToFieldMap.get(key); - childNode.setSelected(field.getBoolean(settings)); - } - else if (childNode.getKey() instanceof IntSelectionOptionKey) { - IntSelectionOptionKey key = (IntSelectionOptionKey)childNode.getKey(); - Field field = (Field)myKeyToFieldMap.get(key); - int fieldValue = field.getInt(settings); - for (int i = 0; i < key.rbNames.length; i++) { - if (childNode.getText().equals(key.rbNames[i])) { - childNode.setSelected(fieldValue == key.values[i]); - } - } - } + BooleanOptionKey key = (BooleanOptionKey)childNode.getKey(); + Field field = myKeyToFieldMap.get(key); + childNode.setSelected(field.getBoolean(settings)); } catch (IllegalArgumentException e) { LOG.error(e); @@ -244,22 +188,9 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA private void applyToggleNode(MyToggleTreeNode childNode, final CodeStyleSettings settings) { try { - if (childNode.getKey() instanceof BooleanOptionKey) { - BooleanOptionKey key = (BooleanOptionKey)childNode.getKey(); - Field field = (Field)myKeyToFieldMap.get(key); - field.set(settings, childNode.isSelected() ? Boolean.TRUE : Boolean.FALSE); - } - else if (childNode.getKey() instanceof IntSelectionOptionKey) { - if (!childNode.isSelected()) return; - IntSelectionOptionKey key = (IntSelectionOptionKey)childNode.getKey(); - Field field = (Field)myKeyToFieldMap.get(key); - for (int i = 0; i < key.rbNames.length; i++) { - if (childNode.getText().equals(key.rbNames[i])) { - field.set(settings, new Integer(key.values[i])); - break; - } - } - } + BooleanOptionKey key = (BooleanOptionKey)childNode.getKey(); + Field field = myKeyToFieldMap.get(key); + field.set(settings, childNode.isSelected() ? Boolean.TRUE : Boolean.FALSE); } catch (IllegalArgumentException e) { LOG.error(e); @@ -296,21 +227,9 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA private boolean isToggleNodeModified(MyToggleTreeNode childNode, final CodeStyleSettings settings) { try { - if (childNode.getKey() instanceof BooleanOptionKey) { - BooleanOptionKey key = (BooleanOptionKey)childNode.getKey(); - Field field = (Field)myKeyToFieldMap.get(key); - return childNode.isSelected() != field.getBoolean(settings); - } - else if (childNode.getKey() instanceof IntSelectionOptionKey) { - if (!childNode.isSelected()) return false; - IntSelectionOptionKey key = (IntSelectionOptionKey)childNode.getKey(); - Field field = (Field)myKeyToFieldMap.get(key); - for (int i = 0; i < key.rbNames.length; i++) { - if (childNode.getText().equals(key.rbNames[i])) { - return field.getInt(settings) != key.values[i]; - } - } - } + BooleanOptionKey key = (BooleanOptionKey)childNode.getKey(); + Field field = myKeyToFieldMap.get(key); + return childNode.isSelected() != field.getBoolean(settings); } catch (IllegalArgumentException e) { LOG.error(e); @@ -335,20 +254,6 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA } } - protected void initRadioGroupField(String fieldName, String groupName, String[] rbNames, int[] values) { - try { - Class styleSettingsClass = CodeStyleSettings.class; - Field field = styleSettingsClass.getField(fieldName); - IntSelectionOptionKey key = new IntSelectionOptionKey(groupName, rbNames, values); - myKeyToFieldMap.put(key, field); - myKeys.add(key); - } - catch (NoSuchFieldException e) { - } - catch (SecurityException e) { - } - } - protected void prepareForReformat(final PsiFile psiFile) { //psiFile.putUserData(PsiUtil.FILE_LANGUAGE_LEVEL_KEY, LanguageLevel.HIGHEST); } @@ -356,12 +261,10 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA protected class MyTreeCellRenderer implements TreeCellRenderer { private final MyLabelPanel myLabel; private final JCheckBox myCheckBox; - private final JRadioButton myRadioButton; public MyTreeCellRenderer() { myLabel = new MyLabelPanel(); myCheckBox = new JCheckBox(); - myRadioButton = new JRadioButton(); myCheckBox.setMargin(new Insets(0, 0, 0, 0)); } @@ -370,7 +273,7 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA if (value instanceof MyToggleTreeNode) { MyToggleTreeNode treeNode = (MyToggleTreeNode)value; - JToggleButton button = treeNode.isCheckbox() ? (JToggleButton)myCheckBox : (JToggleButton)myRadioButton; + JToggleButton button = myCheckBox; button.setText(treeNode.getText()); button.setSelected(treeNode.isSelected); if (isSelected) { @@ -473,64 +376,23 @@ public abstract class OptionTreeWithPreviewPanel extends MultilanguageCodeStyleA } } - private static class IntSelectionOptionKey { - final String groupName; - final String[] rbNames; - final int[] values; - private MyToggleTreeNode[] myNodes; - - public IntSelectionOptionKey(String groupName, String[] rbNames, int[] values) { - this.groupName = groupName; - this.rbNames = rbNames; - this.values = values; - } - - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof IntSelectionOptionKey)) return false; - - final IntSelectionOptionKey intSelectionOptionKey = (IntSelectionOptionKey)o; - - if (!groupName.equals(intSelectionOptionKey.groupName)) return false; - if (!Arrays.equals(rbNames, intSelectionOptionKey.rbNames)) return false; - - return true; - } - - public int hashCode() { - return groupName.hashCode() + rbNames[0].hashCode() * 29; - } - - public void setCreatedNodes(MyToggleTreeNode[] nodes) { myNodes = nodes; } - - public MyToggleTreeNode[] getNodes() { return myNodes; } - } - private static class MyToggleTreeNode extends DefaultMutableTreeNode { private final Object myKey; private final String myText; private boolean isSelected; - private final boolean isCheckbox; public MyToggleTreeNode(Object key, String text) { myKey = key; myText = text; - isCheckbox = true; } public Object getKey() { return myKey; } public String getText() { return myText; } - public boolean isCheckbox() { return isCheckbox; } - public void setSelected(boolean val) { isSelected = val; } public boolean isSelected() { return isSelected; } - - public MyToggleTreeNode[] getGroup() { - return ((IntSelectionOptionKey)myKey).getNodes(); - } } public JComponent getInternalPanel() { diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index 1ac5c1f664e8..5ad9423a6169 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -642,7 +642,7 @@ public class ContainerUtil { return result; } - public static List mapNotNull(T[] array, Function mapping) { + public static List mapNotNull(@NotNull T[] array, Function mapping) { return mapNotNull(Arrays.asList(array), mapping); } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/groovydoc/psi/impl/GrDocCommentImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/groovydoc/psi/impl/GrDocCommentImpl.java index a71b2b1342b0..a7507ea5b86b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/groovydoc/psi/impl/GrDocCommentImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/groovydoc/psi/impl/GrDocCommentImpl.java @@ -98,6 +98,7 @@ public class GrDocCommentImpl extends LazyParseablePsiElement implements GroovyD return list.toArray(new GrDocTag[list.size()]); } + @NotNull public PsiElement[] getDescriptionElements() { ArrayList array = new ArrayList(); for (PsiElement child = getFirstChild(); child != null; child = child.getNextSibling()) { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgIncomingStatusUpdater.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgIncomingStatusUpdater.java index b52cf875ee56..63d5ef6cfae0 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgIncomingStatusUpdater.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgIncomingStatusUpdater.java @@ -46,6 +46,7 @@ class HgIncomingStatusUpdater implements HgUpdater { public void run() { new Task.Backgroundable(project, "Checking Incoming Changesets", true) { public void run(@NotNull ProgressIndicator indicator) { + if (project.isDisposed()) return; HgIncomingCommand command = new HgIncomingCommand(project); VcsRoot[] roots = ProjectLevelVcsManager.getInstance(project).getAllVcsRoots(); List changesets = new LinkedList(); @@ -57,7 +58,7 @@ class HgIncomingStatusUpdater implements HgUpdater { } }.queue(); } - }); + }, project.getDisposed()); } private final class IncomingChangesetFormatter implements HgChangesetStatus.ChangesetWriter { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgOutgoingStatusUpdater.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgOutgoingStatusUpdater.java index 0cb3d58e7785..6cf9d12d8e6b 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgOutgoingStatusUpdater.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgOutgoingStatusUpdater.java @@ -46,6 +46,7 @@ class HgOutgoingStatusUpdater implements HgUpdater { public void run() { new Task.Backgroundable(project, "Checking Outgoing Changesets", true) { public void run(@NotNull ProgressIndicator indicator) { + if (project.isDisposed()) return; HgOutgoingCommand command = new HgOutgoingCommand(project); VcsRoot[] roots = ProjectLevelVcsManager.getInstance(project).getAllVcsRoots(); List outgoing = new LinkedList(); @@ -57,7 +58,7 @@ class HgOutgoingStatusUpdater implements HgUpdater { } }.queue(); } - }); + }, project.getDisposed()); } private final class OutgoingChangesetFormatter implements HgChangesetStatus.ChangesetWriter { diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java index ebd2f4e693b6..01152182d8b1 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java @@ -189,7 +189,7 @@ public class HgVcs extends AbstractVcs { } @Override - protected void start() throws VcsException { + protected void activate() { ApplicationManager.getApplication().invokeLater(new Runnable() { public void run() { if (ApplicationManager.getApplication().isUnitTestMode()) { @@ -203,7 +203,7 @@ public class HgVcs extends AbstractVcs { addListeners(); } } - }); + }, myProject.getDisposed()); } @Override