import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.editor.LogicalPosition;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
if (openedFile != null) {
final TaskFile selectedTaskFile = StudyUtils.getTaskFile(project, openedFile);
if (selectedTaskFile != null) {
- final AnswerPlaceholder selectedAnswerPlaceholder = selectedTaskFile.getSelectedAnswerPlaceholder();
+ final AnswerPlaceholder selectedAnswerPlaceholder = getSelectedAnswerPlaceholder(selectedEditor, selectedTaskFile);
if (selectedAnswerPlaceholder == null) {
return;
}
}
StudyNavigator.navigateToAnswerPlaceholder(selectedEditor, nextAnswerPlaceholder, selectedTaskFile);
selectedEditor.getSelectionModel().removeSelection();
- selectedTaskFile.setSelectedAnswerPlaceholder(nextAnswerPlaceholder);
}
}
}
}
+ @Nullable
+ private static AnswerPlaceholder getSelectedAnswerPlaceholder(@NotNull final Editor editor, @NotNull final TaskFile file) {
+ LogicalPosition position = editor.getCaretModel().getLogicalPosition();
+ return file.getAnswerPlaceholder(editor.getDocument(), position);
+ }
+
@Nullable
protected abstract AnswerPlaceholder getNextAnswerPlaceholder(@NotNull final AnswerPlaceholder window);
@Expose
public String text;
@Transient private Task myTask;
- @Transient
- private AnswerPlaceholder mySelectedAnswerPlaceholder = null;
private boolean myUserCreated = false;
private boolean myTrackChanges = true;
private boolean myHighlightErrors = false;
}
}
- @Nullable
- @Transient
- public AnswerPlaceholder getSelectedAnswerPlaceholder() {
- return mySelectedAnswerPlaceholder;
- }
-
- public void setSelectedAnswerPlaceholder(@NotNull final AnswerPlaceholder selectedAnswerPlaceholder) {
- if (selectedAnswerPlaceholder.getTaskFile() == this) {
- mySelectedAnswerPlaceholder = selectedAnswerPlaceholder;
- }
- else {
- throw new IllegalArgumentException("Window may be set as selected only in task file which it belongs to");
- }
- }
-
public List<AnswerPlaceholder> getAnswerPlaceholders() {
return myAnswerPlaceholders;
}