mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
reuse DelegateColorScheme & improve color scheme change handling
This commit is contained in:
+4
@@ -41,6 +41,10 @@ public abstract class DelegateColorScheme implements EditorColorsScheme {
|
||||
return myDelegate;
|
||||
}
|
||||
|
||||
public void setDelegate(@NotNull EditorColorsScheme delegate) {
|
||||
myDelegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
myDelegate.setName(name);
|
||||
|
||||
@@ -61,7 +61,6 @@ import com.intellij.openapi.editor.markup.*;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory;
|
||||
import com.intellij.openapi.fileEditor.impl.EditorsSplitters;
|
||||
import com.intellij.openapi.options.FontSize;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Queryable;
|
||||
@@ -681,10 +680,11 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
validateSize();
|
||||
}
|
||||
|
||||
final EditorColorsScheme scheme =
|
||||
myScheme instanceof DelegateColorScheme ? ((DelegateColorScheme)myScheme).getDelegate() : myScheme;
|
||||
if (scheme instanceof MyColorSchemeDelegate) {
|
||||
((MyColorSchemeDelegate)scheme).updateGlobalScheme();
|
||||
for (EditorColorsScheme scheme = myScheme; scheme instanceof DelegateColorScheme; scheme = ((DelegateColorScheme)scheme).getDelegate()) {
|
||||
if (scheme instanceof MyColorSchemeDelegate) {
|
||||
((MyColorSchemeDelegate)scheme).updateGlobalScheme();
|
||||
break;
|
||||
}
|
||||
}
|
||||
myHighlighter.setColorScheme(myScheme);
|
||||
myFoldingModel.refreshSettings();
|
||||
@@ -5820,7 +5820,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
}
|
||||
}
|
||||
|
||||
private class MyColorSchemeDelegate implements EditorColorsScheme {
|
||||
private class MyColorSchemeDelegate extends DelegateColorScheme {
|
||||
|
||||
private final FontPreferences myFontPreferences = new FontPreferences();
|
||||
private final Map<TextAttributesKey, TextAttributes> myOwnAttributes = ContainerUtilRt.newHashMap();
|
||||
@@ -5830,23 +5830,17 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
private int myMaxFontSize = OptionsConstants.MAX_EDITOR_FONT_SIZE;
|
||||
private int myFontSize = -1;
|
||||
private String myFaceName = null;
|
||||
private EditorColorsScheme myGlobalScheme;
|
||||
|
||||
private MyColorSchemeDelegate(@Nullable final EditorColorsScheme globalScheme) {
|
||||
private MyColorSchemeDelegate(@Nullable EditorColorsScheme globalScheme) {
|
||||
super(globalScheme == null ? EditorColorsManager.getInstance().getGlobalScheme() : globalScheme);
|
||||
myCustomGlobalScheme = globalScheme;
|
||||
updateGlobalScheme();
|
||||
}
|
||||
|
||||
private EditorColorsScheme getGlobal() {
|
||||
return myGlobalScheme;
|
||||
return getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return getGlobal().getName();
|
||||
}
|
||||
|
||||
|
||||
protected void initFonts() {
|
||||
String editorFontName = getEditorFontName();
|
||||
int editorFontSize = getEditorFontSize();
|
||||
@@ -5869,11 +5863,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
reinitSettings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String name) {
|
||||
getGlobal().setName(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextAttributes getAttributes(TextAttributesKey key) {
|
||||
if (myOwnAttributes.containsKey(key)) return myOwnAttributes.get(key);
|
||||
@@ -5885,18 +5874,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
myOwnAttributes.put(key, attributes);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Color getDefaultBackground() {
|
||||
return getGlobal().getDefaultBackground();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Color getDefaultForeground() {
|
||||
return getGlobal().getDefaultForeground();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Color getColor(ColorKey key) {
|
||||
if (myOwnColors.containsKey(key)) return myOwnColors.get(key);
|
||||
@@ -5929,16 +5906,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
initFonts();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FontSize getQuickDocFontSize() {
|
||||
return myGlobalScheme.getQuickDocFontSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setQuickDocFontSize(@NotNull FontSize fontSize) {
|
||||
myGlobalScheme.setQuickDocFontSize(fontSize);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public FontPreferences getFontPreferences() {
|
||||
@@ -5983,16 +5950,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
reinitSettings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getLineSpacing() {
|
||||
return getGlobal().getLineSpacing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLineSpacing(float lineSpacing) {
|
||||
getGlobal().setLineSpacing(lineSpacing);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object clone() {
|
||||
@@ -6008,52 +5965,21 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
}
|
||||
|
||||
public void updateGlobalScheme() {
|
||||
myGlobalScheme = myCustomGlobalScheme == null ? EditorColorsManager.getInstance().getGlobalScheme() : myCustomGlobalScheme;
|
||||
setDelegate(myCustomGlobalScheme == null ? EditorColorsManager.getInstance().getGlobalScheme() : myCustomGlobalScheme);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDelegate(@NotNull EditorColorsScheme delegate) {
|
||||
super.setDelegate(delegate);
|
||||
int globalFontSize = getGlobal().getEditorFontSize();
|
||||
myMaxFontSize = Math.max(OptionsConstants.MAX_EDITOR_FONT_SIZE, globalFontSize);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public FontPreferences getConsoleFontPreferences() {
|
||||
return getGlobal().getConsoleFontPreferences();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConsoleFontPreferences(@NotNull FontPreferences preferences) {
|
||||
getGlobal().setConsoleFontPreferences(preferences);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getConsoleFontName() {
|
||||
return getGlobal().getConsoleFontName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConsoleFontName(String fontName) {
|
||||
getGlobal().setConsoleFontName(fontName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getConsoleFontSize() {
|
||||
return getGlobal().getConsoleFontSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConsoleFontSize(int fontSize) {
|
||||
getGlobal().setConsoleFontSize(fontSize);
|
||||
reinitSettings();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getConsoleLineSpacing() {
|
||||
return getGlobal().getConsoleLineSpacing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setConsoleLineSpacing(float lineSpacing) {
|
||||
getGlobal().setConsoleLineSpacing(lineSpacing);
|
||||
}
|
||||
}
|
||||
|
||||
private static class MyTransferHandler extends TransferHandler {
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.RangeMarker;
|
||||
import com.intellij.openapi.editor.colors.EditorColors;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.editor.colors.impl.DelegateColorScheme;
|
||||
import com.intellij.openapi.editor.event.DocumentListener;
|
||||
import com.intellij.openapi.editor.ex.*;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
@@ -75,7 +76,13 @@ public abstract class EditorTextFieldCellRenderer extends CellRendererPanel impl
|
||||
|
||||
@NotNull
|
||||
private EditorEx getEditor() {
|
||||
if (myEditor != null) return myEditor;
|
||||
if (myEditor != null) {
|
||||
EditorColorsScheme scheme = myEditor.getColorsScheme();
|
||||
if (scheme instanceof DelegateColorScheme) {
|
||||
((DelegateColorScheme)scheme).setDelegate(getColorScheme());
|
||||
}
|
||||
return myEditor;
|
||||
}
|
||||
|
||||
// reuse EditorTextField initialization logic
|
||||
EditorTextField field = new EditorTextField(new MyDocument(), null, FileTypes.PLAIN_TEXT);
|
||||
|
||||
Reference in New Issue
Block a user