EDU-658 Create placeholder without selection

This commit is contained in:
Liana Bakradze
2016-06-29 17:01:42 +03:00
parent e57d9f8862
commit af2d69ff56
3 changed files with 16 additions and 11 deletions
@@ -54,14 +54,13 @@ public class CCAddAnswerPlaceholder extends CCAnswerPlaceholderAction {
}
final SelectionModel model = editor.getSelectionModel();
final int offset = model.getSelectionStart();
final int offset = model.hasSelection() ? model.getSelectionStart() : editor.getCaretModel().getOffset();
final AnswerPlaceholder answerPlaceholder = new AnswerPlaceholder();
answerPlaceholder.setOffset(offset);
answerPlaceholder.setUseLength(false);
String selectedText = model.getSelectedText();
answerPlaceholder.setPossibleAnswer(selectedText);
answerPlaceholder.setPossibleAnswer(model.hasSelection() ? model.getSelectedText() : EduNames.PLACEHOLDER);
CCCreateAnswerPlaceholderDialog dlg = new CCCreateAnswerPlaceholderDialog(project, answerPlaceholder);
dlg.show();
@@ -69,6 +68,10 @@ public class CCAddAnswerPlaceholder extends CCAnswerPlaceholderAction {
return;
}
if (!model.hasSelection()) {
DocumentUtil.writeInRunUndoTransparentAction(() -> document.insertString(offset, EduNames.PLACEHOLDER));
}
TaskFile taskFile = state.getTaskFile();
int index = taskFile.getAnswerPlaceholders().size() + 1;
answerPlaceholder.setIndex(index);
@@ -147,7 +150,7 @@ public class CCAddAnswerPlaceholder extends CCAnswerPlaceholderAction {
presentation.setVisible(true);
if (canAddPlaceholder(state) || canDeletePlaceholder(state)) {
presentation.setEnabled(true);
presentation.setText((state.getAnswerPlaceholder() == null ? "Add " : "Delete ") + EduNames.PLACEHOLDER);
presentation.setText((state.getAnswerPlaceholder() == null ? "Add " : "Delete ") + EduNames.ANSWER_PLACEHOLDER);
}
}
@@ -155,12 +158,13 @@ public class CCAddAnswerPlaceholder extends CCAnswerPlaceholderAction {
private static boolean canAddPlaceholder(@NotNull CCState state) {
Editor editor = state.getEditor();
SelectionModel selectionModel = editor.getSelectionModel();
if (!selectionModel.hasSelection()) {
return false;
if (selectionModel.hasSelection()) {
int start = selectionModel.getSelectionStart();
int end = selectionModel.getSelectionEnd();
return !arePlaceholdersIntersect(state.getTaskFile(), start, end);
}
int start = selectionModel.getSelectionStart();
int end = selectionModel.getSelectionEnd();
return !arePlaceholdersIntersect(state.getTaskFile(), start, end);
int offset = editor.getCaretModel().getOffset();
return state.getTaskFile().getAnswerPlaceholder(offset) == null;
}
private static boolean canDeletePlaceholder(@NotNull CCState state) {
@@ -28,7 +28,7 @@ import java.util.List;
public class CCDeleteAllAnswerPlaceholdersAction extends DumbAwareAction {
public static final String ACTION_NAME = "Delete All " + EduNames.PLACEHOLDER + "s";
public static final String ACTION_NAME = "Delete All " + EduNames.ANSWER_PLACEHOLDER + "s";
public CCDeleteAllAnswerPlaceholdersAction() {
super(ACTION_NAME);
@@ -46,7 +46,8 @@ public class EduNames {
public static final String STUDY = "Study";
public static final String ADAPTIVE = "Adaptive";
public static final String PLACEHOLDER = "Answer Placeholder";
public static final String ANSWER_PLACEHOLDER = "Answer Placeholder";
public static final String PLACEHOLDER = "placeholder";
public static final String SRC = "src";
private EduNames() {
}