import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
+import com.intellij.openapi.diagnostic.Logger;
import com.intellij.util.xmlb.annotations.Transient;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
*/
public class AnswerPlaceholder {
+ private static final Logger LOG = Logger.getInstance(AnswerPlaceholder.class);
@SerializedName("hint")
@Expose private String myHint = "";
myHint = "";
}
else {
- myAdditionalHints.remove(i);
+ if (i - 1 <myAdditionalHints.size()) {
+ myAdditionalHints.remove(i - 1);
+ }
+ else {
+ LOG.warn("Trying to remove nonexistent hint. Hint to remove number: " + (i - 1) + "number of hints: " + getHints().size());
+ }
}
}
group.addAll(GoBackward(), GoForward(), Separator.getInstance(), EditHint(), AddHint(), RemoveHint())
}
studyToolWindow.setActionToolbar(group)
- if (!hints.isEmpty()) {
- studyToolWindow.setText(hints[myShownHintNumber])
- }
- else {
- studyToolWindow.setText(HINTS_NOT_AVAILABLE)
- }
+ setHintText(hints)
}
}
}
+ private fun setHintText(hints: List<String>) {
+ if (!hints.isEmpty()) {
+ studyToolWindow.setText(hints[myShownHintNumber])
+ }
+ else {
+ myShownHintNumber = -1
+ studyToolWindow.setText(HINTS_NOT_AVAILABLE)
+ }
+ }
+
private inner class GoForward : AnAction("Next Hint", "Next Hint", AllIcons.Actions.Forward) {
if (state) {
isEditingMode = true
val factory = EditorFactory.getInstance()
- currentDocument = factory.createDocument(myPlaceholder!!.hints[myShownHintNumber])
+ val initialText = if (myShownHintNumber < myPlaceholder!!.hints.size) myPlaceholder.hints[myShownHintNumber] else ""
+ currentDocument = factory.createDocument(initialText)
WebBrowserManager.getInstance().isShowBrowserHover = false
if (currentDocument != null) {
val createdEditor = factory.createEditor(currentDocument as Document, project) as EditorEx
}
else {
isEditingMode = false
- myPlaceholder!!.setHintByIndex(myShownHintNumber, currentDocument!!.text)
- studyToolWindow.setText(myPlaceholder.hints[myShownHintNumber])
+ if (myShownHintNumber < myPlaceholder!!.hints.size) {
+ myPlaceholder.setHintByIndex(myShownHintNumber, currentDocument!!.text)
+ }
+ else {
+ myPlaceholder.addHint(currentDocument!!.text)
+ }
+ setHintText(myPlaceholder.hints)
studyToolWindow.setDefaultTopComponent()
}
}
}
override fun update(e: AnActionEvent?) {
- e?.presentation?.isEnabled = !isEditingMode && myPlaceholder != null && !myPlaceholder.hints.isEmpty()
+ e?.presentation?.isEnabled = !isEditingMode && myPlaceholder != null
}
}
override fun actionPerformed(e: AnActionEvent) {
myPlaceholder!!.removeHint(myShownHintNumber)
- myShownHintNumber = if (myPlaceholder.hints.size == 1) 0 else if (myShownHintNumber + 1 < myPlaceholder.hints.size) myShownHintNumber + 1 else myShownHintNumber - 1
- studyToolWindow.setText(myPlaceholder.hints[myShownHintNumber])
+ myShownHintNumber += if (myShownHintNumber < myPlaceholder.hints.size) 0 else -1
+
+ setHintText(myPlaceholder.hints)
}
override fun update(e: AnActionEvent) {
- e.presentation.isEnabled = myPlaceholder != null && myPlaceholder.hints.size > 1 && !isEditingMode
+ e.presentation.isEnabled = myPlaceholder != null && myPlaceholder.hints.size > 0 && !isEditingMode
}
}
}