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