mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
console gutter component should use setAdditionalColumnsCount now (we use editor area)
rename outdated historyAnnotation
This commit is contained in:
@@ -60,9 +60,9 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener {
|
||||
});
|
||||
}
|
||||
|
||||
public void updateSize() {
|
||||
public void updateSize(int start, int end) {
|
||||
int oldAnnotationsWidth = maxAnnotationWidth;
|
||||
computeMaxAnnotationWidth();
|
||||
computeMaxAnnotationWidth(start, end);
|
||||
if (oldAnnotationsWidth != maxAnnotationWidth || myLastPreferredHeight != editor.getPreferredHeight()) {
|
||||
fireResized();
|
||||
}
|
||||
@@ -73,7 +73,7 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener {
|
||||
processComponentEvent(new ComponentEvent(this, ComponentEvent.COMPONENT_RESIZED));
|
||||
}
|
||||
|
||||
private void computeMaxAnnotationWidth() {
|
||||
private void computeMaxAnnotationWidth(int start, int end) {
|
||||
gutterContentProvider.beforeUiComponentUpdate(editor);
|
||||
|
||||
if (!gutterContentProvider.hasText()) {
|
||||
@@ -82,10 +82,10 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener {
|
||||
}
|
||||
|
||||
FontMetrics fontMetrics = editor.getFontMetrics(Font.PLAIN);
|
||||
int lineCount = editor.getDocument().getLineCount();
|
||||
int lineCount = Math.min(end, editor.getDocument().getLineCount());
|
||||
int gutterSize = 0;
|
||||
for (int i = 0; i < lineCount; i++) {
|
||||
String text = gutterContentProvider.getText(i, editor);
|
||||
for (int line = start; line < lineCount; line++) {
|
||||
String text = gutterContentProvider.getText(line, editor);
|
||||
if (text != null) {
|
||||
gutterSize = Math.max(gutterSize, fontMetrics.stringWidth(text));
|
||||
}
|
||||
@@ -94,7 +94,9 @@ class ConsoleGutterComponent extends JComponent implements MouseMotionListener {
|
||||
if (gutterSize != 0) {
|
||||
gutterSize += lineEndInset;
|
||||
}
|
||||
maxAnnotationWidth = gutterSize;
|
||||
maxAnnotationWidth = Math.max(gutterSize, maxAnnotationWidth);
|
||||
|
||||
editor.getSettings().setAdditionalColumnsCount(1 + (maxAnnotationWidth / EditorUtil.getSpaceWidth(Font.PLAIN, editor)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -125,7 +125,7 @@ public final class LanguageConsoleBuilder {
|
||||
return new Pair<AnAction, ConsoleHistoryController>(action, historyController);
|
||||
}
|
||||
|
||||
public LanguageConsoleBuilder historyAnnotation(@Nullable GutterContentProvider value) {
|
||||
public LanguageConsoleBuilder gutterContentProvider(@Nullable GutterContentProvider value) {
|
||||
gutterContentProvider = value;
|
||||
return this;
|
||||
}
|
||||
@@ -196,6 +196,11 @@ public final class LanguageConsoleBuilder {
|
||||
this.psiFileFactory = psiFileFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isHistoryViewerForceAdditionalColumnsUsage() {
|
||||
return gutterContentProvider == null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected PsiFile createFile(@NotNull LightVirtualFile virtualFile, @NotNull Document document, @NotNull Project project) {
|
||||
@@ -288,7 +293,7 @@ public final class LanguageConsoleBuilder {
|
||||
private final ConsoleIconGutterComponent lineStartGutter;
|
||||
private final ConsoleGutterComponent lineEndGutter;
|
||||
|
||||
private Runnable gutterSizeUpdater;
|
||||
private Task gutterSizeUpdater;
|
||||
private RangeHighlighterEx lineSeparatorPainter;
|
||||
|
||||
public GutterUpdateScheduler(@NotNull ConsoleIconGutterComponent lineStartGutter, @NotNull ConsoleGutterComponent lineEndGutter) {
|
||||
@@ -333,7 +338,7 @@ public final class LanguageConsoleBuilder {
|
||||
int startDocLine = document.getLineNumber(event.getOffset());
|
||||
int endDocLine = document.getLineNumber(event.getOffset() + event.getNewLength());
|
||||
if (event.getOldLength() > event.getNewLength() || startDocLine != endDocLine || StringUtil.indexOf(event.getOldFragment(), '\n') != -1) {
|
||||
updateGutterSize();
|
||||
updateGutterSize(0, Integer.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
else if (event.getOldLength() > 0) {
|
||||
@@ -342,6 +347,8 @@ public final class LanguageConsoleBuilder {
|
||||
}
|
||||
|
||||
private void documentCleared() {
|
||||
gutterSizeUpdater = null;
|
||||
|
||||
assert gutterContentProvider != null;
|
||||
gutterContentProvider.documentCleared(getHistoryViewer());
|
||||
}
|
||||
@@ -358,26 +365,38 @@ public final class LanguageConsoleBuilder {
|
||||
else {
|
||||
addLineSeparatorPainterIfNeed();
|
||||
}
|
||||
updateGutterSize();
|
||||
updateGutterSize(0, Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
private void updateGutterSize() {
|
||||
private void updateGutterSize(int start, int end) {
|
||||
if (gutterSizeUpdater != null) {
|
||||
gutterSizeUpdater.start = Math.min(start, gutterSizeUpdater.start);
|
||||
gutterSizeUpdater.end = Math.max(end, gutterSizeUpdater.end);
|
||||
return;
|
||||
}
|
||||
|
||||
gutterSizeUpdater = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!getHistoryViewer().isDisposed()) {
|
||||
lineStartGutter.updateSize();
|
||||
lineEndGutter.updateSize();
|
||||
}
|
||||
gutterSizeUpdater = null;
|
||||
}
|
||||
};
|
||||
gutterSizeUpdater = new Task(start, end);
|
||||
SwingUtilities.invokeLater(gutterSizeUpdater);
|
||||
}
|
||||
|
||||
private final class Task implements Runnable {
|
||||
private int start;
|
||||
private int end;
|
||||
|
||||
public Task(int start, int end) {
|
||||
this.start = start;
|
||||
this.end = end;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (!getHistoryViewer().isDisposed()) {
|
||||
lineStartGutter.updateSize();
|
||||
lineEndGutter.updateSize(start, end);
|
||||
}
|
||||
gutterSizeUpdater = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final class LineSeparatorPainter extends RangeMarkerImpl implements RangeHighlighterEx, Getter<RangeHighlighterEx> {
|
||||
|
||||
@@ -682,6 +682,10 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider {
|
||||
return ObjectUtils.assertNotNull(PsiManager.getInstance(project).findFile(virtualFile));
|
||||
}
|
||||
|
||||
boolean isHistoryViewerForceAdditionalColumnsUsage() {
|
||||
return true;
|
||||
}
|
||||
|
||||
private class MyLayout extends AbstractLayoutManager {
|
||||
@Override
|
||||
public Dimension preferredLayoutSize(final Container parent) {
|
||||
@@ -713,9 +717,11 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider {
|
||||
// deal with width
|
||||
final int width = Math.max(editorSize.width, historySize.width);
|
||||
newEditorSize.width = width + editor.getScrollPane().getHorizontalScrollBar().getHeight();
|
||||
history.getSoftWrapModel().forceAdditionalColumnsUsage();
|
||||
editor.getSettings().setAdditionalColumnsCount(2 + (width - editorSize.width) / EditorUtil.getSpaceWidth(Font.PLAIN, editor));
|
||||
history.getSettings().setAdditionalColumnsCount(2 + (width - historySize.width) / EditorUtil.getSpaceWidth(Font.PLAIN, history));
|
||||
if (isHistoryViewerForceAdditionalColumnsUsage()) {
|
||||
history.getSoftWrapModel().forceAdditionalColumnsUsage();
|
||||
editor.getSettings().setAdditionalColumnsCount(2 + (width - editorSize.width) / EditorUtil.getSpaceWidth(Font.PLAIN, editor));
|
||||
history.getSettings().setAdditionalColumnsCount(2 + (width - historySize.width) / EditorUtil.getSpaceWidth(Font.PLAIN, history));
|
||||
}
|
||||
|
||||
// deal with height
|
||||
if (historySize.width == 0) {
|
||||
|
||||
Reference in New Issue
Block a user