Class CodeEditor
- All Implemented Interfaces:
Animation, Editable, EditorHost, StyleListener, Iterable<Component>
An IDE style source code editor with syntax highlighting, a line-number gutter and asynchronous code completion.
CodeEditor is built for editing source code on both touch devices (with the virtual keyboard) and
desktops (with a physical keyboard). Code completion is driven by a CodeCompletionProvider, which
can resolve proposals locally or from a remote language server.
Like RichTextArea, ports with low-level text input use the pure Codename One text engine
(com.codename1.ui.editor) with a built-in incremental syntax highlighter. Ports without that input
contract use an editable BrowserComponent fallback, and a port can transparently supply a native
code editor instead.
Example
CodeEditor editor = new CodeEditor();
editor.setLanguage("java");
editor.setText("public class Main {\n\n}");
editor.setCompletionProvider((ed, code, cursor, results) -> {
List<CodeCompletion> out = new ArrayList<>();
out.add(new CodeCompletion("System.out.println(", "System.out.println()").setType("method"));
results.onSucess(out);
});
form.add(BorderLayout.CENTER, editor);
-
Field Summary
Fields inherited from class AbstractEditorComponent
BACKEND_BROWSER, BACKEND_PUREFields inherited from class Component
BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR -
Constructor Summary
ConstructorsConstructorDescriptionCreates an empty code editor.CodeEditor(String language, String text) Creates a code editor initialized with the supplied source and language. -
Method Summary
Modifier and TypeMethodDescriptionReturns the current completion provider, or null if none is set.voidgetCursorPosition(SuccessCallback<Integer> callback) Retrieves the current caret character offset.Returns the custom browser-engine URL, or null for the built-in page.Returns the current highlighting language id.intReturns the indentation width in spaces.voidgetText(SuccessCallback<String> callback) Retrieves the current source code.getTheme()Returns the current theme id.voidinsertAtCursor(String text) Inserts text at the current caret position, replacing any active selection.booleanReturns true when the editor is read-only.booleanReturns true if the line-number gutter is shown.voidsetCompletionProvider(CodeCompletionProvider provider) Sets the provider that supplies code completion proposals.voidsetDiagnostics(List<CodeDiagnostic> diagnostics) Sets the diagnostics (errors / warnings / hints) displayed in the editor as squiggly underlines, gutter markers and tooltips.voidsetEngineURL(String url) Points the browser fallback at a custom editor page in the app hierarchy.voidsetLanguage(String language) Sets the language used for syntax highlighting.voidsetReadOnly(boolean readOnly) Makes the editor read-only or editable.voidsetShowLineNumbers(boolean show) Shows or hides the line-number gutter.voidsetTabSize(int tabSize) Sets the number of spaces inserted for a tab / used for indentation.voidReplaces the entire editor content.voidSets the color theme.Methods inherited from class AbstractEditorComponent
addChangeListener, addReadyListener, blurEditor, command, editorChanged, fireEditorEvent, focusEditor, getDefaultBackend, getInternalBrowser, isEditable, isEditorReady, isNativeEditor, isTextInputSupported, onReady, query, removeChangeListener, removeReadyListener, setDefaultBackend, setEditable, startTextInput, stopTextInput, updateTextInputStateMethods inherited from class Container
add, add, add, add, add, add, addAll, addComponent, addComponent, addComponent, addComponent, animateHierarchy, animateHierarchyAndWait, animateHierarchyFade, animateHierarchyFadeAndWait, animateLayout, animateLayoutAndWait, animateLayoutFade, animateLayoutFadeAndWait, animateUnlayout, animateUnlayoutAndWait, applyRTL, calcPreferredSize, cancelRepaints, clearClientProperties, constrainHeightWhenScrollable, constrainWidthWhenScrollable, contains, createAnimateHierarchy, createAnimateHierarchyFade, createAnimateLayout, createAnimateLayoutFade, createAnimateLayoutFadeAndWait, createAnimateMotion, createAnimateUnlayout, createReplaceTransition, dragInitiated, drop, encloseIn, encloseIn, findDropTargetAt, findFirstFocusable, fireClicked, flushReplace, forceRevalidate, getBottomGap, getChildrenAsList, getClosestComponentTo, getComponentAt, getComponentAt, getComponentCount, getComponentIndex, getGridPosX, getGridPosY, getLayout, getLayoutHeight, getLayoutWidth, getLeadComponent, getLeadParent, getResponderAt, getSafeAreaRoot, getScrollIncrement, getSideGap, getUIManager, initLaf, invalidate, isEnabled, isSafeArea, isSafeAreaRoot, isScrollableX, isScrollableY, isSelectableInteraction, isSurface, iterator, iterator, keyPressed, keyReleased, layoutContainer, morph, morphAndWait, paint, paintComponentBackground, paintGlass, paramString, pointerPressed, refreshTheme, removeAll, removeComponent, replace, replace, replaceAndWait, replaceAndWait, replaceAndWait, revalidate, revalidateLater, revalidateWithAnimationSafety, scrollComponentToVisible, setCellRenderer, setEnabled, setLayout, setLeadComponent, setSafeArea, setSafeAreaRoot, setScrollable, setScrollableX, setScrollableY, setScrollIncrement, setShouldCalcPreferredSize, setShouldLayout, setUIManager, updateTabIndicesMethods inherited from class Component
accessibilityChanged, accessibilityChanged, addContextMenuListener, addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addMouseWheelListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, addStylusListener, animate, announceForAccessibility, bindProperty, blocksSideSwipe, calcScrollSize, contains, containsOrOwns, createStyleAnimation, deinitialize, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAccessibilityNode, getAccessibilityText, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBorder, getBoundPropertyValue, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getHeight, getInlineAllStyles, getInlineDisabledStyles, getInlinePressedStyles, getInlineSelectedStyles, getInlineStylesTheme, getInlineUnselectedStyles, getInnerHeight, getInnerPreferredH, getInnerPreferredW, getInnerWidth, getInnerX, getInnerY, getLabelForComponent, getName, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredTabIndex, getPreferredW, getPressedStyle, getPropertyNames, getPropertyTypeNames, getPropertyTypes, getPropertyValue, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getSemantics, getStyle, getTabIndex, getTensileLength, getTextSelectionSupport, getTooltip, getUIID, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initComponent, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditing, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isHScrollThumbGrabbed, isHScrollThumbHover, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, isVScrollThumbGrabbed, isVScrollThumbHover, keyRepeated, laidOut, longKeyPress, longPointerPress, onScrollX, onScrollY, onSetFocusable, paintBackground, paintBackgrounds, paintBorder, paintBorderBackground, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerDragged, pointerHover, pointerHoverPressed, pointerHoverReleased, pointerPressed, pointerReleased, pointerReleased, putClientProperty, refreshTheme, refreshTheme, remove, removeContextMenuListener, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removeMouseWheelListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, removeStylusListener, repaint, repaint, requestFocus, resetFocusable, respondsToPointerEvents, rotation, scrollRectToVisible, scrollRectToVisible, setAccessibilityText, setAlwaysTensile, setBlockLead, setBoundPropertyValue, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, setHandlesInput, setHeight, setHidden, setHidden, setHideInLandscape, setHideInPortrait, setHorizontalScrollBounds, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setPropertyValue, setPullToRefresh, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUIIDFinal, setUnselectedStyle, setVerticalScrollBounds, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContains
-
Constructor Details
-
CodeEditor
public CodeEditor()Creates an empty code editor. -
CodeEditor
-
-
Method Details
-
setText
Replaces the entire editor content.
Parameters
text: the source code
-
getText
Retrieves the current source code. The callback is invoked on the EDT.
Parameters
callback: receives the source code
-
setLanguage
Sets the language used for syntax highlighting.
Parameters
language: the language id (e.g."java","javascript","kotlin","css","xml","json","python")
-
getLanguage
Returns the current highlighting language id. -
setTheme
Sets the color theme. Currently
"light"and"dark"are supported.Parameters
theme: the theme id
-
getTheme
Returns the current theme id. -
setShowLineNumbers
public void setShowLineNumbers(boolean show) Shows or hides the line-number gutter.
Parameters
show: true to show line numbers
-
isShowLineNumbers
public boolean isShowLineNumbers()Returns true if the line-number gutter is shown. -
setTabSize
public void setTabSize(int tabSize) Sets the number of spaces inserted for a tab / used for indentation.
Parameters
tabSize: the indentation width in spaces
-
getTabSize
public int getTabSize()Returns the indentation width in spaces. -
setReadOnly
public void setReadOnly(boolean readOnly) Makes the editor read-only or editable. This is a convenience around
AbstractEditorComponent#setEditable(boolean).Parameters
readOnly: true to prevent editing
-
isReadOnly
public boolean isReadOnly()Returns true when the editor is read-only. -
insertAtCursor
Inserts text at the current caret position, replacing any active selection.
Parameters
text: the text to insert
-
getCursorPosition
Retrieves the current caret character offset. The callback is invoked on the EDT.
Parameters
callback: receives the caret offset as an Integer
-
setDiagnostics
Sets the diagnostics (errors / warnings / hints) displayed in the editor as squiggly underlines, gutter markers and tooltips. Pass an empty list (or null) to clear all diagnostics.
Parameters
diagnostics: the diagnostics to display
-
setEngineURL
Points the browser fallback at a custom editor page in the app hierarchy. Ports with low-level text input continue to use the pure editor; this URL is used only where the browser fallback is required.
Parameters
url: an app-hierarchy URL, or null for the built-in page
-
getEngineURL
Returns the custom browser-engine URL, or null for the built-in page. -
setCompletionProvider
Sets the provider that supplies code completion proposals. Passing null disables completion.
Parameters
provider: the completion provider, or null to disable completion
-
getCompletionProvider
Returns the current completion provider, or null if none is set.
-