1 package com.jetbrains.edu.learning.courseFormat;
3 import com.google.gson.annotations.Expose;
4 import com.google.gson.annotations.SerializedName;
5 import com.intellij.util.xmlb.annotations.Transient;
6 import org.jetbrains.annotations.Nullable;
9 * Implementation of windows which user should type in
12 public class AnswerPlaceholder {
14 @Expose private String hint = "";
16 @SerializedName("possible_answer")
17 @Expose private String possibleAnswer = "";
19 @SerializedName("offset")
21 private int myOffset = -1;
23 @Expose private int length = -1;
25 private int myIndex = -1;
26 private String myTaskText;
27 private MyInitialState myInitialState;
28 private StudyStatus myStatus = StudyStatus.Unchecked;
29 private boolean mySelected = false;
30 private boolean myUseLength = true;
34 private TaskFile myTaskFile;
36 public AnswerPlaceholder() {
39 public void initAnswerPlaceholder(final TaskFile file, boolean isRestarted) {
41 setInitialState(new MyInitialState(myOffset, length));
42 myStatus = file.getTask().getStatus();
48 public int getIndex() {
52 public void setIndex(int index) {
57 * in actions {@link AnswerPlaceholder#getRealLength()} should be used
59 public int getLength() {
63 public void setLength(int length) {
67 public String getHint() {
71 public void setHint(@Nullable final String hint) {
75 public String getPossibleAnswer() {
76 return possibleAnswer;
79 public void setPossibleAnswer(String possibleAnswer) {
80 this.possibleAnswer = possibleAnswer;
83 public MyInitialState getInitialState() {
84 return myInitialState;
87 public void setInitialState(MyInitialState initialState) {
88 myInitialState = initialState;
91 public String getTaskText() {
95 public void setTaskText(String taskText) {
96 myTaskText = taskText;
100 public TaskFile getTaskFile() {
105 public void setTaskFile(TaskFile taskFile) {
106 myTaskFile = taskFile;
109 public int getPossibleAnswerLength() {
110 return possibleAnswer.length();
114 * Returns window to its initial state
116 public void reset() {
117 myOffset = myInitialState.getOffset();
118 length = myInitialState.getLength();
120 possibleAnswer = myTaskText;
124 public StudyStatus getStatus() {
128 public void setStatus(StudyStatus status) {
132 public boolean getSelected() {
136 public void setSelected(boolean selected) {
137 mySelected = selected;
141 setInitialState(new MyInitialState(myOffset, myTaskText.length()));
144 public boolean getUseLength() {
149 * @return length or possible answer length
151 public int getRealLength() {
152 return myUseLength ? getLength() : getPossibleAnswerLength();
155 public void setUseLength(boolean useLength) {
156 myUseLength = useLength;
159 public int getOffset() {
163 public void setOffset(int offset) {
167 public static class MyInitialState {
168 private int length = -1;
169 private int offset = -1;
171 public MyInitialState() {
174 public MyInitialState(int initialOffset, int length) {
175 this.offset = initialOffset;
176 this.length = length;
179 public int getLength() {
183 public void setLength(int length) {
184 this.length = length;
187 public int getOffset() {
191 public void setOffset(int offset) {
192 this.offset = offset;