Skip to content

Commit d7247fe

Browse files
committed
save undo redo history
1 parent 83087d2 commit d7247fe

File tree

7 files changed

+52
-7
lines changed

7 files changed

+52
-7
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib-n-ide/src/main/java/com/duy/ide/editor/content/IUndoManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
package com.duy.ide.editor.content;
1919

20+
import android.content.SharedPreferences;
21+
2022
/**
2123
* Created by Duy on 26-Apr-18.
2224
*/
@@ -32,4 +34,8 @@ public interface IUndoManager {
3234
void disable();
3335

3436
void enable();
37+
38+
void restore(SharedPreferences preferences);
39+
40+
void save(SharedPreferences preferences);
3541
}

lib-n-ide/src/main/java/com/duy/ide/editor/content/UndoManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package com.duy.ide.editor.content;
1919

20+
import android.content.SharedPreferences;
2021
import android.widget.EditText;
2122

2223
public class UndoManager implements IUndoManager {
@@ -50,6 +51,18 @@ public void enable() {
5051
mUndoRedoHelper.attach();
5152
}
5253

54+
@Override
55+
public void restore(SharedPreferences preferences) {
56+
mUndoRedoHelper.restorePersistentState(preferences, "");
57+
}
58+
59+
@Override
60+
public void save(SharedPreferences preferences) {
61+
SharedPreferences.Editor editor = preferences.edit();
62+
mUndoRedoHelper.storePersistentState(editor, "");
63+
editor.apply();
64+
}
65+
5366
@Override
5467
public void undo() {
5568
if (canUndo()) {

lib-n-ide/src/main/java/com/duy/ide/editor/view/EditActionSupportEditor.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package com.duy.ide.editor.view;
1919

2020
import android.content.Context;
21+
import android.content.SharedPreferences;
2122
import android.graphics.Rect;
2223
import android.support.annotation.NonNull;
2324
import android.support.annotation.Nullable;
@@ -146,6 +147,16 @@ public void enableUndoRedoFilter() {
146147
mUndoManager.enable();
147148
}
148149

150+
@Override
151+
public void saveHistory(SharedPreferences preferences) {
152+
153+
}
154+
155+
@Override
156+
public void restoreEditHistory(SharedPreferences preferences) {
157+
mUndoManager.restore(preferences);
158+
}
159+
149160
@Override
150161
public void disableUndoRedoFilter() {
151162
mUndoManager.disable();

lib-n-ide/src/main/java/com/duy/ide/editor/view/IEditActionSupport.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package com.duy.ide.editor.view;
1919

20+
import android.content.SharedPreferences;
2021
import android.support.annotation.NonNull;
2122

2223
public interface IEditActionSupport {
@@ -39,4 +40,8 @@ public interface IEditActionSupport {
3940
void disableUndoRedoFilter();
4041

4142
void enableUndoRedoFilter();
43+
44+
void restoreEditHistory(SharedPreferences preferences);
45+
46+
void saveHistory(SharedPreferences preferences);
4247
}

lib-n-ide/src/main/java/com/jecelyin/editor/v2/editor/EditorDelegate.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import android.content.Context;
2020
import android.content.DialogInterface;
21+
import android.content.SharedPreferences;
2122
import android.content.res.TypedArray;
2223
import android.graphics.Color;
2324
import android.os.Bundle;
@@ -151,9 +152,11 @@ public IEditAreaView getEditText() {
151152
return mEditText;
152153
}
153154

154-
public void setEditorView(IEditAreaView editorView) {
155+
public void onCreate(IEditAreaView editorView) {
155156
mContext = editorView.getContext();
156157
mEditText = editorView;
158+
159+
157160
mOrientation = mContext.getResources().getConfiguration().orientation;
158161

159162
TypedArray a = mContext.obtainStyledAttributes(new int[]{R.attr.findResultsKeyword});
@@ -178,9 +181,19 @@ public void setEditorView(IEditAreaView editorView) {
178181

179182
mEditText.addTextChangedListener(this);
180183
onDocumentChanged();
184+
185+
SharedPreferences historyData = mContext.getSharedPreferences(
186+
mDocument.getFile().getPath(), Context.MODE_PRIVATE);
187+
mEditText.restoreEditHistory(historyData);
181188
}
182189

183190
public void onDestroy() {
191+
if (isChanged() && Preferences.getInstance(getContext()).isAutoSave()) {
192+
saveInBackground();
193+
}
194+
SharedPreferences historyData = mContext.getSharedPreferences(
195+
mDocument.getFile().getPath(), Context.MODE_PRIVATE);
196+
mEditText.saveHistory(historyData);
184197
mEditText.removeTextChangedListener(mDocument);
185198
mEditText.removeTextChangedListener(this);
186199
}

lib-n-ide/src/main/java/com/jecelyin/editor/v2/editor/EditorFragment.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import com.duy.ide.editor.editor.R;
2929
import com.duy.ide.editor.pager.EditorPageDescriptor;
3030
import com.duy.ide.editor.view.IEditAreaView;
31-
import com.jecelyin.editor.v2.Preferences;
3231

3332
import java.io.File;
3433

@@ -71,7 +70,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
7170
mEditorDelegate = new EditorDelegate(file, offset, encoding);
7271
}
7372
View view = inflater.inflate(R.layout.fragment_editor, container, false);
74-
mEditorDelegate.setEditorView((IEditAreaView) view.findViewById(R.id.edit_text));
73+
mEditorDelegate.onCreate((IEditAreaView) view.findViewById(R.id.edit_text));
7574
return view;
7675
}
7776

@@ -87,9 +86,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
8786
@Override
8887
public void onDestroyView() {
8988
if (mEditorDelegate != null) {
90-
if (mEditorDelegate.isChanged() && Preferences.getInstance(getContext()).isAutoSave()) {
91-
mEditorDelegate.saveInBackground();
92-
}
89+
mEditorDelegate.onDestroy();
9390
}
9491
super.onDestroyView();
9592
}

0 commit comments

Comments
 (0)