Hyperlinks: Difference between revisions
Dan Polansky (talk | contribs) (→Implementation: +note on Desktop class) |
Dan Polansky (talk | contribs) (→Limitations: +on parameters) |
||
Line 3: | Line 3: | ||
==Limitations== | ==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]]. | * 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 [http://sourceforge.net/projects/freemind/forums/forum/22102/topic/3042693 Help forum post]. | |||
==Implementation== | ==Implementation== |
Revision as of 16:41, 25 August 2010
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.
- 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.
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
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
- URLs of local files - spaces
- Bug: Error opening files from network PCs in Windows
- RFE: Customisable hyperlink protocols (like Firefox)
- Bug: 'Unknown protocol' for custom protocol hyperlinks
- Patch: Support for arbitrary URIs
Forum entries
- Lotus Notes hyperlink, 2009-02-17