/* * Ext GWT 2.2.4 - Ext for GWT * Copyright(c) 2007-2010, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.ui.client.state; import java.util.Date; import java.util.Map; import com.extjs.gxt.ui.client.core.FastMap; import com.extjs.gxt.ui.client.event.BaseObservable; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.StateEvent; import com.extjs.gxt.ui.client.js.JsonConverter; /** * Abstract base class for state provider implementations. This class provides * methods for encoding and decoding objects. */ public abstract class Provider extends BaseObservable { protected StateManager manager; /** * Clears a value. * * @param name the key name */ public void clear(String name) { clearKey(name); StateEvent se = new StateEvent(manager); se.setName(name); fireEvent(Events.StateChange, se); } /** * Returns the current value for a key. * * @param name the key name * @return the value */ public Object get(String name) { String val = getValue(name); if (val == null) return null; Object obj = JsonConverter.decode(val).get("state"); return obj; } /** * Returns the current value for a key. * * @param name the key name * @return the value */ public boolean getBoolean(String name) { String val = getValue(name); if (val == null) return false; Boolean bVal = (Boolean) JsonConverter.decode(val).get("state"); return bVal.booleanValue(); } /** * Returns the current value for a key. * * @param name the key name * @return the value */ public Date getDate(String name) { String val = getValue(name); if (val == null) return null; Date date = (Date) JsonConverter.decode(val).get("state"); return date; } /** * Returns the current value for a key. * * @param name the key name * @return the value or -1 */ public int getInteger(String name) { String val = getValue(name); Integer iVal = (Integer) JsonConverter.decode(val).get("state"); if (iVal == null) { return -1; } return iVal.intValue(); } @SuppressWarnings({"unchecked", "rawtypes"}) public Map<String, Object> getMap(String name) { String val = getValue(name); if (val == null) return null; Map<String, Object> map = (Map) JsonConverter.decode(val).get("state"); return map; } /** * Returns the current value for a key. * * @param name the key name * @return the value */ public String getString(String name) { String val = getValue(name); if (val == null) return null; String obj = (String) JsonConverter.decode(val).get("state"); return obj; } /** * Sets a key. * * @param name the key name * @param value the value */ public void set(String name, Object value) { Map<String, Object> map = new FastMap<Object>(); map.put("state", value); setValue(name, JsonConverter.encode(map).toString()); StateEvent re = new StateEvent(manager, name, value); re.setName(name); re.setValue(value); fireEvent(Events.StateChange, re); } protected void bind(StateManager manager) { this.manager = manager; } protected abstract void clearKey(String name); protected abstract String getValue(String name); protected abstract void setValue(String name, String value); }