mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-136853 readonly locker doesn't work well between splits
This commit is contained in:
@@ -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");
|
||||
|
||||
+18
-4
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user