Class |
Line # |
Actions |
|||
---|---|---|---|---|---|
Help | 39 | 15 | 6 | ||
Help.HelpId | 48 | 4 | 3 |
1 | /* | |
2 | * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) | |
3 | * Copyright (C) $$Year-Rel$$ The Jalview Authors | |
4 | * | |
5 | * This file is part of Jalview. | |
6 | * | |
7 | * Jalview is free software: you can redistribute it and/or | |
8 | * modify it under the terms of the GNU General Public License | |
9 | * as published by the Free Software Foundation, either version 3 | |
10 | * of the License, or (at your option) any later version. | |
11 | * | |
12 | * Jalview is distributed in the hope that it will be useful, but | |
13 | * WITHOUT ANY WARRANTY; without even the implied warranty | |
14 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR | |
15 | * PURPOSE. See the GNU General Public License for more details. | |
16 | * | |
17 | * You should have received a copy of the GNU General Public License | |
18 | * along with Jalview. If not, see <http://www.gnu.org/licenses/>. | |
19 | * The Jalview Authors are detailed in the 'AUTHORS' file. | |
20 | */ | |
21 | package jalview.gui; | |
22 | ||
23 | import java.awt.Point; | |
24 | import java.net.URL; | |
25 | ||
26 | import javax.help.BadIDException; | |
27 | import javax.help.HelpBroker; | |
28 | import javax.help.HelpSet; | |
29 | import javax.help.HelpSetException; | |
30 | ||
31 | import jalview.util.BrowserLauncher; | |
32 | import jalview.util.Platform; | |
33 | ||
34 | /** | |
35 | * Utility class to show the help documentation window | |
36 | * | |
37 | * @author gmcarstairs | |
38 | */ | |
39 | public class Help | |
40 | { | |
41 | private static final String HELP_PAGE_ROOT = "http://www.jalview.org/help/"; | |
42 | ||
43 | /** | |
44 | * Defines selected help targets with links to inbuilt (Java) help page | |
45 | * target, and externally hosted help page. Will need to be maintained | |
46 | * manually if help pages are reorganised in future. | |
47 | */ | |
48 | public enum HelpId | |
49 | { | |
50 | Home("home", "help.html"), | |
51 | SequenceFeatureSettings("seqfeatures.settings", | |
52 | "html/features/featuresettings.html"), | |
53 | StructureViewer("viewingpdbs", "html/features/viewingpdbs.html"), | |
54 | PdbFts("pdbfts", "html/features/pdbsequencefetcher.html#pdbfts"), | |
55 | UniprotFts("uniprotfts", | |
56 | "html/features/uniprotsequencefetcher.html#uniprotfts"); | |
57 | ||
58 | private String id; | |
59 | ||
60 | private String path; | |
61 | ||
62 | 5 | private HelpId(String hepLoc, String htmlPath) |
63 | { | |
64 | 5 | this.id = hepLoc; |
65 | 5 | this.path = htmlPath; |
66 | } | |
67 | ||
68 | 5 | String getId() |
69 | { | |
70 | 5 | return this.id; |
71 | } | |
72 | ||
73 | 0 | String getPath() |
74 | { | |
75 | 0 | return this.path; |
76 | } | |
77 | } | |
78 | ||
79 | private static HelpBroker hb; | |
80 | ||
81 | /** | |
82 | * Not instantiable | |
83 | */ | |
84 | 0 | private Help() |
85 | { | |
86 | ||
87 | } | |
88 | ||
89 | /** | |
90 | * Shows the help window, at the entry specified by the given helpId | |
91 | * | |
92 | * @param id | |
93 | * | |
94 | * @throws HelpSetException | |
95 | */ | |
96 | 0 | public static void showHelpWindow(HelpId id) throws HelpSetException |
97 | { | |
98 | 0 | if (Platform.isJS()) |
99 | { | |
100 | /* | |
101 | try | |
102 | { | |
103 | */ | |
104 | 0 | BrowserLauncher.openURL(HELP_PAGE_ROOT + id.getPath()); |
105 | /* | |
106 | } catch (IOException e) | |
107 | { | |
108 | } | |
109 | */ | |
110 | } | |
111 | else | |
112 | /** | |
113 | * Java only | |
114 | * | |
115 | * @j2sIgnore | |
116 | */ | |
117 | { | |
118 | ||
119 | 0 | ClassLoader cl = Desktop.class.getClassLoader(); |
120 | 0 | URL url = HelpSet.findHelpSet(cl, "help/help"); // $NON-NLS-$ |
121 | 0 | HelpSet hs = new HelpSet(cl, url); |
122 | ||
123 | 0 | if (hb == null) |
124 | { | |
125 | /* | |
126 | * create help broker first time (only) | |
127 | */ | |
128 | 0 | hb = hs.createHelpBroker(); |
129 | } | |
130 | ||
131 | 0 | try |
132 | { | |
133 | 0 | hb.setCurrentID(id.getId()); |
134 | } catch (BadIDException bad) | |
135 | { | |
136 | 0 | jalview.bin.Console.outPrintln("Bad help link: " + id.getId() |
137 | + ": must match a target in help.jhm"); | |
138 | 0 | throw bad; |
139 | } | |
140 | ||
141 | /* | |
142 | * set Help visible - at its current location if it is already shown, | |
143 | * else at a location as determined by the window manager | |
144 | */ | |
145 | 0 | Point p = hb.getLocation(); |
146 | 0 | hb.setLocation(p); |
147 | 0 | hb.setDisplayed(true); |
148 | } | |
149 | } | |
150 | ||
151 | /** | |
152 | * Show the Help window at the root entry | |
153 | * | |
154 | * @throws HelpSetException | |
155 | */ | |
156 | 0 | public static void showHelpWindow() throws HelpSetException |
157 | { | |
158 | 0 | showHelpWindow(HelpId.Home); |
159 | } | |
160 | } |