API Reference 0.3.24dart_web_toolkit_uiElementMapperImpl<T>

ElementMapperImpl<T extends UiObject> class

Creates a mapping from elements to their associated ui objects.

@param <T> the type that the element is mapped to

class ElementMapperImpl<T extends UiObject> {

 static const String UI_OBJECT_ID = "uiObjectID";

 static void clearIndex(dart_html.Element elem) {
   assert(elem != null);
   elem.dataset.remove(UI_OBJECT_ID);
 }

 static int getIndex(dart_html.Element elem) {
   assert(elem != null);
   if (elem.dataset.containsKey(UI_OBJECT_ID)) { 
     return int.parse(elem.dataset[UI_OBJECT_ID]);
   } else {
     return -1;
   }
 }

 static void setIndex(dart_html.Element elem, int index) {
   assert(elem != null);
   assert(index != null);
   assert(index >= 0);
   elem.dataset[UI_OBJECT_ID] = index.toString();
 }

 FreeNode freeList = null;

 final List<T> uiObjectList = new List<T>();

 /**
  * Returns the uiObject associated with the given element.
  *
  * @param elem uiObject's element
  * @return the uiObject
  */
 T get(dart_html.Element elem) {
   int index = getIndex(elem);
   if (index < 0) {
     return null;
   }
   return uiObjectList[index];
 }

 /**
  * Gets the list of ui objects contained in this element mapper.
  *
  * @return the list of ui objects
  */
 List<T> getObjectList() {
   return uiObjectList;
 }

 /**
  * Creates an iterator from the ui objects stored within.
  *
  * @return an iterator of the ui objects indexed by this element mapper.
  */
 Iterator<T> iterator() {
   return uiObjectList.iterator;
 }

 /**
  * Adds the MappedType.
  *
  * @param uiObject uiObject to add
  */
 void put(T uiObject) {
   int index;
   if (freeList == null) {
     index = uiObjectList.length;
     uiObjectList.add(uiObject);
   } else {
     index = freeList.index;
     uiObjectList[index] = uiObject;
     freeList = freeList.next;
   }
   setIndex(uiObject.getElement(), index);
 }

 /**
  * Remove the uiObject associated with the given element.
  *
  * @param elem the uiObject's element
  */
 void removeByElement(dart_html.Element elem) {
   int index = getIndex(elem);
   removeImpl(elem, index);
 }

 void removeImpl(dart_html.Element elem, int index) {
   clearIndex(elem);
   uiObjectList[index] = null;
   freeList = new FreeNode(index, freeList);
 }
}

Static Properties

const String UI_OBJECT_ID #

static const String UI_OBJECT_ID = "uiObjectID"

Static Methods

void clearIndex(Element elem) #

static void clearIndex(dart_html.Element elem) {
 assert(elem != null);
 elem.dataset.remove(UI_OBJECT_ID);
}

int getIndex(Element elem) #

static int getIndex(dart_html.Element elem) {
 assert(elem != null);
 if (elem.dataset.containsKey(UI_OBJECT_ID)) { 
   return int.parse(elem.dataset[UI_OBJECT_ID]);
 } else {
   return -1;
 }
}

void setIndex(Element elem, int index) #

static void setIndex(dart_html.Element elem, int index) {
 assert(elem != null);
 assert(index != null);
 assert(index >= 0);
 elem.dataset[UI_OBJECT_ID] = index.toString();
}

Properties

FreeNode freeList #

FreeNode freeList = null

final List<T> uiObjectList #

final List<T> uiObjectList = new List<T>()

Methods

T get(Element elem) #

Returns the uiObject associated with the given element.

@param elem uiObject's element @return the uiObject

T get(dart_html.Element elem) {
 int index = getIndex(elem);
 if (index < 0) {
   return null;
 }
 return uiObjectList[index];
}

List<T> getObjectList() #

Gets the list of ui objects contained in this element mapper.

@return the list of ui objects

List<T> getObjectList() {
 return uiObjectList;
}

Iterator<T> iterator() #

Creates an iterator from the ui objects stored within.

@return an iterator of the ui objects indexed by this element mapper.

Iterator<T> iterator() {
 return uiObjectList.iterator;
}

void put(T uiObject) #

Adds the MappedType.

@param uiObject uiObject to add

void put(T uiObject) {
 int index;
 if (freeList == null) {
   index = uiObjectList.length;
   uiObjectList.add(uiObject);
 } else {
   index = freeList.index;
   uiObjectList[index] = uiObject;
   freeList = freeList.next;
 }
 setIndex(uiObject.getElement(), index);
}

void removeByElement(Element elem) #

Remove the uiObject associated with the given element.

@param elem the uiObject's element

void removeByElement(dart_html.Element elem) {
 int index = getIndex(elem);
 removeImpl(elem, index);
}

void removeImpl(Element elem, int index) #

void removeImpl(dart_html.Element elem, int index) {
 clearIndex(elem);
 uiObjectList[index] = null;
 freeList = new FreeNode(index, freeList);
}