Android Open Source - ReqDroid Requisitos Atrasados Fragment






From Project

Back to project page ReqDroid.

License

The source code is released under:

GNU General Public License

If you think the Android project ReqDroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Este arquivo esta sujeito aos termos e condicoes definidos
 * no arquivo 'LICENSE.txt, o qual e parte deste pacote de codigo fonte.
 *//*w  ww .  j  a va  2 s.c  o m*/

package com.vrs.reqdroid.fragments;

import android.annotation.TargetApi;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.TextView;

import com.vrs.reqdroid.R;
import com.vrs.reqdroid.activities.TelaPrincipalActivity;
import com.vrs.reqdroid.activities.TelaRequisitoAtrasadoDetalhadoActivity;
import com.vrs.reqdroid.util.AlertsUtil;
import com.vrs.reqdroid.util.ListViewRequisitosAtrasadosAdapter;
import com.vrs.reqdroid.util.ProjetoUtils;
import com.vrs.reqdroid.util.RequisitosAtrasadosUtils;
import com.vrs.reqdroid.util.RequisitosUtils;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;

/**
 * Implementa a tela de listas de requisitosAtrasados.
 *
 * @author Vinicius Rodrigues Silva <vinicius.rodsilva@gmail.com>
 * @version 1.0
 */
public class RequisitosAtrasadosFragment extends Fragment {

    private static ArrayList<String> requisitosAtrasados;
    private static ListViewRequisitosAtrasadosAdapter lvRequisitosAtrasadosAdapter;
    private ListView lvRequisitosAtrasados;
    private static int idProjeto;
    private static EditText editTextRequisitoAtrasado;
    private static String requisitoSelecionado; //Util pra quando o requisito e selecionado para exibir detalhes.
    private static int posicaoRequisitoSelecionado; //Util pra quando o requisito e selecionado para exibir detalhes.
    private View rootView;


    public RequisitosAtrasadosFragment() {
        // Empty constructor required for fragment subclasses
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        rootView = inflater.inflate(R.layout.requisitos_atrasados, container, false);
        getActivity().setTitle(getResources().getStringArray(R.array.titulos_funcionalidades_array)[3]);
        init();
        carregaRequisitos();
        adicionaRequisito();
        exibeDetalhesRequisito();
        return rootView;
    }

    /**
     * Carrega os requisitosAtrasados existentes no banco de dados e adiciona-os a lista.
     */
    private void carregaRequisitos()
    {
        requisitosAtrasados = RequisitosAtrasadosUtils.carregaRequisitosBD(getActivity(), idProjeto);
        lvRequisitosAtrasados.setCacheColorHint(Color.TRANSPARENT);
        lvRequisitosAtrasados.setSelectionAfterHeaderView();
        lvRequisitosAtrasadosAdapter = new ListViewRequisitosAtrasadosAdapter(getActivity(), requisitosAtrasados, botaoOpcoesListener);
        lvRequisitosAtrasados.setAdapter(lvRequisitosAtrasadosAdapter);
    }

