package org.itsnat.droid.impl.browser; import android.view.View; import org.itsnat.droid.ItsNatView; import org.itsnat.droid.UserData; import org.itsnat.droid.impl.browser.serveritsnat.evtlistadapter.ClickEventListenerViewAdapter; import org.itsnat.droid.impl.browser.serveritsnat.evtlistadapter.FocusEventListenerViewAdapter; import org.itsnat.droid.impl.browser.serveritsnat.evtlistadapter.KeyEventListenerViewAdapter; import org.itsnat.droid.impl.browser.serveritsnat.evtlistadapter.TextChangeEventListenerViewAdapter; import org.itsnat.droid.impl.browser.serveritsnat.evtlistadapter.TouchEventListenerViewAdapter; import org.itsnat.droid.impl.browser.serveritsnat.evtlistener.DroidEventListener; import org.itsnat.droid.impl.util.MapLight; import org.itsnat.droid.impl.util.MapList; import org.itsnat.droid.impl.util.MapListLight; import org.itsnat.droid.impl.util.UserDataImpl; import java.util.List; /** * Created by jmarranz on 4/07/14. */ public abstract class ItsNatViewImpl implements ItsNatView { public static final int ITSNAT_VIEW_KEY = 1111111111; protected ItsNatDocImpl itsNatDoc; protected MapList<String,DroidEventListener> eventListeners; protected String nodeCacheId; protected UserDataImpl userData; protected MapLight<String,String> onTypeInlineCodeMap; public ItsNatViewImpl(ItsNatDocImpl itsNatDoc) { this.itsNatDoc = itsNatDoc; } public static ItsNatViewImpl getItsNatView(ItsNatDocImpl itsNatDoc,View view) { if (view == null) return itsNatDoc.getItsNatViewNull(); ItsNatViewNotNullImpl viewData = (ItsNatViewNotNullImpl)view.getTag(ITSNAT_VIEW_KEY); if (viewData == null) { viewData = new ItsNatViewNotNullImpl(itsNatDoc,view); view.setTag(ITSNAT_VIEW_KEY,viewData); } return viewData; } public ItsNatDocImpl getItsNatDocImpl() { return itsNatDoc; } /* public PageImpl getPageImpl() { return itsNatDoc.getPageImpl(); } */ public abstract View getView(); public abstract String getXMLId(); public abstract void setXMLId(String id); public MapLight<String,String> getOnTypeInlineCodeMap() { if (onTypeInlineCodeMap == null) this.onTypeInlineCodeMap = new MapLight<String,String>(); return onTypeInlineCodeMap; } public MapList<String,DroidEventListener> getEventListeners() { if (eventListeners == null) this.eventListeners = new MapListLight<String,DroidEventListener>(); return eventListeners; } public List<DroidEventListener> getEventListeners(String type) { return getEventListeners().get(type); } public abstract ClickEventListenerViewAdapter getClickEventListenerViewAdapter(); public abstract TouchEventListenerViewAdapter getTouchEventListenerViewAdapter(); public abstract KeyEventListenerViewAdapter getKeyEventListenerViewAdapter(); public abstract FocusEventListenerViewAdapter getFocusEventListenerViewAdapter(); public abstract TextChangeEventListenerViewAdapter getTextChangeEventListenerViewAdapter(); public abstract void setTextChangeEventListenerViewAdapter(TextChangeEventListenerViewAdapter textChangeEvtListenerViewAdapter); public abstract void setOnClickListener(View.OnClickListener l); public abstract void setOnTouchListener(View.OnTouchListener l); public abstract void setOnKeyListener(View.OnKeyListener l); public abstract void setOnFocusChangeListener(View.OnFocusChangeListener l); public String getNodeCacheId() { return nodeCacheId; } public void setNodeCacheId(String nodeCacheId) { this.nodeCacheId = nodeCacheId; } public UserData getUserData() { if (userData == null) this.userData = new UserDataImpl(); return userData; } public String getOnTypeInlineCode(String attrName) { return getOnTypeInlineCodeMap().get(attrName); } public void setOnTypeInlineCode(String attrName,String code) { getOnTypeInlineCodeMap().put(attrName,code); } public void removeOnTypeInlineCode(String type) { getOnTypeInlineCodeMap().remove(type); } }