From: <dal...@us...> - 2006-08-14 06:11:57
|
Revision: 6690 Author: daleanson Date: 2006-08-13 23:11:54 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/jedit/?rev=6690&view=rev Log Message: ----------- fix for 1533473 Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2006-08-11 18:25:33 UTC (rev 6689) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2006-08-14 06:11:54 UTC (rev 6690) @@ -26,6 +26,7 @@ import javax.swing.*; import java.awt.event.*; import java.awt.*; +import java.util.HashMap; import org.gjt.sp.jedit.gui.*; import org.gjt.sp.jedit.io.VFSManager; import org.gjt.sp.jedit.msg.*; @@ -275,16 +276,37 @@ buffer.setIntegerProperty(Buffer.CARET, textArea.getCaretPosition()); + + // save a map of buffer.getPath() -> CaretInfo, this is necessary for + // when the same buffer is open in more than one EditPane and the user + // is switching between buffers. We want to keep the caret in the + // right position in each EditPane, which won't be the case if we + // just use the buffer caret property. + HashMap carets = (HashMap)getClientProperty(CARETS); + if ( carets == null ) { + carets = new HashMap(); + putClientProperty(CARETS, carets); + } + CaretInfo caretInfo = (CaretInfo)carets.get(buffer.getPath()); + if ( caretInfo == null ) { + caretInfo = new CaretInfo(); + carets.put(buffer.getPath(), caretInfo); + } + caretInfo.caret = new Integer(textArea.getCaretPosition()); + Selection[] selection = textArea.getSelection(); for(int i = 0; i < selection.length; i++) selection[i] = (Selection)selection[i].clone(); buffer.setProperty(Buffer.SELECTION,selection); + caretInfo.selection = selection; buffer.setIntegerProperty(Buffer.SCROLL_VERT, textArea.getFirstPhysicalLine()); + caretInfo.scrollVert = new Integer(textArea.getFirstPhysicalLine()); buffer.setIntegerProperty(Buffer.SCROLL_HORIZ, textArea.getHorizontalOffset()); + caretInfo.scrollHoriz = new Integer(textArea.getHorizontalOffset()); if (!buffer.isUntitled()) { BufferHistory.setEntry(buffer.getPath(), textArea.getCaretPosition(), @@ -295,12 +317,35 @@ //{{{ loadCaretInfo() method /** - * Loads the caret information from the current buffer. + * Loads the caret and selection information from this EditPane, fall + * back to the information from the current buffer if none is already + * in this EditPane. * @since jEdit 2.5pre2 */ public void loadCaretInfo() { - Integer caret = (Integer)buffer.getProperty(Buffer.CARET); + // get our internal map of buffer -> CaretInfo since there might + // be current info already + HashMap carets = (HashMap)getClientProperty(CARETS); + if ( carets == null ) { + carets = new HashMap(); + putClientProperty(CARETS, carets); + } + CaretInfo caretInfo = (CaretInfo)carets.get(buffer.getPath()); + if ( caretInfo == null ) { + caretInfo = new CaretInfo(); + } + + // set the position of the caret itself. + // Caret position could be stored in the internal map already, + // if so, use that one first. Otherwise, fall back to any + // previously saved caret position that was stored in the + // buffer properties. + Integer caret = caretInfo.caret; + if ( caret == null ) { + caret = (Integer)buffer.getProperty(Buffer.CARET); + } + if(caret != null) { @@ -308,7 +353,11 @@ buffer.getLength())); } - Selection[] selection = (Selection[])buffer.getProperty(Buffer.SELECTION); + // set any selections + Selection[] selection = caretInfo.selection; + if ( selection == null ) { + selection = (Selection[])buffer.getProperty(Buffer.SELECTION); + } if(selection != null) { for(int i = 0; i < selection.length; i++) @@ -322,11 +371,19 @@ textArea.setSelection(selection); } - Integer firstLine = (Integer)buffer.getProperty(Buffer.SCROLL_VERT); + // set firstLine value + Integer firstLine = caretInfo.scrollVert; + if ( firstLine == null ) { + firstLine = (Integer)buffer.getProperty(Buffer.SCROLL_VERT); + } if(firstLine != null) textArea.setFirstPhysicalLine(firstLine.intValue()); - Integer horizontalOffset = (Integer)buffer.getProperty(Buffer.SCROLL_HORIZ); + // set horizontal offset + Integer horizontalOffset = caretInfo.scrollHoriz; + if ( horizontalOffset == null ) { + horizontalOffset = (Integer)buffer.getProperty(Buffer.SCROLL_HORIZ); + } if(horizontalOffset != null) textArea.setHorizontalOffset(horizontalOffset.intValue()); @@ -343,7 +400,27 @@ * message altogether. */ view.getStatus().setMessage(null); } //}}} + + //{{{ + /** + * Need to track this info for each buffer that this EditPane might edit + + * since a buffer may be open in more than one EditPane at a time. That + + * means we need to track this info at the EditPane level rather than + + * the buffer level. + + */ + + public class CaretInfo { + public Integer caret = null; + public Selection[] selection = null; + public Integer scrollVert = null; + public Integer scrollHoriz = null; + } //}}} + //{{{ goToNextMarker() method /** * Moves the caret to the next marker. @@ -580,6 +657,9 @@ private BufferSwitcher bufferSwitcher; private JEditTextArea textArea; private MarkerHighlight markerHighlight; + + public static final String CARETS = "Buffer->caret"; + //}}} //{{{ propertiesChanged() method This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2006-10-04 01:47:17
|
Revision: 7145 http://svn.sourceforge.net/jedit/?rev=7145&view=rev Author: kpouer Date: 2006-09-29 02:28:41 -0700 (Fri, 29 Sep 2006) Log Message: ----------- fix some NPE Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2006-09-29 09:13:27 UTC (rev 7144) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2006-09-29 09:28:41 UTC (rev 7145) @@ -347,7 +347,10 @@ // buffer properties. int caret = caretInfo.caret; if (caret == -1) - caret = (Integer)buffer.getProperty(Buffer.CARET); + { + Integer i = (Integer) buffer.getProperty(Buffer.CARET); + caret = i == null ? -1 : i; + } if(caret != -1) @@ -375,16 +378,22 @@ // set firstLine value int firstLine = caretInfo.scrollVert; if ( firstLine == -1 ) - firstLine = (Integer)buffer.getProperty(Buffer.SCROLL_VERT); + { + Integer i = (Integer) buffer.getProperty(Buffer.SCROLL_VERT); + firstLine = i == null ? -1 : i; + } if(firstLine != -1) textArea.setFirstPhysicalLine(firstLine); // set horizontal offset int horizontalOffset = caretInfo.scrollHoriz; - if (horizontalOffset == -1) { - horizontalOffset = (Integer)buffer.getProperty(Buffer.SCROLL_HORIZ); + if (horizontalOffset == -1) + { + Integer i = (Integer) buffer.getProperty(Buffer.SCROLL_HORIZ); + horizontalOffset = i == null ? -1 : i; } + if(horizontalOffset != -1) textArea.setHorizontalOffset(horizontalOffset); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ez...@us...> - 2006-10-24 19:37:36
|
Revision: 7633 http://svn.sourceforge.net/jedit/?rev=7633&view=rev Author: ezust Date: 2006-10-24 12:37:27 -0700 (Tue, 24 Oct 2006) Log Message: ----------- Patch # 1576535 by k_satoda. Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2006-10-24 14:10:17 UTC (rev 7632) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2006-10-24 19:37:27 UTC (rev 7633) @@ -371,9 +371,8 @@ if(s.getStart() > max || s.getEnd() > max) selection[i] = null; } - - textArea.setSelection(selection); } + textArea.setSelection(selection); // set firstLine value int firstLine = caretInfo.scrollVert; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2007-12-09 21:33:12
|
Revision: 11237 http://jedit.svn.sourceforge.net/jedit/?rev=11237&view=rev Author: kpouer Date: 2007-12-09 13:33:11 -0800 (Sun, 09 Dec 2007) Log Message: ----------- fixed an explicit fold and added annotations Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2007-12-09 17:45:40 UTC (rev 11236) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2007-12-09 21:33:11 UTC (rev 11237) @@ -621,12 +621,14 @@ /** * Returns 0,0 for split pane compatibility. */ + @Override public final Dimension getMinimumSize() { return new Dimension(0,0); } //}}} //{{{ toString() method + @Override public String toString() { return getClass().getName() + '[' @@ -796,8 +798,8 @@ "bufferSwitcher.maxRowCount",10)); } } //}}} - - //{{{ propertiesChanged() method + + //{{{ initPainter() method /** * Init the painter of a textarea. * @@ -1077,6 +1079,7 @@ } //}}} //{{{ paintValidLine() method + @Override public void paintValidLine(Graphics2D gfx, int screenLine, int physicalLine, int start, int end, int y) { @@ -1094,6 +1097,7 @@ } //}}} //{{{ getToolTipText() method + @Override public String getToolTipText(int x, int y) { if(isMarkerHighlightEnabled()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2008-02-15 22:27:09
|
Revision: 11802 http://jedit.svn.sourceforge.net/jedit/?rev=11802&view=rev Author: kpouer Date: 2008-02-15 14:27:06 -0800 (Fri, 15 Feb 2008) Log Message: ----------- explicit folds Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-02-15 06:17:35 UTC (rev 11801) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-02-15 22:27:06 UTC (rev 11802) @@ -88,7 +88,7 @@ return buffer; } //}}} - //{{{ setBuffer() method + //{{{ setBuffer() methods /** * Sets the current buffer. * @param buffer The buffer to edit. @@ -97,9 +97,8 @@ public void setBuffer(Buffer buffer) { setBuffer(buffer, true); - } //}}} + } - //{{{ setBuffer() method /** * Sets the current buffer. * @param buffer The buffer to edit. @@ -437,7 +436,7 @@ } //}}} - //{{{ + //{{{ CaretInfo class /** * Need to track this info for each buffer that this EditPane might edit * since a buffer may be open in more than one EditPane at a time. That This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2008-03-01 21:10:42
|
Revision: 12056 http://jedit.svn.sourceforge.net/jedit/?rev=12056&view=rev Author: kpouer Date: 2008-03-01 13:10:37 -0800 (Sat, 01 Mar 2008) Log Message: ----------- removed deprecated method calls Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-03-01 21:10:21 UTC (rev 12055) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-03-01 21:10:37 UTC (rev 12056) @@ -36,6 +36,7 @@ import org.gjt.sp.jedit.syntax.SyntaxStyle; import org.gjt.sp.jedit.textarea.*; import org.gjt.sp.jedit.buffer.JEditBuffer; +import org.gjt.sp.util.SyntaxUtilities; //}}} /** @@ -842,7 +843,7 @@ String defaultFont = jEdit.getProperty("view.font"); int defaultFontSize = jEdit.getIntegerProperty("view.fontsize",12); - painter.setStyles(GUIUtilities.loadStyles(defaultFont,defaultFontSize)); + painter.setStyles(SyntaxUtilities.loadStyles(defaultFont,defaultFontSize)); SyntaxStyle[] foldLineStyle = new SyntaxStyle[4]; for(int i = 0; i <= 3; i++) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kp...@us...> - 2008-07-03 09:44:59
|
Revision: 13001 http://jedit.svn.sourceforge.net/jedit/?rev=13001&view=rev Author: kpouer Date: 2008-07-03 02:44:58 -0700 (Thu, 03 Jul 2008) Log Message: ----------- check the current buffer and recent buffer when changing bufferSet Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/EditPane.java Modified: jEdit/trunk/org/gjt/sp/jedit/EditPane.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-07-03 06:56:20 UTC (rev 13000) +++ jEdit/trunk/org/gjt/sp/jedit/EditPane.java 2008-07-03 09:44:58 UTC (rev 13001) @@ -711,6 +711,21 @@ bufferSwitcher.updateBufferList(); } EditBus.send(new EditPaneUpdate(this, EditPaneUpdate.BUFFERSET_CHANGED)); + if (bufferSet.indexOf(recentBuffer) == -1) + { + // the recent buffer is not in the bufferSet + recentBuffer = null; + } + if (bufferSet.size() != 0 && bufferSet.indexOf(buffer) == -1) + { + // the current buffer is not contained in the bufferSet, we must change the current buffer + if (recentBuffer != null) + setBuffer(recentBuffer); + else + { + setBuffer(bufferSet.getBuffer(0)); + } + } } } //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |