aboutsummaryrefslogtreecommitdiffstats
path: root/templates
diff options
context:
space:
mode:
authorAdam Koch <akoch@android.com>2013-01-14 16:14:30 -0500
committerAdam Koch <akoch@android.com>2013-01-22 11:38:38 -0500
commitf362609bb25092e8a431dc4d7701169dbb8bd431 (patch)
treea78881b64f15220450084c0176e52d6419f7562f /templates
parenta737845cdcf443843a3bc112a66f0d560b1e007a (diff)
downloadsdk-f362609bb25092e8a431dc4d7701169dbb8bd431.zip
sdk-f362609bb25092e8a431dc4d7701169dbb8bd431.tar.gz
sdk-f362609bb25092e8a431dc4d7701169dbb8bd431.tar.bz2
New "Blank Fragment" ADT template.
This change adds a new Blank Fragment template in the 'other' category, that creates an empty Fragment class with the option of generating some commonly used boilerplate code such as fragment factory methods, interface callbacks and an empty layout xml. Change-Id: I4c68b9ddb6f7915ca8e75b2c6372664d39e216f5
Diffstat (limited to 'templates')
-rw-r--r--templates/other/BlankFragment/globals.xml.ftl4
-rw-r--r--templates/other/BlankFragment/recipe.xml.ftl18
-rw-r--r--templates/other/BlankFragment/root/res/layout/fragment_blank.xml.ftl13
-rw-r--r--templates/other/BlankFragment/root/res/values/strings.xml6
-rw-r--r--templates/other/BlankFragment/root/src/app_package/BlankFragment.java.ftl129
-rw-r--r--templates/other/BlankFragment/template.xml50
-rw-r--r--templates/other/BlankFragment/template_blank_fragment.pngbin0 -> 6003 bytes
7 files changed, 220 insertions, 0 deletions
diff --git a/templates/other/BlankFragment/globals.xml.ftl b/templates/other/BlankFragment/globals.xml.ftl
new file mode 100644
index 0000000..bfc27eb
--- /dev/null
+++ b/templates/other/BlankFragment/globals.xml.ftl
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<globals>
+ <global id="srcOut" value="src/${slashedPackageName(packageName)}" />
+</globals>
diff --git a/templates/other/BlankFragment/recipe.xml.ftl b/templates/other/BlankFragment/recipe.xml.ftl
new file mode 100644
index 0000000..add6d27
--- /dev/null
+++ b/templates/other/BlankFragment/recipe.xml.ftl
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<recipe>
+
+ <merge from="res/values/strings.xml" />
+
+ <#if includeLayout>
+ <instantiate from="res/layout/fragment_blank.xml.ftl"
+ to="res/layout/fragment_${classToResource(className)}.xml" />
+
+ <open file="res/layout/fragment_${classToResource(className)}.xml" />
+ </#if>
+
+ <open file="${srcOut}/${className}.java" />
+
+ <instantiate from="src/app_package/BlankFragment.java.ftl"
+ to="${srcOut}/${className}.java" />
+
+</recipe>
diff --git a/templates/other/BlankFragment/root/res/layout/fragment_blank.xml.ftl b/templates/other/BlankFragment/root/res/layout/fragment_blank.xml.ftl
new file mode 100644
index 0000000..3e04f05
--- /dev/null
+++ b/templates/other/BlankFragment/root/res/layout/fragment_blank.xml.ftl
@@ -0,0 +1,13 @@
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".${className}">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="@string/hello_blank_fragment" />
+
+</FrameLayout>
diff --git a/templates/other/BlankFragment/root/res/values/strings.xml b/templates/other/BlankFragment/root/res/values/strings.xml
new file mode 100644
index 0000000..c8d8b1a
--- /dev/null
+++ b/templates/other/BlankFragment/root/res/values/strings.xml
@@ -0,0 +1,6 @@
+<resources>
+
+<!-- TODO: Remove or change this placeholder text -->
+ <string name="hello_blank_fragment">Hello blank fragment</string>
+
+</resources>
diff --git a/templates/other/BlankFragment/root/src/app_package/BlankFragment.java.ftl b/templates/other/BlankFragment/root/src/app_package/BlankFragment.java.ftl
new file mode 100644
index 0000000..6b3fb1e
--- /dev/null
+++ b/templates/other/BlankFragment/root/src/app_package/BlankFragment.java.ftl
@@ -0,0 +1,129 @@
+package ${packageName};
+
+<#if includeCallbacks>import android.app.Activity;</#if>
+<#if includeCallbacks>import android.net.Uri;</#if>
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+<#if !includeLayout>import android.widget.TextView;</#if>
+
+/**
+ * A simple {@link android.support.v4.app.Fragment} subclass.
+<#if includeCallbacks>
+ * Activities that contain this fragment must implement the
+ * {@link ${className}.OnFragmentInteractionListener} interface
+ * to handle interaction events.
+</#if>
+<#if includeFactory>
+ * Use the {@link ${className}#newInstance} factory method to
+ * create an instance of this fragment.
+</#if>
+ *
+ */
+public class ${className} extends Fragment {
+<#if includeFactory>
+ // TODO: Rename parameter arguments, choose names that match
+ // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+ private static final String ARG_PARAM1 = "param1";
+ private static final String ARG_PARAM2 = "param2";
+
+ // TODO: Rename and change types of parameters
+ private String mParam1;
+ private String mParam2;
+</#if>
+
+<#if includeCallbacks>
+ private OnFragmentInteractionListener mListener;
+</#if>
+
+<#if includeFactory>
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment ${className}.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static ${className} newInstance(String param1, String param2) {
+ ${className} fragment = new ${className}();
+ Bundle args = new Bundle();
+ args.putString(ARG_PARAM1, param1);
+ args.putString(ARG_PARAM2, param2);
+ fragment.setArguments(args);
+ return fragment;
+ }
+</#if>
+ public ${className}() {
+ // Required empty public constructor
+ }
+
+<#if includeFactory>
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getArguments() != null) {
+ mParam1 = getArguments().getString(ARG_PARAM1);
+ mParam2 = getArguments().getString(ARG_PARAM2);
+ }
+ }
+</#if>
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+<#if includeLayout>
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_${classToResource(className)}, container, false);
+<#else>
+ TextView textView = new TextView(getActivity());
+ textView.setText(R.string.hello_blank_fragment);
+ return textView;
+</#if>
+ }
+
+<#if includeCallbacks>
+ // TODO: Rename method, update argument and hook method into UI event
+ public void onButtonPressed(Uri uri) {
+ if (mListener != null) {
+ mListener.onFragmentInteraction(uri);
+ }
+ }
+
+ @Override
+ public void onAttach(Activity activity) {
+ super.onAttach(activity);
+ try {
+ mListener = (OnFragmentInteractionListener) activity;
+ } catch (ClassCastException e) {
+ throw new ClassCastException(activity.toString()
+ + " must implement OnFragmentInteractionListener");
+ }
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ mListener = null;
+ }
+
+ /**
+ * This interface must be implemented by activities that contain this
+ * fragment to allow an interaction in this fragment to be communicated
+ * to the activity and potentially other fragments contained in that
+ * activity.
+ * <p>
+ * See the Android Training lesson <a href=
+ * "http://developer.android.com/training/basics/fragments/communicating.html"
+ * >Communicating with Other Fragments</a> for more information.
+ */
+ public interface OnFragmentInteractionListener {
+ // TODO: Update argument type and name
+ public void onFragmentInteraction(Uri uri);
+ }
+</#if>
+
+}
diff --git a/templates/other/BlankFragment/template.xml b/templates/other/BlankFragment/template.xml
new file mode 100644
index 0000000..9434c18
--- /dev/null
+++ b/templates/other/BlankFragment/template.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<template
+ format="3"
+ revision="1"
+ name="New Blank Fragment"
+ description="Creates a blank fragment that is compatible back to API level 4."
+ minApi="7"
+ minBuildApi="8">
+
+ <dependency name="android-support-v4" revision="8" />
+
+ <category value="Other" />
+
+ <parameter
+ id="className"
+ name="Fragment Name"
+ type="string"
+ constraints="class|nonempty|unique"
+ default="BlankFragment"
+ help="The name of the fragment class to create" />
+
+ <parameter
+ id="includeLayout"
+ name="Create layout XML?"
+ type="boolean"
+ default="true"
+ help="Generate a layout XML for the fragment" />
+
+ <parameter
+ id="includeFactory"
+ name="Include fragment factory methods?"
+ type="boolean"
+ default="true"
+ help="Generate static fragment factory methods for easy instantiation" />
+
+ <parameter
+ id="includeCallbacks"
+ name="Include interface callbacks?"
+ type="boolean"
+ default="true"
+ help="Generate event callbacks for communication with an Activity or other fragments" />
+
+ <thumbs>
+ <thumb>template_blank_fragment.png</thumb>
+ </thumbs>
+
+ <globals file="globals.xml.ftl" />
+ <execute file="recipe.xml.ftl" />
+
+</template>
diff --git a/templates/other/BlankFragment/template_blank_fragment.png b/templates/other/BlankFragment/template_blank_fragment.png
new file mode 100644
index 0000000..e0e71ce
--- /dev/null
+++ b/templates/other/BlankFragment/template_blank_fragment.png
Binary files differ