SourceCodeEditor

SourceCodeEditor – это компонент для отображения и ввода исходного кода. Он представляет собой многострочное текстовое поле с подсветкой кода, номерами строк и возможностью имплементации автодополнения кода.

source code editor

XML-имя компонента: sourceCodeEditor.

Атрибуты

SourceCodeEditor в основном повторяет функциональность TextField и имеет следующие специфические атрибуты:

  • handleTabKey - определяет, будет ли нажатие кнопки Tab на клавиатуре добавлять отступ текущей строки. Значение по умолчанию – false: Tab используется для перехода на следующую позицию табуляции.

  • highlightActiveLine - определяет, будет ли подсвечена строка, на которой находится курсор. Значение по умолчанию – true.

  • mode - позволяет выбрать один из языков, для которых поддерживается подсветка синтаксиса:

    • Java

    • CSS

    • Groovy

    • HTML

    • JavaScript

    • Properties

    • SCSS

    • SQL

    • XML

    • Text - значение по умолчанию, ничего не будет выделено.

  • showGutter - используется для отображения или скрытия левой панели с номерами строк.

  • suggestOnDot - определяет, будет ли вызываться обработчик suggester после нажатия пользователем точки.

Валидация

Чтобы проверять значения, введенные в компонент SourceCodeEditor, можно использовать валидатор во вложенном элементе validators.

Для SourceCodeEditor доступны следующие предопределенные валидаторы:

В приведенном ниже примере показано использование RegexpValidator для validatedSourceCodeEditor:

<sourceCodeEditor id="validatedSourceCodeEditor"
                  handleTabKey="true">
    <validators>
        <regexp regexp="[a-z]*"/>
    </validators>
</sourceCodeEditor>

События и слушатели

Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI.

В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана.

ContextHelpIconClickEvent

Mode

Делегатный метод Mode позволяет выбрать один из языков, для которых поддерживается подсветка синтаксиса:

@Install(to = "sourceCodeEditor", subject = "mode")
private String sourceCodeEditorMode() {
    return SourceCodeEditor.Mode.Java.getId();
}

Для программного использования вызовите метод компонента setMode().

Suggester

SourceCodeEditor поддерживает автодополнение кода, предоставляемое обработчиком Suggester.

Ниже приведен пример реализации автодополнения ключевых слов Java.

  1. Определите компонент в экране XML-дескриптора:

    <sourceCodeEditor id="sourceCodeEditor"
                      mode="Java"
                      handleTabKey="true"/>
  2. Определите обработчик suggester и верните список значений для автозаполнения:

    private static String[] KEYWORDS = {
            "byte",
            "short",
            //...
    
    @Install(to = "sourceCodeEditor", subject = "suggester")
    private List<Suggestion> sourceCodeEditorSuggester(AutoCompleteSupport source, String text, int cursorPosition) {
        return Stream.of(KEYWORDS)
                .map(keyword -> new Suggestion(source, keyword, keyword, null, -1, -1))
                .collect(Collectors.toList());
    }

В результате получим простой редактор кода Java с автодополнением:

source code suggester

Чтобы вызвать список автодополнения, нажмите Ctrl+Space. В зависимости от значения атрибута suggestOnDot список может появляться автоматически после ввода точки.

Для программного использования вызовите метод компонента setSuggester().

Validator

См. Validator.

ValueChangeEvent

Внешний вид

Внешний вид компонента SourceCodeEditor можно настроить с помощью переменных SCSS с префиксом $jmix-sourcecodeeditor-*.

XML-атрибуты SourceCodeEditor

Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio.

XML-элемент SourceCodeEditor