IDEA-136853 readonly locker doesn't work well between splits

This commit is contained in:
Dmitry Batrak
2015-03-23 19:30:15 +03:00
parent 80d3f386d1
commit d74c2edbf4
2 changed files with 19 additions and 5 deletions
@@ -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");
@@ -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());
}
}