aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Guzman2013-07-23 12:52:47 (EDT)
committerRoland Grunberg2013-08-07 17:15:28 (EDT)
commitaaf9a2d7db8b1a0f140de4c4fd649e97c3170368 (patch)
treeae9a2f5a979b2b76eee14dbed0e63e9c45fd573a
parent4b7ea26fdac0c08067c1c0edad29a2850bbd0664 (diff)
downloadorg.eclipse.linuxtools-aaf9a2d7db8b1a0f140de4c4fd649e97c3170368.zip
org.eclipse.linuxtools-aaf9a2d7db8b1a0f140de4c4fd649e97c3170368.tar.gz
org.eclipse.linuxtools-aaf9a2d7db8b1a0f140de4c4fd649e97c3170368.tar.bz2
RPM: create patches through hyperlink B#413508refs/changes/86/14786/15
Opening a hyperlink will now prompt a user to create the file if it doesn't already exist. Change-Id: I10a952f0a49dfc69ce57a74526f86d5228807ee0 Signed-off-by: Neil Guzman <nguzman@redhat.com> Reviewed-on: https://git.eclipse.org/r/14786 Reviewed-by: Roland Grunberg <rgrunber@redhat.com> IP-Clean: Roland Grunberg <rgrunber@redhat.com> Tested-by: Roland Grunberg <rgrunber@redhat.com>
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/META-INF/MANIFEST.MF3
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/HyperlinkAllTests.java5
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileCreateHyperlinkTest.java36
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileHyperlinkDetectorTest.java25
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/Messages.java2
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileCreateHyperlink.java122
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlink.java6
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlinkDetector.java56
-rw-r--r--rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/messages.properties4
9 files changed, 240 insertions, 19 deletions
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/META-INF/MANIFEST.MF b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/META-INF/MANIFEST.MF
index 3174f22..25dc1de 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/META-INF/MANIFEST.MF
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/META-INF/MANIFEST.MF
@@ -6,7 +6,8 @@ Bundle-Version: 1.0.0.qualifier
Fragment-Host: org.eclipse.linuxtools.rpm.ui.editor;bundle-version="0.4.3"
Bundle-Localization: plugin
Require-Bundle:
- org.junit;bundle-version="4.8.1"
+ org.junit;bundle-version="4.8.1",
+ org.eclipse.core.resources
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Vendor: %provider
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/HyperlinkAllTests.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/HyperlinkAllTests.java
index 87aed4b..c668bff 100644
--- a/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/HyperlinkAllTests.java
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/HyperlinkAllTests.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
+ * Copyright (c) 2013 Red Hat, Inc.
* 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
@@ -17,6 +17,7 @@ import org.junit.runners.Suite;
@Suite.SuiteClasses({ MailHyperlinkDetectorTest.class,
SourcesFileHyperlinkDetectorTest.class,
SpecfileElementHyperlinkDetectorTest.class,
- URLHyperlinkWithMacroDetectorTest.class })
+ URLHyperlinkWithMacroDetectorTest.class,
+ SourcesFileCreateHyperlinkTest.class })
public class HyperlinkAllTests {
}
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileCreateHyperlinkTest.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileCreateHyperlinkTest.java
new file mode 100644
index 0000000..29da52f
--- /dev/null
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor.tests/src/org/eclipse/linuxtools/rpm/ui/editor/tests/hyperlink/SourcesFileCreateHyperlinkTest.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Red Hat, Inc.
+ * 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:
+ * Red Hat - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.linuxtools.rpm.ui.editor.tests.hyperlink;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.linuxtools.internal.rpm.ui.editor.hyperlink.SourcesFileCreateHyperlink;
+import org.eclipse.linuxtools.rpm.ui.editor.tests.FileTestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SourcesFileCreateHyperlinkTest extends FileTestCase {
+ @Before
+ public void init() throws CoreException {
+ super.setUp();
+ String testText = "Patch0: test\n";
+ newFile(testText);
+ }
+
+ @Test
+ public void testCreatePatch() {
+ SourcesFileCreateHyperlink patchTest = new SourcesFileCreateHyperlink(testFile, specfile.getPatch(0).getFileName(), null);
+ assertNotNull(patchTest);
+ patchTest.open();
+ assertNotNull(testFile.getProject().findMember("test"));
+ }
+}
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 7bb7b5d..c5af06c 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
+ * Copyright (c) 2013 Red Hat, Inc.
* 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
@@ -31,13 +31,12 @@ public class SourcesFileHyperlinkDetectorTest extends FileTestCase {
@Before
public void init() throws CoreException {
super.setUp();
+ String testText = "Source0: test.zip\nPatch0: test.patch\n";
+ newFile(testText);
}
@Test
public void testDetectHyperlinks() throws PartInitException {
- String testText = "Source0: test.zip\n";
- newFile(testText);
-
IEditorPart openEditor = IDE.openEditor(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage(), testFile,
"org.eclipse.linuxtools.rpm.ui.editor.SpecfileEditor");
@@ -60,6 +59,24 @@ public class SourcesFileHyperlinkDetectorTest extends FileTestCase {
}
@Test
+ public void testDetectNoPatchInProject() 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 patch element
+ IRegion region = new Region(27, 0);
+ IHyperlink[] returned = elementDetector.detectHyperlinks(
+ editor.getSpecfileSourceViewer(), region, false);
+ // 1 = Create test.patch because test.patch doesn't exist in current project
+ assertEquals(1, returned.length);
+ }
+
+ @Test
public void testDetectHyperlinksNoRegionAndTextViewer() {
SourcesFileHyperlinkDetector elementDetector = new SourcesFileHyperlinkDetector();
elementDetector.setEditor(editor);
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 84dc322..6b68a33 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
@@ -19,8 +19,10 @@ public final class Messages extends NLS {
public static String SourcesFileDownloadHyperlink_2;
public static String SourcesFileDownloadHyperlink_3;
public static String SourcesFileDownloadHyperlink_4;
+ public static String SourcesFileDownloadHyperlink_5;
public static String SourcesFileHyperlink_0;
public static String SourcesFileHyperlink_1;
+ public static String SourcesFileHyperlink_2;
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
new file mode 100644
index 0000000..9bcfae0
--- /dev/null
+++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileCreateHyperlink.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Red Hat, Inc.
+ * 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:
+ * Red Hat - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.linuxtools.internal.rpm.ui.editor.hyperlink;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+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.CoreException;
+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.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+
+/**
+ * Create patch implementation for the source file in a srpm. Note: This
+ * implementation assumes two filesystem layouts where it looks for files. 1.
+ * Exploder srpm - Spec file and sources in one directory. 2. Rpmbuild structure
+ * - Assumes that the edited spec file is in a SPECS folder and looks for
+ * sources in ../SOURCES.
+ */
+public class SourcesFileCreateHyperlink implements IHyperlink {
+
+ String fileName;
+ IFile original;
+ IRegion region;
+
+ /**
+ * Creates hyperlink for the following file name, region and file whether
+ * the file name is found.
+ *
+ * @param original
+ * The file where the reference to this file name is.
+ * @param fileName
+ * The name of the file to open.
+ * @param region
+ * The hyperlink region.
+ */
+ public SourcesFileCreateHyperlink(IFile original, String fileName,
+ IRegion region) {
+ this.fileName = fileName;
+ this.original = original;
+ this.region = region;
+ }
+
+ /**
+ * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkRegion()
+ */
+ public IRegion getHyperlinkRegion() {
+ return region;
+ }
+
+ /**
+ * @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText()
+ */
+ public String getHyperlinkText() {
+ return Messages.SourcesFileHyperlink_2 + ' ' + fileName;
+ }
+
+ /**
+ * @see org.eclipse.jface.text.hyperlink.IHyperlink#getTypeLabel()
+ */
+ public String getTypeLabel() {
+ return null;
+ }
+
+ /**
+ * Tries to create the given file name looking for it in the current
+ * directory and in ../SOURCES.
+ *
+ * @see org.eclipse.jface.text.hyperlink.IHyperlink#open()
+ */
+ public void open() {
+ IContainer container = original.getParent();
+ IResource resourceToOpen = container.findMember(fileName);
+ final InputStream source = new ByteArrayInputStream("".getBytes()); //$NON-NLS-1$
+ 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()) {
+ try {
+ file.create(source, IResource.NONE, null);
+ } catch (CoreException e) {
+ SpecfileLog.logError(e);
+ }
+ }
+ resourceToOpen = file;
+ }
+ if (resourceToOpen != null) {
+ IWorkbenchPage page = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage();
+ try {
+ if (resourceToOpen.getType() == IResource.FILE) {
+ IDE.openEditor(page, (IFile) resourceToOpen);
+ }
+ } catch (PartInitException e) {
+ 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/SourcesFileHyperlink.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/SourcesFileHyperlink.java
index f6c8950..38251e8 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
@@ -60,7 +60,7 @@ public class SourcesFileHyperlink implements IHyperlink {
* @see org.eclipse.jface.text.hyperlink.IHyperlink#getHyperlinkText()
*/
public String getHyperlinkText() {
- return Messages.SourcesFileHyperlink_0 + fileName;
+ return Messages.SourcesFileHyperlink_0 + ' ' + fileName;
}
/**
@@ -79,7 +79,7 @@ public class SourcesFileHyperlink implements IHyperlink {
public void open() {
IContainer container = original.getParent();
IResource resourceToOpen = container.findMember(fileName);
- if (resourceToOpen == null || !resourceToOpen.exists()) {
+ if (resourceToOpen == null) {
IResource sourcesFolder = container.getParent().findMember(
"SOURCES"); //$NON-NLS-1$
resourceToOpen = ((IFolder) sourcesFolder).getFile(fileName);
@@ -95,4 +95,4 @@ public class SourcesFileHyperlink implements IHyperlink {
}
}
-}
+} \ 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 4b79bf6..68748b9 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2010 Red Hat, Inc.
+ * Copyright (c) 2013 Red Hat, Inc.
* 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
@@ -10,7 +10,11 @@
*******************************************************************************/
package org.eclipse.linuxtools.internal.rpm.ui.editor.hyperlink;
+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.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
@@ -38,6 +42,7 @@ public class SourcesFileHyperlinkDetector extends AbstractHyperlinkDetector {
*/
public IHyperlink[] detectHyperlinks(ITextViewer textViewer,
IRegion region, boolean canShowMultipleHyperlinks) {
+ boolean patchExists = false;
if (region == null || textViewer == null) {
return null;
}
@@ -71,17 +76,25 @@ public class SourcesFileHyperlinkDetector extends AbstractHyperlinkDetector {
|| line.startsWith(PATCH_IDENTIFIER)) {
int delimiterIndex = line.indexOf(':') + 1;
String fileName = line.substring(delimiterIndex).trim();
+ patchExists = patchExists(original, fileName);
if (region.getOffset() > lineInfo.getOffset()
+ line.indexOf(fileName)) {
IRegion fileNameRegion = new Region(lineInfo.getOffset()
+ line.indexOf(fileName), fileName.length());
- 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) && !patchExists) {
+ return new IHyperlink[] {
+ new SourcesFileCreateHyperlink(original, UiUtils
+ .resolveDefines(editor.getSpecfile(),
+ fileName), fileNameRegion) };
+ } else {
+ return new IHyperlink[] {
+ new SourcesFileHyperlink(original, UiUtils
+ .resolveDefines(editor.getSpecfile(),
+ fileName), fileNameRegion),
+ new SourcesFileDownloadHyperlink(original, UiUtils
+ .resolveDefines(editor.getSpecfile(),
+ fileName), fileNameRegion) };
+ }
}
}
}
@@ -92,4 +105,31 @@ public class SourcesFileHyperlinkDetector extends AbstractHyperlinkDetector {
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/messages.properties b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/hyperlink/messages.properties
index e9e3787..cd570ec 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
@@ -13,5 +13,7 @@ SourcesFileDownloadHyperlink_1=Are you sure you want to overwrite {0} ?
SourcesFileDownloadHyperlink_2=Remote resource doesn't exist
SourcesFileDownloadHyperlink_3=Resource not found
SourcesFileDownloadHyperlink_4=Downloading: {0}
-SourcesFileHyperlink_0=Open
+SourcesFileDownloadHyperlink_5=Create file
+SourcesFileHyperlink_0=Open
SourcesFileHyperlink_1=Download
+SourcesFileHyperlink_2=Create \ No newline at end of file