[189233] [Editor] New Type dialog for an attribute should be constrained to 'simple types' only
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDBaseAttributeAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDBaseAttributeAdapter.java index f795cff..4eec05f 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDBaseAttributeAdapter.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/adapters/XSDBaseAttributeAdapter.java
@@ -30,6 +30,7 @@ import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin; import org.eclipse.xsd.XSDAttributeDeclaration; import org.eclipse.xsd.XSDTypeDefinition; +import org.eclipse.xsd.util.XSDConstants; // a base adapter for reuse by an AttributeUse and AttributeDeclaration // @@ -63,7 +64,7 @@ public String getKind() { - return "attribute"; //$NON-NLS-1$ + return XSDConstants.ATTRIBUTE_ELEMENT_TAG; } public int getMaxOccurs()
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 e4aaf04..202e215 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
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2001, 2006 IBM Corporation and others. + * Copyright (c) 2001, 2007 IBM Corporation and others. * 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 @@ -65,7 +65,7 @@ if (schema != null) { List usedNames = getUsedTypeNames(); setUsedNames(usedNames); - setDefaultName(XSDCommonUIUtils.createUniqueElementName("NewType", schema.getTypeDefinitions())); + setDefaultName(XSDCommonUIUtils.createUniqueElementName(name, schema.getTypeDefinitions())); } }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/Messages.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/Messages.java index 5ae183f..df6b0a2 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/Messages.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/Messages.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2001, 2006 IBM Corporation and others. + * Copyright (c) 2001, 2007 IBM Corporation and others. * 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 @@ -71,6 +71,7 @@ public static String _UI_LABEL_SET_COMMON_BUILT_IN_TYPES; public static String _UI_LABEL_SELECT_TYPES_FILTER_OUT; public static String _UI_LABEL_NEW_TYPE; + public static String _UI_VALUE_NEW_TYPE; public static String _UI_LABEL_COMPLEX_TYPE; public static String _UI_LABEL_SIMPLE_TYPE; public static String _UI_LABEL_NEW_ELEMENT;
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 1a78dde..8748901 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
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2001, 2006 IBM Corporation and others. + * Copyright (c) 2001, 2007 IBM Corporation and others. * 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 @@ -16,10 +16,14 @@ import org.eclipse.core.resources.IFile; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.gef.commands.Command; +import org.eclipse.osgi.util.NLS; import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification; import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentDescriptionProvider; import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager; +import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager2; import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog; +import org.eclipse.wst.xsd.ui.internal.adt.facade.IADTObject; +import org.eclipse.wst.xsd.ui.internal.adt.facade.IField; import org.eclipse.wst.xsd.ui.internal.common.commands.AddXSDComplexTypeDefinitionCommand; import org.eclipse.wst.xsd.ui.internal.common.commands.AddXSDSimpleTypeDefinitionCommand; import org.eclipse.wst.xsd.ui.internal.common.commands.UpdateTypeReferenceAndManageDirectivesCommand; @@ -37,12 +41,12 @@ import org.eclipse.xsd.util.XSDConstants; import org.eclipse.xsd.util.XSDSchemaBuildingTools; -public class XSDTypeReferenceEditManager implements ComponentReferenceEditManager +public class XSDTypeReferenceEditManager implements ComponentReferenceEditManager, ComponentReferenceEditManager2 { protected IFile currentFile; protected XSDSchema[] schemas; - private static ComponentSpecification result[]; + private IADTObject referencer; public XSDTypeReferenceEditManager(IFile currentFile, XSDSchema[] schemas) { @@ -54,6 +58,16 @@ { // TODO (cs) implement me! } + + public IADTObject getReferencer() + { + return referencer; + } + + public void setReferencer(IADTObject referencer) + { + this.referencer = referencer; + } public IComponentDialog getBrowseDialog() { @@ -82,12 +96,33 @@ public IComponentDialog getNewDialog() { - if (schemas.length > 0) { - return new NewTypeDialog(schemas[0]); - } - else { - return new NewTypeDialog(); - } + NewTypeDialog result = null; + if (schemas.length > 0) + { + result = new NewTypeDialog(schemas[0]); + } + else + { + result = new NewTypeDialog(); + } + if (referencer instanceof IField) + { + IField field = (IField)referencer; + if (XSDConstants.ATTRIBUTE_ELEMENT_TAG.equals(field.getKind())) + { + result.allowComplexType(false); + } + String fieldName = field.getName(); + if (fieldName != null) + { + fieldName = fieldName.trim(); + if (fieldName.length() > 0) + { + result.setDefaultName(NLS.bind(Messages._UI_VALUE_NEW_TYPE, fieldName)); + } + } + } + return result; } public ComponentSpecification[] getQuickPicks()
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/messages.properties b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/messages.properties index dcdc5a5..83a3900 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/messages.properties +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/editor/messages.properties
@@ -1,5 +1,5 @@ ############################################################################### -# Copyright (c) 2001, 2006 IBM Corporation and others. +# Copyright (c) 2001, 2007 IBM Corporation and others. # 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 @@ -98,6 +98,7 @@ _UI_LABEL_SET_ELEMENT_REFERENCE=Set element reference _UI_LABEL_NEW_TYPE=New Type +_UI_VALUE_NEW_TYPE={0}Type _UI_LABEL_NEW_ELEMENT=New Element _UI_LABEL_COMPLEX_TYPE=Complex Type _UI_LABEL_TARGET_NAMESPACE=Target Namespace:
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/directedit/TypeReferenceDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/directedit/TypeReferenceDirectEditManager.java index c781c67..6f9b7e4 100644 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/directedit/TypeReferenceDirectEditManager.java +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/design/directedit/TypeReferenceDirectEditManager.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2001, 2006 IBM Corporation and others. + * Copyright (c) 2001, 2007 IBM Corporation and others. * 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 @@ -23,6 +23,7 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification; import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager; +import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager2; import org.eclipse.wst.xsd.ui.internal.adt.editor.Messages; import org.eclipse.wst.xsd.ui.internal.adt.facade.IField; import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager; @@ -154,6 +155,11 @@ if (editor != null) { result = (ComponentReferenceEditManager)editor.getAdapter(XSDTypeReferenceEditManager.class); + if (result instanceof ComponentReferenceEditManager2) + { + ComponentReferenceEditManager2 manager = (ComponentReferenceEditManager2)result; + manager.setReferencer(setObject); + } } return result; }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/edit/ComponentReferenceEditManager2.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/edit/ComponentReferenceEditManager2.java new file mode 100644 index 0000000..c01312d --- /dev/null +++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/edit/ComponentReferenceEditManager2.java
@@ -0,0 +1,19 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.xsd.ui.internal.adt.edit; + +import org.eclipse.wst.xsd.ui.internal.adt.facade.IADTObject; + +public interface ComponentReferenceEditManager2 extends ComponentReferenceEditManager +{ + void setReferencer(IADTObject field); + IADTObject getReferencer(); +}