diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java index 3dfbe464e517..9d80e5a5746c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java @@ -422,7 +422,7 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, DataProvider { final LineSeparatorPanel lineSeparatorPanel = new LineSeparatorPanel(project); statusBar.addWidget(lineSeparatorPanel, "before " + encodingPanel.ID()); - final ToggleReadOnlyAttributePanel readOnlyAttributePanel = new ToggleReadOnlyAttributePanel(); + final ToggleReadOnlyAttributePanel readOnlyAttributePanel = new ToggleReadOnlyAttributePanel(project); final InsertOverwritePanel insertOverwritePanel = new InsertOverwritePanel(project); statusBar.addWidget(insertOverwritePanel, "after Encoding"); diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java index 3b89e81eb1f5..98c5aee6653d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java @@ -19,7 +19,7 @@ import com.intellij.icons.AllIcons; import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.fileEditor.*; import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.fileEditor.impl.EditorsSplitters; import com.intellij.openapi.project.Project; @@ -30,6 +30,7 @@ import com.intellij.openapi.wm.StatusBarWidget; import com.intellij.ui.UIBundle; import com.intellij.util.Consumer; import com.intellij.util.io.ReadOnlyAttributeUtil; +import com.intellij.util.messages.MessageBusConnection; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,10 +38,17 @@ import javax.swing.*; import java.awt.event.MouseEvent; import java.io.IOException; -public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, StatusBarWidget.IconPresentation { - +public class ToggleReadOnlyAttributePanel extends FileEditorManagerAdapter implements StatusBarWidget.Multiframe, + StatusBarWidget.IconPresentation{ + private Project myProject; private StatusBar myStatusBar; + public ToggleReadOnlyAttributePanel(@NotNull Project project) { + myProject = project; + MessageBusConnection connection = project.getMessageBus().connect(this); + connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, this); + } + @NotNull public Icon getIcon() { VirtualFile virtualFile = getCurrentFile(); @@ -55,7 +63,7 @@ public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, @Override public StatusBarWidget copy() { - return new ToggleReadOnlyAttributePanel(); + return new ToggleReadOnlyAttributePanel(myProject); } public WidgetPresentation getPresentation(@NotNull PlatformType type) { @@ -64,6 +72,7 @@ public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, public void dispose() { myStatusBar = null; + myProject = null; } public void install(@NotNull StatusBar statusBar) { @@ -119,4 +128,9 @@ public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, EditorsSplitters splitters = FileEditorManagerEx.getInstanceEx(project).getSplittersFor(myStatusBar.getComponent()); return splitters.getCurrentFile(); } + + @Override + public void selectionChanged(@NotNull FileEditorManagerEvent event) { + myStatusBar.updateWidget(ID()); + } }