diff options
-rw-r--r-- | templates/other/BlankFragment/globals.xml.ftl | 4 | ||||
-rw-r--r-- | templates/other/BlankFragment/recipe.xml.ftl | 18 | ||||
-rw-r--r-- | templates/other/BlankFragment/root/res/layout/fragment_blank.xml.ftl | 13 | ||||
-rw-r--r-- | templates/other/BlankFragment/root/res/values/strings.xml | 6 | ||||
-rw-r--r-- | templates/other/BlankFragment/root/src/app_package/BlankFragment.java.ftl | 129 | ||||
-rw-r--r-- | templates/other/BlankFragment/template.xml | 50 | ||||
-rw-r--r-- | templates/other/BlankFragment/template_blank_fragment.png | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..e0e71ce --- /dev/null +++ b/templates/other/BlankFragment/template_blank_fragment.png |