show preview fixed
authorLiana Bakradze <liana.bakradze@jetbrains.com>
Thu, 2 Oct 2014 14:19:23 +0000 (18:19 +0400)
committerLiana Bakradze <liana.bakradze@jetbrains.com>
Thu, 2 Oct 2014 14:19:23 +0000 (18:19 +0400)
python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCDocumentListener.java
python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/CCEditorFactoryListener.java
python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/actions/CCCreateCourseArchive.java
python/edu/course-creator/src/org/jetbrains/plugins/coursecreator/format/TaskFile.java

index 7e2559bcd1eb428a0a61f8cb3ac6d0992bd89f8d..3573216e9efa8b1d8139fe0245afe046c252a08a 100644 (file)
@@ -56,10 +56,12 @@ public abstract class CCDocumentListener extends DocumentAdapter {
         myTaskFile.incrementLines(myOldLine + 1, lineChange);
         int newEndOffsetInLine = offset + e.getNewLength() - document.getLineStartOffset(newLine);
         int oldEndOffsetInLine = offset + e.getOldLength() - myOldLineStartOffset;
-        myTaskFile.updateLine(lineChange, myOldLine, newEndOffsetInLine, oldEndOffsetInLine);
+        myTaskFile.updateLine(lineChange, myOldLine, newEndOffsetInLine, oldEndOffsetInLine, useLength());
       }
   }
 
   protected abstract void updateTaskWindowLength(CharSequence fragment, TaskWindow taskWindow, int change);
+
+  protected abstract  boolean useLength();
 }
 
index 2952497483cfda9a65121b254ccc7be3e5af053a..9974c2f3d4831a5d974e8f49bb59a26864b29ed1 100644 (file)
@@ -77,6 +77,11 @@ public class CCEditorFactoryListener implements EditorFactoryListener {
         int newLength = taskWindow.getReplacementLength() + change;
         taskWindow.setReplacementLength(newLength <= 0 ? 0 : newLength);
     }
+
+    @Override
+    protected boolean useLength() {
+      return false;
+    }
   }
 
   private static class TaskWindowDeleteHandler implements ReadonlyFragmentModificationHandler {
index 3c45c251d8ce959e6ecd5d42153824671db65150..e5e07591870161247e7d929358687e603dc13e7a 100644 (file)
@@ -253,5 +253,10 @@ public class CCCreateCourseArchive extends DumbAwareAction {
     protected void updateTaskWindowLength(CharSequence fragment, TaskWindow taskWindow, int change) {
       //we don't need to update task window length
     }
+
+    @Override
+    protected boolean useLength() {
+      return true;
+    }
   }
 }
\ No newline at end of file
index 19498b9f3d1e2638d8593f40fdf4e55fa1570a1f..0da4af916460bd9e6a2225e260a0e58f61b3bf89 100644 (file)
@@ -79,7 +79,7 @@ public class TaskFile {
    * @param newEndOffsetInLine distance from line start to end of inserted fragment
    * @param oldEndOffsetInLine distance from line start to end of changed fragment
    */
-  public void updateLine(int lineChange, int line, int newEndOffsetInLine, int oldEndOffsetInLine) {
+  public void updateLine(int lineChange, int line, int newEndOffsetInLine, int oldEndOffsetInLine, boolean useLength) {
     for (TaskWindow w : task_windows) {
       if ((w.getLine() == line) && (w.getStart() > oldEndOffsetInLine)) {
         int distance = w.getStart() - oldEndOffsetInLine;
@@ -88,7 +88,8 @@ public class TaskFile {
         if (CCProjectService.indexIsValid(prevIndex, task_windows)) {
           TaskWindow prevTW = task_windows.get(prevIndex);
           if (prevTW.getLine() == line) {
-            int endOffset = prevTW.getStart() + prevTW.getReplacementLength();
+            int prevLength = useLength ? prevTW.getLength() : prevTW.getReplacementLength();
+            int endOffset = prevTW.getStart() + prevLength;
             if (endOffset >= newEndOffsetInLine) {
               coveredByPrevTW = true;
             }