From 282124defe63301e67a88de6d03fbde545476bbd Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 22 May 2023 10:51:33 +0200 Subject: [PATCH] editor gutter layout for New UI + DFM GitOrigin-RevId: 955a3a686fc827b8772a3451b23b4c89863808cf --- .../editor/impl/EditorGutterLayout.java | 58 +++++++++++++++++-- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterLayout.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterLayout.java index 01c825f852c7..f58883f1396b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterLayout.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterLayout.java @@ -1,6 +1,7 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.openapi.editor.impl; +import com.intellij.ide.actions.ToggleDistractionFreeModeAction; import com.intellij.openapi.editor.event.EditorMouseEventArea; import com.intellij.openapi.util.text.Strings; import com.intellij.ui.ExperimentalUI; @@ -27,7 +28,8 @@ public class EditorGutterLayout { static final String FOLDING_AREA = "Free painters"; static final String VERTICAL_LINE_AREA = "Vertical line"; private final EditorGutterComponentImpl myEditorGutter; - private List myExpLayout; + private List myNewUILayout; + private List myNewUIDFMLayout; private List myClassicLayout; public EditorGutterLayout(EditorGutterComponentImpl editorGutter) { @@ -89,6 +91,9 @@ public class EditorGutterLayout { List getLayout() { if (ExperimentalUI.isNewUI()) { + if (ToggleDistractionFreeModeAction.isDistractionFreeModeEnabled()) { + return getNewUIDFMLayout(); + } return getExperimentalGutterLayout(); } return getClassicGutterLayout(); @@ -135,7 +140,7 @@ public class EditorGutterLayout { return myEditorGutter.isLineNumbersShown(); } - private List createExperimentalLayout() { + private List createNewUILayout() { return List.of( area(ANNOTATIONS_AREA, () -> 4) .as(EditorMouseEventArea.ANNOTATIONS_AREA) @@ -174,6 +179,42 @@ public class EditorGutterLayout { ); } + private List createNewUIDFMLayout() { + return List.of( + area(LINE_NUMBERS_AREA, () -> myEditorGutter.myLineNumberAreaWidth).showIf(this::isLineNumbersShown), + areaGap(12).showIf(() -> myEditorGutter.isLineNumbersShown() && !myEditorGutter.isLineMarkersShown()), + area(ADDITIONAL_LINE_NUMBERS_AREA, () -> myEditorGutter.myAdditionalLineNumberAreaWidth), + area(ADDITIONAL_LINE_NUMBERS_AREA, () -> 4).showIf(() -> myEditorGutter.isLineNumbersShown() && myEditorGutter.isLineMarkersShown()), + area(ANNOTATIONS_AREA, () -> myEditorGutter.myTextAnnotationExtraSize) + .as(EditorMouseEventArea.LINE_MARKERS_AREA) + .showIf(() -> myEditorGutter.myTextAnnotationExtraSize != 0), + + area(ANNOTATIONS_AREA, () -> 4) + .as(EditorMouseEventArea.ANNOTATIONS_AREA) + .showIf(() -> myEditorGutter.myTextAnnotationGuttersSize == 0 && myEditorGutter.isLineMarkersShown()), + areaGap() + .as(EditorMouseEventArea.ANNOTATIONS_AREA) + .showIf(() -> myEditorGutter.isShowGapAfterAnnotations() && myEditorGutter.isLineMarkersShown()), + area(ANNOTATIONS_AREA, () -> myEditorGutter.myTextAnnotationGuttersSize) + .as(EditorMouseEventArea.ANNOTATIONS_AREA) + .showIf(() -> myEditorGutter.myTextAnnotationGuttersSize != 0), + + area(EXTRA_LEFT_FREE_PAINTERS_AREA, myEditorGutter::getExtraLeftFreePaintersAreaWidth) + .showIf(() -> myEditorGutter.isLineMarkersShown()), + areaGap(4) + .as(EditorMouseEventArea.LINE_MARKERS_AREA) + .showIf(() -> myEditorGutter.getExtraLeftFreePaintersAreaWidth() > 0 && myEditorGutter.isLineMarkersShown()), + + area(LEFT_FREE_PAINTERS_AREA, myEditorGutter::getLeftFreePaintersAreaWidth).showIf(myEditorGutter::isLineMarkersShown), + area(ICONS_AREA, myEditorGutter::getIconsAreaWidth).showIf(myEditorGutter::isLineMarkersShown), + area(GAP_AFTER_ICONS_AREA, myEditorGutter::getGapAfterIconsArea).showIf(myEditorGutter::isLineMarkersShown), + area(RIGHT_FREE_PAINTERS_AREA, myEditorGutter::getRightFreePaintersAreaWidth).showIf(myEditorGutter::isLineMarkersShown), + + area(FOLDING_AREA, myEditorGutter::getFoldingAreaWidth), + areaGap(3).showIf(() -> myEditorGutter.isLineMarkersShown()) + ); + } + @NotNull private GutterArea areaGap() { return area(GAP_BETWEEN_AREAS, EditorGutterComponentImpl::getGapBetweenAreas); @@ -185,10 +226,17 @@ public class EditorGutterLayout { } private List getExperimentalGutterLayout() { - if (myExpLayout == null) { - myExpLayout = createExperimentalLayout(); + if (myNewUILayout == null) { + myNewUILayout = createNewUILayout(); } - return myExpLayout; + return myNewUILayout; + } + + private List getNewUIDFMLayout() { + if (myNewUIDFMLayout == null) { + myNewUIDFMLayout = createNewUIDFMLayout(); + } + return myNewUIDFMLayout; } private static GutterArea area(String id, Supplier areaWidth) {