Package com.iizix.text
Class KStringTag<TARGET>
- java.lang.Object
- com.iizix.text.KStringTag<TARGET>
- All Implemented Interfaces:
java.lang.Cloneable
- Direct Known Subclasses:
KStringHTMLTag
,KStringPLAINTag
public abstract class KStringTag<TARGET> extends java.lang.Object implements java.lang.Cloneable
Base class for Tags (HTMLTag and PlainTag) in KString.- Author:
- Christopher Mindus
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
KStringTag.Type
The types.
Constructor Summary
Constructors Constructor Description KStringTag(KStringTag.Type type, int position, java.util.LinkedHashMap<java.lang.String,java.lang.String> attributes)
Constructs a tag.
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
appendHTMLAttributes(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Appends the attributes for HTML raw format.void
appendHTMLAttributes(java.lang.StringBuilder useme, IKStringInfoProvider provider, java.lang.String... possibleAttributeList)
Appends the attributes for HTML raw format that are present in the "possibleAttributeList".void
appendHTMLAttributesSkip(java.lang.StringBuilder useme, IKStringInfoProvider provider, java.lang.String... skipAttributes)
Appends the attributes for HTML raw format.void
appendPLAINAttributes(java.lang.StringBuilder useme)
Appends the attributes for PLAIN raw format.static void
appendPLAINValue(java.lang.StringBuilder useme, java.lang.String value)
Appends a string as quoted value.protected KStringTag<TARGET>
clone()
Cloneable.protected void
disposeTagReference()
Disposes of the tag reference, used in the Editor for references.boolean
equals(java.lang.Object obj)
Equality check: tags must be of same class (i.e.boolean
equalsName(KStringTag<?> kst)
Checks for the same "name" (tag ordinal and closing tag for HTML, tag name for PLAIN).java.lang.String
getAttribute(java.lang.String attributeName)
Gets the attribute value.abstract java.lang.String
getHTMLString(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Gets the string representation of this tag in the HTML format, i.e.abstract java.lang.String
getHTMLTagText(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Gets the "unparsed" string representation of this tag in the HTML format, i.e.abstract java.lang.String
getPLAINString(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Gets the string representation of this tag in the PLAIN format, i.e.abstract java.lang.String
getPLAINTagText(java.lang.StringBuilder useme)
Gets the "unparsed" string representation of this tag in the PLAIN format, i.e.java.lang.String
getReference()
Gets the reference of this tag.java.lang.Class<?>
getReferenceClass()
Returns the reference class used by this tag, e.g.java.lang.String
getReferenceDescription()
Gets the reference description.java.lang.String
getReferenceError()
Gets the validation error.int
getSourceEndPosition()
Gets the ending position of this tag in the source string.int
getSourceLength()
Gets the length of this tag in the source string.int
getSourcePosition()
Gets the source position of this tag in the source string.KStringTag.Type
getType()
Gets the type of this tag.abstract boolean
isReferenceTag()
Checks if this tag is of reference type, i.e.boolean
isReferenceValid(KStringHolder holder, GProp<?> gp)
Validates a reference.boolean
isRefreshRequired(GEvent event, TARGET target)
Upon a property event received on the target reference property (or its children), this method verifies if the event would affect the KString contents needing to be refreshed.boolean
isRefreshRequired(RefreshEvent event)
Returns whether the tags needs a refresh for the specified refresh type.void
resolve(KStringHolder holder, boolean doReCheck, GEvent triggerEvent)
Resolves the reference.boolean
setAttribute(java.lang.String attributeName, java.lang.String value)
Updates an attribute value or removes it.abstract boolean
setReference(java.lang.String ref)
Updates the tag reference.void
setSourceLocation(int startPos, int endPos)
Sets the source position for the tag.void
verify(KStringHolder holder, PropVerification verification, java.lang.String location, int id)
Verifies the KString for a KString holder.abstract boolean
willLoseFormatting()
Checks if this string will lose formatting when translated to PLAIN.
Constructor Detail
KStringTag
public KStringTag(KStringTag.Type type, int position, java.util.LinkedHashMap<java.lang.String,java.lang.String> attributes)
Constructs a tag.- Parameters:
type
- The connector type.position
- The position in the character based and parsed string.attributes
- The attributes for the tag.
Method Detail
disposeTagReference
protected void disposeTagReference()
Disposes of the tag reference, used in the Editor for references.
setSourceLocation
public final void setSourceLocation(int startPos, int endPos) throws java.lang.IllegalArgumentException
Sets the source position for the tag. This can only be done once, next time an IllegalArgumentException is thrown.- Parameters:
startPos
- The start position in the source string.endPos
- The end position in the source string.- Throws:
java.lang.IllegalArgumentException
getType
public final KStringTag.Type getType()
Gets the type of this tag.
getSourcePosition
public final int getSourcePosition()
Gets the source position of this tag in the source string.- Returns:
- The start position of the tag.
getSourceEndPosition
public final int getSourceEndPosition()
Gets the ending position of this tag in the source string.- Returns:
- The end position of the tag.
getSourceLength
public final int getSourceLength()
Gets the length of this tag in the source string.- Returns:
- The length in characters of the tag.
isReferenceTag
public abstract boolean isReferenceTag()
Checks if this tag is of reference type, i.e. for HTML, the tags A, IMG, IZ. For PLAIN KString type, this method always returns true.
getReference
public java.lang.String getReference()
Gets the reference of this tag.- Returns:
- The reference, or null for none.
setReference
public abstract boolean setReference(java.lang.String ref)
Updates the tag reference.- Parameters:
ref
- The new reference.- Returns:
- true if changed, false for no change.
getReferenceClass
public java.lang.Class<?> getReferenceClass()
Returns the reference class used by this tag, e.g. KStringProp for text table, or the image class IImageTarget.class.- Returns:
- The class, or null for no references.
appendPLAINAttributes
public final void appendPLAINAttributes(java.lang.StringBuilder useme)
Appends the attributes for PLAIN raw format.
appendPLAINValue
public static void appendPLAINValue(java.lang.StringBuilder useme, java.lang.String value)
Appends a string as quoted value. The chosen quote can be either single- or double-quote, whichever is shortest.
appendHTMLAttributes
public final void appendHTMLAttributes(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Appends the attributes for HTML raw format.
appendHTMLAttributesSkip
public final void appendHTMLAttributesSkip(java.lang.StringBuilder useme, IKStringInfoProvider provider, java.lang.String... skipAttributes)
Appends the attributes for HTML raw format.
appendHTMLAttributes
public final void appendHTMLAttributes(java.lang.StringBuilder useme, IKStringInfoProvider provider, java.lang.String... possibleAttributeList)
Appends the attributes for HTML raw format that are present in the "possibleAttributeList".
getAttribute
public final java.lang.String getAttribute(java.lang.String attributeName)
Gets the attribute value.- Parameters:
attributeName
- The name of the attribute.- Returns:
- The value, or null if the attribute is not present.
setAttribute
public final boolean setAttribute(java.lang.String attributeName, java.lang.String value)
Updates an attribute value or removes it.- Parameters:
attributeName
- The attribute name.value
- The value to set, or null to remove the attribute.- Returns:
- true if changed, false otherwise.
willLoseFormatting
public abstract boolean willLoseFormatting()
Checks if this string will lose formatting when translated to PLAIN. Note that translating PLAIN to HTML never loses formatting.
getPLAINTagText
public abstract java.lang.String getPLAINTagText(java.lang.StringBuilder useme)
Gets the "unparsed" string representation of this tag in the PLAIN format, i.e. a HTML tag will reformat or translate itself for PLAIN, or vice versa.
getHTMLTagText
public abstract java.lang.String getHTMLTagText(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Gets the "unparsed" string representation of this tag in the HTML format, i.e. a PLAIN tag will reformat or translate itself for HTML, or vice versa.- Parameters:
useme
- Temporary StringBuilder for any use.provider
- The information provider or null for none.
getPLAINString
public abstract java.lang.String getPLAINString(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Gets the string representation of this tag in the PLAIN format, i.e. a HTML tag will reformat or translate itself for PLAIN, or vice versa.- Parameters:
useme
- Temporary StringBuilder for any use.provider
- The information provider or null for none.
getHTMLString
public abstract java.lang.String getHTMLString(java.lang.StringBuilder useme, IKStringInfoProvider provider)
Gets the string representation of this tag in the HTML format, i.e. a PLAIN tag will reformat or translate itself for HTML, or vice versa.- Parameters:
useme
- Temporary StringBuilder for any use.provider
- The information provider or null for none.
equals
public boolean equals(java.lang.Object obj)
Equality check: tags must be of same class (i.e. exactly same type) and have the same attributes.- Overrides:
equals
in classjava.lang.Object
equalsName
public boolean equalsName(KStringTag<?> kst)
Checks for the same "name" (tag ordinal and closing tag for HTML, tag name for PLAIN).
clone
protected KStringTag<TARGET> clone()
Cloneable.- Overrides:
clone
in classjava.lang.Object
getReferenceDescription
public final java.lang.String getReferenceDescription()
Gets the reference description.- Returns:
- The description shown for reference view in the Designer.
isReferenceValid
public boolean isReferenceValid(KStringHolder holder, GProp<?> gp)
Validates a reference.- Parameters:
holder
- The KString holder.gp
- The reference found.- Returns:
- Validates the reference.
getReferenceError
public java.lang.String getReferenceError()
Gets the validation error.- Returns:
- null for OK, otherwise the error text.
resolve
public void resolve(KStringHolder holder, boolean doReCheck, GEvent triggerEvent)
Resolves the reference.- Parameters:
holder
- The KString holder.doReCheck
- Rechecks the references.triggerEvent
- The trigger event.
verify
public void verify(KStringHolder holder, PropVerification verification, java.lang.String location, int id)
Verifies the KString for a KString holder.- Parameters:
holder
- The KString holder.verification
- The property verification class.location
- The location.id
- The tag ID.
isRefreshRequired
public boolean isRefreshRequired(RefreshEvent event)
Returns whether the tags needs a refresh for the specified refresh type.- Parameters:
event
- The refresh event.- Returns:
- true for refresh needed, false otherwise.
isRefreshRequired
public boolean isRefreshRequired(GEvent event, TARGET target)
Upon a property event received on the target reference property (or its children), this method verifies if the event would affect the KString contents needing to be refreshed.- Parameters:
event
- The event.target
- The target property for the tag.- Returns:
- true to refresh the KString, false not to.