OSDN Git Service

パッケージの整理を開始。文字フォントを塗りつぶすように変更すうr。
[gokigen/MeMoMa.git] / app / src / main / java / jp / sourceforge / gokigen / memoma / dialogs / FileSelectionDialog.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.content.DialogInterface;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.widget.AdapterView;
10 import android.widget.ListView;
11
12 import jp.sourceforge.gokigen.memoma.fileio.ExternalStorageFileUtility;
13 import jp.sourceforge.gokigen.memoma.holders.MeMoMaDataFileHolder;
14 import jp.sourceforge.gokigen.memoma.R;
15
16 /**
17  *    ファイル選択ダイアログ
18  * 
19  * @author MRSa
20  *
21  */
22 public class FileSelectionDialog
23 {
24         private Context context = null;
25         private IResultReceiver resultReceiver = null;
26         private ExternalStorageFileUtility fileUtility = null;
27     private MeMoMaDataFileHolder dataFileHolder = null;
28     private String title = null;
29     private String fileExtension = null;
30     private Dialog dialogRef = null;
31     
32         /**
33          *    コンストラクタ
34          * 
35          * @param arg
36          */
37         public FileSelectionDialog(Context arg, String titleMessage, ExternalStorageFileUtility utility, String extension, IResultReceiver receiver)
38         {
39             context = arg;      
40             resultReceiver = receiver;
41                 title = titleMessage;
42         fileUtility = utility;
43         fileExtension = extension;
44         dataFileHolder = new MeMoMaDataFileHolder(context, android.R.layout.simple_list_item_1, fileUtility, extension);
45         }
46
47         /**
48          *   ファイル一覧データをつくる!
49          * 
50          * @param currentFileName
51          * @param extendDirectory
52          */
53         public void prepare(String currentFileName, String extendDirectory)
54         {
55                 dataFileHolder.updateFileList(currentFileName, extendDirectory);
56         }
57
58     /**
59      *   ファイル選択ダイアログを応答する
60      *   
61      * @return
62      */
63     public Dialog getDialog()
64     {
65         LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
66         final View layout = inflater.inflate(R.layout.listdialog, null);
67
68         AlertDialog.Builder builder = new AlertDialog.Builder(context);
69         
70         final ListView  listView = (ListView)  layout.findViewById(R.id.ListDataFileName);
71         listView.setAdapter(dataFileHolder);
72
73         // 表示するデータ(ダイアログタイトル)を準備する
74         if (title != null)
75         {
76             builder.setTitle(title);
77         }
78         builder.setView(layout);
79
80         // アイテムを選択したときの処理
81         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
82             //@Override
83             public void onItemClick(AdapterView<?> parentView, View view, int position, long id)
84             {
85                 ListView listView = (ListView) parentView;
86                 String fileName = (String) listView.getItemAtPosition(position);
87
88                 /// リストが選択されたときの処理...データを開く
89                    if (resultReceiver != null)
90                    {
91                        resultReceiver.selectedFileName(fileName + fileExtension);
92                    }
93                    if (dialogRef != null)
94                    {
95                            dialogRef.dismiss();
96                    dialogRef = null;
97                    }
98                System.gc();
99             }
100         });
101         builder.setCancelable(true);
102         builder.setNegativeButton(context.getString(R.string.confirmNo), new DialogInterface.OnClickListener()
103                {
104                    public void onClick(DialogInterface dialog, int id)
105                    {
106                        dialog.cancel();
107                        System.gc();
108                    }
109                });
110         dialogRef = builder.create();
111         return (dialogRef);     
112     }
113
114     /**
115      *   ファイルダイアログのインタフェース
116      *   
117      * @author MRSa
118      *
119      */
120     public interface IResultReceiver
121     {
122         /**
123          *    ファイルが選択された!
124          *    
125          */
126         public abstract void selectedFileName(String fileName);
127     }   
128 }