package bluej.extensions.editor;

import java.io.IOException;

import bluej.parser.SourceLocation;


| Proxy object that allows interaction with the BlueJ Editor for a | particular class. | Except as marked, methods of this class must be called from a swing compatible thread. | | @author Damiano Bolla, University of Kent at Canterbury, 2004 | public class Editor { private bluej.editor.TextEditor bjEditor;
| Constructor must not be public. | You get an Editor object by calling BClass.getEditor(), which | will create a (non-visible) editor if one does not already exist. | | @param bjEditor Description of the Parameter | Editor(bluej.editor.TextEditor bjEditor) { this.bjEditor = bjEditor; } bluej.editor.Editor getEditor() { return bjEditor; }
| Request the editor to save the file currently opened. | public void saveFile() { try { bjEditor.save(); } catch (IOException ioe) { } }
| Request the editor to load the file currently opened. | public void loadFile() { bjEditor.reloadFile(); }
| Show or hide this Editor. | | @param visible If true, make this editor visible | public void setVisible(boolean visible) { bjEditor.setEditorVisible(visible, false); }
| Is this Editor currently visible? | | @return true if the Editor is visible, false otherwise. | public boolean isVisible() { return bjEditor.isOpen(); }
| Returns the current caret location (the position of the user's cursor) within the edited text. | | @return the textLocation. | public TextLocation getCaretLocation() { return convertLocation(bjEditor.getCaretLocation()); }
| Sets the current caret location within the edited text. | | @param location The location in the text to set the Caret to. | @throws IllegalArgumentException if the specified TextLocation represents a position which does not exist in the text. | public void setCaretLocation(TextLocation location) { bjEditor.setCaretLocation(convertLocation(location)); }
| Request the editor to display the given message in the editor message area. | The message will be cleared using BlueJ's usual rules. | | @param message The message to display. | public void showMessage(String message) { bjEditor.writeMessage(message); }
| Returns the location at which current selection begins. | | @return the current beginning of the selection or null if no text is selected. | public TextLocation getSelectionBegin() { return convertLocation(bjEditor.getSelectionBegin()); }
| Returns the location at which the current selection ends. | | @return the current end of the selection or null if no text is selected | public TextLocation getSelectionEnd() { return convertLocation(bjEditor.getSelectionEnd()); }
| Returns the text which lies between the two TextLocations. | | @param begin The beginning of the text to get | @param end The end of the text to get | @return The text value | @throws IllegalArgumentException if either of the specified TextLocations represent a position which does not exist in the text. | public String getText(TextLocation begin, TextLocation end) { return bjEditor.getText(convertLocation(begin), convertLocation(end)); }
| Request the editor to replace the text between beginning and end with the given newText | If begin and end refer to the same location, the text is inserted. | | @param begin where to start to replace | @param end where to end to replace | @param newText The new text value | @throws IllegalArgumentException if either of the specified TextLocations | represent a position which does not exist in the text. | public void setText(TextLocation begin, TextLocation end, String newText) { bjEditor.setText(convertLocation(begin), convertLocation(end), newText); }
| Request the editor to mark the text between begin and end as selected. | | @param begin where to start the selection | @param end where to end the selection | @throws IllegalArgumentException if either of the specified TextLocations | represent a position which does not exist in the text. | public void setSelection(TextLocation begin, TextLocation end) { bjEditor.setSelection(convertLocation(begin), convertLocation(end)); }
| Request the editor to permit or deny editor content modification (via the editor GUI). | Extensions should set readOnly to true before changing the editor content programmatically. | | @param readOnly If true user cannot change the editor content using the GUI, false allows user interaction. | public void setReadOnly(boolean readOnly) { bjEditor.setReadOnly(readOnly); }
| Is the editor currently set to readOnly?. | | @return true if the user cannot change the text using the GUI, false othervise | public boolean isReadOnly() { return bjEditor.isReadOnly(); }
| Returns a property of the current editor. | This allows custom versions of the editor to communicate with extensions. | | @param propertyKey The propertyKey of the property to retrieve. | @return the property value or null if it is not found | public Object getProperty(String propertyKey) { return bjEditor.getProperty(propertyKey); }
| Set a property for the current editor. Any existing property with | this key will be overwritten. | | @param propertyKey The property key of the new property | @param value The new property value | public void setProperty(String propertyKey, Object value) { bjEditor.setProperty(propertyKey,value); }
| Translates a text location into an offset into the text held by the editor. | | @param location position to be translated | @return the offset into the text of this location | @throws IllegalArgumentException if the specified TextLocation | represent a position which does not exist in the text. | public int getOffsetFromTextLocation(TextLocation location) { return bjEditor.getOffsetFromLineColumn(convertLocation(location)); }
| Translate an offset in the text held by the editor into a TextLocation. | | @param offset location to be translated | @return the TextLocation in the text of this offset or null if the offset is invalid | public TextLocation getTextLocationFromOffset(int offset) { return convertLocation(bjEditor.getLineColumnFromOffset(offset)); }
| Returns the length of the line indicated in the edited text. | | @param line the line in the text for which the length should be calculated, starting from zero. | @return the length of the line, -1 if line is invalid | public int getLineLength(int line) { return bjEditor.getLineLength(line); }
| Returns the total number of lines in the currently edited text. | | @return The number of lines in the text >= 0 | public int getLineCount() { return bjEditor.numberOfLines(); }
| Returns the length of the currently edited text. This is the number of | characters of content that represents the user's data. | | The line number and column of the last character of text can be obtained by using | the getLineColumnFromOffset(getTextLength()) method. | | @return the length >= 0 | public int getTextLength() { return bjEditor.getTextLength(); }
| Utility to convert a TextLocation into a LineColumn. | If null is given as parameter then null is returned. | | @param location The point in the editor to convert to a LineColumn. | @return The LineColumn object describing a point in the editor. | private SourceLocation convertLocation(TextLocation location) { if (location == null) { return null; } return new SourceLocation(location.getLine() + 1, location.getColumn() + 1); }
| Utility to convert a LineColumn into a TextLocation. | If null is given as parameter then null is returned. | | @param location The point in the editor to convert to a TextLocation. | @return The TextLocation object describing a point in the editor. | private TextLocation convertLocation(SourceLocation location) { if (location == null) { return null; } return new TextLocation(location.getLine() - 1, location.getColumn() - 1); } }
top, use, map, class Editor

.   saveFile
.   loadFile
.   setVisible
.   isVisible
.   getCaretLocation
.   setCaretLocation
.   showMessage
.   getSelectionBegin
.   getSelectionEnd
.   getText
.   setText
.   setSelection
.   setReadOnly
.   isReadOnly
.   getProperty
.   setProperty
.   getOffsetFromTextLocation
.   getTextLocationFromOffset
.   getLineLength
.   getLineCount
.   getTextLength
.   convertLocation
.   convertLocation




220 neLoCode + 82 LoComm