// Path: tweakable/src/main/java/com/jackwink/tweakable/controls/NumberPickerPreference.java
// public class NumberPickerPreference extends DialogPreference {
//     private static final String TAG = NumberPickerPreference.class.getSimpleName();
// 
//     private static final int MIN_VALUE = 0;
//     private static final int MAX_VALUE = 100;
//     private static final boolean WRAP_SELECTOR_WHEEL = false;
// 
//     private int mSelectedValue;
//     private int mMinValue = MIN_VALUE;
//     private int mMaxValue = MAX_VALUE;
//     private int mOriginalValue;
//     private boolean mWrapSelectorWheel = WRAP_SELECTOR_WHEEL;
//     private NumberPicker mNumberPicker;
// 
//     public NumberPickerPreference(final Context context) {
//         super(context, null);
//     }
// 
//     public void setMinValue(int value) {
//         mMinValue = value;
//     }
// 
//     public void setMaxValue(int value) {
//         mMaxValue = value;
//     }
// 
//     public void setWraps(boolean shouldWrap) {
//         mWrapSelectorWheel = shouldWrap;
//     }
// 
//     @Override
//     protected void onSetInitialValue(final boolean restoreValue, final Object defaultValue) {
//         setSelectedValue(restoreValue ? getPersistedInt(0) : (Integer) defaultValue, false);
//         mOriginalValue = mSelectedValue;
//     }
// 
//     @Override
//     protected Object onGetDefaultValue(final TypedArray a, final int index) {
//         return a.getInteger(index, 0);
//     }
// 
//     @Override
//     protected void onPrepareDialogBuilder(final Builder builder) {
//         super.onPrepareDialogBuilder(builder);
//         mNumberPicker = new NumberPicker(getContext());
//         mNumberPicker.setMinValue(mMinValue);
//         mNumberPicker.setMaxValue(mMaxValue);
//         mNumberPicker.setValue(mSelectedValue);
//         mNumberPicker.setWrapSelectorWheel(mWrapSelectorWheel);
//         mNumberPicker.setLayoutParams(new LinearLayout.LayoutParams(
//                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
// 
//         for (int i = 0; i < mNumberPicker.getChildCount(); i++) {
//             View v = mNumberPicker.getChildAt(i);
//             if (v instanceof EditText) {
//                 v.setOnKeyListener(new KeyListener());
//             }
//         }
//         final LinearLayout linearLayout = new LinearLayout(this.getContext());
//         linearLayout.setLayoutParams(new LinearLayout.LayoutParams(
//                 LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//         linearLayout.setGravity(Gravity.CENTER);
//         linearLayout.addView(mNumberPicker);
// 
//         builder.setView(linearLayout);
//     }
// 
//     @Override
//     protected void onDialogClosed(final boolean positiveResult) {
//         if (positiveResult && shouldPersist()) {
//             setSelectedValue(mNumberPicker.getValue(), true);
//         } else {
//             setSelectedValue(getPersistedInt(mOriginalValue), false);
//         }
//     }
// 
//     private void setSelectedValue(int value, boolean persist) {
//         mSelectedValue = value;
//         if (persist) {
//             persistInt(mSelectedValue);
//         }
//         setSummary(Integer.toString(mSelectedValue));
//     }
// 
//     private class KeyListener implements View.OnKeyListener {
//         @Override
//         public boolean onKey(View v, int keyCode, KeyEvent event) {
//             if (event.getAction() == KeyEvent.ACTION_UP) {
//                 String number = ((EditText) v).getText().toString();
//                 if (number.isEmpty()) {
//                     setSelectedValue(mMinValue, false);
//                 } else {
//                     int currentValue = Integer.valueOf(number);
//                     if (currentValue >= mMinValue) {
//                         setSelectedValue(Integer.valueOf(number), false);
//                         mNumberPicker.setValue(mSelectedValue);
//                     } else {
//                         setSelectedValue(mMinValue, false);
//                     }
//                 }
//             }
//             return false;
//         }
//     }
// 
// }
// 
// Path: tweakable-annotations/src/main/java/com/jackwink/tweakable/types/TweakableInteger.java
// public class TweakableInteger extends AbstractTweakableValue<Integer> {
// 
//     public static final String BUNDLE_MIN_VALUE_KEY = "min_value";
//     public static final String BUNDLE_MAX_VALUE_KEY = "max_value";
// 
//     private TwkInteger mParsedAnnotation;
// 
//     public Integer getMaxValue() {
//         return mParsedAnnotation.maxValue();
//     }
// 
//     public Integer getMinValue() {
//         return mParsedAnnotation.minValue();
//     }
// 
//     @Override
//     public Class<Integer> getType() {
//         return Integer.class;
//     }
// 
//     public static TweakableInteger parse(String className, String fieldName,
//                                          TwkInteger annotation) {
//         TweakableInteger returnValue = new TweakableInteger();
// 
//         /* Abstract Tweakable Values */
//         returnValue.mKey = className + "." + fieldName;
//         returnValue.mTitle = getDefaultString(annotation.title(), fieldName);
//         returnValue.mSummary = annotation.summary();
//         returnValue.mCategory = getDefaultString(annotation.category(), null);
//         returnValue.mScreen = getDefaultString(annotation.screen(), null);
// 
//         /* TweakableInteger */
//         returnValue.mParsedAnnotation = annotation;
//         return returnValue;
//     }
// }


