package com.mozu.mozuandroidinstoreassistant.app.views;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.mozu.api.contracts.productruntime.ProductOptionValue;
import com.mozu.mozuandroidinstoreassistant.app.R;
import java.util.List;
public class ProductOptionsLayout extends LinearLayout {
public onOptionChangeListener mOnOptionChangeListener;
private TextView mTitle;
private Spinner mSpinner;
private TextView mValue;
private String mAttributeFQN;
public ProductOptionsLayout(Context context, onOptionChangeListener optionChangeListener) {
super(context);
initViews(context);
mOnOptionChangeListener = optionChangeListener;
}
private void initViews(Context context) {
setOrientation(LinearLayout.VERTICAL);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.product_option, this, true);
mTitle = (TextView) v.findViewById(R.id.product_option_label);
mSpinner = (Spinner) v.findViewById(R.id.product_option_spinner);
mSpinner.post(new Runnable() {
@Override
public void run() {
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
mOnOptionChangeListener.onOptionChanged();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
//DO NOTHING
}
});
}
});
mValue = (TextView) v.findViewById(R.id.product_option_name);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
MarginLayoutParams margins = MarginLayoutParams.class.cast(getLayoutParams());
margins.setMargins(0, 0, 20, 0);
setLayoutParams(margins);
}
public void setTitle(String title) {
mTitle.setText(title);
}
public String getAttributeFQN() {
return mAttributeFQN;
}
public void setAttributeFQN(String attributeFQN) {
mAttributeFQN = attributeFQN;
}
public String getAttributeValue() {
if (mValue.getVisibility() == View.VISIBLE) {
return mValue.getText().toString();
} else {
return ((ProductOptionValue) mSpinner.getSelectedItem()).getValue().toString();
}
}
public void setSpinnerOptions(List<ProductOptionValue> productOptions) {
SpinnerAdapter spinnerAdapter = new SpinnerAdapter(getContext(), R.layout.productoption_spinner_item, R.id.product_option_name, productOptions);
if (productOptions.size() > 1) {
mValue.setVisibility(View.GONE);
mSpinner.setVisibility(View.VISIBLE);
mSpinner.setClickable(true);
} else {
mSpinner.setVisibility(View.GONE);
mValue.setVisibility(View.VISIBLE);
mSpinner.setClickable(false);
mValue.setText(productOptions.get(0).getValue().toString());
}
mSpinner.setAdapter(spinnerAdapter);
}
public interface onOptionChangeListener {
public void onOptionChanged();
}
class SpinnerAdapter extends ArrayAdapter<ProductOptionValue> {
public SpinnerAdapter(Context context, int res, int textViewResourceId, List<ProductOptionValue> objects) {
super(context, res, textViewResourceId, objects);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(R.layout.productoption_spinner_item, parent, false);
}
TextView mTextView = (TextView) convertView.findViewById(R.id.product_option_name);
ProductOptionValue optionValue = getItem(position);
mTextView.setText(optionValue.getValue().toString());
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) View.inflate(parent.getContext(), R.layout.productoption_dropdown_resource, null);
textView.setText(getItem(position).getValue().toString());
return textView;
}
}
}