package org.nocket.gen.page.element; import org.apache.commons.lang.StringUtils; import org.apache.wicket.model.IModel; import org.jsoup.nodes.Element; import org.nocket.gen.domain.visitor.html.styling.common.AbstractStylingStrategyImpl; import org.nocket.gen.page.DMDWebGenPageContext; import org.nocket.gen.page.element.synchronizer.LoadableDetachablePropertyModelObject; public abstract class AbstractPageElement<M> implements PageElementI<M> { private transient final DMDWebGenPageContext context; private transient final Element element; private transient IModel<Object> propertyModelObject; public AbstractPageElement(DMDWebGenPageContext context, Element element) { this.context = context; this.element = element; } @Override public DMDWebGenPageContext getContext() { return context; } @Override public Element getElement() { return element; } @Override public IModel<Object> getPropertyModelObject() { if (propertyModelObject == null) { propertyModelObject = new LoadableDetachablePropertyModelObject(getContext()); } return propertyModelObject; } @Override public String getWicketId() { String wicketId = element.attr(AbstractStylingStrategyImpl.ATTR_WICKET_ID); if (StringUtils.isBlank(wicketId)) { return null; } else { return wicketId; } } @Override public boolean enableThoughUnmodifiable() { return false; } }