SourceCodeEditor 源码编辑器
SourceCodeEditor - 源码编辑器 用于显示和输入源代码。它是一个多行文本域,提供代码高亮显示、行号以及能实现代码自动完成。
组件的 XML 名称:sourceCodeEditor。
属性
SourceCodeEditor 功能与 TextField 文本框 一致,但具有下列特殊属性:
- 
handleTabKey- 定义 Tab 按键是否需要作为缩进处理。默认为false,Tab 用于移动光标或焦点到下一个制表位。 
- 
highlightActiveLine- 定义是否高亮光标所在行。默认为true。 
- 
mode- 提供语法高亮支持的语言列表:- 
Java - 
CSS - 
Groovy - 
HTML - 
JavaScript - 
Properties - 
SCSS - 
SQL - 
XML - 
Text- 默认值,不会高亮任何内容。 
 - 
 
- 
printMargin- 定义是否显示打印边缘线。默认为true。 
- 
printMarginColumn- 定义打印列宽度。默认为80字符。 
- 
showGutter- 定义是否显示带有行号的左侧边栏。 
- 
suggestOnDot- 定义在用户输入点号(“.”)时,是否调用 智能建议 处理器。 
验证
如需检查 SourceCodeEditor 组件中输入的值,可以在内部的 validators 元素中使用 validator(验证器)。
SourceCodeEditor 可以使用下列预定义的验证器:
下面示例中,我们展示 validatedSourceCodeEditor 中 RegexpValidator 的用法:
<sourceCodeEditor id="validatedSourceCodeEditor"
                  handleTabKey="true">
    <validators>
        <regexp regexp="[a-z]*"/>
    </validators>
</sourceCodeEditor>
事件和处理器
| 
 如需使用 Jmix Studio 生成处理器的桩代码,需要在界面 XML 描述或者 Jmix UI 层级结构面板选中该组件,然后用 Jmix UI 组件面板的 Handlers 标签页生成。 或者可以使用界面控制器顶部面板的 Generate Handler 按钮。  | 
高亮模式
Mode 代理方法支持选择一种语言进行语法高亮:
@Install(to = "sourceCodeEditor", subject = "mode")
private String sourceCodeEditorMode() {
    return SourceCodeEditor.Mode.Java.getId();
}
如需以编程的方式使用,调用组件的 setMode() 方法。
智能建议
SourceCodeEditor 支持由 Suggester 处理器提供的代码自动完成功能。
下面示例实现了 Java 关键字的自动完成功能。
- 
在界面 XML 描述中定义组件:
<sourceCodeEditor id="sourceCodeEditor" mode="Java" handleTabKey="true"/> - 
定义 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 代码编辑器:
如需手动调用智能建议,可以按下 Ctrl+Space。根据 suggestOnDot 的配置,建议也可以在按下点号后自动显示。
如需以编程的方式使用,调用组件的 setSuggester() 方法。
Validator
参阅 Validator。
ValueChangeEvent
参阅 ValueChangeEvent。
SourceCodeEditor XML Attributes
| 
 可以使用 Studio 界面设计器的 Jmix UI 组件面板查看和编辑组件的属性。  | 
align - box.expandRatio - caption - captionAsHtml - colspan - contextHelpText - contextHelpTextHtmlEnabled - css - dataContainer - description - descriptionAsHtml - editable - enable - handleTabKey - height - highlightActiveLine - htmlSanitizerEnabled - icon - id - mode - printMargin - printMarginColumn - property - required - requiredMessage - responsive - rowspan - showGutter - stylename - suggestOnDot - tabIndex - visible - width