package net.sourceforge.fidocadj.dialogs;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import net.sourceforge.fidocadj.FidoEditor;
import net.sourceforge.fidocadj.R;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
/**
<pre>
This file is part of FidoCadJ.
FidoCadJ is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
FidoCadJ is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FidoCadJ. If not, see <http://www.gnu.org/licenses/>.
Copyright 2014 by Dante Loi
</pre>
@author Dante Loi
*/
public class DialogOpenFile extends DialogFragment
{
private String[] files;
private FidoEditor drawingPanel;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
final Activity context = getActivity();
final Dialog dialog = new Dialog(context);
drawingPanel = (FidoEditor)context.findViewById(R.id.drawingPanel);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.open_file);
File dir = context.getFilesDir();
files = dir.list();
List<String> listFiles = new ArrayList<String>();
for( String str:files)
if( str.indexOf("state.fcd.tmp") == -1 )
listFiles.add(str);
if(listFiles.isEmpty())
listFiles.add("No such file.");
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
context,
R.layout.list_item, R.id.lblListItem,
listFiles);
ListView list = (ListView) dialog.findViewById(R.id.fileList);
list.setAdapter(arrayAdapter);
list.setPadding(10, 10, 10, 10);
OnItemClickListener clickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
StringBuilder text = new StringBuilder();
text.append("[FIDOCAD]\n");
File file = new File(context.getFilesDir(),files[position]);
try {
BufferedReader br = new BufferedReader(
new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
drawingPanel.getParserActions().openFileName = files[position];
drawingPanel.getParserActions().parseString(new
StringBuffer(text.toString()));
drawingPanel.getUndoActions().saveUndoState();
drawingPanel.invalidate();
dialog.dismiss();
}
};
list.setOnItemClickListener(clickListener);
return dialog;
}
}