package leadtools.demos; import java.io.File; import java.io.FilenameFilter; import org.magnum.soda.example.maint.R; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; public class SaveFileDialog extends FileBrowserDialog { public interface OnFileSelectedListener { void onFileSelected(String fileName); } public static final String SAVE_FILE_NAME = "SaveFileName"; private OnFileSelectedListener mCallBack; private EditText mFileNameEditTxt; private Button mSaveBtn; public SaveFileDialog(Context context, FilenameFilter filter, OnFileSelectedListener callBack) { super(context, filter); mCallBack = callBack; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Context context = getContext(); LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View saveElements = layoutInflater.inflate(R.layout.save_file_elements, null); LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linearlayout_elements); linearLayout.addView(saveElements); mFileNameEditTxt = (EditText)saveElements.findViewById(R.id.txtview_save_file_name); mSaveBtn = (Button)saveElements.findViewById(R.id.btn_save_file); mFileNameEditTxt.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { mSaveBtn.setEnabled(s.length() > 0); } }); mSaveBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final String fileName = getCurrentDirectory() + mFileNameEditTxt.getText(); final File file = new File(fileName); if(file.exists()) { AlertDialog.Builder overwriteDlgBuilder = new AlertDialog.Builder(getContext()); overwriteDlgBuilder.setMessage(String.format("%s already exist, do you want to replace it?", fileName)); AlertDialog overwriteDlg = overwriteDlgBuilder.create(); Dialog.OnClickListener overwriteDialogClickListener = new Dialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if(which == AlertDialog.BUTTON_POSITIVE) { onFileNameSelected(fileName); } } }; overwriteDlg.setButton(AlertDialog.BUTTON_POSITIVE, "Yes", overwriteDialogClickListener); overwriteDlg.setButton(AlertDialog.BUTTON_NEGATIVE, "No", overwriteDialogClickListener); overwriteDlg.show(); } else { onFileNameSelected(fileName); } } }); } private void onFileNameSelected(String fileName) { if(mCallBack != null) mCallBack.onFileSelected(fileName); dismiss(); } @Override protected void onFileSelected(String filePath) { File file = new File(filePath); if (file.isFile()) { mFileNameEditTxt.setText(file.getName()); } else { super.onFileSelected(filePath); } } }