Bug 539919 - Package name completely focused in package creation dialog

- add new setFocus() method to StringFieldDialog that takes a
  boolean which determines if entire field will be selected by
  default or not when focused
- change setFocus() method in NewPackageWizardPage to call the
  new StringFieldDialog setFocus(boolean) method with false

Change-Id: Iedf1098c85b0d15dfb51a64c906f48980cccf015
Signed-off-by: Jeff Johnston <jjohnstn@redhat.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/dialogfields/StringDialogField.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/dialogfields/StringDialogField.java
index 0c1ba50..7359bee 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/dialogfields/StringDialogField.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/dialogfields/StringDialogField.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Red Hat Inc. - add setting to specify focus selection - Bug 539919
  *******************************************************************************/
 package org.eclipse.jdt.internal.ui.wizards.dialogfields;
 
@@ -35,12 +36,13 @@
 	private Text fTextControl;
 	private ModifyListener fModifyListener;
     private IContentAssistProcessor fContentAssistProcessor;
+    private boolean selectAllByDefault= true;
 
 	public StringDialogField() {
 		super();
 		fText= ""; //$NON-NLS-1$
 	}
-
+	
 	public void setContentAssistProcessor(IContentAssistProcessor processor) {
 	    fContentAssistProcessor= processor;
 	    if (fContentAssistProcessor != null && isOkToUse(fTextControl)) {
@@ -87,6 +89,11 @@
 
 	// ------- focus methods
 
+	public boolean setFocus(boolean selectAllByDefault) {
+		this.selectAllByDefault= selectAllByDefault;
+		return setFocus();
+	}
+	
 	/*
 	 * @see DialogField#setFocus
 	 */
@@ -94,11 +101,17 @@
 	public boolean setFocus() {
 		if (isOkToUse(fTextControl)) {
 			fTextControl.setFocus();
-			fTextControl.setSelection(0, fTextControl.getText().length());
+			if (selectAllByDefault) {
+				fTextControl.setSelection(0, fTextControl.getText().length());
+			} else {
+				// Leave selection at end of text control contents
+				// Bug 539919 - https://bugs.eclipse.org/bugs/show_bug.cgi?id=539919
+				fTextControl.setSelection(fTextControl.getText().length());
+			}
 		}
 		return true;
 	}
-
+	
 	// ------- ui creation
 
 	/**
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java
index f6b6e8b..505c7b4 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.java
@@ -134,7 +134,7 @@
 
 		PackageFieldAdapter adapter= new PackageFieldAdapter();
 
-		fPackageDialogField= new StringDialogField();
+		fPackageDialogField= new StringDialogField(); 
 		fPackageDialogField.setDialogFieldListener(adapter);
 		fPackageDialogField.setLabelText(NewWizardMessages.NewPackageWizardPage_package_label);
 
@@ -244,7 +244,7 @@
 	 * Sets the focus to the package name input field.
 	 */
 	protected void setFocus() {
-		fPackageDialogField.setFocus();
+		fPackageDialogField.setFocus(false); // choose to not select all by default - Bug 539919
 	}