• R/O
  • HTTP
  • SSH
  • HTTPS

MeMoMa: Commit

Repository from CVS
https://osdn.net/cvs/view/gokigen/MeMoMa/


Commit MetaInfo

Révision0dd8f398368a0061855a50eadcc55eaffd305881 (tree)
l'heure2018-07-24 00:21:39
AuteurMRSa <mrsa@myad...>
CommiterMRSa

Message de Log

オブジェクトの移動を1つ戻せるようにした。

Change Summary

Modification

--- a/app/src/main/java/jp/sourceforge/gokigen/memoma/MeMoMaListener.java
+++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/MeMoMaListener.java
@@ -33,10 +33,8 @@ import jp.sourceforge.gokigen.memoma.dialogs.TextEditDialog;
3333 import jp.sourceforge.gokigen.memoma.drawers.GokigenSurfaceView;
3434 import jp.sourceforge.gokigen.memoma.drawers.MeMoMaCanvasDrawer;
3535 import jp.sourceforge.gokigen.memoma.extension.ExtensionActivity;
36-import jp.sourceforge.gokigen.memoma.holders.OperationHistoryHolder;
3736 import jp.sourceforge.gokigen.memoma.io.MeMoMaDataInOutManager;
3837 import jp.sourceforge.gokigen.memoma.holders.LineStyleHolder;
39-import jp.sourceforge.gokigen.memoma.holders.MeMoMaConnectLineHolder;
4038 import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
4139 import jp.sourceforge.gokigen.memoma.holders.OperationModeHolder;
4240 import jp.sourceforge.gokigen.memoma.operations.IObjectSelectionReceiver;
@@ -69,8 +67,6 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
6967 private TextEditDialog editTextDialog; // テキスト編集用ダイアログ
7068 private MeMoMaCanvasDrawer objectDrawer; // 画像の表示
7169 private MeMoMaObjectHolder objectHolder; // オブジェクトの保持クラス
72- private MeMoMaConnectLineHolder lineHolder; // オブジェクト間の接続状態保持クラス
73- private OperationHistoryHolder historyHolder; // 操作履歴保持クラス
7470 //private SelectFeatureListener featureListener = null; // 機能選択用のリスナ
7571
7672 private MeMoMaDataInOutManager dataInOutManager;
@@ -79,15 +75,10 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
7975 private LineStyleHolder lineStyleHolder;
8076
8177 private ConfirmationDialog confirmationDialog;
82-
8378 private ObjectDataInputDialog objectDataInputDialog;
84-
8579 private SelectLineShapeDialog lineSelectionDialog;
86-
8780 private ItemSelectionDialog itemSelectionDialog;
88- private ObjectOperationCommandHolder commandHolder;
8981
90- private boolean isEditing = false;
9182 private Integer selectedObjectKey = 0;
9283 private Integer objectKeyToDelete = 0;
9384 private Integer selectedContextKey = 0;
@@ -100,12 +91,8 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
10091 {
10192 parent = argument;
10293 dataInOutManager = inoutManager;
103- historyHolder = new OperationHistoryHolder();
104- lineHolder = new MeMoMaConnectLineHolder(historyHolder);
105- objectHolder = new MeMoMaObjectHolder(argument, lineHolder, historyHolder);
94+ objectHolder = new MeMoMaObjectHolder(argument);
10695 editTextDialog = new TextEditDialog(parent, R.drawable.icon);
107- //lineHolder = new MeMoMaConnectLineHolder();
108- //featureListener = new SelectFeatureListener(parent);
10996 drawModeHolder = new OperationModeHolder(parent);
11097
11198 lineStyleHolder = new LineStyleHolder(parent);
@@ -124,7 +111,7 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
124111 lineSelectionDialog.setResultReceiver(this);
125112
126113 // アイテム選択ダイアログを生成
127- commandHolder = new ObjectOperationCommandHolder(argument);
114+ ObjectOperationCommandHolder commandHolder = new ObjectOperationCommandHolder(argument);
128115 itemSelectionDialog = new ItemSelectionDialog(argument);
129116 itemSelectionDialog.prepare(this, commandHolder, parent.getString(R.string.object_operation));
130117
@@ -366,7 +353,6 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
366353 {
367354 int id = v.getId();
368355 // int action = event.getAction();
369-
370356 //Log.v(Main.APP_IDENTIFIER, "MeMoMaListener::onTouch() " + id);
371357
372358 if (id == R.id.GraphicView)
@@ -386,10 +372,8 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
386372 int action = event.getAction();
387373 if ((action == KeyEvent.ACTION_DOWN)&&(keyCode == KeyEvent.KEYCODE_DPAD_CENTER))
388374 {
389- //
390375 Log.v(Main.APP_IDENTIFIER, "KEY ENTER");
391376 }
392-
393377 Log.v(Main.APP_IDENTIFIER, "MeMoMaListener::onKey() ");
394378 return (false);
395379 }
@@ -461,7 +445,7 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
461445 public void onPrepareOptionsMenu(Menu menu)
462446 {
463447 menu.findItem(MENU_ID_NEW).setVisible(true);
464- menu.findItem(MENU_ID_UNDO).setVisible(false);
448+ menu.findItem(MENU_ID_UNDO).setVisible(objectHolder.isHistoryExist());
465449 menu.findItem(MENU_ID_SHARE).setVisible(true);
466450 menu.findItem(MENU_ID_CAPTURE).setVisible(true);
467451 menu.findItem(MENU_ID_ALIGN).setVisible(true);
@@ -559,7 +543,13 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
559543 */
560544 private boolean undoOperation()
561545 {
562- return (false);
546+ // undo処理を実行する
547+ boolean ret = objectHolder.undo();
548+
549+ // 画面を再描画する
550+ redrawSurfaceview();
551+
552+ return (ret);
563553 }
564554
565555 /**
@@ -647,7 +637,6 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
647637 {
648638 dataInOutManager.prepare(objectHolder, bar, memomaInfo);
649639 }
650-
651640 //dataInOutManager.loadFile((String) parent.getTitle());
652641 }
653642
@@ -729,7 +718,6 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
729718
730719 // ダイアログの準備を行う
731720 objectDataInputDialog.prepareObjectInputDialog(dialog, selectedObjectKey);
732-
733721 }
734722
735723 /**
@@ -1100,13 +1088,10 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
11001088 // 画面の倍率と表示位置を初期状態に戻す
11011089 if (objectDrawer != null)
11021090 {
1103- final SeekBar zoomBar = (SeekBar) parent.findViewById(R.id.ZoomInOut);
1091+ final SeekBar zoomBar = parent.findViewById(R.id.ZoomInOut);
11041092 objectDrawer.resetScaleAndLocation(zoomBar);
11051093 }
11061094
1107- // 操作履歴をクリアする
1108- historyHolder.reset();
1109-
11101095 /*
11111096 // 題名を "無題"に変更し、関係情報をクリアする
11121097 String newName = parent.getString(R.string.no_name);
@@ -1122,7 +1107,6 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
11221107
11231108 // ファイル名選択ダイアログを開く
11241109 showInfoMessageEditDialog();
1125-
11261110 }
11271111
11281112 /**
@@ -1131,8 +1115,15 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
11311115 */
11321116 private void redrawSurfaceview()
11331117 {
1134- final GokigenSurfaceView surfaceview = parent.findViewById(R.id.GraphicView);
1135- surfaceview.doDraw();
1118+ try
1119+ {
1120+ final GokigenSurfaceView surfaceView = parent.findViewById(R.id.GraphicView);
1121+ surfaceView.doDraw();
1122+ }
1123+ catch (Exception e)
1124+ {
1125+ e.printStackTrace();
1126+ }
11361127 }
11371128
11381129 /**
@@ -1173,27 +1164,6 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
11731164 // 何もしない
11741165 }
11751166
1176-
1177- /**
1178- * 現在編集中かどうかを知る
1179- *
1180- *
1181- */
1182- public boolean isEditing()
1183- {
1184- return (isEditing);
1185- }
1186-
1187- /**
1188- * 現在編集中のフラグを更新する
1189- *
1190- *
1191- */
1192- public void setIsEditing(boolean value)
1193- {
1194- isEditing = value;
1195- }
1196-
11971167 /**
11981168 * アイテムが選択された!
11991169 *
@@ -1274,7 +1244,6 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
12741244
12751245 // ファイル選択リストの更新
12761246 dataInOutManager.updateFileList(message, parent.getSupportActionBar());
1277-
12781247 }
12791248 catch (Exception e)
12801249 {
@@ -1282,6 +1251,7 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
12821251 }
12831252 return (true);
12841253 }
1254+
12851255 public boolean cancelTextEditDialog()
12861256 {
12871257 return (false);
@@ -1296,16 +1266,14 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
12961266 int buttonId = LineStyleHolder.getLineShapeImageId(style, shape);
12971267 final ImageButton lineStyleObj =parent.findViewById(R.id.LineStyleButton);
12981268 lineStyleObj.setImageResource(buttonId);
1299- //Log.v(Main.APP_IDENTIFIER, "MeMoMaListener::finishSelectLineShape() buttonId:" + buttonId);
1269+ // Log.v(Main.APP_IDENTIFIER, "MeMoMaListener::finishSelectLineShape() buttonId:" + buttonId);
13001270 }
13011271
13021272 /**
13031273 *
1304- *
13051274 */
13061275 public void cancelSelectLineShape()
13071276 {
13081277
13091278 }
1310-
13111279 }
--- a/app/src/main/java/jp/sourceforge/gokigen/memoma/extension/ExtensionActivityListener.java
+++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/extension/ExtensionActivityListener.java
@@ -70,10 +70,9 @@ public class ExtensionActivityListener implements OnClickListener, MeMoMaFileLo
7070 */
7171 ExtensionActivityListener(Activity argument)
7272 {
73- OperationHistoryHolder historyHolder = new OperationHistoryHolder();
7473 parent = argument;
7574 fileUtility = new ExternalStorageFileUtility(Main.APP_BASEDIR);
76- objectHolder = new MeMoMaObjectHolder(parent, new MeMoMaConnectLineHolder(historyHolder), historyHolder);
75+ objectHolder = new MeMoMaObjectHolder(parent);
7776 }
7877 /**
7978 * 起動時にデータを準備する
--- a/app/src/main/java/jp/sourceforge/gokigen/memoma/holders/IOperationHistoryHolder.java
+++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/holders/IOperationHistoryHolder.java
@@ -29,6 +29,8 @@ interface IOperationHistoryHolder
2929
3030 void addHistory(int key, ChangeKind kind, Object object);
3131 void reset();
32- void undo();
32+
33+ boolean undo();
34+ boolean isHistoryExist();
3335
3436 }
--- a/app/src/main/java/jp/sourceforge/gokigen/memoma/holders/MeMoMaObjectHolder.java
+++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/holders/MeMoMaObjectHolder.java
@@ -63,21 +63,21 @@ public class MeMoMaObjectHolder
6363
6464 public static final float FONTSIZE_DEFAULT = 12.0f;
6565
66- private MeMoMaConnectLineHolder connectLineHolder = null;
66+ private final MeMoMaConnectLineHolder connectLineHolder;
6767
68- private Hashtable<Integer, PositionObject> objectPoints = null;
68+ private Hashtable<Integer, PositionObject> objectPoints;
6969 private Integer serialNumber = 1;
7070 private String dataTitle = "";
7171 private String background = "";
7272 private Context parent;
7373 private final IOperationHistoryHolder historyHolder;
7474
75- public MeMoMaObjectHolder(Context context, MeMoMaConnectLineHolder lineHolder, IOperationHistoryHolder historyHolder)
75+ public MeMoMaObjectHolder(Context context)
7676 {
77- objectPoints = new Hashtable<>();
78- connectLineHolder = lineHolder;
79- parent = context;
80- this.historyHolder = historyHolder;
77+ historyHolder = new OperationHistoryHolder(this);
78+ connectLineHolder = new MeMoMaConnectLineHolder(historyHolder);
79+ objectPoints = new Hashtable<>();
80+ parent = context;
8181 }
8282
8383 /**
@@ -87,9 +87,27 @@ public class MeMoMaObjectHolder
8787 */
8888 public boolean isEmpty()
8989 {
90- return (((connectLineHolder == null)||(objectPoints == null))||(objectPoints.isEmpty()));
90+ return ((objectPoints == null))||(objectPoints.isEmpty());
9191 }
92-
92+
93+ /**
94+ * 履歴の有無があるか (trueの場合、履歴あり)
95+ *
96+ */
97+ public boolean isHistoryExist()
98+ {
99+ return (historyHolder.isHistoryExist());
100+ }
101+
102+ /**
103+ * 「ひとつ戻す」処理
104+ *
105+ */
106+ public boolean undo()
107+ {
108+ return (historyHolder.undo());
109+ }
110+
93111 public MeMoMaConnectLineHolder getConnectLineHolder()
94112 {
95113 return (connectLineHolder);
@@ -145,6 +163,9 @@ public class MeMoMaObjectHolder
145163 {
146164 objectPoints.clear();
147165 serialNumber = 1;
166+
167+ // 操作履歴をクリアする
168+ historyHolder.reset();
148169 }
149170
150171 public void setSerialNumber(int id)
--- a/app/src/main/java/jp/sourceforge/gokigen/memoma/holders/OperationHistoryHolder.java
+++ b/app/src/main/java/jp/sourceforge/gokigen/memoma/holders/OperationHistoryHolder.java
@@ -1,31 +1,85 @@
11 package jp.sourceforge.gokigen.memoma.holders;
22
3-import android.content.Context;
3+import android.graphics.RectF;
4+import android.support.annotation.NonNull;
45 import android.util.Log;
56
67 public class OperationHistoryHolder implements IOperationHistoryHolder
78 {
89 private final String TAG = toString();
10+ private final MeMoMaObjectHolder objectHolder;
911
10- public OperationHistoryHolder()
11- {
12+ private RectF previousRect = null;
13+ private int previousKey = -1;
1214
15+ public OperationHistoryHolder(@NonNull MeMoMaObjectHolder objectHolder)
16+ {
17+ this.objectHolder = objectHolder;
1318 }
1419
20+ @Override
1521 public void addHistory(int key, ChangeKind kind, Object object)
1622 {
1723 Log.v(TAG, "addHistory() KEY : " + key + " KIND : " + kind.toString() + " OBJ : " + object.toString());
24+
25+ try
26+ {
27+ if (kind == ChangeKind.RECTANGLE)
28+ {
29+ // オブジェクトが移動したとき、1つだけ記録する
30+ previousKey = key;
31+ previousRect = (RectF) object;
32+ Log.v(TAG, " id : " + previousKey + "(" + previousRect.left + "," + previousRect.top + ")-(" + previousRect.right + "," + previousRect.bottom + ")");
33+ }
34+ else
35+ {
36+ previousKey = -1;
37+ previousRect = null;
38+ }
39+ }
40+ catch (Exception e)
41+ {
42+ e.printStackTrace();
43+ }
1844 }
1945
46+ @Override
2047 public void reset()
2148 {
2249 Log.v(TAG, "Histry Reset() ");
23-
50+ previousKey = -1;
51+ previousRect = null;
2452 }
2553
26- public void undo()
54+ @Override
55+ public boolean undo()
2756 {
57+ boolean ret = false;
2858 Log.v(TAG, "undo() ");
59+ try
60+ {
61+ PositionObject pos = objectHolder.getPosition(previousKey);
62+ if (pos != null)
63+ {
64+ // 移動したオブジェクトを戻す
65+ pos.setRect(previousRect);
2966
67+ // undo を実行したら、履歴を消す
68+ previousKey = -1;
69+ previousRect = null;
70+ ret = true;
71+ }
72+ }
73+ catch (Exception e)
74+ {
75+ e.printStackTrace();
76+ }
77+ return (ret);
78+ }
79+
80+ @Override
81+ public boolean isHistoryExist()
82+ {
83+ return (previousKey != -1);
3084 }
3185 }
Afficher sur ancien navigateur de dépôt.