org.freeplane.plugin.script.proxy

## Interface Proxy.NodeRO

- All Known Subinterfaces:
    Proxy.Node
  Enclosing interface:
    Proxy

      public static interface Proxy.NodeRO

  The currently selected node: `node` - read-only.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.List<Proxy.Node>` | `find(groovy.lang.Closure<java.lang.Boolean> closure)` Starting from this node, recursively searches for nodes for which `closure.call(node)` returns true.
    `java.util.List<Proxy.Node>` | `find(org.freeplane.features.filter.condition.ICondition condition)` Deprecated. since 1.2 use `find(Closure)` instead.
    `java.util.List<Proxy.Node>` | `findAll()` Returns all nodes of the branch that starts with this node in breadth-first order.
    `java.util.List<Proxy.Node>` | `findAllDepthFirst()` Returns all nodes of the branch that starts with this node in depth-first order.
    `Convertible` | `getAt(java.lang.String attributeName)` allows to access attribute values like array elements.
    `Proxy.Attributes` | `getAttributes()`
    `byte[]` | `getBinary()` Returns a BASE64 encoded node text (see `Proxy.Node.setBinary(byte[])`) as a binary object.
    `int` | `getChildPosition(Proxy.Node childNode)` returns the index (0..) of this node in the (by Y coordinate sorted) list of this node's children.
    `java.util.List<Proxy.Node>` | `getChildren()` returns the children of this node ordered by Y coordinate.
    `Proxy.Cloud` | `getCloud()` a reference to an accessor object for cloud properties of this node.
    `java.util.Collection<Proxy.Connector>` | `getConnectorsIn()`
    `java.util.Collection<Proxy.Connector>` | `getConnectorsOut()`
    `int` | `getCountNodesSharingContent()` The count of node sharing their content with this node.
    `int` | `getCountNodesSharingContentAndSubtree()` The count of nodes sharing their content and subtree with this node.
    `java.util.Date` | `getCreatedAt()`
    `Convertible` | `getDetails()` returns the text of the details as a Convertible like `getNote()` for notes: node.details.to.plain plain text of the node, possibly after formula evaluation node.details.plain the same.
    `java.lang.String` | `getDetailsText()` returns the raw HTML text of the details if there is any or null otherwise.
    `java.lang.String` | `getDisplayedText()` Plain or HTML text of this node after possible transformation (formula evaluation, formatting, ...)
    `Proxy.ExternalObject` | `getExternalObject()`
    `java.lang.String` | `getFormat()` returns the format string of the formatter if available and null otherwise.
    `boolean` | `getHideDetails()` returns true if node details are hidden.
    `int` | `getHorizontalShift()`
    `java.lang.String` | `getHtmlText()` Plain text after removal of possible HTML markup.
    `Proxy.Icons` | `getIcons()` a reference to an accessor object for icons of this node.
    `java.lang.String` | `getId()`
    `java.util.Date` | `getLastModifiedAt()`
    `Proxy.Link` | `getLink()` a reference to an accessor object for link properties of this node.
    `Proxy.Map` | `getMap()` the map this node belongs to.
    `int` | `getMinimalDistanceBetweenChildren()`
    `Proxy.Node` | `getNext()` returns the next node with respect to this node in depth-first order.
    `java.lang.String` | `getNodeID()` Deprecated. since 1.2 - use Node.getId() instead.
    `int` | `getNodeLevel(boolean countHidden)` if countHidden is false then only nodes that are matched by the current filter are counted.
    `java.util.List<Proxy.Node>` | `getNodesSharingContent()` The count of nodes sharing their content with this node.
    `java.util.List<Proxy.Node>` | `getNodesSharingContentAndSubtree()` The nodes sharing their content and subtree with this node.
    `Convertible` | `getNote()` returns the text of the details as a Convertible.
    `java.lang.String` | `getNoteText()` Returns the HTML text of the node.
    `java.lang.Object` | `getObject()` The object that's displayed as the node text - normally the raw text of this node (then this method is equivalent to `getText()`).
    `Proxy.Node` | `getParent()`
    `Proxy.Node` | `getParentNode()` Deprecated. since 1.2 - use `getParent()` instead.
    `java.util.List<Proxy.Node>` | `getPathToRoot()` a list of all nodes starting from this node upto (and including) the root node.
    `java.lang.String` | `getPlainText()` Plain text after removal of possible HTML markup.
    `java.lang.String` | `getPlainTextContent()` Deprecated. since 1.2 - use getPlainText() or getTo().getPlain() instead.
    `Proxy.Node` | `getPrevious()` returns the previous node with respect to this node in depth-first order.
    `Proxy.Reminder` | `getReminder()` use it to create and inspect `Proxy.Reminder`s.
    `java.lang.String` | `getShortText()` Plain text of this node after possible transformation and forced text shortening.
    `Proxy.NodeStyle` | `getStyle()` The style attributes of a node can either be changed by assigning a named style like this: node.style.name = 'style.ok' or by changing attributes for this node individually like this: node.style.textColorCode = '#FF0000' Conditional styles of a node can only be investigated by `hasStyle(String)`.
    `java.lang.String` | `getText()` Raw text of this node which might be plain or HTML text.
    `Convertible` | `getTo()` returns an object that performs conversions (method name is choosen to give descriptive code): node.to.num Long or Double, see `Convertible.getDate()`.
    `java.lang.String` | `getTransformedText()` Plain or HTML text of this node after possible transformation (formula evaluation, formatting, ...).
    `Convertible` | `getValue()` an alias for `getTo()`.
    `int` | `getVerticalShift()`
    `boolean` | `hasStyle(java.lang.String styleName)` returns true if the node has the style of this name - either manually set or as a conditional style or it is "default" which all nodes have.
    `boolean` | `isDescendantOf(Proxy.Node p)` returns true if p is a parent, or grandparent, ... of this node, or if it is equal to this node; returns false otherwise.
    `boolean` | `isFolded()` if this node is folded.
    `boolean` | `isFree()` returns true if this node is freely positionable.
    `boolean` | `isLeaf()`
    `boolean` | `isLeft()`
    `boolean` | `isMinimized()` if this node's text is shortened for display.
    `boolean` | `isRoot()`
    `boolean` | `isVisible()` if this node is visible or not (due to filtering).

- - ### Method Detail

    - #### getAttributes

          Proxy.Attributes getAttributes()

    - #### getAt

          Convertible getAt(java.lang.String attributeName)

      allows to access attribute values like array elements. Note that the returned type is a `Convertible`, not a String. Nevertheless it behaves like a String in almost all respects, that is, in Groovy scripts it understands all String methods like lenght(), matches() etc.

             // standard way
             node.attributes.set("attribute name", "12")
             // implicitely use getAt()
             def val = node["attribute name"]
             // use all conversions that Convertible provides (num, date, string, ...)
             assert val.num == new Long(12)
             // or use it just like a string
             assert val.startsWith("1")
             // check for availability of an attribute this way:
             if (node["unknown attribute"])
                // surprise: the node has an attribute with key "unknown attribute"

      Throws:
        `org.freeplane.plugin.script.ExecuteScriptException`
      Since:
        1.2

    - #### getCloud

          Proxy.Cloud getCloud()

      a reference to an accessor object for cloud properties of this node. This property is never null.
      Since:
        1.2

    - #### getChildPosition

          int getChildPosition(Proxy.Node childNode)

      returns the index (0..) of this node in the (by Y coordinate sorted) list of this node's children. Returns -1 if childNode is not a child of this node.

    - #### getChildren

          java.util.List<Proxy.Node> getChildren()

      returns the children of this node ordered by Y coordinate.

    - #### getConnectorsIn

          java.util.Collection<Proxy.Connector> getConnectorsIn()

    - #### getConnectorsOut

          java.util.Collection<Proxy.Connector> getConnectorsOut()

    - #### getDetailsText

          java.lang.String getDetailsText()

      returns the raw HTML text of the details if there is any or null otherwise.
      Since:
        1.2

    - #### getDetails

          Convertible getDetails()

      returns the text of the details as a Convertible like `getNote()` for notes:
      - node.details.to.plain plain text of the node, possibly after formula evaluation
      - node.details.plain the same.
      - node.details.string the same.
      - node.details.html the raw html text. No formula evaluation is applied.
      - node.details.text the same.
      Since:
        1.2

    - #### getHideDetails

          boolean getHideDetails()

      returns true if node details are hidden.
      Since:
        1.2

    - #### getExternalObject

          Proxy.ExternalObject getExternalObject()

    - #### getIcons

          Proxy.Icons getIcons()

      a reference to an accessor object for icons of this node. This property is never null.

    - #### getLink

          Proxy.Link getLink()

      a reference to an accessor object for link properties of this node. This property is never null.

    - #### getReminder

          Proxy.Reminder getReminder()

      use it to create and inspect `Proxy.Reminder`s. This property is never null.

    - #### getMap

          Proxy.Map getMap()

      the map this node belongs to.

    - #### getNodeID

          java.lang.String getNodeID()

      Deprecated. since 1.2 - use Node.getId() instead.

    - #### getId

          java.lang.String getId()

      Since:
        1.2

    - #### getNodeLevel

          int getNodeLevel(boolean countHidden)

      if countHidden is false then only nodes that are matched by the current filter are counted.

    - #### getNote

          Convertible getNote()

      returns the text of the details as a Convertible. Convertibles behave like Strings in most respects. Additionally String methods are overridden to handle Convertible arguments as if the argument were the result of Convertible.getText().
      - node.note.to.plain plain text of the node, possibly after formula evaluation
      - node.note.plain the same.
      - node.note.text the same.
      - node.note.html the raw html text. No formula evaluation is applied.
      - node.note.string the same.
      Returns:
        Convertible getString(), getText() and toString() will return plain text instead of the HTML. Use `getNoteText()` to get the HTML text.
      Throws:
        `org.freeplane.plugin.script.ExecuteScriptException`
      Since:
        1.2

    - #### getNoteText

          java.lang.String getNoteText()

      Returns the HTML text of the node. (Notes always contain HTML text.)
      Throws:
        `org.freeplane.plugin.script.ExecuteScriptException`

    - #### getParent

          Proxy.Node getParent()

      Since:
        1.2

    - #### getParentNode

          Proxy.Node getParentNode()

      Deprecated. since 1.2 - use `getParent()` instead.

    - #### getPathToRoot

          java.util.List<Proxy.Node> getPathToRoot()

      a list of all nodes starting from this node upto (and including) the root node.

             def path = pathToRoot.collect{ it.plainText }.join('.')

      Since:
        1.3.3

    - #### getNext

          Proxy.Node getNext()

      returns the next node with respect to this node in depth-first order. Returns null if this node is the only one in the map.

    - #### getPrevious

          Proxy.Node getPrevious()

      returns the previous node with respect to this node in depth-first order. Returns null if this node is the only one in the map.

    - #### getStyle

          Proxy.NodeStyle getStyle()

      The style attributes of a node can either be changed by assigning a named style like this:

          node.style.name = 'style.ok'

      or by changing attributes for this node individually like this:

          node.style.textColorCode = '#FF0000'

      Conditional styles of a node can only be investigated by `hasStyle(String)`. Here a script that creates an index of all nodes having the style 'todo':

           def todos = node.map.root.createChild('To Do')
           c.find{ it.hasStyle('todo') }.each {
               def child = todos.createChild(it.text)
               child.link.node = it
           }

    - #### hasStyle

          boolean hasStyle(java.lang.String styleName)

      returns true if the node has the style of this name - either manually set or as a conditional style or it is "default" which all nodes have. The following statement will always be true:
      Since:
        1.2

    - #### getText

          java.lang.String getText()

      Raw text of this node which might be plain or HTML text. Possible transformations (formula evaluation, formatting, ...) are not applied.

      See

      - `getPlainText()` for plain text or use `HtmlUtils.htmlToPlain(String)`.
      - `getHtmlText()` for HTML text or use `HtmlUtils.plainToHTML(String)`.
      - `getTransformedText()` or `getValue()` for text after formula evaluation.
      - `getObject()` for possible typed content.
      - `getTo()` for text/object conversions.
      Since:
        1.2

    - #### getPlainText

          java.lang.String getPlainText()

      Plain text after removal of possible HTML markup. Possible transformations (formula evaluation, formatting, ...) are not applied.
      Since:
        1.2

    - #### getPlainTextContent

          java.lang.String getPlainTextContent()

      Deprecated. since 1.2 - use getPlainText() or getTo().getPlain() instead.
      Plain text after removal of possible HTML markup. Formulas are not evaluated.

    - #### getHtmlText

          java.lang.String getHtmlText()

      Plain text after removal of possible HTML markup. Possible transformations (formula evaluation, formatting, ...) are not applied.
      Since:
        1.2

    - #### getTransformedText

          java.lang.String getTransformedText()

      Plain or HTML text of this node after possible transformation (formula evaluation, formatting, ...).
      Since:
        1.2

    - #### getDisplayedText

          java.lang.String getDisplayedText()

      Plain or HTML text of this node after possible transformation (formula evaluation, formatting, ...) and after text shortening. See `isMinimized()` for node shortening.
      Since:
        1.2

    - #### getShortText

          java.lang.String getShortText()

      Plain text of this node after possible transformation and forced text shortening.
      Since:
        1.2

    - #### getObject

          java.lang.Object getObject()

      The object that's displayed as the node text - normally the raw text of this node (then this method is equivalent to `getText()`). But in case of typed content (for numbers, dates and calendars) `getObject()` returns a proper `IFormattedObject`. Use `getPlainText()` to remove HTML. See `Proxy.Node.setObject(Object)` for details.
      Since:
        1.2

    - #### getFormat

          java.lang.String getFormat()

      returns the format string of the formatter if available and null otherwise.
      Since:
        1.2

    - #### getTo

          Convertible getTo()

      returns an object that performs conversions (method name is choosen to give descriptive code):
      node.to.num
        Long or Double, see `Convertible.getDate()`.
      node.to.date
        Date, see `Convertible.getDate()`.
      node.to.string
        Text, see `Convertible.getString()`.
      node.to.text
        an alias for getString(), see `Convertible.getText()`.
      node.to.object
        returns what fits best, see `Convertible.getObject()`.
      Returns:
        ConvertibleObject
      Throws:
        `org.freeplane.plugin.script.ExecuteScriptException` - on formula evaluation errors
        `ConversionException` - on parse errors, e.g. if to.date is invoked on "0.25"
      Since:
        1.2

    - #### getValue

          Convertible getValue()

      an alias for `getTo()`.
      Throws:
        `org.freeplane.plugin.script.ExecuteScriptException` - on formula evaluation errors
      Since:
        1.2

    - #### getBinary

          byte[] getBinary()

      Returns a BASE64 encoded node text (see `Proxy.Node.setBinary(byte[])`) as a binary object. Errors are signaled by a null return value. Whitespace characters are ignored.
      Note that this method is not able to catch all encoding errors!
      Since:
        1.2

    - #### isDescendantOf

          boolean isDescendantOf(Proxy.Node p)

      returns true if p is a parent, or grandparent, ... of this node, or if it is equal to this node; returns false otherwise.

    - #### isFolded

          boolean isFolded()

      if this node is folded. Note that the folding state only concerns the visibility of the child nodes.

    - #### isFree

          boolean isFree()

      returns true if this node is freely positionable.
      Since:
        1.2

    - #### isLeaf

          boolean isLeaf()

    - #### isLeft

          boolean isLeft()

    - #### isRoot

          boolean isRoot()

    - #### isVisible

          boolean isVisible()

      if this node is visible or not (due to filtering). Node folding is not considered. See `isFolded()` for folding state.

    - #### isMinimized

          boolean isMinimized()

      if this node's text is shortened for display.

    - #### getCountNodesSharingContent

          int getCountNodesSharingContent()

      The count of node sharing their content with this node. Use `if (node.countNodesSharingContent() > 0)` to check if a node has any clones.
      Note: `getCountNodesSharingContent()` ≥ `getCountNodesSharingContentAndSubtree()`.
      Returns:
        0 if this node is standalone or the number of other nodes sharing content otherwise.
      Since:
        1.5
      See Also:
        `getNodesSharingContent()`, `Proxy.Node.appendAsCloneWithSubtree(Proxy.NodeRO)`, `Proxy.Node.appendAsCloneWithoutSubtree(Proxy.NodeRO)`

    - #### getCountNodesSharingContentAndSubtree

          int getCountNodesSharingContentAndSubtree()

      The count of nodes sharing their content and subtree with this node.
      Note: `getCountNodesSharingContent()` ≥ `getCountNodesSharingContentAndSubtree()`.
      Returns:
        0 if this node has no other nodes it is sharing its content and subtree with or its count otherwise.
      Since:
        1.5
      See Also:
        `getNodesSharingContentAndSubtree()`, `Proxy.Node.appendAsCloneWithSubtree(Proxy.NodeRO)`, `Proxy.Node.appendAsCloneWithoutSubtree(Proxy.NodeRO)`

    - #### getNodesSharingContent

          java.util.List<Proxy.Node> getNodesSharingContent()

      The count of nodes sharing their content with this node.
      Note: `getCountNodesSharingContent()` ≥ `getCountNodesSharingContentAndSubtree()`.
      Returns:
        0 if this node is standalone or the number of other nodes sharing content otherwise.
      Since:
        1.5
      See Also:
        `getCountNodesSharingContent()`, `Proxy.Node.appendAsCloneWithSubtree(Proxy.NodeRO)`, `Proxy.Node.appendAsCloneWithoutSubtree(Proxy.NodeRO)`

    - #### getNodesSharingContentAndSubtree

          java.util.List<Proxy.Node> getNodesSharingContentAndSubtree()

      The nodes sharing their content and subtree with this node.
      Returns:
        0 if this node has no other nodes it is sharing its content and subtree with or its count otherwise.
      Since:
        1.5
      See Also:
        `getCountNodesSharingContentAndSubtree()`, `Proxy.Node.appendAsCloneWithSubtree(Proxy.NodeRO)`, `Proxy.Node.appendAsCloneWithoutSubtree(Proxy.NodeRO)`

    - #### find

          java.util.List<Proxy.Node> find(org.freeplane.features.filter.condition.ICondition condition)

      Deprecated. since 1.2 use `find(Closure)` instead.
      Starting from this node, recursively searches for nodes for which `condition.checkNode(node)` returns true.

    - #### find

          java.util.List<Proxy.Node> find(groovy.lang.Closure<java.lang.Boolean> closure)

      Starting from this node, recursively searches for nodes for which `closure.call(node)` returns true. See `Proxy.ControllerRO.find(Closure)` for details.

    - #### findAll

          java.util.List<Proxy.Node> findAll()

      Returns all nodes of the branch that starts with this node in breadth-first order. See `Proxy.ControllerRO.findAll()` for map-global searches.
      Since:
        1.2

    - #### findAllDepthFirst

          java.util.List<Proxy.Node> findAllDepthFirst()

      Returns all nodes of the branch that starts with this node in depth-first order. See `Proxy.ControllerRO.findAllDepthFirst()` for map-global searches.
      Since:
        1.2

    - #### getLastModifiedAt

          java.util.Date getLastModifiedAt()

    - #### getCreatedAt

          java.util.Date getCreatedAt()

    - #### getHorizontalShift

          int getHorizontalShift()

      Since:
        1.3.7

    - #### getVerticalShift

          int getVerticalShift()

      Since:
        1.3.7

    - #### getMinimalDistanceBetweenChildren

          int getMinimalDistanceBetweenChildren()

      Since:
        1.3.7