Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileHyperlinkDetectorTest.java49
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/Messages.java3
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileCreateHyperlink.java3
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileDownloadHyperlink.java2
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlink.java4
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlinkDetector.java81
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SpecfileElementHyperlink.java3
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/messages.properties7
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/rpm/ui/editor/utils/RPMUtils.java78
9 files changed, 163 insertions, 67 deletions
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileHyperlinkDetectorTest.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileHyperlinkDetectorTest.java
index c5af06c3e8..cf8a8c0ba9 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileHyperlinkDetectorTest.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileHyperlinkDetectorTest.java
@@ -4,7 +4,7 @@
* 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:
* Red Hat - initial API and implementation
*******************************************************************************/
@@ -31,7 +31,10 @@ public class SourcesFileHyperlinkDetectorTest extends FileTestCase {
@Before
public void init() throws CoreException {
super.setUp();
- String testText = "Source0: test.zip\nPatch0: test.patch\n";
+ String testText = "Source0: test.zip\n"
+ + "Patch0: test.patch\n"
+ + "Source1: www.example.com/test.zip\n"
+ + "Source2: http://www.example.com/test.zip\n";
newFile(testText);
}
@@ -45,20 +48,52 @@ public class SourcesFileHyperlinkDetectorTest extends FileTestCase {
editor.doRevertToSaved();
SourcesFileHyperlinkDetector elementDetector = new SourcesFileHyperlinkDetector();
elementDetector.setEditor(editor);
- // test source element
+ // test source0 element
IRegion region = new Region(10, 0);
IHyperlink[] returned = elementDetector.detectHyperlinks(
editor.getSpecfileSourceViewer(), region, false);
- assertEquals(2, returned.length);
+ // because test.zip does not exist, and is not a valid url
+ // it should not have hyperlinks
+ assertNull(returned);
+ }
+
+ @Test
+ public void testDetectHyperlinksInvalidURL() throws PartInitException {
+ IEditorPart openEditor = IDE.openEditor(PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage(), testFile,
+ "org.eclipse.linuxtools.rpm.ui.editor.SpecfileEditor");
- // test empty
- region = new Region(4, 0);
- returned = elementDetector.detectHyperlinks(
+ editor = (SpecfileEditor) openEditor;
+ editor.doRevertToSaved();
+ SourcesFileHyperlinkDetector elementDetector = new SourcesFileHyperlinkDetector();
+ elementDetector.setEditor(editor);
+ // test source1 element
+ IRegion region = new Region(47, 0);
+ IHyperlink[] returned = elementDetector.detectHyperlinks(
editor.getSpecfileSourceViewer(), region, false);
+ // because the protocol is missing, it should not show any hyperlinks
assertNull(returned);
}
@Test
+ public void testDetectHyperlinksValidURL() throws PartInitException {
+ IEditorPart openEditor = IDE.openEditor(PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage(), testFile,
+ "org.eclipse.linuxtools.rpm.ui.editor.SpecfileEditor");
+
+ editor = (SpecfileEditor) openEditor;
+ editor.doRevertToSaved();
+ SourcesFileHyperlinkDetector elementDetector = new SourcesFileHyperlinkDetector();
+ elementDetector.setEditor(editor);
+ // test source2 element
+ IRegion region = new Region(82, 0);
+ IHyperlink[] returned = elementDetector.detectHyperlinks(
+ editor.getSpecfileSourceViewer(), region, false);
+ // 1 = Download from URL (Open in browser should not show up because URLHyperlinkWithMacroDetector detects that)
+ assertEquals(1, returned.length);
+ }
+
+ @Test
public void testDetectNoPatchInProject() throws PartInitException {
IEditorPart openEditor = IDE.openEditor(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage(), testFile,
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/Messages.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/Messages.java
index dd0838ff96..3e0789f309 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/Messages.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/Messages.java
@@ -4,7 +4,7 @@
* 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:
* Red Hat - initial API and implementation
*******************************************************************************/
@@ -23,6 +23,7 @@ public final class Messages extends NLS {
public static String SourcesFileHyperlink_0;
public static String SourcesFileHyperlink_1;
public static String SourcesFileHyperlink_2;
+ public static String SourcesFileHyperlink_3;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileCreateHyperlink.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileCreateHyperlink.java
index 2ccf5718e4..47a2d709b3 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileCreateHyperlink.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileCreateHyperlink.java
@@ -23,6 +23,7 @@ import org.eclipse.core.runtime.Path;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.linuxtools.internal.rpm.ui.editor.SpecfileLog;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
@@ -72,7 +73,7 @@ public class SourcesFileCreateHyperlink implements IHyperlink {
*/
@Override
public String getHyperlinkText() {
- return Messages.SourcesFileHyperlink_2 + ' ' + fileName;
+ return NLS.bind(Messages.SourcesFileHyperlink_2, fileName);
}
/**
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileDownloadHyperlink.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileDownloadHyperlink.java
index 83b962358e..bf7cd3a64a 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileDownloadHyperlink.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileDownloadHyperlink.java
@@ -62,7 +62,7 @@ public class SourcesFileDownloadHyperlink implements IHyperlink {
*/
@Override
public String getHyperlinkText() {
- return Messages.SourcesFileHyperlink_1 + ' ' + fileName;
+ return NLS.bind(Messages.SourcesFileHyperlink_1, fileName);
}
/**
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlink.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlink.java
index 2b6ce9e03f..b627500678 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlink.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlink.java
@@ -17,6 +17,7 @@ import org.eclipse.core.resources.IResource;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.linuxtools.internal.rpm.ui.editor.SpecfileLog;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
@@ -62,7 +63,7 @@ public class SourcesFileHyperlink implements IHyperlink {
*/
@Override
public String getHyperlinkText() {
- return Messages.SourcesFileHyperlink_0 + ' ' + fileName;
+ return NLS.bind(Messages.SourcesFileHyperlink_0, fileName);
}
/**
@@ -98,5 +99,4 @@ public class SourcesFileHyperlink implements IHyperlink {
SpecfileLog.logError(e);
}
}
-
} \ No newline at end of file
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlinkDetector.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlinkDetector.java
index 152da2c84f..56fffccca6 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlinkDetector.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlinkDetector.java
@@ -7,15 +7,13 @@
*
* Contributors:
* Red Hat - initial API and implementation
- * Neil Guzman - create patches hyperlink (B#413508)
*******************************************************************************/
package org.eclipse.linuxtools.internal.rpm.ui.editor.hyperlink;
-import org.eclipse.core.resources.IContainer;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.Path;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
@@ -25,6 +23,7 @@ import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.linuxtools.internal.rpm.ui.editor.UiUtils;
import org.eclipse.linuxtools.rpm.ui.editor.SpecfileEditor;
+import org.eclipse.linuxtools.rpm.ui.editor.utils.RPMUtils;
import org.eclipse.ui.part.FileEditorInput;
/**
@@ -36,6 +35,7 @@ public class SourcesFileHyperlinkDetector extends AbstractHyperlinkDetector {
private SpecfileEditor editor;
private static final String PATCH_IDENTIFIER = "Patch"; //$NON-NLS-1$
private static final String SOURCE_IDENTIFIER = "Source"; //$NON-NLS-1$
+ private static final String URL_IDENTIFIER = "URL"; //$NON-NLS-1$
/**
* @see org.eclipse.jface.text.hyperlink.IHyperlinkDetector#detectHyperlinks(org.eclipse.jface.text.ITextViewer,
@@ -44,7 +44,6 @@ public class SourcesFileHyperlinkDetector extends AbstractHyperlinkDetector {
@Override
public IHyperlink[] detectHyperlinks(ITextViewer textViewer,
IRegion region, boolean canShowMultipleHyperlinks) {
- boolean patchExists = false;
if (region == null || textViewer == null) {
return null;
}
@@ -71,67 +70,47 @@ public class SourcesFileHyperlinkDetector extends AbstractHyperlinkDetector {
} catch (BadLocationException ex) {
return null;
}
+ List<IHyperlink> tempHList = new ArrayList<IHyperlink>();
+ // !! it feels like there is duplicate code, fix that !!
if (editor.getEditorInput() instanceof FileEditorInput) {
IFile original = ((FileEditorInput) editor.getEditorInput())
.getFile();
if (line.startsWith(SOURCE_IDENTIFIER)
- || line.startsWith(PATCH_IDENTIFIER)) {
+ || line.startsWith(PATCH_IDENTIFIER)
+ || line.startsWith(URL_IDENTIFIER)) {
int delimiterIndex = line.indexOf(':') + 1;
- String fileName = line.substring(delimiterIndex).trim();
- patchExists = patchExists(original, fileName);
+ String identifierValue = line.substring(delimiterIndex).trim();
+ boolean validURL = RPMUtils.isValidUrl(identifierValue);
+ // if valid URL, get its file name; else make file name the original identifier value
+ String fileName = validURL ? RPMUtils.getURLFilename(identifierValue) : identifierValue;
+ String resolvedFileName = UiUtils.resolveDefines(editor.getSpecfile(), fileName);
+ boolean fileExists = RPMUtils.fileExistsInSources(original, resolvedFileName);
if (region.getOffset() > lineInfo.getOffset()
- + line.indexOf(fileName)) {
+ + line.indexOf(identifierValue)) {
IRegion fileNameRegion = new Region(lineInfo.getOffset()
- + line.indexOf(fileName), fileName.length());
- if (line.startsWith(PATCH_IDENTIFIER) && !patchExists) {
- return new IHyperlink[] {
- new SourcesFileCreateHyperlink(original, UiUtils
- .resolveDefines(editor.getSpecfile(),
- fileName), fileNameRegion) };
+ + line.indexOf(identifierValue), identifierValue.length());
+ if (fileExists) {
+ // add "Open" file option
+ tempHList.add(new SourcesFileHyperlink(original, resolvedFileName, fileNameRegion));
} else {
- return new IHyperlink[] {
- new SourcesFileHyperlink(original, UiUtils
- .resolveDefines(editor.getSpecfile(),
- fileName), fileNameRegion),
- new SourcesFileDownloadHyperlink(original, UiUtils
- .resolveDefines(editor.getSpecfile(),
- fileName), fileNameRegion) };
+ if (line.startsWith(PATCH_IDENTIFIER) && !identifierValue.endsWith("/")) { //$NON-NLS-1$
+ // add "Create" patch option using filename
+ tempHList.add(new SourcesFileCreateHyperlink(original, resolvedFileName, fileNameRegion));
+ }
+ }
+ // if valid URL and has a valid file
+ if (validURL && !identifierValue.endsWith("/")) { //$NON-NLS-1$
+ // add "Download" option
+ tempHList.add(new SourcesFileDownloadHyperlink(original, UiUtils.resolveDefines(editor.getSpecfile(), identifierValue), fileNameRegion));
}
}
}
}
- return null;
+ return tempHList.isEmpty() ? null : tempHList.toArray(new IHyperlink[tempHList.size()]);
}
public void setEditor(SpecfileEditor editor) {
this.editor = editor;
}
-
- /**
- * Helper method to check if the patch file exists within the
- * current project.
- *
- * @return True if the file exists
- */
- private boolean patchExists(IFile original, String patchName) {
- boolean rc = true;
- IContainer container = original.getParent();
- IResource resourceToOpen = container.findMember(patchName);
- IFile file = null;
-
- if (resourceToOpen == null) {
- IResource sourcesFolder = container.getProject().findMember(
- "SOURCES"); //$NON-NLS-1$
- file = container.getFile(new Path(patchName));
- if (sourcesFolder != null) {
- file = ((IFolder) sourcesFolder).getFile(new Path(patchName));
- }
- if (!file.exists()) {
- rc = false;
- }
- }
-
- return rc;
- }
}
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SpecfileElementHyperlink.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SpecfileElementHyperlink.java
index 7471fa5441..fe920f6f10 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SpecfileElementHyperlink.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SpecfileElementHyperlink.java
@@ -19,6 +19,7 @@ import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.linuxtools.internal.rpm.ui.editor.SpecfileLog;
import org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileElement;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
@@ -47,7 +48,7 @@ public class SpecfileElementHyperlink implements IHyperlink {
@Override
public String getHyperlinkText() {
- return null;
+ return NLS.bind(Messages.SourcesFileHyperlink_3, source.getName());
}
@Override
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/messages.properties b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/messages.properties
index c15aab737d..a82d475aab 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/messages.properties
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/messages.properties
@@ -14,6 +14,7 @@ SourcesFileDownloadHyperlink_2=Remote resource doesn't exist
SourcesFileDownloadHyperlink_3=Resource not found
SourcesFileDownloadHyperlink_4=Downloading: {0}
SourcesFileDownloadHyperlink_5=Create file
-SourcesFileHyperlink_0=Open
-SourcesFileHyperlink_1=Download
-SourcesFileHyperlink_2=Create \ No newline at end of file
+SourcesFileHyperlink_0=Open {0}
+SourcesFileHyperlink_1=Download {0}
+SourcesFileHyperlink_2=Create {0}
+SourcesFileHyperlink_3=Go to {0}
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/rpm/ui/editor/utils/RPMUtils.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/rpm/ui/editor/utils/RPMUtils.java
index 8585f08fcd..e0b7c3efa9 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/rpm/ui/editor/utils/RPMUtils.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/rpm/ui/editor/utils/RPMUtils.java
@@ -10,7 +10,16 @@
*******************************************************************************/
package org.eclipse.linuxtools.rpm.ui.editor.utils;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.linuxtools.internal.rpm.ui.editor.SpecfileLog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
@@ -41,4 +50,73 @@ public class RPMUtils {
}
});
}
+
+ /**
+ * Check if the line passed in is a valid URL.
+ *
+ * @param line The line to check if is a valid URL.
+ * @return True if valid URL, false otherwise.
+ */
+ public static boolean isValidUrl(String line) {
+ try {
+ new URL(line);
+ return true;
+ } catch (MalformedURLException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Get the file from the URL if any.
+ *
+ * @param url The URL to get the file from.
+ * @return Return the filename.
+ */
+ public static String getURLFilename(String url) {
+ String rc = ""; //$NON-NLS-1$
+
+ try {
+ // URL#getPath will ignore any queries after the filename
+ String fileName = new URL(url).getPath();
+ int lastSegment = fileName.lastIndexOf("/") + 1; //$NON-NLS-1$
+ rc = fileName.substring(lastSegment).trim();
+ } catch (IndexOutOfBoundsException e) {
+ SpecfileLog.logError(e);
+ } catch (MalformedURLException e) {
+ SpecfileLog.logError(e);
+ }
+
+ return rc;
+ }
+
+ /**
+ * Check if the file exists within the current project.
+ * It will first check the root of the project and then the sources. If the
+ * file cannot be found in either, return false.
+ * An empty file name would immediately return false.
+ *
+ * @return True if the file exists.
+ */
+ public static boolean fileExistsInSources(IFile original, String fileName) {
+ if (fileName.trim().isEmpty()) {
+ return false;
+ }
+ IContainer container = original.getParent();
+ IResource resourceToOpen = container.findMember(fileName);
+ IFile file = null;
+
+ if (resourceToOpen == null) {
+ IResource sourcesFolder = container.getProject().findMember(
+ "SOURCES"); //$NON-NLS-1$
+ file = container.getFile(new Path(fileName));
+ if (sourcesFolder != null) {
+ file = ((IFolder) sourcesFolder).getFile(new Path(fileName));
+ }
+ if (!file.exists()) {
+ return false;
+ }
+ }
+
+ return true;
+ }
}

Back to the top