/******************************************************************************* * Copyright (c) 2014, 2015 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.launching; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.launching.ILibraryLocationResolver; public class JavaFxLibraryResolver implements ILibraryLocationResolver { public static final String JFXRT_JAR = "jfxrt.jar"; //$NON-NLS-1$ private static final String JAVAFX_SRC_ZIP = "javafx-src.zip"; //$NON-NLS-1$ private static final String JAVAFX_8_JAVADOC = "http://docs.oracle.com/javase/8/javafx/api/"; //$NON-NLS-1$ private static boolean isJavaFx(IPath libraryPath) { return JFXRT_JAR.equals(libraryPath.lastSegment()); } @Override public IPath getPackageRoot(IPath libraryPath) { return Path.EMPTY; } @Override public IPath getSourcePath(IPath libraryPath) { if (isJavaFx(libraryPath)) { File parent = libraryPath.toFile().getParentFile(); while (parent != null) { File parentsrc = new File(parent, JAVAFX_SRC_ZIP); if (parentsrc.isFile()) { return new Path(parentsrc.getPath()); } parent = parent.getParentFile(); } } return Path.EMPTY; } @Override public URL getJavadocLocation(IPath libraryPath) { if (isJavaFx(libraryPath)) { /* * TODO: We don't know if JavaSE-1.9 will ship JavaFX in the ext folder as well. If yes, then we have to use something like * JavaRuntime#getVMInstall(IPath) and IVMInstall2#getJavaVersion() to determine the right Javadoc URL. */ try { return new URL(JAVAFX_8_JAVADOC); } catch (MalformedURLException e) { LaunchingPlugin.log(e); } } return null; } @Override public URL getIndexLocation(IPath libraryPath) { return null; } }