use binding::*;
use super::property::*;
pub trait ViewModel {
fn get_property(&self, property_name: &str) -> BindRef<PropertyValue>;
fn set_property(&self, property_name: &str, new_value: PropertyValue);
fn get_property_names(&self) -> Vec<String>;
}
pub struct NullViewModel {
nothing: BindRef<PropertyValue>
}
impl NullViewModel {
pub fn new() -> NullViewModel {
NullViewModel { nothing: BindRef::from(bind(PropertyValue::Nothing)) }
}
}
impl ViewModel for NullViewModel {
fn get_property(&self, _property_name: &str) -> BindRef<PropertyValue> {
self.nothing.clone()
}
fn set_property(&self, _property_name: &str, _new_value: PropertyValue) {
}
fn get_property_names(&self) -> Vec<String> {
vec![]
}
}