Java tutorial
/** * * DisplayDamagesActivity.java * * Copyright $2011 Frederik Hahne * * 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 de.atomfrede.android.thwdroid.damageaccount.activity; import java.util.*; import org.joda.time.format.DateTimeFormat; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.*; import com.actionbarsherlock.view.*; import de.atomfrede.android.thwdroid.R; import de.atomfrede.android.thwdroid.damage.activity.EditDamageActivity; import de.atomfrede.android.thwdroid.damage.adapter.DamageListAdapter; import de.usetable.ThwExtras; import de.usetable.core.ThwService; import de.usetable.model.*; public class EditDamageAccountActivity extends ModelListActivity { DamageListAdapter listAdapter; UUID missionSectionId; UUID damageAccountId; DamageAccount damageAccount; List<Damage> addedDamages; List<Damage> removedDamages; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); damageAccountId = (UUID) getIntent().getExtras().getSerializable(ThwExtras.ELEMENT_ID); missionSectionId = (UUID) getIntent().getExtras().getSerializable(ThwExtras.PARENT_ELEMENT_ID); getSupportActionBar().setTitle("DamageAccount"); // header view getListView().addHeaderView(getLayoutInflater().inflate(R.layout.damage_account_edit, null, true)); addedDamages = new ArrayList<Damage>(); removedDamages = new ArrayList<Damage>(); } @Override public void onThwServiceConnected(ThwService service) { super.onThwServiceConnected(service); } @Override public void onLoadMissionDone(Mission mission) { super.onLoadMissionDone(mission); refresh(); } public void onResume() { super.onResume(); if (listAdapter != null) { refresh(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.thwdroid_edit_menu, menu); return true; } public void saveLocalChanges() { damageAccount.setName(((EditText) findViewById(R.id.damage_account_title)).getText().toString()); for (Damage addedDamage : addedDamages) { store(addedDamage); store(addedDamage.getDamageType()); } onBackPressed(); } public void discardChanges() { damageAccount.getDamageList().addAll(addedDamages); damageAccount.getDamageList().removeAll(removedDamages); onBackPressed(); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { discardChanges(); onBackPressed(); return true; } if (item.getItemId() == R.id.menu_discard) { discardChanges(); return true; } if (item.getItemId() == R.id.menu_ok) { saveLocalChanges(); return true; } return false; } // public void refresh() { damageAccount = (DamageAccount) getModel(damageAccountId); if (damageAccount.getDamageList() != null) listAdapter = new DamageListAdapter(this, damageAccount.getDamageList(), true); else listAdapter = new DamageListAdapter(this, new ArrayList<Damage>(), false); EditText damageAccountnameTextView = (EditText) findViewById(R.id.damage_account_title); TextView damageAccountTimeTextView = (TextView) findViewById(R.id.time_text_view); damageAccountnameTextView.setText(damageAccount.getName()); if (damageAccount.getTime() != null) damageAccountTimeTextView.setText(damageAccount.getTime().toString(DateTimeFormat.mediumDate())); else damageAccountTimeTextView.setText("Not available"); setListAdapter(listAdapter); } public void onAddClicked(View view) { Damage newDamage = new Damage(); newDamage.setId(UUID.randomUUID().toString()); newDamage.setName("New Damage"); newDamage.setDescription("Description"); DamageType newDamageType = new DamageType(); newDamageType.setId(UUID.randomUUID().toString()); newDamageType.setName("New Damage Type"); newDamageType.setDescription("Description"); newDamageType.setSymbol(DamageSymbol.Damage_DamageSymbol); newDamage.setDamageType(newDamageType); addedDamages.add(newDamage); damageAccount.getDamageList().add(newDamage); listAdapter = new DamageListAdapter(this, damageAccount.getDamageList(), true); setListAdapter(listAdapter); } public void onDeleteClicked(View view) { int position = listAdapter.getPositionForView(view); Damage removedDamage = damageAccount.getDamageList().get(position); if (addedDamages.contains(removedDamage)) { addedDamages.remove(removedDamage); } removedDamages.add(removedDamage); damageAccount.getDamageList().remove(position); listAdapter = new DamageListAdapter(this, damageAccount.getDamageList(), true); setListAdapter(listAdapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); saveLocalChanges(); editDamageDetails(position - 1); } private void editDamageDetails(int position) { if (position >= 0) { saveLocalChanges(); Intent editDamageDetails = new Intent(this, EditDamageActivity.class); editDamageDetails.putExtra(ThwExtras.ELEMENT_ID, listAdapter.getDamages().get(position).getId()); editDamageDetails.putExtra(ThwExtras.PARENT_ELEMENT_ID, damageAccountId); startActivity(editDamageDetails); } } }