package v2.simpleUi;
import v2.simpleUi.uiDecoration.UiDecoratable;
import v2.simpleUi.uiDecoration.UiDecorator;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
public abstract class M_PlusMinus implements ModifierInterface, UiDecoratable {
private TextView valueText;
private int myMinusImageId;
private int myPlusImageId;
private UiDecorator myDecorator;
public M_PlusMinus(int minusImage, int plusImage) {
myMinusImageId = minusImage;
myPlusImageId = plusImage;
}
@Override
public boolean assignNewDecorator(UiDecorator decorator) {
myDecorator = decorator;
return true;
}
@Override
public View getView(Context context) {
LinearLayout l = new LinearLayout(context);
l.setGravity(Gravity.CENTER);
LayoutParams p = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 2);
LayoutParams p2 = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1);
TextView t = new TextView(context);
t.setText(getVarName());
t.setLayoutParams(p);
l.addView(t);
LinearLayout l2 = new LinearLayout(context);
l2.setLayoutParams(p2);
l2.setGravity(Gravity.CENTER);
final ImageButton minusBtn = new ImageButton(context);
if (myMinusImageId != -1) {
minusBtn.setImageResource(myMinusImageId);
minusBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
valueText.setText(minusEvent(minusBtn, getCurrentValue()));
}
});
LinearLayout l3 = new LinearLayout(context);
l3.setLayoutParams(p2);
l3.setGravity(Gravity.CENTER_HORIZONTAL);
l3.addView(minusBtn);
l2.addView(l3);
}
valueText = new TextView(context);
valueText.setText("" + load());
LinearLayout l4 = new LinearLayout(context);
l4.setLayoutParams(p2);
l4.setGravity(Gravity.CENTER_HORIZONTAL);
l4.addView(valueText);
l2.addView(l4);
final ImageButton plusBtn = new ImageButton(context);
if (myPlusImageId != -1) {
plusBtn.setImageResource(myPlusImageId);
plusBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
valueText.setText(plusEvent(plusBtn, getCurrentValue()));
}
});
LinearLayout l5 = new LinearLayout(context);
l5.setLayoutParams(p2);
l5.setGravity(Gravity.CENTER_HORIZONTAL);
l5.addView(plusBtn);
l2.addView(l5);
}
l.addView(l2);
l.setPadding(DEFAULT_PADDING, DEFAULT_PADDING, DEFAULT_PADDING,
DEFAULT_PADDING);
if (myDecorator != null) {
int level = myDecorator.getCurrentLevel();
if (plusBtn != null)
myDecorator.decorate(context, plusBtn, level + 1,
UiDecorator.TYPE_BUTTON);
if (minusBtn != null)
myDecorator.decorate(context, minusBtn, level + 1,
UiDecorator.TYPE_BUTTON);
myDecorator.decorate(context, t, level + 1,
UiDecorator.TYPE_INFO_TEXT);
myDecorator.decorate(context, valueText, level + 1,
UiDecorator.TYPE_INFO_TEXT);
}
return l;
}
private String getCurrentValue() {
return valueText.getText().toString();
}
@Override
public boolean save() {
return save(getCurrentValue());
}
public abstract String getVarName();
public abstract String load();
public abstract String minusEvent(ImageButton minusButton,
String currentValue);
public abstract String plusEvent(ImageButton plusButton, String currentValue);
/**
* @param currentValue
* @return true if the save procedure was successful
*/
public abstract boolean save(String currentValue);
}