diff --git a/.idea/fileTemplates/Android Activity.java b/.idea/fileTemplates/Android Activity.java
new file mode 100644
index 00000000..d9fe5858
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java
@@ -0,0 +1,97 @@
+#set( $regex = "([a-z])([A-Z]+)")
+#set( $replacement = "$1_$2")
+#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
+#set( $variableName = $NAME.replace($NAME.substring(0, 1), $NAME.substring(0, 1).toLowerCase()))
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.content.Intent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.databinding.DataBindingUtil;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.expansion.BaseActivity;
+
+public class ${NAME}Activity extends BaseActivity {
+
+/*
+- Create the following layout resource file [activity_${dashName}.xml]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+- Create an entry in AndroidManifest.xml
+Fix the android:name tag with current path
+
+
+
+
+*/
+
+
+ @Inject
+ ${NAME}ViewModel mViewModel;
+
+ //private Activity${NAME}Binding mBindings;
+
+ //Pass here all external parameters
+ public static void startActivity(Context context) {
+ Intent myIntent = new Intent(context, ${NAME}Activity.class);
+
+ //String keyExtraItem = DataCache.addItem(var);
+ //myIntent.putExtra("keyExtraItem", keyExtraItem);
+
+ context.startActivity(myIntent);
+ }
+
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ //mBindings = DataBindingUtil.setContentView(this, R.layout.activity_${dashName});
+ //mBindings.setLifecycleOwner(this);
+
+
+ /*
+ - Add following lines into MainApplicationComponent
+
+ [a] into @Component
+ ${NAME}Module.class
+
+ [b] into interface body
+ ${NAME}Component.Factory ${variableName}Component();
+ */
+ MainApplication.appComponent
+ .${variableName}Component()
+ .create()
+ .inject(this);
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Activity.java.child.0.java b/.idea/fileTemplates/Android Activity.java.child.0.java
new file mode 100644
index 00000000..a9dd07dc
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java.child.0.java
@@ -0,0 +1,12 @@
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = ${NAME}Component.class)
+public class ${NAME}Module {
+
+ @Provides
+ ${NAME}ViewModel provides${NAME}ViewModel() {
+ return new ${NAME}ViewModel();
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Activity.java.child.1.java b/.idea/fileTemplates/Android Activity.java.child.1.java
new file mode 100644
index 00000000..3d83ef50
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java.child.1.java
@@ -0,0 +1,12 @@
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface ${NAME}Component {
+
+ @Subcomponent.Factory
+ interface Factory {
+ ${NAME}Component create();
+ }
+
+ void inject(${NAME}Activity ${NAME}Activity);
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Activity.java.child.2.java b/.idea/fileTemplates/Android Activity.java.child.2.java
new file mode 100644
index 00000000..23b591d2
--- /dev/null
+++ b/.idea/fileTemplates/Android Activity.java.child.2.java
@@ -0,0 +1,3 @@
+public class ${NAME}ViewModel {
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java b/.idea/fileTemplates/Android Dialog.java
new file mode 100644
index 00000000..910c9533
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java
@@ -0,0 +1,125 @@
+#set( $regex = "([a-z])([A-Z]+)")
+#set( $replacement = "$1_$2")
+#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.expansion.BaseDialogFragment;
+
+public class Dialog${NAME}View extends BaseDialogFragment {
+
+/*
+Create the following layout resource file [dialog_${dashName}.xml]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*/
+
+
+ @Inject
+ Dialog${NAME}ViewModel mViewModel;
+
+ //private Dialog${NAME}Binding mBindings;
+ private Context mContext;
+
+ //Pass here all external parameters
+ public static Dialog${NAME}View newInstance() {
+ return new Dialog${NAME}View();
+ }
+
+ private Dialog${NAME}View() {
+ super();
+ }
+
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ this.mContext = requireContext();
+
+ //mBindings = Dialog${NAME}Binding.inflate(LayoutInflater.from(this.mContext), null, false);
+ //mBindings.setLifecycleOwner(this);
+
+
+ /*
+ - Add following lines into MainApplicationComponent
+
+ [a] into @Component
+ Dialog${NAME}Module.class
+
+ [b] into interface body
+ Dialog${NAME}Component.Factory dialog${NAME}Component();
+ */
+ MainApplication.appComponent
+ .dialog${NAME}Component()
+ .create()
+ .inject(this);
+
+ setCancelable(false);
+
+ var alertDialog = new MaterialAlertDialogBuilder(this.mContext)
+ .setView(mBindings.getRoot())
+ .setCancelable(isCancelable())
+ .create();
+
+ alertDialog.setCanceledOnTouchOutside(isCancelable());
+ alertDialog.setOnShowListener(this);
+ return alertDialog;
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java.child.0.java b/.idea/fileTemplates/Android Dialog.java.child.0.java
new file mode 100644
index 00000000..b5d03e92
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java.child.0.java
@@ -0,0 +1,12 @@
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = Dialog${NAME}Component.class)
+public class Dialog${NAME}Module {
+
+ @Provides
+ Dialog${NAME}ViewModel providesDialog${NAME}ViewModel() {
+ return new Dialog${NAME}ViewModel();
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java.child.1.java b/.idea/fileTemplates/Android Dialog.java.child.1.java
new file mode 100644
index 00000000..84dd3231
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java.child.1.java
@@ -0,0 +1,12 @@
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface Dialog${NAME}Component {
+
+ @Subcomponent.Factory
+ interface Factory {
+ Dialog${NAME}Component create();
+ }
+
+ void inject(Dialog${NAME}View dialog${NAME}View);
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Dialog.java.child.2.java b/.idea/fileTemplates/Android Dialog.java.child.2.java
new file mode 100644
index 00000000..9f0c3961
--- /dev/null
+++ b/.idea/fileTemplates/Android Dialog.java.child.2.java
@@ -0,0 +1,3 @@
+public class Dialog${NAME}ViewModel {
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java b/.idea/fileTemplates/Android Fragment.java
new file mode 100644
index 00000000..efc1d287
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java
@@ -0,0 +1,82 @@
+#set( $regex = "([a-z])([A-Z]+)")
+#set( $replacement = "$1_$2")
+#set( $dashName = $NAME.replaceAll($regex, $replacement).toLowerCase())
+#set( $variableName = $NAME.replace($NAME.substring(0, 1), $NAME.substring(0, 1).toLowerCase()))
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import javax.inject.Inject;
+
+import it.integry.integrywmsnative.MainApplication;
+import it.integry.integrywmsnative.core.expansion.BaseFragment;
+
+public class ${NAME}Fragment extends BaseFragment {
+
+/*
+- Create the following layout resource file [fragment_${dashName}.xml]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*/
+
+
+ @Inject
+ ${NAME}ViewModel mViewModel;
+
+ //private Fragment${NAME}Binding mBindings;
+
+
+ public ${NAME}Fragment() {
+ // Required empty public constructor
+ }
+
+ public static ${NAME}Fragment newInstance() {
+ return new ${NAME}Fragment();
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ // Inflate the layout for this fragment
+ setRetainInstance(true);
+
+ //mBindings = Fragment${NAME}Binding.inflate(inflater, container, false);
+ //mBindings.setLifecycleOwner(this);
+
+
+ /*
+ - Add following lines into MainApplicationComponent
+
+ [a] into @Component
+ ${NAME}Module.class
+
+ [b] into interface body
+ ${NAME}Component.Factory ${variableName}Component();
+ */
+ MainApplication.appComponent
+ .${variableName}Component()
+ .create()
+ .inject(this);
+
+ return mBindings.getRoot();
+ }
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java.child.0.java b/.idea/fileTemplates/Android Fragment.java.child.0.java
new file mode 100644
index 00000000..23b591d2
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java.child.0.java
@@ -0,0 +1,3 @@
+public class ${NAME}ViewModel {
+
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java.child.1.java b/.idea/fileTemplates/Android Fragment.java.child.1.java
new file mode 100644
index 00000000..f07fde4f
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java.child.1.java
@@ -0,0 +1,12 @@
+import dagger.Subcomponent;
+
+@Subcomponent
+public interface ${NAME}Component {
+
+ @Subcomponent.Factory
+ interface Factory {
+ ${NAME}Component create();
+ }
+
+ void inject(${NAME}Fragment ${NAME}Fragment);
+}
\ No newline at end of file
diff --git a/.idea/fileTemplates/Android Fragment.java.child.2.java b/.idea/fileTemplates/Android Fragment.java.child.2.java
new file mode 100644
index 00000000..a9dd07dc
--- /dev/null
+++ b/.idea/fileTemplates/Android Fragment.java.child.2.java
@@ -0,0 +1,12 @@
+import dagger.Module;
+import dagger.Provides;
+
+@Module(subcomponents = ${NAME}Component.class)
+public class ${NAME}Module {
+
+ @Provides
+ ${NAME}ViewModel provides${NAME}ViewModel() {
+ return new ${NAME}ViewModel();
+ }
+
+}
\ No newline at end of file