import android.preference.Preference;
import com.jackwink.tweakable.controls.NumberPickerPreference;
import com.jackwink.tweakable.types.TweakableInteger;
package com.jackwink.tweakable.builders;



/**
 *
 */
@SuppressWarnings({ "rawtypes" })
public class IntegerPreferenceBuilder extends BasePreferenceBuilder<Preference> {
    @Override
    public Class[] getHandledTypes() {
        return new Class[] {Integer.class, int.class };
    }

    @Override
    public Preference build() {
        NumberPickerPreference preference = build(NumberPickerPreference.class, true);
        preference.setDialogMessage((String) getRequiredAttribute(BUNDLE_SUMMARY_KEY));
        preference.setWraps(true);
        preference.setMaxValue((Integer)
// Path: tweakable/src/main/java/com/jackwink/tweakable/controls/NumberPickerPreference.java
// public class NumberPickerPreference extends DialogPreference {
//     private static final String TAG = NumberPickerPreference.class.getSimpleName();
// 
//     private static final int MIN_VALUE = 0;
//     private static final int MAX_VALUE = 100;
//     private static final boolean WRAP_SELECTOR_WHEEL = false;
// 
//     private int mSelectedValue;
//     private int mMinValue = MIN_VALUE;
//     private int mMaxValue = MAX_VALUE;
//     private int mOriginalValue;
//     private boolean mWrapSelectorWheel = WRAP_SELECTOR_WHEEL;
//     private NumberPicker mNumberPicker;
// 
//     public NumberPickerPreference(final Context context) {
//         super(context, null);
//     }
// 
//     public void setMinValue(int value) {
//         mMinValue = value;
//     }
// 
//     public void setMaxValue(int value) {
//         mMaxValue = value;
//     }
// 
//     public void setWraps(boolean shouldWrap) {
//         mWrapSelectorWheel = shouldWrap;
//     }
// 
//     @Override
//     protected void onSetInitialValue(final boolean restoreValue, final Object defaultValue) {
//         setSelectedValue(restoreValue ? getPersistedInt(0) : (Integer) defaultValue, false);
//         mOriginalValue = mSelectedValue;
//     }
// 
//     @Override
//     protected Object onGetDefaultValue(final TypedArray a, final int index) {
//         return a.getInteger(index, 0);
//     }
// 
//     @Override
//     protected void onPrepareDialogBuilder(final Builder builder) {
//         super.onPrepareDialogBuilder(builder);
//         mNumberPicker = new NumberPicker(getContext());
//         mNumberPicker.setMinValue(mMinValue);
//         mNumberPicker.setMaxValue(mMaxValue);
//         mNumberPicker.setValue(mSelectedValue);
//         mNumberPicker.setWrapSelectorWheel(mWrapSelectorWheel);
//         mNumberPicker.setLayoutParams(new LinearLayout.LayoutParams(
//                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
// 
//         for (int i = 0; i < mNumberPicker.getChildCount(); i++) {
//             View v = mNumberPicker.getChildAt(i);
//             if (v instanceof EditText) {
//                 v.setOnKeyListener(new KeyListener());
//             }
//         }
//         final LinearLayout linearLayout = new LinearLayout(this.getContext());
//         linearLayout.setLayoutParams(new LinearLayout.LayoutParams(
//                 LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//         linearLayout.setGravity(Gravity.CENTER);
//         linearLayout.addView(mNumberPicker);
// 
//         builder.setView(linearLayout);
//     }
// 
//     @Override
//     protected void onDialogClosed(final boolean positiveResult) {
//         if (positiveResult && shouldPersist()) {
//             setSelectedValue(mNumberPicker.getValue(), true);
//         } else {
//             setSelectedValue(getPersistedInt(mOriginalValue), false);
//         }
//     }
// 
//     private void setSelectedValue(int value, boolean persist) {
//         mSelectedValue = value;
//         if (persist) {
//             persistInt(mSelectedValue);
//         }
//         setSummary(Integer.toString(mSelectedValue));
//     }
// 
//     private class KeyListener implements View.OnKeyListener {
//         @Override
//         public boolean onKey(View v, int keyCode, KeyEvent event) {
//             if (event.getAction() == KeyEvent.ACTION_UP) {
//                 String number = ((EditText) v).getText().toString();
//                 if (number.isEmpty()) {
//                     setSelectedValue(mMinValue, false);
//                 } else {
//                     int currentValue = Integer.valueOf(number);
//                     if (currentValue >= mMinValue) {
//                         setSelectedValue(Integer.valueOf(number), false);
//                         mNumberPicker.setValue(mSelectedValue);
//                     } else {
//                         setSelectedValue(mMinValue, false);
//                     }
//                 }
//             }
//             return false;
//         }
//     }
// 
// }
// 
// Path: tweakable-annotations/src/main/java/com/jackwink/tweakable/types/TweakableInteger.java
// public class TweakableInteger extends AbstractTweakableValue<Integer> {
// 
//     public static final String BUNDLE_MIN_VALUE_KEY = "min_value";
//     public static final String BUNDLE_MAX_VALUE_KEY = "max_value";
// 
//     private TwkInteger mParsedAnnotation;
// 
//     public Integer getMaxValue() {
//         return mParsedAnnotation.maxValue();
//     }
// 
//     public Integer getMinValue() {
//         return mParsedAnnotation.minValue();
//     }
// 
//     @Override
//     public Class<Integer> getType() {
//         return Integer.class;
//     }
// 
//     public static TweakableInteger parse(String className, String fieldName,
//                                          TwkInteger annotation) {
//         TweakableInteger returnValue = new TweakableInteger();
// 
//         /* Abstract Tweakable Values */
//         returnValue.mKey = className + "." + fieldName;
//         returnValue.mTitle = getDefaultString(annotation.title(), fieldName);
//         returnValue.mSummary = annotation.summary();
//         returnValue.mCategory = getDefaultString(annotation.category(), null);
//         returnValue.mScreen = getDefaultString(annotation.screen(), null);
// 
//         /* TweakableInteger */
//         returnValue.mParsedAnnotation = annotation;
//         return returnValue;
//     }
// }


// Path: tweakable/src/main/java/com/jackwink/tweakable/builders/IntegerPreferenceBuilder.java
import android.preference.Preference;
import com.jackwink.tweakable.controls.NumberPickerPreference;
import com.jackwink.tweakable.types.TweakableInteger;

package com.jackwink.tweakable.builders;



/**
 *
 */
@SuppressWarnings({ "rawtypes" })
public class IntegerPreferenceBuilder extends BasePreferenceBuilder<Preference> {
    @Override
    public Class[] getHandledTypes() {
        return new Class[] {Integer.class, int.class };
    }

    @Override
    public Preference build() {
        NumberPickerPreference preference = build(NumberPickerPreference.class, true);
        preference.setDialogMessage((String) getRequiredAttribute(BUNDLE_SUMMARY_KEY));
        preference.setWraps(true);
        preference.setMaxValue((Integer)
                getRequiredAttribute(TweakableInteger.BUNDLE_MAX_VALUE_KEY));