📄 defaulteditorkit.java
字号:
* @see #getActions() */ public static final String nextWordAction = "caret-next-word"; /** * The name of the <code>Action</code> that moves the caret one page down. * * @see #getActions() */ public static final String pageDownAction = "page-down"; /** * The name of the <code>Action</code> that moves the caret one page up. * * @see #getActions() */ public static final String pageUpAction = "page-up"; /** * The name of the <code>Action</code> that copies content from the system * clipboard into the document. * * @see #getActions() */ public static final String pasteAction = "paste-from-clipboard"; /** * The name of the <code>Action</code> that moves the caret to the beginning * of the previous word. * * @see #getActions() */ public static final String previousWordAction = "caret-previous-word"; /** * The name of the <code>Action</code> that sets the editor in read only * mode. * * @see #getActions() */ public static final String readOnlyAction = "set-read-only"; /** * The name of the <code>Action</code> that selects the whole document. * * @see #getActions() */ public static final String selectAllAction = "select-all"; /** * The name of the <code>Action</code> that moves the caret one character * backwards, possibly extending the current selection. * * @see #getActions() */ public static final String selectionBackwardAction = "selection-backward"; /** * The name of the <code>Action</code> that moves the caret to the beginning * of the document, possibly extending the current selection. * * @see #getActions() */ public static final String selectionBeginAction = "selection-begin"; /** * The name of the <code>Action</code> that moves the caret to the beginning * of the current line, possibly extending the current selection. * * @see #getActions() */ public static final String selectionBeginLineAction = "selection-begin-line"; /** * The name of the <code>Action</code> that moves the caret to the beginning * of the current paragraph, possibly extending the current selection. * * @see #getActions() */ public static final String selectionBeginParagraphAction = "selection-begin-paragraph"; /** * The name of the <code>Action</code> that moves the caret to the beginning * of the current word, possibly extending the current selection. * * @see #getActions() */ public static final String selectionBeginWordAction = "selection-begin-word"; /** * The name of the <code>Action</code> that moves the caret one line down, * possibly extending the current selection. * * @see #getActions() */ public static final String selectionDownAction = "selection-down"; /** * The name of the <code>Action</code> that moves the caret to the end * of the document, possibly extending the current selection. * * @see #getActions() */ public static final String selectionEndAction = "selection-end"; /** * The name of the <code>Action</code> that moves the caret to the end * of the current line, possibly extending the current selection. * * @see #getActions() */ public static final String selectionEndLineAction = "selection-end-line"; /** * The name of the <code>Action</code> that moves the caret to the end * of the current paragraph, possibly extending the current selection. * * @see #getActions() */ public static final String selectionEndParagraphAction = "selection-end-paragraph"; /** * The name of the <code>Action</code> that moves the caret to the end * of the current word, possibly extending the current selection. * * @see #getActions() */ public static final String selectionEndWordAction = "selection-end-word"; /** * The name of the <code>Action</code> that moves the caret one character * forwards, possibly extending the current selection. * * @see #getActions() */ public static final String selectionForwardAction = "selection-forward"; /** * The name of the <code>Action</code> that moves the caret to the beginning * of the next word, possibly extending the current selection. * * @see #getActions() */ public static final String selectionNextWordAction = "selection-next-word"; /** * The name of the <code>Action</code> that moves the caret to the beginning * of the previous word, possibly extending the current selection. * * @see #getActions() */ public static final String selectionPreviousWordAction = "selection-previous-word"; /** * The name of the <code>Action</code> that moves the caret one line up, * possibly extending the current selection. * * @see #getActions() */ public static final String selectionUpAction = "selection-up"; /** * The name of the <code>Action</code> that selects the line around the * caret. * * @see #getActions() */ public static final String selectLineAction = "select-line"; /** * The name of the <code>Action</code> that selects the paragraph around the * caret. * * @see #getActions() */ public static final String selectParagraphAction = "select-paragraph"; /** * The name of the <code>Action</code> that selects the word around the * caret. * * @see #getActions() */ public static final String selectWordAction = "select-word"; /** * The name of the <code>Action</code> that moves the caret one line up. * * @see #getActions() */ public static final String upAction = "caret-up"; /** * The name of the <code>Action</code> that sets the editor in read-write * mode. * * @see #getActions() */ public static final String writableAction = "set-writable"; /** * Creates a new <code>DefaultEditorKit</code>. */ public DefaultEditorKit() { // Nothing to do here. } /** * The <code>Action</code>s that are supported by the * <code>DefaultEditorKit</code>. */ // TODO: All these inner classes look ugly. Maybe work out a better way // to handle this. private static Action[] defaultActions = new Action[] { new BeepAction(), new CopyAction(), new CutAction(), new DefaultKeyTypedAction(), new InsertBreakAction(), new InsertContentAction(), new InsertTabAction(), new PasteAction(), new TextAction(deleteNextCharAction) { public void actionPerformed(ActionEvent event) { JTextComponent t = getTextComponent(event); if (t != null) { try { int pos = t.getCaret().getDot(); if (pos < t.getDocument().getEndPosition().getOffset()) { t.getDocument().remove(t.getCaret().getDot(), 1); } } catch (BadLocationException e) { // FIXME: we're not authorized to throw this.. swallow it? } } } }, new TextAction(deletePrevCharAction) { public void actionPerformed(ActionEvent event) { JTextComponent t = getTextComponent(event); if (t != null) { try { int pos = t.getCaret().getDot(); if (pos > t.getDocument().getStartPosition().getOffset()) { t.getDocument().remove(pos - 1, 1); t.getCaret().setDot(pos - 1); } } catch (BadLocationException e) { // FIXME: we're not authorized to throw this.. swallow it? } } } }, new TextAction(backwardAction) { public void actionPerformed(ActionEvent event) { JTextComponent t = getTextComponent(event); if (t != null) { t.getCaret().setDot(Math.max(t.getCaret().getDot() - 1, t.getDocument().getStartPosition().getOffset())); } } }, new TextAction(forwardAction) { public void actionPerformed(ActionEvent event) { JTextComponent t = getTextComponent(event); if (t != null) { t.getCaret().setDot(Math.min(t.getCaret().getDot() + 1, t.getDocument().getEndPosition().getOffset())); } } }, new TextAction(selectionBackwardAction) { public void actionPerformed(ActionEvent event) { JTextComponent t = getTextComponent(event); if (t != null) { t.getCaret().moveDot(Math.max(t.getCaret().getDot() - 1, t.getDocument().getStartPosition().getOffset())); } } }, new TextAction(selectionForwardAction) { public void actionPerformed(ActionEvent event) { JTextComponent t = getTextComponent(event); if (t != null) { t.getCaret().moveDot(Math.min(t.getCaret().getDot() + 1, t.getDocument().getEndPosition().getOffset())); } } }, }; /** * Creates the <code>Caret</code> for this <code>EditorKit</code>. This * returns a {@link DefaultCaret} in this case. * * @return the <code>Caret</code> for this <code>EditorKit</code> */ public Caret createCaret() { return new DefaultCaret(); } /** * Creates the default {@link Document} that this <code>EditorKit</code> * supports. This is a {@link PlainDocument} in this case. * * @return the default {@link Document} that this <code>EditorKit</code> * supports */ public Document createDefaultDocument() { return new PlainDocument(); } /** * Returns the <code>Action</code>s supported by this <code>EditorKit</code>. * * @return the <code>Action</code>s supported by this <code>EditorKit</code> */ public Action[] getActions() { return defaultActions; } /** * Returns the content type that this <code>EditorKit</code> supports. * The <code>DefaultEditorKit</code> supports the content type * <code>text/plain</code>. * * @return the content type that this <code>EditorKit</code> supports */ public String getContentType() { return "text/plain"; } /** * Returns a {@link ViewFactory} that is able to create {@link View}s for * the <code>Element</code>s that are used in this <code>EditorKit</code>'s * model. This returns null which lets the UI of the text component supply * <code>View</code>s. * * @return a {@link ViewFactory} that is able to create {@link View}s for * the <code>Element</code>s that are used in this * <code>EditorKit</code>'s model */ public ViewFactory getViewFactory() { return null; } /** * Reads a document of the supported content type from an {@link InputStream} * into the actual {@link Document} object. * * @param in the stream from which to read the document * @param document the document model into which the content is read * @param offset the offset inside to document where the content is inserted * * @throws BadLocationException if <code>offset</code> is an invalid location * inside <code>document</code> * @throws IOException if something goes wrong while reading from * <code>in</code> */ public void read(InputStream in, Document document, int offset) throws BadLocationException, IOException { read(new InputStreamReader(in), document, offset); } /** * Reads a document of the supported content type from a {@link Reader} * into the actual {@link Document} object. * * @param in the reader from which to read the document * @param document the document model into which the content is read * @param offset the offset inside to document where the content is inserted * * @throws BadLocationException if <code>offset</code> is an invalid location * inside <code>document</code> * @throws IOException if something goes wrong while reading from * <code>in</code> */ public void read(Reader in, Document document, int offset) throws BadLocationException, IOException { BufferedReader reader = new BufferedReader(in); String line; StringBuffer content = new StringBuffer(); while ((line = reader.readLine()) != null) { content.append(line); content.append("\n"); } document.insertString(offset, content.toString(), SimpleAttributeSet.EMPTY); } /** * Writes the <code>Document</code> (or a fragment of the * <code>Document</code>) to an {@link OutputStream} in the * supported content type format. * * @param out the stream to write to * @param document the document that should be written out * @param offset the beginning offset from where to write * @param len the length of the fragment to write * * @throws BadLocationException if <code>offset</code> or * <code>offset + len</code>is an invalid location inside * <code>document</code> * @throws IOException if something goes wrong while writing to * <code>out</code> */ public void write(OutputStream out, Document document, int offset, int len) throws BadLocationException, IOException { write(new OutputStreamWriter(out), document, offset, len); } /** * Writes the <code>Document</code> (or a fragment of the * <code>Document</code>) to a {@link Writer} in the * supported content type format. * * @param out the writer to write to * @param document the document that should be written out * @param offset the beginning offset from where to write * @param len the length of the fragment to write * * @throws BadLocationException if <code>offset</code> is an * invalid location inside <code>document</code>. * @throws IOException if something goes wrong while writing to * <code>out</code> */ public void write(Writer out, Document document, int offset, int len) throws BadLocationException, IOException { // Throw a BLE if offset is invalid if (offset < 0 || offset > document.getLength()) throw new BadLocationException("Tried to write to invalid location", offset); // If they gave an overly large len, just adjust it if (offset + len > document.getLength()) len = document.getLength() - offset; out.write(document.getText(offset, len)); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -