8000 Fix the "Open Help for Class" commands · scijava/script-editor@a05d7da · GitHub
[go: up one dir, main page]

Skip to content

Commit a05d7da

Browse files
committed
Fix the "Open Help for Class" commands
1 parent 4d15013 commit a05d7da

File tree

1 file changed

+59
-4
lines changed

1 file changed

+59
-4
lines changed

src/main/java/org/scijava/ui/swing/script/TextEditor.java

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@
162162
import org.scijava.ui.swing.script.commands.KillScript;
163163
import org.scijava.util.FileUtils;
164164
import org.scijava.util.MiscUtils;
165+
import org.scijava.util.POM;
166+
import org.scijava.util.Types;
165167
import org.scijava.widget.FileWidget;
166168

167169
/**
@@ -2598,10 +2600,63 @@ public void openHelp(final String className) {
25982600
* @param className
25992601
* @param withFrames
26002602
*/
2601-
public void openHelp(final String className, final boolean withFrames) {
2602-
if (className == null) {
2603-
// FIXME: This cannot be right.
2604-
getSelectedClassNameOrAsk();
2603+
public void openHelp(String className, final boolean withFrames) {
2604+
if (className == null) className = getSelectedClassNameOrAsk();
2605+
if (className == null) return;
2606+
final Class<?> c = Types.load(className, false);
2607+
2608+
final String path = (withFrames ? "index.html?" : "") + //
2609+
className.replace('.', '/') + ".html";
2610+
2611+
final String url;
2612+
2613+
if (className.startsWith("java.") || className.startsWith("javax.")) {
2614+
// Core Java class -- use javadoc.scijava.org/Java<#> link.
2615+
final String javaVersion = System.getProperty("java.version");
2616+
final String majorVersion;
2617+
if (javaVersion.startsWith("1.")) {
2618+
majorVersion = javaVersion.substring(2, javaVersion.indexOf('.', 2));
2619+
}
2620+
else majorVersion = javaVersion.substring(0, javaVersion.indexOf('.'));
2621+
url = "https://javadoc.scijava.org/Java" + majorVersion + "/" + path;
2622+
}
2623+
else {
2624+
// Third party library -- look for a Maven POM identifying it.
2625+
final POM pom = POM.getPOM(c);
2626+
if (pom == null) {
2627+
throw new IllegalArgumentException(//
2628+
"Unknown origin for class " + className);
2629+
}
2630+
final String releaseProfiles = pom.cdata("//properties/releaseProfiles");
2631+
final boolean scijavaRepo = "deploy-to-scijava".equals(releaseProfiles);
2632+
if (scijavaRepo) {
2633+
// Use javadoc.scijava.org -- try to figure out which project.
2634+
// Maybe some day, we can bake this information into the POM.
2635+
final String project;
2636+
final String g = pom.getGroupId();
2637+
if ("net.imagej".equals(g)) {
2638+
project = "ij".equals(pom.getArtifactId()) ? "ImageJ1" : "ImageJ";
2639+
}
2640+
else if ("io.scif".equals(g)) project = "SCIFIO";
2641+
else if ("net.imglib2".equals(g)) project = "ImgLib2";
2642+
else if ("org.bonej".equals(g)) project = "BoneJ";
2643+
else if ("org.scijava".equals(g)) project = "SciJava";
2644+
else if ("sc.fiji".equals(g)) project = "Fiji";
2645+
else project = "Java";
2646+
url = "https://javadoc.scijava.org/" + project + "/" + path;
2647+
}
2648+
else {
2649+
// Assume Maven Central -- use javadoc.io.
2650+
url = "https://javadoc.io/static/" + pom.getGroupId() + "/" + //
2651+
pom.getArtifactId() + "/" + pom.getVersion() + "/" + path;
2652+
}
2653+
}
2654+
2655+
try {
2656+
platformService.open(new URL(url));
2657+
}
2658+
catch (final Throwable e) {
2659+
handleException(e);
26052660
}
26062661
}
26072662

0 commit comments

Comments
 (0)
0