    /**
     * Adiciona um novo requisito na lista.
     */
    private void adicionaRequisito()
    {
        final Button botaoAdicionarRequisito = (Button) rootView.findViewById(R.id.botaoAdicionarRequisitoAtrasado);

        botaoAdicionarRequisito.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v) {
                if (RequisitosUtils.requisitoPreenchido(editTextRequisitoAtrasado.getText().toString()))
                {
                    salvaRequisito(editTextRequisitoAtrasado.getText().toString());
                    requisitosAtrasados.add(editTextRequisitoAtrasado.getText().toString());
                    editTextRequisitoAtrasado.setText("");
                    lvRequisitosAtrasadosAdapter.notifyDataSetChanged();
                }
            }
        });
    }

    /**
     * Abre a tela de detalhes do requisito selecionado.
     */
    private void exibeDetalhesRequisito()
    {
        final Intent i = new Intent(getActivity(), TelaRequisitoAtrasadoDetalhadoActivity.class);

        lvRequisitosAtrasados.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, final int position, long l) {
                LinearLayout caixaRequisito = (LinearLayout) view; //LinearLayout que contem o texto e botao
                final TextView txtRequisito = (TextView) caixaRequisito.getChildAt(0);
                requisitoSelecionado = txtRequisito.getText().toString();
                posicaoRequisitoSelecionado = position;
                startActivity(i);
            }
        });
    }

    /**
     * Listener do botao de opcoes do requisito.
     */
    private final View.OnClickListener botaoOpcoesListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            LinearLayout caixaRequisito = (LinearLayout)view.getParent();
            TextView txtRequisito = (TextView)caixaRequisito.getChildAt(0);
            posicaoRequisitoSelecionado = lvRequisitosAtrasados.getPositionForView(caixaRequisito);
            requisitoSelecionado = txtRequisito.getText().toString();

            //Se a versao do Android e 3.0 ou superior, exibe o PopUpMenu, senao, o ContextMenu.
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
            {
                exibePopupMenuOpcoes(view);
            }
            else{
                ImageButton bOpcoes = (ImageButton)caixaRequisito.getChildAt(1); //O botao de opcoes.
                registerForContextMenu(bOpcoes);
                getActivity().openContextMenu(bOpcoes);
            }
        }
    };

    /**
     * Cria o menu de contexto das opcoes do requisito.
     * Funciona apenas para a versao 2.3 ou inferior do Android.
     *
     * @param menu O menu de opcoes
     * @param v A view
     * @param menuInfo menuInfo
     */
    @TargetApi(Build.VERSION_CODES.ECLAIR)
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getActivity().getMenuInflater();
        inflater.inflate(R.menu.menu_opcoes_requisito_atrasado, menu);
    }

    /**
     * Realiza operacoes das operacoes de menu do requisito.
     * Funciona apenas para a versao 2.3 ou inferior do Android.
     *
     * @param item O item do menu
     * @return Verdadeiro se uma opcao do menu foi selecionada.
     */
    @TargetApi(Build.VERSION_CODES.ECLAIR)
    public boolean onContextItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case R.id.opcaoEditarRequisitoAtrasado:
                menuEdita();
                return true;
            case R.id.opcaoMoverRequisitoAtrasado:
                menuMove();
                return true;
            case R.id.opcaoDeletarRequisitoAtrasado:
                menuDeleta();
            default:
                return false;
        }
    }

    /**
     * Mostra o PopUpMenu das opcoes do requisito.
     * Funciona apenas para a versao 3.0 ou superior do Android.
     *
     * @param v a view do requisito
     *
     */
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    private void exibePopupMenuOpcoes(final View v){
        PopupMenu popupMenu = new PopupMenu(getActivity(), v);
        popupMenu.getMenuInflater().inflate(R.menu.menu_opcoes_requisito_atrasado, popupMenu.getMenu());

        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.opcaoEditarRequisitoAtrasado:
                        menuEdita();
                        break;
                    case R.id.opcaoMoverRequisitoAtrasado:
                        menuMove();
                        break;
                    case R.id.opcaoDeletarRequisitoAtrasado:
                        menuDeleta();
                        break;
                }
                return true;
            }
        });
        popupMenu.show();
    }

    /**
     * Realiza a operacao de editar o requisito.
     */
    private void menuEdita()
    {
        int versaoRequisito = RequisitosUtils.getVersaoRequisito(getActivity(), requisitoSelecionado, idProjeto);
        int subversaoRequisito = RequisitosUtils.getSubversaoRequisito(getActivity(), requisitoSelecionado, idProjeto);

        AlertsUtil.exibeAlertaEditar(getActivity(), requisitoSelecionado, versaoRequisito, subversaoRequisito, posicaoRequisitoSelecionado, 2);
    }

    /**
     * Realiza a operacao de mover (atrasar) o requisito.
     */
    private void menuMove()
    {
        RequisitosAtrasadosUtils.moveRequisito(getActivity(), requisitosAtrasados, requisitoSelecionado,
                posicaoRequisitoSelecionado, idProjeto, lvRequisitosAtrasadosAdapter);
    }

    /**
     * Realiza a operacao de deletar o requisito.
     */
    private void menuDeleta()
    {
        RequisitosAtrasadosUtils.removeRequisito(getActivity(), requisitosAtrasados, requisitoSelecionado,
                posicaoRequisitoSelecionado, idProjeto, lvRequisitosAtrasadosAdapter);
    }

    /**
     * Salva o requisito no banco de dados do aplicativo.
     */
    private void salvaRequisito(String descricaoRequisito)
    {
        RequisitosAtrasadosUtils.salvaRequisitoBD(getActivity(), descricaoRequisito, getDataATual(), idProjeto);
    }

    /**
     * Atribui a data atual.
     *
     * @return a data atual
     */
    private static String getDataATual()
    {
        return DateFormat.getDateInstance().format(new Date());
    }
    /**
     * Retorna a descricao do requisito selecionado.
     *
     * @return A descricao do requisito
     */
    public static String getRequisitoSelecionado()
    {
        return requisitoSelecionado;
    }

    /**
     * Retorna a posicao do requisito selecionado na lista.
     *
     * @return a posicao do requisito
     */
    public static int getPosicaoRequisitoSelecionado()
    {
        return posicaoRequisitoSelecionado;
    }

    /**
     * Atualiza a lista de requisitosAtrasados quando um requisito e editado na tela de detalhes.
     *
     * @param posicao a posicao do requisito na lista
     * @param descricao a descricao do requisito
     */
    public static void atualizaLista(int posicao, String descricao)
    {
        requisitosAtrasados.set(posicao, descricao);
        lvRequisitosAtrasadosAdapter.notifyDataSetChanged();
    }

    /**
     * Atualiza a lista de requisitosAtrasados quando um requisito e removido atraves da tela de detalhes.
     *
     * @param posicao A posicao do requisito na lista
     */
    public static void atualizaListaRemovido(int posicao)
    {
        requisitosAtrasados.remove(posicao);
        lvRequisitosAtrasadosAdapter.notifyDataSetChanged();
    }


    /**
     * Inicia as variaveis da classe.
     */
    private void init()
    {
        idProjeto = ProjetoUtils.getIdProjeto();
        lvRequisitosAtrasados = (ListView) rootView.findViewById(R.id.lvRequisitosAtrasados);
        requisitosAtrasados = new ArrayList<String>();
        editTextRequisitoAtrasado = (EditText) rootView.findViewById(R.id.etRequisitoAtrasado);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpTo(getActivity(), new Intent(getActivity(), TelaPrincipalActivity.class));
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}




