Fixed bug 341977: [DBCS 3.7] Open from clipboard does not work for DBCS.
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java
index 3ae2da7..63846fb 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java
@@ -25,9 +25,11 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.Path;
 
+import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
 
+import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IPackageFragment;
 import org.eclipse.jdt.core.IPackageFragmentRoot;
@@ -140,43 +142,25 @@
 		return matches;
 	}
 
-	// type tests
-	private void setupTypeTest() throws JavaModelException {
-		IPackageFragment pack = fSourceFolder.createPackageFragment("p", false, null);
-		StringBuffer buf = new StringBuffer();
-		buf.append("package p;\n");
-		buf.append("public class OpenFromClipboardTests {\n");
-		buf.append("}\n");
-		pack.createCompilationUnit("OpenFromClipboardTests.java", buf.toString(), false, null);
-	}
-
-	private void setupTypeWithDollarSignTest() throws JavaModelException {
-		IPackageFragment pack = fSourceFolder.createPackageFragment("p", false, null);
-		StringBuffer buf = new StringBuffer();
-		buf.append("package p;\n");
-		buf.append("public class OpenFromClipboard$Tests {\n");
-		buf.append("	void getMatching$Pattern(){\n");
-		buf.append("	}\n");
-		buf.append("}\n");
-		pack.createCompilationUnit("OpenFromClipboard$Tests.java", buf.toString(), false, null);
-	}
-
-	private void setupTypeWithDBCSTest() throws JavaModelException {
+	private void setupTypeTest(String typeName) throws CoreException {
 		IPackageFragment pack= fSourceFolder.createPackageFragment("p", false, null);
+		((IContainer)pack.getUnderlyingResource()).setDefaultCharset("UTF-8", null);
 		StringBuffer buf= new StringBuffer();
 		buf.append("package p;\n");
-		buf.append("public class 新規クラス {\n");
+		buf.append("public class " + typeName + " {\n");
 		buf.append("	void getMatching$Pattern(){\n");
 		buf.append("	}\n");
 		buf.append("}\n");
-		pack.createCompilationUnit("新規クラス.java", buf.toString(), false, null);
+		ICompilationUnit x= pack.createCompilationUnit(typeName + ".java", buf.toString(), false, null);
+		x.exists();
+
 	}
 
 	public void testClassFileLine_1() throws Exception {
 		String s = "OpenFromClipboardTests.java:100";
 		assertEquals(JAVA_FILE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -185,7 +169,7 @@
 		String s = "OpenFromClipboardTests.java : 100";
 		assertEquals(JAVA_FILE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -194,16 +178,30 @@
 		String s = "OpenFromClipboard$Tests.java:100";
 		assertEquals(JAVA_FILE_LINE, getMatachingPattern(s));
 
-		setupTypeWithDollarSignTest();
+		setupTypeTest("OpenFromClipboard$Tests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
 
-	public void _testDBCS() throws Exception {
-		String s= "新規クラス.java:100";
+	public void testDBCS() throws Exception {
+		String typeName= "\u65b0\u898f\u30af\u30e9\u30b9";
+		String s= typeName + ".java:100";
+
 		assertEquals(JAVA_FILE_LINE, getMatachingPattern(s));
 
-		setupTypeWithDBCSTest();
+		setupTypeTest(typeName);
+
+		List matches= getJavaElementMatches(s);
+		assertEquals(1, matches.size());
+	}
+
+	public void testUmlaut() throws Exception {
+		String typeName= "\u0042\u006c\u00f6\u0064";
+		String s= typeName + ".java:100";
+
+		assertEquals(JAVA_FILE_LINE, getMatachingPattern(s));
+
+		setupTypeTest(typeName);
 
 		List matches= getJavaElementMatches(s);
 		assertEquals(1, matches.size());
@@ -213,7 +211,7 @@
 		String s = "OpenFromClipboardTests.java";
 		assertEquals(JAVA_FILE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -222,7 +220,7 @@
 		String s = "OpenFromClipboardTests:100";
 		assertEquals(TYPE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -231,7 +229,7 @@
 		String s = "OpenFromClipboardTests : 100";
 		assertEquals(TYPE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -241,7 +239,7 @@
 		String s = "(OpenFromClipboardTests.java:121)";
 		assertEquals(STACK_TRACE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -250,7 +248,7 @@
 		String s = "( OpenFromClipboardTests.java : 121 )";
 		assertEquals(STACK_TRACE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -259,7 +257,7 @@
 		String s = "at p.OpenFromClipboardTests.getMatchingPattern(OpenFromClipboardTests.java:121)";
 		assertEquals(STACK_TRACE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -268,7 +266,7 @@
 		String s = "OpenFromClipboardTests.getMatchingPattern(OpenFromClipboardTests.java:121)";
 		assertEquals(STACK_TRACE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
@@ -277,24 +275,24 @@
 		String s = "OpenFromClipboardTests.getMatchingPattern ( OpenFromClipboardTests.java : 121 )";
 		assertEquals(STACK_TRACE_LINE, getMatachingPattern(s));
 
-		setupTypeTest();
+		setupTypeTest("OpenFromClipboardTests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
 
 	public void testStackTraceLine_6() throws Exception {
 		String s = "at p.OpenFromClipboard$Tests.getMatching$Pattern(OpenFromClipboardTests.java:121)";
-		assertEquals(STACK_TRACE_LINE, getMatachingPattern(s));
+		setupTypeTest("OpenFromClipboardTests");
 
-		setupTypeWithDollarSignTest();
+		setupTypeTest("OpenFromClipboard$Tests");
 		List matches = getJavaElementMatches(s);
 		assertEquals(1, matches.size());
 	}
 
 	// method tests
 	private void setupMethodTest() throws JavaModelException {
-		IPackageFragment pack = fSourceFolder.createPackageFragment("p", false, null);
-		StringBuffer buf = new StringBuffer();
+		IPackageFragment pack= fSourceFolder.createPackageFragment("p", false, null);
+		StringBuffer buf= new StringBuffer();
 		buf.append("package p;\n");
 		buf.append("public class OpenFromClipboardTests {\n");
 		buf.append("	private void invokeOpenFromClipboardCommand() {\n");
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
index 9cc3a66..1b6ebf8 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
@@ -82,7 +82,7 @@
 	/**
 	 * Pattern to match a simple name e.g. <code>OpenFromClipboardAction</code>
 	 */
-	private static final String SIMPLE_NAME_PATTERN= "[\\p{Lo}\\w\\$]+"; //$NON-NLS-1$
+	private static final String SIMPLE_NAME_PATTERN= "\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*"; //$NON-NLS-1$
 
 	/**
 	 * Pattern to match a qualified name e.g.