package com.openfarmanager.android.fragments; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.openfarmanager.android.R; import com.openfarmanager.android.utils.ParcelableWrapper; import java.io.Serializable; public abstract class EditViewDialog extends BaseDialog { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Action_Dialog); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(getSafeString(R.string.app_name)); final View view = inflater.inflate(getLayout(), container, false); restoreSettings(view); view.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); } }); view.findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View button) { if (getListener() != null) { saveSettings(view); dismiss(); handleAction(view); } } }); return view; } protected EditDialogListener getListener() { //noinspection unchecked return ((ParcelableWrapper<EditDialogListener>) getArguments().getParcelable("listener")).value; } protected abstract void restoreSettings(View view); protected abstract void saveSettings(View view); protected abstract int getLayout(); protected abstract void handleAction(final View view); public static interface EditDialogListener extends Serializable { public void doSearch(String pattern, boolean caseSensitive, boolean wholeWords, boolean regularExpression); public void doReplace(String pattern, String replaceTo, boolean caseSensitive, boolean wholeWords, boolean regularExpression); public void goTo(int position, int unit); } }