diff options
Diffstat (limited to 'templates/activities/MasterDetailFlow/root/src')
5 files changed, 254 insertions, 0 deletions
diff --git a/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailActivity.java.ftl b/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailActivity.java.ftl new file mode 100644 index 0000000..a7deaf6 --- /dev/null +++ b/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailActivity.java.ftl @@ -0,0 +1,39 @@ +package ${packageName}; + +import android.os.Bundle; +import android.content.Intent; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.NavUtils; +import android.view.MenuItem; + +public class ${DetailName}Activity extends FragmentActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_${detail_name}); + + getActionBar().setDisplayHomeAsUpEnabled(true); + + if (savedInstanceState == null) { + Bundle arguments = new Bundle(); + arguments.putString(${DetailName}Fragment.ARG_ITEM_ID, + getIntent().getStringExtra(${DetailName}Fragment.ARG_ITEM_ID)); + ${DetailName}Fragment fragment = new ${DetailName}Fragment(); + fragment.setArguments(arguments); + getSupportFragmentManager().beginTransaction() + .add(R.id.${detail_name}_container, fragment) + .commit(); + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + NavUtils.navigateUpTo(this, new Intent(this, ${CollectionName}Activity.class)); + return true; + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailFragment.java.ftl b/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailFragment.java.ftl new file mode 100644 index 0000000..a0acb1c --- /dev/null +++ b/templates/activities/MasterDetailFlow/root/src/app_package/ContentDetailFragment.java.ftl @@ -0,0 +1,38 @@ +package ${packageName}; + +import ${packageName}.dummy.DummyContent; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class ${DetailName}Fragment extends Fragment { + + public static final String ARG_ITEM_ID = "item_id"; + + DummyContent.DummyItem mItem; + + public ${DetailName}Fragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments().containsKey(ARG_ITEM_ID)) { + mItem = DummyContent.ITEM_MAP.get(getArguments().getString(ARG_ITEM_ID)); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_${detail_name}, container, false); + if (mItem != null) { + ((TextView) rootView.findViewById(R.id.${detail_name})).setText(mItem.content); + } + return rootView; + } +} diff --git a/templates/activities/MasterDetailFlow/root/src/app_package/ContentListActivity.java.ftl b/templates/activities/MasterDetailFlow/root/src/app_package/ContentListActivity.java.ftl new file mode 100644 index 0000000..4bc5216 --- /dev/null +++ b/templates/activities/MasterDetailFlow/root/src/app_package/ContentListActivity.java.ftl @@ -0,0 +1,41 @@ +package ${packageName}; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.app.FragmentActivity; + +public class ${CollectionName}Activity extends FragmentActivity + implements ${CollectionName}Fragment.Callbacks { + + private boolean mTwoPane; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_${collection_name}); + + if (findViewById(R.id.${detail_name}_container) != null) { + mTwoPane = true; + ((${CollectionName}Fragment) getSupportFragmentManager() + .findFragmentById(R.id.${collection_name})) + .setActivateOnItemClick(true); + } + } + + @Override + public void onItemSelected(String id) { + if (mTwoPane) { + Bundle arguments = new Bundle(); + arguments.putString(${DetailName}Fragment.ARG_ITEM_ID, id); + ${DetailName}Fragment fragment = new ${DetailName}Fragment(); + fragment.setArguments(arguments); + getSupportFragmentManager().beginTransaction() + .replace(R.id.${detail_name}_container, fragment) + .commit(); + + } else { + Intent detailIntent = new Intent(this, ${DetailName}Activity.class); + detailIntent.putExtra(${DetailName}Fragment.ARG_ITEM_ID, id); + startActivity(detailIntent); + } + } +} diff --git a/templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl b/templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl new file mode 100644 index 0000000..6b4b9a0 --- /dev/null +++ b/templates/activities/MasterDetailFlow/root/src/app_package/ContentListFragment.java.ftl @@ -0,0 +1,97 @@ +package ${packageName}; + +import ${packageName}.dummy.DummyContent; + +import android.R; +import android.app.Activity; +import android.os.Bundle; +import android.support.v4.app.ListFragment; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ListView; + +public class ${CollectionName}Fragment extends ListFragment { + + private static final String STATE_ACTIVATED_POSITION = "activated_position"; + + private Callbacks mCallbacks = sDummyCallbacks; + private int mActivatedPosition = ListView.INVALID_POSITION; + + public interface Callbacks { + + public void onItemSelected(String id); + } + + private static Callbacks sDummyCallbacks = new Callbacks() { + @Override + public void onItemSelected(String id) { + } + }; + + public ${CollectionName}Fragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(), + R.layout.simple_list_item_activated_1, + R.id.text1, + DummyContent.ITEMS)); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + if (savedInstanceState != null && savedInstanceState + .containsKey(STATE_ACTIVATED_POSITION)) { + setActivatedPosition(savedInstanceState.getInt(STATE_ACTIVATED_POSITION)); + } + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + if (!(activity instanceof Callbacks)) { + throw new IllegalStateException("Activity must implement fragment's callbacks."); + } + + mCallbacks = (Callbacks) activity; + } + + @Override + public void onDetach() { + super.onDetach(); + mCallbacks = sDummyCallbacks; + } + + @Override + public void onListItemClick(ListView listView, View view, int position, long id) { + super.onListItemClick(listView, view, position, id); + mCallbacks.onItemSelected(DummyContent.ITEMS.get(position).id); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (mActivatedPosition != ListView.INVALID_POSITION) { + outState.putInt(STATE_ACTIVATED_POSITION, mActivatedPosition); + } + } + + public void setActivateOnItemClick(boolean activateOnItemClick) { + getListView().setChoiceMode(activateOnItemClick + ? ListView.CHOICE_MODE_SINGLE + : ListView.CHOICE_MODE_NONE); + } + + public void setActivatedPosition(int position) { + if (position == ListView.INVALID_POSITION) { + getListView().setItemChecked(mActivatedPosition, false); + } else { + getListView().setItemChecked(position, true); + } + + mActivatedPosition = position; + } +} diff --git a/templates/activities/MasterDetailFlow/root/src/app_package/dummy/DummyContent.java.ftl b/templates/activities/MasterDetailFlow/root/src/app_package/dummy/DummyContent.java.ftl new file mode 100644 index 0000000..2b05416 --- /dev/null +++ b/templates/activities/MasterDetailFlow/root/src/app_package/dummy/DummyContent.java.ftl @@ -0,0 +1,39 @@ +package ${packageName}.dummy; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class DummyContent { + + public static class DummyItem { + + public String id; + public String content; + + public DummyItem(String id, String content) { + this.id = id; + this.content = content; + } + + @Override + public String toString() { + return content; + } + } + + public static List<DummyItem> ITEMS = new ArrayList<DummyItem>(); + public static Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>(); + + static { + addItem(new DummyItem("1", "Item 1")); + addItem(new DummyItem("2", "Item 2")); + addItem(new DummyItem("3", "Item 3")); + } + + private static void addItem(DummyItem item) { + ITEMS.add(item); + ITEM_MAP.put(item.id, item); + } +} |