[143517] WSDL Editor: add checking to ensure user enters an 'unused' name when creating a new type or element.
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewComponentDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewComponentDialog.java
index 8dafd39..3190691 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewComponentDialog.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewComponentDialog.java
@@ -145,7 +145,7 @@
   	Iterator iterator = usedNames.iterator();
   	while (iterator.hasNext()) {
   		if (name.equalsIgnoreCase((String) iterator.next())) {
-  			return "_UI_LABEL_WARNING_DUPLICATE_NAME_EXISTS"; //$NON-NLS-1$
+  			return org.eclipse.wst.xsd.ui.internal.common.util.Messages._UI_ERROR_NAME_ALREADY_USED; //$NON-NLS-1$
   		}
   	}
   	
@@ -165,7 +165,7 @@
       errorMessage = ""; //$NON-NLS-1$
     }  
     errorMessageLabel.setText(errorMessage != null ? errorMessage : ""); //$NON-NLS-1$
-//    okButton.setEnabled(errorMessage == null);
+    okButton.setEnabled(errorMessage == null);
   }
  
   protected void buttonPressed(int buttonId) 
@@ -181,5 +181,13 @@
   {
     return name;
   }
+  
+  public void setUsedNames(List usedNames) {
+	  this.usedNames = usedNames;
+  }
+  
+  public void setDefaultName(String name) {
+	  this.name = name;
+  }
 }
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewElementDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewElementDialog.java
index d923235..2a0619b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewElementDialog.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewElementDialog.java
@@ -10,15 +10,23 @@
  *******************************************************************************/
 package org.eclipse.wst.xsd.ui.internal.dialogs;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.ui.internal.common.util.XSDCommonUIUtils;
 import org.eclipse.wst.xsd.ui.internal.editor.Messages;
 import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
 
 public class NewElementDialog extends NewComponentDialog implements IComponentDialog
 {
+	  protected XSDSchema schema;
 	  protected Object setObject;
 	  protected int typeKind;
 	  protected Object selection;
@@ -27,9 +35,24 @@
 	  {
 	    super(Display.getCurrent().getActiveShell(), Messages._UI_LABEL_NEW_ELEMENT, "NewElement");     //$NON-NLS-1$
 	  }
+
+	  public NewElementDialog(XSDSchema schema)
+	  {
+	    super(Display.getCurrent().getActiveShell(), Messages._UI_LABEL_NEW_ELEMENT, "NewElement");     //$NON-NLS-1$
+	    this.schema = schema;
+	  }
+	  
+	  private void setup() {
+		  if (schema != null) {
+			  List usedNames = getUsedElementNames();
+			  setUsedNames(usedNames);
+			  setDefaultName(XSDCommonUIUtils.createUniqueElementName("NewElement", schema.getElementDeclarations()));
+		  }
+	  }
 	  
 	  public int createAndOpen()
 	  {
+		setup();
 	    int returnCode = super.createAndOpen();
 	    if (returnCode == 0)
 	    {
@@ -53,4 +76,17 @@
 	  {
 	    // TODO Auto-generated method stub
 	  }
+	  
+	  private List getUsedElementNames() {
+		  List usedNames = new ArrayList();		  
+		  if (schema != null ) {
+			  List elementsList = schema.getElementDeclarations();
+			  Iterator elements = elementsList.iterator(); 
+			  while (elements.hasNext()) {
+				  usedNames.add(((XSDElementDeclaration) elements.next()).getName());
+			  }
+		  }
+		  
+		  return usedNames;
+	  }
 	}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewTypeDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewTypeDialog.java
index 32b4cef..2c303bb 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewTypeDialog.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/NewTypeDialog.java
@@ -11,6 +11,9 @@
 package org.eclipse.wst.xsd.ui.internal.dialogs;
 
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.emf.common.notify.Adapter;
@@ -24,11 +27,15 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.ui.internal.common.util.XSDCommonUIUtils;
 import org.eclipse.wst.xsd.ui.internal.editor.Messages;
 import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
 
 public class NewTypeDialog extends NewComponentDialog implements IComponentDialog
 {
+  protected XSDSchema schema;
   protected static int SIMPLE_TYPE = 0;
   protected static int COMPLEX_TYPE = 1;
   protected Object setObject;
@@ -40,9 +47,24 @@
   {
     super(Display.getCurrent().getActiveShell(), Messages._UI_LABEL_NEW_TYPE, "NewType");     //$NON-NLS-1$
   }
+
+  public NewTypeDialog(XSDSchema schema)
+  {
+    super(Display.getCurrent().getActiveShell(), Messages._UI_LABEL_NEW_TYPE, "NewType");     //$NON-NLS-1$
+    this.schema = schema;
+  }
+  
+  private void setup() {
+	  if (schema != null) {
+		  List usedNames = getUsedTypeNames();
+		  setUsedNames(usedNames);
+		  setDefaultName(XSDCommonUIUtils.createUniqueElementName("NewType", schema.getTypeDefinitions()));
+	  }
+  }
   
   public int createAndOpen()
   {
+	setup();
     int returnCode = super.createAndOpen();
     if (returnCode == 0)
     {
@@ -128,4 +150,18 @@
   {
     this.allowComplexType= value;
   }
+  
+  private List getUsedTypeNames() {
+	  List usedNames = new ArrayList();
+
+	  if (schema != null) {
+		  List typesList = schema.getTypeDefinitions();
+		  Iterator types = typesList.iterator();
+		  while (types.hasNext()) {
+			  usedNames.add(((XSDTypeDefinition) types.next()).getName());
+		  }
+	  }
+	  
+	  return usedNames;
+  }
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDElementReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDElementReferenceEditManager.java
index 8ebc015..0f6904d 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDElementReferenceEditManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDElementReferenceEditManager.java
@@ -64,7 +64,12 @@
 
   public IComponentDialog getNewDialog()
   {
-    return new NewElementDialog();
+	  if (schemas.length > 0) {
+		  return new NewElementDialog(schemas[0]);
+	  }
+	  else {
+		  return new NewElementDialog();
+	  }
   }
 
   public ComponentSpecification[] getQuickPicks()
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTypeReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTypeReferenceEditManager.java
index d0cc8e2..c0df995 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTypeReferenceEditManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/XSDTypeReferenceEditManager.java
@@ -77,7 +77,12 @@
 
   public IComponentDialog getNewDialog()
   {
-    return new NewTypeDialog();
+	  if (schemas.length > 0) {
+		  return new NewTypeDialog(schemas[0]);
+	  }
+	  else {
+		  return new NewTypeDialog();
+	  }
   }
 
   public ComponentSpecification[] getQuickPicks()
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/search/XSDSearchListDialogDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/search/XSDSearchListDialogDelegate.java
index bc79957..8bbc6ab 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/search/XSDSearchListDialogDelegate.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/search/XSDSearchListDialogDelegate.java
@@ -18,8 +18,6 @@
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ScopedComponentSearchListDialog;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.NewElementButtonHandler;
-import org.eclipse.wst.xsd.ui.internal.dialogs.NewTypeButtonHandler;
 import org.eclipse.wst.xsd.ui.internal.editor.Messages;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin;
 import org.eclipse.xsd.XSDSchema;
@@ -82,7 +80,7 @@
         configuration.setSearchListProvider(searchListProvider);
         configuration.setFilterLabelText(Messages._UI_LABEL_NAME_SEARCH_FILTER_TEXT);
         configuration.setListLabelText(Messages._UI_LABEL_ELEMENTS_COLON);
-        configuration.setNewComponentHandler(new NewElementButtonHandler());
+//        configuration.setNewComponentHandler(new NewElementButtonHandler());
         //TODO externalize string
         dialog = new ScopedComponentSearchListDialog(shell, Messages._UI_LABEL_SET_ELEMENT_REFERENCE, configuration);     
     }
@@ -96,7 +94,7 @@
       ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
       configuration.setDescriptionProvider(descriptionProvider);
       configuration.setSearchListProvider(searchListProvider);
-      configuration.setNewComponentHandler(new NewTypeButtonHandler());
+//      configuration.setNewComponentHandler(new NewTypeButtonHandler());
       configuration.setFilterLabelText(Messages._UI_LABEL_NAME_SEARCH_FILTER_TEXT);
       configuration.setListLabelText(Messages._UI_LABEL_TYPES_COLON);
       dialog = new ScopedComponentSearchListDialog(shell, Messages._UI_LABEL_SET_TYPE, configuration); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java
index c2a6b3d..d931c78 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java
@@ -277,7 +277,7 @@
     }
 
     int i = 1;
-    String testName = prefix + i++;
+    String testName = prefix;
     while (usedNames.contains(testName))
     {
       testName = prefix + i++;