package com.basket.activities;
import java.util.ArrayList;
import android.R.color;
import android.animation.LayoutTransition;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.AlertDialog.Builder;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;
import com.basket.adapters.TabsAdapter;
import com.basket.containers.BasketSession;
import com.basket.general.CarJsonSpringAndroidSpiceService;
import com.basket.general.ProductBasket;
import com.basket.lists.ProductsInBuyBasketsList;
import com.basket.restrequest.ByteContainer;
import com.basket.restrequest.NewBasketRequest;
import com.basket.restrequest.RemoveBasketRequest;
import com.example.basket.R;
import com.octo.android.robospice.SpiceManager;
import com.octo.android.robospice.exception.RequestCancelledException;
import com.octo.android.robospice.persistence.DurationInMillis;
import com.octo.android.robospice.persistence.exception.SpiceException;
import com.octo.android.robospice.request.listener.RequestListener;
import com.octo.android.robospice.request.listener.RequestProgress;
import com.octo.android.robospice.request.listener.RequestProgressListener;
public class BasketActivity extends FragmentActivity {
private ViewPager pager;
private TabsAdapter mTabsAdapter;
private int group1Id = 1;
public static ViewPager currentPagePager;
private final int addId = Menu.FIRST;
private SpiceManager spiceManager = new SpiceManager(CarJsonSpringAndroidSpiceService.class);
private ProductBasket temp;
private int currentItem;
private ProductBasket newBasket;
private ActionBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pager = new ViewPager(this);
pager.setId(R.id.basketspager);
setContentView(pager);
pager.setBackground(this.getResources().getDrawable(R.drawable.wood_light2));
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabsAdapter = new TabsAdapter(this, pager);
ArrayList<ProductBasket> listofbaskets = BasketSession.getUser().getBaskets();
//Set up baskets
for(int i =0;i<listofbaskets.size();i++)
{
ProductsInBuyBasketsList.basketnum=i;
Bundle args = new Bundle();
args.putInt("pos", i);
Tab newTab =bar.newTab().setText(listofbaskets.get(i).getName());
//newTab.getCustomView().setBackgroundColor(Color.BLACK);
mTabsAdapter.addTab(newTab, ProductsInBuyBasketsList.class, args);
mTabsAdapter.notifyDataSetChanged();
}
currentPagePager = pager;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case addId:
Builder alert = new Builder(this);
alert.setTitle("Basket Name");
alert.setMessage("Please choose a name for your basket");
// Set an EditText view to get user input
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String name = input.getText().toString();
if(name =="")
{
name = "Basket "+mTabsAdapter.getCount();
}
// Bundle args = new Bundle();
// ProductsInBuyBasketsList.basketnum++;
// args.putInt("pos", ProductsInBuyBasketsList.basketnum);
bar = getActionBar();
//bar.setBackgroundDrawable(Resources.getSystem().getDrawable(R.drawable.layer_gradient));
newBasket=new ProductBasket(name);
// BasketSession.getUser().getBaskets().add(new ProductBasket(name));
// Tab newTab =bar.newTab().setText(BasketSession.getUser().getBaskets().get(BasketSession.getUser().getBaskets().size()-1).getName());
// //newTab.getCustomView().setBackgroundColor(color.black);
// mTabsAdapter.notifyDataSetChanged();
// mTabsAdapter.addTab(newTab, ProductsInBuyBasketsList.class, args);
if (!spiceManager.isStarted())
{
spiceManager.start(BasketActivity.this);
}
NewBasketRequest JsonSpringAndroidRequest = new NewBasketRequest(newBasket,BasketSession.getUser().getUsername());
spiceManager.execute(JsonSpringAndroidRequest, "Basket_Update", DurationInMillis.ALWAYS_EXPIRED, new NewBasketListener());
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
//
alert.show();
return true;
case addId+1:
if(!spiceManager.isStarted()){
if(BasketSession.getUser().getBaskets().size()>0){
currentItem = pager.getCurrentItem();
mTabsAdapter.removeTab();
pager.removeView(pager.getChildAt(currentItem));
temp = BasketSession.getUser().getBaskets().get(currentItem);
BasketSession.getUser().getBaskets().remove(currentItem);
pager.getAdapter().notifyDataSetChanged();
mTabsAdapter.notifyDataSetChanged();
spiceManager.start(BasketActivity.this);
RemoveBasketRequest JsonSpringAndroidRequest = new RemoveBasketRequest(temp);
spiceManager.execute(JsonSpringAndroidRequest, "Basket_Update", DurationInMillis.ALWAYS_EXPIRED, new DeleteBasketListener());
}}
pager.getAdapter().notifyDataSetChanged();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.add(group1Id, addId, addId, "Add Basket").setIcon(R.drawable.plus_sign);
menu.add(group1Id, addId+1,addId+1, "Delete Basket").setIcon(R.drawable.red_x_clipped_rev_1);
getMenuInflater().inflate(R.menu.user_baskets, menu);
return super.onCreateOptionsMenu(menu);
}
private class NewBasketListener implements RequestListener<ByteContainer>, RequestProgressListener {
@Override
public void onRequestFailure(SpiceException arg0) {
Log.d("error",arg0.getMessage());
if (!(arg0 instanceof RequestCancelledException)) {
Toast.makeText(BasketActivity.this, "Basket could not be created", Toast.LENGTH_SHORT).show();
}
BasketSession.getUser().getBaskets().remove(BasketSession.getUser().getBaskets().size()-1);
spiceManager.shouldStop();
}
@Override
public void onRequestSuccess(ByteContainer bool)
{
Bundle args = new Bundle();
ProductsInBuyBasketsList.basketnum++;
args.putInt("pos", ProductsInBuyBasketsList.basketnum);
spiceManager.shouldStop();
newBasket.setId(bool.getValue());
BasketSession.getUser().getBaskets().add(newBasket);
Tab newTab =bar.newTab().setText(BasketSession.getUser().getBaskets().get(BasketSession.getUser().getBaskets().size()-1).getName());
//newTab.getCustomView().setBackgroundColor(color.black);
mTabsAdapter.notifyDataSetChanged();
mTabsAdapter.addTab(newTab, ProductsInBuyBasketsList.class, args);
Toast.makeText(BasketActivity.this, "Basket Created", Toast.LENGTH_SHORT).show();
}
@Override
public void onRequestProgressUpdate(RequestProgress arg0)
{
}
}
private class DeleteBasketListener implements RequestListener<Boolean>, RequestProgressListener {
@Override
public void onRequestFailure(SpiceException arg0) {
Log.d("error",arg0.getMessage());
if (!(arg0 instanceof RequestCancelledException)) {
Toast.makeText(BasketActivity.this, "Basket could not be removed", Toast.LENGTH_SHORT).show();
}
BasketSession.getUser().getBaskets().add(currentItem, temp);
spiceManager.shouldStop();
}
@Override
public void onRequestSuccess(Boolean bool)
{
spiceManager.shouldStop();
Toast.makeText(BasketActivity.this, "Basket Deleted", Toast.LENGTH_SHORT).show();
}
@Override
public void onRequestProgressUpdate(RequestProgress arg0)
{
}
}
protected void onResume(){
super.onResume();
if(mTabsAdapter!=null)
mTabsAdapter.notifyDataSetChanged();
}
}