Author: echatellier Date: 2009-10-16 18:47:03 +0200 (Fri, 16 Oct 2009) New Revision: 229 Modified: trunk/changelog.txt trunk/src/main/java/org/nuiton/widget/editor/DefaultEditor.java trunk/src/main/java/org/nuiton/widget/editor/Editor.java trunk/src/main/java/org/nuiton/widget/editor/EditorInterface.java trunk/src/main/java/org/nuiton/widget/editor/JEditEditor.java trunk/src/main/java/org/nuiton/widget/editor/NullEditor.java trunk/src/main/java/org/nuiton/widget/editor/RSyntaxEditor.java Log: Add caret listener support on editors Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2009-10-15 12:27:39 UTC (rev 228) +++ trunk/changelog.txt 2009-10-16 16:47:03 UTC (rev 229) @@ -1,3 +1,7 @@ +ver-1.0.1 chatellier 2009xxxx + * Add caret listener support on editors + * Add cut, copy, paste support on editors + ver-0.14 chatellier 20090409 * improve AboutFrame * Fix SDoc background color on nimbus Modified: trunk/src/main/java/org/nuiton/widget/editor/DefaultEditor.java =================================================================== --- trunk/src/main/java/org/nuiton/widget/editor/DefaultEditor.java 2009-10-15 12:27:39 UTC (rev 228) +++ trunk/src/main/java/org/nuiton/widget/editor/DefaultEditor.java 2009-10-16 16:47:03 UTC (rev 229) @@ -45,6 +45,7 @@ import javax.swing.JEditorPane; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.event.CaretListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.Document; @@ -58,7 +59,6 @@ * behaviour: <li>undo/redo (Ctrl-z, Shift-Ctrl-z) <li>Scrollbar * * @author poussin - * */ public class DefaultEditor extends JPanel implements EditorInterface, DocumentListener { @@ -79,30 +79,39 @@ } /* - * (non-Javadoc) - * - * @see - * org.nuiton.widget.editor.EditorInterface#addDocumentListener(javax - * .swing.event.DocumentListener) + * @see org.nuiton.widget.editor.EditorInterface#addDocumentListener(javax.swing.event.DocumentListener) */ + @Override public void addDocumentListener(DocumentListener listener) { editor.getDocument().addDocumentListener(listener); } /* - * (non-Javadoc) - * - * @see - * org.nuiton.widget.editor.EditorInterface#removeDocumentListener(javax - * .swing.event.DocumentListener) + * @see org.nuiton.widget.editor.EditorInterface#removeDocumentListener(javax.swing.event.DocumentListener) */ + @Override public void removeDocumentListener(DocumentListener listener) { editor.getDocument().removeDocumentListener(listener); } + /* - * (non-Javadoc) - * + * @see org.nuiton.widget.editor.EditorInterface#addCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void addCaretListener(CaretListener listener) { + editor.addCaretListener(listener); + } + + /* + * @see org.nuiton.widget.editor.EditorInterface#removeCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void removeCaretListener(CaretListener listener) { + editor.removeCaretListener(listener); + } + + /* * @see org.nuiton.widget.editor.EditorInterface#accept(java.io.File) */ public boolean accept(File file) { @@ -110,8 +119,6 @@ } /* - * (non-Javadoc) - * * @see org.nuiton.widget.editor.EditorInterface#isModified() */ public boolean isModified() { @@ -119,8 +126,6 @@ } /* - * (non-Javadoc) - * * @see org.nuiton.widget.Editor#open(java.io.File) */ public boolean open(File file) { @@ -148,8 +153,6 @@ } /* - * (non-Javadoc) - * * @see org.nuiton.widget.Editor#saveAs(java.io.File) */ public boolean saveAs(File file) { Modified: trunk/src/main/java/org/nuiton/widget/editor/Editor.java =================================================================== --- trunk/src/main/java/org/nuiton/widget/editor/Editor.java 2009-10-15 12:27:39 UTC (rev 228) +++ trunk/src/main/java/org/nuiton/widget/editor/Editor.java 2009-10-16 16:47:03 UTC (rev 229) @@ -49,6 +49,7 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.KeyStroke; +import javax.swing.event.CaretListener; import javax.swing.event.DocumentListener; import javax.swing.text.TextAction; @@ -174,8 +175,11 @@ protected EditorInterface currentEditor = nullEditor; /** current opened file */ protected File openedFile = null; - /** All listener registered on this editor */ - protected Set<DocumentListener> listeners = new HashSet<DocumentListener>(); + /** All document listener registered on this editor */ + protected Set<DocumentListener> documentListeners = new HashSet<DocumentListener>(); + /** All caret listener registered on this editor */ + protected Set<CaretListener> caretListeners = new HashSet<CaretListener>(); + /** * If the edited file is modifier, before switch to other or close it, ask * the user if he want save the modification @@ -281,14 +285,20 @@ } // remove all listener on old editor - for (DocumentListener l : listeners) { + for (DocumentListener l : documentListeners) { this.currentEditor.removeDocumentListener(l); } + for (CaretListener l : caretListeners) { + this.currentEditor.removeCaretListener(l); + } this.currentEditor = editor; // and add all listener on new editor - for (DocumentListener l : listeners) { + for (DocumentListener l : documentListeners) { this.currentEditor.addDocumentListener(l); } + for (CaretListener l : caretListeners) { + this.currentEditor.addCaretListener(l); + } // put new editor as child add((Component) editor, BorderLayout.CENTER); @@ -470,8 +480,9 @@ /* * @see org.nuiton.widget.editor.EditorInterface#addDocumentListener(javax.swing.event.DocumentListener) */ + @Override public void addDocumentListener(DocumentListener listener) { - listeners.add(listener); + documentListeners.add(listener); getCurrentEditor().addDocumentListener(listener); } @@ -480,16 +491,28 @@ */ @Override public void removeDocumentListener(DocumentListener listener) { - listeners.remove(listener); + documentListeners.remove(listener); getCurrentEditor().removeDocumentListener(listener); } - // ///////////////////////////////////////////////////////////////////////// - // - // A C T I O N - // - // ///////////////////////////////////////////////////////////////////////// + /* + * @see org.nuiton.widget.editor.EditorInterface#addCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void addCaretListener(CaretListener listener) { + caretListeners.add(listener); + getCurrentEditor().addCaretListener(listener); + } + /* + * @see org.nuiton.widget.editor.EditorInterface#removeCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void removeCaretListener(CaretListener listener) { + caretListeners.remove(listener); + getCurrentEditor().removeCaretListener(listener); + } + static class SaveAction extends TextAction { /** serialVersionUID */ private static final long serialVersionUID = 4694356772539222176L; Modified: trunk/src/main/java/org/nuiton/widget/editor/EditorInterface.java =================================================================== --- trunk/src/main/java/org/nuiton/widget/editor/EditorInterface.java 2009-10-15 12:27:39 UTC (rev 228) +++ trunk/src/main/java/org/nuiton/widget/editor/EditorInterface.java 2009-10-16 16:47:03 UTC (rev 229) @@ -19,6 +19,7 @@ import java.io.File; +import javax.swing.event.CaretListener; import javax.swing.event.DocumentListener; /** @@ -51,6 +52,20 @@ public void removeDocumentListener(DocumentListener listener); /** + * Add caret listener. + * + * @param listener listener + */ + public void addCaretListener(CaretListener listener); + + /** + * Remove caret listener. + * + * @param listener listener + */ + public void removeCaretListener(CaretListener listener); + + /** * If return true, this editor support this file type. * Default implementation return {@code true}. * Modified: trunk/src/main/java/org/nuiton/widget/editor/JEditEditor.java =================================================================== --- trunk/src/main/java/org/nuiton/widget/editor/JEditEditor.java 2009-10-15 12:27:39 UTC (rev 228) +++ trunk/src/main/java/org/nuiton/widget/editor/JEditEditor.java 2009-10-16 16:47:03 UTC (rev 229) @@ -27,6 +27,7 @@ import java.io.Reader; import javax.swing.JPanel; +import javax.swing.event.CaretListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -142,6 +143,30 @@ } /* + * @see org.nuiton.widget.editor.EditorInterface#removeDocumentListener(javax.swing.event.DocumentListener) + */ + @Override + public void removeDocumentListener(DocumentListener listener) { + editor.getDocument().removeDocumentListener(listener); + } + + /* + * @see org.nuiton.widget.editor.EditorInterface#addCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void addCaretListener(CaretListener listener) { + editor.addCaretListener(listener); + } + + /* + * @see org.nuiton.widget.editor.EditorInterface#removeCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void removeCaretListener(CaretListener listener) { + editor.removeCaretListener(listener); + } + + /* * @see org.nuiton.widget.editor.EditorInterface#getText() */ @Override @@ -159,14 +184,6 @@ } /* - * @see org.nuiton.widget.editor.EditorInterface#removeDocumentListener(javax.swing.event.DocumentListener) - */ - @Override - public void removeDocumentListener(DocumentListener listener) { - editor.getDocument().removeDocumentListener(listener); - } - - /* * @see org.nuiton.widget.editor.EditorInterface#saveAs(java.io.File) */ @Override Modified: trunk/src/main/java/org/nuiton/widget/editor/NullEditor.java =================================================================== --- trunk/src/main/java/org/nuiton/widget/editor/NullEditor.java 2009-10-15 12:27:39 UTC (rev 228) +++ trunk/src/main/java/org/nuiton/widget/editor/NullEditor.java 2009-10-16 16:47:03 UTC (rev 229) @@ -25,6 +25,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.event.CaretListener; import javax.swing.event.DocumentListener; /** @@ -63,6 +64,22 @@ } /* + * @see org.nuiton.widget.editor.EditorInterface#addCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void addCaretListener(CaretListener listener) { + + } + + /* + * @see org.nuiton.widget.editor.EditorInterface#removeCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void removeCaretListener(CaretListener listener) { + + } + + /* * @see org.nuiton.widget.editor.EditorInterface#accept(java.io.File) */ @Override Modified: trunk/src/main/java/org/nuiton/widget/editor/RSyntaxEditor.java =================================================================== --- trunk/src/main/java/org/nuiton/widget/editor/RSyntaxEditor.java 2009-10-15 12:27:39 UTC (rev 228) +++ trunk/src/main/java/org/nuiton/widget/editor/RSyntaxEditor.java 2009-10-16 16:47:03 UTC (rev 229) @@ -30,6 +30,7 @@ import java.io.Writer; import javax.swing.JPanel; +import javax.swing.event.CaretListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -152,6 +153,30 @@ } /* + * @see org.nuiton.widget.editor.EditorInterface#removeDocumentListener(javax.swing.event.DocumentListener) + */ + @Override + public void removeDocumentListener(DocumentListener listener) { + editor.getDocument().removeDocumentListener(listener); + } + + /* + * @see org.nuiton.widget.editor.EditorInterface#addCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void addCaretListener(CaretListener listener) { + editor.addCaretListener(listener); + } + + /* + * @see org.nuiton.widget.editor.EditorInterface#removeCaretListener(javax.swing.event.CaretListener) + */ + @Override + public void removeCaretListener(CaretListener listener) { + editor.removeCaretListener(listener); + } + + /* * @see org.nuiton.widget.editor.EditorInterface#getText() */ @Override @@ -169,14 +194,6 @@ } /* - * @see org.nuiton.widget.editor.EditorInterface#removeDocumentListener(javax.swing.event.DocumentListener) - */ - @Override - public void removeDocumentListener(DocumentListener listener) { - editor.getDocument().removeDocumentListener(listener); - } - - /* * @see org.nuiton.widget.editor.EditorInterface#saveAs(java.io.File) */ @Override