content: /*
   * Copyright 2016, The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package <%= appPackage %>.addedittask;
  
  import android.app.Activity;
  import android.os.Bundle;
  import android.support.annotation.Nullable;
  import android.support.design.widget.FloatingActionButton;
  import android.support.design.widget.Snackbar;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.TextView;
  
  import <%= appPackage %>.R;
  import <%= appPackage %>.di.ActivityScoped;
  
  import javax.inject.Inject;
  
  import dagger.android.support.DaggerFragment;
  
  /**
   * Main UI for the add task screen. Users can enter a task title and description.
   */
  @ActivityScoped
  public class AddEditTaskFragment extends DaggerFragment implements AddEditTaskContract.View {
  
      public static final String ARGUMENT_EDIT_TASK_ID = "EDIT_TASK_ID";
  
      @Inject
      AddEditTaskContract.Presenter mPresenter;
  
      private TextView mTitle;
  
      private TextView mDescription;
  
      @Inject
      public AddEditTaskFragment() {
          // Required empty public constructor
      }
  
      @Override
      public void onResume() {
          super.onResume();
          //Bind view to the presenter which will signal for the presenter to load the task.
          mPresenter.takeView(this);
      }
  
      @Override
      public void onPause() {
          mPresenter.dropView();
          super.onPause();
      }
  
      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
          super.onActivityCreated(savedInstanceState);
  
          FloatingActionButton fab = getActivity().findViewById(R.id.fab_edit_task_done);
          fab.setImageResource(R.drawable.ic_done);
          fab.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  mPresenter.saveTask(mTitle.getText().toString(), mDescription.getText().toString());
              }
          });
      }
  
      @Nullable
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
          View root = inflater.inflate(R.layout.addtask_frag, container, false);
          mTitle = root.findViewById(R.id.add_task_title);
          mDescription = root.findViewById(R.id.add_task_description);
  
          setHasOptionsMenu(true);
          setRetainInstance(true);
          return root;
      }
  
      @Override
      public void showEmptyTaskError() {
          Snackbar.make(mTitle, getString(R.string.empty_task_message), Snackbar.LENGTH_LONG).show();
      }
  
      @Override
      public void showTasksList() {
          getActivity().setResult(Activity.RESULT_OK);
          getActivity().finish();
      }
  
      @Override
      public void setTitle(String title) {
          mTitle.setText(title);
      }
  
      @Override
      public void setDescription(String description) {
          mDescription.setText(description);
      }
  
      @Override
      public boolean isActive() {
          return isAdded();
      }
  }
  