Hyperlinks

From FreeMind
Jump to navigationJump to search

FreeMind supports having one hyperlink per node, linking to web pages, mail addresses, and to local files.

Limitations

  • Opening of hyperlinks that contain various custom protocols such as "onenote://" and "outlook://" is unsupported. An example error message upon an attempt to open the hyperlink: "java.net.MalformedURLException:unknown protocol:". See also #Protocols.

Implementation

Making hyperlinks work fine on all the supported platforms including Microsoft Windows, Max OS X and Linux is technically tricky, requiring dedicated code for each group of platforms.

Methods
Class Method Description
FreeMind openDocument Opens the given URL in a browser or using the appropriate service of the operating system, using the browser command appropriate for the operating system.
ControllerAdapter loadURL Takes an URL as a string, checks whether it is relative or absolute, and whether it ends in ".mm", and opens it as a mind map, centers the target node if the URL is of the form "#nodeID", or forwards the URL to the openDocument method.
Tools urlGetFile A heuristic workaround.
Tools fileToUrl Converts a file to URL, working around Java issues.
Tools isAbsolutePath Tells whether the given string path is absolute or relative. For non-Windows, it decides based on whether the path starts with a file separator. The logic picked depends on the operating system. Used in the loadURL method.

Cases

Cases of hyperlink paths
Type Case Example Path Note
Local file Unix path "/folder/some more/file"
Local file Windows drive path "C:\Users\User Joe\file"
Local file Windows network path "\\hostname\folder\file" Following is broken in 0.9.0 beta 18.

Browser commands

The various default browser commands per operating system: Source: freemind.properties.

  • default_browser_command_windows_nt = cmd.exe /c start "" "{0}"
  • default_browser_command_windows_9x = command.com /c start "{0}"
  • default_browser_command_mac = open {0}
  • default_browser_command_other_os = xdg-open {0}

Protocols

Users are requesting that FreeMind supports various protocols that are currently unsupported. These include the following:

  • "onenote://"[1] -- for Microsoft OneNote
  • "mid://"[2] -- for messages
  • "notes://"[3] -- for Lotus Notes
  • "svn://"[4]
  • "outlook://"[5]
  • "message://" -- Email helper protocol call on Mac OS X

There is a patch fixing the issue for all the protocols: Support for arbitrary URIs
Would be nice if someone wrote an instruction on how to apply this patch!

Tracker items

Forum entries

See also

Links