package org.intermine.app.dialog; /* * Copyright (C) 2015 InterMine * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. See the LICENSE file for more * information or http://www.gnu.org/copyleft/lesser.html. * */ import android.app.Activity; import android.app.DialogFragment; import android.os.Bundle; import android.util.Patterns; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import org.intermine.app.R; import org.intermine.app.util.Strs; import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; public class MineDialogFragment extends DialogFragment { public static final String MINE_DIALOG_TAG = "edit_mine_dialog_tag"; public static final String MINE_NAME_KEY = "mine_name_key"; public static final String MINE_URL_KEY = "mine_url_key"; @InjectView(R.id.value) EditText mMineName; @InjectView(R.id.mine_url) EditText mMineUrl; private String mOldMineName; private String mOldMineUrl; public interface MineDialogListener { void onMineAdded(String mineName, String mineUrl); void onMineEdited(String oldMineName, String mineName, String mineUrl); } protected MineDialogListener listener; public static MineDialogFragment newInstance() { MineDialogFragment dialog = new MineDialogFragment(); return dialog; } public static MineDialogFragment newInstance(String oldMineName, String oldMineUrl) { MineDialogFragment dialog = new MineDialogFragment(); Bundle args = new Bundle(); args.putString(MINE_NAME_KEY, oldMineName); args.putString(MINE_URL_KEY, oldMineUrl); dialog.setArguments(args); return dialog; } @Override public void onAttach(Activity activity) { super.onAttach(activity); listener = (MineDialogListener) activity; } @Override public void onDetach() { super.onDetach(); listener = null; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.edit_mine_dialog_fragment, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); ButterKnife.inject(this, view); Bundle bundle = getArguments(); if (null != bundle) { mOldMineName = bundle.getString(MINE_NAME_KEY); mMineName.setText(mOldMineName); mOldMineUrl = bundle.getString(MINE_URL_KEY); mMineUrl.setText(mOldMineUrl); getDialog().setTitle(getString(R.string.edit_mine_preference)); } else { getDialog().setTitle(getString(R.string.add_mine_preference)); } } @OnClick(R.id.cancel) public void onCancel() { dismiss(); } @OnClick(R.id.save) public void onSaveMinePressed() { if (validateFields()) { if (Strs.isNullOrEmpty(mOldMineName)) { listener.onMineAdded(mMineName.getText().toString(), mMineUrl.getText().toString()); } else { listener.onMineEdited(mOldMineName, mMineName.getText().toString(), mMineUrl.getText().toString()); } dismiss(); } } protected boolean validateFields() { boolean allValid = true; if (Strs.isNullOrEmpty(mMineName.getText().toString())) { mMineName.setError(getString(R.string.empty_value_em)); allValid = false; } String mineUrl = mMineUrl.getText().toString(); if (Strs.isNullOrEmpty(mineUrl) || !Patterns.WEB_URL.matcher(mineUrl).matches()) { mMineUrl.setError(getString(R.string.malformed_url_provided_em)); allValid = false; } return allValid; } }