Java Source Code List

com.vrs.reqdroid.activities.DrawerPrincipalActivity.java
com.vrs.reqdroid.activities.MainActivity.java
com.vrs.reqdroid.activities.TelaAbrirProjetoActivity.java
com.vrs.reqdroid.activities.TelaEditarEscopoActivity.java
com.vrs.reqdroid.activities.TelaEscopoActivity.java
com.vrs.reqdroid.activities.TelaHipoteseDetalhadaActivity.java
com.vrs.reqdroid.activities.TelaNovoProjetoActivity.java
com.vrs.reqdroid.activities.TelaPrincipalActivity.java
com.vrs.reqdroid.activities.TelaRequisitoAtrasadoDetalhadoActivity.java
com.vrs.reqdroid.activities.TelaRequisitoDetalhadoActivity.java
com.vrs.reqdroid.activities.TelaSobreActivity.java
com.vrs.reqdroid.dao.BDGerenciador.java
com.vrs.reqdroid.dao.IOperacoesBD.java
com.vrs.reqdroid.fragments.CaracteristicasUsuarioFragment.java
com.vrs.reqdroid.fragments.DependenciasFragment.java
com.vrs.reqdroid.fragments.HipotesesEDependenciasFragment.java
com.vrs.reqdroid.fragments.HipotesesFragment.java
com.vrs.reqdroid.fragments.ProjetosListFragment.java
com.vrs.reqdroid.fragments.RequisitosAtrasadosFragment.java
com.vrs.reqdroid.fragments.RequisitosFragment.java
com.vrs.reqdroid.models.Dependencia.java
com.vrs.reqdroid.models.Projeto.java
com.vrs.reqdroid.util.AlertsUtil.java
com.vrs.reqdroid.util.DependenciasUtils.java
com.vrs.reqdroid.util.DrawerPrincipalAdapter.java
com.vrs.reqdroid.util.HipotesesUtils.java
com.vrs.reqdroid.util.IRequisito.java
com.vrs.reqdroid.util.ListViewDependenciasAdapter.java
com.vrs.reqdroid.util.ListViewHipotesesAdapter.java
com.vrs.reqdroid.util.ListViewProjetosAdapter.java
com.vrs.reqdroid.util.ListViewRequisitosAdapter.java
com.vrs.reqdroid.util.ListViewRequisitosAtrasadosAdapter.java
com.vrs.reqdroid.util.ProjetoUtils.java
com.vrs.reqdroid.util.RequisitosAtrasadosUtils.java
com.vrs.reqdroid.util.RequisitosUtils.java