Hyperlinks

From FreeMind

Revision as of 09:30, 11 June 2011 by Dan Polansky (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

Contents

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.
  • Hyperlinks to executables with parameters is unsupported: passing parameters to executables is not possible in hyperlinks. The following does not work: "C:/Program Files/Windows Media Player/wmplayer.exe C:/My Documents/file.mp3"; the part "C:/My Documents/file.mp3" is not understood as a parameter. See also a Help forum post.

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.

FreeMind could, yet does not, open hyperlinks by using the Desktop class introduced in Java 6. A downside: this would make FreeMind dependent on Java 6 rather than on Java 1.4.

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

Personal tools