Package sc.lang.html
Class HTMLElement<RE>
- java.lang.Object
-
- sc.lang.SemanticNode
-
- sc.lang.java.JavaSemanticNode
-
- sc.lang.html.Node
-
- sc.lang.html.Element<RE>
-
- sc.lang.html.HTMLElement<RE>
-
- All Implemented Interfaces:
IDynObject
,INamedChildren
,IObjChildren
,IStatefulPage
,INamedNode
,ISemanticNode
,ISrcStatement
,IUserDataNode
,ILifecycle
,IChildInit
,IStoppable
,ITypeUpdateHandler
- Direct Known Subclasses:
A
,Body
,Div
,Document
,Form
,Head
,Html
,Img
,Input
,Option
,Page
,Select
,Span
,Style
,Textarea
public class HTMLElement<RE> extends Element<RE>
The base class for all HTML elements. Sync is disabled for HTML elements now (as set in Element. Instead, it's best to synchronize the view model and attach the view model to the HTML view. This is because we can always re-render the HTML page and so do not have to record the low-level dom state as changes are made. If the UI is going to work properly, it should be reactive to the view model anyway, so we can just save the model in one place unambiguously. We want model changes to occur on the client and for the UI to react immediately for interactivity as the default behavior.Some frameworks might want to sync some values of the UI to the server and then process clicks and stuff on the server.
If you do want to sync HTML elements entirely, this is a good node to turn it on. Otherwise you can do it on a tag by tag basis by annotating those classes. The Element class takes the RE type parameter for the repeat element. We can add this back in so that repeatVar is typed with that type. The benefit being that Java compiles in the repeat element's type without needing to add a new repeat var at compile time. There are problems getting that to work in the general case. When you have a parent class that has type parameters and you have an inner instance class which also has type parameters, Java intermittently barfs saying that the parent type is a "raw type" and can't have type parameters. It's weird because in simple cases it works but in the general case it falls over. You would Need to change the code to generate an extends like: class InnerSubClass<TP> extends outerClass<Object>.innerBaseClass<TP>
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class sc.lang.java.JavaSemanticNode
JavaSemanticNode.DepTypeCtx, JavaSemanticNode.DepTypeMode, JavaSemanticNode.MemberCache, JavaSemanticNode.MemberType
-
-
Field Summary
Fields Modifier and Type Field Description static IBeanMapper
_blurEventProp
static IBeanMapper
_clickEventProp
static IBeanMapper
_clientHeightProp
static IBeanMapper
_clientWidthProp
static IBeanMapper
_dblClickEventProp
static IBeanMapper
_focusEventProp
static IBeanMapper
_keyDownEventProp
static IBeanMapper
_keyPressEventProp
static IBeanMapper
_keyUpEventProp
static IBeanMapper
_mouseDownEventProp
static IBeanMapper
_mouseDownMoveUpProp
static IBeanMapper
_mouseMoveEventProp
static IBeanMapper
_mouseOutEventProp
static IBeanMapper
_mouseOverEventProp
static IBeanMapper
_mouseUpEventProp
static IBeanMapper
_offsetHeightProp
static IBeanMapper
_offsetLeftProp
static IBeanMapper
_offsetTopProp
static IBeanMapper
_offsetWidthProp
static IBeanMapper
_scrollHeightProp
static IBeanMapper
_scrollWidthProp
static java.util.Set<java.lang.String>
formattingAtts
static java.util.Set<java.lang.String>
formattingTags
-
Fields inherited from class sc.lang.html.Element
AFTER_REFRESH_TAG_PRIORITY, allowBehaviorTagsInContent, attributeList, bodyCache, bodyTxtValid, bodyValid, children, closeTagName, doOutputAll, doOutputBody, doOutputEnd, doOutputStart, ExecAll, ExecClient, execFlags, ExecProcess, ExecServer, fromElement, hiddenChildren, HTMLClass, inheritedAttributes, REFRESH_TAG_PRIORITY, refreshBindings, refreshOnLoad, refreshTagsNeeded, refreshTagsScheduled, repeatSync, repeatTagsValid, selfClose, serverContent, serverTag, serverTagInfo, startTagCache, startTagValid, staticContentOnly, style, tagName, tagObject, trace, verbose, wrap
-
Fields inherited from class sc.lang.java.JavaSemanticNode
debugDisablePrettyToString, STOP_SEARCHING_SENTINEL
-
Fields inherited from class sc.lang.SemanticNode
debugDiffTrace, initialized, PARENT_NODE_PROPERTY, parentNode, PARSE_NODE_PROPERTY, parseletId, parseNode, parseNodeInvalid, processed, started, transformed, validated
-
Fields inherited from interface sc.dyn.IDynObject
GET_PROPERTY_NAME, GET_TYPED_PROPERTY_NAME, SET_PROPERTY_NAME
-
Fields inherited from interface sc.lang.ISemanticNode
CopyAll, CopyIndependent, CopyInitLevels, CopyNormal, CopyParseNode, CopyReplace, CopyState, CopyTransformed, SkipParseNode
-
-
Constructor Summary
Constructors Constructor Description HTMLElement()
HTMLElement(Element parent, java.lang.String id, java.lang.Object repeatVar, int repeatIx)
HTMLElement(TypeDeclaration concreteType)
HTMLElement(TypeDeclaration concreteType, Element parent, java.lang.String id, java.lang.Object repeatVar, int repeatIx)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
click()
Method implemented on the client only to generate a simulated DOM event that behaves like a clickvoid
focus()
Event
getBlurEvent()
MouseEvent
getClickEvent()
MouseEvent
getDblClickEvent()
protected Event
getDOMEvent(sc.lang.html.HTMLElement.EventType type)
Event
getFocusEvent()
KeyboardEvent
getKeyDownEvent()
KeyboardEvent
getKeyPressEvent()
KeyboardEvent
getKeyUpEvent()
MouseEvent
getMouseDownEvent()
MouseEvent
getMouseDownMoveUp()
MouseEvent
getMouseMoveEvent()
MouseEvent
getMouseOutEvent()
MouseEvent
getMouseOverEvent()
MouseEvent
getMouseUpEvent()
void
setBlurEvent(Event event)
void
setClickEvent(MouseEvent clickEvent)
void
setDblClickEvent(MouseEvent clickEvent)
protected void
setDOMEvent(sc.lang.html.HTMLElement.EventType type, Event event, IBeanMapper prop)
void
setFocusEvent(Event event)
void
setKeyDownEvent(KeyboardEvent event)
void
setKeyPressEvent(KeyboardEvent event)
void
setKeyUpEvent(KeyboardEvent event)
void
setMouseDownEvent(MouseEvent event)
void
setMouseDownMoveUp(MouseEvent event)
void
setMouseMoveEvent(MouseEvent event)
void
setMouseOutEvent(MouseEvent event)
void
setMouseOverEvent(MouseEvent event)
void
setMouseUpEvent(MouseEvent event)
static java.lang.String
validateClientHTML(java.lang.String htmlStr, java.util.Set<java.lang.String> allowedTags, java.util.Set<java.lang.String> allowedAtts)
Parses and validates the HTML provided in htmlStr.static java.lang.String
validateTagTree(Element tag, java.util.Set<java.lang.String> allowedTags, java.util.Set<java.lang.String> allowedAtts)
-
Methods inherited from class sc.lang.html.Element
_updateInst, addChildListToByIdMap, addChildTagsWithName, addExtraAttributes, addMixinProperties, addNodeCompletions, addServerTagFlags, addServerTags, addToOutputMethod, allocUniqueId, allocUniqueId, anyChangedRepeatTags, appendElement, assignChildTagObjects, childInvalidated, convertExtendsTypeToJavaType, convertToObject, deepCopy, definesMember, destroyRepeatTags, displayError, displayTypeError, enableRepeatSync, equals, escAtt, escBody, execOmitObject, execTagStatements, findMember, findMethod, findType, getAllChildTagsWithName, getAllJSFiles, getAltChildren, getAttribute, getBodyAsString, getBodyMergeMode, getBodyOnly, getBooleanAttribute, getCache, getChangedCount, getChildForName, getChildNestingDepth, getChildrenById, getChildrenByIdAndType, getChildTags, getChildTagsWithName, getClientHeight, getClientWidth, getCloseStartTagOffset, getComputedExecFlags, getCustomServerTagProps, getDeclaredExtendsTypeDeclaration, getDefaultExtendsTypeDeclaration, getDefaultObjectName, getDefinedExecFlags, getDerivedElement, getElementId, getElementTypeDeclaration, getEnclosingType, getExcludedStub, getExtendsElement, getExtendsType, getExtendsTypeDeclaration, getFullTypeName, getHovered, getHTMLClass, getId, getImplementsElements, getInheritedAttributes, getInheritedChildTagsWithName, getInitScript, getInnerHTML, getJSFiles, getLayeredSystem, getMergeAttribute, getNameForChild, getNeedsClientServerSpecificId, getNodeContainsPart, getNodeName, getNumStatementLines, getObjChildren, getObjectName, getOffsetHeight, getOffsetLeft, getOffsetTop, getOffsetWidth, getOutputArgs, getOutputExpression, getPossibleAttributes, getPossibleAttributesForTag, getPreviousElementSibling, getRawObjectName, getRawSubTagMerge, getRawTagMerge, getRelFileList, getRelPrefix, getRelPrefix, getRelURL, getRepeat, getRepeatIndex, getRepeatObjectName, getRepeatVar, getRepeatVarName, getRepeatWrapperType, getReplaceWith, getScrollHeight, getScrollWidth, getServerTagInfo, getSimpleChildValue, getSingleChildTag, getStartTagTxt, getStateless, getStopScript, getStopSemanticProps, getStyle, getSubTagMerge, getSystemTagClassForTagName, getTagMergeMode, getTextContent, getUserVisibleName, hashCode, inheritsId, init, initChildren, initSync, initUniqueId, insertElement, invalidate, invalidateBody, invalidateRepeatTags, invalidateStartTag, isAbstract, isCacheEnabled, isClientServerSpecific, isEmptyBody, isEventSource, isHtmlAttribute, isLinkAttribute, isModifyingElement, isPageElement, isReadOnlyAttribute, isRefreshAttribute, isRepeatElement, isRepeatTag, isSingletonTag, isVisible, lowerTagName, mapAttributeToProperty, mapPropertyToAttribute, markBodyValid, markStartTagValid, moveElement, needsAutoId, needsId, needsObject, needsObjectDef, output, output, output_c, outputBody, outputEndTag, outputStartTag, outputTag, rebuildRepeat, refreshNode, refreshRepeat, refreshTags, removeAttribute, removeElement, removeRepeatElement, repeatTagsChanged, resetPageContext, resetTagObject, scheduleRefresh, scheduleRefreshTags, selfClosed, setBodyOnly, setCache, setChangedCount, setClientHeight, setClientWidth, setHovered, setHTMLClass, setId, setInitScript, setInnerHTML, setNodeName, setOffsetHeight, setOffsetLeft, setOffsetTop, setOffsetWidth, setParentNode, setRepeat, setRepeatIndex, setRepeatVar, setRepeatVarName, setReplaceWith, setScrollHeight, setScrollWidth, setStartTagTxt, setStopScript, setStyle, setTextContent, setVisible, sortChildrenByBeforeAfter, start, stop, suggestCompletions, syncRepeatTags, toDeclarationString, toListDisplayString, toString, transform, updateElementIndexes, updateServerTag, validateServerTags
-
Methods inherited from class sc.lang.html.Node
addBreakpointNodes, addProperty, findFromStatement, getDynType, getFromStatement, getNodeErrorText, getProperty, getProperty, getSrcStatement, getTypedProperty, getUserData, hasDynObject, invoke, invoke, setDynType, setProperty, setProperty, setSemanticProperty, setUserData
-
Methods inherited from class sc.lang.java.JavaSemanticNode
addDependentType, applyPartialValue, canInsertStatementBefore, declaresConstructor, definesConstructor, definesMethod, definesType, detectCycles, displayFormattedError, displayVerboseWarning, displayWarning, findMemberOwner, findStatement, findType, getDependencyDisabledText, getEnclosingBlockStatement, getEnclosingIMethod, getEnclosingIType, getEnclosingMethod, getEnclosingMethod, getEnclosingStatement, getEnclosingTag, getEnclosingTemplate, getExecMode, getImportedTypeName, getJavaLanguage, getJavaModel, getMessageString, getRootTag, getRootType, getStructuralEnclosingType, isCollapsibleNode, isDynamicType, isReferenceValueObject, isStatic, needsDataBinding, runtimeError, toFileString, toGenerateString, transformTemplate, visitTypeReferences
-
Methods inherited from class sc.lang.SemanticNode
changeLanguage, clearInitialized, clearParseNode, clearStarted, computeNearString, containsChild, deepEquals, diffNode, ensureValidated, formatLeftParenDelegateToParent, formatSpaceBeforeAngleBracket, getAnyChildParseNode, getChildAtIndex, getEnclosingSrcStatement, getLanguageModel, getNestingDepth, getNodeCount, getNodeErrorRange, getNodeWarningText, getNotFoundError, getParentNode, getParseErrorNode, getParseletId, getParseNode, getRootNode, getStartIndex, getTransformed, hasErrors, indexOfChild, isInitialized, isParseNodeValid, isProcessed, isSemanticChildValue, isSemanticProperty, isSemanticProperty, isStarted, isTrailingSrcStatement, isValidated, needsTransform, process, regenerate, regenerateIfTracking, removeChild, replaceChild, restoreParseNode, restoreParseNode, sameSrcLocation, serialize, setParseErrorNode, setParselet, setParseletId, setParseNode, setParseNodeValid, setProperty, setProperty, spaceAfterParen, styleNode, styleNode, toDefinitionString, toDefinitionString, toDefinitionString, toHeaderString, toLanguageString, toLanguageString, toLocationString, toLocationString, toLocationString, toModelString, toModelString, toSafeLanguageString, validate, validateParseNode
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface sc.lang.ISemanticNode
changeLanguage, clearInitialized, clearParseNode, clearStarted, containsChild, deepEquals, diffNode, getChildAtIndex, getDependencyDisabledText, getNestingDepth, getNodeCount, getNodeErrorRange, getNodeErrorText, getNodeWarningText, getNotFoundError, getParentNode, getParseErrorNode, getParseletId, getParseNode, getRootNode, getTransformed, indexOfChild, isInitialized, isParseNodeValid, isSemanticChildValue, isStarted, isTrailingSrcStatement, isValidated, needsTransform, process, regenerate, regenerateIfTracking, removeChild, replaceChild, restoreParseNode, serialize, setParseErrorNode, setParseletId, setParseNode, setParseNodeValid, styleNode, toHeaderString, toLanguageString, toLanguageString, toModelString, validateParseNode
-
Methods inherited from interface sc.lang.ISrcStatement
addBreakpointNodes, findFromStatement, getFromStatement, getSrcStatement
-
-
-
-
Field Detail
-
_clickEventProp
public static final IBeanMapper _clickEventProp
-
_dblClickEventProp
public static final IBeanMapper _dblClickEventProp
-
_mouseDownEventProp
public static final IBeanMapper _mouseDownEventProp
-
_mouseMoveEventProp
public static final IBeanMapper _mouseMoveEventProp
-
_mouseOverEventProp
public static final IBeanMapper _mouseOverEventProp
-
_mouseOutEventProp
public static final IBeanMapper _mouseOutEventProp
-
_mouseUpEventProp
public static final IBeanMapper _mouseUpEventProp
-
_keyDownEventProp
public static final IBeanMapper _keyDownEventProp
-
_keyPressEventProp
public static final IBeanMapper _keyPressEventProp
-
_keyUpEventProp
public static final IBeanMapper _keyUpEventProp
-
_focusEventProp
public static final IBeanMapper _focusEventProp
-
_blurEventProp
public static final IBeanMapper _blurEventProp
-
_clientWidthProp
public static final IBeanMapper _clientWidthProp
-
_clientHeightProp
public static final IBeanMapper _clientHeightProp
-
_scrollWidthProp
public static final IBeanMapper _scrollWidthProp
-
_scrollHeightProp
public static final IBeanMapper _scrollHeightProp
-
_offsetLeftProp
public static final IBeanMapper _offsetLeftProp
-
_offsetTopProp
public static final IBeanMapper _offsetTopProp
-
_offsetWidthProp
public static final IBeanMapper _offsetWidthProp
-
_offsetHeightProp
public static final IBeanMapper _offsetHeightProp
-
_mouseDownMoveUpProp
public static final IBeanMapper _mouseDownMoveUpProp
-
formattingTags
public static java.util.Set<java.lang.String> formattingTags
-
formattingAtts
public static java.util.Set<java.lang.String> formattingAtts
-
-
Constructor Detail
-
HTMLElement
public HTMLElement()
-
HTMLElement
public HTMLElement(TypeDeclaration concreteType)
-
HTMLElement
public HTMLElement(TypeDeclaration concreteType, Element parent, java.lang.String id, java.lang.Object repeatVar, int repeatIx)
-
HTMLElement
public HTMLElement(Element parent, java.lang.String id, java.lang.Object repeatVar, int repeatIx)
-
-
Method Detail
-
getClickEvent
public MouseEvent getClickEvent()
-
setClickEvent
public void setClickEvent(MouseEvent clickEvent)
-
click
public void click()
Method implemented on the client only to generate a simulated DOM event that behaves like a click
-
getDblClickEvent
public MouseEvent getDblClickEvent()
-
setDblClickEvent
public void setDblClickEvent(MouseEvent clickEvent)
-
getMouseDownEvent
public MouseEvent getMouseDownEvent()
-
setMouseDownEvent
public void setMouseDownEvent(MouseEvent event)
-
getMouseMoveEvent
public MouseEvent getMouseMoveEvent()
-
setMouseMoveEvent
public void setMouseMoveEvent(MouseEvent event)
-
getMouseOverEvent
public MouseEvent getMouseOverEvent()
-
setMouseOverEvent
public void setMouseOverEvent(MouseEvent event)
-
getMouseOutEvent
public MouseEvent getMouseOutEvent()
-
setMouseOutEvent
public void setMouseOutEvent(MouseEvent event)
-
getMouseUpEvent
public MouseEvent getMouseUpEvent()
-
setMouseUpEvent
public void setMouseUpEvent(MouseEvent event)
-
getKeyDownEvent
public KeyboardEvent getKeyDownEvent()
-
setKeyDownEvent
public void setKeyDownEvent(KeyboardEvent event)
-
getKeyPressEvent
public KeyboardEvent getKeyPressEvent()
-
setKeyPressEvent
public void setKeyPressEvent(KeyboardEvent event)
-
getKeyUpEvent
public KeyboardEvent getKeyUpEvent()
-
setKeyUpEvent
public void setKeyUpEvent(KeyboardEvent event)
-
getFocusEvent
public Event getFocusEvent()
-
setFocusEvent
public void setFocusEvent(Event event)
-
getBlurEvent
public Event getBlurEvent()
-
setBlurEvent
public void setBlurEvent(Event event)
-
getMouseDownMoveUp
public MouseEvent getMouseDownMoveUp()
-
setMouseDownMoveUp
public void setMouseDownMoveUp(MouseEvent event)
-
getDOMEvent
protected Event getDOMEvent(sc.lang.html.HTMLElement.EventType type)
-
setDOMEvent
protected void setDOMEvent(sc.lang.html.HTMLElement.EventType type, Event event, IBeanMapper prop)
-
focus
public void focus()
-
validateClientHTML
public static java.lang.String validateClientHTML(java.lang.String htmlStr, java.util.Set<java.lang.String> allowedTags, java.util.Set<java.lang.String> allowedAtts)
Parses and validates the HTML provided in htmlStr. If allowedTags is not null, only tags with those names are allowed
-
validateTagTree
public static java.lang.String validateTagTree(Element tag, java.util.Set<java.lang.String> allowedTags, java.util.Set<java.lang.String> allowedAtts)
-
-