/** * Checks if the element has the annotation marker set. * * @param element the element to check * @return true if the element is marked as 'annotation' */ public static final boolean isAnnotation(final Element element) { if (element == null) { return false; } final Object role = element.getDataset().at(ELEMENT_ROLE_DATA_PROPERTY); return ELEMENT_ROLE_VALUE_ANNOTATION.equals(role); } }
@Override public List<String> getMessages() { final List<String> result = new ArrayList<>(); final HTMLCollection children = asElemental().getChildren(); for (int i = 0; i < children.length(); i++) { final Node child = (Node) children.at(i); if (child instanceof elemental.dom.Element) { final elemental.dom.Element element = (elemental.dom.Element) child; final Mappable dataset = element.getDataset(); final String message = getMessage(dataset); if (message != null) { result.add(message); } } } return result; }
private elemental.dom.Element buildIncludedElement(Annotation annotation, int offset) { final elemental.dom.Element element = annotation.getImageElement(); final CSSStyleDeclaration style = element.getStyle(); int layer = annotation.getLayer(); style.setZIndex(layer); style.setPosition(ABSOLUTE); style.setTop("0"); style.setLeft("0"); style.setRight("0"); style.setBottom("0"); element.getDataset().setAt(MESSAGE_DATASET_NAME, annotation.getText()); element.getDataset().setAt(TYPE_DATASET_NAME, annotation.getType()); element.getDataset().setAt(LAYER_DATASET_NAME, Integer.toString(layer)); element.getDataset().setAt(OFFSET_DATASET_NAME, Integer.toString(offset)); return element; }
private void updateIconVisibility() { int maxLayer = 0; final HTMLCollection children = asElemental().getChildren(); for (int i = 0; i < children.length(); i++) { final Node child = (Node) children.at(i); if (child instanceof elemental.dom.Element) { final elemental.dom.Element element = (elemental.dom.Element) child; final Mappable dataset = element.getDataset(); final int layer = getLayer(dataset); if (maxLayer < layer) { maxLayer = layer; } } } for (int i = 0; i < children.length(); i++) { final Node child = (Node) children.at(i); if (child instanceof elemental.dom.Element) { final elemental.dom.Element element = (elemental.dom.Element) child; final Mappable dataset = element.getDataset(); final int layer = getLayer(dataset); if (layer >= maxLayer) { element.getStyle().removeProperty("display"); } else { element.getStyle().setDisplay("none"); } } } }
@Override public final void removeAnnotation(final Annotation annotation, int offset) { final HTMLCollection children = asElemental().getChildren(); for (int i = 0; i < children.length(); i++) { final Node child = (Node) children.at(i); if (child instanceof elemental.dom.Element) { final elemental.dom.Element element = (elemental.dom.Element) child; final Mappable dataset = element.getDataset(); if (compareStrings(getMessage(dataset), annotation.getText()) && getOffset(dataset) == offset && getLayer(dataset) == annotation.getLayer() && compareStrings(getType(dataset), annotation.getType())) { // we may not strictly be on the same annotation instance, but it is not discernible asElemental().removeChild(element); updateIconVisibility(); break; } } } }