gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.swing / org.gvsig.scripting.swing.impl / src / main / java / javax / help / ScriptingHelpModel.java @ 478
History | View | Annotate | Download (2.31 KB)
1 |
|
---|---|
2 |
package javax.help; |
3 |
|
4 |
import java.io.File; |
5 |
import java.lang.reflect.Field; |
6 |
import java.net.URL; |
7 |
import javax.help.event.HelpModelEvent; |
8 |
import javax.help.event.HelpModelListener; |
9 |
import org.apache.commons.io.FilenameUtils; |
10 |
import org.gvsig.scripting.ScriptingHelpManager; |
11 |
import org.slf4j.Logger; |
12 |
import org.slf4j.LoggerFactory; |
13 |
|
14 |
|
15 |
public class ScriptingHelpModel extends DefaultHelpModel { |
16 |
|
17 |
private static final Logger logger = LoggerFactory.getLogger(ScriptingHelpModel.class); |
18 |
|
19 |
private final ScriptingHelpManager helpManager; |
20 |
private Field currentURLField = null; |
21 |
|
22 |
public ScriptingHelpModel(HelpSet hs, ScriptingHelpManager helpManager) {
|
23 |
super(hs);
|
24 |
this.helpManager = helpManager;
|
25 |
} |
26 |
|
27 |
@Override
|
28 |
protected void fireIDChanged(Object source, Map.ID id, URL url, String historyName, JHelpNavigator navigator) { |
29 |
if (url != null && "file".equalsIgnoreCase(url.getProtocol())) { |
30 |
if (id == null) { |
31 |
url = helpManager.makeURL(null, url);
|
32 |
this.setTheCurrentURL(url);
|
33 |
} else {
|
34 |
URL baseUrl = id.getHelpSet().getHelpSetURL();
|
35 |
if ("file".equalsIgnoreCase(baseUrl.getProtocol()) ) { |
36 |
url = helpManager.makeURL( |
37 |
new File(FilenameUtils.getFullPath(baseUrl.getPath())), |
38 |
url |
39 |
); |
40 |
this.setTheCurrentURL(url);
|
41 |
} |
42 |
} |
43 |
} |
44 |
|
45 |
Object[] listeners = listenerList.getListenerList(); |
46 |
HelpModelEvent e = null;
|
47 |
|
48 |
for (int i = listeners.length - 2; i >= 0; i -= 2) { |
49 |
if (listeners[i] == HelpModelListener.class) {
|
50 |
if (e == null) { |
51 |
e = new HelpModelEvent(source, id, url, historyName, navigator);
|
52 |
} |
53 |
((HelpModelListener) listeners[i + 1]).idChanged(e);
|
54 |
} |
55 |
} |
56 |
} |
57 |
|
58 |
private void setTheCurrentURL(URL url) { |
59 |
|
60 |
try {
|
61 |
if( this.currentURLField==null ) { |
62 |
this.currentURLField = DefaultHelpModel.class.getDeclaredField("currentURL"); |
63 |
this.currentURLField.setAccessible(true); |
64 |
} |
65 |
this.currentURLField.set(this, url); |
66 |
} catch (Exception ex) { |
67 |
logger.warn("Can't change currentURL", ex);
|
68 |
} |
69 |
} |
70 |
} |