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