OSDN Git Service

SDKを31に更新。
[gokigen/MeMoMa.git] / app / src / main / java / jp / sourceforge / gokigen / memoma / dialogs / TextEditDialog.java
1 package jp.sourceforge.gokigen.memoma.dialogs;
2
3 import android.app.AlertDialog;
4 import android.app.Dialog;
5 import android.content.Context;
6 import android.util.Log;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.widget.TextView;
10
11 import jp.sourceforge.gokigen.memoma.Main;
12 import jp.sourceforge.gokigen.memoma.R;
13
14 /**
15  *  テキスト編集のダイアログ
16  * 
17  * @author MRSa
18  *
19  */
20 public class TextEditDialog
21 {
22         private final Context context;
23         private ITextEditResultReceiver resultReceiver = null;
24         private final int    icon;
25         private String title = null;
26
27         /**
28          *   コンストラクタ
29          */
30         public TextEditDialog(Context arg, int titleIcon)
31         {
32                 context = arg;
33                 icon = titleIcon;
34         }
35
36         /**
37          *  クラスの準備
38          */
39         public void prepare(Dialog layout, ITextEditResultReceiver receiver, String titleMessage, String initialMessage, boolean isSingleLine)
40         {
41                 if (receiver != null)
42                 {
43                         resultReceiver = receiver;
44                 }
45         try
46         {
47             final TextView  editComment = (TextView)  layout.findViewById(R.id.editTextArea);
48             if (titleMessage != null)
49             {
50                 layout.setTitle(titleMessage);
51                 title = titleMessage;
52             }
53
54             // テキスト入力エリアの文字を設定する
55             if (initialMessage != null)
56             {
57                 editComment.setText(initialMessage);
58             }
59             else
60             {
61                 editComment.setText("");
62             }
63
64             // 入力領域の行数を更新する
65             editComment.setSingleLine(isSingleLine);
66         }
67         catch (Exception ex)
68         {
69                 // ログだけ吐いて、何もしない
70                 Log.v(Main.APP_IDENTIFIER, "TextEditDialog::prepare() " + ex.toString());
71         }
72         }
73         
74     /**
75      *   テキスト編集ダイアログを応答する
76      */
77     public Dialog getDialog()
78     {
79         LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
80         final View layout = inflater.inflate(R.layout.messagedialog, null);
81
82         AlertDialog.Builder builder = new AlertDialog.Builder(context);
83         final TextView  editComment = (TextView)  layout.findViewById(R.id.editTextArea);
84
85         // 表示するデータ(アイコン、ダイアログタイトル、メッセージ)を準備する
86         if (icon != 0)
87         {
88             builder.setIcon(icon);
89         }
90         if (title != null)
91         {
92                 builder.setTitle(title);
93         }
94
95         builder.setView(layout);
96         builder.setCancelable(false);
97         builder.setPositiveButton(context.getString(R.string.confirmYes), (dialog, id) -> {
98             if (resultReceiver != null)
99             {
100                 resultReceiver.finishTextEditDialog(editComment.getText().toString());
101             }
102             dialog.cancel();
103             System.gc();
104         });
105         builder.setNegativeButton(context.getString(R.string.confirmNo), (dialog, id) -> {
106             if (resultReceiver != null)
107             {
108                 resultReceiver.cancelTextEditDialog();
109             }
110             dialog.cancel();
111             System.gc();
112         });
113         return (builder.create());      
114     }
115
116     public interface ITextEditResultReceiver
117     {
118         void finishTextEditDialog(String message);
119         void cancelTextEditDialog();
120     }
121 }