package org.ovirt.engine.ui.common.idhandler; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.ui.UIObject; /** * Base class for generated {@link ElementIdHandler} implementations. * <p> * Provides an abstraction for handling different field types with regard to setting DOM element IDs. * * @param <T> * The type of an object that contains {@literal @WithElementId} fields. * * @see ElementIdHandler */ public abstract class BaseElementIdHandler<T> implements ElementIdHandler<T> { private String idExtension = ""; //$NON-NLS-1$ @Override public void setIdExtension(String extension) { if (extension == null || extension.isEmpty()) { return; } this.idExtension = "_" + extension; //$NON-NLS-1$ } protected final void setElementId(Object obj, String elementId) { setExtendedElementId(obj, elementId + idExtension); } /** * Applies the generated (and possibly extended) DOM element ID to the given object. * * @param obj * Object for which to set the element ID. * @param elementId * Element ID to set. */ protected void setExtendedElementId(Object obj, String elementId) { if (obj instanceof HasElementId) { ((HasElementId) obj).setElementId(elementId); } else if (obj instanceof UIObject) { ((UIObject) obj).getElement().setId(elementId); } else if (obj instanceof Element) { ((Element) obj).setId(elementId); } } }