am 68711f93: Merge "Revert "Simple MVC based binding mechanism for android controls."" into jb-mr2-dev
* commit '68711f936381310fad783f2500e59dc2f272618a': Revert "Simple MVC based binding mechanism for android controls."
This commit is contained in:
@@ -24447,17 +24447,6 @@ package android.util {
|
||||
method public void set(T, V);
|
||||
}
|
||||
|
||||
public class PropertyValueModel extends android.util.ValueModel {
|
||||
method public T get();
|
||||
method public H getHost();
|
||||
method public android.util.Property<H, T> getProperty();
|
||||
method public java.lang.Class<T> getType();
|
||||
method public static android.util.PropertyValueModel<H, T> of(H, android.util.Property<H, T>);
|
||||
method public static android.util.PropertyValueModel<H, T> of(H, java.lang.Class<T>, java.lang.String);
|
||||
method public static android.util.PropertyValueModel of(java.lang.Object, java.lang.String);
|
||||
method public void set(T);
|
||||
}
|
||||
|
||||
public class SparseArray implements java.lang.Cloneable {
|
||||
ctor public SparseArray();
|
||||
ctor public SparseArray(int);
|
||||
@@ -24624,14 +24613,6 @@ package android.util {
|
||||
field public int type;
|
||||
}
|
||||
|
||||
public abstract class ValueModel {
|
||||
ctor protected ValueModel();
|
||||
method public abstract T get();
|
||||
method public abstract java.lang.Class<T> getType();
|
||||
method public abstract void set(T);
|
||||
field public static final android.util.ValueModel EMPTY;
|
||||
}
|
||||
|
||||
public class Xml {
|
||||
method public static android.util.AttributeSet asAttributeSet(org.xmlpull.v1.XmlPullParser);
|
||||
method public static android.util.Xml.Encoding findEncodingByName(java.lang.String) throws java.io.UnsupportedEncodingException;
|
||||
@@ -29097,12 +29078,10 @@ package android.widget {
|
||||
method public abstract void onSelectedDayChange(android.widget.CalendarView, int, int, int);
|
||||
}
|
||||
|
||||
public class CheckBox extends android.widget.CompoundButton implements android.widget.ValueEditor {
|
||||
public class CheckBox extends android.widget.CompoundButton {
|
||||
ctor public CheckBox(android.content.Context);
|
||||
ctor public CheckBox(android.content.Context, android.util.AttributeSet);
|
||||
ctor public CheckBox(android.content.Context, android.util.AttributeSet, int);
|
||||
method public android.util.ValueModel<java.lang.Boolean> getValueModel();
|
||||
method public void setValueModel(android.util.ValueModel<java.lang.Boolean>);
|
||||
}
|
||||
|
||||
public abstract interface Checkable {
|
||||
@@ -29275,16 +29254,14 @@ package android.widget {
|
||||
method public void setSize(int, int);
|
||||
}
|
||||
|
||||
public class EditText extends android.widget.TextView implements android.widget.ValueEditor {
|
||||
public class EditText extends android.widget.TextView {
|
||||
ctor public EditText(android.content.Context);
|
||||
ctor public EditText(android.content.Context, android.util.AttributeSet);
|
||||
ctor public EditText(android.content.Context, android.util.AttributeSet, int);
|
||||
method public void extendSelection(int);
|
||||
method public android.util.ValueModel<java.lang.CharSequence> getValueModel();
|
||||
method public void selectAll();
|
||||
method public void setSelection(int, int);
|
||||
method public void setSelection(int);
|
||||
method public void setValueModel(android.util.ValueModel<java.lang.CharSequence>);
|
||||
}
|
||||
|
||||
public abstract interface ExpandableListAdapter {
|
||||
@@ -30313,13 +30290,11 @@ package android.widget {
|
||||
method public abstract java.lang.Object[] getSections();
|
||||
}
|
||||
|
||||
public class SeekBar extends android.widget.AbsSeekBar implements android.widget.ValueEditor {
|
||||
public class SeekBar extends android.widget.AbsSeekBar {
|
||||
ctor public SeekBar(android.content.Context);
|
||||
ctor public SeekBar(android.content.Context, android.util.AttributeSet);
|
||||
ctor public SeekBar(android.content.Context, android.util.AttributeSet, int);
|
||||
method public android.util.ValueModel<java.lang.Integer> getValueModel();
|
||||
method public void setOnSeekBarChangeListener(android.widget.SeekBar.OnSeekBarChangeListener);
|
||||
method public void setValueModel(android.util.ValueModel<java.lang.Integer>);
|
||||
}
|
||||
|
||||
public static abstract interface SeekBar.OnSeekBarChangeListener {
|
||||
@@ -30907,11 +30882,6 @@ package android.widget {
|
||||
method public android.widget.TextView getText2();
|
||||
}
|
||||
|
||||
public abstract interface ValueEditor {
|
||||
method public abstract android.util.ValueModel<T> getValueModel();
|
||||
method public abstract void setValueModel(android.util.ValueModel<T>);
|
||||
}
|
||||
|
||||
public class VideoView extends android.view.SurfaceView implements android.widget.MediaController.MediaPlayerControl {
|
||||
ctor public VideoView(android.content.Context);
|
||||
ctor public VideoView(android.content.Context, android.util.AttributeSet);
|
||||
|
||||
@@ -1,143 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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 android.util;
|
||||
|
||||
/**
|
||||
* A value model for a {@link Property property} of a host object. This class can be used for
|
||||
* both reflective and non-reflective property implementations.
|
||||
*
|
||||
* @param <H> the host type, where the host is the object that holds this property
|
||||
* @param <T> the value type
|
||||
*
|
||||
* @see Property
|
||||
* @see ValueModel
|
||||
*/
|
||||
public class PropertyValueModel<H, T> extends ValueModel<T> {
|
||||
private final H mHost;
|
||||
private final Property<H, T> mProperty;
|
||||
|
||||
private PropertyValueModel(H host, Property<H, T> property) {
|
||||
mProperty = property;
|
||||
mHost = host;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the host.
|
||||
*
|
||||
* @return the host
|
||||
*/
|
||||
public H getHost() {
|
||||
return mHost;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the property.
|
||||
*
|
||||
* @return the property
|
||||
*/
|
||||
public Property<H, T> getProperty() {
|
||||
return mProperty;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<T> getType() {
|
||||
return mProperty.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T get() {
|
||||
return mProperty.get(mHost);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(T value) {
|
||||
mProperty.set(mHost, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an appropriate PropertyValueModel for this host and property.
|
||||
*
|
||||
* @param host the host
|
||||
* @param property the property
|
||||
* @return the value model
|
||||
*/
|
||||
public static <H, T> PropertyValueModel<H, T> of(H host, Property<H, T> property) {
|
||||
return new PropertyValueModel<H, T>(host, property);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a PropertyValueModel for this {@code host} and a
|
||||
* reflective property, constructed from this {@code propertyType} and {@code propertyName}.
|
||||
*
|
||||
* @param host
|
||||
* @param propertyType the property type
|
||||
* @param propertyName the property name
|
||||
* @return a value model with this host and a reflective property with this type and name
|
||||
*
|
||||
* @see Property#of
|
||||
*/
|
||||
public static <H, T> PropertyValueModel<H, T> of(H host, Class<T> propertyType,
|
||||
String propertyName) {
|
||||
return of(host, Property.of((Class<H>) host.getClass(), propertyType, propertyName));
|
||||
}
|
||||
|
||||
private static Class getNullaryMethodReturnType(Class c, String name) {
|
||||
try {
|
||||
return c.getMethod(name).getReturnType();
|
||||
} catch (NoSuchMethodException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static Class getFieldType(Class c, String name) {
|
||||
try {
|
||||
return c.getField(name).getType();
|
||||
} catch (NoSuchFieldException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static String capitalize(String name) {
|
||||
if (name.isEmpty()) {
|
||||
return name;
|
||||
}
|
||||
return Character.toUpperCase(name.charAt(0)) + name.substring(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a PropertyValueModel for this {@code host} and and {@code propertyName}.
|
||||
*
|
||||
* @param host the host
|
||||
* @param propertyName the property name
|
||||
* @return a value model with this host and a reflective property with this name
|
||||
*/
|
||||
public static PropertyValueModel of(Object host, String propertyName) {
|
||||
Class clazz = host.getClass();
|
||||
String suffix = capitalize(propertyName);
|
||||
Class propertyType = getNullaryMethodReturnType(clazz, "get" + suffix);
|
||||
if (propertyType == null) {
|
||||
propertyType = getNullaryMethodReturnType(clazz, "is" + suffix);
|
||||
}
|
||||
if (propertyType == null) {
|
||||
propertyType = getFieldType(clazz, propertyName);
|
||||
}
|
||||
if (propertyType == null) {
|
||||
throw new NoSuchPropertyException(propertyName);
|
||||
}
|
||||
return of(host, propertyType, propertyName);
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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 android.util;
|
||||
|
||||
/**
|
||||
* A ValueModel is an abstraction for a 'slot' or place in memory in which a value
|
||||
* may be stored and retrieved. A common implementation of ValueModel is a regular property of
|
||||
* an object, whose value may be retrieved by calling the appropriate <em>getter</em>
|
||||
* method and set by calling the corresponding <em>setter</em> method.
|
||||
*
|
||||
* @param <T> the value type
|
||||
*
|
||||
* @see PropertyValueModel
|
||||
*/
|
||||
public abstract class ValueModel<T> {
|
||||
/**
|
||||
* The empty model should be used in place of {@code null} to indicate that a
|
||||
* model has not been set. The empty model has no value and does nothing when it is set.
|
||||
*/
|
||||
public static final ValueModel EMPTY = new ValueModel() {
|
||||
@Override
|
||||
public Class getType() {
|
||||
return Object.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object get() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(Object value) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
protected ValueModel() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the type of this property.
|
||||
*
|
||||
* @return the property type
|
||||
*/
|
||||
public abstract Class<T> getType();
|
||||
|
||||
/**
|
||||
* Returns the value of this property.
|
||||
*
|
||||
* @return the property value
|
||||
*/
|
||||
public abstract T get();
|
||||
|
||||
/**
|
||||
* Sets the value of this property.
|
||||
*
|
||||
* @param value the new value for this property
|
||||
*/
|
||||
public abstract void set(T value);
|
||||
}
|
||||
@@ -20,7 +20,6 @@ import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.util.ValueModel;
|
||||
|
||||
|
||||
/**
|
||||
@@ -56,9 +55,7 @@ import android.util.ValueModel;
|
||||
* {@link android.R.styleable#View View Attributes}
|
||||
* </p>
|
||||
*/
|
||||
public class CheckBox extends CompoundButton implements ValueEditor<Boolean> {
|
||||
private ValueModel<Boolean> mValueModel = ValueModel.EMPTY;
|
||||
|
||||
public class CheckBox extends CompoundButton {
|
||||
public CheckBox(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -82,22 +79,4 @@ public class CheckBox extends CompoundButton implements ValueEditor<Boolean> {
|
||||
super.onInitializeAccessibilityNodeInfo(info);
|
||||
info.setClassName(CheckBox.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ValueModel<Boolean> getValueModel() {
|
||||
return mValueModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValueModel(ValueModel<Boolean> valueModel) {
|
||||
mValueModel = valueModel;
|
||||
setChecked(mValueModel.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performClick() {
|
||||
boolean handled = super.performClick();
|
||||
mValueModel.set(isChecked());
|
||||
return handled;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package android.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.text.Editable;
|
||||
import android.text.Selection;
|
||||
import android.text.Spannable;
|
||||
@@ -25,7 +24,6 @@ import android.text.TextUtils;
|
||||
import android.text.method.ArrowKeyMovementMethod;
|
||||
import android.text.method.MovementMethod;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.ValueModel;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
@@ -49,9 +47,7 @@ import android.view.accessibility.AccessibilityNodeInfo;
|
||||
* {@link android.R.styleable#TextView TextView Attributes},
|
||||
* {@link android.R.styleable#View View Attributes}
|
||||
*/
|
||||
public class EditText extends TextView implements ValueEditor<CharSequence> {
|
||||
private ValueModel<CharSequence> mValueModel = ValueModel.EMPTY;
|
||||
|
||||
public class EditText extends TextView {
|
||||
public EditText(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -132,21 +128,4 @@ public class EditText extends TextView implements ValueEditor<CharSequence> {
|
||||
super.onInitializeAccessibilityNodeInfo(info);
|
||||
info.setClassName(EditText.class.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ValueModel<CharSequence> getValueModel() {
|
||||
return mValueModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValueModel(ValueModel<CharSequence> valueModel) {
|
||||
mValueModel = valueModel;
|
||||
setText(mValueModel.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
void sendAfterTextChanged(Editable text) {
|
||||
super.sendAfterTextChanged(text);
|
||||
mValueModel.set(text);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ package android.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.ValueModel;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
@@ -34,7 +33,7 @@ import android.view.accessibility.AccessibilityNodeInfo;
|
||||
*
|
||||
* @attr ref android.R.styleable#SeekBar_thumb
|
||||
*/
|
||||
public class SeekBar extends AbsSeekBar implements ValueEditor<Integer> {
|
||||
public class SeekBar extends AbsSeekBar {
|
||||
|
||||
/**
|
||||
* A callback that notifies clients when the progress level has been
|
||||
@@ -70,9 +69,8 @@ public class SeekBar extends AbsSeekBar implements ValueEditor<Integer> {
|
||||
void onStopTrackingTouch(SeekBar seekBar);
|
||||
}
|
||||
|
||||
private ValueModel<Integer> mValueModel = ValueModel.EMPTY;
|
||||
private OnSeekBarChangeListener mOnSeekBarChangeListener;
|
||||
|
||||
|
||||
public SeekBar(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -91,23 +89,9 @@ public class SeekBar extends AbsSeekBar implements ValueEditor<Integer> {
|
||||
|
||||
if (mOnSeekBarChangeListener != null) {
|
||||
mOnSeekBarChangeListener.onProgressChanged(this, getProgress(), fromUser);
|
||||
if (fromUser) {
|
||||
mValueModel.set(getProgress());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ValueModel<Integer> getValueModel() {
|
||||
return mValueModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValueModel(ValueModel<Integer> valueModel) {
|
||||
mValueModel = valueModel;
|
||||
setProgress(mValueModel.get());
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a listener to receive notifications of changes to the SeekBar's progress level. Also
|
||||
* provides notifications of when the user starts and stops a touch gesture within the SeekBar.
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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 android.widget;
|
||||
|
||||
import android.util.ValueModel;
|
||||
|
||||
/**
|
||||
* An interface for editors of simple values. Classes implementing this interface are normally
|
||||
* UI controls (subclasses of {@link android.view.View View}) that can provide a suitable
|
||||
* user interface to display and edit values of the specified type. This interface is
|
||||
* intended to describe editors for simple types, like {@code boolean}, {@code int} or
|
||||
* {@code String}, where the values themselves are immutable.
|
||||
* <p>
|
||||
* For example, {@link android.widget.CheckBox CheckBox} implements
|
||||
* this interface for the Boolean type as it is capable of providing an appropriate
|
||||
* mechanism for displaying and changing the value of a Boolean property.
|
||||
*
|
||||
* @param <T> the value type that this editor supports
|
||||
*/
|
||||
public interface ValueEditor<T> {
|
||||
/**
|
||||
* Return the last value model that was set. If no value model has been set, the editor
|
||||
* should return the value {@link android.util.ValueModel#EMPTY}.
|
||||
*
|
||||
* @return the value model
|
||||
*/
|
||||
public ValueModel<T> getValueModel();
|
||||
|
||||
/**
|
||||
* Sets the value model for this editor. When the value model is set, the editor should
|
||||
* retrieve the value from the value model, using {@link android.util.ValueModel#get()},
|
||||
* and set its internal state accordingly. Likewise, when the editor's internal state changes
|
||||
* it should update the value model by calling {@link android.util.ValueModel#set(T)}
|
||||
* with the appropriate value.
|
||||
*
|
||||
* @param valueModel the new value model for this editor.
|
||||
*/
|
||||
public void setValueModel(ValueModel<T> valueModel);
|
||||
}
|
||||
Reference in New Issue
Block a user