|
From: <iam...@us...> - 2010-03-18 18:31:12
|
Revision: 1331
http://eulergui.svn.sourceforge.net/eulergui/?rev=1331&view=rev
Author: iamlolive
Date: 2010-03-18 18:31:02 +0000 (Thu, 18 Mar 2010)
Log Message:
-----------
new version of the jedit editor.
should roughly work.
Modified Paths:
--------------
trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java
trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java
trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java
trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
Modified: trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/actions/Save.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -8,18 +8,20 @@
import javax.swing.AbstractAction;
-import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
import eulergui.gui.view.TextEditor;
import eulergui.project.N3Source;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
public class Save extends AbstractAction {
private static final long serialVersionUID = 1L;
private N3Source n3Source;
- private JEditTextArea embededEditor;
+ private StandaloneTextArea embededEditor;
private TextEditor textEditor;
- public Save( JEditTextArea embededEditor, TextEditor textEditor ) {
+ public Save( StandaloneTextArea embededEditor, TextEditor textEditor ) {
this.embededEditor = embededEditor;
this.textEditor = textEditor;
this.n3Source = textEditor.get3NSource();
Modified: trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/actions/SaveAs.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -8,9 +8,11 @@
import n3_project.ProjectGUI;
-import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
import eulergui.gui.view.TextEditor;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
public class SaveAs extends Save // AbstractAction
{
@@ -18,7 +20,7 @@
private ProjectGUI projectGUI;
public SaveAs(TextEditor textEditor, ProjectGUI projectGUI,
- JEditTextArea embededEditor) {
+ StandaloneTextArea embededEditor) {
super(embededEditor, textEditor);
this.projectGUI = projectGUI;
putValue(NAME, "Save as ...");
Modified: trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/actions/Statistics.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -6,17 +6,19 @@
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
-import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
import eulergui.inputs.N3SourceFromOtherFormat;
import eulergui.project.N3Source;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
public class Statistics extends AbstractAction {
private static final long serialVersionUID = 1L;
private N3Source n3Source;
- private JEditTextArea embededEditor;
+ private StandaloneTextArea embededEditor;
- public Statistics(N3Source n3, JEditTextArea embededEditor) {
+ public Statistics(N3Source n3, StandaloneTextArea embededEditor) {
this.n3Source = n3;
this.embededEditor = embededEditor;
putValue(NAME, "Statistics...");
@@ -40,9 +42,9 @@
.append( n3Source.getKnownURIs() )
.append( "\nDocument Length: " )
- .append( embededEditor.getDocumentLength() )
+ .append( embededEditor.getText().length() )
.append( "\nLine Count: " )
- .append( embededEditor.getDocument().getTokenMarker().getLineCount() )
+ .append( embededEditor.getLineCount() )
;
System.out.println( sb ); // TODO message panel
}
Modified: trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java
===================================================================
--- trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-18 10:13:42 UTC (rev 1330)
+++ trunk/eulergui/src/main/java/eulergui/gui/view/TextEditor.java 2010-03-18 18:31:02 UTC (rev 1331)
@@ -1,7 +1,6 @@
package eulergui.gui.view;
import java.awt.*;
-import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
@@ -21,22 +20,31 @@
import javax.swing.JMenuBar;
import javax.swing.WindowConstants;
import javax.swing.event.DocumentEvent;
-import javax.swing.text.BadLocationException;
+import javax.swing.text.Segment;
import n3_project.EditorManagement;
import n3_project.ProjectGUI;
-import org.syntax.jedit.JEditTextArea;
-import org.syntax.jedit.SyntaxDocument;
-import org.syntax.jedit.TextAreaPainter;
-import org.syntax.jedit.tokenmarker.ShellScriptTokenMarker;
-import org.syntax.jedit.tokenmarker.TokenMarker;
-import org.syntax.jedit.tokenmarker.XMLTokenMarker;
+import org.gjt.sp.jedit.buffer.BufferListener;
+import org.gjt.sp.jedit.buffer.JEditBuffer;
+import org.gjt.sp.jedit.jEdit;
+import org.gjt.sp.jedit.syntax.TokenMarker;
+import org.gjt.sp.jedit.textarea.JEditTextArea;
+//import org.syntax.jedit.JEditTextArea;
+//import org.syntax.jedit.SyntaxDocument;
+//import org.syntax.jedit.TextAreaPainter;
+//import org.syntax.jedit.tokenmarker.ShellScriptTokenMarker;
+//import org.syntax.jedit.tokenmarker.TokenMarker;
+//import org.syntax.jedit.tokenmarker.XMLTokenMarker;
import eulergui.gui.actions.Save;
import eulergui.gui.actions.SaveAs;
import eulergui.gui.actions.Statistics;
import eulergui.project.N3Source;
+import org.gjt.sp.jedit.textarea.StandaloneTextArea;
+import org.gjt.sp.jedit.textarea.TextAreaExtension;
+import org.gjt.sp.jedit.textarea.TextAreaPainter;
+import org.gjt.sp.util.Log;
/**
* a Text Editor factory, mainly for N3;
@@ -48,52 +56,125 @@
private static Map<String, TokenMarker> suffix2syntax
= new HashMap<String, TokenMarker>();
- private DocumentListener listener;
+ //private DocumentListener listener;
private N3Source n3;
private boolean edited;
- private JEditTextArea jedit;
+ private StandaloneTextArea jedit;
public JFrame jf;
static {
- suffix2syntax.put("n3", new N3TokenMarker());
- suffix2syntax.put("ttl", new N3TokenMarker());
- suffix2syntax.put("nt", new N3TokenMarker());
- suffix2syntax.put("sparql", new N3TokenMarker());
- suffix2syntax.put("xml", new XMLTokenMarker());
- suffix2syntax.put("xsd", new XMLTokenMarker());
- suffix2syntax.put("rdf", new XMLTokenMarker());
- suffix2syntax.put("owl", new XMLTokenMarker());
- suffix2syntax.put("uml", new XMLTokenMarker());
- suffix2syntax.put("xmi", new XMLTokenMarker());
- suffix2syntax.put("ecore", new XMLTokenMarker());
- suffix2syntax.put("mof", new XMLTokenMarker());
- suffix2syntax.put("emof", new XMLTokenMarker());
- suffix2syntax.put("cmof", new XMLTokenMarker());
- suffix2syntax.put("umlt", new ShellScriptTokenMarker());
+ //TODO did not find yet how to do these stuff with the new jEdit
+// suffix2syntax.put("n3", new N3TokenMarker());
+// suffix2syntax.put("ttl", new N3TokenMarker());
+// suffix2syntax.put("nt", new N3TokenMarker());
+// suffix2syntax.put("sparql", new N3TokenMarker());
+// suffix2syntax.put("xml", new XMLTokenMarker());
+// suffix2syntax.put("xsd", new XMLTokenMarker());
+// suffix2syntax.put("rdf", new XMLTokenMarker());
+// suffix2syntax.put("owl", new XMLTokenMarker());
+// suffix2syntax.put("uml", new XMLTokenMarker());
+// suffix2syntax.put("xmi", new XMLTokenMarker());
+// suffix2syntax.put("ecore", new XMLTokenMarker());
+// suffix2syntax.put("mof", new XMLTokenMarker());
+// suffix2syntax.put("emof", new XMLTokenMarker());
+// suffix2syntax.put("cmof", new XMLTokenMarker());
+// suffix2syntax.put("umlt", new ShellScriptTokenMarker());
+ jEdit.initSystemProperties();
+ Log.init(true, Log.DEBUG);
}
- public void setOnTop(){
- if(jf!=null) {
+ public void setOnTop() {
+ if (jf != null) {
jf.setAlwaysOnTop(true);
jf.setAlwaysOnTop(false);
}
}
- public void addWindowListener(WindowListener l){
- if(jf!=null)
+ public void addWindowListener(WindowListener l) {
+ if (jf != null)
jf.addWindowListener(l);
}
- public void removeWindowListener(WindowListener l){
- if(jf!=null)
+ public void removeWindowListener(WindowListener l) {
+ if (jf != null)
jf.removeWindowListener(l);
}
+ public void displayEditor(ProjectGUI projectGUI, String toOpen) {
+ JFrame jf = new JFrame();
+
+ JComponent embededEditor = insertFileOrURL(toOpen);
+ applySyntax(toOpen);
+ JMenuBar menuBar = new JMenuBar();
+ jf.setJMenuBar(menuBar);
+ JMenu file = new JMenu("File");
+ menuBar.add(file);
+ SaveAs saveAs = new SaveAs(this, projectGUI,
+ (StandaloneTextArea) embededEditor);
+ Save save = new Save((StandaloneTextArea) embededEditor, this);
+ file.add(save);
+ file.add(saveAs);
+
+ jf.getContentPane().add(embededEditor);
+ jf.setSize(800, 600);
+ jf.setTitle(toOpen);
+ jf.setVisible(true);
+ ProjectGUI.setEulerGUIIcon(jf);
+
+ jf.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+ jf.addWindowListener(new WindowListener() {
+
+ @Override
+ public void windowOpened(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowClosing(WindowEvent e) {
+ if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+ if (edited) {
+ System.err.println("The document \""
+ + getN3().getFileName()
+ + "\" has been edited, you must save it first.");
+ // TODO it should not close, but it does !!!
+ } else {
+ ((Window) e.getSource()).dispose();
+ }
+ }
+ }
+
+ @Override
+ public void windowClosed(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowIconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeiconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowActivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeactivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+ }
+
/**
* display N3 Editor in a new Window, with save As and Statistics in File menu
*/
public void displayEditor(ProjectGUI projectGUI, N3Source n3) {
- try {
+
jf = new JFrame(
EditorManagement.fileToOpen(n3));
JComponent embededEditor = embedEditor(n3);
@@ -103,11 +184,11 @@
JMenu file = new JMenu("File");
menuBar.add(file);
SaveAs saveAs = new SaveAs(this, projectGUI,
- (JEditTextArea) embededEditor);
- Save save = new Save((JEditTextArea) embededEditor, this);
+ (StandaloneTextArea) embededEditor);
+ Save save = new Save((StandaloneTextArea) embededEditor, this);
file.add(save);
file.add(saveAs);
- file.add(new Statistics(n3, (JEditTextArea) embededEditor));
+ file.add(new Statistics(n3, (StandaloneTextArea) embededEditor));
jf.getContentPane().add(embededEditor);
jf.setSize(800, 600);
@@ -116,27 +197,75 @@
ProjectGUI.setEulerGUIIcon(jf);
jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- listener = new DocumentListener();
- jf.addWindowListener(listener);
- } catch (HeadlessException e) {
- e.printStackTrace();
- }
+// listener = new DocumentListener();
+ jf.addWindowListener(new WindowListener() {
+
+ @Override
+ public void windowOpened(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowClosing(WindowEvent e) {
+ if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+ if (edited) {
+ System.err.println("The document \""
+ + getN3().getFileName()
+ + "\" has been edited, you must save it first.");
+ // TODO it should not close, but it does !!!
+ } else {
+ ((Window) e.getSource()).dispose();
+ }
+ }
+ }
+
+ @Override
+ public void windowClosed(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowIconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeiconified(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowActivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void windowDeactivated(WindowEvent e) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+
}
+ public N3Source getN3() {
+ return n3;
+ }
+
/**
* embed N3 Editor in a JComponent
*/
public JComponent embedEditor(N3Source n3) {
this.n3 = n3;
- jedit = new JEditTextArea();
+ jedit = new StandaloneTextArea(jEdit.getPropertyManager());
String toOpen = EditorManagement.fileToOpen(n3);
insertFileOrURL(toOpen);
- applySyntax(n3.uri());
+ // TODO it fails with the newer jEdit
+ // applySyntax(n3.uri());
return jedit;
}
public void setCaretPosition(int line, int col) {
-
+
int position = jedit.getLineStartOffset(line) + col;
//TODO the parser erroneously places the end of line errors. They are placed at the beginning of the next line. We correct that behaviour (on purpose?)
if (col == 0)
@@ -145,9 +274,10 @@
}
private void setCaretPosition(int position) {
- jedit.setCaretVisible(true);
jedit.setCaretPosition(position);
- jedit.scrollToCaret();
+ // TODO does it exist in the new jEdit?
+ //jedit.getPainter().setCaretVisible(true);
+ //jedit.getPainter().scrollToCaret();
}
@@ -156,126 +286,189 @@
}
public void setToolTipText(String text) {
- final String toolTipText = (text == null ? null : "<HTML>" + text.replace("\n", "<br/>") + "</HTML>");
- final TextAreaPainter textAreaPainter = jedit.getPainter();
- textAreaPainter.addCustomHighlight(new TextAreaPainter.Highlight() {
+ errorText = (text == null ? null : "<HTML>" + text.replace("\n", "<br/>") + "</HTML>");
+ final TextAreaPainter painter = jedit.getPainter();
+ painter.addExtension(getErrorHighlighterExtension());
+ removeErrorHighlighterOnNextEdit();
+ }
- @Override
- public void init(JEditTextArea textArea, TextAreaPainter.Highlight next) {
- //To change body of implemented methods use File | Settings | File Templates.
- }
+ public String errorText="";
+ public int errorLine = -1;
+ private TextAreaExtension errorHighlighterExtension = null;
- @Override
- public void paintHighlight(Graphics gfx, int line, int y) {
- }
+ public TextAreaExtension getErrorHighlighterExtension() {
+ if (errorHighlighterExtension == null) {
+ errorHighlighterExtension = new TextAreaExtension() {
- public String getToolTipText(MouseEvent evt) {
- return toolTipText;
- }
- });
+ public void paintValidLine(Graphics2D gfx, int screenLine, int physicalLine, int start, int end, int y) {
+ if(physicalLine!=errorLine){
+ super.paintValidLine(gfx, screenLine, physicalLine, start, end, y);
+ return;
+ }
+ try {
+ gfx.setColor(Color.RED);
+ TextAreaPainter painter = jedit.getPainter();
+ FontMetrics fm = painter.getFontMetrics();
- removeTooltipOnNextEdit();
+ Segment seg = null;
+
+
+ int x1 = (int) jedit.offsetToXY(jedit.getLineStartOffset(screenLine)).getX();
+ int y1 = y;
+ //int endingY = (int) ta.offsetToXY(ta.getLineEndOffset(physicalLine)).getY() - (int)ta.offsetToXY(ta.getLineStartOffset(physicalLine)).getY();
+ int height = fm.getHeight();
+ int width = jedit.getLineLength(screenLine) * jedit.charWidth;
+// Log.log(Log.DEBUG, this, "Width for line "+ physicalLine+"is calculated to: " + width);
+
+ //gfx.fillRect(x1, y1, width, height);
+ //gfx.setStroke( new BasicStroke( 10f ) );
+
+ gfx.drawLine(x1, y1 + height - 1, x1 + width, y1 + height - 1);
+ } catch (Exception e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
+ }
+
+
+ public String getToolTipText(int x, int y) {
+ try {
+// int pos = jedit.xyToOffset(x, y);
+// int currentLine = jedit.getLineOfOffset(pos);
+// int width = jedit.getLineLength(currentLine) * jedit.charWidth;
+//
+// return "Width: " + width;
+ int off = jedit.xyToOffset(x, y);
+ int currentLine = jedit.getLineOfOffset(off);
+ if(currentLine == errorLine)
+ return errorText;
+ else
+ return "";
+ } catch (Exception e) {
+ return "";
+ }
+
+
+ }
+ };
+ }
+ return errorHighlighterExtension;
}
public void showError(String errorMessage, int lineNumber, int columnNumber) {
+ errorLine = lineNumber;
setToolTipText(errorMessage);
setCaretPosition(lineNumber, columnNumber);
setOnTop();
}
- public void removeTooltipOnNextEdit() {
- final DocumentListener tooltipRemover = new DocumentListener() {
+ public void removeErrorHighlighterOnNextEdit() {
+ final BufferListener errorHighlighter = new BufferListener() {
+
@Override
- public void removeUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setToolTipText(null);
- jedit.getDocument().removeDocumentListener(this);
+ public void foldLevelChanged(JEditBuffer jEditBuffer, int i, int i1) {
+ jedit.getPainter().removeExtension(getErrorHighlighterExtension());
+ errorHighlighterExtension = null;
+ errorText = "";
}
@Override
- public void insertUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setToolTipText(null);
- jedit.getDocument().removeDocumentListener(this);
+ public void contentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ jedit.getPainter().removeExtension(getErrorHighlighterExtension());
+ errorHighlighterExtension = null;
+ errorText = "";
}
@Override
- public void changedUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setToolTipText(null);
- jedit.getDocument().removeDocumentListener(this);
+ public void contentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ jedit.getPainter().removeExtension(getErrorHighlighterExtension());
+ errorHighlighterExtension = null;
+ errorText = "";
}
@Override
- public void windowClosing(WindowEvent e) {
- //super.windowClosing(e); //To change body of overridden methods use File | Settings | File Templates.
+ public void preContentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+
}
+
+ @Override
+ public void preContentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void transactionComplete(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void foldHandlerChanged(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void bufferLoaded(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
};
- jedit.getDocument().addDocumentListener(tooltipRemover);
+ jedit.getBuffer().addBufferListener(errorHighlighter);
}
public void removeAppendanceOnNextEdit() {
- final DocumentListener attendanceRemover = new DocumentListener() {
+ final BufferListener attendanceRemover = new BufferListener() {
+
@Override
- public void removeUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
- setTitleAppendance("");
- jedit.getDocument().removeDocumentListener(this);
+ public void foldLevelChanged(JEditBuffer jEditBuffer, int i, int i1) {
+ //To change body of implemented methods use File | Settings | File Templates.
}
@Override
- public void insertUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
+ public void contentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
setTitleAppendance("");
- jedit.getDocument().removeDocumentListener(this);
+ jedit.getBuffer().removeBufferListener(this);
+
}
@Override
- public void changedUpdate(DocumentEvent e) {
- //TODO how to remove our custom Highlight instead of this quick hack ?
+ public void contentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
setTitleAppendance("");
- jedit.getDocument().removeDocumentListener(this);
+ jedit.getBuffer().removeBufferListener(this);
}
@Override
- public void windowClosing(WindowEvent e) {
- //super.windowClosing(e); //To change body of overridden methods use File | Settings | File Templates.
+ public void preContentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
}
+
+ @Override
+ public void preContentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void transactionComplete(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void foldHandlerChanged(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void bufferLoaded(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
};
- jedit.getDocument().addDocumentListener(attendanceRemover);
+ jedit.getBuffer().addBufferListener(attendanceRemover);
}
/**
* display Editor in a new Window, with save As in File menu
*/
- public void displayEditor(ProjectGUI projectGUI, String toOpen) {
- JFrame jf = new JFrame();
- JComponent embededEditor = insertFileOrURL(toOpen);
- applySyntax(toOpen);
- JMenuBar menuBar = new JMenuBar();
- jf.setJMenuBar(menuBar);
- JMenu file = new JMenu("File");
- menuBar.add(file);
- SaveAs saveAs = new SaveAs(this, projectGUI,
- (JEditTextArea) embededEditor);
- Save save = new Save((JEditTextArea) embededEditor, this);
- file.add(save);
- file.add(saveAs);
- jf.getContentPane().add(embededEditor);
- jf.setSize(800, 600);
- jf.setTitle(toOpen);
- jf.setVisible(true);
- ProjectGUI.setEulerGUIIcon(jf);
-
- jf.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
- listener = new DocumentListener();
- jf.addWindowListener(listener);
- }
-
private JComponent insertFileOrURL(String toOpen) {
- jedit = new JEditTextArea();
+ jedit = new StandaloneTextArea(jEdit.getPropertyManager());
InputStream is = null;
try {
@@ -300,15 +493,58 @@
}
String text = builder.toString();
reader.close();
- SyntaxDocument document = new N3SyntaxDocument();
- jedit.setDocument(document);
+
+// SyntaxDocument document = new N3SyntaxDocument();
+// jedit.getBuffer().setDocument(document);
jedit.setText(text);
- document.addDocumentListener(listener);
+ jedit.getBuffer().addBufferListener(new BufferListener() {
+
+ @Override
+ public void foldLevelChanged(JEditBuffer jEditBuffer, int i, int i1) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void contentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ edited = true;
+ }
+
+ @Override
+ public void contentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ edited = true;
+ }
+
+ @Override
+ public void preContentInserted(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void preContentRemoved(JEditBuffer jEditBuffer, int i, int i1, int i2, int i3) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void transactionComplete(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void foldHandlerChanged(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void bufferLoaded(JEditBuffer jEditBuffer) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+ //document.addDocumentListener(listener);
// need to reset edited, because calling setText() has already
// set edited = true
edited = false;
}
- jedit.scrollTo(0, 0);
+ //jedit.getPainter().scrollTo(0, 0);
} catch (IOException e) {
e.printStackTrace();
@@ -321,17 +557,16 @@
String suffix = toOpen.substring(
toOpen.lastIndexOf('.') + 1);
TokenMarker syntax = suffix2syntax.get(suffix);
- jedit.setTokenMarker(syntax);
+ jedit.getBuffer().setTokenMarker(syntax);
}
-
public String getTitleAttendance() {
return titleAttendance;
}
public void setTitleAppendance(String titleAttendance) {
- jf.setTitle(jf.getTitle().substring(0,jf.getTitle().lastIndexOf(getTitleAttendance()))+titleAttendance);
+ jf.setTitle(jf.getTitle().substring(0, jf.getTitle().lastIndexOf(getTitleAttendance())) + titleAttendance);
this.titleAttendance = titleAttendance;
}
@@ -341,58 +576,57 @@
* records the first modification, to prevent unsaved edits
* TODO upon Save actions, reset {@link #edited} to false
*/
- class DocumentListener extends WindowAdapter
- implements javax.swing.event.DocumentListener
- , WindowListener
-// , WindowStateListener
- {
- @Override
- /** PENDING these 3 methods are apparently not called;
- * beginCompoundEdit does the job
- */
- public void removeUpdate(DocumentEvent e) {
- edited = true;
- }
+// class DocumentListener extends WindowAdapter
+// implements javax.swing.event.DocumentListener
+// , WindowListener
+//// , WindowStateListener
+// {
+// @Override
+// /** PENDING these 3 methods are apparently not called;
+// * beginCompoundEdit does the job
+// */
+// public void removeUpdate(DocumentEvent e) {
+// edited = true;
+// }
+//
+// @Override
+// public void insertUpdate(DocumentEvent e) {
+// edited = true;
+// }
+//
+// @Override
+// public void changedUpdate(DocumentEvent e) {
+// edited = true;
+// }
+//
+// @Override
+// public void windowClosing(WindowEvent e) {
+// if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+// if (edited) {
+// System.err.println("The document \""
+// + n3.getFileName()
+// + "\" has been edited, you must save it first.");
+// // TODO it should not close, but it does !!!
+// } else {
+// ((Window) e.getSource()).dispose();
+// }
+// }
+// }
+// }
- @Override
- public void insertUpdate(DocumentEvent e) {
- edited = true;
- }
-
- @Override
- public void changedUpdate(DocumentEvent e) {
- edited = true;
- }
-
- @Override
- public void windowClosing(WindowEvent e) {
- if (e.getID() == WindowEvent.WINDOW_CLOSING) {
- if (edited) {
- System.err.println("The document \""
- + n3.getFileName()
- + "\" has been edited, you must save it first.");
- // TODO it should not close, but it does !!!
- } else {
- ((Window) e.getSource()).dispose();
- }
- }
- }
- }
-
- class N3SyntaxDocument extends SyntaxDocument {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void beginCompoundEdit() {
- if (!edited) {
- if (n3 != null) {
- System.out.println("First edit " + n3.showShortName());
- }
- edited = true;
- }
- }
- }
-
+// class N3SyntaxDocument extends SyntaxDocument {
+// private static final long serialVersionUID = 1L;
+//
+// @Override
+// public void beginCompoundEdit() {
+// if (!edited) {
+// if (n3 != null) {
+// System.out.println("First edit " + n3.showShortName());
+// }
+// edited = true;
+// }
+// }
+// }
public N3Source get3NSource() {
return n3;
}
@@ -416,15 +650,15 @@
}
public void insertStringAtPaneEnd(String message) {
- int offs = jedit.getDocument().getEndPosition().getOffset();
- try {
- jedit.getDocument().insertString(offs, message, null);
- jedit.setCaretPosition(
- jedit.getDocument().getEndPosition().getOffset() - 1);
- } catch (BadLocationException e) {
- // Auto-generated catch block
- e.printStackTrace();
- }
-
- }
+ int offs = jedit.getBuffer().getLength();
+// try {
+ jedit.getBuffer().insert(offs, message);
+ jedit.setCaretPosition(
+ jedit.getBuffer().getLength() - 1);
+// } catch (BadLocationException e) {
+// // Auto-generated catch block
+// e.printStackTrace();
+// }
+
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|