Class SHTMLEditorPane
- All Implemented Interfaces:
DragGestureListener,DragSourceListener,DropTargetListener,ImageObserver,MenuContainer,Serializable,EventListener,Accessible,Scrollable
This is extending JEditorPane by cut and paste
and drag and drop for HTML text.
JEditorPane inherits cut and paste from
JTextComponent where handling for plain text is implemented only.
JEditorPane has no additional functionality to add cut
and paste for the various content types it supports
(such as 'text/html').
In stage 4 support for caret movement inside tables and table manipulation methods are added.
In stage 6 support for list manipulation was added.
- See Also:
-
HTMLTextHTMLTextSelection- Serialized Form
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class javax.swing.JEditorPane
JEditorPane.AccessibleJEditorPane, JEditorPane.AccessibleJEditorPaneHTML, JEditorPane.JEditorPaneAccessibleHypertextSupportNested classes/interfaces inherited from class javax.swing.text.JTextComponent
JTextComponent.AccessibleJTextComponent, JTextComponent.DropLocation, JTextComponent.KeyBindingNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intrange indicator for applying attributes to all cellsstatic final Stringdefault table widthstatic final Stringdefault vertical alignmentstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final intrange indicator for applying attributes to the current cell onlystatic final intrange indicator for applying attributes to cells of the current column onlystatic final intrange indicator for applying attributes to cells of the current row onlyFields inherited from class javax.swing.JEditorPane
HONOR_DISPLAY_PROPERTIES, W3C_LENGTH_UNITSFields inherited from class javax.swing.text.JTextComponent
DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEYFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidappend a table column after the last column (if any)voidAppends a row to a table if the caret is inside a table.voidapplyAttributes(AttributeSet attributeSet, boolean applyToCompleteParagraph) voidapplyAttributes(AttributeSet attributeSet, boolean applyToCompleteParagraph, boolean replace) Sets the attributes for a given part of this editor.voidapplyCellAttributes(AttributeSet a, int range) apply a set of attributes to a given range of cells of the table the caret is currently in (if any)voidapplyCharacterTag(String tag) (Unfinished.)voidapply a set of attributes to the list the caret is currently in (if any)voidapplyParagraphTag(String tag, Vector overwritableTags) Switches the elements in the current selection to the given tag.voidapply a set of attributes to the table the caret is currently in (if any)voiddelete the column of the table the caret is currently in (if any)voiddelete the row of the table the caret is currently in (if any)voiddragDropEnd(DragSourceDropEvent event) this message goes to DragSourceListener, informing it that the dragging has endedvoiddragEnter(DragSourceDragEvent event) this message goes to DragSourceListener, informing it that the dragging has entered the DropSitevoiddragEnter(DropTargetDragEvent event) is invoked when you are dragging over the DropSitevoiddragExit(DragSourceEvent event) this message goes to DragSourceListener, informing it that the dragging has exited the DropSitevoiddragExit(DropTargetEvent event) is invoked when you are exit the DropSite without droppingvoida drag gesture has been initiatedvoiddragOver(DragSourceDragEvent event) this message goes to DragSourceListener, informing it that the dragging is currently ocurring over the DropSitevoiddragOver(DropTargetDragEvent event) is invoked when a drag operation is going onvoiddrop(DropTargetDropEvent event) a drop has occurred.voidis invoked when the user changes the dropActionvoidis invoked if the user modifies the current drop gestureelementToHTML(Element element) Returns the string HTML representation of the element.Gets the paragraph element in which the caret is located.Gets the table cell at the current caret position.getPopup()getTableCell(int position) Gets the table cell element at the given position, or null if none.voidgoNextCell(Element cell) voidgoPrevCell(Element cell) voidinitDnd()Initialize the drag and drop implementation for this component.voidinsertAnchor(String anchorName) apply a new anchor to the currently selected textvoidinsert a line break (i.e.voidinsertNewTable(int colCount) Insert a new table.voidinsert a table column before the current column (if any)voidinsertTableRow(String forcedCellName) Inserts a row to a table, assuming the caret is currently inside a table.protected booleanprocessKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) voidremoveAnchor(String anchorName) remove an anchor with a given namevoidvoidvoidreplaceSelection(com.lightdev.app.shtm.HTMLText replacementHTMLText) Replaces the currently selected content with new content represented by the givenHTMLText.voidreplaceSelection(String content) voidset a text link at the current selection replacing the selection with a given text.voidSets a hyperlink at the current selection, replacing the selection with the given text or image.voidsetPasteMode(SHTMLEditorPane.PasteMode pasteMode) voidvoidsetPopup(JPopupMenu popup) voidConvenience method for setting the document textvoidvoidtoggleList(String listTag, AttributeSet attributeSet, boolean forceOff) toggle list formatting on or off for the currently selected text portion.voidFor each cell within the selection, turns a table data cell into a table header cell or vice versa.booleantryDefaultKeyStrokeActionWithinCell(int keyCode, int modifiers, ActionEvent event) Performs the default key stroke action, assuming that the caret is within a table cell and that the action is a cursor move; if the cursor leaves the current table cell, undoes the action.Methods inherited from class javax.swing.JEditorPane
addHyperlinkListener, createDefaultEditorKit, createEditorKitForContentType, fireHyperlinkUpdate, getAccessibleContext, getContentType, getEditorKit, getEditorKitClassNameForContentType, getEditorKitForContentType, getHyperlinkListeners, getPage, getPreferredSize, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getStream, getText, getUIClassID, paramString, read, registerEditorKitForContentType, registerEditorKitForContentType, removeHyperlinkListener, scrollToReference, setContentType, setEditorKit, setEditorKitForContentType, setPage, setPageMethods inherited from class javax.swing.text.JTextComponent
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getActions, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableUnitIncrement, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, modelToView2D, moveCaretPosition, paste, print, print, print, processInputMethodEvent, read, removeCaretListener, removeKeymap, removeNotify, restoreComposedText, saveComposedText, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDocument, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, updateUI, viewToModel, viewToModel2D, writeMethods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
THIS_CELL
public static final int THIS_CELLrange indicator for applying attributes to the current cell only- See Also:
-
THIS_COLUMN
public static final int THIS_COLUMNrange indicator for applying attributes to cells of the current column only- See Also:
-
THIS_ROW
public static final int THIS_ROWrange indicator for applying attributes to cells of the current row only- See Also:
-
ALL_CELLS
public static final int ALL_CELLSrange indicator for applying attributes to all cells- See Also:
-
DEFAULT_TABLE_WIDTH
default table width- See Also:
-
DEFAULT_VERTICAL_ALIGN
default vertical alignment- See Also:
-
newListItemAction
- See Also:
-
insertLineBreakAction
- See Also:
-
deletePrevCharAction
- See Also:
-
deleteNextCharAction
- See Also:
-
moveUpAction
- See Also:
-
homeAction
- See Also:
-
shiftHomeAction
- See Also:
-
shiftEndAction
- See Also:
-
endAction
- See Also:
-
moveDownAction
- See Also:
-
-
Constructor Details
-
SHTMLEditorPane
public SHTMLEditorPane()construct a newSHTMLEditorPane
-
-
Method Details
-
setUI
- Overrides:
setUIin classJTextComponent
-
getPasteMode
-
setPasteMode
-
setPasteModeFromPrefs
public void setPasteModeFromPrefs() -
processKeyBinding
- Overrides:
processKeyBindingin classJComponent
-
setText
Convenience method for setting the document text- Overrides:
setTextin classJEditorPane- Parameters:
sText- the html-text of the document
-
applyListAttributes
apply a set of attributes to the list the caret is currently in (if any)- Parameters:
a- the set of attributes to apply
-
toggleList
toggle list formatting on or off for the currently selected text portion.Switches list display on for the given type, if the selection contains parts not formatted as list or parts formatted as list of another type.
Switches list formatting off, if the selection contains only parts formatted as list of the given type.
- Parameters:
listTag- the list tag type to toggle on or off (UL or OL)attributeSet- the attributes to use for the list to toggle toforceOff- indicator for toggle operation. If true, possibly exisiting list formatting inside the selected parts always is switched off. If false, the method decides, if list formatting for the parts inside the selection needs to be switched on or off.
-
insertNewTable
public void insertNewTable(int colCount) Insert a new table.- Parameters:
colCount- the number of columns the new table shall have
-
insertAnchor
apply a new anchor to the currently selected textIf nothing is selected, this method does nothing
- Parameters:
anchorName- the name of the new anchor
-
insertBreak
public void insertBreak()insert a line break (i.e. a break for which paragraph spacing is not applied) -
setLink
set a text link at the current selection replacing the selection with a given text.If nothing is selected, but the caret is inside a link, this will replace the existing link. If nothing is selected and the caret is not inside a link, this method does nothing.
- Parameters:
linkText- the text that shall appear as link at the current selectionhref- the target this link shall refer toclassName- the style class to be used
-
setLink
public void setLink(String linkText, String href, String className, String linkImage, Dimension size) Sets a hyperlink at the current selection, replacing the selection with the given text or image.- Parameters:
linkText- the text to show as link (or null, if an image shall appear instead)href- the link referenceclassName- the style name to be used for the linklinkImage- the file name of the image be used for the link (or null, if a text link is to be set instead)size- the size of the image or null
-
removeAnchor
remove an anchor with a given name- Parameters:
anchorName- the name of the anchor to remove
-
insertTableColumn
public void insertTableColumn()insert a table column before the current column (if any) -
appendTableColumn
public void appendTableColumn()append a table column after the last column (if any) -
appendTableRow
public void appendTableRow()Appends a row to a table if the caret is inside a table. -
insertTableRow
Inserts a row to a table, assuming the caret is currently inside a table. -
deleteTableRow
public void deleteTableRow()delete the row of the table the caret is currently in (if any) -
deleteTableCol
public void deleteTableCol()delete the column of the table the caret is currently in (if any)width of adjacent column is adjusted, if there is more than one column in the table. Width adjustment only works, if width attributes of both the column to remove and its adjacent column have the same unit (pt or %).
If there is only one cell or if the caret is not in a table, this method does nothing
Smart border handling automatically sets the left border of a cell to zero, if the cell on the left of that cell has a right border and both cells have no margin. In that case removing the first column will cause all cells of the new first column to have no left border.
-
toggleTableHeaderCell
public void toggleTableHeaderCell()For each cell within the selection, turns a table data cell into a table header cell or vice versa. -
applyTableAttributes
apply a set of attributes to the table the caret is currently in (if any)- Parameters:
a- the set of attributes to apply
-
applyCellAttributes
apply a set of attributes to a given range of cells of the table the caret is currently in (if any)- Parameters:
a- the set of attributes to applyrange- the range of cells to apply attributes to
-
getSHTMLDocument
-
goNextCell
-
goPrevCell
-
getCurrentTableCell
Gets the table cell at the current caret position.- Returns:
- the Element having the current table cell or null if the caret is not inside a table cell
-
getCurrentLinkElement
-
getTableCell
Gets the table cell element at the given position, or null if none. -
getCurrentParagraphElement
Gets the paragraph element in which the caret is located. -
replaceSelection
- Overrides:
replaceSelectionin classJEditorPane
-
replaceSelection
public void replaceSelection(com.lightdev.app.shtm.HTMLText replacementHTMLText) Replaces the currently selected content with new content represented by the givenHTMLText. If there is no selection this amounts to an insert of the given text. If there is no replacement text this amounts to a removal of the current selection. This method overrides replaceSelection inJEditorPanefor usage of our own HTMLText object.- Parameters:
replacementHTMLText- the content to replace the selection with
-
initDnd
public void initDnd()Initialize the drag and drop implementation for this component.DropTarget, DragSource and DragGestureRecognizer are instantiated and a MouseListener is established to track the selection in drag operations
this ideally is called in the constructor of a class which would like to implement drag and drop
-
dragGestureRecognized
a drag gesture has been initiated- Specified by:
dragGestureRecognizedin interfaceDragGestureListener
-
dragDropEnd
this message goes to DragSourceListener, informing it that the dragging has ended- Specified by:
dragDropEndin interfaceDragSourceListener
-
dragOver
is invoked when a drag operation is going on- Specified by:
dragOverin interfaceDropTargetListener
-
drop
a drop has occurred. If the dragged element has a suitableDataFlavor, do the drop.- Specified by:
dropin interfaceDropTargetListener- Parameters:
event- - the event specifiying the drop operation- See Also:
-
dropActionChanged
is invoked if the user modifies the current drop gesture- Specified by:
dropActionChangedin interfaceDropTargetListener
-
dropActionChanged
is invoked when the user changes the dropAction- Specified by:
dropActionChangedin interfaceDragSourceListener
-
dragEnter
is invoked when you are dragging over the DropSite- Specified by:
dragEnterin interfaceDropTargetListener
-
dragExit
is invoked when you are exit the DropSite without dropping- Specified by:
dragExitin interfaceDropTargetListener
-
dragEnter
this message goes to DragSourceListener, informing it that the dragging has entered the DropSite- Specified by:
dragEnterin interfaceDragSourceListener
-
dragExit
this message goes to DragSourceListener, informing it that the dragging has exited the DropSite- Specified by:
dragExitin interfaceDragSourceListener
-
dragOver
this message goes to DragSourceListener, informing it that the dragging is currently ocurring over the DropSite- Specified by:
dragOverin interfaceDragSourceListener
-
getTransferHandler
- Overrides:
getTransferHandlerin classJComponent
-
removeCharacterAttributes
public void removeCharacterAttributes() -
removeParagraphAttributes
public void removeParagraphAttributes() -
applyAttributes
-
applyAttributes
public void applyAttributes(AttributeSet attributeSet, boolean applyToCompleteParagraph, boolean replace) Sets the attributes for a given part of this editor. If a range of text is selected, the attributes are applied to the selection. If nothing is selected, the input attributes of the given editor are set thus applying the given attributes to future inputs.- Parameters:
attributeSet- the set of attributes to applyapplyToCompleteParagraph- true, if the attributes shall be applied to the whole paragraph, false, if only the selected range of characters shall have themreplace- true, if existing attribtes are to be replaced, false if not
-
applyCharacterTag
(Unfinished.) -
applyParagraphTag
Switches the elements in the current selection to the given tag. If allowedTags is non-null, applies the tag only if it is contained in allowedTags. TODO: The new parameter does not work. So the method only works for paragraph tags, like H1, H2 etc. --Dan- Parameters:
tag- the tag name to switche elements tooverwritableTags- Tags that may be overwritten by the new tag.
-
getPopup
-
setPopup
-
elementToHTML
Returns the string HTML representation of the element. -
tryDefaultKeyStrokeActionWithinCell
Performs the default key stroke action, assuming that the caret is within a table cell and that the action is a cursor move; if the cursor leaves the current table cell, undoes the action. Returns true if the cursor stayed within the table cell. -
getSelectedText
- Overrides:
getSelectedTextin classJTextComponent
-