Class CodeEditor
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JInternalFrame
-
- ca.cgjennings.apps.arkham.AbstractStrangeEonsEditor
-
- ca.cgjennings.apps.arkham.AbstractSupportEditor
-
- ca.cgjennings.apps.arkham.editors.CodeEditor
-
- All Implemented Interfaces:
Commandable
,StrangeEonsEditor
,NavigationHost
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,javax.accessibility.Accessible
,javax.swing.RootPaneContainer
,javax.swing.WindowConstants
public class CodeEditor extends AbstractSupportEditor implements NavigationHost
Support editors are used to edit content other than game components.- Author:
- Chris Jennings
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JInternalFrame
javax.swing.JInternalFrame.AccessibleJInternalFrame, javax.swing.JInternalFrame.JDesktopIcon
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from interface ca.cgjennings.apps.arkham.StrangeEonsEditor
StrangeEonsEditor.EditorListener, StrangeEonsEditor.FieldPopulationListener, StrangeEonsEditor.HeartbeatListener
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
KEY_NAV_SIZE
static java.lang.String
KEY_SHOW_NAVIGATOR
-
Fields inherited from class ca.cgjennings.apps.arkham.AbstractStrangeEonsEditor
DEFAULT_EDITOR_ICON
-
Fields inherited from class javax.swing.JInternalFrame
closable, CONTENT_PANE_PROPERTY, desktopIcon, FRAME_ICON_PROPERTY, frameIcon, GLASS_PANE_PROPERTY, iconable, IS_CLOSED_PROPERTY, IS_ICON_PROPERTY, IS_MAXIMUM_PROPERTY, IS_SELECTED_PROPERTY, isClosed, isIcon, isMaximum, isSelected, LAYERED_PANE_PROPERTY, maximizable, MENU_BAR_PROPERTY, resizable, ROOT_PANE_PROPERTY, rootPane, rootPaneCheckingEnabled, title, TITLE_PROPERTY
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description CodeEditor(java.io.File file, CodeType codeType)
Creates a new code editor for the requested file and file type.CodeEditor(java.io.File file, java.lang.String encoding, CodeType codeType)
Creates a new code editor for the requested file, encoding, and file type.CodeEditor(java.io.File file, java.nio.charset.Charset encoding, CodeType codeType)
Creates a new code editor for the requested file, encoding, and file type.CodeEditor(java.lang.String text, CodeType codeType)
Creates a new code editor that displays text but does not allow it to be edited unless the user creates a copy using Save As.CodeEditor(java.lang.String text, java.lang.String encoding, CodeType codeType)
Creates a new code editor that displays text but does not allow it to be edited unless the user creates a copy using Save As.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canPerformCommand(AbstractCommand command)
Returnstrue
if the commandable wishes to handle the given command.static java.nio.charset.Charset
checkFileForBOM(java.io.File f)
Detects a UTF-8/UTF-16/UTF-32 BOM sequence at the start of a text file.void
clear()
Clears the contents of this component to a blank state, if the user gives permission.protected javax.swing.JPopupMenu
createPopupMenu(CodeEditorBase editor, javax.swing.JPopupMenu menu)
Returns a popup menu of actions that are appropriate for the editor type.protected java.lang.String
escape(java.lang.String line)
Called before each line is written to a file to allow the editor to convert the text content.protected void
exportImpl(int type, java.io.File f)
Subclasses should override this to export the edited content if EXPORT is a supported command.void
find()
void
format()
Format the code in the code editor, if a suitable formatter is available.javax.swing.border.Border
getBorder()
CodeType
getCodeType()
int
getDocumentLength()
Returns the length of the document, in characters.CodeEditorBase
getEditor()
java.lang.String
getEncoding()
java.lang.String[]
getExportDescriptions()
Returns a description of the file types supported for export from this editor.java.lang.String[]
getExportExtensions()
Returns the standard file extensions supported for export from this editor.FileDrop.Listener
getFileDropListener()
java.lang.String
getFileNameExtension()
Returns the standard file extension for the type of content displayed in this editor.java.lang.String
getFileTypeDescription()
Returns a description of the content displayed in this editor.javax.swing.Icon
getFrameIcon()
Returns the editor window icon.Navigator
getNavigator()
Returns the current navigator for this editor, ornull
if none is set.NavigationPoint
getSelectedNavigationPoint()
Returns the navigation point selected in the navigation panel, ornull
if none is selected.java.lang.String
getSelectedText()
Returns the selected text.java.lang.String
getText()
Returns the document text.boolean
isAttached()
Returnstrue
if this editor is currently attached to the document tab strip.boolean
isCharacterEscapingEnabled()
Returnstrue
if character escaping is enabled on read and write of the document.boolean
isCommandApplicable(AbstractCommand command)
Returnstrue
if thecommand
can be performed by this commandable in its current state.static boolean
isNavigatorVisible()
Returnstrue
if code editors will display a source navigator when one has been set.boolean
isReadOnly()
protected void
onHeartbeat()
This method is called to allow the editor to perform heartbeat processing.void
performCommand(AbstractCommand command)
Performs the command.protected void
printImpl(java.awt.print.PrinterJob job)
Subclasses should override this to print the edited document if PRINT is a supported command.void
refresh()
Reload the file, replacing the edited text.void
refreshNavigator()
Updates the navigation panel to reflect the current state of the text.void
run(boolean debugIfAvailable)
Run the current script.protected void
saveImpl(java.io.File f)
Saves the editor content to the specified file.void
select(int startOffset, int endOffset)
Selects from the start offset to the end offset.void
selectAll()
Selects the entire document.void
setAttached(boolean attach)
Sets whether this editor is attached to the document tab strip.void
setCharacterEscapingEnabled(boolean characterEscaping)
Sets whether character escaping is enabled on read and write of the document.void
setFile(java.io.File f)
Sets the preferred file to use when saving the edited component.void
setFileDropListener(FileDrop.Listener fdl)
void
setFrameIcon(javax.swing.Icon icon)
Sets the preferred icon to use for this editor window.void
setNavigator(Navigator nav)
Sets the navigator that will be used to populate the navigation panel for this editor.static void
setNavigatorVisible(boolean navIsVisible)
Sets whether source navigators are hidden.void
setReadOnly(boolean readOnly)
void
setSelectedText(java.lang.String text)
Replaces the selection with the specified text.void
setText(java.lang.String text)
Sets the document text.void
sortSelectedLines()
Displays a dialog that allows the user to sort the selected lines.protected StrangeEonsEditor
spinOffImpl()
Subclasses should override this to clone the edited document if SPIN_OFF is a supported command.protected java.lang.String
unescape(java.lang.String line)
Called as each line is read to allow the editor to convert the text content.-
Methods inherited from class ca.cgjennings.apps.arkham.AbstractSupportEditor
export
-
Methods inherited from class ca.cgjennings.apps.arkham.AbstractStrangeEonsEditor
addEditorListener, addHeartbeatListener, clearImpl, close, confirmLossOfUnsavedChanges, createTimer, createTimer, dispose, doDefaultCloseAction, fireHeartbeatEvent, getFile, getGameComponent, getTabStripPopupMenu, getTitle, getToolTipText, hasUnsavedChanges, print, removeAllStrangeEonsListeners, removeEditorListener, removeHeartbeatListener, resumeTimedUpdates, save, saveAs, select, setTitle, setToolTipText, setUnsavedChanges, spinOff, stopTimedUpdates, toString
-
Methods inherited from class javax.swing.JInternalFrame
addImpl, addInternalFrameListener, createRootPane, fireInternalFrameEvent, getAccessibleContext, getContentPane, getDefaultCloseOperation, getDesktopIcon, getDesktopPane, getFocusCycleRootAncestor, getFocusOwner, getGlassPane, getInternalFrameListeners, getJMenuBar, getLastCursor, getLayer, getLayeredPane, getMenuBar, getMostRecentFocusOwner, getNormalBounds, getRootPane, getUI, getUIClassID, getWarningString, hide, isClosable, isClosed, isFocusCycleRoot, isIcon, isIconifiable, isMaximizable, isMaximum, isResizable, isRootPaneCheckingEnabled, isSelected, moveToBack, moveToFront, pack, paintComponent, paramString, remove, removeInternalFrameListener, reshape, restoreSubcomponentFocus, setClosable, setClosed, setContentPane, setCursor, setDefaultCloseOperation, setDesktopIcon, setFocusCycleRoot, setGlassPane, setIcon, setIconifiable, setJMenuBar, setLayer, setLayer, setLayeredPane, setLayout, setMaximizable, setMaximum, setMenuBar, setNormalBounds, setResizable, setRootPane, setRootPaneCheckingEnabled, setSelected, setUI, show, toBack, toFront, updateUI
-
Methods 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, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, 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, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, 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, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, 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, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, size, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ca.cgjennings.apps.arkham.StrangeEonsEditor
getFrameIcon, isAttached, setAttached, setFrameIcon
-
-
-
-
Field Detail
-
KEY_SHOW_NAVIGATOR
public static final java.lang.String KEY_SHOW_NAVIGATOR
- See Also:
- Constant Field Values
-
KEY_NAV_SIZE
public static final java.lang.String KEY_NAV_SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CodeEditor
public CodeEditor(java.io.File file, CodeType codeType) throws java.io.IOException
Creates a new code editor for the requested file and file type. The default encoding for the file type will be used to read and write the file.- Parameters:
file
-codeType
-- Throws:
java.io.IOException
-
CodeEditor
public CodeEditor(java.io.File file, java.nio.charset.Charset encoding, CodeType codeType) throws java.io.IOException
Creates a new code editor for the requested file, encoding, and file type.- Parameters:
file
-encoding
-codeType
-- Throws:
java.io.IOException
-
CodeEditor
public CodeEditor(java.io.File file, java.lang.String encoding, CodeType codeType) throws java.io.IOException
Creates a new code editor for the requested file, encoding, and file type.- Parameters:
file
-encoding
-codeType
-- Throws:
java.io.IOException
-
CodeEditor
public CodeEditor(java.lang.String text, CodeType codeType)
Creates a new code editor that displays text but does not allow it to be edited unless the user creates a copy using Save As. The default encoding for the content type will be used to read and write the file.- Parameters:
text
- the text to display in the editorcodeType
- the content type of the text
-
CodeEditor
public CodeEditor(java.lang.String text, java.lang.String encoding, CodeType codeType)
Creates a new code editor that displays text but does not allow it to be edited unless the user creates a copy using Save As.- Parameters:
text
- the text to display in the editorencoding
- the name of the character set to use when reading or writing the filecodeType
- the content type of the text
-
-
Method Detail
-
setReadOnly
public void setReadOnly(boolean readOnly)
-
isReadOnly
public boolean isReadOnly()
-
checkFileForBOM
public static java.nio.charset.Charset checkFileForBOM(java.io.File f) throws java.io.IOException
Detects a UTF-8/UTF-16/UTF-32 BOM sequence at the start of a text file. If one exists, returns theCharset
indicated by the sequence. Otherwise, returnsnull
.- Parameters:
f
- the file to check- Returns:
- the encoding represented by the byte order mark, or
null
- Throws:
java.io.IOException
-
refresh
public void refresh() throws java.io.IOException
Reload the file, replacing the edited text.- Throws:
java.io.IOException
-
setFileDropListener
public void setFileDropListener(FileDrop.Listener fdl)
-
getFileDropListener
public FileDrop.Listener getFileDropListener()
-
find
public void find()
-
canPerformCommand
public boolean canPerformCommand(AbstractCommand command)
Description copied from class:AbstractSupportEditor
Returnstrue
if the commandable wishes to handle the given command. This method defines the set of commands that the commandable responds to. The commandable might not be able to act on the command at the current moment. For example, a commandable that responds to "Cut" could return true from this method, but false fromAbstractStrangeEonsEditor.isCommandApplicable(ca.cgjennings.apps.arkham.commands.AbstractCommand)
if there is currently no selection to cut.The base class for support editors returns true for the following standard commands: CLEAR, EXPORT, PRINT, SAVE, SAVE_AS.
- Specified by:
canPerformCommand
in interfaceCommandable
- Specified by:
canPerformCommand
in interfaceStrangeEonsEditor
- Overrides:
canPerformCommand
in classAbstractSupportEditor
- Parameters:
command
- the command to be performed- Returns:
true
if this commandable wishes to handle the command (even if it cannot execute the command currently)- See Also:
Commands
-
isCommandApplicable
public boolean isCommandApplicable(AbstractCommand command)
Description copied from class:AbstractStrangeEonsEditor
Returnstrue
if thecommand
can be performed by this commandable in its current state. IfCommandable.canPerformCommand(ca.cgjennings.apps.arkham.commands.AbstractCommand)
would return false for this command, then this must also return false. The base class returns the value ofAbstractStrangeEonsEditor.canPerformCommand(ca.cgjennings.apps.arkham.commands.AbstractCommand)
, except that if the command is SAVE, it returns false if the editor does not have unsaved changes.- Specified by:
isCommandApplicable
in interfaceCommandable
- Specified by:
isCommandApplicable
in interfaceStrangeEonsEditor
- Overrides:
isCommandApplicable
in classAbstractStrangeEonsEditor
- Parameters:
command
- the command to be performed- Returns:
true
if this commandable can currently perform the command
-
performCommand
public void performCommand(AbstractCommand command)
Description copied from class:AbstractStrangeEonsEditor
Performs the command. IfCommandable.isCommandApplicable(ca.cgjennings.apps.arkham.commands.AbstractCommand)
would returnfalse
for this command, then this should do nothing.The base class provides a framework for handling common document commands. To use the framework, override
AbstractStrangeEonsEditor.canPerformCommand(ca.cgjennings.apps.arkham.commands.AbstractCommand)
to return true for the commands you wish to support. Then this method will call the following methods (as appropriate): null null nullAbstractStrangeEonsEditor.clear()
,AbstractStrangeEonsEditor.save()
,AbstractStrangeEonsEditor.saveAs()
,AbstractStrangeEonsEditor.export()
,AbstractStrangeEonsEditor.spinOff()
, orAbstractStrangeEonsEditor.print()
. These methods handle common details of implementing these commands, then pass control to a matching implementation method which the subclass must override to perform those aspects of the command which are unique to the editor's content.For example, to implement document saving, a subclass would override
AbstractStrangeEonsEditor.canPerformCommand(ca.cgjennings.apps.arkham.commands.AbstractCommand)
to return true for the SAVE and SAVE_AS commands, then overrideAbstractStrangeEonsEditor.saveImpl(java.io.File)
to write the editor content to the provided file.- Specified by:
performCommand
in interfaceCommandable
- Specified by:
performCommand
in interfaceStrangeEonsEditor
- Overrides:
performCommand
in classAbstractStrangeEonsEditor
- Parameters:
command
- the command to perform
-
setFile
public void setFile(java.io.File f)
Description copied from interface:StrangeEonsEditor
Sets the preferred file to use when saving the edited component.- Specified by:
setFile
in interfaceStrangeEonsEditor
- Overrides:
setFile
in classAbstractStrangeEonsEditor
- Parameters:
f
- the file to use for Save operations- See Also:
StrangeEonsEditor.getFile()
-
onHeartbeat
protected void onHeartbeat()
Description copied from class:AbstractStrangeEonsEditor
This method is called to allow the editor to perform heartbeat processing. The base class will callAbstractStrangeEonsEditor.fireHeartbeatEvent()
to notify any attached listeners.- Overrides:
onHeartbeat
in classAbstractStrangeEonsEditor
-
getEditor
public final CodeEditorBase getEditor()
-
getEncoding
public java.lang.String getEncoding()
-
saveImpl
protected void saveImpl(java.io.File f) throws java.io.IOException
Description copied from class:AbstractStrangeEonsEditor
Saves the editor content to the specified file. This method is called by {link #save} in response to save requests. Subclasses must override it to write an appropriate file for the document if the editor supports saving.- Overrides:
saveImpl
in classAbstractStrangeEonsEditor
- Parameters:
f
- the file to write content to- Throws:
java.io.IOException
- if the save fails
-
getCodeType
public CodeType getCodeType()
-
getFileNameExtension
public java.lang.String getFileNameExtension()
Description copied from interface:StrangeEonsEditor
Returns the standard file extension for the type of content displayed in this editor.- Specified by:
getFileNameExtension
in interfaceStrangeEonsEditor
- Returns:
- a file extension, such as
"txt"
- See Also:
StrangeEonsEditor.getFileTypeDescription()
-
getFileTypeDescription
public java.lang.String getFileTypeDescription()
Description copied from interface:StrangeEonsEditor
Returns a description of the content displayed in this editor. For English descriptions, this should be plural as it is used to describe the file type in save dialogs.- Specified by:
getFileTypeDescription
in interfaceStrangeEonsEditor
- Returns:
- a human-friendly description of the content associated with the editor, such as "Text Files"
- See Also:
StrangeEonsEditor.getFileNameExtension()
-
spinOffImpl
protected StrangeEonsEditor spinOffImpl()
Description copied from class:AbstractStrangeEonsEditor
Subclasses should override this to clone the edited document if SPIN_OFF is a supported command.- Overrides:
spinOffImpl
in classAbstractStrangeEonsEditor
- Returns:
- a new editor with an exact copy of this document
-
clear
public void clear()
Description copied from class:AbstractStrangeEonsEditor
Clears the contents of this component to a blank state, if the user gives permission. This implementation allows the user to cancel the clear operation if there are unsaved changes, and then callsclearImpl
to handle the details of clearing the edited content. To use it, overrideAbstractStrangeEonsEditor.clearImpl()
to perform the clear operation.- Specified by:
clear
in interfaceStrangeEonsEditor
- Overrides:
clear
in classAbstractStrangeEonsEditor
- See Also:
StrangeEonsEditor.canPerformCommand(ca.cgjennings.apps.arkham.commands.AbstractCommand)
-
printImpl
protected void printImpl(java.awt.print.PrinterJob job) throws javax.print.PrintException, java.awt.print.PrinterException
Description copied from class:AbstractStrangeEonsEditor
Subclasses should override this to print the edited document if PRINT is a supported command.- Overrides:
printImpl
in classAbstractStrangeEonsEditor
- Parameters:
job
- the printer job to use for printing- Throws:
javax.print.PrintException
- if a printing error occursjava.awt.print.PrinterException
- if a printing error occurs
-
exportImpl
protected void exportImpl(int type, java.io.File f) throws java.io.IOException
Description copied from class:AbstractSupportEditor
Subclasses should override this to export the edited content if EXPORT is a supported command. The value oftype
is the index of the element inAbstractSupportEditor.getExportExtensions()
for the file type that was selected by the user. The value offile
is the destination file to write content to.- Overrides:
exportImpl
in classAbstractSupportEditor
- Parameters:
type
- the index of the file format to exportf
- the file to write content to- Throws:
java.io.IOException
- if an error occurs while writing
-
getExportExtensions
public java.lang.String[] getExportExtensions()
Description copied from class:AbstractSupportEditor
Returns the standard file extensions supported for export from this editor. This implementation returns an empty array. If your editor supports export, it should override this to return- Overrides:
getExportExtensions
in classAbstractSupportEditor
- Returns:
- an array of file extensions, such as
"txt"
This base implementation returns an empty array.
-
getExportDescriptions
public java.lang.String[] getExportDescriptions()
Description copied from class:AbstractSupportEditor
Returns a description of the file types supported for export from this editor. The length and indices of this array match those returned byAbstractSupportEditor.getExportExtensions()
, that is, element 0 of this array is a description of the file type represented by the element 0 of the extensions array.- Overrides:
getExportDescriptions
in classAbstractSupportEditor
- Returns:
- an array of human-readable type descriptions, such as "Text
document"
This base implementation returns an empty array.
-
escape
protected java.lang.String escape(java.lang.String line)
Called before each line is written to a file to allow the editor to convert the text content. The default implementation checks ifisCharacterEscapingEnabled()
returnstrue
, and if so, it applies Unicode escapes to the line.- Parameters:
line
- the line to process- Returns:
- the processed line
-
unescape
protected java.lang.String unescape(java.lang.String line)
Called as each line is read to allow the editor to convert the text content. The default implementation checks ifisCharacterEscapingEnabled()
returnstrue
, and if so, it removes Unicode escapes from the line.- Parameters:
line
- the line to process- Returns:
- the processed line
-
isCharacterEscapingEnabled
public boolean isCharacterEscapingEnabled()
Returnstrue
if character escaping is enabled on read and write of the document. When enabled, the default behaviour ofescape(java.lang.String)
andunescape(java.lang.String)
is to automatically convert Java-style Unicode escapeUnicode sequences in the file into their character equivalents when displayed in the editor.- Returns:
true
if automatic character escaping is enabled- See Also:
EscapedTextCodec
-
setCharacterEscapingEnabled
public void setCharacterEscapingEnabled(boolean characterEscaping)
Sets whether character escaping is enabled on read and write of the document.- Parameters:
characterEscaping
- iftrue
, automatic character escaping is enabled- See Also:
isCharacterEscapingEnabled()
,escape(java.lang.String)
,unescape(java.lang.String)
-
createPopupMenu
protected javax.swing.JPopupMenu createPopupMenu(CodeEditorBase editor, javax.swing.JPopupMenu menu)
Returns a popup menu of actions that are appropriate for the editor type.- Returns:
- a context menu populated with menu items for the current selection and code type
-
format
public void format()
Format the code in the code editor, if a suitable formatter is available. Otherwise, do nothing.
-
setNavigator
public void setNavigator(Navigator nav)
Sets the navigator that will be used to populate the navigation panel for this editor. Setting the navigator tonull
will disable the navigator panel.- Parameters:
nav
- the new navigator to set
-
getNavigator
public final Navigator getNavigator()
Returns the current navigator for this editor, ornull
if none is set.- Specified by:
getNavigator
in interfaceNavigationHost
- Returns:
- the current navigator
-
getSelectedNavigationPoint
public NavigationPoint getSelectedNavigationPoint()
Returns the navigation point selected in the navigation panel, ornull
if none is selected.- Returns:
- the selected navigation point, or
null
-
refreshNavigator
public void refreshNavigator()
Updates the navigation panel to reflect the current state of the text.- Specified by:
refreshNavigator
in interfaceNavigationHost
-
isNavigatorVisible
public static boolean isNavigatorVisible()
Returnstrue
if code editors will display a source navigator when one has been set. This setting applies to all code editors.- Returns:
true
if navigators are visible
-
setNavigatorVisible
public static void setNavigatorVisible(boolean navIsVisible)
Sets whether source navigators are hidden. This affects all code editors. To remove the navigator of a specific editor, set is navigator tonull
.- Parameters:
navIsVisible
- iftrue
, the navigator panel will be displayed by code editors; otherwise it will be hidden
-
getText
public java.lang.String getText()
Returns the document text.- Returns:
- the edited text
-
setText
public void setText(java.lang.String text)
Sets the document text.- Parameters:
text
- to text to be edited
-
getSelectedText
public java.lang.String getSelectedText()
Returns the selected text. Returns an empty string if the selection is empty.- Returns:
- the text with the current selection
-
setSelectedText
public void setSelectedText(java.lang.String text)
Replaces the selection with the specified text. If the selection is empty, then the specified text is inserted.- Parameters:
text
- the text to replace the selection with
-
select
public void select(int startOffset, int endOffset)
Selects from the start offset to the end offset.- Parameters:
startOffset
- the start offsetendOffset
- the end offset
-
selectAll
public void selectAll()
Selects the entire document.
-
getDocumentLength
public int getDocumentLength()
Returns the length of the document, in characters.- Returns:
- the document length
-
run
public void run(boolean debugIfAvailable)
Run the current script.- Parameters:
debugIfAvailable
- if the debugger is enabled, debug the script by activating a breakpoint when the script starts running
-
sortSelectedLines
public void sortSelectedLines()
Displays a dialog that allows the user to sort the selected lines.
-
getBorder
public final javax.swing.border.Border getBorder()
- Overrides:
getBorder
in classjavax.swing.JComponent
-
setFrameIcon
public void setFrameIcon(javax.swing.Icon icon)
Sets the preferred icon to use for this editor window. This icon may be used to represent the window in various parts of the application interface. Possible example uses include the following: the document tab, the editor's item in the Window menu, and the frame icon of the editor's detached window. Note, however, that there is no guarantee that the icon will be used, or how. Furthermore, the icon may be used in modified form.- Overrides:
setFrameIcon
in classjavax.swing.JInternalFrame
- Parameters:
icon
- the preferred icon for the editor window- See Also:
JInternalFrame.getFrameIcon()
-
getFrameIcon
public javax.swing.Icon getFrameIcon()
Returns the editor window icon.- Overrides:
getFrameIcon
in classjavax.swing.JInternalFrame
- Returns:
- the icon for the editor, or
null
if no icon is set
-
setAttached
public void setAttached(boolean attach)
Sets whether this editor is attached to the document tab strip. Iftrue
, the editor is attached; this is the default state for new editors. Iffalse
, the editor is detached from the tab strip. When detached, the editor appears in its own floating window separate from the main application window. The editor reattaches when the window is closed.- Parameters:
attach
- iftrue
, attaches the window to the tab strip
-
isAttached
public boolean isAttached()
Returnstrue
if this editor is currently attached to the document tab strip.- Returns:
true
if the editor is attached- See Also:
setAttached(boolean)
-
-