Class RichTextEditor
java.lang.Object
org.eclipse.swt.widgets.Widget
org.eclipse.swt.widgets.Control
org.eclipse.swt.widgets.Scrollable
org.eclipse.swt.widgets.Composite
org.eclipse.nebula.widgets.richtext.RichTextEditor
- All Implemented Interfaces:
org.eclipse.swt.graphics.Drawable
public class RichTextEditor
extends org.eclipse.swt.widgets.Composite
Rich Text Editor control that wraps a
Browser
with enabled Javascript that shows a simple
HTML template containing a ckeditor as rich text editor.
The following style bits are supported:
SWT.RESIZE
- specify if the resize function of ckeditor is enabled (mostly used for embedded usage)SWT.MIN
- specify if the configured minimum dimensions should be applied to the resize function of ckeditorSWT.EMBEDDED
- specify if the rich text editor is used in embedded mode (e.g. as a cell editor of a JFace viewer)
SWT.MOZILLA
or SWT.WEBKIT
can be set to
specify the native browser that should be used for rendering
- See Also:
- https://ckeditor.com/
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
RichTextEditor.FocusInFunction
Callback function that is called via Javascript if the editor gains focus.(package private) class
RichTextEditor.FocusOutFunction
Callback function that is called via Javascript on blur in the editor part.(package private) class
RichTextEditor.JavaExecutionFinishedFunction
Callback function that is called via Javascript after a java callback is triggered via custom toolbar button.(package private) class
RichTextEditor.JavaExecutionStartedFunction
Callback function that is called via Javascript before a java callback is triggered via custom toolbar button.(package private) class
RichTextEditor.KeyPressedFunction
Callback function that is called via Javascript if a keydown event occurs in the editor part.(package private) class
RichTextEditor.KeyReleasedFunction
Callback function that is called via Javascript if a keyup event occurs in the editor part.(package private) class
RichTextEditor.ModifyFunction
Callback function that is called via Javascript if a change event occurs in the editor part. -
Field Summary
Fields Modifier and Type Field Description static java.lang.String
JAR_UNPACK_LOCATION_PROPERTY
Key of the system property to specify a fixed directory to unpack the ckeditor resources to.protected org.eclipse.swt.graphics.Rectangle
resizedBounds
-
Constructor Summary
Constructors Constructor Description RichTextEditor(org.eclipse.swt.widgets.Composite parent)
Creates aRichTextEditor
that wraps aBrowser
using the style bitSWT.NONE
and the defaultRichTextEditorConfiguration
.RichTextEditor(org.eclipse.swt.widgets.Composite parent, int style)
Creates aRichTextEditor
that wraps aBrowser
using the given style bit and the defaultRichTextEditorConfiguration
.RichTextEditor(org.eclipse.swt.widgets.Composite parent, RichTextEditorConfiguration editorConfig)
Creates aRichTextEditor
that wraps aBrowser
using the style bitSWT.NONE
and the givenRichTextEditorConfiguration
.RichTextEditor(org.eclipse.swt.widgets.Composite parent, RichTextEditorConfiguration editorConfig, int style)
Creates aRichTextEditor
that wraps aBrowser
using the given style bit and the givenRichTextEditorConfiguration
.RichTextEditor(org.eclipse.swt.widgets.Composite parent, ToolbarConfiguration toolbarConfig)
Deprecated.use constructors that take aRichTextEditorConfiguration
RichTextEditor(org.eclipse.swt.widgets.Composite parent, ToolbarConfiguration toolbarConfig, int style)
Deprecated.use constructors that take aRichTextEditorConfiguration
-
Method Summary
Modifier and Type Method Description void
addFocusListener(org.eclipse.swt.events.FocusListener listener)
void
addJavaCallbackListener(JavaCallbackListener listener)
Add aJavaCallbackListener
that is triggered on executing a Java callback via customToolbarButton
.void
addKeyListener(org.eclipse.swt.events.KeyListener listener)
void
addModifyListener(org.eclipse.swt.events.ModifyListener listener)
Adds the listener to the collection of listeners who will be notified when the receiver's text is modified, by sending it one of the messages defined in theModifyListener
interface.void
addToolbarButton(ToolbarButton button)
Adds the givenToolbarButton
to the toolbar of the editor.void
addToolbarButton(ToolbarButton button, org.eclipse.swt.browser.BrowserFunction function)
Adds the givenToolbarButton
to the toolbar of the editor.void
dispose()
java.lang.Object
evaluateJavascript(java.lang.String script)
Evaluates the specified script in the internalBrowser
and returns the result.boolean
executeJavascript(java.lang.String script)
Executes the specified script in the internalBrowser
.boolean
forceFocus()
RichTextEditorConfiguration
getEditorConfiguration()
This method returns theRichTextEditorConfiguration
that is used to configure thisRichTextEditor
.protected int
getMinimumHeight()
Returns the minimum height that should be used for initially open the editor in embedded mode.protected int
getMinimumWidth()
Returns the minimum width that should be used for initially open the editor in embedded mode.java.lang.String
getSelectedHTML()
Returns the current selected text containing the markup tags for styling.java.lang.String
getSelectedText()
Returns the current selected text without any markup tags.java.lang.String
getText()
void
insertHTML(java.lang.String html)
Inserts HTML code into the currently selected position in the editor in WYSIWYG mode.void
insertText(java.lang.String text)
Insert text content into the currently selected position in the editor in WYSIWYG mode.boolean
isEditable()
Returns the editable state.boolean
isFocusControl()
boolean
isHandleFocusChanges()
void
notifyFocusGained(org.eclipse.swt.events.FocusEvent event)
Notify the registeredFocusListener
that the editor gained focus.void
notifyFocusLost(org.eclipse.swt.events.FocusEvent event)
Notify the registeredFocusListener
that the editor lost focus.void
notifyKeyPressed(org.eclipse.swt.events.KeyEvent event)
Notify the registeredKeyListener
that a key was pressed.void
notifyKeyReleased(org.eclipse.swt.events.KeyEvent event)
Notify the registeredKeyListener
that a key was released.void
notifyModifyListeners(org.eclipse.swt.events.ModifyEvent event)
Notifies all of the receiver's listeners when the receiver's text is modified.void
removeFocusListener(org.eclipse.swt.events.FocusListener listener)
void
removeJavaCallbackListener(JavaCallbackListener listener)
Remove aJavaCallbackListener
that is triggered on executing a Java callback via customToolbarButton
.void
removeKeyListener(org.eclipse.swt.events.KeyListener listener)
void
removeModifyListener(org.eclipse.swt.events.ModifyListener listener)
Removes the listener from the collection of listeners who will be notified when the receiver's text is modified.void
removeToolbarButton(ToolbarButton button)
Removes the givenToolbarButton
from the toolbar of the editor.void
setBounds(int x, int y, int width, int height)
void
setBounds(org.eclipse.swt.graphics.Rectangle rect)
void
setEditable(boolean editable)
Sets the editable state.boolean
setFocus()
void
setHandleFocusChanges(boolean handleFocusChanges)
Configure whether focus changes should be handled or not.(package private) void
setInlineContainerBounds(int x, int y, int width, int height)
Used in embedded mode to support manual resizing of the editor.void
setLanguage(java.lang.String language)
Sets the user interface language localization to use.void
setLanguage(java.lang.String language, boolean update)
void
setLanguage(java.util.Locale locale)
Sets the user interface language localization to use.void
setLanguage(java.util.Locale locale, boolean update)
void
setText(java.lang.String text)
Set text to the editing area.void
setVisible(boolean visible)
void
updateEditor()
Update the editor.void
updateToolbar()
Update the toolbar.Methods inherited from class org.eclipse.swt.widgets.Composite
changed, checkSubclass, drawBackground, getBackgroundMode, getChildren, getLayout, getLayoutDeferred, getTabList, isLayoutDeferred, layout, layout, layout, layout, layout, setBackgroundMode, setLayout, setLayoutDeferred, setTabList, toString
Methods inherited from class org.eclipse.swt.widgets.Scrollable
computeTrim, getClientArea, getHorizontalBar, getScrollbarsMode, getVerticalBar
Methods inherited from class org.eclipse.swt.widgets.Control
addControlListener, addDragDetectListener, addGestureListener, addHelpListener, addMenuDetectListener, addMouseListener, addMouseMoveListener, addMouseTrackListener, addMouseWheelListener, addPaintListener, addTouchListener, addTraverseListener, computeSize, computeSize, dragDetect, dragDetect, getAccessible, getBackground, getBackgroundImage, getBorderWidth, getBounds, getCursor, getDragDetect, getEnabled, getFont, getForeground, getLayoutData, getLocation, getMenu, getMonitor, getOrientation, getParent, getRegion, getShell, getSize, getTextDirection, getToolTipText, getTouchEnabled, getVisible, internal_dispose_GC, internal_new_GC, isEnabled, isReparentable, isVisible, moveAbove, moveBelow, pack, pack, print, redraw, redraw, removeControlListener, removeDragDetectListener, removeGestureListener, removeHelpListener, removeMenuDetectListener, removeMouseListener, removeMouseMoveListener, removeMouseTrackListener, removeMouseWheelListener, removePaintListener, removeTouchListener, removeTraverseListener, requestLayout, setBackground, setBackgroundImage, setCapture, setCursor, setDragDetect, setEnabled, setFont, setForeground, setLayoutData, setLocation, setLocation, setMenu, setOrientation, setParent, setRedraw, setRegion, setSize, setSize, setTextDirection, setToolTipText, setTouchEnabled, toControl, toControl, toDisplay, toDisplay, traverse, traverse, traverse, update
Methods inherited from class org.eclipse.swt.widgets.Widget
addDisposeListener, addListener, checkWidget, getData, getData, getDisplay, getListeners, getStyle, isAutoDirection, isDisposed, isListening, notifyListeners, removeDisposeListener, removeListener, removeListener, reskin, setData, setData
-
Field Details
-
resizedBounds
protected org.eclipse.swt.graphics.Rectangle resizedBounds -
JAR_UNPACK_LOCATION_PROPERTY
public static final java.lang.String JAR_UNPACK_LOCATION_PROPERTYKey of the system property to specify a fixed directory to unpack the ckeditor resources to. If a system property for that key is registered and the rich text control is deployed within a JAR, the resources will be unpacked into the specified directory. If no value is registered for that key and the rich text control is deployed in a JAR, the resources will be unpacked into a temporary directory, that gets deleted when the runtime is shutdown. If the rich text control is not deployed within a JAR but as part of an Eclipse application, the bundle will be unpacked automatically. In this case this system property won't get interpreted.- See Also:
- Constant Field Values
-
-
Constructor Details
-
RichTextEditor
public RichTextEditor(org.eclipse.swt.widgets.Composite parent)Creates aRichTextEditor
that wraps aBrowser
using the style bitSWT.NONE
and the defaultRichTextEditorConfiguration
.- Parameters:
parent
- the parent composite where this rich text editor should be added to
-
RichTextEditor
@Deprecated public RichTextEditor(org.eclipse.swt.widgets.Composite parent, ToolbarConfiguration toolbarConfig)Deprecated.use constructors that take aRichTextEditorConfiguration
Creates aRichTextEditor
that wraps aBrowser
using the style bitSWT.NONE
and creates aRichTextEditorConfiguration
out of the givenToolbarConfiguration
.- Parameters:
parent
- the parent composite where this rich text editor should be added totoolbarConfig
- theToolbarConfiguration
to use ornull
for using the defaultToolbarConfiguration
-
RichTextEditor
public RichTextEditor(org.eclipse.swt.widgets.Composite parent, RichTextEditorConfiguration editorConfig)Creates aRichTextEditor
that wraps aBrowser
using the style bitSWT.NONE
and the givenRichTextEditorConfiguration
.- Parameters:
parent
- the parent composite where this rich text editor should be added toeditorConfig
- theRichTextEditorConfiguration
to use ornull
for using the defaultRichTextEditorConfiguration
-
RichTextEditor
public RichTextEditor(org.eclipse.swt.widgets.Composite parent, int style)Creates aRichTextEditor
that wraps aBrowser
using the given style bit and the defaultRichTextEditorConfiguration
.- Parameters:
parent
- the parent composite where this rich text editor should be added tostyle
- the style of widget to construct, seeBrowser
for further style bit information
-
RichTextEditor
@Deprecated public RichTextEditor(org.eclipse.swt.widgets.Composite parent, ToolbarConfiguration toolbarConfig, int style)Deprecated.use constructors that take aRichTextEditorConfiguration
Creates aRichTextEditor
that wraps aBrowser
using the given style bit and creates aRichTextEditorConfiguration
out of the givenToolbarConfiguration
.- Parameters:
parent
- the parent composite where this rich text editor should be added totoolbarConfig
- theToolbarConfiguration
to use ornull
for using the defaultToolbarConfiguration
style
- the style of widget to construct, seeBrowser
for further style bit information- See Also:
Browser
-
RichTextEditor
public RichTextEditor(org.eclipse.swt.widgets.Composite parent, RichTextEditorConfiguration editorConfig, int style)Creates aRichTextEditor
that wraps aBrowser
using the given style bit and the givenRichTextEditorConfiguration
.- Parameters:
parent
- the parent composite where this rich text editor should be added toeditorConfig
- theRichTextEditorConfiguration
to use ornull
for using the defaultRichTextEditorConfiguration
style
- the style of widget to construct, seeBrowser
for further style bit information- See Also:
Browser
-
-
Method Details
-
dispose
public void dispose()- Overrides:
dispose
in classorg.eclipse.swt.widgets.Widget
-
setVisible
public void setVisible(boolean visible)- Overrides:
setVisible
in classorg.eclipse.swt.widgets.Control
-
getText
public java.lang.String getText()- Returns:
- The text that is currently set in the editing area. Contains HTML tags for formatting.
-
setText
public void setText(java.lang.String text)Set text to the editing area. Can contain HTML tags for styling.- Parameters:
text
- The text to set to the editing area.
-
insertText
public void insertText(java.lang.String text)Insert text content into the currently selected position in the editor in WYSIWYG mode. The styles of the selected element will be applied to the inserted text. Spaces around the text will be left untouched.- Parameters:
text
- Text to be inserted into the editor.
-
insertHTML
public void insertHTML(java.lang.String html)Inserts HTML code into the currently selected position in the editor in WYSIWYG mode.- Parameters:
html
- HTML code to be inserted into the editor.
-
getSelectedText
public java.lang.String getSelectedText()Returns the current selected text without any markup tags.- Returns:
- The current selected text without any markup tags.
-
getSelectedHTML
public java.lang.String getSelectedHTML()Returns the current selected text containing the markup tags for styling.Note: It will not contain the parent tag.
- Returns:
- The current selected text containing any markup styling tags.
-
isEditable
public boolean isEditable()Returns the editable state.- Returns:
- whether or not the receiver is editable
-
updateToolbar
public void updateToolbar()Update the toolbar. Typically used if buttons where added or removed at runtime. -
updateEditor
public void updateEditor()Update the editor. Basically it will destroy and recreate the CKEditor. Needed to be used if a basic configuration is changed, e.g. the language.- Since:
- 1.1
-
setEditable
public void setEditable(boolean editable)Sets the editable state.- Parameters:
editable
- the new editable state
-
getEditorConfiguration
This method returns theRichTextEditorConfiguration
that is used to configure thisRichTextEditor
. It can be used to change some configurations at runtime.Note: After configuration values have been changed it is necessary to call
updateEditor()
so the configurations are applied.- Returns:
- The
RichTextEditorConfiguration
used to configure thisRichTextEditor
. - Since:
- 1.1
-
setLanguage
public void setLanguage(java.util.Locale locale)Sets the user interface language localization to use. Only the language part of theLocale
will be used. This method triggers an immediate update of the editor instance.- Parameters:
locale
- The user interface language localization to use.- Since:
- 1.1
-
setLanguage
public void setLanguage(java.util.Locale locale, boolean update)- Parameters:
locale
- The user interface language localization to use.update
-true
if the editor should be updated immediately,false
if the update should not be executed. In that caseupdateEditor()
needs to be executed explicitly.- Since:
- 1.1
-
setLanguage
public void setLanguage(java.lang.String language)Sets the user interface language localization to use. This method triggers an immediate update of the editor instance.- Parameters:
language
- The user interface language localization to use.- Since:
- 1.1
-
setLanguage
public void setLanguage(java.lang.String language, boolean update)- Parameters:
language
- The user interface language localization to use.update
-true
if the editor should be updated immediately,false
if the update should not be executed. In that caseupdateEditor()
needs to be executed explicitly.- Since:
- 1.1
-
addToolbarButton
Adds the givenToolbarButton
to the toolbar of the editor.- Parameters:
button
- The button to add.- See Also:
RichTextEditorConfiguration.addToolbarButton(ToolbarButton)
-
addToolbarButton
public void addToolbarButton(ToolbarButton button, org.eclipse.swt.browser.BrowserFunction function)Adds the givenToolbarButton
to the toolbar of the editor. Uses the givenBrowserFunction
as callback for the button.- Parameters:
button
- The button to add.function
- The function to use as callback.- See Also:
RichTextEditorConfiguration.addToolbarButton(ToolbarButton, BrowserFunction)
-
removeToolbarButton
Removes the givenToolbarButton
from the toolbar of the editor.- Parameters:
button
- The button to remove.- See Also:
RichTextEditorConfiguration.removeToolbarButton(ToolbarButton)
-
setFocus
public boolean setFocus()- Overrides:
setFocus
in classorg.eclipse.swt.widgets.Composite
-
forceFocus
public boolean forceFocus()- Overrides:
forceFocus
in classorg.eclipse.swt.widgets.Control
-
isFocusControl
public boolean isFocusControl()- Overrides:
isFocusControl
in classorg.eclipse.swt.widgets.Control
-
addFocusListener
public void addFocusListener(org.eclipse.swt.events.FocusListener listener)- Overrides:
addFocusListener
in classorg.eclipse.swt.widgets.Control
-
removeFocusListener
public void removeFocusListener(org.eclipse.swt.events.FocusListener listener)- Overrides:
removeFocusListener
in classorg.eclipse.swt.widgets.Control
-
notifyFocusGained
public void notifyFocusGained(org.eclipse.swt.events.FocusEvent event)Notify the registeredFocusListener
that the editor gained focus.- Parameters:
event
- The event to fire.
-
notifyFocusLost
public void notifyFocusLost(org.eclipse.swt.events.FocusEvent event)Notify the registeredFocusListener
that the editor lost focus.- Parameters:
event
- The event to fire.
-
setBounds
public void setBounds(org.eclipse.swt.graphics.Rectangle rect)- Overrides:
setBounds
in classorg.eclipse.swt.widgets.Control
-
setBounds
public void setBounds(int x, int y, int width, int height)- Overrides:
setBounds
in classorg.eclipse.swt.widgets.Control
-
setInlineContainerBounds
void setInlineContainerBounds(int x, int y, int width, int height)Used in embedded mode to support manual resizing of the editor. Executed via callback on ckeditor resize.- Parameters:
x
- the new x coordinate for the receivery
- the new y coordinate for the receiverwidth
- the new width for the receiverheight
- the new height for the receiver
-
getMinimumHeight
protected int getMinimumHeight()Returns the minimum height that should be used for initially open the editor in embedded mode. It is also used to specify the resize minimum height if the editor was created using the style bitSWT.MIN
. Using the defaultRichTextEditorConfiguration
this is 150 for the toolbar and 50 for showing one row in the editor area.- Returns:
- The minimum height to use for initially open the editor in embedded mode and for
editor resize minimum in case the editor was created with
SWT.MIN
-
getMinimumWidth
protected int getMinimumWidth()Returns the minimum width that should be used for initially open the editor in embedded mode. It is also used to specify the resize minimum width if the editor was created using the style bitSWT.MIN
. Using the defaultRichTextEditorConfiguration
this is 370 for showing the default options in three lines of the toolbar.- Returns:
- The minimum width to use for initially open the editor in embedded mode and for
editor resize minimum in case the editor was created with
SWT.MIN
-
executeJavascript
public boolean executeJavascript(java.lang.String script)Executes the specified script in the internalBrowser
. Can be used to execute Javascript directly in the browser from a listener if necessary.- Parameters:
script
- the script with javascript commands- Returns:
true
if the operation was successful andfalse
otherwise- See Also:
Browser.execute(String)
-
evaluateJavascript
public java.lang.Object evaluateJavascript(java.lang.String script)Evaluates the specified script in the internalBrowser
and returns the result. Can be used to evaluate Javascript directly in the browser from a listener if necessary.- Parameters:
script
- the script with javascript commands- Returns:
- the return value, if any, of executing the script
- See Also:
Browser.evaluate(String)
-
isHandleFocusChanges
public boolean isHandleFocusChanges()- Returns:
true
if focus changes are handled,false
if not
-
setHandleFocusChanges
public void setHandleFocusChanges(boolean handleFocusChanges)Configure whether focus changes should be handled or not. A typical use case for disabling the focus handling is for example to open a dialog from a Java callback via custom toolbar button.- Parameters:
handleFocusChanges
-true
if focus changes should be handled,false
if not
-
addKeyListener
public void addKeyListener(org.eclipse.swt.events.KeyListener listener)- Overrides:
addKeyListener
in classorg.eclipse.swt.widgets.Control
-
removeKeyListener
public void removeKeyListener(org.eclipse.swt.events.KeyListener listener)- Overrides:
removeKeyListener
in classorg.eclipse.swt.widgets.Control
-
notifyKeyPressed
public void notifyKeyPressed(org.eclipse.swt.events.KeyEvent event)Notify the registeredKeyListener
that a key was pressed.- Parameters:
event
- The event to fire.
-
notifyKeyReleased
public void notifyKeyReleased(org.eclipse.swt.events.KeyEvent event)Notify the registeredKeyListener
that a key was released.- Parameters:
event
- The event to fire.
-
addModifyListener
public void addModifyListener(org.eclipse.swt.events.ModifyListener listener)Adds the listener to the collection of listeners who will be notified when the receiver's text is modified, by sending it one of the messages defined in theModifyListener
interface.- Parameters:
listener
- the listener which should be notified- Throws:
java.lang.IllegalArgumentException
-- ERROR_NULL_ARGUMENT - if the listener is null
org.eclipse.swt.SWTException
-- ERROR_WIDGET_DISPOSED - if the receiver has been disposed
- ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
- See Also:
ModifyListener
,removeModifyListener(org.eclipse.swt.events.ModifyListener)
-
removeModifyListener
public void removeModifyListener(org.eclipse.swt.events.ModifyListener listener)Removes the listener from the collection of listeners who will be notified when the receiver's text is modified.- Parameters:
listener
- the listener which should no longer be notified- Throws:
java.lang.IllegalArgumentException
-- ERROR_NULL_ARGUMENT - if the listener is null
org.eclipse.swt.SWTException
-- ERROR_WIDGET_DISPOSED - if the receiver has been disposed
- ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
- See Also:
ModifyListener
,addModifyListener(org.eclipse.swt.events.ModifyListener)
-
notifyModifyListeners
public void notifyModifyListeners(org.eclipse.swt.events.ModifyEvent event)Notifies all of the receiver's listeners when the receiver's text is modified.- Parameters:
eventType
- the type of event which has occurredevent
- the event data- Throws:
org.eclipse.swt.SWTException
-- ERROR_WIDGET_DISPOSED - if the receiver has been disposed
- ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
- See Also:
addModifyListener(ModifyListener)
,removeModifyListener(ModifyListener)
-
addJavaCallbackListener
Add aJavaCallbackListener
that is triggered on executing a Java callback via customToolbarButton
.- Parameters:
listener
- TheJavaCallbackListener
to add.
-
removeJavaCallbackListener
Remove aJavaCallbackListener
that is triggered on executing a Java callback via customToolbarButton
.- Parameters:
listener
- TheJavaCallbackListener
to remove.
-