diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java
index f47c0f942784..cfd6d91d0a49 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonListeners.java
@@ -82,17 +82,11 @@ import java.util.List;
class DaemonListeners implements Disposable {
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.daemon.impl.DaemonListeners");
- private final EditorColorsListener myEditorColorsListener = new MyEditorColorsListener();
- private final PropertyChangeListener myTodoListener = new MyTodoListener();
-
private final Project myProject;
private final DaemonCodeAnalyzerImpl myDaemonCodeAnalyzer;
- private final ModalityStateListener myModalityStateListener;
private boolean myEscPressed;
- private final ErrorStripeHandler myErrorStripeHandler;
-
private volatile boolean cutOperationJustHappened;
private final EditorTracker myEditorTracker;
@@ -208,9 +202,9 @@ class DaemonListeners implements Disposable {
CommandProcessor.getInstance().addCommandListener(new MyCommandListener(), this);
ApplicationListener applicationListener = new MyApplicationListener();
ApplicationManager.getApplication().addApplicationListener(applicationListener, this);
- EditorColorsManager.getInstance().addEditorColorsListener(myEditorColorsListener);
+ EditorColorsManager.getInstance().addEditorColorsListener(new MyEditorColorsListener(),this);
InspectionProfileManager.getInstance().addProfileChangeListener(new MyProfileChangeListener(), this);
- TodoConfiguration.getInstance().addPropertyChangeListener(myTodoListener);
+ TodoConfiguration.getInstance().addPropertyChangeListener(new MyTodoListener(), this);
ActionManagerEx.getInstanceEx().addAnActionListener(new MyAnActionListener(), this);
VirtualFileManager.getInstance().addVirtualFileListener(new VirtualFileAdapter() {
public void propertyChanged(VirtualFilePropertyEvent event) {
@@ -242,8 +236,7 @@ class DaemonListeners implements Disposable {
}
}, this);
- myErrorStripeHandler = new ErrorStripeHandler(myProject);
- ((EditorEventMulticasterEx)eventMulticaster).addErrorStripeListener(myErrorStripeHandler);
+ ((EditorEventMulticasterEx)eventMulticaster).addErrorStripeListener(new ErrorStripeHandler(myProject), this);
final NamedScopesHolder[] holders = NamedScopesHolder.getAllNamedScopeHolders(project);
NamedScopesHolder.ScopeListener scopeListener = new NamedScopesHolder.ScopeListener() {
@@ -255,7 +248,7 @@ class DaemonListeners implements Disposable {
holder.addScopeListener(scopeListener);
}
- myModalityStateListener = new ModalityStateListener() {
+ ModalityStateListener modalityStateListener = new ModalityStateListener() {
public void beforeModalityStateChanged(boolean entering) {
// before showing dialog we are in non-modal context yet, and before closing dialog we are still in modal context
boolean inModalContext = LaterInvocator.isInModalContext();
@@ -263,7 +256,7 @@ class DaemonListeners implements Disposable {
myDaemonCodeAnalyzer.setUpdateByTimerEnabled(inModalContext);
}
};
- LaterInvocator.addModalityStateListener(myModalityStateListener);
+ LaterInvocator.addModalityStateListener(modalityStateListener,this);
}
static boolean isUnderIgnoredAction(Object action) {
@@ -281,13 +274,6 @@ class DaemonListeners implements Disposable {
}
public void dispose() {
- EditorEventMulticaster eventMulticaster = EditorFactory.getInstance().getEventMulticaster();
-
- EditorColorsManager.getInstance().removeEditorColorsListener(myEditorColorsListener);
- TodoConfiguration.getInstance().removePropertyChangeListener(myTodoListener);
-
- ((EditorEventMulticasterEx)eventMulticaster).removeErrorStripeListener(myErrorStripeHandler);
- LaterInvocator.removeModalityStateListener(myModalityStateListener);
}
boolean canChangeFileSilently(PsiFileSystemItem file) {
diff --git a/platform/lang-impl/src/com/intellij/ide/todo/TodoConfiguration.java b/platform/lang-impl/src/com/intellij/ide/todo/TodoConfiguration.java
index 8bb5e7e4f698..3c0a2dedfa1e 100644
--- a/platform/lang-impl/src/com/intellij/ide/todo/TodoConfiguration.java
+++ b/platform/lang-impl/src/com/intellij/ide/todo/TodoConfiguration.java
@@ -16,6 +16,7 @@
package com.intellij.ide.todo;
+import com.intellij.openapi.Disposable;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.util.InvalidDataException;
@@ -55,7 +56,7 @@ public class TodoConfiguration implements ApplicationComponent, JDOMExternalizab
/**
* Invoked by reflection
*/
- TodoConfiguration(MessageBus messageBus) {
+ TodoConfiguration(@NotNull MessageBus messageBus) {
myMessageBus = messageBus;
resetToDefaultTodoPatterns();
}
@@ -89,19 +90,21 @@ public class TodoConfiguration implements ApplicationComponent, JDOMExternalizab
public void disposeComponent() {
}
+ @NotNull
public TodoPattern[] getTodoPatterns() {
return myTodoPatterns;
}
- @NotNull public IndexPattern[] getIndexPatterns() {
+ @NotNull
+ public IndexPattern[] getIndexPatterns() {
return myIndexPatterns;
}
- public void setTodoPatterns(TodoPattern[] todoPatterns) {
+ public void setTodoPatterns(@NotNull TodoPattern[] todoPatterns) {
doSetTodoPatterns(todoPatterns, true);
}
- private void doSetTodoPatterns(TodoPattern[] todoPatterns, final boolean shouldNotifyIndices) {
+ private void doSetTodoPatterns(@NotNull TodoPattern[] todoPatterns, final boolean shouldNotifyIndices) {
TodoPattern[] oldTodoPatterns = myTodoPatterns;
IndexPattern[] oldIndexPatterns = myIndexPatterns;
@@ -138,21 +141,24 @@ public class TodoConfiguration implements ApplicationComponent, JDOMExternalizab
/**
* @return all TodoFilters.
*/
+ @NotNull
public TodoFilter[] getTodoFilters() {
return myTodoFilters;
}
- public void setTodoFilters(TodoFilter[] filters) {
+ public void setTodoFilters(@NotNull TodoFilter[] filters) {
TodoFilter[] oldFilters = myTodoFilters;
myTodoFilters = filters;
myPropertyChangeMulticaster.getMulticaster().propertyChange(new PropertyChangeEvent(this, PROP_TODO_FILTERS, oldFilters, filters));
}
- public void addPropertyChangeListener(PropertyChangeListener listener) {
+ public void addPropertyChangeListener(@NotNull PropertyChangeListener listener) {
myPropertyChangeMulticaster.addListener(listener);
}
-
- public void removePropertyChangeListener(PropertyChangeListener listener) {
+ public void addPropertyChangeListener(@NotNull PropertyChangeListener listener, @NotNull Disposable parentDisposable) {
+ myPropertyChangeMulticaster.addListener(listener,parentDisposable);
+ }
+ public void removePropertyChangeListener(@NotNull PropertyChangeListener listener) {
myPropertyChangeMulticaster.removeListener(listener);
}
diff --git a/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java b/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java
index 373a61a1dd93..31f5028634f6 100644
--- a/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java
+++ b/platform/lang-impl/src/com/intellij/ide/todo/TodoView.java
@@ -94,12 +94,7 @@ public class TodoView implements PersistentStateComponent, Disposable {
myVCSManager.addVcsListener(myVcsListener);
final MyPropertyChangeListener myPropertyChangeListener = new MyPropertyChangeListener();
- TodoConfiguration.getInstance().addPropertyChangeListener(myPropertyChangeListener);
- Disposer.register(this, new Disposable() {
- public void dispose() {
- TodoConfiguration.getInstance().removePropertyChangeListener(myPropertyChangeListener);
- }
- });
+ TodoConfiguration.getInstance().addPropertyChangeListener(myPropertyChangeListener,this);
MessageBusConnection connection = myProject.getMessageBus().connect(this);
connection.subscribe(AppTopics.FILE_TYPES, new MyFileTypeListener());
diff --git a/platform/lang-impl/src/com/intellij/ide/todo/configurable/TodoConfigurable.java b/platform/lang-impl/src/com/intellij/ide/todo/configurable/TodoConfigurable.java
index 5d49aba6c3e2..1dda57ca6f99 100644
--- a/platform/lang-impl/src/com/intellij/ide/todo/configurable/TodoConfigurable.java
+++ b/platform/lang-impl/src/com/intellij/ide/todo/configurable/TodoConfigurable.java
@@ -32,6 +32,7 @@ import com.intellij.ui.TableUtil;
import com.intellij.ui.table.JBTable;
import com.intellij.util.ui.Table;
import com.intellij.util.ui.UIUtil;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -85,8 +86,7 @@ public class TodoConfigurable extends BaseConfigurable implements SearchableConf
if (initialPatterns.length != myPatterns.size()) {
return true;
}
- for (int i = 0; i < initialPatterns.length; i++) {
- TodoPattern initialPattern = initialPatterns[i];
+ for (TodoPattern initialPattern : initialPatterns) {
if (!myPatterns.contains(initialPattern)) {
return true;
}
@@ -100,8 +100,7 @@ public class TodoConfigurable extends BaseConfigurable implements SearchableConf
if (initialFilters.length != myFilters.size()) {
return true;
}
- for (int i = 0; i < initialFilters.length; i++) {
- TodoFilter initialFilter = initialFilters[i];
+ for (TodoFilter initialFilter : initialFilters) {
if (!myFilters.contains(initialFilter)) {
return true;
}
@@ -391,7 +390,7 @@ public class TodoConfigurable extends BaseConfigurable implements SearchableConf
}
TodoPattern sourcePattern = myPatterns.get(selectedIndex);
TodoPattern pattern = sourcePattern.clone();
- PatternDialog dialog = new PatternDialog(TodoConfigurable.this.myPanel, pattern);
+ PatternDialog dialog = new PatternDialog(myPanel, pattern);
dialog.setTitle(IdeBundle.message("title.edit.todo.pattern"));
dialog.show();
if (!dialog.isOK()) {
@@ -459,6 +458,7 @@ public class TodoConfigurable extends BaseConfigurable implements SearchableConf
return IdeBundle.message("title.todo");
}
+ @NotNull
public String getHelpTopic() {
return "preferences.toDoOptions";
}
@@ -472,15 +472,15 @@ public class TodoConfigurable extends BaseConfigurable implements SearchableConf
myPatterns.clear();
TodoConfiguration todoConfiguration = TodoConfiguration.getInstance();
TodoPattern[] patterns = todoConfiguration.getTodoPatterns();
- for (int i = 0; i < patterns.length; i++) {
- myPatterns.add(patterns[i].clone());
+ for (TodoPattern pattern : patterns) {
+ myPatterns.add(pattern.clone());
}
myPatternsModel.fireTableDataChanged();
// Filters
myFilters.clear();
TodoFilter[] filters = todoConfiguration.getTodoFilters();
- for (int i = 0; i < filters.length; i++) {
- myFilters.add(filters[i].clone());
+ for (TodoFilter filter : filters) {
+ myFilters.add(filter.clone());
}
myFiltersModel.fireTableDataChanged();
//
@@ -506,6 +506,7 @@ public class TodoConfigurable extends BaseConfigurable implements SearchableConf
}
}
+ @NotNull
public String getId() {
return getHelpTopic();
}
diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java
index 20cde5319e85..70390c10d3f6 100644
--- a/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java
+++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/LaterInvocator.java
@@ -16,6 +16,7 @@
package com.intellij.openapi.application.impl;
import com.intellij.ide.IdeEventQueue;
+import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.ModalityStateListener;
@@ -84,15 +85,18 @@ public class LaterInvocator {
private static final ArrayList ourForcedFlushQueue = new ArrayList();
- public static void addModalityStateListener(ModalityStateListener listener){
+ public static void addModalityStateListener(@NotNull ModalityStateListener listener){
ourModalityStateMulticaster.addListener(listener);
}
+ public static void addModalityStateListener(@NotNull ModalityStateListener listener, @NotNull Disposable parentDisposable){
+ ourModalityStateMulticaster.addListener(listener,parentDisposable);
+ }
- public static void removeModalityStateListener(ModalityStateListener listener){
+ public static void removeModalityStateListener(@NotNull ModalityStateListener listener){
ourModalityStateMulticaster.removeListener(listener);
}
- static ModalityStateEx modalityStateForWindow(Window window){
+ static ModalityStateEx modalityStateForWindow(@NotNull Window window){
int index = ourModalEntities.indexOf(window);
if (index < 0){
Window owner = window.getOwner();
@@ -120,20 +124,20 @@ public class LaterInvocator {
return new ModalityStateEx(result.toArray());
}
- public static ActionCallback invokeLater(Runnable runnable) {
+ public static ActionCallback invokeLater(@NotNull Runnable runnable) {
return invokeLater(runnable, Conditions.FALSE);
}
- public static ActionCallback invokeLater(Runnable runnable, @NotNull Condition expired) {
+ public static ActionCallback invokeLater(@NotNull Runnable runnable, @NotNull Condition expired) {
ModalityState modalityState = ModalityState.defaultModalityState();
return invokeLater(runnable, modalityState, expired);
}
- public static ActionCallback invokeLater(Runnable runnable, @NotNull ModalityState modalityState) {
+ public static ActionCallback invokeLater(@NotNull Runnable runnable, @NotNull ModalityState modalityState) {
return invokeLater(runnable, modalityState, Conditions.FALSE);
}
- public static ActionCallback invokeLater(Runnable runnable, @NotNull ModalityState modalityState, @NotNull Condition