package br.com.while42.rpgcs.activity.fragment; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.Spinner; import android.widget.TableLayout; import android.widget.TableRow; import br.com.while42.rpgcs.R; import br.com.while42.rpgcs.activity.support.ViewTools; import br.com.while42.rpgcs.model.character.RpgClass; import br.com.while42.rpgcs.model.classes.AbstractRpgClass; import br.com.while42.rpgcs.model.classes.CharacterClass; import br.com.while42.rpgcs.model.classes.bonuses.ExperienceAndLevel; import br.com.while42.rpgcs.reflection.ClassByReflection; public class EditClasses extends Fragment { private RpgClass rpgClasses; private Context context; private TableLayout classesTableLayout; private List<TableRow> rows = new ArrayList<TableRow>(); private List<CharacterClass> listClasses; private static int POS_VIEW_CLASS = 0; private static int POS_VIEW_LEVEL = 1; public EditClasses() { } public EditClasses(RpgClass rpgClasses) { this.rpgClasses = rpgClasses; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View layout = inflater.inflate(R.layout.fragment_edit_classes, container, false); context = layout.getContext(); classesTableLayout = (TableLayout) layout.findViewById(R.id_frag_edit_classes.tablelayout_class); loadClasses(); return layout; } private void loadClasses() { listClasses = ClassByReflection.getAll(context, AbstractRpgClass.class); rows.clear(); if (rpgClasses != null) { for (AbstractRpgClass rpgClass : rpgClasses.getAll()) { addTableRow(rpgClass); } } // addTableRow(); } public RpgClass saveClasses() { // TODO: Deveria sutilizar um construtor com copia na classe RpgClass if (rpgClasses == null) { rpgClasses = new RpgClass(); } rpgClasses.removeAllRpgClass(); ViewTools tools = new ViewTools(context); for (TableRow row : rows) { Spinner classSpinner = (Spinner) row.getChildAt(POS_VIEW_CLASS); EditText levelEditText = (EditText) row.getChildAt(POS_VIEW_LEVEL); AbstractRpgClass clazz = (AbstractRpgClass) tools.getSelected(classSpinner); Integer level = Integer.valueOf(levelEditText.getText().toString()); if (level >= ExperienceAndLevel.MIN_LEVEL) { clazz.setClassLevel(level); rpgClasses.add(clazz); } } return rpgClasses; } private void addTableRow() { addTableRow(null); } private void addTableRow(AbstractRpgClass rpgClass) { Spinner classSpinner = new Spinner(context); EditText levelEditText = new EditText(context); ViewTools tool = new ViewTools(context); if (rpgClass != null) { tool.setOptionsSpinner(classSpinner, listClasses, rpgClass); levelEditText.setText(rpgClass.getClassLevel().toString()); } else { tool.setOptionsSpinner(classSpinner, listClasses); levelEditText.setText(Integer.toString(ExperienceAndLevel.EMPTY_LEVEL)); } TableRow row = new TableRow(context); row.addView(classSpinner, POS_VIEW_CLASS); row.addView(levelEditText, POS_VIEW_LEVEL); classesTableLayout.addView(row); rows.add(row); } }