/** * Returns the link target location entered by the user. * * @return the link target location entered by the user. null if the user chose not to create a * link. */ public URI getLinkTargetURI() { if (!createLink) { return null; } // resolve path variable if we have a relative path if (!linkTarget.startsWith("/")) { // $NON-NLS-1$ IPathVariableManager pathVariableManager = RemoteResourcesPlugin.getWorkspace().getPathVariableManager(); try { URI path = new URI(linkTarget.replace(java.io.File.separatorChar, '/')); URI resolved = pathVariableManager.resolveURI(path); if (path != resolved) { // we know this is a path variable, but return unresolved // path so resource will be created with variable intact return path; } } catch (URISyntaxException e) { // link target is not a valid URI. Fall through to handle this // below } } FileSystemConfiguration configuration = getSelectedConfiguration(); if (configuration == null) { return URIUtil.toURI(linkTarget); } // validate non-local file system location return configuration.getContributor().getURI(linkTarget); }
/** * Tries to resolve the value entered in the link target field as a variable, if the value is a * relative path. Displays the resolved value if the entered value is a variable. */ private void resolveVariable() { IPathVariableManager pathVariableManager = RemoteResourcesPlugin.getWorkspace().getPathVariableManager(); IPath path = new Path(linkTarget); IPath resolvedPath = pathVariableManager.resolvePath(path); if (path.equals(resolvedPath)) { resolvedPathLabelText.setVisible(false); resolvedPathLabelData.setVisible(false); } else { resolvedPathLabelText.setVisible(true); resolvedPathLabelData.setVisible(true); } resolvedPathLabelData.setText(resolvedPath.toOSString()); }