Bug 183596 BiDi3.3: Cannot open a workspace with an Arabic name
Build ID: I20070418-1012 Steps To Reproduce: 1. Install files for Bidi languages to your system (From Settings-->Control Panel-->Regional and Language Options-->Languages, select "Install files for complex script and right-to-left languages) 2. on the same page, under "Text services and input languages" click "Details" and add "Arabic (Egypt)" 3. Also from Regional and Language Options, go to "Regional Options" and set the locale to Arabic (Egypt) 4. Create a new folder on you system and give it any Arabic name 5. Launce eclipse and select the newly-created folder as your workspace. Expected Result: eclipse should start with the new workspace and no problem should occur. Actual Result: eclipse fails to start when the workspace has an Arabic name or Arabic path giving the following error message "Workspace in use or cannot be created". More information: This error did not occur in earlier builds.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/ChooseWorkspaceDialog.java
});
    }
    /**
     * Return a string containing the path that is closest to the current
     * selection in the text widget. This starts with the current value and
     * works toward the root until there is a directory for which File.exists
     * returns true. Return the current working dir if the text box does not
     * contain a valid path.
     * 
     * @return closest parent that exists or an empty string
     */
    private String getInitialBrowsePath() {
        File dir = new File(getWorkspaceLocation());
        while (dir != null && !dir.exists()) {
			dir = dir.getParentFile();
		}
        return dir != null ? dir.getAbsolutePath() : System
                .getProperty("user.dir"); 
    }
	/*
	 * see org.eclipse.jface.Window.getInitialLocation() 
	 */
	protected Point getInitialLocation(Point initialSize) {
		Composite parent = getShell().getParent();
		
		if (!centerOnMonitor || parent == null) {
			return super.getInitialLocation(initialSize);
		}
		Monitor monitor = parent.getMonitor();
		Rectangle monitorBounds = monitor.getClientArea();