Package org.freeplane.api

# Interface MindMap

All Superinterfaces:
  `MindMapRO`

All Known Subinterfaces:
  `Map`, `Proxy.Map`, `Proxy.MindMap`

public interface MindMap extends MindMapRO
The map a node belongs to: `node.map` - read-write.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addListener(NodeChangeListener listener)`
  `boolean`
  `close(boolean force, boolean allowInteraction)`
  closes a map.
  `void`
  `copyConditionalStylesFrom(MindMap source, String styleName)`
  Copies a style and its conditional style rules from another mind map into this mind map.
  `void`
  `copyStyleFrom(MindMap source, String styleName)`
  Copies a style from another mind map into this mind map.
  `List<String>`
  `copyUserStylesFrom(MindMap source)`
  Copies all user styles and their conditional style rules from another mind map into this one.
  `List<String>`
  `copyUserStylesFrom(MindMap source, boolean includeConditionalRules)`
  Copies all user styles from another mind map into this one.
  `List<String>`
  `copyUserStylesFrom(MindMap source, boolean includeConditionalRules, String... styleNameFilters)`
  Copies one or more user styles from another mind map into this one.
  `List<String>`
  `copyUserStylesFrom(MindMap source, boolean includeConditionalRules, ArrayList<String> styleNameFilters)`
  Copies one or more user styles from another mind map into this one.
  `List<String>`
  `copyUserStylesFrom(MindMap source, String... styleNameFilters)`
  Copies one or more user styles and their conditional style rules from another mind map into this one.
  `List<String>`
  `copyUserStylesFrom(MindMap source, ArrayList<String> styleNameFilters)`
  Copies one or more user styles and their conditional style rules from another mind map into this one.
  `void`
  `evaluateAllFormulas()`
  Evaluate all formulas in the map.
  `void`
  `evaluateOutdatedFormulas()`
  Evaluate probably changed formulas in the map.
  `void`
  `filter(boolean showAncestors, boolean showDescendants, NodeCondition condition)`
  install a lambda as the current filter in this map.
  `void`
  `filter(NodeCondition condition)`
  With `filter(boolean, boolean, NodeCondition)` neither ancestors not descendants of the visible nodes are shown.
  `List<NodeChangeListener>`
  `getListeners()`
  `Properties`
  `getStorage()`
  returns an accessor to the map specific storage.
  `void`
  `hide(boolean hideAncestors, boolean hideDescendants, NodeCondition condition)`
  Hides nodes matching given condition.
  `void`
  `redoFilter()`
  reinstalls the previously undone filter if there is any.
  `void`
  `removeListener(NodeChangeListener listener)`
  `boolean`
  `save(boolean allowInteraction)`
  saves the map to disk.
  `boolean`
  `saveAs(File file)`
  saves the map to disk.
  `void`
  `setAssociatedTemplate(URI uri)`
  Sets `uri` as Associated Template, template-normalizing it first if the location is in User- or Standard-Templates Directory, i.e.
  `void`
  `setBackgroundColor(Color color)`
  `void`
  `setBackgroundColorCode(String rgbString)`
  `void`
  `setBookmarks(List<NodeBookmark> bookmarks)`
  Sets the bookmarks for this mind map.
  `void`
  `setFilter(boolean showAncestors, boolean showDescendants, NodeCondition condition)`
  Deprecated.
  use filter
  `void`
  `setFilter(NodeCondition condition)`
  alias for `filter(NodeCondition)`.
  `void`
  `setFollowedMap(URI uri)`
  Sets `uri` as Followed Map, template-normalizing it first if the location is in User- or Standard-Templates Directory, e.g.
  `void`
  `setName(String title)`
  Sets the map (frame/tab) title.
  `void`
  `setSaved(boolean isSaved)`
  `void`
  `undoFilter()`
  removes the current filter and reinstalls the previous filter if there is any.

  ### Methods inherited from interface org.freeplane.api.MindMapRO

  `getAssociatedTemplate, getAssociatedTemplateFile, getBackgroundColor, getBackgroundColorCode, getBookmarks, getConditionalStyles, getFile, getFollowedMap, getFollowedMapFile, getName, getRoot, getRootNode, getUserDefinedStylesNames, isSaved, node`

- ## Method Details

  - ### close

    boolean close(boolean force, boolean allowInteraction)
    closes a map. Note that there is no undo for this method!
    Parameters:
      `force` - close map even if there are unsaved changes.
      `allowInteraction` - `if (allowInteraction && ! force)` a saveAs dialog will be opened if there are unsaved changes.
    Returns:
      false if the saveAs was cancelled by the user and true otherwise.
    Throws:
      `RuntimeException` - if the map contains changes and parameter force is false.
    Since:
      1.2

  - ### save

    boolean save(boolean allowInteraction)
    saves the map to disk. Note that there is no undo for this method.
    Parameters:
      `allowInteraction` - if a saveAs dialog should be opened if the map has no assigned URL so far.
    Returns:
      false if the saveAs was cancelled by the user and true otherwise.
    Throws:
      `RuntimeException` - if the map has no assigned URL and parameter allowInteraction is false.
    Since:
      1.2

  - ### saveAs

    boolean saveAs(File file)
    saves the map to disk. Note that there is no undo for this method.
    Parameters:
      `file` - the location of the file to be saved.
    Returns:
      false if the saveAs was cancelled by the user and true otherwise.
    Throws:
      `RuntimeException` - if the map has no assigned URL and parameter allowInteraction is false.
    Since:
      1.2

  - ### setSaved

    void setSaved(boolean isSaved)
    Since:
      1.2

  - ### setName

    void setName(String title)
    Sets the map (frame/tab) title. Note that there is no undo for this method!
    Since:
      1.2

  - ### setBackgroundColor

    void setBackgroundColor(Color color)
    Since:
      1.2

  - ### setBackgroundColorCode

    void setBackgroundColorCode(String rgbString)
    Parameters:
      `rgbString` - a HTML color spec like #ff0000 (red) or #222222 (darkgray).
    Since:
      1.2

  - ### filter

    void filter(NodeCondition condition)
    With `filter(boolean, boolean, NodeCondition)` neither ancestors not descendants of the visible nodes are shown.
    Since:
      1.2
    See Also:
      - `filter(boolean, boolean, NodeCondition)`

  - ### setFilter

    void setFilter(NodeCondition condition)
    alias for `filter(NodeCondition)`. Enables assignment to the `filter` property.
    Since:
      1.2

  - ### filter

    void filter(boolean showAncestors, boolean showDescendants, NodeCondition condition)
    install a lambda as the current filter in this map. If `condition` is null then filtering will be disabled. The filter state of a node can be checked by `NodeRO.isVisible()`.
    To undo filtering use Tools → Undo. After execution of the following you have to use it seven times to return to the initial filter state.

         // show only matching nodes
         node.map.filter{ it.text.contains("todo") }
         // equivalent:
         node.map.filter = { it.text.contains("todo") }

         // show ancestors of matching nodes
         node.map.filter(true, false){ it.text.contains("todo") }
         // equivalent:
         node.map.setFilter(true, false, { it.text.contains("todo") })

         // show descendants of matching nodes
         node.map.filter(false, true){ it.text.contains("todo") }
         // equivalent:
         node.map.setFilter(false, true, { it.text.contains("todo") })

         // remove filter
         node.map.filter = null

    Parameters:
      `showAncestors` - whether to show ancestors or not.
      `showDescendants` - whether to show descendant or not.
      `condition` - filter the map using this lamda.
    Since:
      1.2

  - ### hide

    void hide(boolean hideAncestors, boolean hideDescendants, NodeCondition condition)
    Hides nodes matching given condition.
    Parameters:
      `hideAncestors` - whether to hide ancestors or not.
      `hideDescendants` - whether to hide descendant or not.
      `condition` - filter the map using this lamda.
    Since:
      1.8.1
    See Also:
      - `filter(boolean, boolean, NodeCondition)`

  - ### setFilter

    @Deprecated void setFilter(boolean showAncestors, boolean showDescendants, NodeCondition condition)
    Deprecated.
    use filter
    alias for `filter(boolean, boolean, NodeCondition)`
    Since:
      1.2
    See Also:
      - `filter(boolean, boolean, NodeCondition)`

  - ### redoFilter

    void redoFilter()
    reinstalls the previously undone filter if there is any. Note: undo/redo for filters is separate to the undo/redo for other map state.
    Since:
      1.2

  - ### undoFilter

    void undoFilter()
    removes the current filter and reinstalls the previous filter if there is any. Note: undo/redo for filters is separate to the undo/redo for other map state.
    Since:
      1.2

  - ### getStorage

    Properties getStorage()
    returns an accessor to the map specific storage. The value is never null
    Since:
      1.3.6

  - ### evaluateAllFormulas

    void evaluateAllFormulas()
    Evaluate all formulas in the map. Each formula in the map is evaluated not depending on if it was already cached.
    Since:
      1.7.2

  - ### evaluateOutdatedFormulas

    void evaluateOutdatedFormulas()
    Evaluate probably changed formulas in the map. Each formula not having valid result in the cache is evaluated.
    Since:
      1.7.2

  - ### addListener

    void addListener(NodeChangeListener listener)

  - ### removeListener

    void removeListener(NodeChangeListener listener)

  - ### getListeners

    List<NodeChangeListener> getListeners()

  - ### copyStyleFrom

    void copyStyleFrom(MindMap source, String styleName)
    Copies a style from another mind map into this mind map.
    Since:
      1.9.8

  - ### copyConditionalStylesFrom

    void copyConditionalStylesFrom(MindMap source, String styleName)
    Copies a style and its conditional style rules from another mind map into this mind map.
    Since:
      1.9.8

  - ### copyUserStylesFrom

    List<String> copyUserStylesFrom(MindMap source, boolean includeConditionalRules, String... styleNameFilters)
    Copies one or more user styles from another mind map into this one.
    Parameters:
      `source` - mind map containing the desired style(s)
      `includeConditionalRules` - whether to include conditional style rules or not.
      `styleNameFilters` - one or more strings to indicate which styles should be copied (REGEX match)
    Returns:
      list with the names of the copied styles
    Since:
      1.11.9

  - ### copyUserStylesFrom

    List<String> copyUserStylesFrom(MindMap source, boolean includeConditionalRules, ArrayList<String> styleNameFilters)
    Copies one or more user styles from another mind map into this one.
    Parameters:
      `source` - mind map containing the desired style(s)
      `includeConditionalRules` - whether to include conditional style rules or not.
      `styleNameFilters` - ArrayList of strings to indicate which styles should be copied (REGEX match)
    Returns:
      list with the names of the copied styles
    Since:
      1.11.9
    See Also:
      - `copyUserStylesFrom(MindMap, boolean, String...)`

  - ### copyUserStylesFrom

    List<String> copyUserStylesFrom(MindMap source)
    Copies all user styles and their conditional style rules from another mind map into this one.

    Note: equivalent to: `copyUserStylesFrom(source, true, ".*")`

    Parameters:
      `source` - mind map containing the desired style(s)
    Returns:
      list with the names of the copied styles
    Since:
      1.11.9
    See Also:
      - `copyUserStylesFrom(MindMap, boolean, String...)`

  - ### copyUserStylesFrom

    List<String> copyUserStylesFrom(MindMap source, String... styleNameFilters)
    Copies one or more user styles and their conditional style rules from another mind map into this one.

    Note: equivalent to: `copyUserStylesFrom(source, true, styleNameFilters)`

    Parameters:
      `source` - mind map containing the desired style(s)
      `styleNameFilters` - one or more strings to indicate which styles should be copied (REGEX match)
    Returns:
      list with the names of the copied styles
    Since:
      1.11.9
    See Also:
      - `copyUserStylesFrom(MindMap, boolean, String...)`

  - ### copyUserStylesFrom

    List<String> copyUserStylesFrom(MindMap source, ArrayList<String> styleNameFilters)
    Copies one or more user styles and their conditional style rules from another mind map into this one.

    Note: equivalent to: `copyUserStylesFrom(source, true, styleNameFilters)`

    Parameters:
      `source` - mind map containing the desired style(s)
      `styleNameFilters` - ArrayList of strings to indicate which styles should be copied (REGEX match)
    Returns:
      list with the names of the copied styles
    Since:
      1.11.9
    See Also:
      - `copyUserStylesFrom(MindMap, boolean, String...)`

  - ### copyUserStylesFrom

    List<String> copyUserStylesFrom(MindMap source, boolean includeConditionalRules)
    Copies all user styles from another mind map into this one.

    Note: equivalent to: `copyUserStylesFrom(source, includeConditionalRules, ".*")`

    Parameters:
      `source` - mind map containing the desired style(s)
      `includeConditionalRules` - whether to include conditional style rules or not.
    Returns:
      list with the names of the copied styles
    Since:
      1.11.9
    See Also:
      - `copyUserStylesFrom(MindMap, boolean, String...)`

  - ### setFollowedMap

    void setFollowedMap(URI uri)

    Sets `uri` as Followed Map, template-normalizing it first if the location is in User- or Standard-Templates Directory, e.g.
    from `file:/home/macmarrum/.config/freeplane/1.11.x/templates/the-file.mm`
    to `template:/the-file.mm`

          // Unfollows a mind map
          node.mindMap.followedMap = null

          // Follows a mind map, using an absolute path - a standard string is used, therefore backslashes (path separators) must be escaped
          node.mindMap.followedMap = new File('c:\\Users\\macmarrum\\Documents\\My top-level mind map.mm').toURI()

          // Follows a template, using an absolute path - a slashy string is used, therefore backslashes (path separators) mustn't be escaped
          node.mindMap.followedMap = new File(/c:\Users\macmarrum\AppData\Roaming\Freeplane\1.11.x\templates\My template.mm/).toURI()

          // Follows a template, using a template: URI
          node.mindMap.followedMap = new URI('template:/My%20template.mm')

    Parameters:
      `uri` - Followed-Map URI or `null` to unfollow
    Since:
      1.11.11

  - ### setAssociatedTemplate

    void setAssociatedTemplate(URI uri)

    Sets `uri` as Associated Template, template-normalizing it first if the location is in User- or Standard-Templates Directory, i.e.
    from `file:/home/macmarrum/.config/freeplane/1.11.x/templates/the-file.mm`
    to `template:/the-file.mm`

          // Clears the template association
          node.mindMap.associatedTemplate = null

          // Associates a template with the mind map, using an absolute path - a slashy string is used, therefore backslashes (path separators) mustn't be escaped
          node.mindMap.associatedTemplate = new File(/c:\Users\macmarrum\AppData\Roaming\Freeplane\1.11.x\templates\My template.mm/).toURI()

          // Associates a template with the mind map, using a template: URI
          node.mindMap.associatedTemplate = new URI('template:/My%20template.mm')

    Parameters:
      `uri` - Associated-Template URI or `null` to remove it
    Since:
      1.11.11

  - ### setBookmarks

    void setBookmarks(List<NodeBookmark> bookmarks)
    Sets the bookmarks for this mind map. This replaces all existing bookmarks. Each bookmark in the list should reference a node that exists in this map.
    Parameters:
      `bookmarks` - the list of bookmarks to set for this map
    Throws:
      `IllegalArgumentException` - if any bookmark references a node not in this map
    Since:
      1.12.12