[no bug] merge with 1_5 branch
diff --git a/bundles/org.eclipse.wst.xsd.ui/.classpath b/bundles/org.eclipse.wst.xsd.ui/.classpath
index 905c508..b3381db 100644
--- a/bundles/org.eclipse.wst.xsd.ui/.classpath
+++ b/bundles/org.eclipse.wst.xsd.ui/.classpath
@@ -1,9 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-validation"/>
<classpathentry kind="src" path="src-refactor"/>
+ <classpathentry kind="src" path="src-adt"/>
+ <classpathentry kind="src" path="src-adt-xsd"/>
+ <classpathentry kind="src" path="src-common"/>
+ <classpathentry kind="src" path="src-adt-xsd-typeviz"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src-search"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
index 07cfd97..23de916 100644
--- a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
@@ -3,31 +3,47 @@
Bundle-Name: %_UI_PLUGIN_NAME
Bundle-SymbolicName: org.eclipse.wst.xsd.ui; singleton:=true
Bundle-Version: 1.0.100.qualifier
-Bundle-Activator: org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin
+Bundle-Activator: org.eclipse.wst.xsd.editor.XSDEditorPlugin
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.xsd.ui.internal;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.actions;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.commands;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dialogs.types.common;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dialogs.types.xml;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dnd;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.gef.util.editparts;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.gef.util.figures;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.editparts;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.editpolicies;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.figures;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.model;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.icons;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.preferences;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.properties;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.properties.section;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.provider;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.refactor;x-internal:=true,
+Export-Package: org.eclipse.wst.xsd.adt.actions,
+ org.eclipse.wst.xsd.adt.design,
+ org.eclipse.wst.xsd.adt.design.directedit,
+ org.eclipse.wst.xsd.adt.design.editparts,
+ org.eclipse.wst.xsd.adt.design.editparts.model,
+ org.eclipse.wst.xsd.adt.design.editpolicies,
+ org.eclipse.wst.xsd.adt.design.figures,
+ org.eclipse.wst.xsd.adt.edit,
+ org.eclipse.wst.xsd.adt.editor,
+ org.eclipse.wst.xsd.adt.facade,
+ org.eclipse.wst.xsd.adt.outline,
+ org.eclipse.wst.xsd.adt.properties,
+ org.eclipse.wst.xsd.adt.typeviz.design.figures,
+ org.eclipse.wst.xsd.adt.typeviz.design.layouts,
+ org.eclipse.wst.xsd.editor,
+ org.eclipse.wst.xsd.editor.internal.actions,
+ org.eclipse.wst.xsd.editor.internal.adapters,
+ org.eclipse.wst.xsd.editor.internal.design.editparts,
+ org.eclipse.wst.xsd.editor.internal.design.editparts.model,
+ org.eclipse.wst.xsd.editor.internal.design.figures,
+ org.eclipse.wst.xsd.editor.internal.design.layouts,
+ org.eclipse.wst.xsd.editor.internal.dialogs,
+ org.eclipse.wst.xsd.editor.internal.icons,
+ org.eclipse.wst.xsd.editor.internal.navigation,
+ org.eclipse.wst.xsd.editor.internal.preferences,
+ org.eclipse.wst.xsd.editor.internal.search,
+ org.eclipse.wst.xsd.editor.internal.utils,
+ org.eclipse.wst.xsd.ui.common.actions,
+ org.eclipse.wst.xsd.ui.common.commands,
+ org.eclipse.wst.xsd.ui.common.properties.providers,
+ org.eclipse.wst.xsd.ui.common.properties.sections,
+ org.eclipse.wst.xsd.ui.common.properties.sections.appinfo,
+ org.eclipse.wst.xsd.ui.common.util,
+ org.eclipse.wst.xsd.ui.internal.actions,
+ org.eclipse.wst.xsd.ui.internal.nsedit;x-internal:=true,
+ org.eclipse.wst.xsd.ui.internal.refactor,
org.eclipse.wst.xsd.ui.internal.refactor.actions;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.refactor.rename;x-internal:=true,
+ org.eclipse.wst.xsd.ui.internal.refactor.rename,
org.eclipse.wst.xsd.ui.internal.refactor.structure;x-internal:=true,
org.eclipse.wst.xsd.ui.internal.refactor.util;x-internal:=true,
org.eclipse.wst.xsd.ui.internal.refactor.wizard;x-internal:=true,
@@ -38,7 +54,9 @@
org.eclipse.wst.xsd.ui.internal.validation;x-internal:=true,
org.eclipse.wst.xsd.ui.internal.widgets;x-internal:=true,
org.eclipse.wst.xsd.ui.internal.wizards;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime,
+Require-Bundle: org.eclipse.ui.views.properties.tabbed,
+ org.apache.xerces,
+ org.eclipse.core.runtime,
org.eclipse.wst.common.uriresolver,
org.eclipse.wst.sse.ui,
org.eclipse.wst.sse.core,
@@ -49,14 +67,16 @@
org.eclipse.jface.text,
org.eclipse.xsd,
org.eclipse.gef,
+ org.eclipse.draw2d,
+ org.eclipse.xsd,
org.eclipse.jface,
org.eclipse.ui.editors,
org.eclipse.ui.workbench.texteditor,
org.eclipse.ui,
org.eclipse.ui.views,
org.eclipse.ui.ide,
+ org.eclipse.emf.ecore.edit,
org.eclipse.core.resources,
- org.eclipse.wst.common.ui.properties,
org.eclipse.xsd.edit,
org.eclipse.emf.edit,
org.eclipse.emf.edit.ui,
diff --git a/bundles/org.eclipse.wst.xsd.ui/build.properties b/bundles/org.eclipse.wst.xsd.ui/build.properties
index 7204163..2df31de 100644
--- a/bundles/org.eclipse.wst.xsd.ui/build.properties
+++ b/bundles/org.eclipse.wst.xsd.ui/build.properties
@@ -8,17 +8,17 @@
# Contributors:
# IBM Corporation - initial API and implementation
###############################################################################
-source.. = src/,\
- src-validation/,\
- src-refactor/
+source.. = src-validation/,\
+ src-search/,\
+ src-refactor/,\
+ src-adt/,\
+ src-adt-xsd/,\
+ src-adt-xsd-typeviz/,\
+ src-common/
bin.includes = .,\
plugin.xml,\
icons/,\
- image/,\
- doc/,\
plugin.properties,\
- samples/,\
- w3c/,\
META-INF/,\
about.html
src.includes = build.properties,\
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/XSDAttributeGroupRef.gif
similarity index 100%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif
copy to bundles/org.eclipse.wst.xsd.ui/icons/XSDAttributeGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/XSDElementRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/XSDElementRef.gif
new file mode 100644
index 0000000..8712930
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/XSDElementRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/XSDGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/XSDGroupRef.gif
new file mode 100644
index 0000000..34a7fb3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/XSDGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/blank.gif b/bundles/org.eclipse.wst.xsd.ui/icons/blank.gif
new file mode 100644
index 0000000..1936e21
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/blank.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif b/bundles/org.eclipse.wst.xsd.ui/icons/browsebutton.gif
similarity index 100%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif
copy to bundles/org.eclipse.wst.xsd.ui/icons/browsebutton.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/collapse_attr.gif b/bundles/org.eclipse.wst.xsd.ui/icons/collapse_attr.gif
new file mode 100644
index 0000000..b872bee
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/collapse_attr.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/delete_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/delete_obj.gif
new file mode 100644
index 0000000..b6922ac
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/delete_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/dlcl16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/dlcl16/showproperties_obj.gif
new file mode 100644
index 0000000..d94ff10
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/dlcl16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/dtool16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/dtool16/showproperties_obj.gif
new file mode 100644
index 0000000..d94ff10
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/dtool16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/elcl16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/elcl16/showproperties_obj.gif
new file mode 100644
index 0000000..1dc19a3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/elcl16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/etool16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/etool16/showproperties_obj.gif
new file mode 100644
index 0000000..1dc19a3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/etool16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/expand_attr.gif b/bundles/org.eclipse.wst.xsd.ui/icons/expand_attr.gif
new file mode 100644
index 0000000..5c287e9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/expand_attr.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/filter.gif b/bundles/org.eclipse.wst.xsd.ui/icons/filter.gif
new file mode 100644
index 0000000..6fe6f0e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/filter.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/newChoice.gif b/bundles/org.eclipse.wst.xsd.ui/icons/newChoice.gif
new file mode 100644
index 0000000..eca1446
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/newChoice.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/newSequence2.gif b/bundles/org.eclipse.wst.xsd.ui/icons/newSequence2.gif
new file mode 100644
index 0000000..9e3968c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/newSequence2.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/obj16/attributeGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/attributeGroupRef.gif
new file mode 100644
index 0000000..0ea47d2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/attributeGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/obj16/error_marker.gif b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/error_marker.gif
new file mode 100644
index 0000000..61e1e25
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/error_marker.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/sample.gif b/bundles/org.eclipse.wst.xsd.ui/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/sample.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/plugin.properties b/bundles/org.eclipse.wst.xsd.ui/plugin.properties
index 30eabc6..bb3d093 100644
--- a/bundles/org.eclipse.wst.xsd.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.xsd.ui/plugin.properties
@@ -32,13 +32,16 @@
_UI_CREATE_A_NEW_SCHEMA = Create a new XML schema file
! New property tabs
-_UI_LABEL_GENERAL = General
-_UI_LABEL_OTHER = Other
-_UI_LABEL_ATTRIBUTES = Attributes
-_UI_LABEL_DOCUMENTATION = Documentation
-_UI_LABEL_FACETS = Facets
-_UI_LABEL_ENUMERATIONS = Enumerations
-_UI_LABEL_NAMESPACE = Namespace
+_UI_LABEL_GENERAL = General
+_UI_LABEL_ATTRIBUTES = Attributes
+_UI_LABEL_DOCUMENTATION = Documentation
+_UI_LABEL_TYPE_CONSTRAINTS = Constraints
+_UI_LABEL_APPLICATION_INFO = Application Info
+_UI_LABEL_EXTENSIONS = Extensions
+_UI_LABEL_FACETS = Facets
+_UI_LABEL_ENUMERATIONS = Enumerations
+_UI_LABEL_NAMESPACE = Namespace
+_UI_LABEL_ADVANCED = Advanced
_UI_LABEL_READ_ONLY = read-only
_UI_LABEL_KIND = Kind:
@@ -830,5 +833,5 @@
_INFO_REMOVE_ATTRIBUTE_GROUP_REFERENCE = Remove attribute group reference
Bundle-Vendor.0 = Eclipse.org
-action.label.0 = Declarations
-action.label.1 = References
\ No newline at end of file
+search.declarations.label = Declarations
+search.references.label = References
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/plugin.xml b/bundles/org.eclipse.wst.xsd.ui/plugin.xml
index 39dbc77..90c3e76 100644
--- a/bundles/org.eclipse.wst.xsd.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.xsd.ui/plugin.xml
@@ -5,14 +5,15 @@
<extension point="org.eclipse.ui.editors">
<editor
name="%_UI_EDITOR_NAME"
+ extensions="xsd"
default="true"
icon="icons/XSDFile.gif"
- contributorClass="org.eclipse.wst.xsd.ui.internal.XSDActionBarContributor"
- class="org.eclipse.wst.xsd.ui.internal.XSDEditor"
- id="org.eclipse.wst.xsd.ui.XSDEditor">
- <contentTypeBinding
+ contributorClass="org.eclipse.wst.xsd.editor.XSDMultiPageEditorContributor"
+ class="org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor"
+ id="org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor">
+<!-- <contentTypeBinding
contentTypeId="org.eclipse.wst.xsd.core.xsdsource" />
-
+ -->
</editor>
</extension>
@@ -50,22 +51,23 @@
<page
name="%_UI_XML_SCHEMA_PREFERENCE"
category="org.eclipse.wst.sse.ui.internal.provisional.preferences"
- class="org.eclipse.wst.xsd.ui.internal.preferences.XSDPreferencePage"
- id="org.eclipse.wst.xsd.ui.internal.preferences.XSDPreferencePage">
+ class="org.eclipse.wst.xsd.editor.internal.preferences.XSDPreferencePage"
+ id="org.eclipse.wst.xsd.editor.internal.preferences.XSDPreferencePage">
</page>
</extension>
+<!--
<extension point="org.eclipse.wst.sse.ui.editorConfiguration">
<provisionalDefinition
type="preferencepages"
value="org.eclipse.wst.xsd.ui.internal.preferences.XSDPreferencePage"
target="org.eclipse.wst.xsd.ui.internal.XSDEditor.source" />
- <sourceViewerConfiguration
+ <sourceViewerConfiguration
class="org.eclipse.wst.xsd.ui.internal.StructuredTextViewerConfigurationXSD"
target="org.eclipse.wst.xsd.core.xsdsource" />
<contentOutlineConfiguration
class="org.eclipse.wst.xsd.ui.internal.XSDContentOutlineConfiguration"
- target="org.eclipse.wst.xsd.core.xsdsource" />
- </extension>
+ target="org.eclipse.wst.xsd.core.xsdsource" />
+ </extension> -->
<!-- ==================================================== -->
<!-- Support help on the tags -->
@@ -78,67 +80,138 @@
</annotationFile>
</extension>
-->
- <extension
- point="org.eclipse.wst.common.ui.properties.propertyContributor">
- <propertyContributor
- contributorId="org.eclipse.wst.xsd.ui.internal.XSDEditor"
- sectionDescriptorProvider="org.eclipse.wst.xsd.ui.internal.properties.section.XSDSectionDescriptorProvider"
- labelProvider="org.eclipse.wst.xsd.ui.internal.properties.section.XSDSectionLabelProvider">
- <propertyCategory category="general"></propertyCategory>
- <propertyCategory category="namespace"></propertyCategory>
- <propertyCategory category="other"></propertyCategory>
- <propertyCategory category="attributes"></propertyCategory>
- <propertyCategory category="enumerations">
- </propertyCategory>
- <propertyCategory category="documentation">
- </propertyCategory>
- <propertyCategory category="facets"></propertyCategory>
- </propertyContributor>
- </extension>
- <extension
- point="org.eclipse.wst.common.ui.properties.propertyTabs">
- <propertyTabs
- contributorId="org.eclipse.wst.xsd.ui.internal.XSDEditor">
+
+
+ <extension
+ point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+ <propertyContributor
+ contributorId="org.eclipse.wst.xsd.editor"
+ labelProvider="org.eclipse.wst.xsd.ui.common.properties.providers.XSDSectionLabelProvider">
+ <propertyCategory category="General"/>
+ <propertyCategory category="Documentation"/>
+ <propertyCategory category="Advanced"/>
+ </propertyContributor>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+ <propertyTabs
+ contributorId="org.eclipse.wst.xsd.editor">
<propertyTab
label="%_UI_LABEL_GENERAL"
- category="general"
- id="org.eclipse.wst.xmlwebservices.general">
+ category="General"
+ id="property.tab.general">
</propertyTab>
<propertyTab
- label="%_UI_LABEL_NAMESPACE"
- category="namespace"
- afterTab="org.eclipse.wst.xmlwebservices.general"
- id="org.eclipse.wst.xmlwebservices.namespace">
- </propertyTab>
- <propertyTab
- label="%_UI_LABEL_OTHER"
- category="other"
- id="org.eclipse.wst.xmlwebservices.other">
- </propertyTab>
- <propertyTab
- label="%_UI_LABEL_ATTRIBUTES"
- category="attributes"
- id="org.eclipse.wst.xmlwebservices.attributes">
+ label="%_UI_LABEL_TYPE_CONSTRAINTS"
+ category="General"
+ afterTab="property.tab.general"
+ id="property.tab.typeconstraints">
</propertyTab>
<propertyTab
label="%_UI_LABEL_ENUMERATIONS"
- category="enumerations"
- id="org.eclipse.wst.xmlwebservices.enumerations">
+ category="General"
+ afterTab="property.tab.general"
+ id="property.tab.enumerations">
</propertyTab>
<propertyTab
label="%_UI_LABEL_DOCUMENTATION"
- category="documentation"
- id="org.eclipse.wst.xmlwebservices.documentation">
+ category="Documentation"
+ afterTab="property.tab.general"
+ id="property.tab.documentation">
</propertyTab>
<propertyTab
- label="%_UI_SECTION_ADVANCED_ATTRIBUTES"
- category="facets"
- id="org.eclipse.wst.xmlwebservices.facets">
+ label="%_UI_LABEL_EXTENSIONS"
+ category="Documentation"
+ afterTab="property.tab.general"
+ id="property.tab.extensions">
</propertyTab>
- </propertyTabs>
- </extension>
+ </propertyTabs>
+ </extension>
+<extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
+ <propertySections contributorId="org.eclipse.wst.xsd.editor">
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDSchemaSection"
+ id="prop.section.XSDSchemaSection">
+ <input type="org.eclipse.xsd.XSDSchema">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.SchemaLocationSection"
+ id="prop.section.SchemaLocationSection">
+ <input type="org.eclipse.xsd.XSDSchemaCompositor">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDComplexTypeSection"
+ id="prop.section.XSDComplexTypeSection">
+ <input type="org.eclipse.xsd.XSDComplexTypeDefinition">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDElementDeclarationSection"
+ id="prop.section.XSDElementDeclarationSection">
+ <input type="org.eclipse.xsd.XSDElementDeclaration">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDAttributeDeclarationSection"
+ id="prop.section.XSDAttributeDeclarationSection">
+ <input type="org.eclipse.xsd.XSDAttributeDeclaration">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDAttributeGroupDefinitionSection"
+ id="prop.section.XSDAttributeGroupDefinitionSection">
+ <input type="org.eclipse.xsd.XSDAttributeGroupDefinition">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDModelGroupSection"
+ id="prop.section.XSDModelGroupSection">
+ <input type="org.eclipse.xsd.XSDModelGroup">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDModelGroupDefinitionSection"
+ id="prop.section.XSDModelGroupDefinitionSection">
+ <input type="org.eclipse.xsd.XSDModelGroupDefinition">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.general"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDSimpleTypeSection"
+ id="prop.section.XSDSimpleTypeSection">
+ <input type="org.eclipse.xsd.XSDSimpleTypeDefinition">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.typeconstraints"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDFacetSection"
+ filter="org.eclipse.wst.xsd.ui.common.properties.sections.XSDFacetSectionFilter"
+ id="prop.section.XSDFacetSection">
+ <input type="org.eclipse.xsd.XSDConcreteComponent">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.documentation"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.AnnotationSection"
+ id="prop.section.AnnotationSection">
+ <input type="org.eclipse.xsd.XSDConcreteComponent">
+ </input>
+ </propertySection>
+ <propertySection tab="property.tab.extensions"
+ class="org.eclipse.wst.xsd.ui.common.properties.sections.ApplicationInfoSection"
+ id="prop.section.ExtensionsSection">
+ <input type="org.eclipse.xsd.XSDConcreteComponent">
+ </input>
+ </propertySection>
+ </propertySections>
+</extension>
+
+ <extension-point id="ApplicationInformationDescription" name="ApplicationInformationDescription"/>
+
+ <extension-point id="XSDEditorExtensionConfiguration" name="XSDEditorExtensionConfiguration"/>
+
<extension
point="org.eclipse.wst.xml.core.catalogContributions">
<catalogContribution id="default">
@@ -174,39 +247,6 @@
parentId="org.eclipse.ui.textEditorScope" />
</extension>
- <extension point="org.eclipse.ui.commands">
- <command
- name="%command.xsd.refactor.rename.element.name"
- description="%command.xsd.refactor.rename.element.description"
- categoryId="org.eclipse.ui.category.edit"
- id="org.eclipse.wst.xsd.ui.refactor.rename.element">
- </command>
- <keyBinding
- keySequence="Alt+Shift+R"
- contextId="org.eclipse.wst.xsd.ui.text.editor.context"
- commandId="org.eclipse.wst.xsd.ui.refactor.rename.element"
- keyConfigurationId="org.eclipse.ui.defaultAcceleratorConfiguration">
- </keyBinding>
- </extension>
-
- <extension point="org.eclipse.ui.commands">
- <command
- name="%command.xsd.refactor.makeElementGlobal.element.name"
- description="%command.xsd.refactor.makeElementGlobal.element.description"
- categoryId="org.eclipse.ui.category.edit"
- id="org.eclipse.wst.xsd.ui.refactor.makeElementGlobal">
- </command>
- </extension>
-
- <extension point="org.eclipse.ui.commands">
- <command
- name="%command.xsd.refactor.makeTypeGlobal.element.name"
- description="%command.xsd.refactor.makeTypeGlobal.element.description"
- categoryId="org.eclipse.ui.category.edit"
- id="org.eclipse.wst.xsd.ui.refactor.makeTypeGlobal">
- </command>
- </extension>
-
<!-- this extension point is used to augment the ModelQuery to provide schema specific guided editing -->
<extension point="org.eclipse.wst.xml.core.modelQueryExtensions">
<modelQueryExtension
@@ -215,47 +255,6 @@
</modelQueryExtension>
</extension>
- <!--extension
- point="org.eclipse.ltk.core.refactoring.renameParticipants">
- <renameParticipant
- name="%xsd.resource.rename.participant.name"
- class="org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDResourceRenameParticipant"
- id="org.eclipse.wst.xsd.ui.refactoring.XSDResourceRenameParticipant">
- <enablement>
- <with
- variable="element">
- <instanceof
- value="org.eclipse.core.resources.IResource">
- </instanceof>
- </with>
- </enablement>
- </renameParticipant>
- </extension-->
-
- <!--
- The following extension to the file context menu is temporary until resource
- navigator will provide allow to extend refactor menu
- -->
- <!--
- <extension point="org.eclipse.ui.popupMenus">
- <objectContribution
- objectClass="org.eclipse.core.resources.IFile"
- nameFilter="*.xsd"
- id="org.wst.xsd.ui.rename">
- <menu id="refactorXSDResource" path="additions" label="%refactoring.menu.label">
- <separator name="refactor"/>
- </menu>
- <action
- label="%refactoring.renameAction.label"
- menubarPath="refactorXSDResource/refactor"
- class="org.eclipse.wst.xsd.ui.internal.refactor.actions.RenameResourceActionDelegate"
- enablesFor="1"
- id="org.eclipse.wst.xsd.ui.refactoring.actions.RenameResource">
- </action>
- </objectContribution>
- </extension>
- -->
-
<!-- ====================================================== -->
<!-- Define Assign Validate action on .xsd file -->
<!-- ====================================================== -->
@@ -312,8 +311,8 @@
</or>
</enablement>
</searchParticipant>
- </extension>
-
+ </extension>
+
<!-- ============================================================================== -->
<!-- Register a 'rename' participant this enables us to provide refactoring for -->
<!-- renamed XML Schema components (e.g. elements, types etc.) -->
@@ -335,11 +334,11 @@
</extension>
-
<!-- ============================================================================== -->
<!-- Register a 'rename' participant this enables us to provide refactoring for -->
<!-- renamed resources. -->
<!-- ============================================================================== -->
+<!--
<extension
point="org.eclipse.ltk.core.refactoring.renameParticipants">
<renameParticipant
@@ -353,18 +352,20 @@
</enablement>
</renameParticipant>
</extension>
-
-
+ -->
+ <!-- ============================================================================================== -->
+ <!-- Register the 'Refactor', 'References' and 'Declarations' items to the design view -->
+ <!-- ============================================================================================== -->
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="org.eclipse.wst.xsd.ui.refactoring.menu.objectContrib"
- objectClass="org.eclipse.xsd.XSDComponent">
+ objectClass="org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter">
<action
id="org.eclipse.wst.xsd.ui.search.declarations.action"
enablesFor="1"
style="pulldown"
menubarPath="search-slot"
- label="%action.label.0"
+ label="%search.declarations.label"
class="org.eclipse.wst.xsd.ui.internal.search.actions.XSDSearchDeclarationsGroupActionDelegate">
</action>
<action
@@ -372,7 +373,7 @@
enablesFor="1"
style="pulldown"
menubarPath="search-slot"
- label="%action.label.1"
+ label="%search.references.label"
class="org.eclipse.wst.xsd.ui.internal.search.actions.XSDSearchReferencesGroupActionDelegate">
</action>
<action
@@ -380,11 +381,12 @@
enablesFor="1"
style="pulldown"
menubarPath="refactoring-slot"
- label="%refactoring.menu.label"
+ label="%refactoringActionSet.label"
class="org.eclipse.wst.xsd.ui.internal.refactor.actions.XSDRefactorGroupActionDelegate">
- </action>
+ </action>
</objectContribution>
- <viewerContribution
+ <!-- here we add the 'refactor' menu item to the source view -->
+ <viewerContribution
id="org.eclipse.wst.xsd.ui.refactoring.menu.source"
targetID="org.eclipse.wst.xsd.core.xsdsource.source.EditorContext">
<action id="org.eclipse.wst.xsd.ui.refactoring.menu.refactorGroup.source"
@@ -393,10 +395,32 @@
label="%refactoring.menu.label"
class="org.eclipse.wst.xsd.ui.internal.refactor.actions.XSDRefactorGroupActionDelegate">
</action>
- </viewerContribution>
-
+ </viewerContribution>
</extension>
-
+
+
+ <!--
+ The following extension to the file context menu is temporary until resource
+ navigator will provide allow to extend refactor menu
+ -->
+
+ <!--extension point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="*.xsd"
+ id="org.wst.xsd.ui.rename">
+ <menu id="refactorXSDResource" path="additions" label="%refactoring.menu.label">
+ <separator name="refactor"/>
+ </menu>
+ <action
+ label="%refactoring.renameAction.label"
+ menubarPath="refactorXSDResource/refactor"
+ class="org.eclipse.wst.xsd.ui.internal.refactor.actions.RenameResourceActionDelegate"
+ enablesFor="1"
+ id="org.eclipse.wst.xsd.ui.refactoring.actions.RenameResource">
+ </action>
+ </objectContribution>
+ </extension-->
<extension point="org.eclipse.ui.commands">
<command
@@ -424,29 +448,4 @@
id="org.eclipse.wst.xsd.ui.refactor.renameTargetNamespace">
</command>
</extension>
-
-
- <!--
- The following extension to the file context menu is temporary until resource
- navigator will provide allow to extend refactor menu
- -->
-
- <!--extension point="org.eclipse.ui.popupMenus">
- <objectContribution
- objectClass="org.eclipse.core.resources.IFile"
- nameFilter="*.xsd"
- id="org.wst.xsd.ui.rename">
- <menu id="refactorXSDResource" path="additions" label="%refactoring.menu.label">
- <separator name="refactor"/>
- </menu>
- <action
- label="%refactoring.renameAction.label"
- menubarPath="refactorXSDResource/refactor"
- class="org.eclipse.wst.xsd.ui.internal.refactor.actions.RenameResourceActionDelegate"
- enablesFor="1"
- id="org.eclipse.wst.xsd.ui.refactoring.actions.RenameResource">
- </action>
- </objectContribution>
- </extension-->
-
</plugin>
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/BoxFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/BoxFigure.java
new file mode 100644
index 0000000..a41d899
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/BoxFigure.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.figures;
+
+import java.util.Iterator;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.adt.typeviz.design.layouts.ColumnData;
+
+public class BoxFigure extends Figure
+{
+ protected ColumnData columnData = new ColumnData();
+ public HeadingFigure headingFigure;
+ Figure contentPane;
+
+ public boolean isSelected = false;
+
+ public BoxFigure()
+ {
+ super();
+ headingFigure = new HeadingFigure();
+ add(headingFigure);
+
+ contentPane = new Figure()
+ {
+ public void paint(Graphics graphics)
+ {
+ super.paint(graphics);
+ boolean isFirst = false;
+ for (Iterator i = getChildren().iterator(); i.hasNext();)
+ {
+ Figure figure = (Figure) i.next();
+ if (isFirst)
+ {
+ isFirst = false;
+ }
+ else
+ {
+ Rectangle r = figure.getBounds();
+ graphics.drawLine(r.x, r.y + 1, r.x + r.width, r.y + 1);
+ }
+ }
+ }
+ };
+ contentPane.setLayoutManager(new ToolbarLayout());
+ add(contentPane);
+ headingFigure.setForegroundColor(ColorConstants.black);
+ }
+
+ public void paint(Graphics graphics)
+ {
+ super.paint(graphics);
+ /*
+ // Fill for the header section
+ //
+ Rectangle r = getBounds().getCopy();
+ graphics.setBackgroundColor(ColorConstants.darkGray);
+ Color gradient1 = ColorConstants.lightGray;
+ if (isSelected)
+ {
+ gradient1 = ColorConstants.lightBlue;
+ }
+ Color gradient2 = ColorConstants.white;
+ graphics.setForegroundColor(gradient1);
+ graphics.setBackgroundColor(gradient2);
+ graphics.fillGradient(r.x + 1, r.y + 1, r.width - 2, nodeNameLabel.getBounds().height - 1, true);
+ nodeNameLabel.paint(graphics);
+ */
+ }
+
+ public IFigure getContentPane()
+ {
+ return contentPane;
+ }
+
+ public Label getNameLabel()
+ {
+ return headingFigure.getLabel();
+ }
+
+ public HeadingFigure getHeadingFigure()
+ {
+ return headingFigure;
+ }
+
+ public ColumnData getColumnData()
+ {
+ return columnData;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/CompartmentFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/CompartmentFigure.java
new file mode 100644
index 0000000..7e329bc
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/CompartmentFigure.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.figures;
+
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.wst.xsd.adt.design.editparts.StructureEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.typeviz.design.layouts.RowLayout;
+
+public class CompartmentFigure extends Figure implements ICompartmentFigure
+{
+ public Label nodeNameLabel;
+ protected Figure contentPane;
+ protected Figure annotationArea;
+ public Figure rowFigure;
+
+ public CompartmentFigure()
+ {
+ super();
+
+ rowFigure = new Figure();
+ add(rowFigure);
+
+ annotationArea = new Figure();
+ ToolbarLayout annotationLayout = new ToolbarLayout(false);
+ annotationLayout.setStretchMinorAxis(true);
+ annotationArea.setLayoutManager(annotationLayout);
+
+ // Need this to show content model structure on the left side of the figure
+ rowFigure.add(annotationArea);
+
+ contentPane = new Figure()
+ {
+ public void paint(Graphics graphics)
+ {
+ super.paint(graphics);
+ graphics.pushState();
+ try
+ {
+ boolean isFirst = true;
+ Color oldColor = graphics.getForegroundColor();
+ graphics.setForegroundColor(ColorConstants.lightGray);
+ for (Iterator i = getChildren().iterator(); i.hasNext();)
+ {
+ Figure figure = (Figure) i.next();
+ Rectangle r = figure.getBounds();
+// if (figure instanceof FieldFigure)
+// {
+// Rectangle rChild = ((FieldFigure)figure).getNameFigure().getBounds();
+// graphics.drawLine(rChild.right(), rChild.y, rChild.right(), rChild.bottom());
+// graphics.setForegroundColor(ColorConstants.darkGray);
+// }
+ if (isFirst)
+ {
+ isFirst = false;
+// graphics.drawLine(r.x, r.y, r.x, r.y + r.height);
+ }
+ else
+ {
+ graphics.setForegroundColor(ColorConstants.white);
+ graphics.setBackgroundColor(ColorConstants.lightGray);
+ graphics.fillGradient(r.x, r.y, r.width, 1, false);
+// graphics.drawLine(r.x, r.y, r.x + r.width, r.y);
+// graphics.drawLine(r.x, r.y, r.x, r.y + r.height);
+ }
+ }
+ graphics.setForegroundColor(oldColor);
+ }
+ finally
+ {
+ graphics.popState();
+ }
+ }
+ };
+ contentPane.setLayoutManager(new ToolbarLayout());
+ rowFigure.add(contentPane);
+
+ RowLayout rowLayout = new RowLayout();
+ rowFigure.setLayoutManager(rowLayout);
+ rowLayout.setConstraint(annotationArea, "annotation");
+ rowLayout.setConstraint(contentPane, "contentPane");
+ }
+
+ public IFigure getContentPane()
+ {
+ return contentPane;
+ }
+
+ public IFigure getAnnotationPane()
+ {
+ return annotationArea;
+ }
+
+ public void editPartAttached(EditPart owner)
+ {
+ StructureEditPart structureEditPart = null;
+ for (EditPart parent = owner.getParent(); parent != null; parent = parent.getParent())
+ {
+ if (parent instanceof StructureEditPart)
+ {
+ structureEditPart = (StructureEditPart) parent;
+ break;
+ }
+ }
+ RowLayout rowLayout = (RowLayout)rowFigure.getLayoutManager();
+ IStructureFigure typeFigure = structureEditPart.getStructureFigure();
+ Assert.isTrue(typeFigure instanceof StructureFigure, "Expected object of type StructureFigure");
+ rowLayout.setColumnData(((StructureFigure)typeFigure).getColumnData());
+ }
+
+ public void addSelectionFeedback()
+ {
+ }
+
+ public void removeSelectionFeedback()
+ {
+ }
+
+ public void refreshVisuals(Object model)
+ {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/FieldFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/FieldFigure.java
new file mode 100644
index 0000000..2a90266
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/FieldFigure.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.figures;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.gef.EditPart;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.StructureEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.typeviz.design.layouts.RowLayout;
+
+public class FieldFigure extends Figure implements IFieldFigure
+{
+ // TODO: put this color is some common class
+ public static final Color cellColor = new Color(null, 224, 233, 246);
+
+ // Formatting constraints
+ public static final int TOP_MARGIN = 2; // pixels
+ public static final int BOTTOM_MARGIN = TOP_MARGIN + 1; // extra pixel for the
+ // footer line
+ public static final int LEFT_MARGIN = 2;
+ public static final int RIGHT_MARGIN = LEFT_MARGIN;
+ public static final int RIGHT_SIDE_PADDING = 6;
+
+ // States requiring decorators, and their icons
+ // protected static final Image errorIcon = ICON_ERROR;
+
+ // Labels which handle presentation of name and type
+ public Figure rowFigure;
+ protected Label nameLabel;
+ protected Label nameAnnotationLabel; // for occurrence text, or error icons
+ protected Label typeLabel;
+ protected Label typeAnnotationLabel; // for occurrence text, or error icons
+ protected Label toolTipLabel;
+
+ public FieldFigure()
+ {
+ super();
+ setLayoutManager(new ToolbarLayout());
+// setOpaque(true);
+ rowFigure = new Figure();
+// rowFigure.setOpaque(true);
+ RowLayout rowLayout = new RowLayout();
+ rowFigure.setLayoutManager(rowLayout);
+
+ add(rowFigure);
+
+ nameLabel = new Label();
+ nameLabel.setBorder(new MarginBorder(3, 5, 3, 5));
+ nameLabel.setLabelAlignment(PositionConstants.LEFT);
+ nameLabel.setOpaque(true);
+ rowFigure.add(nameLabel);
+
+ nameAnnotationLabel = new Label();
+ nameAnnotationLabel.setBorder(new MarginBorder(3, 5, 3, 5));
+ nameAnnotationLabel.setLabelAlignment(PositionConstants.LEFT);
+ nameAnnotationLabel.setOpaque(true);
+ rowFigure.add(nameAnnotationLabel);
+
+ toolTipLabel = new Label();
+ nameLabel.setToolTip(toolTipLabel);
+ typeLabel = new Label();
+
+ // cs : we need to add some additional padding to the right
+ // so that when we edit the field there's room for the combobox's arrow
+ // and the type name won't be partially obscured
+ //
+ typeLabel.setBorder(new MarginBorder(3, 5, 3, 20));
+ typeLabel.setLabelAlignment(PositionConstants.LEFT);
+ typeLabel.setOpaque(true);
+ rowFigure.add(typeLabel);
+
+ typeAnnotationLabel = new Label() {
+
+ public Dimension getPreferredSize(int wHint, int hHint)
+ {
+ if (getText() == null || getText().equals(""))
+ {
+ return new Dimension(0, 0);
+ }
+ return super.getPreferredSize(wHint, hHint);
+ };
+ };
+ typeAnnotationLabel.setBorder(new MarginBorder(3, 5, 3, 5));
+ typeAnnotationLabel.setLabelAlignment(PositionConstants.LEFT);
+ typeAnnotationLabel.setOpaque(true);
+ rowFigure.add(typeAnnotationLabel);
+ typeAnnotationLabel.setToolTip(toolTipLabel);
+
+ rowLayout.setConstraint(nameLabel, "name");
+ rowLayout.setConstraint(nameAnnotationLabel, "nameAnnotation");
+ rowLayout.setConstraint(typeLabel, "type");
+ rowLayout.setConstraint(typeAnnotationLabel, "typeAnnotation");
+ }
+
+ /**
+ * @return Returns the "name" string used by this figure.
+ */
+ public String getName()
+ {
+ return nameLabel.getText();
+ }
+
+ /**
+ * @return Returns the figure representing the attribute name
+ */
+ public Label getNameLabel()
+ {
+ return nameLabel;
+ }
+
+ /**
+ * @return Returns the "type" string used by this figure.
+ */
+ public String getType()
+ {
+ return typeLabel.getText();
+ }
+
+ /**
+ * @return Returns the figure representing the attribute's type
+ */
+ public Label getTypeLabel()
+ {
+ return typeLabel;
+ }
+
+ /**
+ * @param name
+ * Set the "name" string used by this figure.
+ */
+ public void setName(String name)
+ {
+ nameLabel.setText(name);
+ }
+
+ /**
+ * @param type
+ * Set the "type" string used by this figure.
+ */
+ public void setType(String type)
+ {
+ typeLabel.setText(type);
+ }
+
+ public void setTypeToolTipText(String toolTip)
+ {
+ setNameToolTipText(toolTip);
+ }
+
+ public void setNameToolTipText(String toolTip)
+ {
+ if (toolTip.length() > 0)
+ {
+ nameLabel.setToolTip(toolTipLabel);
+ toolTipLabel.setText(toolTip);
+ }
+ else
+ {
+ nameLabel.setToolTip(null);
+ }
+ }
+
+ public void setNameAnnotationLabel(String text)
+ {
+ nameAnnotationLabel.setText(text);
+ }
+
+ public void setNameAnnotationLabelIcon(Image icon)
+ {
+ nameAnnotationLabel.setIcon(icon);
+ }
+
+ public Label getNameAnnotationLabel()
+ {
+ return nameAnnotationLabel;
+ }
+
+ public void setTypeAnnotationLabel(String text)
+ {
+ typeAnnotationLabel.setText(text);
+ }
+
+ public void setTypeAnnotationLabelIcon(Image icon)
+ {
+ typeAnnotationLabel.setIcon(icon);
+ }
+
+ public Label getTypeAnnotationLabel()
+ {
+ return typeAnnotationLabel;
+ }
+
+ public void recomputeLayout()
+ {
+ RowLayout layout = (RowLayout)rowFigure.getLayoutManager();
+ if (layout != null && layout.getColumnData() != null)
+ {
+ layout.getColumnData().clearColumnWidths();
+ }
+ }
+
+ public void editPartAttached(EditPart owner)
+ {
+ StructureEditPart structureEditPart = null;
+ for (EditPart parent = owner.getParent(); parent != null; parent = parent.getParent())
+ {
+ if (parent instanceof StructureEditPart)
+ {
+ structureEditPart = (StructureEditPart) parent;
+ break;
+ }
+ }
+ RowLayout rowLayout = (RowLayout)rowFigure.getLayoutManager();
+ IStructureFigure typeFigure = structureEditPart.getStructureFigure();
+ Assert.isTrue(typeFigure instanceof StructureFigure, "Expected object of type StructureFigure");
+ rowLayout.setColumnData(((StructureFigure)typeFigure).getColumnData());
+ }
+
+ public void addSelectionFeedback()
+ {
+ rowFigure.setBackgroundColor(cellColor);
+ }
+
+ public void removeSelectionFeedback()
+ {
+ rowFigure.setBackgroundColor(getBackgroundColor());
+ }
+
+ public void refreshVisuals(Object model)
+ {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/HeadingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/HeadingFigure.java
new file mode 100644
index 0000000..041396b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/HeadingFigure.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.figures;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.swt.graphics.Color;
+
+public class HeadingFigure extends Figure
+{
+ public static final Color headerColor = new Color(null, 224, 233, 246);
+ Label label;
+ Color[] gradientColor = {ColorConstants.white,
+ ColorConstants.lightGray,
+ ColorConstants.lightBlue,
+ ColorConstants.gray};
+ boolean isSelected = false;
+ boolean isReadOnly = false;
+
+ public HeadingFigure()
+ {
+ label = new Label();
+ label.setBorder(new MarginBorder(2));
+ ToolbarLayout toolbarLayout = new ToolbarLayout(false);
+ toolbarLayout.setMinorAlignment(ToolbarLayout.ALIGN_CENTER);
+ setLayoutManager(toolbarLayout);
+ add(label);
+ }
+
+ public void setGradientColors(Color[] colors)
+ {
+ this.gradientColor = colors;
+ }
+
+ public void setSelected(boolean isSelected)
+ {
+ this.isSelected = isSelected;
+ }
+
+ public void setIsReadOnly(boolean isReadOnly)
+ {
+ this.isReadOnly = isReadOnly;
+ }
+
+ public void paint(Graphics graphics)
+ {
+ super.paint(graphics);
+
+ graphics.pushState();
+ try
+ {
+ // Fill for the header section
+ //
+ Rectangle r = getBounds().getCopy();
+ graphics.setBackgroundColor(ColorConstants.lightGray);
+
+ Color gradient1 = isReadOnly ? gradientColor[1] : headerColor;
+ if (isSelected && isReadOnly) gradient1 = gradientColor[3];
+ else if (isSelected && !isReadOnly) gradient1 = gradientColor[2];
+ Color gradient2 = gradientColor[0];
+ graphics.setForegroundColor(gradient1);
+ graphics.setBackgroundColor(gradient2);
+ Rectangle labelBounds = label.getBounds();
+ graphics.fillGradient(r.x+1, r.y+1, r.width-2, labelBounds.height - 2, true);
+ graphics.setForegroundColor(ColorConstants.darkGray);
+ label.paint(graphics);
+ }
+ finally
+ {
+ graphics.popState();
+ }
+ }
+
+ public Label getLabel()
+ {
+ return label;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RoundedLineBorder.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/RoundedLineBorder.java
similarity index 71%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RoundedLineBorder.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/RoundedLineBorder.java
index 75dbff7..aac092b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RoundedLineBorder.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/RoundedLineBorder.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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
@@ -8,29 +8,28 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.graph.figures;
-
+package org.eclipse.wst.xsd.adt.typeviz.design.figures;
+
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LineBorder;
import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.swt.graphics.Color;
-
public class RoundedLineBorder extends LineBorder
-{
+{
protected int arcLength;
protected int lineStyle = Graphics.LINE_SOLID;
public RoundedLineBorder(Color c, int width, int arcLength)
{
- super(c, width);
+ super(c, width);
this.arcLength = arcLength;
}
public RoundedLineBorder(int width, int arcLength)
{
- super(width);
+ super(width);
this.arcLength = arcLength;
}
@@ -50,18 +49,18 @@
public void paint(IFigure figure, Graphics graphics, Insets insets)
{
- int rlbWidth = getWidth();
- tempRect.setBounds(getPaintRectangle(figure, insets));
- if (rlbWidth%2 == 1)
+ int rlbWidth = getWidth();
+ tempRect.setBounds(getPaintRectangle(figure, insets));
+ if (rlbWidth%2 == 1)
{
- tempRect.width--;
- tempRect.height--;
- }
- tempRect.shrink(rlbWidth/2,rlbWidth/2);
- graphics.setLineWidth(rlbWidth);
+ tempRect.width--;
+ tempRect.height--;
+ }
+ tempRect.shrink(rlbWidth/2,rlbWidth/2);
+ graphics.setLineWidth(rlbWidth);
graphics.setLineStyle(lineStyle);
- if (getColor() != null)
- graphics.setForegroundColor(getColor());
- graphics.drawRoundRectangle(tempRect, arcLength, arcLength);
+ if (getColor() != null)
+ graphics.setForegroundColor(getColor());
+ graphics.drawRoundRectangle(tempRect, arcLength, arcLength);
}
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/StructureFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/StructureFigure.java
new file mode 100644
index 0000000..8d3d14d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/StructureFigure.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.figures;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+
+public class StructureFigure extends BoxFigure implements IStructureFigure
+{
+ public void editPartAttached(EditPart owner)
+ {
+ // nothing to do here :-)
+ }
+
+ public void addSelectionFeedback()
+ {
+ LineBorder boxFigureLineBorder = (LineBorder)getBorder();
+ boxFigureLineBorder.setWidth(2);
+ // TODO (cs) need to fix this
+ //boxFigureLineBorder.setColor(getComplexType().isReadOnly() ? ColorConstants.darkGray : ColorConstants.darkBlue);
+ getHeadingFigure().setSelected(true);
+ repaint();
+ }
+
+ public void removeSelectionFeedback()
+ {
+ LineBorder boxFigureLineBorder = (LineBorder)getBorder();
+ boxFigureLineBorder.setWidth(1);
+ getHeadingFigure().setSelected(false);
+ repaint();
+ }
+
+ public boolean hitTestHeader(Point location)
+ {
+ IFigure target = getHeadingFigure();
+ Rectangle b = target.getBounds().getCopy();
+ target.translateToAbsolute(b);
+ return b.contains(location);
+ }
+
+ public void refreshVisuals(Object model)
+ {
+ IStructure structure = (IStructure)model;
+ getNameLabel().setText(structure.getName());
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/TypeVizFigureFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/TypeVizFigureFactory.java
new file mode 100644
index 0000000..b0e977a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/TypeVizFigureFactory.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.figures;
+
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IModelGroupFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.ModelGroupFigure;
+
+public class TypeVizFigureFactory implements IExtendedFigureFactory
+{
+ public IStructureFigure createStructureFigure(Object model)
+ {
+ StructureFigure figure = new StructureFigure();
+ figure.setBorder(new LineBorder(1));
+ ToolbarLayout toolbarLayout = new ToolbarLayout();
+ toolbarLayout.setStretchMinorAxis(true);
+ figure.setLayoutManager(toolbarLayout);
+
+ if (model instanceof ITreeElement)
+ {
+ figure.getNameLabel().setIcon(((ITreeElement)model).getImage());
+ }
+ //figure.getHeadingFigure().setIsReadOnly(getComplexType().isReadOnly());
+ // we should organize ITreeElement and integrate it with the facade
+ return figure;
+ }
+
+ public IFieldFigure createFieldFigure(Object model)
+ {
+ // TODO Auto-generated method stub
+ return new FieldFigure();
+ }
+
+ public ICompartmentFigure createCompartmentFigure(Object model)
+ {
+ CompartmentFigure figure = new CompartmentFigure();
+ figure.setBorder(new MarginBorder(1));
+ ToolbarLayout toolbarLayout = new ToolbarLayout(false);
+ toolbarLayout.setStretchMinorAxis(true);
+ figure.setLayoutManager(toolbarLayout);
+ return figure;
+ }
+
+ public IModelGroupFigure createModelGroupFigure(Object model)
+ {
+ // TODO Auto-generated method stub
+ return new ModelGroupFigure();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/ColumnData.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/ColumnData.java
new file mode 100644
index 0000000..5c82e84
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/ColumnData.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.layouts;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class ColumnData
+{
+ HashMap map = new HashMap();
+
+ class Entry
+ {
+ int width = 0;
+ int weight = 1;
+ }
+
+ public void clearColumnWidths()
+ {
+ for (Iterator i = map.values().iterator(); i.hasNext();)
+ {
+ Entry entry = (Entry)i.next();
+ entry.width = 0;
+ }
+ }
+
+ private Entry lookupOrCreateColumnEntry(String identifier)
+ {
+ Entry entry = (Entry)map.get(identifier);
+ if (entry == null)
+ {
+ entry = new Entry();
+ map.put(identifier, entry);
+ }
+ return entry;
+ }
+
+ void stretchColumnWidthIfNeeded(String identifier, int width)
+ {
+ Entry entry = lookupOrCreateColumnEntry(identifier);
+ entry.width = Math.max(entry.width, width);
+ }
+
+ int getColumnWidth(String identifier)
+ {
+ Entry entry = (Entry)map.get(identifier);
+ if (entry != null)
+ {
+ return entry.width;
+ }
+ else
+ {
+ return 0;//hmm should we return -1 ?
+ }
+ }
+
+ int getColumnWeight(String identifier)
+ {
+ Entry entry = (Entry)map.get(identifier);
+ if (entry != null)
+ {
+ return entry.weight;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ public void setColumnWeight(String identifier, int weight)
+ {
+ Entry entry = lookupOrCreateColumnEntry(identifier);
+ entry.weight = weight;
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/RowLayout.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/RowLayout.java
new file mode 100644
index 0000000..21fc9bf
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/RowLayout.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.typeviz.design.layouts;
+
+import java.util.HashMap;
+import java.util.List;
+import org.eclipse.draw2d.AbstractLayout;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+public class RowLayout extends AbstractLayout
+{
+ // layout is associated with a parent context
+ // any layout manager under the parent context is connected
+ // column rows are maintained accross container boundaries
+ protected ColumnData columnData;
+ protected HashMap figureToContstraintMap = new HashMap();
+
+ public RowLayout()
+ {
+ super();
+ }
+
+
+ // this method computes the minimum size required to display the figures
+ //
+ private Dimension calculateChildrenSize(IFigure container, List children, int wHint, int hHint, boolean preferred)
+ {
+ Dimension childSize;
+ IFigure child;
+ int height = 0;
+ int width = 0;
+
+ //IRowFigure figure = (IRowFigure)container;
+
+ // for each cell in the row
+ //
+ for (int i = 0; i < children.size(); i++)
+ {
+ child = (IFigure) children.get(i);
+ String columnIdenifier = (String)getConstraint(child);
+
+ // first we compute the child size without regard for columnData
+ //
+ childSize = child.getPreferredSize(wHint, hHint);// : child.getMinimumSize(wHint, hHint);
+
+ // now that the columnData has been populated we can consider if the row needs to be larger
+ //
+ int effectiveWidth = childSize.width;
+ if (columnIdenifier != null)
+ {
+ columnData.stretchColumnWidthIfNeeded(columnIdenifier, childSize.width);
+ effectiveWidth = columnData.getColumnWidth(columnIdenifier);
+ }
+ height = Math.max(childSize.height, height);
+ width += effectiveWidth;
+ }
+ return new Dimension(width, height);
+ }
+
+
+
+ protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint)
+ {
+ List children = container.getChildren();
+ Dimension prefSize = calculateChildrenSize(container, children, wHint, hHint, true);
+ //System.out.println("preferredSize=" + prefSize);
+ return prefSize;
+ }
+
+ public void layout(IFigure parent)
+ {
+ // layout a table with the columns aligned
+ //IRowFigure rowFigure = (IRowFigure)parent;
+ Rectangle clientArea = parent.getClientArea();
+ List children = parent.getChildren();
+ Rectangle r = new Rectangle();
+ r.x = clientArea.x;
+ r.y = clientArea.y;
+ r.height = clientArea.height;
+
+ int childrenSize = children.size();
+ Rectangle[] bounds = new Rectangle[childrenSize];
+
+ // for each cell in the row
+ //
+ int requiredWidth = 0;
+ int totalColumnWeight = 0;
+ for (int i = 0; i < childrenSize; i++)
+ {
+ IFigure child = (IFigure) children.get(i);
+ //String columnIdenifier = figure.getColumnIdentifier(child);
+ // first we compute the child size without regard for columnData
+ //
+ Dimension childSize = child.getPreferredSize(-1, -1);
+
+ int columnWidth = -1;
+ //String columnIdentifier = rowFigure.getColumnIdentifier(child);
+ String columnIdentifier = (String)getConstraint(child);
+ if (columnIdentifier != null)
+ {
+ //columnData.stretchColumnWidthIfNeeded(columnIdentifier, childSize.width);
+ columnWidth = columnData.getColumnWidth(columnIdentifier);
+ totalColumnWeight += columnData.getColumnWeight(columnIdentifier);
+ //System.out.println("columnWidth(" + columnIdentifier + ")=" + columnWidth);
+ }
+ r.width = Math.max(childSize.width, columnWidth);
+ requiredWidth += r.width;
+ bounds[i] = new Rectangle(r);
+ r.x += r.width;
+ }
+ if (totalColumnWeight < 1)
+ {
+ totalColumnWeight = 1;
+ }
+ //System.out.println("clientArea.width=" + clientArea.width + ", " + r.x);
+ int extraWidth = Math.max(clientArea.width - requiredWidth, 0);
+ //System.out.println("extraWidth=" + extraWidth + " totalColumnWeight=" + totalColumnWeight);
+ int extraWidthAllocated = 0;
+ for (int i = 0; i < childrenSize; i++)
+ {
+ IFigure child = (IFigure) children.get(i);
+ Rectangle b = bounds[i];
+ if (extraWidth > 0)
+ {
+ String columnIdentifier = (String)getConstraint(child);
+ if (columnIdentifier != null)
+ {
+ int weight = columnData.getColumnWeight(columnIdentifier);
+ float fraction = (float)weight / (float)totalColumnWeight;
+ int extraWidthForChild = (int)(extraWidth * fraction);
+ //System.out.println("extraWidthForChild(" + fraction + ")=" + extraWidthForChild);
+ b.width += extraWidthForChild;
+ b.x += extraWidthAllocated;
+ extraWidthAllocated += extraWidthForChild;
+ }
+ else
+ {
+ b.x += extraWidthAllocated;
+ }
+ }
+ child.setBounds(new Rectangle(b));
+ }
+ }
+
+ public ColumnData getColumnData()
+ {
+ return columnData;
+ }
+
+ public void setColumnData(ColumnData columnData)
+ {
+ this.columnData = columnData;
+ }
+
+ public Object getConstraint(IFigure child)
+ {
+ return figureToContstraintMap.get(child);
+ }
+
+ public void setConstraint(IFigure child, Object constraint)
+ {
+ figureToContstraintMap.put(child, constraint);
+ }
+
+ public void invalidate()
+ {
+ //figureToContstraintMap.clear();
+ //this.columnData.clearColumnWidths();
+ super.invalidate();
+ //System.out.println("invalidate");
+ }
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/ISelectionMapper.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/ISelectionMapper.java
index 24a0537..516cf7f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/ISelectionMapper.java
@@ -1,17 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editparts;
+package org.eclipse.wst.xsd.editor;
-public interface IFeedbackHandler
+import org.eclipse.jface.viewers.ISelection;
+
+public interface ISelectionMapper
{
- public void addFeedback();
- public void removeFeedback();
-}
\ No newline at end of file
+ ISelection mapSelection(ISelection selectedObject);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/InternalXSDMultiPageEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/InternalXSDMultiPageEditor.java
new file mode 100644
index 0000000..b00f1d3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/InternalXSDMultiPageEditor.java
@@ -0,0 +1,895 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IPostSelectionProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.INavigationLocation;
+import org.eclipse.ui.INavigationLocationProvider;
+import org.eclipse.ui.IPropertyListener;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.eclipse.wst.sse.ui.internal.contentoutline.ConfigurableContentOutlinePage;
+import org.eclipse.wst.xml.core.internal.document.NodeImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.adt.actions.AddFieldAction;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.DeleteAction;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.adt.editor.ADTMultiPageEditor;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.editor.internal.adapters.CategoryAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.XSDEditPartFactory;
+import org.eclipse.wst.xsd.editor.internal.navigation.DesignViewNavigationLocation;
+import org.eclipse.wst.xsd.editor.internal.navigation.MultiPageEditorTextSelectionNavigationLocation;
+import org.eclipse.wst.xsd.editor.internal.utils.OpenOnSelectionHelper;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDComplexTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDSimpleTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.wst.xsd.ui.common.actions.OpenInNewEditor;
+import org.eclipse.wst.xsd.ui.common.actions.SetMultiplicityAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetTypeAction;
+import org.eclipse.wst.xsd.ui.internal.text.XSDModelReconcileAdapter;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class InternalXSDMultiPageEditor extends ADTMultiPageEditor implements ITabbedPropertySheetPageContributor, IPropertyListener, INavigationLocationProvider
+{
+ ResourceSet resourceSet;
+ Resource xsdResource;
+ // IModel model;
+ IStructuredModel structuredModel;
+ XSDSchema xsdSchema;
+ private OutlineTreeSelectionChangeListener fOutlineListener;
+ private SourceEditorSelectionListener fSourceEditorSelectionListener;
+ private XSDSelectionManagerSelectionListener fXSDSelectionListener;
+ private StructuredTextEditor structuredTextEditor;
+
+ public IModel buildModel(IFileEditorInput editorInput)
+ {
+ try
+ {
+ EPackage.Registry reg = EPackage.Registry.INSTANCE;
+ XSDPackage xsdPackage = (XSDPackage) reg.getEPackage(XSDPackage.eNS_URI);
+ xsdSchema = xsdPackage.getXSDFactory().createXSDSchema();
+ resourceSet = XSDSchemaImpl.createResourceSet();
+ IFile resourceFile = editorInput.getFile();
+ structuredModel = StructuredModelManager.getModelManager().getModelForEdit(resourceFile);
+ // If the resource is in the workspace....
+ // otherwise the user is trying to open an external file
+ if (resourceFile != null)
+ {
+ String pathName = resourceFile.getFullPath().toString();
+ xsdResource = resourceSet.getResource(URI.createPlatformResourceURI(pathName), true);
+ resourceSet.getResources().add(xsdResource);
+ Object obj = xsdResource.getContents().get(0);
+ if (obj instanceof XSDSchema)
+ {
+ xsdSchema = (XSDSchema) obj;
+ xsdSchema.setElement(((IDOMModel) structuredModel).getDocument().getDocumentElement());
+ model = (IModel) XSDAdapterFactory.getInstance().adapt(xsdSchema);
+ }
+
+ // If the input schema is from the WSDL Editor, then use that inline schema
+ if (editorInput instanceof XSDFileEditorInput)
+ {
+ xsdSchema = ((XSDFileEditorInput) editorInput).getSchema();
+ model = (IModel) XSDAdapterFactory.getInstance().adapt(xsdSchema);
+ }
+ if (xsdSchema.getElement() != null)
+
+ // TODO (cs) ... we need to look into performance issues when we add elements
+ // seems to be that formatting is causig lots of notification and things get terribly slow
+ // I'm specializing the method below to add an isModelStateChanging check that should
+ // help here ... but we need to investigate further
+ new XSDModelReconcileAdapter(xsdSchema.getElement().getOwnerDocument(), xsdSchema)
+ {
+ public void handleNotifyChange(INodeNotifier notifier, int eventType, Object feature, Object oldValue, Object newValue, int index)
+ {
+ if (notifier instanceof NodeImpl)
+ {
+ NodeImpl nodeImpl = (NodeImpl)notifier;
+ if (!nodeImpl.getModel().isModelStateChanging())
+ {
+ //System.out.println("handleNotifyChange " + eventType);
+ super.handleNotifyChange(notifier, eventType, feature, oldValue, newValue, index);
+ }
+ }
+ }
+ };
+ xsdResource.setModified(false);
+ }
+ }
+ catch (StackOverflowError e)
+ {
+ }
+ catch (Exception ex)
+ {
+ }
+ return model;
+ }
+
+ public void dispose()
+ {
+ structuredModel.releaseFromEdit();
+ if (fOutlinePage != null)
+ {
+ if (fOutlinePage instanceof ConfigurableContentOutlinePage && fOutlineListener != null)
+ {
+ ((ConfigurableContentOutlinePage) fOutlinePage).removeDoubleClickListener(fOutlineListener);
+ }
+ if (fOutlineListener != null)
+ {
+ fOutlinePage.removeSelectionChangedListener(fOutlineListener);
+ }
+ }
+ getSelectionManager().removeSelectionChangedListener(fXSDSelectionListener);
+ super.dispose();
+ }
+
+ protected void configureGraphicalViewer()
+ {
+ super.configureGraphicalViewer();
+ // get edit part factory from extension
+ EditPartFactory editPartFactory = XSDEditorPlugin.getDefault().getXSDEditorConfiguration().getEditPartFactory();
+ if (editPartFactory != null)
+ {
+ graphicalViewer.setEditPartFactory(editPartFactory);
+ }
+ else
+ {
+ // otherwise use default
+ graphicalViewer.setEditPartFactory(new XSDEditPartFactory());
+ }
+ }
+
+ public Object getAdapter(Class type)
+ {
+ if (type == org.eclipse.ui.views.properties.IPropertySheetPage.class)
+ {
+ XSDTabbedPropertySheetPage page = new XSDTabbedPropertySheetPage(this);
+ return page;
+ }
+ else if (type == ISelectionProvider.class)
+ {
+ return selectionManager;
+ }
+ else if (type == XSDSchema.class)
+ {
+ return xsdSchema;
+ }
+ else if (type == IContentOutlinePage.class)
+ {
+ Object adapter = super.getAdapter(type);
+ if (adapter != null)
+ {
+ IContentOutlinePage page = (IContentOutlinePage) adapter;
+ fOutlineListener = new OutlineTreeSelectionChangeListener();
+ page.addSelectionChangedListener(fOutlineListener);
+ if (page instanceof ConfigurableContentOutlinePage)
+ {
+ ((ConfigurableContentOutlinePage) page).addDoubleClickListener(fOutlineListener);
+ }
+ return page;
+ }
+ }
+ else if (type == XSDElementReferenceEditManager.class)
+ {
+ IEditorInput editorInput = getEditorInput();
+ if (editorInput instanceof IFileEditorInput)
+ {
+ IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput;
+ // TODO (cs) currently we assume the schema editor will only ever edit a
+ // single schema
+ /// but if we want to enable the schema editor to edit wsdl files we
+ // should pass in
+ // an array of schemas
+ // hmm.. perhaps just pass in a ResourceSet
+ XSDSchema[] schemas = {xsdSchema};
+ return new XSDElementReferenceEditManager(fileEditorInput.getFile(), schemas);
+ }
+ }
+ else if (type == XSDTypeReferenceEditManager.class)
+ {
+ IEditorInput editorInput = getEditorInput();
+ if (editorInput instanceof IFileEditorInput)
+ {
+ IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput;
+ // TODO (cs) currently we assume the schema editor will only ever edit a
+ // single schema
+ // but if we want to enable the schema editor to edit wsdl files we
+ // should pass in
+ // an array of schemas
+ // hmm.. perhaps just pass in a ResourceSet
+ XSDSchema[] schemas = {xsdSchema};
+ return new XSDTypeReferenceEditManager(fileEditorInput.getFile(), schemas);
+ }
+ }
+ else if (type == ITextEditor.class)
+ {
+ return getTextEditor();
+ }
+ else if (type == ISelectionMapper.class)
+ {
+ return new XSDSelectionMapper();
+ }
+ return super.getAdapter(type);
+ }
+
+ public String getContributorId()
+ {
+ return "org.eclipse.wst.xsd.editor";
+ }
+
+ public XSDSchema getXSDSchema()
+ {
+ return xsdSchema;
+ }
+
+ public StructuredTextEditor getTextEditor()
+ {
+ return structuredTextEditor;
+ }
+
+ protected void createSourcePage()
+ {
+ try
+ {
+ structuredTextEditor = new StructuredTextEditor();
+ int index = addPage(structuredTextEditor, getEditorInput());
+ setPageText(index, "Source");
+ structuredTextEditor.update();
+ structuredTextEditor.setEditorPart(this);
+ structuredTextEditor.addPropertyListener(this);
+ firePropertyChange(PROP_TITLE);
+ }
+ catch (PartInitException e)
+ {
+ ErrorDialog.openError(getSite().getShell(), "Error creating nested text editor", null, e.getStatus());
+ }
+ }
+
+ /**
+ * Method openOnGlobalReference. The comp argument is a resolved xsd schema
+ * object from another file. This is created and called from another schema
+ * model to allow F3 navigation to open a new editor and choose the referenced
+ * object within that editor context
+ *
+ * @param comp
+ */
+ public void openOnGlobalReference(XSDConcreteComponent comp)
+ {
+ XSDNamedComponent namedComponent = openOnSelectionHelper.openOnGlobalReference(comp);
+
+ if (namedComponent != null)
+ {
+ XSDBaseAdapter adapter = (XSDBaseAdapter) XSDAdapterFactory.getInstance().adapt(namedComponent);
+ getSelectionManager().setSelection(new StructuredSelection(adapter));
+ IAction action = getActionRegistry().getAction(SetInputToGraphView.ID);
+ if (action != null)
+ {
+ action.run();
+ }
+ }
+ }
+
+ protected OpenOnSelectionHelper openOnSelectionHelper;
+
+ public OpenOnSelectionHelper getOpenOnSelectionHelper()
+ {
+ return openOnSelectionHelper;
+ }
+
+ /**
+ * Creates the pages of the multi-page editor.
+ */
+ protected void createPages()
+ {
+ model = buildModel((IFileEditorInput) getEditorInput());
+ selectionProvider = getSelectionManager();
+ getEditorSite().setSelectionProvider(selectionProvider);
+ createGraphPage();
+ createSourcePage();
+ openOnSelectionHelper = new OpenOnSelectionHelper(getTextEditor(), getXSDSchema());
+ ISelectionProvider provider = getTextEditor().getSelectionProvider();
+ fSourceEditorSelectionListener = new SourceEditorSelectionListener();
+ if (provider instanceof IPostSelectionProvider)
+ {
+ ((IPostSelectionProvider) provider).addPostSelectionChangedListener(fSourceEditorSelectionListener);
+ }
+ else
+ {
+ provider.addSelectionChangedListener(fSourceEditorSelectionListener);
+ }
+ fXSDSelectionListener = new XSDSelectionManagerSelectionListener();
+ getSelectionManager().addSelectionChangedListener(fXSDSelectionListener);
+ }
+
+ protected void createActions()
+ {
+ super.createActions();
+ ActionRegistry registry = getActionRegistry();
+ BaseSelectionAction action = new AddFieldAction(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new DeleteAction(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDElementAction(this, AddXSDElementAction.ID, "Add Element", false);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDElementAction(this, AddXSDElementAction.REF_ID, "Add Element Ref", true);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDModelGroupAction(this, XSDCompositor.SEQUENCE_LITERAL, AddXSDModelGroupAction.SEQUENCE_ID);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDModelGroupAction(this, XSDCompositor.CHOICE_LITERAL, AddXSDModelGroupAction.CHOICE_ID);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDModelGroupAction(this, XSDCompositor.ALL_LITERAL, AddXSDModelGroupAction.ALL_ID);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDModelGroupDefinitionAction(this, false);
+ action.setId(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITION_ID);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDModelGroupDefinitionAction(this, true);
+ action.setId(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITIONREF_ID);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDComplexTypeDefinitionAction(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDSimpleTypeDefinitionAction(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new AddXSDAttributeDeclarationAction(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new OpenInNewEditor(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new ShowPropertiesViewAction(this);
+ registry.registerAction(action);
+ action = new AddXSDAttributeGroupDefinitionAction(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ action = new DeleteXSDConcreteComponentAction(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+
+ SetTypeAction setNewComplexTypeAction = new SetTypeAction("New...", SetTypeAction.SET_NEW_TYPE_ID, this);
+ setNewComplexTypeAction.setSelectionProvider(getSelectionManager());
+ registry.registerAction(setNewComplexTypeAction);
+
+ SetTypeAction setExistingTypeAction = new SetTypeAction("Browse...", SetTypeAction.SELECT_EXISTING_TYPE_ID, this);
+ setExistingTypeAction.setSelectionProvider(getSelectionManager());
+ registry.registerAction(setExistingTypeAction);
+
+ addMultiplicityMenu(registry);
+ }
+
+ protected void addMultiplicityMenu(ActionRegistry registry)
+ {
+ SetMultiplicityAction oneMultiplicity = new SetMultiplicityAction(this, "1..1 (" + "Required" + ")", SetMultiplicityAction.REQUIRED_ID);
+ oneMultiplicity.setMaxOccurs(1);
+ oneMultiplicity.setMinOccurs(1);
+ oneMultiplicity.setSelectionProvider(getSelectionManager());
+ registry.registerAction(oneMultiplicity);
+
+ SetMultiplicityAction zeroOrMoreMultiplicity = new SetMultiplicityAction(this, "0..* (" + "Zero or more" + ")", SetMultiplicityAction.ZERO_OR_MORE_ID);
+ zeroOrMoreMultiplicity.setMaxOccurs(-1);
+ zeroOrMoreMultiplicity.setMinOccurs(0);
+ zeroOrMoreMultiplicity.setSelectionProvider(getSelectionManager());
+ registry.registerAction(zeroOrMoreMultiplicity);
+
+ SetMultiplicityAction zeroOrOneMultiplicity = new SetMultiplicityAction(this, "0..1 (" + "Optional" + ")", SetMultiplicityAction.ZERO_OR_ONE_ID);
+ zeroOrOneMultiplicity.setMaxOccurs(1);
+ zeroOrOneMultiplicity.setMinOccurs(0);
+ zeroOrOneMultiplicity.setSelectionProvider(getSelectionManager());
+ registry.registerAction(zeroOrOneMultiplicity);
+
+ SetMultiplicityAction oneOrMoreMultiplicity = new SetMultiplicityAction(this, "1..* (" + "One or more" + ")", SetMultiplicityAction.ONE_OR_MORE_ID);
+ oneOrMoreMultiplicity.setMaxOccurs(-1);
+ oneOrMoreMultiplicity.setMinOccurs(1);
+ oneOrMoreMultiplicity.setSelectionProvider(getSelectionManager());
+ registry.registerAction(oneOrMoreMultiplicity);
+
+ }
+
+
+ /**
+ * Closes all project files on project close.
+ */
+ public void resourceChanged(final IResourceChangeEvent event)
+ {
+ if (event.getType() == IResourceChangeEvent.PRE_CLOSE)
+ {
+ Display.getDefault().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ IWorkbenchPage[] pages = getSite().getWorkbenchWindow().getPages();
+ for (int i = 0; i < pages.length; i++)
+ {
+ if (((FileEditorInput) structuredTextEditor.getEditorInput()).getFile().getProject().equals(event.getResource()))
+ {
+ IEditorPart editorPart = pages[i].findEditor(structuredTextEditor.getEditorInput());
+ pages[i].closeEditor(editorPart, true);
+ }
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if the command stack is dirty
+ *
+ * @see org.eclipse.ui.ISaveablePart#isDirty()
+ */
+ public boolean isDirty()
+ {
+ super.isDirty();
+ return structuredTextEditor.isDirty() || getCommandStack().isDirty();
+ }
+
+ /*
+ * This method is just to make firePropertyChanged accessbible from some
+ * (anonomous) inner classes.
+ */
+ protected void _firePropertyChange(int property)
+ {
+ super.firePropertyChange(property);
+ }
+
+ /**
+ * Posts the update code "behind" the running operation.
+ */
+ protected void postOnDisplayQue(Runnable runnable)
+ {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
+ if (windows != null && windows.length > 0)
+ {
+ Display display = windows[0].getShell().getDisplay();
+ display.asyncExec(runnable);
+ }
+ else
+ runnable.run();
+ }
+
+ /**
+ * Indicates that a property has changed.
+ *
+ * @param source
+ * the object whose property has changed
+ * @param propId
+ * the id of the property which has changed; property ids are
+ * generally defined as constants on the source class
+ */
+ public void propertyChanged(Object source, int propId)
+ {
+ switch (propId)
+ {
+ // had to implement input changed "listener" so that
+ // strucutedText could tell it containing editor that
+ // the input has change, when a 'resource moved' event is
+ // found.
+ case IEditorPart.PROP_INPUT :
+ case IEditorPart.PROP_DIRTY : {
+ if (source == structuredTextEditor)
+ {
+ if (structuredTextEditor.getEditorInput() != getEditorInput())
+ {
+ setInput(structuredTextEditor.getEditorInput());
+ // title should always change when input changes.
+ // create runnable for following post call
+ Runnable runnable = new Runnable()
+ {
+ public void run()
+ {
+ _firePropertyChange(IWorkbenchPart.PROP_TITLE);
+ }
+ };
+ // Update is just to post things on the display queue
+ // (thread). We have to do this to get the dirty
+ // property to get updated after other things on the
+ // queue are executed.
+ postOnDisplayQue(runnable);
+ }
+ }
+ break;
+ }
+ case IWorkbenchPart.PROP_TITLE : {
+ // update the input if the title is changed
+ if (source == structuredTextEditor)
+ {
+ if (structuredTextEditor.getEditorInput() != getEditorInput())
+ {
+ setInput(structuredTextEditor.getEditorInput());
+ }
+ }
+ break;
+ }
+ default : {
+ // propagate changes. Is this needed? Answer: Yes.
+ if (source == structuredTextEditor)
+ {
+ firePropertyChange(propId);
+ }
+ break;
+ }
+ }
+ }
+ /**
+ * Listener on SSE's outline page's selections that converts DOM selections
+ * into xsd selections and notifies XSD selection manager
+ */
+ class OutlineTreeSelectionChangeListener implements ISelectionChangedListener, IDoubleClickListener
+ {
+ public OutlineTreeSelectionChangeListener()
+ {
+ }
+
+ private ISelection getXSDSelection(ISelection selection)
+ {
+ ISelection sel = null;
+ if (selection instanceof IStructuredSelection)
+ {
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+ Object o = structuredSelection.getFirstElement();
+ if (o != null)
+ sel = new StructuredSelection(o);
+ }
+ return sel;
+ }
+
+ /**
+ * Determines DOM node based on object (xsd node)
+ *
+ * @param object
+ * @return
+ */
+ private Object getObjectForOtherModel(Object object)
+ {
+ Node node = null;
+ if (object instanceof Node)
+ {
+ node = (Node) object;
+ }
+ else if (object instanceof XSDComponent)
+ {
+ node = ((XSDComponent) object).getElement();
+ }
+ else if (object instanceof CategoryAdapter)
+ {
+ node = ((CategoryAdapter) object).getXSDSchema().getElement();
+ }
+ else if (object instanceof XSDBaseAdapter)
+ {
+ if (((XSDBaseAdapter) object).getTarget() instanceof XSDConcreteComponent)
+ {
+ node = ((XSDConcreteComponent) ((XSDBaseAdapter) object).getTarget()).getElement();
+ }
+ }
+ // the text editor can only accept sed nodes!
+ //
+ if (!(node instanceof IDOMNode))
+ {
+ node = null;
+ }
+ return node;
+ }
+
+ public void doubleClick(DoubleClickEvent event)
+ {
+ /*
+ * Selection in outline tree changed so set outline tree's selection into
+ * editor's selection and say it came from outline tree
+ */
+ if (getSelectionManager() != null && getSelectionManager().getEnableNotify())
+ {
+ ISelection selection = getXSDSelection(event.getSelection());
+ if (selection != null)
+ {
+ getSelectionManager().setSelection(selection, fOutlinePage);
+ }
+ if (getTextEditor() != null && selection instanceof IStructuredSelection)
+ {
+ int start = -1;
+ int length = 0;
+ Object o = ((IStructuredSelection) selection).getFirstElement();
+ if (o != null)
+ o = getObjectForOtherModel(o);
+ if (o instanceof IndexedRegion)
+ {
+ start = ((IndexedRegion) o).getStartOffset();
+ length = ((IndexedRegion) o).getEndOffset() - start;
+ }
+ if (start > -1)
+ {
+ getTextEditor().selectAndReveal(start, length);
+ }
+ }
+ }
+ }
+
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ /*
+ * Selection in outline tree changed so set outline tree's selection into
+ * editor's selection and say it came from outline tree
+ */
+ if (getSelectionManager() != null && getSelectionManager().getEnableNotify())
+ {
+ ISelection selection = getXSDSelection(event.getSelection());
+ if (selection != null)
+ {
+ getSelectionManager().setSelection(selection, fOutlinePage);
+ }
+ }
+ }
+ }
+ /**
+ * Listener on SSE's source editor's selections that converts DOM selections
+ * into xsd selections and notifies XSD selection manager
+ */
+ private class SourceEditorSelectionListener implements ISelectionChangedListener
+ {
+ /**
+ * Determines XSD node based on object (DOM node)
+ *
+ * @param object
+ * @return
+ */
+ private Object getXSDNode(Object object)
+ {
+ // get the element node
+ Element element = null;
+ if (object instanceof Node)
+ {
+ Node node = (Node) object;
+ if (node != null)
+ {
+ if (node.getNodeType() == Node.ELEMENT_NODE)
+ {
+ element = (Element) node;
+ }
+ else if (node.getNodeType() == Node.ATTRIBUTE_NODE)
+ {
+ element = ((Attr) node).getOwnerElement();
+ }
+ }
+ }
+ Object o = element;
+ if (element != null)
+ {
+ Object modelObject = getXSDSchema().getCorrespondingComponent(element);
+ if (modelObject != null)
+ {
+ o = modelObject;
+ o = XSDAdapterFactory.getInstance().adapt((Notifier) modelObject);
+ }
+ }
+ return o;
+ }
+
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ if (getSelectionManager().getEnableNotify() && getActivePage() == 1)
+ {
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection)
+ {
+ List xsdSelections = new ArrayList();
+ for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();)
+ {
+ Object domNode = i.next();
+ Object xsdNode = getXSDNode(domNode);
+ if (xsdNode != null)
+ {
+ xsdSelections.add(xsdNode);
+ }
+ }
+ if (!xsdSelections.isEmpty())
+ {
+ StructuredSelection xsdSelection = new StructuredSelection(xsdSelections);
+ getSelectionManager().setSelection(xsdSelection, getTextEditor().getSelectionProvider());
+ }
+ }
+ }
+ }
+ }
+ /**
+ * Listener on XSD's selection manager's selections that converts XSD
+ * selections into DOM selections and notifies SSE's selection provider
+ */
+ private class XSDSelectionManagerSelectionListener implements ISelectionChangedListener
+ {
+ /**
+ * Determines DOM node based on object (xsd node)
+ *
+ * @param object
+ * @return
+ */
+ private Object getObjectForOtherModel(Object object)
+ {
+ Node node = null;
+ if (object instanceof Node)
+ {
+ node = (Node) object;
+ }
+ else if (object instanceof XSDComponent)
+ {
+ node = ((XSDComponent) object).getElement();
+ }
+ else if (object instanceof CategoryAdapter)
+ {
+ node = ((CategoryAdapter) object).getXSDSchema().getElement();
+ }
+ else if (object instanceof XSDBaseAdapter)
+ {
+ if (((XSDBaseAdapter) object).getTarget() instanceof XSDConcreteComponent)
+ {
+ node = ((XSDConcreteComponent) ((XSDBaseAdapter) object).getTarget()).getElement();
+ }
+ }
+ // the text editor can only accept sed nodes!
+ //
+ if (!(node instanceof IDOMNode))
+ {
+ node = null;
+ }
+ return node;
+ }
+
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ // do not fire selection in source editor if selection event came
+ // from source editor
+ if (event.getSource() != getTextEditor().getSelectionProvider())
+ {
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection)
+ {
+ List otherModelObjectList = new ArrayList();
+ for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();)
+ {
+ Object modelObject = i.next();
+ Object otherModelObject = getObjectForOtherModel(modelObject);
+ if (otherModelObject != null)
+ {
+ otherModelObjectList.add(otherModelObject);
+ }
+ }
+ if (!otherModelObjectList.isEmpty())
+ {
+ // here's an ugly hack... if we allow text selections to fire during
+ // SetInputToGraphView action we screw up the navigation history!
+ //
+ //TODO (cs) ... we need to prevent the source editor from messing up the navigation history
+ //
+ if (getActivePage() == 1)
+ {
+ StructuredSelection nodeSelection = new StructuredSelection(otherModelObjectList);
+ getTextEditor().getSelectionProvider().setSelection(nodeSelection);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public INavigationLocation createEmptyNavigationLocation()
+ {
+ if (getActivePage() == 0)
+ {
+ return new DesignViewNavigationLocation(this);
+ }
+ else
+ {
+ return new MultiPageEditorTextSelectionNavigationLocation(getTextEditor(), false);
+ }
+ }
+
+ public INavigationLocation createNavigationLocation()
+ {
+ if (getActivePage() == 0)
+ {
+ try
+ {
+ RootEditPart rootEditPart = graphicalViewer.getRootEditPart();
+ EditPart editPart = rootEditPart.getContents();
+ if (editPart instanceof RootContentEditPart)
+ {
+ RootContentEditPart rootContentEditPart = (RootContentEditPart)editPart;
+ Object input = rootContentEditPart.getInput();
+ if (input instanceof Adapter)
+ {
+ XSDConcreteComponent concreteComponent = (XSDConcreteComponent)((Adapter)input).getTarget();
+ return new DesignViewNavigationLocation(this, concreteComponent);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ else
+ {
+ return new MultiPageEditorTextSelectionNavigationLocation(getTextEditor(), true);
+ }
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.java
new file mode 100644
index 0000000..0c335f7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS
+{
+ static
+ {
+ NLS.initializeMessages("org.eclipse.wst.xsd.editor" + ".Messages", Messages.class);
+ }
+
+ public Messages()
+ {
+ super();
+ }
+
+ public static String UI_LABEL_BASE_TYPE;
+ public static String UI_LABEL_DERIVED_BY;
+ public static String UI_LABEL_INHERIT_FROM;
+ public static String UI_LABEL_INHERIT_BY;
+ public static String UI_LABEL_DOCUMENTATION;
+ public static String UI_LABEL_APP_INFO;
+ public static String UI_LABEL_SET_TYPE;
+ public static String UI_LABEL_TYPE;
+ public static String UI_LABEL_MINOCCURS;
+ public static String UI_LABEL_MAXOCCURS;
+ public static String UI_NO_TYPE;
+ public static String UI_PAGE_HEADING_REFERENCE;
+ public static String UI_LABEL_READ_ONLY;
+ public static String UI_LABEL_COMPONENTS;
+
+
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.properties b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.properties
new file mode 100644
index 0000000..82f42e0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# Copyright (c) 2001, 2006 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
+###############################################################################
+
+UI_LABEL_BASE_TYPE = Base Type:
+UI_LABEL_DERIVED_BY = Derived By:
+
+UI_LABEL_INHERIT_FROM = Inherit From:
+UI_LABEL_INHERIT_BY = Inherit By:
+
+UI_LABEL_DOCUMENTATION = Documentation
+UI_LABEL_APP_INFO = App Info
+
+UI_LABEL_SET_TYPE = Set Type
+UI_LABEL_TYPE = Type:
+
+UI_LABEL_MINOCCURS = Minimum Occurrence:
+UI_LABEL_MAXOCCURS = Maximum Occurrence:
+
+UI_PAGE_HEADING_REFERENCE = Reference
+UI_LABEL_READ_ONLY = Read-Only
+
+UI_NO_TYPE = No Type
+
+UI_LABEL_COMPONENTS = Components:
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorConfiguration.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorConfiguration.java
new file mode 100644
index 0000000..1ba155b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorConfiguration.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.wst.xsd.editor.internal.actions.IXSDToolbarAction;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+
+public class XSDEditorConfiguration
+{
+ public static final String XSDEDITORCONFIGURATIONEXTENSIONID = "org.eclipse.wst.xsd.ui.XSDEditorExtensionConfiguration";
+ public static final String CLASSNAME = "class";
+ public static final String ADAPTERFACTORY = "adapterFactory";
+ public static final String TOOLBARACTION = "toolbarAction";
+ public static final String FIGUREFACTORY = "figureFactory";
+ public static final String EDITPARTFACTORY = "editPartFactory";
+
+ List definedExtensionsList = null;
+
+ public XSDEditorConfiguration()
+ {
+
+ }
+
+ public XSDAdapterFactory getAdapterFactory()
+ {
+ if (definedExtensionsList == null)
+ {
+ readXSDConfigurationRegistry();
+ }
+ if (!definedExtensionsList.isEmpty())
+ {
+ return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getAdapterFactory();
+ }
+ return null;
+ }
+
+ public EditPartFactory getEditPartFactory()
+ {
+ if (definedExtensionsList == null)
+ {
+ readXSDConfigurationRegistry();
+ }
+ if (!definedExtensionsList.isEmpty())
+ {
+ return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getEditPartFactory();
+ }
+ return null;
+ }
+
+ public IExtendedFigureFactory getFigureFactory()
+ {
+ if (definedExtensionsList == null)
+ {
+ readXSDConfigurationRegistry();
+ }
+ if (!definedExtensionsList.isEmpty())
+ {
+ return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getFigureFactory();
+ }
+ return null;
+ }
+
+ public List getToolbarActions()
+ {
+ if (definedExtensionsList == null)
+ {
+ readXSDConfigurationRegistry();
+ }
+ if (!definedExtensionsList.isEmpty())
+ {
+ return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getActionList();
+ }
+ return Collections.EMPTY_LIST;
+ }
+
+ protected Object loadClass(IConfigurationElement element, String classString)
+ {
+ String pluginId = element.getDeclaringExtension().getContributor().getName();
+
+ try
+ {
+ Class theClass = Platform.getBundle(pluginId).loadClass(classString);
+ Object instance = theClass.newInstance();
+
+ return instance;
+ }
+ catch (Exception e)
+ {
+
+ }
+ return null;
+ }
+
+ public void readXSDConfigurationRegistry()
+ {
+ IConfigurationElement[] xsdEditorExtensionList = Platform.getExtensionRegistry().getConfigurationElementsFor(XSDEDITORCONFIGURATIONEXTENSIONID);
+
+ boolean definedExtensionsExist = (xsdEditorExtensionList != null && xsdEditorExtensionList.length > 0);
+
+ definedExtensionsList = new ArrayList();
+
+ if (definedExtensionsExist)
+ {
+ for (int i = 0; i < xsdEditorExtensionList.length; i++)
+ {
+ XSDEditorExtensionProperties properties = new XSDEditorExtensionProperties();
+ definedExtensionsList.add(properties);
+
+ IConfigurationElement element = xsdEditorExtensionList[i];
+ String adapterFactoryClass = element.getAttribute(ADAPTERFACTORY);
+ if (adapterFactoryClass != null)
+ {
+ Object object = loadClass(element, adapterFactoryClass);
+ XSDAdapterFactory adapterFactory = null;
+ if (object instanceof XSDAdapterFactory)
+ {
+ adapterFactory = (XSDAdapterFactory) object;
+ properties.setAdapterFactory(adapterFactory);
+ }
+ }
+
+ String figureFactoryClass = element.getAttribute(FIGUREFACTORY);
+ if (figureFactoryClass != null)
+ {
+ Object object = loadClass(element, figureFactoryClass);
+ IExtendedFigureFactory figureFactory = null;
+ if (object instanceof IExtendedFigureFactory)
+ {
+ figureFactory = (IExtendedFigureFactory) object;
+ properties.setFigureFactoryList(figureFactory);
+ }
+ }
+
+ IConfigurationElement[] toolbarActions = element.getChildren(TOOLBARACTION);
+ List actionList = new ArrayList();
+ if (toolbarActions != null)
+ {
+ for (int j = 0; j < toolbarActions.length; j++)
+ {
+ IConfigurationElement actionElement = toolbarActions[j];
+ String actionClass = actionElement.getAttribute(CLASSNAME);
+ IXSDToolbarAction action = null;
+ if (actionClass != null)
+ {
+ Object object = loadClass(actionElement, actionClass);
+ if (object instanceof IXSDToolbarAction)
+ {
+ action = (IXSDToolbarAction) object;
+ actionList.add(action);
+ }
+ }
+ }
+ }
+ properties.setActionList(actionList);
+
+ String editPartFactoryClass = element.getAttribute(EDITPARTFACTORY);
+ if (editPartFactoryClass != null)
+ {
+ Object object = loadClass(element, editPartFactoryClass);
+ EditPartFactory editPartFactory = null;
+ if (object instanceof EditPartFactory)
+ {
+ editPartFactory = (EditPartFactory) object;
+ properties.setEditPartFactoryList(editPartFactory);
+ }
+ }
+
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorContextIds.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorContextIds.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorContextIds.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorContextIds.java
index 8f95f5c..1e4bfc5 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorContextIds.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorContextIds.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
+package org.eclipse.wst.xsd.editor;
/**
* Context help id constants.
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorExtensionProperties.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorExtensionProperties.java
new file mode 100644
index 0000000..f0464ea
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorExtensionProperties.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import java.util.List;
+
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+
+public class XSDEditorExtensionProperties
+{
+ XSDAdapterFactory adapterFactory;
+ IExtendedFigureFactory figureFactory;
+ EditPartFactory editPartFactory;
+ List actionList;
+
+ public XSDEditorExtensionProperties()
+ {
+
+ }
+
+ public void setActionList(List actionList)
+ {
+ this.actionList = actionList;
+ }
+
+ public void setAdapterFactory(XSDAdapterFactory adapterFactory)
+ {
+ this.adapterFactory = adapterFactory;
+ }
+
+ public void setEditPartFactoryList(EditPartFactory editPartFactory)
+ {
+ this.editPartFactory = editPartFactory;
+ }
+
+ public void setFigureFactoryList(IExtendedFigureFactory figureFactory)
+ {
+ this.figureFactory = figureFactory;
+ }
+
+ public List getActionList()
+ {
+ return actionList;
+ }
+
+ public XSDAdapterFactory getAdapterFactory()
+ {
+ return adapterFactory;
+ }
+
+ public EditPartFactory getEditPartFactory()
+ {
+ return editPartFactory;
+ }
+
+ public IExtendedFigureFactory getFigureFactory()
+ {
+ return figureFactory;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorPlugin.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorPlugin.java
new file mode 100644
index 0000000..25580d1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorPlugin.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.plugin.*;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.ApplicationInformationPropertiesRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.osgi.framework.BundleContext;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.MessageFormat;
+import java.util.*;
+
+public class XSDEditorPlugin extends AbstractUIPlugin
+{
+ public static final String PLUGIN_ID = "org.eclipse.wst.xsd.ui";
+ public static final String CONST_XSD_DEFAULT_PREFIX_TEXT = "org.eclipse.wst.xmlschema.xsdDefaultPrefixText";
+ public static final String CONST_PREFERED_BUILT_IN_TYPES = "org.eclipse.wst.xmlschema.preferedBuiltInTypes";
+ public static final String CUSTOM_LIST_SEPARATOR = "\n";
+ public static final String APPINFO_EXTENSIONID = "org.eclipse.wst.xsd.ui.ApplicationInformationDescription";
+ public final static String DEFAULT_TARGET_NAMESPACE = "http://www.example.org";
+
+ //The shared instance.
+ private static XSDEditorPlugin plugin;
+ //Resource bundle.
+ private ResourceBundle resourceBundle;
+ private ApplicationInformationPropertiesRegistry registry;
+ private XSDEditorConfiguration xsdEditorConfiguration = null;
+
+ public static final String CONST_USE_SIMPLE_EDIT_MODE = PLUGIN_ID + ".useSimpleEditMode";
+ public static final String CONST_SHOW_INHERITED_CONTENT = PLUGIN_ID + ".showInheritedContent";
+
+ public static final String CONST_XSD_LANGUAGE_QUALIFY = "org.eclipse.wst.xmlschema.xsdQualify";
+ public static final String CONST_DEFAULT_TARGET_NAMESPACE = "org.eclipse.wst.xmlschema.defaultTargetnamespaceText";
+ /**
+ * The constructor.
+ */
+ public XSDEditorPlugin() {
+ super();
+ plugin = this;
+ }
+
+ /**
+ * This method is called upon plug-in activation
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /**
+ * This method is called when the plug-in is stopped
+ */
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
+ plugin = null;
+ resourceBundle = null;
+ }
+
+ /**
+ * Returns the shared instance.
+ */
+ public static XSDEditorPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns the string from the plugin's resource bundle,
+ * or 'key' if not found.
+ */
+ public static String getResourceString(String key) {
+ ResourceBundle bundle = XSDEditorPlugin.getDefault().getResourceBundle();
+ try {
+ return (bundle != null) ? bundle.getString(key) : key;
+ } catch (MissingResourceException e) {
+ return key;
+ }
+ }
+
+ public static String getResourceString(String key, Object o)
+ {
+ return getResourceString(key, new Object[] { o});
+ }
+
+ public static String getResourceString(String key, Object[] objects)
+ {
+ return MessageFormat.format(getResourceString(key), objects);
+ }
+
+ public static String getResourceString(String key, Object o1, Object o2)
+ {
+ return getResourceString(key, new Object[] { o1, o2});
+ }
+
+ /**
+ * Returns the plugin's resource bundle,
+ */
+ public ResourceBundle getResourceBundle() {
+ try {
+ if (resourceBundle == null)
+ // resourceBundle = ResourceBundle.getBundle("org.eclipse.wst.xsd.editor.EditorPluginResources");
+ resourceBundle = Platform.getResourceBundle(getBundle());
+ } catch (MissingResourceException x) {
+ resourceBundle = null;
+ }
+ return resourceBundle;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path.
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.wst.xsd.ui", path);
+ }
+
+ public static ImageDescriptor getImageDescriptor(String name, boolean getBaseURL) {
+ try {
+ URL installURL = getDefault().getBundle().getEntry("/"); //$NON-NLS-1$
+ String imageString = getBaseURL ? "icons/" + name : name;
+
+ URL imageURL = new URL(installURL, imageString);
+ return ImageDescriptor.createFromURL(imageURL);
+ } catch (MalformedURLException e) {
+ return null;
+ }
+ }
+
+
+ public static XSDEditorPlugin getPlugin() {
+ return plugin;
+ }
+
+ public static String getXSDString(String key) {
+ return getResourceString(key);
+ }
+
+ /**
+ * This gets the string resource and does one substitution.
+ */
+ public String getString(String key, Object s1) {
+ return MessageFormat.format(Platform.getResourceBundle(getBundle()).getString(key), new Object[]{s1});
+ }
+
+ public static Image getXSDImage(String iconName) {
+ return getDefault().getImage("internal/" + iconName);
+ }
+
+ public Image getImage(String iconName) {
+ ImageRegistry imageRegistry = getImageRegistry();
+
+ if (imageRegistry.get(iconName) != null) {
+ return imageRegistry.get(iconName);
+ }
+ else {
+ imageRegistry.put(iconName, ImageDescriptor.createFromFile(getClass(), iconName));
+ return imageRegistry.get(iconName);
+ }
+ }
+
+ public URL getBaseURL() {
+ return getDescriptor().getInstallURL();
+ }
+
+ public Image getIconImage(String object) {
+ try {
+ return ExtendedImageRegistry.getInstance().getImage(new URL(getBaseURL() + "icons/" + object + ".gif"));
+ }
+ catch (MalformedURLException exception) {
+ System.out.println("Failed to load image for '" + object + "'");
+ }
+ return null;
+ }
+
+ public boolean getShowInheritedContent()
+ {
+ return getPreferenceStore().getBoolean(CONST_SHOW_INHERITED_CONTENT);
+ }
+
+ protected void initializeDefaultPreferences(IPreferenceStore store)
+ {
+ store.setDefault(CONST_SHOW_INHERITED_CONTENT, false);
+ store.setDefault(CONST_XSD_DEFAULT_PREFIX_TEXT, "xsd");
+
+ //Even the last item in the list must contain a trailing List separator
+ store.setDefault(CONST_PREFERED_BUILT_IN_TYPES,
+ "boolean"+ CUSTOM_LIST_SEPARATOR +
+ "date" + CUSTOM_LIST_SEPARATOR +
+ "dateTime" + CUSTOM_LIST_SEPARATOR +
+ "double" + CUSTOM_LIST_SEPARATOR +
+ "float" + CUSTOM_LIST_SEPARATOR +
+ "hexBinary" + CUSTOM_LIST_SEPARATOR +
+ "int" + CUSTOM_LIST_SEPARATOR +
+ "string" + CUSTOM_LIST_SEPARATOR +
+ "time" + CUSTOM_LIST_SEPARATOR);
+ }
+
+ public ApplicationInformationPropertiesRegistry getApplicationInformationPropertiesRegistry()
+ {
+ if (registry == null)
+ {
+ registry = new ApplicationInformationPropertiesRegistry(APPINFO_EXTENSIONID);
+ }
+ return registry;
+ }
+
+ public XSDEditorConfiguration getXSDEditorConfiguration()
+ {
+ if (xsdEditorConfiguration == null)
+ {
+ xsdEditorConfiguration = new XSDEditorConfiguration();
+ }
+ return xsdEditorConfiguration;
+ }
+
+ /**
+ * Get the xml schema default namespace prefix
+ */
+ public String getXMLSchemaPrefix()
+ {
+ return getPreferenceStore().getString(CONST_XSD_DEFAULT_PREFIX_TEXT);
+ }
+
+
+
+
+
+
+
+
+
+
+ /**
+ * Get the xml schema default target namespace
+ */
+ public String getXMLSchemaTargetNamespace() {
+ String targetNamespace = getPreferenceStore().getString(CONST_DEFAULT_TARGET_NAMESPACE);
+ if (!targetNamespace.endsWith("/")) {
+ targetNamespace = targetNamespace + "/";
+ }
+ return targetNamespace;
+ }
+
+ /**
+ * Get the xml schema language qualification
+ */
+ public boolean isQualifyXMLSchemaLanguage() {
+ return getPreferenceStore().getBoolean(CONST_XSD_LANGUAGE_QUALIFY);
+ }
+
+ public static Shell getShell() {
+ return getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell();
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDElementReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDElementReferenceEditManager.java
new file mode 100644
index 0000000..105f206
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDElementReferenceEditManager.java
@@ -0,0 +1,117 @@
+package org.eclipse.wst.xsd.editor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+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.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.internal.search.XSDSearchListDialogDelegate;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDElementCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateElementReferenceAndManageDirectivesCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateElementReferenceCommand;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDElementReferenceEditManager implements ComponentReferenceEditManager
+{
+ protected IFile currentFile;
+ protected XSDSchema[] schemas;
+
+ public XSDElementReferenceEditManager(IFile currentFile, XSDSchema[] schemas)
+ {
+ this.currentFile = currentFile;
+ this.schemas = schemas;
+ }
+
+ public void addToHistory(ComponentSpecification component)
+ {
+ // TODO (cs) implement me!
+ }
+
+ public IComponentDialog getBrowseDialog()
+ {
+ //XSDSetExistingTypeDialog dialog = new XSDSetExistingTypeDialog(currentFile, schemas);
+ //return dialog;
+ XSDSearchListDialogDelegate dialogDelegate =
+ new XSDSearchListDialogDelegate(XSDSearchListDialogDelegate.ELEMENT_META_NAME, currentFile, schemas);
+ return dialogDelegate;
+ }
+
+ public IComponentDescriptionProvider getComponentDescriptionProvider()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ComponentSpecification[] getHistory()
+ {
+ // TODO (cs) implement this properly - should this history be global or local to each editor?
+ // This is something we should play around with ourselves to see what feels right.
+ //
+ List list = new ArrayList();
+ ComponentSpecification result[] = new ComponentSpecification[list.size()];
+ list.toArray(result);
+ return result;
+ }
+
+ public IComponentDialog getNewDialog()
+ {
+ return null;
+ }
+
+ public ComponentSpecification[] getQuickPicks()
+ {
+ // TODO (cs) implement this properly - we should be providing a list of the
+ // most 'common' built in schema types here
+ // I believe Trung will be working on a perference page to give us this list
+ // for now let's hard code some values
+ //
+ List list = new ArrayList();
+
+ ComponentSpecification result[] = new ComponentSpecification[list.size()];
+ list.toArray(result);
+ return result;
+ }
+
+//TODO not changed yet
+ public void modifyComponentReference(Object referencingObject, ComponentSpecification component)
+ {
+ if (referencingObject instanceof Adapter)
+ {
+ Adapter adapter = (Adapter)referencingObject;
+ if (adapter.getTarget() instanceof XSDConcreteComponent)
+ {
+ XSDElementDeclaration concreteComponent = (XSDElementDeclaration)adapter.getTarget();
+ if (component.isNew())
+ {
+ XSDElementDeclaration elementDec = null;
+ if (component.getMetaName() == IXSDSearchConstants.ELEMENT_META_NAME)
+ {
+ AddXSDElementCommand command = new AddXSDElementCommand("Add Element", concreteComponent.getSchema());
+ command.setNameToAdd(component.getName());
+ command.execute();
+ elementDec = (XSDElementDeclaration) command.getAddedComponent();
+ }
+ if (elementDec != null && elementDec instanceof XSDElementDeclaration)
+ {
+ Command command = new UpdateElementReferenceCommand("Update Element reference",
+ concreteComponent, elementDec);
+ command.execute();
+ }
+ }
+ else
+ {
+ Command command = new UpdateElementReferenceAndManageDirectivesCommand(concreteComponent, component.getName(), component.getQualifier(), component.getFile());
+ command.execute();
+ }
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDFileEditorInput.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDFileEditorInput.java
new file mode 100644
index 0000000..7c8ee0a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDFileEditorInput.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDFileEditorInput extends FileEditorInput
+{
+ private IFile file;
+ private XSDSchema schema;
+ private String editorName;
+
+ public XSDFileEditorInput(IFile file, XSDSchema schema) {
+ super(file);
+ if (file == null) {
+ throw new IllegalArgumentException();
+ }
+ this.file = file;
+ this.schema = schema;
+ editorName = file.getName();
+ }
+
+ public IFile getFile()
+ {
+ return file;
+ }
+
+ public XSDSchema getSchema()
+ {
+ return schema;
+ }
+
+ public void setEditorName(String name)
+ {
+ editorName = name;
+ }
+
+ public String getName()
+ {
+ if (editorName != null)
+ {
+ return editorName;
+ }
+ return super.getName();
+ }
+
+ public String getToolTipText()
+ {
+ if (schema != null)
+ {
+ String ns = schema.getTargetNamespace();
+ if (ns != null && ns.length() > 0)
+ return "Target Namespace: " + ns;
+ else
+ return "No Namespace";
+ }
+ return super.getToolTipText();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDMultiPageEditorContributor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDMultiPageEditorContributor.java
new file mode 100644
index 0000000..6eeaa05
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDMultiPageEditorContributor.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
+import org.eclipse.gef.ui.actions.ZoomInRetargetAction;
+import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.ide.IDEActionFactory;
+import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+import org.eclipse.wst.xsd.editor.internal.actions.IXSDToolbarAction;
+
+/**
+ * Manages the installation/deinstallation of global actions for multi-page
+ * editors. Responsible for the redirection of global actions to the active
+ * editor. Multi-page contributor replaces the contributors for the individual
+ * editors in the multi-page editor.
+ */
+public class XSDMultiPageEditorContributor extends MultiPageEditorActionBarContributor
+{
+ private IEditorPart activeEditorPart;
+
+ /**
+ * Creates a multi-page contributor.
+ */
+ public XSDMultiPageEditorContributor()
+ {
+ super();
+ }
+
+ /**
+ * Returns the action registed with the given text editor.
+ *
+ * @return IAction or null if editor is null.
+ */
+ protected IAction getAction(ITextEditor editor, String actionID)
+ {
+ return (editor == null ? null : editor.getAction(actionID));
+ }
+
+ /*
+ * (non-JavaDoc) Method declared in
+ * AbstractMultiPageEditorActionBarContributor.
+ */
+
+ public void setActivePage(IEditorPart part)
+ {
+ if (activeEditorPart == part)
+ return;
+
+ activeEditorPart = part;
+
+ IActionBars actionBars = getActionBars();
+
+ if (part != null)
+ {
+ Object adapter = part.getAdapter(ActionRegistry.class);
+ if (adapter instanceof ActionRegistry)
+ {
+ ActionRegistry registry = (ActionRegistry) adapter;
+ actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), registry.getAction(ActionFactory.UNDO.getId()));
+ actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), registry.getAction(ActionFactory.REDO.getId()));
+ actionBars.updateActionBars();
+ }
+ }
+
+ if (actionBars != null)
+ {
+
+ ITextEditor editor = (part instanceof ITextEditor) ? (ITextEditor) part : null;
+
+ actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), getAction(editor, ITextEditorActionConstants.DELETE));
+ actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), getAction(editor, ITextEditorActionConstants.UNDO));
+ actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), getAction(editor, ITextEditorActionConstants.REDO));
+ actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), getAction(editor, ITextEditorActionConstants.CUT));
+ actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), getAction(editor, ITextEditorActionConstants.COPY));
+ actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), getAction(editor, ITextEditorActionConstants.PASTE));
+ actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), getAction(editor, ITextEditorActionConstants.SELECT_ALL));
+ actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), getAction(editor, ITextEditorActionConstants.FIND));
+ actionBars.setGlobalActionHandler(IDEActionFactory.BOOKMARK.getId(), getAction(editor, IDEActionFactory.BOOKMARK.getId()));
+
+ actionBars.updateActionBars();
+ }
+ }
+
+ public void setActiveEditor(IEditorPart part)
+ {
+ IEditorPart activeNestedEditor = null;
+ if (part instanceof MultiPageEditorPart)
+ {
+ activeNestedEditor = ((MultiPageEditorPart) part);
+ }
+ setActivePage(activeNestedEditor);
+ List list = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getToolbarActions();
+ for (Iterator i = list.iterator(); i.hasNext(); )
+ {
+ ((IXSDToolbarAction)i.next()).setEditorPart(activeNestedEditor);
+ }
+ }
+
+ public void contributeToMenu(IMenuManager manager)
+ {
+ IMenuManager menu = new MenuManager("&XSD Editor");
+ manager.prependToGroup(IWorkbenchActionConstants.MB_ADDITIONS, menu);
+
+ // Add extension menu actions
+ List list = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getToolbarActions();
+ for (Iterator i = list.iterator(); i.hasNext(); )
+ {
+ menu.add((IXSDToolbarAction)i.next());
+ }
+
+ menu.add((new ZoomInRetargetAction()));
+ menu.add((new ZoomOutRetargetAction()));
+
+ menu.updateAll(true);
+ }
+
+ public void contributeToToolBar(IToolBarManager manager)
+ {
+ manager.add(new Separator());
+ // Add extension toolbar actions
+ List list = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getToolbarActions();
+ for (Iterator i = list.iterator(); i.hasNext(); )
+ {
+ manager.add((IXSDToolbarAction)i.next());
+ }
+
+ manager.add(new Separator());
+ String[] zoomStrings = new String[] { ZoomManager.FIT_ALL, ZoomManager.FIT_HEIGHT, ZoomManager.FIT_WIDTH };
+ manager.add(new ZoomComboContributionItem(getPage(), zoomStrings));
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDSelectionMapper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDSelectionMapper.java
new file mode 100644
index 0000000..792e0e4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDSelectionMapper.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+public class XSDSelectionMapper implements ISelectionMapper
+{
+ public ISelection mapSelection(ISelection selection)
+ {
+ List list = new ArrayList();
+ if (selection instanceof StructuredSelection)
+ {
+ StructuredSelection structuredSelection = (StructuredSelection)selection;
+ for (Iterator i = structuredSelection.iterator(); i.hasNext(); )
+ {
+ Object o = i.next();
+ if (o instanceof Adapter)
+ {
+ list.add(((Adapter)o).getTarget());
+ }
+ else
+ {
+ list.add(o);
+ }
+ }
+ }
+ return new StructuredSelection(list);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTabbedPropertySheetPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTabbedPropertySheetPage.java
new file mode 100644
index 0000000..d7a4f55
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTabbedPropertySheetPage.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDElementDeclarationAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDParticleAdapter;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+
+public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage implements IADTObjectListener
+{
+ XSDBaseAdapter oldSelection;
+ public XSDTabbedPropertySheetPage(ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor)
+ {
+ super(tabbedPropertySheetPageContributor);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+
+ Object selected = ((StructuredSelection)selection).getFirstElement();
+ System.out.println(selected);
+ if (selected instanceof XSDBaseAdapter)
+ {
+ XSDBaseAdapter adapter = (XSDBaseAdapter)selected;
+ if (oldSelection != null)
+ {
+ oldSelection.unregisterListener(this);
+ if (oldSelection instanceof XSDElementDeclarationAdapter)
+ {
+ XSDElementDeclaration elem = (XSDElementDeclaration)((XSDElementDeclarationAdapter)oldSelection).getTarget();
+ Adapter adap = XSDAdapterFactory.getInstance().adapt(elem.getContainer());
+ if (adap instanceof XSDParticleAdapter)
+ {
+ XSDParticleAdapter particleAdapter = (XSDParticleAdapter)adap;
+ particleAdapter.unregisterListener(this);
+ }
+ }
+ }
+ if (adapter instanceof XSDElementDeclarationAdapter)
+ {
+ XSDElementDeclaration elem = (XSDElementDeclaration)((XSDElementDeclarationAdapter)adapter).getTarget();
+ Adapter adap = XSDAdapterFactory.getInstance().adapt(elem.getContainer());
+ if (adap instanceof XSDParticleAdapter)
+ {
+ XSDParticleAdapter particleAdapter = (XSDParticleAdapter)adap;
+ particleAdapter.registerListener(this);
+ }
+ if (elem.isElementDeclarationReference())
+ {
+ XSDElementDeclarationAdapter resolvedElementAdapter = (XSDElementDeclarationAdapter)XSDAdapterFactory.getInstance().adapt(elem.getResolvedElementDeclaration());
+ resolvedElementAdapter.registerListener(this);
+ }
+ }
+ adapter.registerListener(this);
+ oldSelection = adapter;
+ Object model = adapter.getTarget();
+ if (model instanceof XSDConcreteComponent)
+ {
+ selection = new StructuredSelection((XSDConcreteComponent)model);
+ }
+ super.selectionChanged(part, selection);
+ return;
+ }
+ super.selectionChanged(part, selection);
+ }
+
+ public void propertyChanged(Object object, String property)
+ {
+ if (getCurrentTab() != null)
+ {
+ refresh();
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTypeReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTypeReferenceEditManager.java
new file mode 100644
index 0000000..f4c4777
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTypeReferenceEditManager.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+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.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.internal.dialogs.NewTypeDialog;
+import org.eclipse.wst.xsd.editor.internal.search.XSDSearchListDialogDelegate;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDComplexTypeDefinitionCommand;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDSimpleTypeDefinitionCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateTypeReferenceAndManageDirectivesCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateTypeReferenceCommand;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDTypeReferenceEditManager implements ComponentReferenceEditManager
+{
+ protected IFile currentFile;
+ protected XSDSchema[] schemas;
+
+ public XSDTypeReferenceEditManager(IFile currentFile, XSDSchema[] schemas)
+ {
+ this.currentFile = currentFile;
+ this.schemas = schemas;
+ }
+
+ public void addToHistory(ComponentSpecification component)
+ {
+ // TODO (cs) implement me!
+ }
+
+ public IComponentDialog getBrowseDialog()
+ {
+ //XSDSetExistingTypeDialog dialog = new XSDSetExistingTypeDialog(currentFile, schemas);
+ //return dialog;
+ XSDSearchListDialogDelegate dialogDelegate = new XSDSearchListDialogDelegate(XSDSearchListDialogDelegate.TYPE_META_NAME, currentFile, schemas);
+ return dialogDelegate;
+ }
+
+ public IComponentDescriptionProvider getComponentDescriptionProvider()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ComponentSpecification[] getHistory()
+ {
+ // TODO (cs) implement this properly - should this history be global or local to each editor?
+ // This is something we should play around with ourselves to see what feels right.
+ //
+ List list = new ArrayList();
+ ComponentSpecification result[] = new ComponentSpecification[list.size()];
+ list.toArray(result);
+ return result;
+ }
+
+ public IComponentDialog getNewDialog()
+ {
+ return new NewTypeDialog();
+ }
+
+ public ComponentSpecification[] getQuickPicks()
+ {
+ // TODO (cs) implement this properly - we should be providing a list of the
+ // most 'common' built in schema types here
+ // I believe Trung will be working on a perference page to give us this list
+ // for now let's hard code some values
+ //
+ List list = new ArrayList();
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "boolean", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "date", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "dateTime", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "double", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "float", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "hexBinary", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "int", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "string", null));
+ list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "time", null));
+ ComponentSpecification result[] = new ComponentSpecification[list.size()];
+ list.toArray(result);
+ return result;
+ }
+
+
+ public void modifyComponentReference(Object referencingObject, ComponentSpecification component)
+ {
+ XSDConcreteComponent concreteComponent = null;
+ if (referencingObject instanceof Adapter)
+ {
+ Adapter adpater = (Adapter)referencingObject;
+ if (adpater.getTarget() instanceof XSDConcreteComponent)
+ {
+ concreteComponent = (XSDConcreteComponent)adpater.getTarget();
+ }
+ }
+ else if (referencingObject instanceof XSDConcreteComponent)
+ {
+ concreteComponent = (XSDConcreteComponent) referencingObject;
+ }
+
+ if (concreteComponent != null)
+ {
+ if (component.isNew())
+ {
+ XSDTypeDefinition td = null;
+ if (component.getMetaName() == IXSDSearchConstants.COMPLEX_TYPE_META_NAME)
+ {
+ AddXSDComplexTypeDefinitionCommand command = new AddXSDComplexTypeDefinitionCommand("Add Complex Type", concreteComponent.getSchema());
+ command.setNameToAdd(component.getName());
+ command.execute();
+ td = command.getCreatedComplexType();
+ }
+ else
+ {
+ AddXSDSimpleTypeDefinitionCommand command = new AddXSDSimpleTypeDefinitionCommand("Add Simple Type", concreteComponent.getSchema());
+ command.setNameToAdd(component.getName());
+ command.execute();
+ td = command.getCreatedSimpleType();
+ }
+ if (td != null)
+ {
+ Command command = new UpdateTypeReferenceCommand(concreteComponent, td);
+ command.execute();
+ }
+ }
+ else
+ {
+ Command command = new UpdateTypeReferenceAndManageDirectivesCommand(concreteComponent, component.getName(), component.getQualifier(), component.getFile());
+ command.execute();
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/actions/IXSDToolbarAction.java
similarity index 62%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/actions/IXSDToolbarAction.java
index 21a1f54..d5c6ca8 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/actions/IXSDToolbarAction.java
@@ -1,19 +1,19 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.figures;
+package org.eclipse.wst.xsd.editor.internal.actions;
-import org.eclipse.draw2d.IFigure;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IEditorPart;
-
-public interface PostLayoutManager
+public interface IXSDToolbarAction extends IAction
{
- public void postLayout(IFigure figure);
+ public void setEditorPart(IEditorPart editorPart);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/CategoryAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/CategoryAdapter.java
new file mode 100644
index 0000000..6ba89c3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/CategoryAdapter.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDComplexTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDSimpleTypeDefinitionAction;
+import org.eclipse.xsd.XSDSchema;
+
+public class CategoryAdapter extends XSDBaseAdapter implements IActionProvider, IADTObjectListener
+{
+ protected String text;
+ protected Image image;
+ protected Object parent;
+ protected int groupType;
+ Collection children;
+ XSDSchema xsdSchema;
+
+ public CategoryAdapter(String label, Image image, Collection children, XSDSchema xsdSchema, int groupType)
+ {
+ this.text = label;
+ this.image = image;
+ this.parent = xsdSchema;
+ this.xsdSchema = xsdSchema;
+ this.target = xsdSchema;
+ this.children = children;
+ this.groupType = groupType;
+ }
+
+ public final static int ATTRIBUTES = 1;
+ public final static int ELEMENTS = 2;
+ public final static int TYPES = 3;
+ public final static int GROUPS = 5;
+ public final static int DIRECTIVES = 6;
+ public final static int NOTATIONS = 7;
+ public final static int ATTRIBUTE_GROUPS = 8;
+ public final static int IDENTITY_CONSTRAINTS = 9;
+ public final static int ANNOTATIONS = 10;
+
+ public XSDSchema getXSDSchema()
+ {
+ return xsdSchema;
+ }
+
+ public int getGroupType()
+ {
+ return groupType;
+ }
+
+ public Image getImage()
+ {
+ return image;
+ }
+
+ public String getText()
+ {
+ return text;
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ return (ITreeElement[]) children.toArray(new ITreeElement[0]);
+ }
+
+ public void setChildren(Collection list)
+ {
+ children = list;
+ }
+
+ public Object getParent(Object element)
+ {
+ return xsdSchema;
+ }
+
+ public boolean hasChildren(Object element)
+ {
+ return true;
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+
+ }
+
+ public String[] getActions(Object object)
+ {
+ Collection actionIDs = new ArrayList();
+
+ switch (groupType)
+ {
+ case TYPES : {
+ actionIDs.add(AddXSDComplexTypeDefinitionAction.ID);
+ actionIDs.add(AddXSDSimpleTypeDefinitionAction.ID);
+ break;
+ }
+ case ELEMENTS : {
+ actionIDs.add(AddXSDElementAction.ID);
+ break;
+ }
+ case GROUPS : {
+ actionIDs.add(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITION_ID);
+ break;
+ }
+ case ATTRIBUTES : {
+ actionIDs.add(AddXSDAttributeDeclarationAction.ID);
+ break;
+ }
+ case ATTRIBUTE_GROUPS : {
+ actionIDs.add(AddXSDAttributeGroupDefinitionAction.ID);
+ break;
+ }
+ case DIRECTIVES : {
+ break;
+ }
+ }
+ return (String [])actionIDs.toArray(new String[0]);
+ }
+
+ public void propertyChanged(Object object, String property)
+ {
+ if (getText().equals(property))
+ notifyListeners(this, property);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAdapterFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAdapterFactory.java
new file mode 100644
index 0000000..7273e03
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAdapterFactory.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDSwitch;
+
+public class XSDAdapterFactory extends AdapterFactoryImpl
+{
+ protected static XSDAdapterFactory instance;
+
+ public static XSDAdapterFactory getInstance()
+ {
+ if (instance == null)
+ {
+ // first use the one defined by the configuration
+ instance = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getAdapterFactory();
+ // if there isn't one, then use the default
+ if (instance == null)
+ instance = new XSDAdapterFactory();
+ }
+ return instance;
+ }
+
+ public Adapter createAdapter(Notifier target)
+ {
+ XSDSwitch xsdSwitch = new XSDSwitch()
+ {
+ public Object caseXSDSchemaDirective(XSDSchemaDirective object)
+ {
+ return new XSDSchemaDirectiveAdapter();
+ }
+
+ public Object caseXSDWildcard(XSDWildcard object)
+ {
+ return new XSDWildcardAdapter();
+ }
+
+ public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition object)
+ {
+ return new XSDAttributeGroupDefinitionAdapter();
+ }
+
+ public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
+ {
+ return new XSDModelGroupDefinitionAdapter();
+ }
+
+ public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration object)
+ {
+ return new XSDAttributeDeclarationAdapter();
+ }
+
+ public Object caseXSDAttributeUse(XSDAttributeUse object)
+ {
+ return new XSDAttributeUseAdapter();
+ }
+
+ public Object caseXSDParticle(XSDParticle object)
+ {
+ return new XSDParticleAdapter();
+ }
+
+ public Object caseXSDElementDeclaration(XSDElementDeclaration object)
+ {
+ return new XSDElementDeclarationAdapter();
+ }
+
+ public Object caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition object)
+ {
+ // TODO Auto-generated method stub
+ return new XSDSimpleTypeDefinitionAdapter();
+ }
+
+ public Object caseXSDComplexTypeDefinition(XSDComplexTypeDefinition object)
+ {
+ // we don't like exposing the 'anyType' type as a visible complex type
+ // so we adapt it in a specialized way so that it's treated as simple type
+ // that way it doesn't show up as a reference from a field
+ //
+ if ("anyType".equals(object.getName()))
+ {
+ return new XSDAnyTypeDefinitionAdapter();
+ }
+ else
+ {
+ return new XSDComplexTypeDefinitionAdapter();
+ }
+ }
+
+ public Object caseXSDModelGroup(XSDModelGroup object)
+ {
+ return new XSDModelGroupAdapter();
+ }
+
+ public Object caseXSDSchema(XSDSchema object)
+ {
+ return new XSDSchemaAdapter();
+ }
+ };
+ Object o = xsdSwitch.doSwitch((EObject) target);
+ Adapter result = null;
+ if (o instanceof Adapter)
+ {
+ result = (Adapter) o;
+ }
+ else
+ {
+ System.out.println(target);
+ Thread.dumpStack();
+ }
+ return result;
+ }
+
+ public Adapter adapt(Notifier target)
+ {
+ return adapt(target, this);
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAnyTypeDefinitionAdapter.java
similarity index 60%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAnyTypeDefinitionAdapter.java
index ff6e4db..1a07e04 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAnyTypeDefinitionAdapter.java
@@ -1,18 +1,24 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.model;
+package org.eclipse.wst.xsd.editor.internal.adapters;
+public class XSDAnyTypeDefinitionAdapter extends XSDTypeDefinitionAdapter
+{
+ public boolean isComplexType()
+ {
+ return false;
+ }
-
-public interface ModelAdapterListener
-{
- public void propertyChanged(Object object, String property);
+ public boolean isFocusAllowed()
+ {
+ return false;
+ }
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeDeclarationAdapter.java
new file mode 100644
index 0000000..5c1333b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeDeclarationAdapter.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDAttributeDeclarationAdapter extends XSDBaseAttributeAdapter implements IActionProvider
+{
+ protected XSDAttributeDeclaration getXSDAttributeDeclaration()
+ {
+ return (XSDAttributeDeclaration)target;
+ }
+
+ protected XSDAttributeDeclaration getResolvedXSDAttributeDeclaration()
+ {
+ return getXSDAttributeDeclaration().getResolvedAttributeDeclaration();
+ }
+
+ public boolean isGlobal()
+ {
+ return getXSDAttributeDeclaration().eContainer() instanceof XSDSchema;
+ }
+
+ public IModel getModel()
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeDeclaration().getSchema());
+ return (IModel)adapter;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeGroupDefinitionAdapter.java
new file mode 100644
index 0000000..105af1b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeGroupDefinitionAdapter.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDWildcard;
+
+public class XSDAttributeGroupDefinitionAdapter extends XSDBaseAdapter implements IStructure, IActionProvider
+{
+
+ public XSDAttributeGroupDefinitionAdapter()
+ {
+ super();
+ }
+
+ public XSDAttributeGroupDefinition getXSDAttributeGroupDefinition()
+ {
+ return (XSDAttributeGroupDefinition) target;
+ }
+
+ public Image getImage()
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition) target;
+ if (xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference())
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroupRef.gif");
+ }
+ else
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroup.gif");
+ }
+ }
+
+ public String getText()
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition) target;
+ String result = xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference() ? xsdAttributeGroupDefinition.getQName() : xsdAttributeGroupDefinition.getName();
+ return result == null ? "'absent'" : result;
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ XSDAttributeGroupDefinition xsdAttributeGroup = (XSDAttributeGroupDefinition) target;
+ List list = new ArrayList();
+ list.addAll(xsdAttributeGroup.getContents());
+ XSDWildcard wildcard = xsdAttributeGroup.getAttributeWildcardContent();
+ if (wildcard != null)
+ {
+ list.add(wildcard);
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+ }
+
+ public String[] getActions(Object object)
+ {
+ List list = new ArrayList();
+ list.add(AddXSDAttributeDeclarationAction.ID);
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+ return (String [])list.toArray(new String[0]);
+ }
+
+ public Command getAddNewFieldCommand(String fieldKind)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getDeleteCommand()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List getFields()
+ {
+ // TODO (cs) ... review this
+ ITreeElement[] chidlren = getChildren();
+ return Arrays.asList(chidlren);
+ }
+
+ public IModel getModel()
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeGroupDefinition().getSchema());
+ return (IModel)adapter;
+ }
+
+ public String getName()
+ {
+ // TODO (cs) ... review this
+ return getText();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeUseAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeUseAdapter.java
new file mode 100644
index 0000000..d0b6af5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeUseAdapter.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+
+public class XSDAttributeUseAdapter extends XSDBaseAttributeAdapter implements IActionProvider
+{
+ protected XSDAttributeDeclaration getXSDAttributeDeclaration()
+ {
+ return getXSDAttributeUse().getAttributeDeclaration();
+ }
+
+ protected XSDAttributeDeclaration getResolvedXSDAttributeDeclaration()
+ {
+ return getXSDAttributeDeclaration().getResolvedAttributeDeclaration();
+ }
+
+ protected XSDAttributeUse getXSDAttributeUse()
+ {
+ return (XSDAttributeUse)target;
+ }
+
+ public XSDAttributeUseAdapter()
+ {
+ super();
+ }
+
+ public String getText()
+ {
+ return getTextForAttributeUse(getXSDAttributeUse(), true);
+ }
+
+ public String getTextForAttributeUse(XSDAttributeUse attributeUse, boolean showType)
+ {
+ XSDAttributeDeclaration ad = attributeUse.getAttributeDeclaration();
+
+ StringBuffer result = new StringBuffer();
+ result.append(getTextForAttribute(ad, showType));
+ /*
+ if (xsdAttributeUse.isSetConstraint())
+ {
+ if (result.length() != 0)
+ {
+ result.append(" ");
+ }
+ result.append('<');
+ result.append(xsdAttributeUse.getConstraint());
+ result.append("=\"");
+ result.append(xsdAttributeUse.getLexicalValue());
+ result.append("\">");
+ }
+ */
+ return result.toString();
+ }
+
+ public boolean isGlobal()
+ {
+ return false;
+ }
+
+ public IModel getModel()
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeDeclaration().getSchema());
+ return (IModel)adapter;
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAdapter.java
new file mode 100644
index 0000000..cbe5ee6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAdapter.java
@@ -0,0 +1,199 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Element;
+
+public class XSDBaseAdapter extends AdapterImpl implements IADTObject, ITreeElement
+{
+ protected List listenerList = new ArrayList();
+
+ public boolean isAdapterForType(Object type)
+ {
+ return type == XSDAdapterFactory.getInstance();
+ }
+
+ public void populateAdapterList(List notifierList, List adapterList)
+ {
+ for (Iterator i = notifierList.iterator(); i.hasNext(); )
+ {
+ Object obj = i.next();
+ if (obj instanceof XSDConcreteComponent)
+ {
+ XSDConcreteComponent component = (XSDConcreteComponent)obj;
+ adapterList.add(XSDAdapterFactory.getInstance().adapt(component));
+ }
+ else
+ {
+ adapterList.add(obj);
+ }
+ }
+ }
+
+ public void registerListener(IADTObjectListener listener)
+ {
+ if (!listenerList.contains(listener))
+ {
+ listenerList.add(listener);
+ }
+ }
+
+ public void unregisterListener(IADTObjectListener listener)
+ {
+ listenerList.remove(listener);
+ }
+
+ public void notifyChanged(Notification msg)
+ {
+ super.notifyChanged(msg);
+ notifyListeners(this, null);
+ }
+
+ protected void notifyListeners(Object changedObject, String property)
+ {
+ List clonedListenerList = new ArrayList();
+ clonedListenerList.addAll(listenerList);
+ for (Iterator i = clonedListenerList.iterator(); i.hasNext(); )
+ {
+ IADTObjectListener listener = (IADTObjectListener)i.next();
+ listener.propertyChanged(this, property);
+ }
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ return null;
+ }
+
+ public Image getImage()
+ {
+ return null;
+ }
+
+ public String getText()
+ {
+ return "";
+ }
+
+ public ITreeElement getParent()
+ {
+ return null;
+ }
+
+ public boolean hasChildren()
+ {
+ if (getChildren() != null)
+ {
+ return getChildren().length > 0;
+ }
+ return false;
+ }
+
+
+ /**
+ * Implements IField getContainerType. Get parent Complex Type containing the field
+ * @return IComplexType
+ */
+ public IComplexType getContainerType()
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent) target;
+ XSDConcreteComponent parent = null;
+ XSDComplexTypeDefinition ct = null;
+ for (parent = xsdConcreteComponent.getContainer(); parent != null; )
+ {
+ if (parent instanceof XSDComplexTypeDefinition)
+ {
+ ct = (XSDComplexTypeDefinition)parent;
+ break;
+ }
+ parent = parent.getContainer();
+ }
+ if (ct != null)
+ {
+ return (IComplexType)XSDAdapterFactory.getInstance().adapt(ct);
+ }
+ return null;
+ }
+
+ public boolean isReadOnly()
+ {
+ XSDSchema xsdSchema = null;
+ try
+ {
+ IEditorPart editorPart = null;
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null)
+ {
+ IWorkbenchPage page = window.getActivePage();
+ if (page != null)
+ {
+ editorPart = page.getActiveEditor();
+ }
+ }
+ if (target instanceof XSDConcreteComponent)
+ {
+ xsdSchema = ((XSDConcreteComponent)target).getSchema();
+ }
+ if (editorPart == null)
+ {
+ return fallBackCheckIsReadOnly();
+ }
+
+ XSDSchema editorSchema = (XSDSchema)editorPart.getAdapter(XSDSchema.class);
+ if (xsdSchema != null && xsdSchema == editorSchema)
+ {
+ return false;
+ }
+ else
+ {
+ return fallBackCheckIsReadOnly();
+ }
+ }
+ catch(Exception e)
+ {
+
+ }
+ return true;
+ }
+
+ private boolean fallBackCheckIsReadOnly()
+ {
+ Element element = ((XSDConcreteComponent)target).getElement();
+ if (element instanceof IDOMNode
+ || element instanceof ElementImpl)
+ {
+ return false;
+ }
+ return true;
+ }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAttributeAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAttributeAdapter.java
new file mode 100644
index 0000000..aa3e00f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAttributeAdapter.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+// a base adapter for reuse by an AttributeUse and AttributeDeclaration
+//
+public abstract class XSDBaseAttributeAdapter extends XSDBaseAdapter implements IField
+{
+ protected abstract XSDAttributeDeclaration getXSDAttributeDeclaration();
+ protected abstract XSDAttributeDeclaration getResolvedXSDAttributeDeclaration();
+
+ public XSDBaseAttributeAdapter()
+ {
+ super();
+ }
+
+ public String[] getActions(Object object)
+ {
+ List list = new ArrayList();
+ list.add(AddXSDAttributeDeclarationAction.ID);
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(ShowPropertiesViewAction.ID);
+ return (String[]) list.toArray(new String[0]);
+ }
+
+ public Command getDeleteCommand()
+ {
+ return new DeleteCommand("", getXSDAttributeDeclaration());
+ }
+
+ public String getKind()
+ {
+ return "attribute";
+ }
+
+ public int getMaxOccurs()
+ {
+ // TODO Auto-generated method stub
+ return -3;
+ }
+
+ public int getMinOccurs()
+ {
+ // TODO Auto-generated method stub
+ return -3;
+ }
+
+ public String getName()
+ {
+ XSDAttributeDeclaration resolvedAttributeDeclaration = getResolvedXSDAttributeDeclaration();
+ String name = resolvedAttributeDeclaration.getName();
+ return (name == null) ? "" : name;
+ }
+
+ public IType getType()
+ {
+ XSDTypeDefinition td = getResolvedXSDAttributeDeclaration().getTypeDefinition();
+ return (td != null) ? (IType) XSDAdapterFactory.getInstance().adapt(td) : null;
+ }
+
+ public String getTypeName()
+ {
+ XSDTypeDefinition td = getResolvedXSDAttributeDeclaration().getTypeDefinition();
+ return (td != null) ? td.getName() : "(no type defined)";
+ }
+
+ public String getTypeNameQualifier()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateMaxOccursCommand(int maxOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateMinOccursCommand(int minOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateNameCommand(String name)
+ {
+ return new UpdateNameCommand("Update Name", getResolvedXSDAttributeDeclaration(), name);
+ }
+
+ public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getImage()
+ */
+ public Image getImage()
+ {
+ XSDAttributeDeclaration xsdAttributeDeclaration = getXSDAttributeDeclaration(); // don't want the resolved attribute
+ if (xsdAttributeDeclaration.isAttributeDeclarationReference())
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDAttributeRef.gif");
+ }
+ else
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getText()
+ */
+ public String getText()
+ {
+ return getTextForAttribute(getResolvedXSDAttributeDeclaration(), true);
+ }
+
+ public String getTextForAttribute(XSDAttributeDeclaration ad, boolean showType)
+ {
+ ad = ad.getResolvedAttributeDeclaration();
+ String name = ad.getName();
+ StringBuffer result = new StringBuffer();
+ if (name == null)
+ {
+ result.append("'absent'");
+ }
+ else
+ {
+ result.append(name);
+ }
+ if (ad.getAnonymousTypeDefinition() == null && ad.getTypeDefinition() != null)
+ {
+ result.append(" : ");
+ // result.append(resolvedAttributeDeclaration.getTypeDefinition().getQName(xsdAttributeDeclaration));
+ result.append(ad.getTypeDefinition().getName());
+ }
+ return result.toString();
+ }
+
+ public boolean isGlobal()
+ {
+ return false;
+ }
+
+ public IModel getModel()
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeDeclaration().getSchema());
+ return (IModel)adapter;
+ }
+
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDChildUtility.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDChildUtility.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDChildUtility.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDChildUtility.java
index 887889c..53a3d31 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDChildUtility.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDChildUtility.java
@@ -1,14 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph;
+package org.eclipse.wst.xsd.editor.internal.adapters;
import java.util.ArrayList;
import java.util.Iterator;
@@ -30,12 +30,12 @@
public class XSDChildUtility
{
static public List getModelChildren(Object model)
- {
+ {
XSDChildVisitor visitor = new XSDChildVisitor(model);
- visitor.visitXSDObject(model);
+ visitor.visitXSDObject(model);
return visitor.list;
- }
-
+ }
+
static public List getImmediateDerivedTypes(XSDComplexTypeDefinition complexType)
{
ArrayList typesDerivedFrom = new ArrayList();
@@ -75,7 +75,7 @@
{
if (xsdModelGroup != root)
{
- list.add(xsdModelGroup);
+ list.add(xsdModelGroup);
}
else
{
@@ -100,6 +100,7 @@
if (xsdElementDeclaration != root)
{
list.add(xsdElementDeclaration);
+
}
else
{
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDComplexTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDComplexTypeDefinitionAdapter.java
new file mode 100644
index 0000000..bf8ce65
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDComplexTypeDefinitionAdapter.java
@@ -0,0 +1,412 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.action.Action;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.DeleteAction;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.SpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.OpenInNewEditor;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDElementCommand;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDComplexTypeDefinitionAdapter extends XSDTypeDefinitionAdapter implements IComplexType, IActionProvider, IADTObjectListener
+{
+ protected List fields = null;
+ protected List otherThingsToListenTo = null;
+
+ public XSDComplexTypeDefinition getXSDComplexTypeDefinition()
+ {
+ return (XSDComplexTypeDefinition) target;
+ }
+
+ public IType getSuperType()
+ {
+ XSDTypeDefinition td = getXSDTypeDefinition().getBaseType();
+
+ // test to filter out the 'anyType' type ... don't want to see that
+ //
+ if (td != null && !td.getName().equals("anyType"))
+ {
+ return (IType) XSDAdapterFactory.getInstance().adapt(td);
+ }
+ return null;
+ }
+
+ protected void clearFields()
+ {
+ if (otherThingsToListenTo != null)
+ {
+ for (Iterator i = otherThingsToListenTo.iterator(); i.hasNext();)
+ {
+ Adapter adapter = (Adapter) i.next();
+ if (adapter instanceof IADTObject)
+ {
+ IADTObject adtObject = (IADTObject) adapter;
+ adtObject.unregisterListener(this);
+ }
+ }
+ }
+ fields = null;
+ otherThingsToListenTo = null;
+ }
+
+ public List getFields()
+ {
+ if (fields == null)
+ {
+ fields = new ArrayList();
+ otherThingsToListenTo = new ArrayList();
+
+ XSDVisitorForFields visitor = new XSDVisitorForFieldsWithSpaceFillers();
+ visitor.visitComplexTypeDefinition(getXSDComplexTypeDefinition());
+ populateAdapterList(visitor.concreteComponentList, fields);
+ populateAdapterList(visitor.thingsWeNeedToListenTo, otherThingsToListenTo);
+ for (Iterator i = otherThingsToListenTo.iterator(); i.hasNext();)
+ {
+ Adapter adapter = (Adapter) i.next();
+ if (adapter instanceof IADTObject)
+ {
+ IADTObject adtObject = (IADTObject) adapter;
+ adtObject.registerListener(this);
+ }
+ }
+ }
+ // System.out.println("fields[" + this + "].size() = " + fields.size());
+ return fields;
+ }
+
+ class XSDVisitorForFieldsWithSpaceFillers extends XSDVisitorForFields
+ {
+ public XSDVisitorForFieldsWithSpaceFillers()
+ {
+ super();
+ }
+
+ public void visitAttributeGroupDefinition(XSDAttributeGroupDefinition attributeGroup)
+ {
+ for (Iterator it = attributeGroup.getContents().iterator(); it.hasNext();)
+ {
+ Object o = it.next();
+ if (o instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse attributeUse = (XSDAttributeUse) o;
+ concreteComponentList.add(attributeUse.getAttributeDeclaration());
+ thingsWeNeedToListenTo.add(attributeUse.getAttributeDeclaration());
+ }
+ else if (o instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) o;
+ thingsWeNeedToListenTo.add(attrGroup);
+ if (attrGroup.isAttributeGroupDefinitionReference())
+ {
+ attrGroup = attrGroup.getResolvedAttributeGroupDefinition();
+ if (attrGroup.getContents().size() == 0)
+ {
+ concreteComponentList.add(new SpaceFiller("attribute"));
+ }
+ visitAttributeGroupDefinition(attrGroup);
+ }
+ }
+ }
+ }
+
+ public void visitModelGroup(XSDModelGroup modelGroup)
+ {
+ int numOfChildren = modelGroup.getContents().size();
+ if (numOfChildren == 0)
+ {
+ concreteComponentList.add(new SpaceFiller("element"));
+ }
+ super.visitModelGroup(modelGroup);
+ }
+ }
+
+ public List getModelGroups()
+ {
+ List groups = new ArrayList();
+ groups.addAll(XSDChildUtility.getModelChildren(getXSDComplexTypeDefinition()));
+ return groups;
+ }
+
+ public List getAttributeGroupContent()
+ {
+ EList attrContent = getXSDComplexTypeDefinition().getAttributeContents();
+ List attrUses = new ArrayList();
+ List list = new ArrayList();
+
+ for (Iterator it = attrContent.iterator(); it.hasNext();)
+ {
+ XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) it.next();
+
+ if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) attrGroupContent;
+ list.add(XSDAdapterFactory.getInstance().adapt(attributeGroupDefinition));
+ getAttributeUses(attributeGroupDefinition, attrUses);
+ }
+ else
+ {
+ attrUses.add(attrGroupContent);
+ list.add(new TargetConnectionSpaceFiller(this));
+ }
+ }
+ return list;
+ }
+
+ public boolean isComplexType()
+ {
+ return true;
+ }
+
+ public void notifyChanged(Notification msg)
+ {
+ clearFields();
+ super.notifyChanged(msg);
+ }
+
+ public Command getUpdateNameCommand(String newName)
+ {
+ return new UpdateNameCommand("Update Name", getXSDComplexTypeDefinition(), newName);
+ }
+
+ public Command getAddNewFieldCommand(String fieldKind)
+ {
+ return new AddXSDElementCommand("whyDoWeUseThisLabel?", getXSDComplexTypeDefinition());
+ }
+
+ public Command getDeleteCommand()
+ {
+ return new DeleteCommand("", getXSDComplexTypeDefinition());
+ }
+
+ protected class AddNewFieldCommand extends Command
+ {
+ protected String defaultName;
+ protected String fieldKind;
+
+ AddNewFieldCommand(String defaultName, String fieldKind)
+ {
+ this.defaultName = defaultName;
+ this.fieldKind = fieldKind;
+ }
+ }
+
+ public String[] getActions(Object object)
+ {
+ List list = new ArrayList();
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ Object schema = editorPart.getAdapter(XSDSchema.class);
+
+ list.add(AddXSDElementAction.ID);
+ list.add(AddXSDElementAction.REF_ID);
+ list.add(AddXSDAttributeDeclarationAction.ID);
+ list.add(AddXSDAttributeGroupDefinitionAction.ID);
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(AddXSDModelGroupAction.SEQUENCE_ID);
+ list.add(AddXSDModelGroupAction.CHOICE_ID);
+
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(DeleteAction.ID);
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ if (getXSDComplexTypeDefinition().getSchema() == schema)
+ {
+ if (getXSDComplexTypeDefinition().getContainer() == schema)
+ {
+ list.add(SetInputToGraphView.ID);
+ }
+ }
+ else
+ {
+ list.add(OpenInNewEditor.ID);
+ }
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(ShowPropertiesViewAction.ID);
+ String[] result = new String[list.size()];
+ list.toArray(result);
+ return result;
+ }
+
+ public void propertyChanged(Object object, String property)
+ {
+ clearFields();
+ notifyListeners(this, null);
+ }
+
+ class BogusAction extends Action
+ {
+ BogusAction(String name)
+ {
+ super(name);
+ }
+
+ public void run()
+ {
+ // TODO Auto-generated method stub
+ super.run();
+ }
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = getXSDComplexTypeDefinition();
+ List list = new ArrayList();
+ // Add attributes
+ for (Iterator i = xsdComplexTypeDefinition.getAttributeContents().iterator(); i.hasNext();)
+ {
+ Object obj = i.next();
+ if (obj instanceof XSDAttributeUse)
+ {
+ list.add(obj);
+ }
+ else if (obj instanceof XSDAttributeGroupDefinition)
+ {
+ getAttributeUses((XSDAttributeGroupDefinition) obj, list);
+ }
+ }
+ // get immediate XSD Model Group of this complex type
+ if (xsdComplexTypeDefinition.getContent() != null)
+ {
+ XSDComplexTypeContent xsdComplexTypeContent = xsdComplexTypeDefinition.getContent();
+ if (xsdComplexTypeContent instanceof XSDParticle)
+ {
+ XSDParticleContent particleContent = ((XSDParticle) xsdComplexTypeContent).getContent();
+ if (particleContent instanceof XSDModelGroup)
+ {
+ list.add((XSDModelGroup) particleContent);
+ }
+ }
+ }
+ // get inherited XSD Model Group of this complex type
+ boolean showInheritedContent = XSDEditorPlugin.getPlugin().getShowInheritedContent();
+ if (showInheritedContent)
+ {
+ XSDTypeDefinition typeDef = xsdComplexTypeDefinition.getBaseTypeDefinition();
+ if (typeDef instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition baseCT = (XSDComplexTypeDefinition) typeDef;
+ if (baseCT.getTargetNamespace() != null && !baseCT.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
+ {
+ if (baseCT.getContent() != null)
+ {
+ XSDComplexTypeContent xsdComplexTypeContent = baseCT.getContent();
+ if (xsdComplexTypeContent instanceof XSDParticle)
+ {
+ XSDParticleContent particleContent = ((XSDParticle) xsdComplexTypeContent).getContent();
+ if (particleContent instanceof XSDModelGroup)
+ {
+ list.add((XSDModelGroup) particleContent);
+ }
+ }
+ }
+ }
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+ }
+
+ public Image getImage()
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
+ }
+
+ public String getText()
+ {
+ XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition) target;
+
+ StringBuffer result = new StringBuffer();
+
+ result.append(xsdComplexTypeDefinition.getName() == null ? "local type" : xsdComplexTypeDefinition.getName());
+
+ XSDTypeDefinition baseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null && baseTypeDefinition != xsdComplexTypeDefinition.getContent() && baseTypeDefinition.getName() != null && !XSDConstants.isURType(baseTypeDefinition))
+ {
+ result.append(" : ");
+ result.append(baseTypeDefinition.getQName(xsdComplexTypeDefinition));
+ }
+
+ return result.toString();
+ }
+
+ public void getAttributeUses(XSDAttributeGroupDefinition attributeGroupDefinition, List list)
+ {
+ Iterator i = attributeGroupDefinition.getResolvedAttributeGroupDefinition().getContents().iterator();
+
+ while (i.hasNext())
+ {
+ XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) i.next();
+
+ if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+ {
+ getAttributeUses((XSDAttributeGroupDefinition) attrGroupContent, list);
+ }
+ else
+ {
+ list.add(XSDAdapterFactory.getInstance().adapt(attrGroupContent));
+ }
+ }
+ }
+
+ public IModel getModel()
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDComplexTypeDefinition().getSchema());
+ return (IModel)adapter;
+ }
+
+ public boolean isFocusAllowed()
+ {
+ return true;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDElementDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDElementDeclarationAdapter.java
new file mode 100644
index 0000000..d57dda4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDElementDeclarationAdapter.java
@@ -0,0 +1,280 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.DeleteAction;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.IAnnotationProvider;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetMultiplicityAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetTypeAction;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDElementDeclarationAdapter extends XSDParticleAdapter implements IField, IActionProvider, IAnnotationProvider
+{
+ protected XSDElementDeclaration getXSDElementDeclaration()
+ {
+ return (XSDElementDeclaration) target;
+ }
+
+ public String getName()
+ {
+ String name = getXSDElementDeclaration().getResolvedElementDeclaration().getName();
+ return (name == null) ? "" : name;
+ }
+
+ public String getTypeName()
+ {
+ IType type = getType();
+ if (type != null)
+ {
+ return type.getName();
+ }
+ return null;
+ }
+
+ public String getTypeNameQualifier()
+ {
+ return getXSDElementDeclaration().getTypeDefinition().getTargetNamespace();
+ }
+
+ public IType getType()
+ {
+ XSDTypeDefinition td = getXSDElementDeclaration().getResolvedElementDeclaration().getTypeDefinition();
+ //if (td != null &&
+ // td.getTargetNamespace() != null && td.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) return null;
+ return (td != null) ? (IType) XSDAdapterFactory.getInstance().adapt(td) : null;
+ }
+
+ public Image getImage()
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) target;
+
+ if (!xsdElementDeclaration.isElementDeclarationReference())
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+ }
+ else
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDElementRef.gif");
+ }
+ }
+
+ public String getText()
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) target;
+ XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
+ //String name = xsdElementDeclaration != resolvedElementDeclaration ? xsdElementDeclaration.getQName() : xsdElementDeclaration.getName();
+ String name = resolvedElementDeclaration.getName();
+
+ StringBuffer result = new StringBuffer();
+ if (name == null)
+ {
+ result.append("'absent'");
+ }
+ else
+ {
+ result.append(name);
+ }
+
+ if (!xsdElementDeclaration.isGlobal())
+ {
+ Element element = xsdElementDeclaration.getElement();
+ boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+ boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+
+ if (hasMinOccurs || hasMaxOccurs)
+ {
+ result.append(" [");
+ if (hasMinOccurs)
+ {
+ int min = ((XSDParticle) xsdElementDeclaration.getContainer()).getMinOccurs();
+ if (min == XSDParticle.UNBOUNDED)
+ {
+ result.append("*");
+ }
+ else
+ {
+ result.append(String.valueOf(min));
+ }
+ }
+ else
+ // print default
+ {
+ int min = ((XSDParticle) xsdElementDeclaration.getContainer()).getMinOccurs();
+ result.append(String.valueOf(min));
+ }
+ if (hasMaxOccurs)
+ {
+ int max = ((XSDParticle) xsdElementDeclaration.getContainer()).getMaxOccurs();
+ result.append("..");
+ if (max == XSDParticle.UNBOUNDED)
+ {
+ result.append("*");
+ }
+ else
+ {
+ result.append(String.valueOf(max));
+ }
+ }
+ else
+ // print default
+ {
+ result.append("..");
+ int max = ((XSDParticle) xsdElementDeclaration.getContainer()).getMaxOccurs();
+ result.append(String.valueOf(max));
+
+ }
+ result.append("]");
+ }
+ }
+
+ if (resolvedElementDeclaration.getAnonymousTypeDefinition() == null && resolvedElementDeclaration.getTypeDefinition() != null)
+ {
+ result.append(" : ");
+ // result.append(resolvedElementDeclaration.getTypeDefinition().getQName(xsdElementDeclaration));
+ result.append(resolvedElementDeclaration.getTypeDefinition().getName());
+ }
+
+ return result.toString();
+
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) target;
+ List list = new ArrayList();
+ XSDTypeDefinition type = null;
+ if (xsdElementDeclaration.isElementDeclarationReference())
+ {
+ type = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
+ }
+ else
+ {
+ type = xsdElementDeclaration.getAnonymousTypeDefinition();
+ if (type == null)
+ {
+ type = xsdElementDeclaration.getTypeDefinition();
+ }
+ }
+
+ if (type instanceof XSDComplexTypeDefinition && type.getTargetNamespace() != null && !type.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
+ {
+ XSDComplexTypeDefinition ctType = (XSDComplexTypeDefinition) type;
+ if (ctType != null)
+ {
+ if (xsdElementDeclaration.isGlobal())
+ list.add(ctType);
+ }
+ }
+
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+
+ }
+
+ public String getKind()
+ {
+ return "element";
+ }
+
+ public boolean isGlobal()
+ {
+ return getXSDElementDeclaration().eContainer() instanceof XSDSchema;
+ }
+
+ public boolean isElementDeclarationReference()
+ {
+ return ((XSDElementDeclaration) target).isElementDeclarationReference();
+ }
+
+ public Command getUpdateMaxOccursCommand(int maxOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateMinOccursCommand(int minOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateNameCommand(String name)
+ {
+ return new UpdateNameCommand("Update Name", getXSDElementDeclaration().getResolvedElementDeclaration(), name);
+ }
+
+ public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getDeleteCommand()
+ {
+ // TODO Auto-generated method stub
+ return new DeleteCommand("", getXSDElementDeclaration());
+ }
+
+ public String[] getActions(Object object)
+ {
+ List list = new ArrayList();
+ if (!isGlobal())
+ list.add(AddXSDElementAction.ID);
+
+ list.add(BaseSelectionAction.SUBMENU_START_ID + "Set Type");
+ list.add(SetTypeAction.SET_NEW_TYPE_ID);
+ list.add(SetTypeAction.SELECT_EXISTING_TYPE_ID);
+ list.add(BaseSelectionAction.SUBMENU_END_ID);
+
+ list.add(BaseSelectionAction.SUBMENU_START_ID + "Set Multiplicity");
+ list.add(SetMultiplicityAction.REQUIRED_ID);
+ list.add(SetMultiplicityAction.ZERO_OR_ONE_ID);
+ list.add(SetMultiplicityAction.ZERO_OR_MORE_ID);
+ list.add(SetMultiplicityAction.ONE_OR_MORE_ID);
+ list.add(BaseSelectionAction.SUBMENU_END_ID);
+
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(DeleteAction.ID);
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(ShowPropertiesViewAction.ID);
+ return (String [])list.toArray(new String[0]);
+ }
+
+ public IModel getModel()
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDElementDeclaration().getSchema());
+ return (IModel)adapter;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDEmptyFieldAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDEmptyFieldAdapter.java
new file mode 100644
index 0000000..8f6b858
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDEmptyFieldAdapter.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+/**
+ * @deprecated not used
+ */
+public class XSDEmptyFieldAdapter extends XSDBaseAdapter implements IField
+{
+ String kind;
+ public XSDEmptyFieldAdapter()
+ {
+ super();
+ }
+
+ public String getKind()
+ {
+ return kind;
+ }
+
+ public void setKind(String kind)
+ {
+ this.kind = kind;
+ }
+
+ public String getName()
+ {
+ return null;
+ }
+
+ public String getTypeName()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getTypeNameQualifier()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public IType getType()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public int getMinOccurs()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getMaxOccurs()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public boolean isGlobal()
+ {
+ return false;
+ }
+
+ public Command getUpdateMinOccursCommand(int minOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateMaxOccursCommand(int maxOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateNameCommand(String name)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getDeleteCommand()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public IModel getModel()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupAdapter.java
new file mode 100644
index 0000000..0ad1b31
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupAdapter.java
@@ -0,0 +1,227 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetMultiplicityAction;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDModelGroupAdapter extends XSDParticleAdapter implements IActionProvider
+{
+ public static final Image SEQUENCE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newSequence2.gif", true).createImage();
+ public static final Image CHOICE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newChoice.gif", true).createImage();
+ public static final Image ALL_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("obj16/all.gif", true).createImage();
+
+ XSDModelGroup getXSDModelGroup()
+ {
+ return (XSDModelGroup) target;
+ }
+
+ public XSDModelGroupAdapter()
+ {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getImage()
+ */
+ public Image getImage()
+ {
+ XSDModelGroup xsdModelGroup = getXSDModelGroup();
+ if (XSDCompositor.CHOICE_LITERAL == xsdModelGroup.getCompositor())
+ {
+ return CHOICE_ICON_IMAGE;
+ }
+ else if (XSDCompositor.ALL_LITERAL == xsdModelGroup.getCompositor())
+ {
+ return ALL_ICON_IMAGE;
+ }
+ else
+ {
+ return SEQUENCE_ICON_IMAGE;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getText()
+ */
+ public String getText()
+ {
+ XSDModelGroup xsdModelGroup = getXSDModelGroup();
+
+ StringBuffer result = new StringBuffer();
+ String name = xsdModelGroup.getCompositor().getName();
+ if (name != null)
+ {
+ result.append(name);
+ }
+
+ Element element = xsdModelGroup.getElement();
+
+ if (element != null)
+ {
+ boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+ boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+
+ if (hasMinOccurs || hasMaxOccurs)
+ {
+ result.append(" [");
+ if (hasMinOccurs)
+ {
+ int min = ((XSDParticle) xsdModelGroup.getContainer()).getMinOccurs();
+ if (min == XSDParticle.UNBOUNDED)
+ {
+ result.append("*");
+ }
+ else
+ {
+ result.append(String.valueOf(min));
+ }
+ }
+ else
+ // print default
+ {
+ int min = ((XSDParticle) xsdModelGroup.getContainer()).getMinOccurs();
+ result.append(String.valueOf(min));
+ }
+ if (hasMaxOccurs)
+ {
+ int max = ((XSDParticle) xsdModelGroup.getContainer()).getMaxOccurs();
+ result.append("..");
+ if (max == XSDParticle.UNBOUNDED)
+ {
+ result.append("*");
+ }
+ else
+ {
+ result.append(String.valueOf(max));
+ }
+ }
+ else
+ // print default
+ {
+ result.append("..");
+ int max = ((XSDParticle) xsdModelGroup.getContainer()).getMaxOccurs();
+ result.append(String.valueOf(max));
+ }
+ result.append("]");
+ }
+ }
+ return result.toString();
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ XSDModelGroup xsdModelGroup = getXSDModelGroup();
+ List list = new ArrayList();
+ for (Iterator i = xsdModelGroup.getContents().iterator(); i.hasNext(); )
+ {
+ Object object = i.next();
+ XSDParticleContent particle = ((XSDParticle)object).getContent();
+ if (particle instanceof XSDElementDeclaration)
+ {
+ list.add((XSDElementDeclaration)particle);
+ }
+ else if (particle instanceof XSDWildcard)
+ {
+ list.add((XSDWildcard)particle);
+ }
+ else if (particle instanceof XSDModelGroup)
+ {
+ list.add((XSDModelGroup)particle);
+ }
+ }
+
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return (ITreeElement []) adapterList.toArray(new ITreeElement[0]);
+ }
+
+ public Object getParent(Object object)
+ {
+ XSDModelGroup element = (XSDModelGroup) object;
+ return element.getContainer();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider#getActions(java.lang.Object)
+ */
+ public String[] getActions(Object object)
+ {
+ Collection actionIDs = new ArrayList();
+ actionIDs.add(AddXSDElementAction.ID);
+ actionIDs.add(AddXSDElementAction.REF_ID);
+ // Add Element Ref
+ actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+ actionIDs.add(AddXSDModelGroupAction.SEQUENCE_ID);
+ actionIDs.add(AddXSDModelGroupAction.CHOICE_ID);
+ actionIDs.add(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITIONREF_ID);
+// actionIDs.add(AddFieldAction.ID);
+ actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+ // Add Any
+
+ actionIDs.add(BaseSelectionAction.SUBMENU_START_ID + "Set Multiplicity");
+ actionIDs.add(SetMultiplicityAction.REQUIRED_ID);
+ actionIDs.add(SetMultiplicityAction.ZERO_OR_ONE_ID);
+ actionIDs.add(SetMultiplicityAction.ZERO_OR_MORE_ID);
+ actionIDs.add(SetMultiplicityAction.ONE_OR_MORE_ID);
+ actionIDs.add(BaseSelectionAction.SUBMENU_END_ID);
+
+ if (!(getParent(target) instanceof XSDModelGroupDefinition))
+ {
+ actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+ actionIDs.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+ }
+ actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+ actionIDs.add(ShowPropertiesViewAction.ID);
+
+ return (String [])actionIDs.toArray(new String[0]);
+ }
+
+ public int getMaxOccurs()
+ {
+ return getMaxOccurs(getXSDModelGroup());
+ }
+
+ public int getMinOccurs()
+ {
+ return getMinOccurs(getXSDModelGroup());
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupDefinitionAdapter.java
new file mode 100644
index 0000000..ac6d93e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupDefinitionAdapter.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+
+public class XSDModelGroupDefinitionAdapter extends XSDBaseAdapter implements IStructure, IActionProvider
+{
+ public XSDModelGroupDefinitionAdapter()
+ {
+ super();
+ }
+
+ public XSDModelGroupDefinition getXSDModelGroupDefinition()
+ {
+ return (XSDModelGroupDefinition) target;
+ }
+
+ public Image getImage()
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition) target;
+
+ if (xsdModelGroupDefinition.isModelGroupDefinitionReference())
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDGroupRef.gif");
+ }
+ else
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDGroup.gif");
+ }
+ }
+
+ public String getText()
+ {
+ XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition) target;
+ String result = xsdModelGroupDefinition.isModelGroupDefinitionReference() ? xsdModelGroupDefinition.getQName() : xsdModelGroupDefinition.getName();
+ return result == null ? "'absent'" : result;
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ List list = new ArrayList();
+ XSDModelGroup xsdModelGroup = ((XSDModelGroupDefinition) target).getResolvedModelGroupDefinition().getModelGroup();
+ if (xsdModelGroup != null)
+ list.add(xsdModelGroup);
+
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider#getActions(java.lang.Object)
+ */
+ public String[] getActions(Object object)
+ {
+ Collection list = new ArrayList();
+
+ if (!getXSDModelGroupDefinition().isModelGroupDefinitionReference())
+ {
+ list.add(AddXSDElementAction.ID);
+ list.add(AddXSDElementAction.REF_ID);
+ list.add(BaseSelectionAction.SEPARATOR_ID);
+ list.add(AddXSDModelGroupAction.SEQUENCE_ID);
+ list.add(AddXSDModelGroupAction.CHOICE_ID);
+ }
+
+ list.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+ return (String [])list.toArray(new String[0]);
+ }
+
+ public Command getAddNewFieldCommand(String fieldKind)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getDeleteCommand()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List getFields()
+ {
+ List fields = new ArrayList();
+ boolean showGroups = false;
+ XSDVisitorForFields visitor = new XSDVisitorForFields();
+ visitor.visitModelGroupDefinition(getXSDModelGroupDefinition());
+ populateAdapterList(visitor.concreteComponentList, fields);
+
+ // TODO (cs) common a base class for a structure thingee
+ //
+ /*
+ populateAdapterList(visitor.thingsWeNeedToListenTo, otherThingsToListenTo);
+ for (Iterator i = otherThingsToListenTo.iterator(); i.hasNext();)
+ {
+ Adapter adapter = (Adapter) i.next();
+ if (adapter instanceof IADTObject)
+ {
+ IADTObject adtObject = (IADTObject) adapter;
+ adtObject.registerListener(this);
+ }
+ }*/
+ // System.out.println("fields[" + this + "].size() = " + fields.size());
+ return fields;
+ }
+
+ public IModel getModel()
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDModelGroupDefinition().getSchema());
+ return (IModel)adapter;
+ }
+ public String getName()
+ {
+ return getText();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDParticleAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDParticleAdapter.java
new file mode 100644
index 0000000..d0425e3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDParticleAdapter.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import org.eclipse.wst.xsd.adt.design.IAnnotationProvider;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDParticle;
+
+public class XSDParticleAdapter extends XSDBaseAdapter implements IAnnotationProvider
+{
+ public XSDParticleAdapter()
+ {
+ super();
+ }
+
+ public int getMaxOccurs()
+ {
+ return getMaxOccurs((XSDConcreteComponent) target);
+ }
+
+ public int getMinOccurs()
+ {
+ return getMinOccurs((XSDConcreteComponent) target);
+ }
+
+ public static int getMinOccurs(XSDConcreteComponent component)
+ {
+ int minOccur = -2;
+ if (component != null)
+ {
+ Object o = component.getContainer();
+ if (o instanceof XSDParticle)
+ {
+ if (((XSDParticle) o).isSetMinOccurs())
+ {
+ try
+ {
+ minOccur = ((XSDParticle) o).getMinOccurs();
+ }
+ catch (Exception e)
+ {
+ }
+ }
+ }
+ }
+ return minOccur;
+ }
+
+ public static int getMaxOccurs(XSDConcreteComponent component)
+ {
+ int maxOccur = -2;
+ if (component != null)
+ {
+ Object o = component.getContainer();
+ if (o instanceof XSDParticle)
+ {
+ if (((XSDParticle) o).isSetMaxOccurs())
+ {
+ try
+ {
+ maxOccur = ((XSDParticle) o).getMaxOccurs();
+ }
+ catch (Exception e)
+ {
+ }
+ }
+ }
+ }
+ return maxOccur;
+ }
+
+ public String getNameAnnotationString()
+ {
+ return buildAnnotationString(true);
+ }
+
+ public String getNameAnnotationToolTipString()
+ {
+ return buildAnnotationString(false);
+ }
+
+ public String getTypeAnnotationString()
+ {
+ return null;
+ }
+
+ public String getTypeAnnotationToolTipString()
+ {
+ return null;
+ }
+
+ protected String buildAnnotationString(boolean isForLabel)
+ {
+ String occurenceDescription = "";
+ String toolTipDescription = "";
+ // TODO: set int values as defined constants
+ // -2 means the user didn't specify (so the default is 1)
+ int minOccurs = getMinOccurs();
+ int maxOccurs = getMaxOccurs();
+
+ // This is for the attribute field case, which has no
+ // occurrence attributes
+ if (minOccurs == -3 && maxOccurs == -3)
+ {
+ occurenceDescription = "";
+ }
+ else if (minOccurs == 0 && (maxOccurs == -2 || maxOccurs == 1))
+ {
+ occurenceDescription = "[0..1]";
+ toolTipDescription = "optional";
+ }
+ else if (minOccurs == 0 && maxOccurs == -1)
+ {
+ occurenceDescription = "[0..*]";
+ toolTipDescription = "Zero or more";
+ }
+ else if ((minOccurs == 1 && maxOccurs == -1) || (minOccurs == -2 && maxOccurs == -1))
+ {
+ occurenceDescription = "[1..*]";
+ toolTipDescription = "One or more";
+ }
+ else if ((minOccurs == 1 && maxOccurs == 1) || (minOccurs == -2 && maxOccurs == 1) || (minOccurs == 1 && maxOccurs == -2))
+ {
+ occurenceDescription = "[1..1]";
+ toolTipDescription = "required";
+ }
+ else if (minOccurs == -2 && maxOccurs == -2)
+ {
+ occurenceDescription = "";
+ // none specified, so don't have any toolTip description
+ }
+ else
+ {
+ if (maxOccurs == -2)
+ maxOccurs = 1;
+ String maxSymbol = maxOccurs == -1 ? "*" : "" + maxOccurs;
+ String minSymbol = minOccurs == -2 ? "1" : "" + minOccurs;
+ occurenceDescription = "[" + minSymbol + ".." + maxSymbol + "]";
+ toolTipDescription = "array";
+ }
+
+ if (isForLabel)
+ {
+ return occurenceDescription;
+ }
+ else
+ {
+ return toolTipDescription;
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaAdapter.java
new file mode 100644
index 0000000..6d418d8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaAdapter.java
@@ -0,0 +1,427 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.NotificationImpl;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDComplexTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public class XSDSchemaAdapter extends XSDBaseAdapter implements IActionProvider, IModel, IADTObjectListener
+{
+ protected List types = null;
+ protected List children;
+
+ protected CategoryAdapter fDirectivesCategory;
+ protected CategoryAdapter fElementsCategory;
+ protected CategoryAdapter fAttributesCategory;
+ protected CategoryAdapter fAttributeGroupsCategory;
+ protected CategoryAdapter fTypesCategory;
+ protected CategoryAdapter fGroupsCategory;
+
+ /**
+ * Create all the category adapters
+ *
+ * @param xsdSchema
+ */
+ protected void createCategoryAdapters(XSDSchema xsdSchema)
+ {
+ List directivesList = getDirectives(xsdSchema);
+ List elementsList = getGlobalElements(xsdSchema);
+ List attributeGroupList = getAttributeGroupList(xsdSchema);
+ List attributesList = getAttributeList(xsdSchema);
+ List groups = getGroups(xsdSchema);
+ List types = getComplexTypes(xsdSchema);
+ types.addAll(getSimpleTypes(xsdSchema));
+
+ fDirectivesCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_DIRECTIVES"), XSDEditorPlugin.getDefault().getIconImage("obj16/directivesheader"), directivesList, xsdSchema, CategoryAdapter.DIRECTIVES);
+ registerListener(fDirectivesCategory);
+
+ fElementsCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_ELEMENTS"), XSDEditorPlugin.getDefault().getIconImage("obj16/elementsheader"), elementsList, xsdSchema, CategoryAdapter.ELEMENTS);
+ registerListener(fElementsCategory);
+
+ fAttributesCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_ATTRIBUTES"), XSDEditorPlugin.getDefault().getIconImage("obj16/attributesheader"), attributesList, xsdSchema, CategoryAdapter.ATTRIBUTES);
+ registerListener(fAttributesCategory);
+ fAttributeGroupsCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_ATTRIBUTE_GROUPS"), XSDEditorPlugin.getDefault().getIconImage("obj16/attributegroupsheader"), attributeGroupList, xsdSchema, CategoryAdapter.ATTRIBUTE_GROUPS);
+ registerListener(fAttributeGroupsCategory);
+
+ fTypesCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_TYPES"), XSDEditorPlugin.getDefault().getIconImage("obj16/typesheader"), types, xsdSchema, CategoryAdapter.TYPES);
+ registerListener(fTypesCategory);
+
+ fGroupsCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_GROUPS"), XSDEditorPlugin.getDefault().getIconImage("obj16/groupsheader"), groups, xsdSchema, CategoryAdapter.GROUPS);
+ registerListener(fGroupsCategory);
+ }
+
+ public List getTypes()
+ {
+ if (types == null)
+ {
+ types = new ArrayList();
+ XSDSchema schema = (XSDSchema) target;
+ List concreteComponentList = new ArrayList();
+ for (Iterator i = schema.getContents().iterator(); i.hasNext();)
+ {
+ XSDConcreteComponent component = (XSDConcreteComponent) i.next();
+ if (component instanceof XSDTypeDefinition)
+ {
+ concreteComponentList.add(component);
+ }
+ }
+ populateAdapterList(concreteComponentList, types);
+ }
+ return types;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getChildren()
+ */
+ public ITreeElement[] getChildren()
+ {
+ XSDSchema xsdSchema = (XSDSchema) getTarget();
+
+ children = new ArrayList();
+
+ // just set categoryadapters' children if category adapters are
+ // already created
+ if (fDirectivesCategory != null)
+ {
+ List directivesList = getDirectives(xsdSchema);
+ List elementsList = getGlobalElements(xsdSchema);
+ List attributeGroupList = getAttributeGroupList(xsdSchema);
+ List attributesList = getAttributeList(xsdSchema);
+ List groups = getGroups(xsdSchema);
+ List types = getComplexTypes(xsdSchema);
+ types.addAll(getSimpleTypes(xsdSchema));
+
+ fDirectivesCategory.setChildren(directivesList);
+ fElementsCategory.setChildren(elementsList);
+ fAttributesCategory.setChildren(attributesList);
+ fAttributeGroupsCategory.setChildren(attributeGroupList);
+ fTypesCategory.setChildren(types);
+ fGroupsCategory.setChildren(groups);
+ }
+ else
+ {
+ createCategoryAdapters(xsdSchema);
+ }
+
+ children.add(fDirectivesCategory);
+ children.add(fElementsCategory);
+ children.add(fAttributesCategory);
+ children.add(fAttributeGroupsCategory);
+ children.add(fTypesCategory);
+ children.add(fGroupsCategory);
+
+ return (ITreeElement[]) children.toArray(new ITreeElement[0]);
+ }
+
+ public void notifyChanged(final Notification msg)
+ {
+ class CategoryNotification extends NotificationImpl
+ {
+ protected Object category;
+
+ public CategoryNotification(Object category)
+ {
+ super(msg.getEventType(), msg.getOldValue(), msg.getNewValue(), msg.getPosition());
+ this.category = category;
+ }
+
+ public Object getNotifier()
+ {
+ return category;
+ }
+
+ public Object getFeature()
+ {
+ return msg.getFeature();
+ }
+ }
+
+ if (children == null)
+ {
+ getChildren();
+ }
+
+ if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_ReferencingDirectives())
+ {
+ CategoryAdapter adapter = getCategory(CategoryAdapter.DIRECTIVES);
+ Assert.isTrue(adapter != null);
+ XSDSchema xsdSchema = adapter.getXSDSchema();
+ adapter.setChildren(getDirectives(xsdSchema));
+ notifyListeners(new CategoryNotification(adapter), adapter.getText());
+ return;
+ }
+ else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_ElementDeclarations())
+ {
+ CategoryAdapter adapter = getCategory(CategoryAdapter.ELEMENTS);
+ Assert.isTrue(adapter != null);
+ XSDSchema xsdSchema = adapter.getXSDSchema();
+ adapter.setChildren(getGlobalElements(xsdSchema));
+ notifyListeners(new CategoryNotification(adapter), adapter.getText());
+ return;
+ }
+ else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_AttributeDeclarations())
+ {
+ CategoryAdapter adapter = getCategory(CategoryAdapter.ATTRIBUTES);
+ Assert.isTrue(adapter != null);
+ XSDSchema xsdSchema = adapter.getXSDSchema();
+ adapter.setChildren(getAttributeList(xsdSchema));
+ notifyListeners(new CategoryNotification(adapter), adapter.getText());
+ return;
+ }
+ else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_AttributeGroupDefinitions())
+ {
+ CategoryAdapter adapter = getCategory(CategoryAdapter.ATTRIBUTE_GROUPS);
+ Assert.isTrue(adapter != null);
+ XSDSchema xsdSchema = adapter.getXSDSchema();
+ adapter.setChildren(getAttributeGroupList(xsdSchema));
+ notifyListeners(new CategoryNotification(adapter), adapter.getText());
+ return;
+ }
+ else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_TypeDefinitions())
+ {
+ CategoryAdapter adapter = getCategory(CategoryAdapter.TYPES);
+ Assert.isTrue(adapter != null);
+ XSDSchema xsdSchema = adapter.getXSDSchema();
+ List types = getComplexTypes(xsdSchema);
+ types.addAll(getSimpleTypes(xsdSchema));
+
+ adapter.setChildren(types);
+ notifyListeners(new CategoryNotification(adapter), adapter.getText());
+ return;
+ }
+ else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_ModelGroupDefinitions())
+ {
+ CategoryAdapter adapter = getCategory(CategoryAdapter.GROUPS);
+ Assert.isTrue(adapter != null);
+ XSDSchema xsdSchema = adapter.getXSDSchema();
+ adapter.setChildren(getGroups(xsdSchema));
+ notifyListeners(new CategoryNotification(adapter), adapter.getText());
+ return;
+ }
+ else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_Annotations())
+ {
+ return;
+ }
+ else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_SchemaLocation())
+ {
+ notifyListeners(msg, null);
+ return;
+ }
+
+ types = null;
+ getTypes();
+
+ super.notifyChanged(msg);
+ }
+
+ protected CategoryAdapter getCategory(int category)
+ {
+ int length = children.size();
+ CategoryAdapter adapter = null;
+ for (int i = 0; i < length; i++)
+ {
+ adapter = (CategoryAdapter) children.get(i);
+ if (adapter.getGroupType() == category)
+ {
+ break;
+ }
+ }
+ return adapter;
+ }
+
+ protected List getDirectives(XSDSchema schema)
+ {
+ List list = new ArrayList();
+ for (Iterator i = schema.getContents().iterator(); i.hasNext();)
+ {
+ Object o = i.next();
+ if (o instanceof XSDSchemaDirective)
+ {
+ list.add(o);
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return adapterList;
+ }
+
+ protected List getGlobalElements(XSDSchema schema)
+ {
+ List elements = schema.getElementDeclarations();
+ List list = new ArrayList();
+ for (Iterator i = elements.iterator(); i.hasNext();)
+ {
+ XSDElementDeclaration elem = (XSDElementDeclaration) i.next();
+ if (elem.getRootContainer() == schema)
+ {
+ list.add(elem);
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return adapterList;
+ }
+
+ /**
+ * @param schema
+ * @return
+ */
+ protected List getComplexTypes(XSDSchema schema)
+ {
+ List allTypes = schema.getTypeDefinitions();
+ List list = new ArrayList();
+ for (Iterator i = allTypes.iterator(); i.hasNext();)
+ {
+ XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+ if (td instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) td;
+ if (ct.getRootContainer() == schema)
+ {
+ list.add(ct);
+ }
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return adapterList;
+ }
+
+ protected List getAttributeGroupList(XSDSchema xsdSchema)
+ {
+ List attributeGroupList = new ArrayList();
+ for (Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator(); i.hasNext();)
+ {
+ XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) i.next();
+ if (attrGroup.getRootContainer() == xsdSchema)
+ {
+ attributeGroupList.add(attrGroup);
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(attributeGroupList, adapterList);
+ return adapterList;
+ }
+
+ protected List getAttributeList(XSDSchema xsdSchema)
+ {
+ List attributesList = new ArrayList();
+ for (Iterator iter = xsdSchema.getAttributeDeclarations().iterator(); iter.hasNext();)
+ {
+ Object o = iter.next();
+ if (o instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration attr = (XSDAttributeDeclaration) o;
+ if (attr != null)
+ {
+ if (attr.getTargetNamespace() != null)
+ {
+ if (!(attr.getTargetNamespace().equals("http://www.w3.org/2001/XMLSchema-instance")))
+ {
+ if (attr.getRootContainer() == xsdSchema)
+ {
+ attributesList.add(attr);
+ }
+ }
+ }
+ else
+ {
+ if (attr.getRootContainer() == xsdSchema)
+ {
+ attributesList.add(attr);
+ }
+ }
+ }
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(attributesList, adapterList);
+ return adapterList;
+ }
+
+ protected List getSimpleTypes(XSDSchema schema)
+ {
+ List allTypes = schema.getTypeDefinitions();
+ List list = new ArrayList();
+ for (Iterator i = allTypes.iterator(); i.hasNext();)
+ {
+ XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+ if (td instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) td;
+ if (st.getRootContainer() == schema)
+ {
+ list.add(st);
+ }
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return adapterList;
+ }
+
+ protected List getGroups(XSDSchema schema)
+ {
+ List groups = schema.getModelGroupDefinitions();
+ List list = new ArrayList();
+ for (Iterator i = groups.iterator(); i.hasNext();)
+ {
+ XSDModelGroupDefinition group = (XSDModelGroupDefinition) i.next();
+ if (group.getRootContainer() == schema)
+ {
+ list.add(group);
+ }
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return adapterList;
+ }
+
+ public String[] getActions(Object object)
+ {
+ Collection actionIDs = new ArrayList();
+ actionIDs.add(AddXSDElementAction.ID);
+ actionIDs.add(AddXSDComplexTypeDefinitionAction.ID);
+
+ return (String [])actionIDs.toArray(new String[0]);
+ }
+
+ public void propertyChanged(Object object, String property)
+ {
+ notifyListeners(object, property);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaDirectiveAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaDirectiveAdapter.java
new file mode 100644
index 0000000..a2a77bf
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaDirectiveAdapter.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDRedefinableComponent;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDRedefineContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDSchemaDirectiveAdapter extends XSDBaseAdapter
+{
+ public Image getImage()
+ {
+ XSDSchemaDirective object = (XSDSchemaDirective) target;
+ if (object instanceof XSDImport)
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDImport.gif");
+ }
+ else if (object instanceof XSDInclude)
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDInclude.gif");
+ }
+ else if (object instanceof XSDRedefine)
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDRedefine.gif");
+ }
+ return null;
+ }
+
+ public String getText()
+ {
+ XSDSchemaDirective directive = (XSDSchemaDirective) target;
+ String result = directive.getSchemaLocation();
+ if (result == null)
+ result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
+ if (result.equals(""))
+ result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
+ return result;
+
+ }
+
+ public ITreeElement[] getChildren()
+ {
+ List list = new ArrayList();
+ if (target instanceof XSDRedefine)
+ {
+ XSDRedefine redefine = (XSDRedefine) target;
+ for (Iterator i = redefine.getContents().iterator(); i.hasNext();)
+ {
+ XSDRedefineContent redefineContent = (XSDRedefineContent) i.next();
+ if (redefineContent instanceof XSDAttributeGroupDefinition)
+ {
+ list.add((XSDAttributeGroupDefinition) redefine);
+ }
+ else if (redefineContent instanceof XSDModelGroupDefinition)
+ {
+ list.add((XSDModelGroupDefinition) redefineContent);
+ }
+ else if (redefineContent instanceof XSDRedefinableComponent)
+ {
+ XSDRedefinableComponent comp = (XSDRedefinableComponent) redefineContent;
+ if (comp instanceof XSDAttributeGroupDefinition)
+ {
+ list.add((XSDAttributeGroupDefinition) comp);
+ }
+ else if (comp instanceof XSDModelGroupDefinition)
+ {
+ list.add((XSDModelGroupDefinition) comp);
+ }
+ else if (comp instanceof XSDComplexTypeDefinition)
+ {
+ list.add((XSDComplexTypeDefinition) comp);
+ }
+ else if (comp instanceof XSDSimpleTypeDefinition)
+ {
+ list.add((XSDSimpleTypeDefinition) comp);
+ }
+ }
+ else if (redefineContent instanceof XSDComplexTypeDefinition)
+ {
+ list.add((XSDComplexTypeDefinition) redefineContent);
+ }
+ else if (redefineContent instanceof XSDSimpleTypeDefinition)
+ {
+ list.add((XSDSimpleTypeDefinition) redefineContent);
+ }
+ }
+
+ }
+ List adapterList = new ArrayList();
+ populateAdapterList(list, adapterList);
+ return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSimpleTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSimpleTypeDefinitionAdapter.java
new file mode 100644
index 0000000..ddc67ee
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSimpleTypeDefinitionAdapter.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDSimpleTypeDefinitionAdapter extends XSDTypeDefinitionAdapter implements IType
+{
+ public Image getImage()
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+
+ if (xsdSimpleTypeDefinition.getContainer() == null)
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+ }
+
+ if (XSDVariety.LIST_LITERAL == xsdSimpleTypeDefinition.getVariety())
+ {
+ return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_list_obj");
+ }
+ else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety())
+ {
+ return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_union_obj");
+ }
+ else if (XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
+ {
+ if (xsdSimpleTypeDefinition.getPrimitiveTypeDefinition() != null)
+ {
+ return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_restrict_obj");
+ }
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+ }
+ else if (xsdSimpleTypeDefinition.isSetVariety())
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+ }
+ else
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+ }
+ }
+
+ public String getDisplayName()
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+ return (xsdSimpleTypeDefinition.getName() == null ? "local type" : xsdSimpleTypeDefinition.getName());
+ }
+
+ public String getText()
+ {
+ return getText(true);
+ }
+
+ public String getText(boolean showType)
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+
+ StringBuffer result = new StringBuffer();
+
+ result.append(xsdSimpleTypeDefinition.getName() == null ? "local type" : xsdSimpleTypeDefinition.getName());
+
+ if (showType)
+ {
+ XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+ if (baseTypeDefinition != null && XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
+ {
+ if (baseTypeDefinition.getName() != null && !xsdSimpleTypeDefinition.getContents().contains(baseTypeDefinition) && !XSDConstants.isAnySimpleType(baseTypeDefinition))
+ {
+ result.append(" : ");
+ result.append(baseTypeDefinition.getQName(xsdSimpleTypeDefinition));
+ }
+ }
+ else
+ {
+ XSDSimpleTypeDefinition itemTypeDefinition = xsdSimpleTypeDefinition.getItemTypeDefinition();
+ if (itemTypeDefinition != null)
+ {
+ if (itemTypeDefinition.getName() != null)
+ {
+ result.append(" : ");
+ result.append(itemTypeDefinition.getQName(xsdSimpleTypeDefinition));
+ }
+ }
+ else
+ {
+ List memberTypeDefinitions = xsdSimpleTypeDefinition.getMemberTypeDefinitions();
+ if (!memberTypeDefinitions.isEmpty())
+ {
+ boolean first = true;
+ for (Iterator members = memberTypeDefinitions.iterator(); members.hasNext();)
+ {
+ XSDSimpleTypeDefinition memberTypeDefinition = (XSDSimpleTypeDefinition) members.next();
+ if (memberTypeDefinition.getName() != null)
+ {
+ if (first)
+ {
+ result.append(" : ");
+ first = false;
+ }
+ else
+ {
+ result.append(" | ");
+ }
+ result.append(memberTypeDefinition.getQName(xsdSimpleTypeDefinition));
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ else if (result.length() == 0)
+ {
+ result.append("'absent'");
+ }
+ }
+ }
+ }
+
+ return result.toString();
+ }
+
+ public boolean hasChildren()
+ {
+ return false;
+ }
+
+ public boolean isComplexType()
+ {
+ return false;
+ }
+
+ public boolean isFocusAllowed()
+ {
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+ if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+ {
+ return false;
+ }
+ if (xsdSimpleTypeDefinition.getName() == null)
+ {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDTypeDefinitionAdapter.java
new file mode 100644
index 0000000..74ece93
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDTypeDefinitionAdapter.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public abstract class XSDTypeDefinitionAdapter extends XSDBaseAdapter implements IType
+{
+ public XSDTypeDefinition getXSDTypeDefinition()
+ {
+ return (XSDTypeDefinition)target;
+ }
+
+ public String getName()
+ {
+ if (getXSDTypeDefinition().eContainer() instanceof XSDSchema)
+ {
+ return getXSDTypeDefinition().getName();
+ }
+ else
+ {
+ EObject o = getXSDTypeDefinition().eContainer();
+ if (o instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent ed = (XSDNamedComponent)o;
+ return "(" + ed.getName() + "Type)";
+ }
+ }
+ return null;
+ }
+
+ public String getQualifier()
+ {
+ return getXSDTypeDefinition().getTargetNamespace();
+ }
+
+ public IType getSuperType()
+ {
+ XSDTypeDefinition td = getXSDTypeDefinition().getBaseType();
+ return td != null ? (IType)XSDAdapterFactory.getInstance().adapt(td) : null;
+ }
+
+ public Command getUpdateNameCommand(String newName)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isComplexType()
+ {
+ return false;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitor.java
similarity index 83%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitor.java
index 4acf32d..208d8b7 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitor.java
@@ -1,18 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.refactor.rename;
+package org.eclipse.wst.xsd.editor.internal.adapters;
import java.util.Iterator;
+
import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupContent;
import org.eclipse.xsd.XSDAttributeGroupDefinition;
import org.eclipse.xsd.XSDAttributeUse;
import org.eclipse.xsd.XSDComplexTypeContent;
@@ -98,6 +98,7 @@
{
if (element.isElementDeclarationReference())
{
+ visitElementDeclaration(element.getResolvedElementDeclaration());
}
else if (element.getAnonymousTypeDefinition() != null)
{
@@ -118,17 +119,31 @@
visitModelGroup(modelGroupDef.getModelGroup());
}
}
+ else
+ {
+ XSDModelGroup modelGroup = modelGroupDef.getResolvedModelGroupDefinition().getModelGroup();
+ if (modelGroup != null)
+ {
+ visitModelGroup(modelGroup);
+ }
+ }
}
-
+
public void visitAttributeGroupDefinition(XSDAttributeGroupDefinition attributeGroup)
{
- if (attributeGroup.getAttributeUses() != null)
+ for (Iterator it = attributeGroup.getContents().iterator(); it.hasNext(); )
{
- for (Iterator iter = attributeGroup.getAttributeUses().iterator(); iter.hasNext(); )
+ Object o = it.next();
+ if (o instanceof XSDAttributeUse)
{
- XSDAttributeUse attrUse = (XSDAttributeUse)iter.next();
+ XSDAttributeUse attrUse = (XSDAttributeUse)o;
visitAttributeDeclaration(attrUse.getContent());
}
+ else if (o instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)o;
+ visitAttributeGroupDefinition(attrGroup.getResolvedAttributeGroupDefinition());
+ }
}
}
@@ -140,37 +155,25 @@
{
}
+ public void visitComplexTypeContent(XSDSimpleTypeDefinition content)
+ {
+
+ }
+
public void visitComplexTypeDefinition(XSDComplexTypeDefinition type)
{
- if (type.getContentType() != null)
+ if (type.getContent() != null)
{
- XSDComplexTypeContent complexContent = (XSDComplexTypeContent) type.getContentType();
+ XSDComplexTypeContent complexContent = type.getContent();
if (complexContent instanceof XSDSimpleTypeDefinition)
{
- visitSimpleTypeDefinition((XSDSimpleTypeDefinition)complexContent);
+ visitComplexTypeContent((XSDSimpleTypeDefinition)complexContent);
}
else if (complexContent instanceof XSDParticle)
{
visitParticle((XSDParticle) complexContent);
}
}
-
- if (type.getAttributeContents() != null)
- {
- for (Iterator iter = type.getAttributeContents().iterator(); iter.hasNext(); )
- {
- XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent)iter.next();
- if (attrGroupContent instanceof XSDAttributeUse)
- {
- XSDAttributeUse attrUse = (XSDAttributeUse)attrGroupContent;
- visitAttributeDeclaration(attrUse.getContent());
- }
- else if (attrGroupContent instanceof XSDAttributeGroupDefinition)
- {
- visitAttributeGroupDefinition((XSDAttributeGroupDefinition)attrGroupContent);
- }
- }
- }
}
public void visitParticle(XSDParticle particle)
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitorForFields.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitorForFields.java
new file mode 100644
index 0000000..59b236d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitorForFields.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDVisitorForFields extends XSDVisitor
+{
+ public XSDVisitorForFields()
+ {
+ }
+
+ public List concreteComponentList = new ArrayList();
+ public List thingsWeNeedToListenTo = new ArrayList();
+
+ public void visitComplexTypeDefinition(XSDComplexTypeDefinition type)
+ {
+ if (type.getAttributeContents() != null)
+ {
+ for (Iterator iter = type.getAttributeContents().iterator(); iter.hasNext(); )
+ {
+ XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent)iter.next();
+ if (attrGroupContent instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse attrUse = (XSDAttributeUse)attrGroupContent;
+
+ visitAttributeDeclaration(attrUse.getContent());
+
+// if (attrUse.getAttributeDeclaration() != attrUse.getContent())
+// {
+// visitAttributeDeclaration(attrUse.getContent());
+// }
+// else
+// {
+// thingsWeNeedToListenTo.add(attrUse.getAttributeDeclaration());
+// concreteComponentList.add(attrUse.getAttributeDeclaration());
+// }
+ }
+ else if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)attrGroupContent;
+ thingsWeNeedToListenTo.add(attrGroup);
+ if (attrGroup.isAttributeGroupDefinitionReference())
+ {
+ attrGroup = attrGroup.getResolvedAttributeGroupDefinition();
+ visitAttributeGroupDefinition(attrGroup);
+ }
+ }
+ }
+ }
+ super.visitComplexTypeDefinition(type);
+ }
+
+ public void visitComplexTypeContent(XSDSimpleTypeDefinition content)
+ {
+ thingsWeNeedToListenTo.add(content);
+
+ super.visitComplexTypeContent(content);
+ }
+
+
+ public void visitModelGroupDefinition(XSDModelGroupDefinition modelGroupDef)
+ {
+ if (modelGroupDef.isModelGroupDefinitionReference())
+ {
+ // if it's a reference we need to listen to the reference incase it changes
+ thingsWeNeedToListenTo.add(modelGroupDef);
+ }
+ // listen to definition incase it changes
+ XSDModelGroupDefinition resolvedModelGroupDef = modelGroupDef.getResolvedModelGroupDefinition();
+ thingsWeNeedToListenTo.add(resolvedModelGroupDef);
+ super.visitModelGroupDefinition(modelGroupDef);
+ }
+
+ public void visitModelGroup(XSDModelGroup modelGroup)
+ {
+ super.visitModelGroup(modelGroup);
+ thingsWeNeedToListenTo.add(modelGroup);
+ }
+
+ public void visitAttributeGroupDefinition(XSDAttributeGroupDefinition attributeGroup)
+ {
+ for (Iterator it = attributeGroup.getContents().iterator(); it.hasNext(); )
+ {
+ Object o = it.next();
+ if (o instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse attributeUse = (XSDAttributeUse)o;
+ concreteComponentList.add(attributeUse.getAttributeDeclaration());
+ thingsWeNeedToListenTo.add(attributeUse.getAttributeDeclaration());
+ }
+ else if (o instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)o;
+ thingsWeNeedToListenTo.add(attrGroup);
+ if (attrGroup.isAttributeGroupDefinitionReference())
+ {
+ attrGroup = attrGroup.getResolvedAttributeGroupDefinition();
+ visitAttributeGroupDefinition(attrGroup);
+ }
+ }
+ }
+ }
+
+ public void visitParticle(XSDParticle particle)
+ {
+ thingsWeNeedToListenTo.add(particle);
+ super.visitParticle(particle);
+ }
+
+ public void visitElementDeclaration(XSDElementDeclaration element)
+ {
+ if (element.isElementDeclarationReference())
+ {
+ thingsWeNeedToListenTo.add(element);
+ thingsWeNeedToListenTo.add(element.getResolvedElementDeclaration());
+ // now, add the reference as a field
+ concreteComponentList.add(element);
+ }
+ else
+ {
+ concreteComponentList.add(element.getResolvedElementDeclaration());
+ // note... we intentionally ommit the call to super.visitElementDeclaration()
+ // since we don't want to delve down deeper than the element
+ }
+ }
+
+ public void visitAttributeDeclaration(XSDAttributeDeclaration attr)
+ {
+ if (attr.isAttributeDeclarationReference())
+ {
+ thingsWeNeedToListenTo.add(attr);
+ thingsWeNeedToListenTo.add(attr.getResolvedAttributeDeclaration());
+ concreteComponentList.add(attr);
+ }
+ else
+ {
+ concreteComponentList.add(attr.getResolvedAttributeDeclaration());
+ thingsWeNeedToListenTo.add(attr.getResolvedAttributeDeclaration());
+ }
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDWildcardAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDWildcardAdapter.java
new file mode 100644
index 0000000..1ab8da8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDWildcardAdapter.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.adapters;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDWildcardAdapter extends XSDBaseAdapter
+{
+
+ public XSDWildcardAdapter()
+ {
+
+ }
+
+ public Image getImage()
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard) target;
+ return XSDEditorPlugin.getXSDImage(xsdWildcard.eContainer() instanceof XSDParticle ? "icons/XSDAny.gif" : "icons/XSDAnyAttribute.gif");
+ }
+
+ public String getText()
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard) target;
+
+ StringBuffer result = new StringBuffer();
+ Element element = xsdWildcard.getElement();
+
+ if (element != null)
+ {
+ result.append(element.getNodeName());
+ boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+ boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+
+ if (hasMinOccurs || hasMaxOccurs)
+ {
+ result.append(" ["); //$NON-NLS-1$
+ if (hasMinOccurs)
+ {
+
+ int min = ((XSDParticle) xsdWildcard.getContainer()).getMinOccurs();
+ if (min == XSDParticle.UNBOUNDED)
+ {
+ result.append("*");
+ }
+ else
+ {
+ result.append(String.valueOf(min));
+ }
+ }
+ else
+ // print default
+ {
+ int min = ((XSDParticle) xsdWildcard.getContainer()).getMinOccurs();
+ result.append(String.valueOf(min));
+ }
+ if (hasMaxOccurs)
+ {
+ int max = ((XSDParticle) xsdWildcard.getContainer()).getMaxOccurs();
+ result.append("..");
+ if (max == XSDParticle.UNBOUNDED)
+ {
+ result.append("*");
+ }
+ else
+ {
+ result.append(String.valueOf(max));
+ }
+ }
+ else
+ // print default
+ {
+ result.append("..");
+ int max = ((XSDParticle) xsdWildcard.getContainer()).getMaxOccurs();
+ result.append(String.valueOf(max));
+ }
+ result.append("]");
+ }
+ }
+ return result.toString();
+
+ }
+
+ public boolean hasChildren()
+ {
+ return false;
+ }
+
+ public Object getParent(Object object)
+ {
+ XSDWildcard xsdWildcard = (XSDWildcard) target;
+ return xsdWildcard.getContainer();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/AttributeGroupDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/AttributeGroupDefinitionEditPart.java
new file mode 100644
index 0000000..3c48693
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/AttributeGroupDefinitionEditPart.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CenteredConnectionAnchor;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAttributeGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+
+public class AttributeGroupDefinitionEditPart extends ConnectableEditPart
+{
+ public static final Image ATTRIBUTE_GROUP_REF_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("obj16/attributeGroupRef.gif", true).createImage();
+
+ public AttributeGroupDefinitionEditPart()
+ {
+ super();
+ }
+
+ public XSDAttributeGroupDefinition getXSDAttributeGroupDefinition()
+ {
+ if (getModel() instanceof XSDAttributeGroupDefinitionAdapter)
+ {
+ XSDAttributeGroupDefinitionAdapter adapter = (XSDAttributeGroupDefinitionAdapter) getModel();
+ return (XSDAttributeGroupDefinition) adapter.getTarget();
+ }
+// else if (getModel() instanceof XSDAttributeGroupDefinition)
+// {
+// return (XSDAttributeGroupDefinition) getModel();
+// }
+ return null;
+
+ }
+
+ protected IFigure createFigure()
+ {
+ GenericGroupFigure figure = new GenericGroupFigure();
+ figure.getIconFigure().image = ATTRIBUTE_GROUP_REF_ICON_IMAGE;
+ return figure;
+ }
+
+ protected List getModelChildren()
+ {
+ List list = new ArrayList();
+
+ XSDAttributeGroupDefinitionAdapter adapter = (XSDAttributeGroupDefinitionAdapter)getModel();
+ XSDAttributeGroupDefinition attributeGroupDefinition = adapter.getXSDAttributeGroupDefinition();
+ Iterator i = attributeGroupDefinition.getResolvedAttributeGroupDefinition().getContents().iterator();
+
+ while (i.hasNext())
+ {
+ XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) i.next();
+
+ if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+ {
+ list.add(XSDAdapterFactory.getInstance().adapt(attrGroupContent));
+ }
+ else
+ {
+ list.add(new TargetConnectionSpaceFiller((XSDBaseAdapter)getModel()));
+ }
+ }
+
+ if (list.isEmpty())
+ {
+ list.add(new TargetConnectionSpaceFiller((XSDBaseAdapter)getModel()));
+ }
+
+ return list;
+ }
+
+
+ public ReferenceConnection createConnectionFigure(BaseEditPart child)
+ {
+ ReferenceConnection connectionFigure = new ReferenceConnection();
+
+ connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(((GenericGroupFigure)getFigure()).getIconFigure(), CenteredConnectionAnchor.RIGHT, 0, 0));
+
+ if (child instanceof AttributeGroupDefinitionEditPart)
+ {
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((AttributeGroupDefinitionEditPart) child).getTargetFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+ }
+ else if (child instanceof TargetConnectionSpacingFigureEditPart)
+ {
+ TargetConnectionSpacingFigureEditPart elem = (TargetConnectionSpacingFigureEditPart) child;
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((TargetConnectionSpacingFigureEditPart) child).getFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+ }
+
+ connectionFigure.setHighlight(false);
+ return connectionFigure;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ConnectableEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ConnectableEditPart.java
new file mode 100644
index 0000000..9d9acf1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ConnectableEditPart.java
@@ -0,0 +1,225 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.RectangleFigure;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public abstract class ConnectableEditPart extends BaseEditPart
+{
+ protected ArrayList connectionFigures = new ArrayList();
+
+ public IExtendedFigureFactory getExtendedFigureFactory()
+ {
+ EditPartFactory factory = getViewer().getEditPartFactory();
+ Assert.isTrue(factory instanceof IExtendedFigureFactory, "EditPartFactory must be an instanceof of IExtendedFigureFactory");
+ return (IExtendedFigureFactory)factory;
+ }
+
+ public ConnectableEditPart()
+ {
+ super();
+ }
+
+ protected IFigure createFigure()
+ {
+ GenericGroupFigure figure = new GenericGroupFigure();
+ return figure;
+ }
+
+ public XSDConcreteComponent getXSDConcreteComponent()
+ {
+ return (XSDConcreteComponent)((XSDBaseAdapter)getModel()).getTarget();
+ }
+
+ public List getConnectionFigures()
+ {
+ return connectionFigures;
+ }
+
+ public abstract ReferenceConnection createConnectionFigure(BaseEditPart child);
+
+ public void activate()
+ {
+ super.activate();
+ activateConnection();
+ }
+
+ protected void activateConnection()
+ {
+ if (connectionFigures == null)
+ {
+ connectionFigures = new ArrayList();
+ }
+ for (Iterator i = getChildren().iterator(); i.hasNext();)
+ {
+ Object o = i.next();
+ if (o instanceof BaseEditPart)
+ {
+ BaseEditPart g = (BaseEditPart) o;
+ ReferenceConnection figure = createConnectionFigure(g);
+ connectionFigures.add(figure);
+ figure.setPoints(figure.getPoints());
+
+ getLayer(LayerConstants.CONNECTION_LAYER).add(figure);
+ }
+ }
+ }
+
+ public void deactivate()
+ {
+ super.deactivate();
+ deactivateConnection();
+ }
+
+ protected void deactivateConnection()
+ {
+ // if we have a connection, remove it
+ ReferenceConnection connectionFigure;
+ if (connectionFigures != null && !connectionFigures.isEmpty())
+ {
+ for (Iterator i = connectionFigures.iterator(); i.hasNext();)
+ {
+ connectionFigure = (ReferenceConnection) i.next();
+
+ if (getLayer(LayerConstants.CONNECTION_LAYER).getChildren().contains(connectionFigure))
+ {
+ getLayer(LayerConstants.CONNECTION_LAYER).remove(connectionFigure);
+ }
+ }
+ connectionFigures = null;
+ }
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+ refreshConnection();
+ }
+
+ protected void refreshConnection()
+ {
+ if (!isActive())
+ return;
+
+ if (connectionFigures == null || connectionFigures.isEmpty())
+ {
+ activateConnection();
+ }
+ else
+ {
+ deactivateConnection();
+ activateConnection();
+ }
+ }
+
+ RectangleFigure selectionFeedbackFigure;
+ public void addFeedback()
+ {
+ ReferenceConnection connectionFigure;
+ if (connectionFigures != null && !connectionFigures.isEmpty())
+ {
+ for (Iterator i = connectionFigures.iterator(); i.hasNext();)
+ {
+ connectionFigure = (ReferenceConnection) i.next();
+ connectionFigure.setHighlight(true);
+ }
+ }
+ GenericGroupFigure figure = (GenericGroupFigure)getFigure();
+ Rectangle r = figure.getIconFigure().getBounds();
+ Rectangle zoomedRect = getZoomedBounds(r);
+ selectionFeedbackFigure = new RectangleFigure();
+ selectionFeedbackFigure.setForegroundColor(ColorConstants.blue);
+ selectionFeedbackFigure.setBounds(zoomedRect);
+ selectionFeedbackFigure.setFill(false);
+ selectionFeedbackFigure.setOpaque(true);
+ selectionFeedbackFigure.setLineWidth(1);
+ getLayer(LayerConstants.FEEDBACK_LAYER).add(selectionFeedbackFigure);
+ }
+
+ public void removeFeedback()
+ {
+ ReferenceConnection connectionFigure;
+ if (connectionFigures != null && !connectionFigures.isEmpty())
+ {
+ for (Iterator i = connectionFigures.iterator(); i.hasNext();)
+ {
+ connectionFigure = (ReferenceConnection) i.next();
+ connectionFigure.setHighlight(false);
+ }
+ }
+ if (selectionFeedbackFigure != null)
+ {
+ getLayer(LayerConstants.FEEDBACK_LAYER).remove(selectionFeedbackFigure);
+ }
+ selectionFeedbackFigure = null;
+ }
+
+ protected void refreshVisuals()
+ {
+ super.refreshVisuals();
+ if (selectionFeedbackFigure != null)
+ {
+ GenericGroupFigure figure = (GenericGroupFigure)getFigure();
+ Rectangle r = figure.getIconFigure().getBounds();
+ Rectangle zoomedRect = getZoomedBounds(r);
+ selectionFeedbackFigure.setBounds(zoomedRect);
+ selectionFeedbackFigure.repaint();
+ selectionFeedbackFigure.revalidate();
+ }
+ }
+
+ protected void createEditPolicies()
+ {
+ installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+ }
+
+ protected void addChildVisual(EditPart childEditPart, int index)
+ {
+ IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+ getContentPane().add(child, index);
+ }
+
+ protected void removeChildVisual(EditPart childEditPart)
+ {
+ IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+ getContentPane().remove(child);
+ }
+
+ public IFigure getContentPane()
+ {
+ return ((GenericGroupFigure)getFigure()).getContentFigure();
+ }
+
+ public Figure getTargetFigure()
+ {
+ return ((GenericGroupFigure)getFigure()).getTargetFigure();
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupDefinitionReferenceEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupDefinitionReferenceEditPart.java
new file mode 100644
index 0000000..33c4989
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupDefinitionReferenceEditPart.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CenteredConnectionAnchor;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+
+public class ModelGroupDefinitionReferenceEditPart extends ConnectableEditPart
+{
+ public static final Image image = XSDEditorPlugin.getImageDescriptor("XSDGroupRef.gif", true).createImage();
+
+ public ModelGroupDefinitionReferenceEditPart()
+ {
+ super();
+ }
+
+ protected IFigure createFigure()
+ {
+ GenericGroupFigure figure = new GenericGroupFigure();
+ figure.getIconFigure().image = image;
+ return figure;
+ }
+
+ protected List getModelChildren()
+ {
+ List list = new ArrayList();
+
+ XSDModelGroupDefinitionAdapter adapter = (XSDModelGroupDefinitionAdapter)getModel();
+ XSDModelGroup xsdModelGroup = ((XSDModelGroupDefinition) adapter.getTarget()).getResolvedModelGroupDefinition().getModelGroup();
+ if (xsdModelGroup != null)
+ list.add(XSDAdapterFactory.getInstance().adapt(xsdModelGroup));
+ return list;
+ }
+
+ public ReferenceConnection createConnectionFigure(BaseEditPart child)
+ {
+ ReferenceConnection connectionFigure = new ReferenceConnection();
+
+ connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(((GenericGroupFigure)getFigure()).getIconFigure(), CenteredConnectionAnchor.RIGHT, 0, 0));
+
+ if (child instanceof ModelGroupEditPart)
+ {
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((ModelGroupEditPart) child).getTargetFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+ }
+ connectionFigure.setHighlight(false);
+ return connectionFigure;
+ }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupEditPart.java
new file mode 100644
index 0000000..d0d299e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupEditPart.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CenteredConnectionAnchor;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.ModelGroupFigure;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+
+public class ModelGroupEditPart extends ConnectableEditPart
+{
+ protected IFigure createFigure()
+ {
+ return getExtendedFigureFactory().createModelGroupFigure(getModel());
+ }
+
+ public XSDParticle getXSDParticle()
+ {
+ Object o = getXSDModelGroup().getContainer();
+ return (o instanceof XSDParticle) ? (XSDParticle) o : null;
+ }
+
+ public XSDModelGroup getXSDModelGroup()
+ {
+ if (getModel() instanceof XSDModelGroupAdapter)
+ {
+ XSDModelGroupAdapter adapter = (XSDModelGroupAdapter) getModel();
+ return (XSDModelGroup) adapter.getTarget();
+ }
+// else if (getModel() instanceof XSDModelGroup)
+// {
+// return (XSDModelGroup) getModel();
+// }
+ return null;
+
+ }
+
+
+
+ protected void refreshVisuals()
+ {
+ String iconName = "icons/newSequence.gif";
+ GenericGroupFigure modelGroupFigure = (GenericGroupFigure)getFigure();
+ switch (getXSDModelGroup().getCompositor().getValue())
+ {
+ case XSDCompositor.ALL:
+ {
+ modelGroupFigure.getIconFigure().image = ModelGroupFigure.ALL_ICON_IMAGE;
+ break;
+ }
+ case XSDCompositor.CHOICE:
+ {
+ modelGroupFigure.getIconFigure().image = ModelGroupFigure.CHOICE_ICON_IMAGE;
+ break;
+ }
+ case XSDCompositor.SEQUENCE:
+ {
+ modelGroupFigure.getIconFigure().image = ModelGroupFigure.SEQUENCE_ICON_IMAGE;
+ break;
+ }
+ }
+
+ XSDModelGroupAdapter adapter = (XSDModelGroupAdapter) getModel();
+// String occurenceDescription = adapter.getNameAnnotationToolTipString();
+// modelGroupFigure.getIconFigure().setToolTip(occurenceDescription);
+
+ // TODO: commmon this up with XSDParticleAdapter's code
+
+ // -2 means the user didn't specify (so the default is 1)
+ int minOccurs = adapter.getMinOccurs();
+ int maxOccurs = adapter.getMaxOccurs();
+ String occurenceDescription = "";
+
+ if (minOccurs == -3 && maxOccurs == -3)
+ {
+ occurenceDescription = "";
+ }
+ else if (minOccurs == 0 && (maxOccurs == -2 || maxOccurs == 1))
+ {
+ occurenceDescription = "[0..1]";
+ }
+ else if ((minOccurs == 1 && maxOccurs == 1) ||
+ (minOccurs == -2 && maxOccurs == 1) ||
+ (minOccurs == 1 && maxOccurs == -2))
+ {
+ occurenceDescription = "[1..1]";
+ }
+ else if (minOccurs == -2 && maxOccurs == -2)
+ {
+ occurenceDescription = "";
+ }
+ else
+ {
+ if (maxOccurs == -2) maxOccurs = 1;
+ String maxSymbol = maxOccurs == -1 ? "*" : "" + maxOccurs;
+
+ String minSymbol = minOccurs == -2 ? "1" : "" + minOccurs;
+ occurenceDescription = "[" + minSymbol + ".." + maxSymbol + "]";
+ }
+
+ modelGroupFigure.getIconFigure().setToolTipText(occurenceDescription);
+ modelGroupFigure.getIconFigure().repaint();
+
+ refreshConnection();
+ }
+
+ protected List getModelChildren()
+ {
+ List list = new ArrayList();
+ XSDModelGroup xsdModelGroup = getXSDModelGroup();
+ for (Iterator i = xsdModelGroup.getContents().iterator(); i.hasNext();)
+ {
+ XSDParticle next = (XSDParticle) i.next();
+ if (next.getContent() instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) next.getContent();
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(elementDeclaration);
+ list.add(new TargetConnectionSpaceFiller((XSDBaseAdapter)adapter));
+ }
+ if (next.getContent() instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition def = (XSDModelGroupDefinition) next.getContent();
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(def);
+ list.add(adapter);
+ }
+ else if (next.getTerm() instanceof XSDModelGroup)
+ {
+ XSDModelGroup modelGroup = (XSDModelGroup) next.getTerm();
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(modelGroup);
+ list.add(adapter);
+ }
+ }
+
+ if (list.size() == 0)
+ list.add(new TargetConnectionSpaceFiller(null));
+
+ return list;
+ }
+
+ public ReferenceConnection createConnectionFigure(BaseEditPart child)
+ {
+ ReferenceConnection connectionFigure = new ReferenceConnection();
+ GenericGroupFigure modelGroupFigure = (GenericGroupFigure)getFigure();
+ connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(modelGroupFigure.getIconFigure(), CenteredConnectionAnchor.RIGHT, 0, 0));
+
+ if (child instanceof ModelGroupEditPart)
+ {
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((ModelGroupEditPart) child).getTargetFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+ }
+ else if (child instanceof TargetConnectionSpacingFigureEditPart)
+ {
+ TargetConnectionSpacingFigureEditPart elem = (TargetConnectionSpacingFigureEditPart) child;
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(elem.getFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+ }
+ else if (child instanceof ModelGroupDefinitionReferenceEditPart)
+ {
+ ModelGroupDefinitionReferenceEditPart elem = (ModelGroupDefinitionReferenceEditPart) child;
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(elem.getFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+ }
+ connectionFigure.setHighlight(false);
+ return connectionFigure;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ReferenceConnection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ReferenceConnection.java
new file mode 100644
index 0000000..009bff2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ReferenceConnection.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ConnectionRouter;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.swt.graphics.Color;
+
+public class ReferenceConnection extends PolylineConnection
+{
+ protected boolean highlight = false;
+
+ protected static final Color activeConnection = ColorConstants.black;
+ protected static final Color inactiveConnection = new Color(null, 198, 195, 198);
+
+ public ReferenceConnection()
+ {
+ super();
+ setConnectionRouter(new XSDModelGroupRouter());
+ }
+
+ public void setConnectionRouter(ConnectionRouter cr)
+ {
+ if (cr != null && getConnectionRouter() != null && !(getConnectionRouter() instanceof XSDModelGroupRouter))
+ super.setConnectionRouter(cr);
+ }
+
+ public boolean isHighlighted()
+ {
+ return highlight;
+ }
+
+ public void setHighlight(boolean highlight)
+ {
+ this.highlight = highlight;
+ setForegroundColor(highlight ? activeConnection : inactiveConnection);
+ setOpaque(highlight);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/SpaceFillerForFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/SpaceFillerForFieldEditPart.java
new file mode 100644
index 0000000..41cfa23
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/SpaceFillerForFieldEditPart.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class SpaceFillerForFieldEditPart extends BaseEditPart
+{
+ Label space;
+ public SpaceFillerForFieldEditPart()
+ {
+ super();
+ }
+
+ protected IFigure createFigure()
+ {
+ space = new Label("");
+ space.setIcon(XSDEditorPlugin.getXSDImage("icons/Dot.gif"));
+ space.setBorder(new MarginBorder(3, 0, 3, 0));
+ return space;
+ }
+
+ protected void refreshVisuals()
+ {
+ }
+
+ protected void createEditPolicies()
+ {
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/TargetConnectionSpacingFigureEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/TargetConnectionSpacingFigureEditPart.java
new file mode 100644
index 0000000..c26537d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/TargetConnectionSpacingFigureEditPart.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.editor.internal.design.figures.SpacingFigure;
+
+public class TargetConnectionSpacingFigureEditPart extends BaseEditPart
+{
+ public TargetConnectionSpacingFigureEditPart()
+ {
+ super();
+ }
+
+ SpacingFigure figure;
+
+ protected IFigure createFigure()
+ {
+ figure = new SpacingFigure();
+ return figure;
+ }
+
+ public IFigure getConnectionFigure()
+ {
+ return figure;
+ }
+
+ protected void createEditPolicies()
+ {
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDAttributesForAnnotationEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDAttributesForAnnotationEditPart.java
new file mode 100644
index 0000000..f7f17f5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDAttributesForAnnotationEditPart.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+
+public class XSDAttributesForAnnotationEditPart extends BaseEditPart
+{
+ IComplexType complexType;
+ public XSDAttributesForAnnotationEditPart()
+ {
+ super();
+ }
+
+ protected IFigure createFigure()
+ {
+ Figure fig = new Figure();
+ fig.setLayoutManager(new ToolbarLayout());
+ return fig;
+ }
+
+ protected void createEditPolicies()
+ {
+
+ }
+
+ protected List getModelChildren()
+ {
+ IStructure structure = ((Annotation)getModel()).getOwner();
+ if (structure instanceof IComplexType)
+ {
+ complexType = (IComplexType)structure;
+ if (complexType instanceof XSDComplexTypeDefinitionAdapter)
+ {
+ XSDComplexTypeDefinitionAdapter adapter = (XSDComplexTypeDefinitionAdapter) complexType;
+ return adapter.getAttributeGroupContent();
+ }
+ }
+ return Collections.EMPTY_LIST;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDBaseFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDBaseFieldEditPart.java
new file mode 100644
index 0000000..58c7f21
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDBaseFieldEditPart.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.IAnnotationProvider;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseFieldEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+
+public class XSDBaseFieldEditPart extends BaseFieldEditPart
+{
+
+ public XSDBaseFieldEditPart()
+ {
+ super();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.editparts.AbstractEditPart#refreshVisuals()
+ */
+ protected void refreshVisuals()
+ {
+ IFieldFigure figure = getFieldFigure();
+ IField field = (IField) getModel();
+
+ figure.getNameLabel().setText(field.getName());
+ figure.getTypeLabel().setText(field.getTypeName());
+ figure.refreshVisuals(getModel());
+
+ String occurrenceDescription = "";
+ if (field instanceof IAnnotationProvider)
+ {
+ occurrenceDescription = ((IAnnotationProvider)field).getNameAnnotationString();
+ }
+
+ figure.getNameAnnotationLabel().setText(occurrenceDescription);
+
+ figure.recomputeLayout();
+
+ // our model implements ITreeElement
+ if (getModel() instanceof ITreeElement)
+ {
+ figure.getNameLabel().setIcon(((ITreeElement)getModel()).getImage());
+ }
+
+ if (getRoot() != null)
+ ((GraphicalEditPart)getRoot()).getFigure().invalidateTree();
+ }
+
+ public void addNotify()
+ {
+ super.addNotify();
+ getFieldFigure().editPartAttached(this);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDEditPartFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDEditPartFactory.java
new file mode 100644
index 0000000..561bb40
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDEditPartFactory.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.ADTEditPartFactory;
+import org.eclipse.wst.xsd.adt.design.editparts.ColumnEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CompartmentEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.TypeVizFigureFactory;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAttributeGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDSimpleTypeDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.SpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IModelGroupFigure;
+
+public class XSDEditPartFactory extends ADTEditPartFactory implements IExtendedFigureFactory
+{
+ protected IExtendedFigureFactory delegate;
+
+ public XSDEditPartFactory()
+ {
+ delegate = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getFigureFactory();
+ if (delegate == null)
+ delegate = new TypeVizFigureFactory();
+ }
+
+ public EditPart createEditPart(EditPart context, Object model)
+ {
+ EditPart child = null;
+ // Override edit part where desired
+
+ if (model instanceof IField)
+ {
+ if (model instanceof SpaceFiller)
+ {
+ child = new SpaceFillerForFieldEditPart();
+ }
+ else if (context instanceof CompartmentEditPart)
+ {
+ child = new XSDBaseFieldEditPart();
+ }
+ }
+ else if (model instanceof XSDSimpleTypeDefinitionAdapter)
+ {
+ child = new XSDSimpleTypeEditPart();
+ }
+ else if (model instanceof XSDModelGroupAdapter)
+ {
+ child = new ModelGroupEditPart();
+ }
+ else if (model instanceof Annotation)
+ {
+ Annotation annotation = (Annotation) model;
+ String kind = annotation.getCompartment().getKind();
+ if (kind.equals("element"))
+ {
+ child = new XSDGroupsForAnnotationEditPart();
+ }
+ else if (kind.equals("attribute"))
+ {
+ child = new XSDAttributesForAnnotationEditPart();
+ }
+ }
+ else if (!(context instanceof ColumnEditPart))
+ {
+ if (model instanceof TargetConnectionSpaceFiller)
+ {
+ child = new TargetConnectionSpacingFigureEditPart();
+ }
+ else if (model instanceof XSDModelGroupDefinitionAdapter)
+ {
+ child = new ModelGroupDefinitionReferenceEditPart();
+ }
+ else if (model instanceof XSDAttributeGroupDefinitionAdapter)
+ {
+ child = new AttributeGroupDefinitionEditPart();
+ }
+ }
+ // if we don't have a specialzied XSD edit part to create
+ // then we simply call the super class to create a generic ADT edit part
+ //
+ if (child == null)
+ {
+ child = super.createEditPart(context, model);
+ }
+
+ // if at this this point we have not created an edit part we simply
+ // create a placeholder edit part to provide the most robust behaviour possible
+ //
+ if (child == null)
+ {
+ // TODO (cs) log an error message here, since we shouldn't really get here
+ child = new SpaceFillerForFieldEditPart();
+ }
+
+ child.setModel(model);
+ return child;
+ }
+
+ protected void checkChild(EditPart child, Object model)
+ {
+ // do nothing since we have contribute our own editparts to the facade
+ }
+
+ public ICompartmentFigure createCompartmentFigure(Object model)
+ {
+ return delegate.createCompartmentFigure(model);
+ }
+
+ public IStructureFigure createStructureFigure(Object model)
+ {
+ return delegate.createStructureFigure(model);
+ }
+
+ public IFieldFigure createFieldFigure(Object model)
+ {
+ return delegate.createFieldFigure(model);
+ }
+
+ public IModelGroupFigure createModelGroupFigure(Object model)
+ {
+ return delegate.createModelGroupFigure(model);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDGroupsForAnnotationEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDGroupsForAnnotationEditPart.java
new file mode 100644
index 0000000..e981285
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDGroupsForAnnotationEditPart.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupDefinitionAdapter;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+
+public class XSDGroupsForAnnotationEditPart extends BaseEditPart
+{
+ IComplexType complexType;
+ public XSDGroupsForAnnotationEditPart()
+ {
+ super();
+ }
+
+ protected IFigure createFigure()
+ {
+ Figure fig = new Figure();
+ fig.setLayoutManager(new ToolbarLayout());
+ return fig;
+ }
+
+ protected void createEditPolicies()
+ {
+
+ }
+
+ protected List getModelChildren()
+ {
+ List xsdModelGroupList = new ArrayList();
+ List adapterList = new ArrayList();
+
+ IStructure structure = ((Annotation)getModel()).getOwner();
+ if (structure instanceof IComplexType)
+ {
+ complexType = (IComplexType)structure;
+ if (complexType instanceof XSDComplexTypeDefinitionAdapter)
+ {
+ XSDComplexTypeDefinitionAdapter adapter = (XSDComplexTypeDefinitionAdapter) complexType;
+ xsdModelGroupList = adapter.getModelGroups();
+ }
+
+ for (Iterator i = xsdModelGroupList.iterator(); i.hasNext(); )
+ {
+ Object obj = i.next();
+ if (obj instanceof XSDModelGroup)
+ {
+ adapterList.add(XSDAdapterFactory.getInstance().adapt((XSDModelGroup)obj));
+ }
+ else if (obj instanceof XSDModelGroupDefinition)
+ {
+ adapterList.add(XSDAdapterFactory.getInstance().adapt((XSDModelGroupDefinition)obj));
+ }
+ }
+ }
+ else if (structure instanceof XSDModelGroupDefinitionAdapter)
+ {
+ XSDModelGroupDefinitionAdapter adapter = (XSDModelGroupDefinitionAdapter) structure;
+ XSDModelGroup group = adapter.getXSDModelGroupDefinition().getModelGroup();
+ if (group != null)
+ {
+ adapterList.add(XSDAdapterFactory.getInstance().adapt(group));
+ }
+ }
+
+ return adapterList;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDModelGroupRouter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDModelGroupRouter.java
new file mode 100644
index 0000000..29e8098
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDModelGroupRouter.java
@@ -0,0 +1,379 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.draw2d.AbstractRouter;
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.ConnectionRouter;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.draw2d.geometry.Ray;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+// TODO Manhattan connection router is final
+public class XSDModelGroupRouter extends AbstractRouter
+{
+ public XSDModelGroupRouter()
+ {
+ super();
+ }
+ private Map rowsUsed = new HashMap();
+ private Map colsUsed = new HashMap();
+
+ private Map reservedInfo = new HashMap();
+
+ private class ReservedInfo {
+ public List reservedRows = new ArrayList(2);
+ public List reservedCols = new ArrayList(2);
+ }
+
+ private static Ray UP = new Ray(0, -1),
+ DOWN = new Ray(0, 1),
+ LEFT = new Ray(-1, 0),
+ RIGHT = new Ray(1, 0);
+
+
+ /**
+ * @see ConnectionRouter#invalidate(Connection)
+ */
+ public void invalidate(Connection connection) {
+ removeReservedLines(connection);
+ }
+
+ private int getColumnNear(Connection connection, int r, int n, int x) {
+ int min = Math.min(n, x),
+ max = Math.max(n, x);
+ if (min > r) {
+ max = min;
+ min = r - (min - r);
+ }
+ if (max < r) {
+ min = max;
+ max = r + (r - max);
+ }
+ int proximity = 0;
+ int direction = -1;
+ if (r % 2 == 1)
+ r--;
+ Integer i;
+ while (proximity < r) {
+ i = new Integer(r + proximity * direction);
+ if (!colsUsed.containsKey(i)) {
+ colsUsed.put(i, i);
+ reserveColumn(connection, i);
+ return i.intValue();
+ }
+ int j = i.intValue();
+ if (j <= min)
+ return j + 2;
+ if (j >= max)
+ return j - 2;
+ if (direction == 1)
+ direction = -1;
+ else {
+ direction = 1;
+ proximity += 2;
+ }
+ }
+ return r;
+ }
+
+ /**
+ * Returns the direction the point <i>p</i> is in relation to the given rectangle.
+ * Possible values are LEFT (-1,0), RIGHT (1,0), UP (0,-1) and DOWN (0,1).
+ *
+ * @param r the rectangle
+ * @param p the point
+ * @return the direction from <i>r</i> to <i>p</i>
+ */
+ protected Ray getDirection(Rectangle r, Point p) {
+ int i, distance = Math.abs(r.x - p.x);
+ Ray direction;
+
+ direction = LEFT;
+
+ i = Math.abs(r.y - p.y);
+ if (i <= distance) {
+ distance = i;
+ direction = UP;
+ }
+
+ i = Math.abs(r.bottom() - p.y);
+ if (i <= distance) {
+ distance = i;
+ direction = DOWN;
+ }
+
+ i = Math.abs(r.right() - p.x);
+ if (i < distance) {
+ distance = i;
+ direction = RIGHT;
+ }
+
+ return direction;
+ }
+
+ protected Ray getEndDirection(Connection conn) {
+ ConnectionAnchor anchor = conn.getTargetAnchor();
+ Point p = getEndPoint(conn);
+ Rectangle rect;
+ if (anchor.getOwner() == null)
+ rect = new Rectangle(p.x - 1, p.y - 1, 2, 2);
+ else {
+ rect = conn.getTargetAnchor().getOwner().getBounds().getCopy();
+ conn.getTargetAnchor().getOwner().translateToAbsolute(rect);
+ }
+ return getDirection(rect, p);
+ }
+
+ protected int getRowNear(Connection connection, int r, int n, int x) {
+ int min = Math.min(n, x),
+ max = Math.max(n, x);
+ if (min > r) {
+ max = min;
+ min = r - (min - r);
+ }
+ if (max < r) {
+ min = max;
+ max = r + (r - max);
+ }
+
+ int proximity = 0;
+ int direction = -1;
+ if (r % 2 == 1)
+ r--;
+ Integer i;
+ while (proximity < r) {
+ i = new Integer(r + proximity * direction);
+ if (!rowsUsed.containsKey(i)) {
+ rowsUsed.put(i, i);
+ reserveRow(connection, i);
+ return i.intValue();
+ }
+ int j = i.intValue();
+ if (j <= min)
+ return j + 2;
+ if (j >= max)
+ return j - 2;
+ if (direction == 1)
+ direction = -1;
+ else {
+ direction = 1;
+ proximity += 2;
+ }
+ }
+ return r;
+ }
+
+ protected Ray getStartDirection(Connection conn) {
+ ConnectionAnchor anchor = conn.getSourceAnchor();
+ Point p = getStartPoint(conn);
+ Rectangle rect;
+ if (anchor.getOwner() == null)
+ rect = new Rectangle(p.x - 1, p.y - 1, 2, 2);
+ else {
+ rect = conn.getSourceAnchor().getOwner().getBounds().getCopy();
+ conn.getSourceAnchor().getOwner().translateToAbsolute(rect);
+ }
+ return getDirection(rect, p);
+ }
+
+ protected void processPositions(Ray start, Ray end, List positions,
+ boolean horizontal, Connection conn) {
+ removeReservedLines(conn);
+
+ int pos[] = new int[positions.size() + 2];
+ if (horizontal)
+ pos[0] = start.x;
+ else
+ pos[0] = start.y;
+ int i;
+ for (i = 0; i < positions.size(); i++) {
+ pos[i + 1] = ((Integer)positions.get(i)).intValue();
+ }
+ if (horizontal == (positions.size() % 2 == 1))
+ pos[++i] = end.x;
+ else
+ pos[++i] = end.y;
+
+ PointList points = new PointList();
+ points.addPoint(new Point(start.x, start.y));
+ Point p;
+ int current, prev, min, max;
+ boolean adjust;
+ for (i = 2; i < pos.length - 1; i++) {
+ horizontal = !horizontal;
+ prev = pos[i - 1];
+ current = pos[i];
+
+ adjust = (i != pos.length - 2);
+ if (horizontal) {
+ if (adjust) {
+ min = pos[i - 2];
+ max = pos[i + 2];
+ pos[i] = current = getRowNear(conn, current, min, max);
+ }
+ p = new Point(prev, current);
+ } else {
+ if (adjust) {
+ min = pos[i - 2];
+ max = pos[i + 2];
+ pos[i] = current = getColumnNear(conn, current, min, max);
+ }
+ p = new Point(current, prev);
+ }
+ points.addPoint(p);
+ }
+ points.addPoint(new Point(end.x, end.y));
+ conn.setPoints(points);
+ }
+
+ /**
+ * @see ConnectionRouter#remove(Connection)
+ */
+ public void remove(Connection connection) {
+ removeReservedLines(connection);
+ }
+
+ protected void removeReservedLines(Connection connection) {
+ ReservedInfo rInfo = (ReservedInfo) reservedInfo.get(connection);
+ if (rInfo == null)
+ return;
+
+ for (int i = 0; i < rInfo.reservedRows.size(); i++) {
+ rowsUsed.remove(rInfo.reservedRows.get(i));
+ }
+ for (int i = 0; i < rInfo.reservedCols.size(); i++) {
+ colsUsed.remove(rInfo.reservedCols.get(i));
+ }
+ reservedInfo.remove(connection);
+ }
+
+ protected void reserveColumn(Connection connection, Integer column) {
+ ReservedInfo info = (ReservedInfo) reservedInfo.get(connection);
+ if (info == null) {
+ info = new ReservedInfo();
+ reservedInfo.put(connection, info);
+ }
+ info.reservedCols.add(column);
+ }
+
+ protected void reserveRow(Connection connection, Integer row) {
+ ReservedInfo info = (ReservedInfo) reservedInfo.get(connection);
+ if (info == null) {
+ info = new ReservedInfo();
+ reservedInfo.put(connection, info);
+ }
+ info.reservedRows.add(row);
+ }
+
+ /**
+ * @see ConnectionRouter#route(Connection)
+ */
+ public void route(Connection conn) {
+ if ((conn.getSourceAnchor() == null) || (conn.getTargetAnchor() == null))
+ return;
+ int i;
+ Point startPoint = getStartPoint(conn);
+ conn.translateToRelative(startPoint);
+ Point endPoint = getEndPoint(conn);
+ conn.translateToRelative(endPoint);
+
+ Ray start = new Ray(startPoint);
+ Ray end = new Ray(endPoint);
+ Ray average = new Ray(startPoint.x + 2, startPoint.y); // start.getAveraged(end);
+
+ Ray direction = new Ray(start, end);
+ Ray startNormal = getStartDirection(conn);
+ Ray endNormal = getEndDirection(conn);
+
+ List positions = new ArrayList(5);
+ boolean horizontal = startNormal.isHorizontal();
+ if (horizontal)
+ positions.add(new Integer(start.y));
+ else
+ positions.add(new Integer(start.x));
+ horizontal = !horizontal;
+
+ if (startNormal.dotProduct(endNormal) == 0) {
+ if ((startNormal.dotProduct(direction) >= 0)
+ && (endNormal.dotProduct(direction) <= 0)) {
+ // 0
+ } else {
+ // 2
+ if (startNormal.dotProduct(direction) < 0)
+ i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+ else {
+ if (horizontal)
+ i = average.y;
+ else
+ i = average.x;
+ }
+ positions.add(new Integer(i));
+ horizontal = !horizontal;
+
+ if (endNormal.dotProduct(direction) > 0)
+ i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+ else {
+ if (horizontal)
+ i = average.y;
+ else
+ i = average.x;
+ }
+ positions.add(new Integer(i));
+ horizontal = !horizontal;
+ }
+ } else {
+ if (startNormal.dotProduct(endNormal) > 0) {
+ //1
+ if (startNormal.dotProduct(direction) >= 0)
+ i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+ else
+ i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+ positions.add(new Integer(i));
+ horizontal = !horizontal;
+ } else {
+ //3 or 1
+ if (startNormal.dotProduct(direction) < 0) {
+ i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+ positions.add(new Integer(i));
+ horizontal = !horizontal;
+ }
+
+ if (horizontal)
+ i = average.y;
+ else
+ i = average.x;
+ positions.add(new Integer(i));
+ horizontal = !horizontal;
+
+ if (startNormal.dotProduct(direction) < 0) {
+ i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+ positions.add(new Integer(i));
+ horizontal = !horizontal;
+ }
+ }
+ }
+ if (horizontal)
+ positions.add(new Integer(end.y));
+ else
+ positions.add(new Integer(end.x));
+
+ processPositions(start, end, positions, startNormal.isHorizontal(), conn);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDSimpleTypeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDSimpleTypeEditPart.java
new file mode 100644
index 0000000..a8a4e34
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDSimpleTypeEditPart.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseTypeConnectingEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.TypeReferenceConnection;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.RoundedLineBorder;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.StructureFigure;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDSimpleTypeDefinitionAdapter;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDSimpleTypeEditPart extends BaseTypeConnectingEditPart
+{
+ StructureFigure figure;
+ protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+
+ public XSDSimpleTypeEditPart()
+ {
+ super();
+ }
+
+ public XSDSimpleTypeDefinition getXSDSimpleTypeDefinition()
+ {
+ return (XSDSimpleTypeDefinition)((XSDSimpleTypeDefinitionAdapter)getModel()).getTarget();
+ }
+
+ protected IFigure createFigure()
+ {
+ figure = new StructureFigure();
+ figure.setBorder(new RoundedLineBorder(1, 10));
+ ToolbarLayout toolbarLayout = new ToolbarLayout();
+ toolbarLayout.setStretchMinorAxis(true);
+ figure.setLayoutManager(toolbarLayout);
+ figure.getHeadingFigure().getLabel().setIcon(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
+ return figure;
+ }
+
+ protected void refreshVisuals()
+ {
+ String name = ((XSDSimpleTypeDefinitionAdapter)getModel()).getDisplayName();
+ figure.headingFigure.getLabel().setText(name);
+ }
+
+ public IStructureFigure getStructureFigure()
+ {
+ return (IStructureFigure)getFigure();
+ }
+
+ public IFigure getContentPane()
+ {
+ return getStructureFigure().getContentPane();
+ }
+
+
+ protected void createEditPolicies()
+ {
+ installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+ }
+
+ public void addFeedback()
+ {
+ getStructureFigure().addSelectionFeedback();
+ super.addFeedback();
+ }
+
+ public void removeFeedback()
+ {
+ getStructureFigure().removeSelectionFeedback();
+ super.removeFeedback();
+ }
+
+ public ReferenceConnection createConnectionFigure(BaseEditPart child)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public TypeReferenceConnection createConnectionFigure()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/SpaceFiller.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/SpaceFiller.java
new file mode 100644
index 0000000..682a64e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/SpaceFiller.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts.model;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+/**
+ * Dummy class to add space to field list
+ *
+ */
+public class SpaceFiller implements IField
+{
+ String kind;
+ public SpaceFiller(String kind)
+ {
+ super();
+ this.kind = kind;
+ }
+
+ public Image getImage()
+ {
+ if (kind.equals("attribute"))
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+ }
+ else
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+ }
+ }
+
+ public String getKind()
+ {
+ return kind;
+ }
+
+ public void setKind(String kind)
+ {
+ this.kind = kind;
+ }
+
+ public boolean isGlobal()
+ {
+ return false;
+ }
+
+ public IComplexType getContainerType()
+ {
+ return null;
+ }
+
+ public String getName()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getTypeName()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getTypeNameQualifier()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public IType getType()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public int getMinOccurs()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getMaxOccurs()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Command getUpdateMinOccursCommand(int minOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateMaxOccursCommand(int maxOccurs)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getUpdateNameCommand(String name)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Command getDeleteCommand()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void registerListener(IADTObjectListener listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void unregisterListener(IADTObjectListener listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public boolean isReadOnly()
+ {
+ return true;
+ }
+
+ public IModel getModel()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
+
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/TargetConnectionSpaceFiller.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/TargetConnectionSpaceFiller.java
new file mode 100644
index 0000000..ff59262
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/TargetConnectionSpaceFiller.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.editparts.model;
+
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+
+public class TargetConnectionSpaceFiller implements IADTObject
+{
+ private XSDBaseAdapter adapter;
+
+ public TargetConnectionSpaceFiller(XSDBaseAdapter adapter)
+ {
+ this.adapter = adapter;
+ }
+
+ /**
+ * @deprecated remove this
+ * @return
+ */
+ public XSDBaseAdapter getAdapter()
+ {
+ return adapter;
+ }
+
+ public void registerListener(IADTObjectListener listener)
+ {
+
+ }
+
+ public void unregisterListener(IADTObjectListener listener)
+ {
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/CenteredIconFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/CenteredIconFigure.java
new file mode 100644
index 0000000..2f62395
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/CenteredIconFigure.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.figures;
+
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.RectangleFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.swt.graphics.Image;
+
+public class CenteredIconFigure extends RectangleFigure
+{
+ public Image image;
+ protected Label toolTipLabel;
+
+ public CenteredIconFigure()
+ {
+ super();
+ setFill(true);
+ toolTipLabel = new Label();
+ }
+
+
+ protected void outlineShape(Graphics graphics)
+ {
+ }
+
+ protected void fillShape(Graphics g)
+ {
+ super.fillShape(g);
+ if (image != null)
+ {
+ Rectangle r = getBounds();
+ Dimension imageSize = new Dimension(15, 15);
+ g.drawImage(image, r.x + (r.width - imageSize.width)/2, r.y + (r.height - imageSize.height)/2);
+ }
+ }
+
+ public Label getToolTipLabel()
+ {
+ return toolTipLabel;
+ }
+
+ public void setToolTipText(String text)
+ {
+ if (text.length() > 0)
+ {
+ setToolTip(toolTipLabel);
+ toolTipLabel.setText(text);
+ }
+ else
+ {
+ setToolTip(null);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/GenericGroupFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/GenericGroupFigure.java
new file mode 100644
index 0000000..a80b113
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/GenericGroupFigure.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.figures;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.editor.internal.design.layouts.ModelGroupLayout;
+
+public class GenericGroupFigure extends Figure
+{
+ protected CenteredIconFigure centeredIconFigure;
+ protected Figure contentFigure;
+
+ public GenericGroupFigure()
+ {
+ super();
+ setLayoutManager(new ModelGroupLayout(true));
+
+ centeredIconFigure = new CenteredIconFigure();
+ centeredIconFigure.setPreferredSize(new Dimension(15, 15));
+
+ add(centeredIconFigure);
+ contentFigure = new Figure();
+ contentFigure.setLayoutManager(new ModelGroupLayout(false, 0));
+ add(contentFigure);
+ }
+
+ public void setIconFigure(Image image)
+ {
+ centeredIconFigure.image = image;
+ }
+
+ public CenteredIconFigure getTargetFigure()
+ {
+ return centeredIconFigure;
+ }
+
+ public CenteredIconFigure getIconFigure()
+ {
+ return centeredIconFigure;
+ }
+
+ public Figure getContentFigure()
+ {
+ return contentFigure;
+ }
+
+ public void setToolTipText(String text)
+ {
+ centeredIconFigure.setToolTipText(text);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IExtendedFigureFactory.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IExtendedFigureFactory.java
index ff6e4db..6dbcacb 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IExtendedFigureFactory.java
@@ -1,18 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.model;
+package org.eclipse.wst.xsd.editor.internal.design.figures;
+import org.eclipse.wst.xsd.adt.design.figures.IFigureFactory;
-
-public interface ModelAdapterListener
-{
- public void propertyChanged(Object object, String property);
+public interface IExtendedFigureFactory extends IFigureFactory
+{
+ IModelGroupFigure createModelGroupFigure(Object model);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectionRenderingViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IModelGroupFigure.java
similarity index 66%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectionRenderingViewer.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IModelGroupFigure.java
index 6ed611d..8465ae2 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectionRenderingViewer.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IModelGroupFigure.java
@@ -1,16 +1,17 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.gef.util.figures;
+package org.eclipse.wst.xsd.editor.internal.design.figures;
-public interface IConnectionRenderingViewer
-{
- public ConnectionRenderingFigure getConnectionRenderingFigure();
-}
\ No newline at end of file
+import org.eclipse.wst.xsd.adt.design.figures.IADTFigure;
+
+public interface IModelGroupFigure extends IADTFigure
+{
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/ModelGroupFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/ModelGroupFigure.java
new file mode 100644
index 0000000..83a3c63
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/ModelGroupFigure.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.figures;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class ModelGroupFigure extends GenericGroupFigure implements IModelGroupFigure
+{
+ public static final Image SEQUENCE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newSequence2.gif", true).createImage();
+ public static final Image CHOICE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newChoice.gif", true).createImage();
+ public static final Image ALL_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("obj16/all.gif", true).createImage();
+
+ public ModelGroupFigure()
+ {
+ super();
+ }
+
+ public void setIconFigure(Image image)
+ {
+ centeredIconFigure.image = image;
+ }
+
+ public void addSelectionFeedback()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void editPartAttached(EditPart owner)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void refreshVisuals(Object model)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removeSelectionFeedback()
+ {
+ // TODO Auto-generated method stub
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/SpacingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/SpacingFigure.java
new file mode 100644
index 0000000..5c1f657
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/SpacingFigure.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.figures;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class SpacingFigure extends Label
+{
+ public SpacingFigure()
+ {
+ super("");
+ setIcon(XSDEditorPlugin.getXSDImage("icons/Dot.gif"));
+ setBorder(new MarginBorder(3, 0, 3, 0));
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerLayout.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ContainerLayout.java
similarity index 92%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerLayout.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ContainerLayout.java
index 78480f9..1cfdd71 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerLayout.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ContainerLayout.java
@@ -1,14 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.gef.util.figures;
+package org.eclipse.wst.xsd.editor.internal.design.layouts;
import java.util.List;
@@ -16,6 +16,7 @@
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.editor.internal.design.figures.SpacingFigure;
public class ContainerLayout extends AbstractLayout
@@ -61,6 +62,7 @@
*
* @param figure Figure whose preferred size is required.
* @return The preferred size of the passed Figure.
+ * @since 2.0
*/
protected Dimension calculatePreferredSizeHelper(IFigure parent)
{
@@ -112,14 +114,14 @@
// Here we ensure that an unexpanded container is given a size of (0,0)
//
- if (parent instanceof IExpandable)
- {
- IExpandable expandableFigure = (IExpandable)parent;
- if (!expandableFigure.isExpanded())
- {
- preferred = new Dimension();
- }
- }
+// if (parent instanceof IExpandable)
+// {
+// IExpandable expandableFigure = (IExpandable)parent;
+// if (!expandableFigure.isExpanded())
+// {
+// preferred = new Dimension();
+// }
+// }
if (preferred == null)
{
@@ -214,4 +216,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ModelGroupLayout.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ModelGroupLayout.java
new file mode 100644
index 0000000..94eecb0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ModelGroupLayout.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.design.layouts;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.AbstractLayout;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.editor.internal.design.figures.SpacingFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.ModelGroupFigure;
+
+public class ModelGroupLayout extends AbstractLayout
+{
+ protected boolean isHorizontal;
+ protected int spacing = 7;
+ protected int border = 0;
+
+ public ModelGroupLayout()
+ {
+ this(0);
+ }
+
+ public ModelGroupLayout(boolean isHorizontal)
+ {
+ this.isHorizontal = isHorizontal;
+ }
+
+ public ModelGroupLayout(boolean isHorizontal, int spacing)
+ {
+ this.isHorizontal = isHorizontal;
+ this.spacing = spacing;
+ }
+
+ public ModelGroupLayout(int spacing)
+ {
+ super();
+ this.spacing = spacing;
+ }
+
+ protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint)
+ {
+ Dimension preferred = new Dimension();
+ List children = container.getChildren();
+
+ for (int i = 0; i < children.size(); i++)
+ {
+ IFigure child = (IFigure) children.get(i);
+
+ Dimension childSize = child.getPreferredSize();
+
+ if (isHorizontal)
+ {
+ preferred.width += childSize.width;
+ preferred.height = Math.max(preferred.height, childSize.height);
+ }
+ else
+ {
+ preferred.height += childSize.height;
+ preferred.width = Math.max(preferred.width, childSize.width);
+ }
+ }
+
+ int childrenSize = children.size();
+ if (childrenSize > 1)
+ {
+ if (isHorizontal)
+ {
+ preferred.width += spacing * (childrenSize - 1);
+ }
+ else
+ {
+ preferred.height += spacing * (childrenSize - 1);
+ }
+ }
+
+ preferred.width += border * 2;
+ preferred.height += border * 2;
+ preferred.width += container.getInsets().getWidth();
+ preferred.height += container.getInsets().getHeight();
+
+ return preferred;
+ }
+
+ public void layout(IFigure container)
+ {
+ List children = container.getChildren();
+
+ int rx = 0;
+ Dimension dimension = new Dimension();
+
+ for (int i = 0; i < children.size(); i++)
+ {
+ IFigure child = (IFigure) children.get(i);
+ Dimension childSize = child.getPreferredSize();
+ if (isHorizontal)
+ {
+ dimension.height = Math.max(dimension.height, childSize.height);
+ rx += childSize.width;
+ }
+ else
+ {
+ dimension.width = Math.max(dimension.width, childSize.width);
+ }
+ }
+
+ if (isHorizontal)
+ {
+ dimension.height += border * 2;
+ dimension.width += border;
+ }
+ else
+ {
+ dimension.width += border * 2;
+ dimension.height += border;
+ }
+
+ Rectangle r = container.getClientArea();
+ dimension = new Dimension(r.width, r.height);
+ Point p = new Point(0, 0);
+
+ for (Iterator i = children.iterator(); i.hasNext();)
+ {
+ IFigure child = (IFigure) i.next();
+ Dimension childSize = child.getPreferredSize();
+
+ if (isHorizontal)
+ {
+ Rectangle rectangle = new Rectangle(p.x, 0, childSize.width, childSize.height);
+
+ // last child
+ if (!i.hasNext())
+ {
+ rectangle.width = dimension.width - rectangle.x;
+ }
+
+ if (p.x == 0)
+ {
+ rectangle.y = r.height / 2 - childSize.height / 2;
+ }
+ else
+ {
+ rectangle.y = r.height / 2 - childSize.height / 2;
+ }
+
+ rectangle.translate(container.getClientArea().getLocation());
+ child.setBounds(rectangle);
+ p.x += childSize.width;
+ p.x += spacing;
+
+ }
+ else
+ {
+ Rectangle rectangle = new Rectangle(0, p.y, childSize.width, childSize.height);
+
+ if (child instanceof SpacingFigure)
+ {
+ rectangle.x = dimension.width + 6;
+ }
+ else if (child instanceof ModelGroupFigure)
+ {
+ rectangle.width = dimension.width - rectangle.x;
+ }
+ else
+ {
+ rectangle.width = dimension.width - rectangle.x;
+ }
+
+ rectangle.translate(container.getClientArea().getLocation());
+ child.setBounds(rectangle);
+ p.y += childSize.height;
+ p.y += spacing;
+ }
+ }
+ }
+
+ public void setSpacing(int spacing)
+ {
+ this.spacing = spacing;
+ }
+
+ protected int alignFigure(IFigure parent, IFigure child)
+ {
+ return -1;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/BuiltInTypesTreeViewerProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/BuiltInTypesTreeViewerProvider.java
new file mode 100644
index 0000000..f140c21
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/BuiltInTypesTreeViewerProvider.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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
+ * Trung de Irene <trungha@ca.ibm.com>
+ *******************************************************************************/
+package org.eclipse.wst.xsd.editor.internal.dialogs;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * This class provides the content for SelectBuiltInTypesForFilterDialog
+ * readability Warning: Some simple tricks to tweak efficiency are used
+ */
+public class BuiltInTypesTreeViewerProvider {
+
+ ILabelProvider labelProvider;
+
+ ITreeContentProvider contentProvider;
+
+ private static final String CONST_PARENT = "parent";
+
+ /**
+ * Currently there are 3 subgroups: Numbers, Data and Time, Other
+ * Folks can choose to expand to more subgroups
+ */
+ private static int BUILT_IN_TYPES_SUB_GROUP = 3;
+
+ static String[] numberTypes =
+ { "base64Binary", "byte", "decimal", "double", "float", "hexBinary",
+ "int", "integer", "long", "negativeInteger", "nonNegativeInteger",
+ "nonPositiveInteger", "positiveInteger", "short", "unsignedByte",
+ "unsignedInt", "unsignedLong", "unsignedShort"};
+
+ static String[] dateAndTimeTypes =
+ { "date", "dateTime", "duration", "gDay",
+ "gMonth", "gMonthDay", "gYear", "gYearMonth", "time"};
+
+
+ public static List getAllBuiltInTypes() {
+ List items = new ArrayList();
+ //for (int i = 0; i < XSDDOMHelper.dataType.length; i++) {
+ // items.add(XSDDOMHelper.dataType[i][0]);
+ //}
+ Iterator it = items.iterator();
+
+ List mainContainer = new ArrayList(BUILT_IN_TYPES_SUB_GROUP);
+ ComponentSpecification header = new ComponentSpecification("", "Root", null);
+ mainContainer.add(header);
+
+ List numbersGroup = new ArrayList();
+ header = new ComponentSpecification("", "Numbers", null);
+ numbersGroup.add(header);
+ mainContainer.add(numbersGroup);
+
+ List dateAndTimeGroup = new ArrayList();
+ header = new ComponentSpecification("", "Date and Time", null);
+ dateAndTimeGroup.add(header);
+ mainContainer.add(dateAndTimeGroup);
+
+ List otherGroup = new ArrayList();
+ header = new ComponentSpecification("", "Other", null);
+ otherGroup.add(header);
+ mainContainer.add(otherGroup);
+
+ while (it.hasNext()) {
+ Object item = it.next();
+ String name = item.toString();
+
+ ComponentSpecification builtInTypeItem = new ComponentSpecification(name, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, null);
+
+ // if this built-In Type is in Number group
+ if ( partOf(name, numberTypes) ){
+ // Set parent
+ //builtInTypeItem.addAttributeInfo(CONST_PARENT, numbersGroup);
+
+ numbersGroup.add(builtInTypeItem);
+ }
+ // if this built-In Type is in Date-and-Time group
+ else if ( partOf(name, dateAndTimeTypes)){
+ //builtInTypeItem.addAttributeInfo(CONST_PARENT, dateAndTimeGroup);
+ dateAndTimeGroup.add(builtInTypeItem);
+ }
+ // otherwise, put in Other group
+ else {
+ //builtInTypeItem.addAttributeInfo(CONST_PARENT, otherGroup);
+ otherGroup.add(builtInTypeItem);
+ }
+ }
+
+ return mainContainer;
+ }
+
+ public ILabelProvider getLabelProvider(){
+ if (labelProvider != null)
+ return labelProvider;
+
+ labelProvider = new BuiltInTypeLabelProvider();
+ return labelProvider;
+ }
+
+ public ITreeContentProvider getContentProvider() {
+ if (contentProvider != null)
+ return contentProvider;
+
+ contentProvider = new BuiltInTypesTreeContentProvider();
+ return contentProvider;
+ }
+
+ /**
+ * Determines whether an equivalent of 'item' appears in 'array'
+ * @param item
+ * @param array
+ * @return
+ */
+ private static boolean partOf(String item, String[] array){
+ for(int i = 0; i < array.length; i++ ){
+ if ( item.equals(array[i]) ){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ class BuiltInTypeLabelProvider implements ILabelProvider{
+ public Image getImage(Object element) {
+ if ( getText(element).equals("Numbers") )
+ return XSDEditorPlugin.getXSDImage("icons/XSDNumberTypes.gif");
+ if ( getText(element).equals("Date and Time") )
+ return XSDEditorPlugin.getXSDImage("icons/XSDDateAndTimeTypes.gif");
+ if ( getText(element).equals("Other") )
+ return XSDEditorPlugin.getXSDImage("icons/browsebutton.gif");
+ if ( element instanceof ComponentSpecification ){
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+ }
+ return null;
+ }
+
+ public String getText(Object element) {
+ ComponentSpecification spec = null;
+
+ /* if not non-leaf node, the first element has the name for
+ * the whole list */
+ if (element instanceof List){
+ spec = (ComponentSpecification) ((List) element).get(0);
+ }
+ else if (element instanceof ComponentSpecification ){
+ spec = (ComponentSpecification) element;
+ }
+ return (String) spec.getName();
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+
+ }
+
+ public void dispose() {
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+
+ }
+
+ }
+
+
+ class BuiltInTypesTreeContentProvider implements ITreeContentProvider {
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof List) {
+ List parentContent = (List) parentElement;
+
+ /** Ignore the first element (which contains the name of this list
+ * ie. 'Numbers', 'Date and time', 'Other') */
+ return parentContent.subList(1, parentContent.size()).toArray();
+ }
+ return new Object[0];
+ }
+
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ if (getChildren(element).length > 1) {
+ return true;
+ }
+ return false;
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ public void dispose() {
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewComponentDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewComponentDialog.java
new file mode 100644
index 0000000..d148a72
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewComponentDialog.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.dialogs;
+
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+public class NewComponentDialog extends Dialog implements ModifyListener
+{
+ protected Text nameField;
+ protected Button okButton;
+ protected String name;
+ protected String title;
+ protected Label errorMessageLabel;
+ protected List usedNames;
+
+ public NewComponentDialog(Shell parentShell, String title, String defaultName)
+ {
+ super(parentShell);
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ name = defaultName;
+ this.title = title;
+ }
+
+ public NewComponentDialog(Shell parentShell, String title, String defaultName, List usedNames)
+ {
+ super(parentShell);
+ setShellStyle(getShellStyle() | SWT.RESIZE);
+ name = defaultName;
+ this.title = title;
+ this.usedNames = usedNames;
+ }
+
+ public int createAndOpen()
+ {
+ create();
+ getShell().setText(title);
+ setBlockOnOpen(true);
+ return open();
+ }
+
+ protected Control createContents(Composite parent)
+ {
+ Control control = super.createContents(parent);
+ nameField.forceFocus();
+ nameField.selectAll();
+ updateErrorMessage();
+ return control;
+ }
+
+
+ protected void createButtonsForButtonBar(Composite parent)
+ {
+ okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+ createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+ }
+
+ protected void createHeaderContent(Composite parent)
+ {
+ }
+
+ protected void createExtendedContent(Composite parent)
+ {
+ }
+
+ protected Control createDialogArea(Composite parent)
+ {
+ Composite dialogArea = (Composite)super.createDialogArea(parent);
+
+ createHeaderContent(dialogArea);
+
+ Composite composite = new Composite(dialogArea, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginWidth = 0;
+ composite.setLayout(layout);
+
+ GridData gdFill= new GridData();
+ gdFill.horizontalAlignment= GridData.FILL;
+ gdFill.grabExcessHorizontalSpace= true;
+ gdFill.verticalAlignment= GridData.FILL;
+ gdFill.grabExcessVerticalSpace= true;
+ composite.setLayoutData(gdFill);
+
+ Label nameLabel = new Label(composite, SWT.NONE);
+ nameLabel.setText("name");//XSDEditorPlugin.getXSDString("_UI_LABEL_NAME")); //$NON-NLS-1$
+
+ nameField = new Text(composite, SWT.SINGLE | SWT.BORDER);
+ GridData gd= new GridData();
+ gd.horizontalAlignment= GridData.FILL;
+ gd.grabExcessHorizontalSpace= true;
+ gd.widthHint = 200;
+ nameField.setLayoutData(gd);
+ nameField.setText(name);
+ nameField.addModifyListener(this);
+
+ createExtendedContent(dialogArea);
+
+ // error message
+ errorMessageLabel = new Label(dialogArea, SWT.NONE);
+ errorMessageLabel.setText("error message goes here");
+ GridData gd2 = new GridData();
+ gd2.horizontalAlignment= GridData.FILL;
+ gd2.grabExcessHorizontalSpace= true;
+ gd2.widthHint = 200;
+ errorMessageLabel.setLayoutData(gd2);
+// Color color = new Color(errorMessageLabel.getDisplay(), 200, 0, 0);
+// errorMessageLabel.setForeground(color);
+
+ return dialogArea;
+ }
+
+ public void modifyText(ModifyEvent e)
+ {
+ updateErrorMessage();
+ }
+
+ protected String computeErrorMessage(String name)
+ {
+ if (usedNames == null)
+ return null;
+
+ Iterator iterator = usedNames.iterator();
+ while (iterator.hasNext()) {
+ if (name.equalsIgnoreCase((String) iterator.next())) {
+ return "_UI_LABEL_WARNING_DUPLICATE_NAME_EXISTS";
+ }
+ }
+
+ return null;
+ }
+
+ protected void updateErrorMessage()
+ {
+ String errorMessage = null;
+ String name = nameField.getText().trim();
+ if (name.length() > 0)
+ {
+ errorMessage = computeErrorMessage(name);
+ }
+ else
+ {
+ errorMessage = "";
+ }
+ errorMessageLabel.setText(errorMessage != null ? errorMessage : "");
+// okButton.setEnabled(errorMessage == null);
+ }
+
+ protected void buttonPressed(int buttonId)
+ {
+ if (buttonId == IDialogConstants.OK_ID)
+ {
+ name = nameField.getText();
+ }
+ super.buttonPressed(buttonId);
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeButtonHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeButtonHandler.java
new file mode 100644
index 0000000..14ae1d7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeButtonHandler.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.dialogs;
+
+import org.eclipse.wst.common.ui.internal.search.dialogs.INewComponentHandler;
+
+public class NewTypeButtonHandler implements INewComponentHandler
+{
+ public NewTypeButtonHandler()
+ {
+ }
+
+ public void openNewComponentDialog()
+ {
+ NewTypeDialog newTypeDialog = new NewTypeDialog();
+ newTypeDialog.open();
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeDialog.java
new file mode 100644
index 0000000..cf15bfb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeDialog.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.dialogs;
+
+import java.net.URL;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+
+public class NewTypeDialog extends NewComponentDialog implements IComponentDialog
+{
+ protected static int SIMPLE_TYPE = 0;
+ protected static int COMPLEX_TYPE = 1;
+ protected Object setObject;
+ protected int typeKind;
+ protected Object selection;
+
+ public NewTypeDialog()
+ {
+ super(Display.getCurrent().getActiveShell(), "New Type", "NewType");
+ }
+
+ public int createAndOpen()
+ {
+ int returnCode = super.createAndOpen();
+ if (returnCode == 0)
+ {
+ if (setObject instanceof Adapter)
+ {
+ //Command command = new AddComplexTypeDefinitionCommand(getName(), schema);
+ }
+ }
+ return returnCode;
+ }
+
+ public ComponentSpecification getSelectedComponent()
+ {
+ ComponentSpecification componentSpecification = new ComponentSpecification(null, getName(), null);
+ componentSpecification.setMetaName(typeKind == COMPLEX_TYPE ? IXSDSearchConstants.COMPLEX_TYPE_META_NAME : IXSDSearchConstants.SIMPLE_TYPE_META_NAME);
+ componentSpecification.setNew(true);
+ return componentSpecification;
+ }
+
+ public void setInitialSelection(ComponentSpecification componentSpecification)
+ {
+ // TODO Auto-generated method stub
+ }
+
+ protected void createHeaderContent(Composite parent)
+ {
+ final Button complexTypeButton = new Button(parent, SWT.RADIO);
+ complexTypeButton.setText("Complex Type");
+
+ final Button simpleTypeButton = new Button(parent, SWT.RADIO);
+ simpleTypeButton.setText("Simple Type");
+
+ SelectionAdapter listener = new SelectionAdapter()
+ {
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (e.widget == simpleTypeButton)
+ {
+ typeKind = SIMPLE_TYPE;
+ }
+ else if (e.widget == complexTypeButton)
+ {
+ typeKind = COMPLEX_TYPE;
+ }
+ }
+ };
+ complexTypeButton.setSelection(true);
+ typeKind = COMPLEX_TYPE;
+ simpleTypeButton.addSelectionListener(listener);
+ complexTypeButton.addSelectionListener(listener);
+ Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ separator.setLayoutData(gd);
+ }
+
+ protected String getNormalizedLocation(String location)
+ {
+ try
+ {
+ URL url = new URL(location);
+ URL resolvedURL = Platform.resolve(url);
+ location = resolvedURL.getPath();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return location;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/SelectBuiltInTypesForFilteringDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/SelectBuiltInTypesForFilteringDialog.java
new file mode 100644
index 0000000..9b3d58f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/SelectBuiltInTypesForFilteringDialog.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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
+ * Trung de Irene <trungha@ca.ibm.com>
+ *******************************************************************************/
+package org.eclipse.wst.xsd.editor.internal.dialogs;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+/**
+ * The BuiltInTypesFilteringDialog is a SelectionDialog that allows the user to
+ * select a ...
+ */
+public class SelectBuiltInTypesForFilteringDialog extends CheckedTreeSelectionDialog {
+
+ public final static String CUSTOM_LIST_SEPARATOR = XSDEditorPlugin.CUSTOM_LIST_SEPARATOR;
+
+ public SelectBuiltInTypesForFilteringDialog(Shell parent,
+ ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
+ super(parent, labelProvider, contentProvider);
+
+ init();
+ }
+
+ public CheckboxTreeViewer getTreeViewer(){
+ return super.getTreeViewer();
+ }
+
+ private void init(){
+ // grey state enable
+ setContainerMode(true);
+
+ // TODO externalize String
+ setTitle("Set common Built-In types");
+ setMessage("Select the types that you do not want to filter out: ");
+
+ //super.create();
+ //super.getTreeViewer().setSorter(new ViewerSorter());
+
+ }
+
+ /**
+ * Returns a String acting as list of built-in types selected by the user
+ * in the filter dialog (white space acts as the item separator).
+ * Suggest using getSelectedBuiltInTypesFromString
+ * to get a concrete array of selected types.
+ * We can only store String in the plugin preference's storage so we have
+ * use this method for conversion
+ */
+ public static String getTypesListInString(Object[] chosenTypes) {
+ String returningList = "";
+ for (int i = 0; i < chosenTypes.length; i++){
+ if ( chosenTypes[i] instanceof ComponentSpecification){
+ ComponentSpecification aType =
+ (ComponentSpecification) chosenTypes[i];
+
+ returningList += aType.getName() + CUSTOM_LIST_SEPARATOR;
+ }
+ /* else selectedBuiltInTypes[i] instanceof List, ie. a parentNode
+ * we ignore it. */
+ }
+ return returningList;
+ }
+
+ /**
+ * Filters out all built-In type not recorded in the 'listString' and
+ * returns the result in a List
+ * Warning: recursive method
+ * @param listString
+ * @param aContainer
+ * Containing all types
+ * @return a subset of what 'aContainer' has as specified by 'listString'
+ */
+ public static List getSelectedBuiltInTypesFromString(String listString,
+ List aContainer) {
+ List selectedTypes = new ArrayList();
+
+ // ignore the 'header' item in the container, starting from i = 1
+ for (int i = 1; i < aContainer.size(); i++){
+ Object o = aContainer.get(i);
+ if ( o instanceof ComponentSpecification){
+ ComponentSpecification aType = (ComponentSpecification) o;
+ String typeName = (String) aType.getName();
+ // if typeName's name appears in 'listString'
+ if ( listString.indexOf(typeName + CUSTOM_LIST_SEPARATOR) != -1)
+ selectedTypes.add(o);
+ }
+ else if ( o instanceof List){
+ selectedTypes.addAll( getSelectedBuiltInTypesFromString(listString, (List) o) );
+ }
+ }
+ return selectedTypes;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/Dot.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/Dot.gif
new file mode 100644
index 0000000..210bb24
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/Dot.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateDtd.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateDtd.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateDtd.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateDtd.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateJava.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateJava.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateJava.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateJava.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GraphViewElementRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GraphViewElementRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GraphViewElementRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GraphViewElementRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/NewXSD.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/NewXSD.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/NewXSD.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/NewXSD.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/RegexWizardArrow.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/RegexWizardArrow.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/RegexWizardArrow.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/RegexWizardArrow.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/TriangleToolBar.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/TriangleToolBar.gif
new file mode 100644
index 0000000..bd37eb5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/TriangleToolBar.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/ValidateXSD.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/ValidateXSD.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/ValidateXSD.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/ValidateXSD.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAll.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAll.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAll.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAll.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnnotate.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnnotate.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnnotate.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnnotate.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAny.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAny.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAny.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAny.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnyAttribute.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnyAttribute.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnyAttribute.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnyAttribute.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAppInfo.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAppInfo.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAppInfo.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAppInfo.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttribute.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttribute.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttribute.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttribute.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroup.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroup.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroup.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroup.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroupRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDChoice.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDChoice.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDChoice.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDChoice.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexContent.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexContent.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexContent.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexContent.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexType.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexType.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexType.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexType.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDateAndTimeTypes.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDateAndTimeTypes.gif
new file mode 100644
index 0000000..4fc84e4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDateAndTimeTypes.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDDoc.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDoc.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDDoc.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDoc.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElement.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElement.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElement.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElement.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElementRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElementRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElementRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElementRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDExtension.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDExtension.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDExtension.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDExtension.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDField.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDField.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDField.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDField.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDFile.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDFile.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDFile.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDFile.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalAttribute.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalAttribute.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalAttribute.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalAttribute.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalElement.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalElement.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalElement.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalElement.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroup.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroup.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroup.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroup.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroupRef.gif
new file mode 100644
index 0000000..34a7fb3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDImport.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDImport.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDImport.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDImport.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDInclude.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDInclude.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDInclude.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDInclude.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKey.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKey.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKey.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKey.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKeyRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKeyRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKeyRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKeyRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDNotation.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNotation.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDNotation.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNotation.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNumberTypes.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNumberTypes.gif
new file mode 100644
index 0000000..7134210
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNumberTypes.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDRedefine.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDRedefine.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDRedefine.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDRedefine.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSelector.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSelector.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSelector.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSequence.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSequence.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSequence.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSequence.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleContent.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleContent.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleContent.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleContent.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleEnum.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleEnum.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleEnum.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleEnum.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleList.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleList.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleList.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleList.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimplePattern.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimplePattern.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimplePattern.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimplePattern.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleRestrict.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleRestrict.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleRestrict.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleRestrict.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleType.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleType.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleType.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleType.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleTypeForEditPart.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleTypeForEditPart.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleTypeForEditPart.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleTypeForEditPart.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleUnion.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleUnion.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleUnion.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleUnion.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDUnique.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDUnique.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDUnique.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDUnique.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_browse.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_browse.gif
new file mode 100644
index 0000000..85f9baa
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_browse.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_category.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_category.gif
new file mode 100644
index 0000000..9e665d5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_category.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/back.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/back.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/back.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/back.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/browsebutton.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/browsebutton.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/error_st_obj.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/error_st_obj.gif
new file mode 100644
index 0000000..0bc6068
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/error_st_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/forward.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/forward.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/forward.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/forward.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/generate_xml.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/generate_xml.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/generate_xml.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/generate_xml.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newChoice.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newChoice.gif
new file mode 100644
index 0000000..eca1446
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newChoice.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence.gif
new file mode 100644
index 0000000..a56782f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence2.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence2.gif
new file mode 100644
index 0000000..9e3968c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence2.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/regx_wiz.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/regx_wiz.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/regx_wiz.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/regx_wiz.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/reloadgrammar.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/reloadgrammar.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/reloadgrammar.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/reloadgrammar.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/sort.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/sort.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/sort.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/sort.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/xmlcatalog_obj.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/xmlcatalog_obj.gif
new file mode 100644
index 0000000..a61441f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/xmlcatalog_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/DesignViewNavigationLocation.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/DesignViewNavigationLocation.java
new file mode 100644
index 0000000..c6a773e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/DesignViewNavigationLocation.java
@@ -0,0 +1,339 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.navigation;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.INavigationLocation;
+import org.eclipse.ui.NavigationLocation;
+import org.eclipse.wst.xsd.adt.design.DesignViewGraphicalViewer;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDVisitor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+/**
+ * This class exists to support navigation in a context where there is no text
+ * editor page. In these cases we can't rely on the TextSelectionNavigationLocations
+ * so we this class which is designed to work with just the design view.
+ */
+public class DesignViewNavigationLocation extends NavigationLocation
+{
+ protected Path path;
+
+ public DesignViewNavigationLocation(IEditorPart part)
+ {
+ super(part);
+ this.path = new Path();
+ }
+
+ public DesignViewNavigationLocation(IEditorPart part, XSDConcreteComponent component)
+ {
+ super(part);
+ this.path = Path.computePath(component);
+ }
+
+ public boolean mergeInto(INavigationLocation currentLocation)
+ {
+ boolean result = false;
+ if (currentLocation instanceof DesignViewNavigationLocation)
+ {
+ DesignViewNavigationLocation loc = (DesignViewNavigationLocation) currentLocation;
+ result = loc.path.toString().equals(path.toString());
+ //System.out.println("path1=" + loc.path.toString());
+ //System.out.println("path2=" + path.toString());
+ }
+ else
+ {
+// System.out.println("this.editorPart = " + getEditorPart());
+// System.out.println("that.editorPart = " + currentLocation.getInput());
+// System.out.println(currentLocation.getClass().getName());
+ }
+ return result;
+ }
+
+ public void restoreLocation()
+ {
+ //System.out.println("resourceLocation " + path.toString());
+ XSDSchema schema = (XSDSchema) getEditorPart().getAdapter(XSDSchema.class);
+ Object viewer = getEditorPart().getAdapter(GraphicalViewer.class);
+ if (viewer instanceof DesignViewGraphicalViewer)
+ {
+ DesignViewGraphicalViewer graphicalViewer = (DesignViewGraphicalViewer) viewer;
+ RootEditPart rootEditPart = graphicalViewer.getRootEditPart();
+ EditPart editPart = rootEditPart.getContents();
+ if (editPart instanceof RootContentEditPart)
+ {
+ XSDConcreteComponent component = Path.computeComponent(schema, path);
+ if (component != null)
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(component);
+ if (adapter != null)
+ {
+ ((RootContentEditPart) editPart).setInput(adapter);
+ }
+ }
+ }
+ }
+ }
+
+ public void restoreState(IMemento memento)
+ {
+ String string = memento.getString("path");
+ path = Path.createPath(string);
+ }
+
+ public void saveState(IMemento memento)
+ {
+ memento.putString("path", path.toString());
+ }
+
+ public void update()
+ {
+ // TODO (cs) not sure what needs to be done here
+ }
+ static class PathSegment
+ {
+ final static int ELEMENT = 1;
+ final static int TYPE = 2;
+ int kind;
+ String name;
+
+ PathSegment()
+ {
+ }
+
+ PathSegment(int kind, String name)
+ {
+ this.kind = kind;
+ this.name = name;
+ }
+ }
+ static class Path
+ {
+ List segments = new ArrayList();
+
+ static XSDConcreteComponent computeComponent(XSDSchema schema, Path path)
+ {
+ PathResolvingXSDVisitor visitor = new PathResolvingXSDVisitor(path);
+ visitor.visitSchema(schema);
+ if (visitor.isDone())
+ {
+ return visitor.result;
+ }
+ return null;
+ }
+
+ static Path createPath(String string)
+ {
+ Path path = new Path();
+ PathSegment segment = null;
+ for (StringTokenizer st = new StringTokenizer(string, "/"); st.hasMoreTokens();)
+ {
+ String token = st.nextToken();
+ int kind = -1;
+ if (token.equals("element"))
+ {
+ kind = PathSegment.ELEMENT;
+ }
+ else if (token.equals("type"))
+ {
+ kind = PathSegment.TYPE;
+ }
+ if (kind != -1)
+ {
+ segment = new PathSegment();
+ segment.kind = kind;
+ path.segments.add(segment);
+ String namePattern = "[@name='";
+ int startIndex = token.indexOf(namePattern);
+ if (startIndex != -1)
+ {
+ startIndex += namePattern.length();
+ int endIndex = token.indexOf("']");
+ if (endIndex != -1)
+ {
+ segment.name = token.substring(startIndex, endIndex);
+ }
+ }
+ }
+ }
+ return path;
+ }
+
+ static Path computePath(XSDConcreteComponent component)
+ {
+ Path path = new Path();
+ for (EObject c = component; c != null; c = c.eContainer())
+ {
+ if (c instanceof XSDConcreteComponent)
+ {
+ PathSegment segment = computePathSegment((XSDConcreteComponent) c);
+ if (segment != null)
+ {
+ path.segments.add(0, segment);
+ }
+ }
+ }
+ return path;
+ }
+
+ static PathSegment computePathSegment(XSDConcreteComponent c)
+ {
+ if (c instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration ed = (XSDElementDeclaration) c;
+ return new PathSegment(PathSegment.ELEMENT, ed.getResolvedElementDeclaration().getName());
+ }
+ else if (c instanceof XSDTypeDefinition)
+ {
+ XSDTypeDefinition td = (XSDTypeDefinition) c;
+ return new PathSegment(PathSegment.TYPE, td.getName());
+ }
+ return null;
+ }
+
+ public String toString()
+ {
+ StringBuffer b = new StringBuffer();
+ for (Iterator i = segments.iterator(); i.hasNext();)
+ {
+ PathSegment segment = (PathSegment) i.next();
+ String kind = "";
+ if (segment.kind == PathSegment.ELEMENT)
+ {
+ kind = "element";
+ }
+ else if (segment.kind == PathSegment.TYPE)
+ {
+ kind = "type";
+ }
+ b.append(kind);
+ if (segment.name != null)
+ {
+ b.append("[@name='" + segment.name + "']");
+ }
+ if (i.hasNext())
+ {
+ b.append("/");
+ }
+ }
+ return b.toString();
+ }
+ }
+
+
+ static class PathResolvingXSDVisitor extends XSDVisitor
+ {
+ Path path;
+ int index = -1;
+ PathSegment segment;
+ XSDConcreteComponent result = null;
+
+ PathResolvingXSDVisitor(Path path)
+ {
+ this.path = path;
+ incrementSegment();
+ }
+
+ boolean isDone()
+ {
+ return index >= path.segments.size();
+ }
+
+ void incrementSegment()
+ {
+ index++;
+ if (index < path.segments.size())
+ {
+ segment = (PathSegment) path.segments.get(index);
+ }
+ else
+ {
+ segment = null;
+ }
+ }
+
+ public void visitSchema(XSDSchema schema)
+ {
+ if (segment != null)
+ {
+ if (segment.kind == PathSegment.ELEMENT)
+ {
+ XSDElementDeclaration ed = schema.resolveElementDeclaration(segment.name);
+ if (ed != null)
+ {
+ visitElementDeclaration(ed);
+ }
+ }
+ else if (segment.kind == PathSegment.TYPE)
+ {
+ XSDTypeDefinition td = schema.resolveTypeDefinition(segment.name);
+ if (td != null)
+ {
+ visitTypeDefinition(td);
+ }
+ }
+ }
+ }
+
+ public void visitElementDeclaration(XSDElementDeclaration element)
+ {
+ if (segment != null)
+ {
+ String name = element.getResolvedElementDeclaration().getName();
+ if (segment.kind == PathSegment.ELEMENT && isMatch(segment.name, name))
+ {
+ result = element;
+ incrementSegment();
+ if (!isDone())
+ {
+ super.visitElementDeclaration(element);
+ }
+ }
+ }
+ }
+
+ public void visitTypeDefinition(XSDTypeDefinition type)
+ {
+ if (segment != null)
+ {
+ String name = type.getName();
+ if (segment.kind == PathSegment.TYPE && isMatch(segment.name, name))
+ {
+ result = type;
+ incrementSegment();
+ if (!isDone())
+ {
+ super.visitTypeDefinition(type);
+ }
+ }
+ }
+ }
+
+ protected boolean isMatch(String name1, String name2)
+ {
+ return name1 != null ? name1.equals(name2) : name1 == name2;
+ }
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/MultiPageEditorTextSelectionNavigationLocation.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/MultiPageEditorTextSelectionNavigationLocation.java
new file mode 100644
index 0000000..8cb66ff
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/MultiPageEditorTextSelectionNavigationLocation.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.navigation;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.TextSelectionNavigationLocation;
+
+/**
+ * The platform's navigation history plumbing doesn't like multipage text
+ * editors very much and tends to ignore text locations. To fix this
+ * problem we need to override the getEditPart() method of the super class
+ * in order to return the actual TextEditor of our multi-page editor
+ */
+public class MultiPageEditorTextSelectionNavigationLocation extends TextSelectionNavigationLocation
+{
+ public MultiPageEditorTextSelectionNavigationLocation(ITextEditor part, boolean initialize)
+ {
+ super(part, initialize);
+ }
+
+ protected IEditorPart getEditorPart()
+ {
+ IEditorPart part = super.getEditorPart();
+ return (ITextEditor) part.getAdapter(ITextEditor.class);
+ }
+
+ public String getText()
+ {
+ // ISSUE: how to get title?
+ // IEditorPart part = getEditorPart();
+ // if (part instanceof WSDLTextEditor) {
+ // return ((WSDLTextEditor) part).getWSDLEditor().getTitle();
+ // }
+ // else {
+ // return super.getText();
+ // }
+ return super.getText();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/preferences/XSDPreferencePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/preferences/XSDPreferencePage.java
similarity index 96%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/preferences/XSDPreferencePage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/preferences/XSDPreferencePage.java
index 5f31f56..7e4ecd2 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/preferences/XSDPreferencePage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/preferences/XSDPreferencePage.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.preferences;
+package org.eclipse.wst.xsd.editor.internal.preferences;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
@@ -28,8 +28,8 @@
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
public class XSDPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, Listener
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/IXSDTypesFilter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/IXSDTypesFilter.java
new file mode 100644
index 0000000..204066c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/IXSDTypesFilter.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.search;
+
+public interface IXSDTypesFilter {
+ /**
+ * Give me an Object o, if I know it and it should be filtered out, I will
+ * return true. Otherwise I'll return false, even if I don't know the object
+ * @param o
+ * @return
+ */
+ public boolean shouldFilterOut(Object o);
+
+ public void turnOn();
+ public void turnOff();
+ public boolean isOn();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDComponentDescriptionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDComponentDescriptionProvider.java
new file mode 100644
index 0000000..d62bce1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDComponentDescriptionProvider.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.search;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.common.core.search.SearchMatch;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+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.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDComponentDescriptionProvider extends LabelProvider implements IComponentDescriptionProvider
+{
+ public boolean isApplicable(Object component)
+ {
+ // TODO (cs) if this provider is used in a multi language context
+ // we'll need to provide some logic here
+ return true;
+ }
+
+ private static final Image SIMPLE_TYPE_IMAGE = XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+ private static final Image COMPLEX_TYPE_IMAGE = XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
+ private static final Image ELEMENT_IMAGE = XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+ //private final static Image BUILT_IN_TYPE)IMAGE =
+
+ public String getQualifier(Object component)
+ {
+ String result = null;
+ if (component instanceof ComponentSpecification)
+ {
+ result = ((ComponentSpecification)component).getQualifier();
+ }
+ else if (component instanceof XSDNamedComponent)
+ {
+ result = ((XSDNamedComponent)component).getTargetNamespace();
+ }
+ else if (component instanceof SearchMatch)
+ {
+ QualifiedName qualifiedName = getQualifiedNameForSearchMatch((SearchMatch)component);
+ if (qualifiedName != null)
+ {
+ result = qualifiedName.getNamespace();
+ }
+ }
+ return result;
+ }
+
+ // TODO... this will be much easier with Hiroshi's proposed SearchMatch changes
+ //
+ private QualifiedName getQualifiedNameForSearchMatch(SearchMatch match)
+ {
+ QualifiedName qualifiedName = null;
+ Object o = match.map.get("name");
+ if (o != null && o instanceof QualifiedName)
+ {
+ qualifiedName = (QualifiedName)o;
+ }
+ return qualifiedName;
+ }
+
+ public String getName(Object component)
+ {
+ String result = null;
+ if (component instanceof ComponentSpecification)
+ {
+ result = ((ComponentSpecification)component).getName();
+ }
+ else if (component instanceof XSDNamedComponent)
+ {
+ result = ((XSDNamedComponent)component).getName();
+ }
+ else if (component instanceof SearchMatch)
+ {
+ QualifiedName qualifiedName = getQualifiedNameForSearchMatch((SearchMatch)component);
+ if (qualifiedName != null)
+ {
+ result = qualifiedName.getLocalName();
+ }
+ }
+ return result;
+ }
+
+ public IFile getFile(Object component)
+ {
+ IFile result = null;
+ if (component instanceof ComponentSpecification)
+ {
+ result = ((ComponentSpecification)component).getFile();
+ }
+ else if (component instanceof SearchMatch)
+ {
+ result = ((SearchMatch)component).getFile();
+ }
+ else if (component instanceof XSDConcreteComponent)
+ {
+ XSDConcreteComponent concreteComponent = (XSDConcreteComponent)component;
+ XSDSchema schema = concreteComponent.getSchema();
+ if (schema != null)
+ {
+ // TODO (cs) revisit and test more
+ //
+ String location = schema.getSchemaLocation();
+ String platformResource = "platform:/resource";
+ if (location != null && location.startsWith(platformResource))
+ {
+ Path path = new Path(location.substring(platformResource.length()));
+ result = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ }
+ }
+ }
+ return result;
+ }
+
+ public ILabelProvider getLabelProvider()
+ {
+ return this;
+ }
+
+ public String getText(Object element)
+ {
+ String result = "";
+ String name = getName(element);
+ if (name != null)
+ {
+ result += name;
+ /*
+ String qualifier = getQualifier(element);
+ if (qualifier != null)
+ {
+ result += " - " + qualifier;
+ }
+ IFile file = getFile(element);
+ if (file != null)
+ {
+ result += " (" + file.getProject().getName() + ")";
+ }*/
+ }
+ return result;
+ }
+
+ public Image getImage(Object component)
+ {
+ Image result = null;
+ if (component instanceof SearchMatch)
+ {
+ SearchMatch searchMatch = (SearchMatch)component;
+ QualifiedName qualifiedName = (QualifiedName)searchMatch.map.get("metaName");
+ if ( qualifiedName != null ){
+ if ( qualifiedName.equals(IXSDSearchConstants.SIMPLE_TYPE_META_NAME))
+ result = SIMPLE_TYPE_IMAGE;
+ else if ( qualifiedName.equals(IXSDSearchConstants.COMPLEX_TYPE_META_NAME))
+ result = COMPLEX_TYPE_IMAGE;
+ else if ( qualifiedName.equals(IXSDSearchConstants.ELEMENT_META_NAME))
+ result = ELEMENT_IMAGE;
+ }
+ }
+ else if (component instanceof XSDComplexTypeDefinition)
+ result = COMPLEX_TYPE_IMAGE;
+ else if (component instanceof XSDSimpleTypeDefinition)
+ result = SIMPLE_TYPE_IMAGE;
+ else if (component instanceof XSDElementDeclaration)
+ result = ELEMENT_IMAGE;
+ return result;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDElementsSearchListProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDElementsSearchListProvider.java
new file mode 100644
index 0000000..288609b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDElementsSearchListProvider.java
@@ -0,0 +1,170 @@
+package org.eclipse.wst.xsd.editor.internal.search;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.wst.common.core.search.SearchEngine;
+import org.eclipse.wst.common.core.search.SearchMatch;
+import org.eclipse.wst.common.core.search.SearchParticipant;
+import org.eclipse.wst.common.core.search.SearchPlugin;
+import org.eclipse.wst.common.core.search.SearchRequestor;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.pattern.SearchPattern;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentSearchListProvider;
+import org.eclipse.wst.xml.core.internal.search.XMLComponentDeclarationPattern;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+
+public class XSDElementsSearchListProvider implements
+ IComponentSearchListProvider {
+ protected XSDSchema[] schemas;
+
+ protected IFile currentFile;
+
+ // TODO (cs) remove these and use proper search scopes!
+ //
+ public static final int ENCLOSING_PROJECT_SCOPE = 0;
+
+ public static final int ENTIRE_WORKSPACE_SCOPE = 1;
+
+ public XSDElementsSearchListProvider(IFile currentFile,
+ XSDSchema[] schemas) {
+ this.schemas = schemas;
+ this.currentFile = currentFile;
+ }
+
+ public void populateComponentList(IComponentList list, SearchScope scope,
+ IProgressMonitor pm) {
+ // we traverse the elements already defined within the visible
+ // schemas
+ // we do this in addition to the component search since this should
+ // execute
+ // very quickly and there's a good chance the user wants to select an
+ // element that's
+ // already imported/included
+ // TODO (cs) ensure we don't add duplicates when we proceed to use the
+ // search list
+ //
+ for (int i = 0; i < schemas.length; i++) {
+ XSDSchema schema = schemas[i];
+ ComponentCollectingXSDVisitor visitor =
+ new ComponentCollectingXSDVisitor(list);
+ visitor.visitSchema(schema, true);
+ }
+
+ // finally we call the search API's to do a potentially slow search
+ if (scope != null) {
+ populateComponentListUsingSearch(list, scope, pm);
+ }
+ }
+
+ class ComponentCollectingXSDVisitor {
+ protected List visitedSchemas = new ArrayList();
+
+ IComponentList list;
+
+ ComponentCollectingXSDVisitor(IComponentList list) {
+ this.list = list;
+ }
+
+ public void visitSchema(XSDSchema schema, boolean visitImportedSchema) {
+
+ visitedSchemas.add(schema);
+ for (Iterator contents = schema.getContents().iterator(); contents.hasNext();) {
+ XSDSchemaContent content = (XSDSchemaContent) contents.next();
+ if (content instanceof XSDSchemaDirective) {
+ XSDSchemaDirective schemaDirective = (XSDSchemaDirective) content;
+ XSDSchema extSchema = schemaDirective.getResolvedSchema();
+ if (extSchema != null && !visitedSchemas.contains(extSchema)){
+ if ( schemaDirective instanceof XSDImport && visitImportedSchema){
+ visitSchema(extSchema, false);
+ }
+ else if ( extSchema instanceof XSDInclude || extSchema instanceof XSDImport){
+ visitSchema(extSchema, false);
+ }
+ }
+ } else if (content instanceof XSDElementDeclaration) {
+ list.add(content);
+ }
+ }
+ }
+ }
+
+ private void populateComponentListUsingSearch(IComponentList list,
+ SearchScope scope, IProgressMonitor pm) {
+ SearchEngine searchEngine = new SearchEngine();
+ InternalSearchRequestor requestor = new InternalSearchRequestor(list);
+ findTypes(searchEngine, requestor, scope,
+ IXSDSearchConstants.ELEMENT_META_NAME);
+ }
+
+ class InternalSearchRequestor extends SearchRequestor {
+ IComponentList componentList;
+
+ InternalSearchRequestor(IComponentList componentList) {
+ this.componentList = componentList;
+ }
+
+ public void acceptSearchMatch(SearchMatch match) throws CoreException {
+ // we filter out the matches from the current file since we assume
+ // the
+ // info derived from our schema models is more update to date
+ // (in the event that we haven't saved our latest modifications)
+ //
+ if (match.getFile() != currentFile) {
+ // TODO... this ugly qualified name stashing will go away soon
+ //
+ QualifiedName qualifiedName = null;
+ Object o = match.map.get("name");
+ if (o != null && o instanceof QualifiedName) {
+ qualifiedName = (QualifiedName) o;
+ }
+ if (qualifiedName != null
+ && qualifiedName.getLocalName() != null) {
+ componentList.add(match);
+ }
+ }
+ }
+ }
+
+ protected void findTypes(SearchEngine searchEngine,
+ SearchRequestor requestor, SearchScope scope, QualifiedName metaName) {
+ try {
+ XMLComponentDeclarationPattern pattern = new XMLComponentDeclarationPattern(
+ new QualifiedName("*", "*"), metaName,
+ SearchPattern.R_PATTERN_MATCH);
+
+ // TODO (cs) revist this... we shouldn't be needing to hard-code
+ // partipant id's
+ // All we're really doing here is trying to avoid finding matches in
+ // wsdl's since we don't
+ // ever want to import/include a wsdl from a schema! Maybe we should
+ // just scope out any file
+ // types that aren't xsd's using a custom SearchScope?
+ //
+ SearchParticipant particpant = SearchPlugin.getDefault()
+ .getSearchParticipant(
+ "org.eclipse.wst.xsd.search.XSDSearchParticipant");
+
+ Assert.isNotNull(particpant);
+ SearchParticipant[] participants = { particpant };
+ searchEngine.search(pattern, requestor, participants, scope, null,
+ new NullProgressMonitor());
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDSearchListDialogDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDSearchListDialogDelegate.java
new file mode 100644
index 0000000..31b50b0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDSearchListDialogDelegate.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.search;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialog;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialogConfiguration;
+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.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.dialogs.NewTypeButtonHandler;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDSearchListDialogDelegate implements IComponentDialog
+{
+ public final static QualifiedName TYPE_META_NAME = new QualifiedName(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "type");
+ public final static QualifiedName ELEMENT_META_NAME = new QualifiedName(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "element");
+ // protected Object setObject;
+ protected ComponentSpecification selection;
+ protected IFile currentFile;
+ protected XSDSchema[] schemas;
+ protected QualifiedName metaName;
+
+ public XSDSearchListDialogDelegate(QualifiedName metaName, IFile currentFile, XSDSchema[] schemas)
+ {
+ super();
+ this.metaName = metaName;
+ this.currentFile = currentFile;
+ this.schemas = schemas;
+ }
+
+ public ComponentSpecification getSelectedComponent()
+ {
+ return selection;
+ }
+
+ public void setInitialSelection(ComponentSpecification componentSpecification)
+ {
+ // TODO Auto-generated method stub
+ }
+
+ public int createAndOpen()
+ {
+ Shell shell = XSDEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell();
+ int returnValue = Window.CANCEL;
+ ComponentSearchListDialog dialog = null;
+ if ( metaName == ELEMENT_META_NAME)
+ {
+ XSDComponentDescriptionProvider descriptionProvider = new XSDComponentDescriptionProvider();
+ final XSDElementsSearchListProvider searchListProvider = new XSDElementsSearchListProvider(currentFile, schemas);
+ ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
+
+ configuration.setDescriptionProvider(descriptionProvider);
+ configuration.setSearchListProvider(searchListProvider);
+ configuration.setFilterLabelText("Name:");
+ //TODO externalize string
+ dialog = new ScopedComponentSearchListDialog(shell, "Set element reference", configuration);
+ }
+ else if (metaName == TYPE_META_NAME)
+ {
+ XSDComponentDescriptionProvider descriptionProvider = new XSDComponentDescriptionProvider();
+ final XSDTypesSearchListProvider searchListProvider = new XSDTypesSearchListProvider(currentFile, schemas);
+
+ ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
+ configuration.setDescriptionProvider(descriptionProvider);
+ configuration.setSearchListProvider(searchListProvider);
+ configuration.setNewComponentHandler(new NewTypeButtonHandler());
+ dialog = new ScopedComponentSearchListDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), configuration);
+ }
+
+ if (dialog != null)
+ {
+ dialog.setBlockOnOpen(true);
+ dialog.create();
+ returnValue = dialog.open();
+ if (returnValue == Window.OK)
+ {
+ selection = dialog.getSelectedComponent();
+ }
+ }
+ return returnValue;
+ }
+
+ private IEditorPart getActiveEditor()
+ {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ return editorPart;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDTypesSearchListProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDTypesSearchListProvider.java
new file mode 100644
index 0000000..e201cba
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDTypesSearchListProvider.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.editor.internal.search;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.wst.common.core.search.SearchEngine;
+import org.eclipse.wst.common.core.search.SearchMatch;
+import org.eclipse.wst.common.core.search.SearchParticipant;
+import org.eclipse.wst.common.core.search.SearchPlugin;
+import org.eclipse.wst.common.core.search.SearchRequestor;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.pattern.SearchPattern;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentSearchListProvider;
+import org.eclipse.wst.xml.core.internal.search.XMLComponentDeclarationPattern;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDTypesSearchListProvider implements IComponentSearchListProvider
+{
+ protected XSDSchema[] schemas;
+ protected IFile currentFile;
+ // TODO (cs) remove these and use proper search scopes!
+ //
+ public static final int ENCLOSING_PROJECT_SCOPE = 0;
+ public static final int ENTIRE_WORKSPACE_SCOPE = 1;
+
+ protected IXSDTypesFilter builtInFilter;
+
+ /**
+ * Determines if we should use the filter
+ * This us used to turn the filter on and off
+ */
+ protected boolean supportFilter = true;
+ private boolean showComplexTypes = true;
+
+ public XSDTypesSearchListProvider(IFile currentFile, XSDSchema[] schemas)
+ {
+ this.schemas = schemas;
+ this.currentFile = currentFile;
+ }
+
+ public void populateComponentList(IComponentList list, SearchScope scope, IProgressMonitor pm)
+ {
+ // first we add the 'built in' types
+ //
+ XSDSchema schemaForSchema = XSDSchemaImpl.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ for (Iterator i = schemaForSchema.getSimpleTypeIdMap().values().iterator(); i.hasNext();)
+ {
+ XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+ if ( builtInFilter == null || !builtInFilter.shouldFilterOut(td) ) {
+ list.add(td);
+ }
+ }
+
+ // now we traverse the types already defined within the visible schemas
+ // we do this in addition to the component search since this should execute
+ // very quickly and there's a good chance the user wants to select a time that's
+ // already imported/included
+ // TODO (cs) ensure we don't add duplicates when we proceed to use the search list
+ //
+ for (int i = 0; i < schemas.length; i++)
+ {
+ XSDSchema schema = schemas[i];
+ ComponentCollectingXSDVisitor visitor = new ComponentCollectingXSDVisitor(list);
+ visitor.visitSchema(schema, true);
+ }
+
+ // finally we call the search API's to do a potentially slow search
+ //
+ if (scope != null)
+ {
+ populateComponentListUsingSearch(list, scope, pm);
+ }
+ }
+ class ComponentCollectingXSDVisitor
+ {
+ protected List visitedSchemas = new ArrayList();
+ IComponentList list;
+
+ ComponentCollectingXSDVisitor(IComponentList list)
+ {
+ this.list = list;
+ }
+
+ public void visitSchema(XSDSchema schema, boolean visitImportedSchema)
+ {
+ visitedSchemas.add(schema);
+ for (Iterator contents = schema.getContents().iterator(); contents.hasNext();)
+ {
+ XSDSchemaContent content = (XSDSchemaContent) contents.next();
+ if (content instanceof XSDSchemaDirective)
+ {
+ XSDSchemaDirective schemaDirective = (XSDSchemaDirective) content;
+ XSDSchema extSchema = schemaDirective.getResolvedSchema();
+ if (extSchema != null && !visitedSchemas.contains(extSchema))
+ {
+ if ( schemaDirective instanceof XSDImport && visitImportedSchema){
+ visitSchema(extSchema, false);
+ }
+ else if ( schemaDirective instanceof XSDInclude ||
+ schemaDirective instanceof XSDRedefine){
+ visitSchema(extSchema, false);
+ }
+ }
+ }
+ else if (content instanceof XSDTypeDefinition)
+ {
+ if ( showComplexTypes || ! (content instanceof XSDComplexTypeDefinition) )
+ list.add(content);
+ }
+ }
+ }
+ }
+
+ private void populateComponentListUsingSearch(IComponentList list, SearchScope scope, IProgressMonitor pm)
+ {
+ SearchEngine searchEngine = new SearchEngine();
+ InternalSearchRequestor requestor = new InternalSearchRequestor(list);
+ if (showComplexTypes)
+ findTypes(searchEngine, requestor, scope, IXSDSearchConstants.COMPLEX_TYPE_META_NAME);
+ findTypes(searchEngine, requestor, scope, IXSDSearchConstants.SIMPLE_TYPE_META_NAME);
+ }
+
+ class InternalSearchRequestor extends SearchRequestor
+ {
+ IComponentList componentList;
+
+ InternalSearchRequestor(IComponentList componentList)
+ {
+ this.componentList = componentList;
+ }
+
+ public void acceptSearchMatch(SearchMatch match) throws CoreException
+ {
+ // we filter out the matches from the current file since we assume the
+ // info derived from our schema models is more update to date
+ // (in the event that we haven't saved our latest modifications)
+ //
+ if (match.getFile() != currentFile)
+ {
+ // TODO... this ugly qualified name stashing will go away soon
+ //
+ QualifiedName qualifiedName = null;
+ Object o = match.map.get("name");
+ if (o != null && o instanceof QualifiedName)
+ {
+ qualifiedName = (QualifiedName)o;
+ }
+ if (qualifiedName != null && qualifiedName.getLocalName() != null)
+ {
+ componentList.add(match);
+ }
+ }
+ }
+ }
+
+ protected void findTypes(SearchEngine searchEngine, SearchRequestor requestor, SearchScope scope, QualifiedName metaName)
+ {
+ try
+ {
+ XMLComponentDeclarationPattern pattern = new XMLComponentDeclarationPattern(new QualifiedName("*", "*"), metaName, SearchPattern.R_PATTERN_MATCH);
+
+ // TODO (cs) revist this... we shouldn't be needing to hard-code partipant id's
+ // All we're really doing here is trying to avoid finding matches in wsdl's since we don't
+ // ever want to import/include a wsdl from a schema! Maybe we should just scope out any file
+ // types that aren't xsd's using a custom SearchScope?
+ //
+ SearchParticipant particpant = SearchPlugin.getDefault().getSearchParticipant("org.eclipse.wst.xsd.search.XSDSearchParticipant");
+ Assert.isNotNull(particpant);
+ SearchParticipant[] participants = {particpant};
+ searchEngine.search(pattern, requestor, participants, scope, null, new NullProgressMonitor());
+ }
+ catch (CoreException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public void _populateComponentListQuick(IComponentList list, IProgressMonitor pm)
+ {
+ }
+
+ public void turnBuiltInFilterOn(boolean option){
+ supportFilter = option;
+ }
+
+ public void setBuiltInFilter(IXSDTypesFilter filter) {
+ this.builtInFilter = filter;
+ }
+
+ public void showComplexTypes(boolean show){
+ showComplexTypes = show;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/utils/OpenOnSelectionHelper.java
similarity index 90%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/utils/OpenOnSelectionHelper.java
index 680a7a6..5789cc6 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/utils/OpenOnSelectionHelper.java
@@ -1,14 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.util;
+package org.eclipse.wst.xsd.editor.internal.utils;
import java.util.Iterator;
import java.util.List;
@@ -27,8 +27,8 @@
import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.xsd.XSDAttributeDeclaration;
import org.eclipse.xsd.XSDAttributeGroupDefinition;
import org.eclipse.xsd.XSDConcreteComponent;
@@ -45,6 +45,8 @@
import org.w3c.dom.Node;
+// issue (cs) can we remove this?
+//
public class OpenOnSelectionHelper
{
@@ -79,12 +81,11 @@
{
try
{
- workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), XSDEditorPlugin.XSD_EDITOR_ID);
+ workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), XSDEditorPlugin.PLUGIN_ID);
}
catch (PartInitException initEx)
{
initEx.printStackTrace();
-// XSDEditorPlugin.getPlugin().getMsgLogger().write(initEx);
}
catch(Exception e)
{
@@ -128,17 +129,15 @@
{
try
{
- // IEditorPart editorPart = workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), textEditor.getXSDEditor().getEditorSite().getId());
IEditorPart editorPart = workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), XSDEditorPlugin.getPlugin().PLUGIN_ID);
- if (editorPart instanceof XSDEditor)
+ if (editorPart instanceof InternalXSDMultiPageEditor)
{
- ((XSDEditor)editorPart).openOnGlobalReference(component);
+ ((InternalXSDMultiPageEditor)editorPart).openOnGlobalReference(component);
lastResult = true;
}
}
catch (PartInitException initEx)
{
-// XSDEditorPlugin.getPlugin().getMsgLogger().write(initEx);
}
}
}
@@ -148,7 +147,7 @@
}
}
- public void openOnGlobalReference(XSDConcreteComponent comp)
+ public XSDNamedComponent openOnGlobalReference(XSDConcreteComponent comp)
{
XSDSchema schema = xsdSchema;
String name = null;
@@ -159,7 +158,7 @@
if (schema == null || name == null)
{
- return;
+ return null;
}
List objects = null;
@@ -171,18 +170,6 @@
{
objects = schema.getTypeDefinitions();
}
- else if (comp instanceof XSDAttributeGroupDefinition)
- {
- objects = schema.getAttributeGroupDefinitions();
- }
- else if (comp instanceof XSDIdentityConstraintDefinition)
- {
- objects = schema.getIdentityConstraintDefinitions();
- }
- else if (comp instanceof XSDModelGroupDefinition)
- {
- objects = schema.getModelGroupDefinitions();
- }
if (objects != null)
{
@@ -193,9 +180,11 @@
if (namedComp.getName().equals(name))
{
revealObject(namedComp);
+ return namedComp;
}
}
}
+ return null;
}
public boolean openOnSelection()
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
similarity index 82%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
index 0dacfb6..90b2baa 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
@@ -11,7 +11,6 @@
package org.eclipse.wst.xsd.ui.internal.actions;
import java.util.List;
-import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.ui.parts.AbstractEditPartViewer;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
@@ -23,18 +22,12 @@
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ComplexTypeDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ElementDeclarationEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
import org.eclipse.xsd.XSDAttributeDeclaration;
import org.eclipse.xsd.XSDAttributeGroupDefinition;
import org.eclipse.xsd.XSDAttributeUse;
import org.eclipse.xsd.XSDComplexTypeDefinition;
import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
import org.eclipse.xsd.XSDNamedComponent;
import org.eclipse.xsd.XSDSchema;
import org.eclipse.xsd.util.XSDConstants;
@@ -42,6 +35,8 @@
import org.w3c.dom.Node;
import org.w3c.dom.Text;
+// issue (cs) can we remove this?
+//
public class CreateElementAction extends Action
{
protected String description;
@@ -264,37 +259,37 @@
Object obj = viewer.getSelectedEditParts().get(0);
- if (obj instanceof GraphicalEditPart)
- {
- if (obj instanceof ElementDeclarationEditPart)
- {
- XSDElementDeclaration elem = ((ElementDeclarationEditPart)obj).getXSDElementDeclaration();
- if (!elem.isElementDeclarationReference())
- {
- ((ElementDeclarationEditPart)obj).doEditName();
- }
- }
- else if (obj instanceof ModelGroupDefinitionEditPart)
- {
- XSDModelGroupDefinition group = ((ModelGroupDefinitionEditPart)obj).getXSDModelGroupDefinition();
- if (!group.isModelGroupDefinitionReference())
- {
- ((ModelGroupDefinitionEditPart)obj).doEditName();
- }
- }
- else if (obj instanceof ComplexTypeDefinitionEditPart)
- {
- XSDComplexTypeDefinition ct = ((ComplexTypeDefinitionEditPart)obj).getXSDComplexTypeDefinition();
- if (ct.getName() != null)
- {
- ((ComplexTypeDefinitionEditPart)obj).doEditName();
- }
- }
- else if (obj instanceof TopLevelComponentEditPart)
- {
- ((TopLevelComponentEditPart)obj).doEditName();
- }
- }
+// if (obj instanceof GraphicalEditPart)
+// {
+// if (obj instanceof ElementDeclarationEditPart)
+// {
+// XSDElementDeclaration elem = ((ElementDeclarationEditPart)obj).getXSDElementDeclaration();
+// if (!elem.isElementDeclarationReference())
+// {
+// ((ElementDeclarationEditPart)obj).doEditName();
+// }
+// }
+// else if (obj instanceof ModelGroupDefinitionEditPart)
+// {
+// XSDModelGroupDefinition group = ((ModelGroupDefinitionEditPart)obj).getXSDModelGroupDefinition();
+// if (!group.isModelGroupDefinitionReference())
+// {
+// ((ModelGroupDefinitionEditPart)obj).doEditName();
+// }
+// }
+// else if (obj instanceof ComplexTypeDefinitionEditPart)
+// {
+// XSDComplexTypeDefinition ct = ((ComplexTypeDefinitionEditPart)obj).getXSDComplexTypeDefinition();
+// if (ct.getName() != null)
+// {
+// ((ComplexTypeDefinitionEditPart)obj).doEditName();
+// }
+// }
+// else if (obj instanceof TopLevelComponentEditPart)
+// {
+// ((TopLevelComponentEditPart)obj).doEditName();
+// }
+// }
}
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
index 5580b40..6e6c7e5 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
@@ -10,8 +10,7 @@
*******************************************************************************/
package org.eclipse.wst.xsd.ui.internal.actions;
-// TODO Remove this
-
+// issue (cs) remove this
/**
* @version 1.0
* @author
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
index 736beca..3e0dad4 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
@@ -24,9 +24,9 @@
import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
import org.eclipse.wst.xml.ui.internal.actions.ReplacePrefixAction;
import org.eclipse.wst.xml.ui.internal.util.XMLCommonResources;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.SchemaPrefixChangeHandler;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.TargetNamespaceChangeHandler;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.internal.nsedit.SchemaPrefixChangeHandler;
+import org.eclipse.wst.xsd.ui.internal.nsedit.TargetNamespaceChangeHandler;
import org.eclipse.wst.xsd.ui.internal.widgets.XSDEditSchemaInfoDialog;
import org.eclipse.xsd.XSDSchema;
import org.eclipse.xsd.util.XSDConstants;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/SchemaPrefixChangeHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/SchemaPrefixChangeHandler.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/SchemaPrefixChangeHandler.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/SchemaPrefixChangeHandler.java
index 3ecd3a3..2df620c 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/SchemaPrefixChangeHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/SchemaPrefixChangeHandler.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.refactor.rename;
+package org.eclipse.wst.xsd.ui.internal.nsedit;
import java.util.Iterator;
import java.util.List;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/TargetNamespaceChangeHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/TargetNamespaceChangeHandler.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/TargetNamespaceChangeHandler.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/TargetNamespaceChangeHandler.java
index 8635ec2..9e745dd 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/TargetNamespaceChangeHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/TargetNamespaceChangeHandler.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.refactor.rename;
+package org.eclipse.wst.xsd.ui.internal.nsedit;
import java.util.Iterator;
import org.eclipse.emf.common.util.EList;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/XSDVisitor.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/XSDVisitor.java
index 4acf32d..c9bfbaf 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/XSDVisitor.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.refactor.rename;
+package org.eclipse.wst.xsd.ui.internal.nsedit;
import java.util.Iterator;
import org.eclipse.xsd.XSDAttributeDeclaration;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
new file mode 100644
index 0000000..ae933cc
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
@@ -0,0 +1,415 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2004 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.util;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.impl.XSDImportImpl;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class TypesHelper
+{
+ XSDSchema xsdSchema;
+ Vector list = new Vector();
+
+ public TypesHelper(XSDSchema xsdSchema)
+ {
+ this.xsdSchema = xsdSchema;
+ }
+
+ private void updateExternalImportGlobals()
+ {
+ if (xsdSchema != null)
+ {
+ Iterator contents = xsdSchema.getContents().iterator();
+ while (contents.hasNext())
+ {
+ XSDSchemaContent content = (XSDSchemaContent) contents.next();
+ if (content instanceof XSDImportImpl)
+ {
+ XSDImportImpl anImport = (XSDImportImpl) content;
+ try
+ {
+ if (anImport.getSchemaLocation() != null)
+ {
+ anImport.importSchema();
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+ }
+ }
+ }
+
+
+ public java.util.List getBuiltInTypeNamesList()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ String prefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+ if (prefix != null && prefix.length() > 0)
+ {
+ prefix = prefix + ":";
+ }
+ else
+ {
+ prefix = "";
+ }
+ List result = new ArrayList();
+ if (xsdSchema != null)
+ {
+ XSDSchema schemaForSchema = XSDSchemaImpl.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ for (Iterator i = schemaForSchema.getSimpleTypeIdMap().values().iterator(); i.hasNext();)
+ {
+ XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+ String localName = td.getName();
+ String prefixedName = (prefix != null && prefix.length() > 0) ? prefix + ":" + localName : localName;
+ result.add(prefixedName);
+ }
+ }
+ }
+ return items;
+ }
+
+ // issue (cs) do we still need this? it can likely be remove now
+ // was used for content assist but I don't think we really need it
+ public java.util.List getBuiltInTypeNamesList2()
+ {
+ List result = new ArrayList();
+ if (xsdSchema != null)
+ {
+ List prefixes = getPrefixesForNamespace(xsdSchema.getSchemaForSchemaNamespace());
+ XSDSchema schemaForSchema = XSDSchemaImpl.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ for (Iterator i = schemaForSchema.getSimpleTypeIdMap().values().iterator(); i.hasNext();)
+ {
+ XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+ String localName = td.getName();
+ String prefix = prefixes.size() > 0 ? (String)prefixes.get(0) : null;
+ String prefixedName = (prefix != null && prefix.length() > 0) ? prefix + ":" + localName : localName;
+ result.add(prefixedName);
+ }
+ }
+ return result;
+ }
+
+ public java.util.List getUserSimpleTypeNamesList()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ updateExternalImportGlobals();
+ Iterator i = xsdSchema.getTypeDefinitions().iterator();
+ while (i.hasNext())
+ {
+ XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
+ if (typeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));
+ //System.out.println(typeDefinition.getQName(xsdSchema));
+ //items.add(typeDefinition.getQName(xsdSchema));
+ }
+ }
+ items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
+
+ // items = addExternalImportedUserSimpleTypes(items);
+ items = (Vector) sortList(items);
+ }
+ return items;
+ }
+
+ public java.util.List getUserComplexTypeNamesList()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ updateExternalImportGlobals();
+ Iterator i = xsdSchema.getTypeDefinitions().iterator();
+ while (i.hasNext())
+ {
+ XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
+ if (typeDefinition instanceof XSDComplexTypeDefinition)
+ {
+ items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));
+ }
+ }
+ items = (Vector) sortList(items);
+ }
+ return items;
+ }
+
+ public java.util.List getUserSimpleTypes()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ updateExternalImportGlobals();
+ Iterator i = xsdSchema.getTypeDefinitions().iterator();
+ while (i.hasNext())
+ {
+ XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
+ if (typeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ items.add(typeDefinition);
+ //System.out.println(typeDefinition.getQName(xsdSchema));
+ //items.add(typeDefinition.getQName(xsdSchema));
+ }
+ }
+ // We need to add the anyType
+// items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
+
+ // items = addExternalImportedUserSimpleTypes(items);
+ //items = (Vector) sortList(items);
+ }
+ return items;
+ }
+
+ public String getPrefix(String ns, boolean withColon)
+ {
+ String key = "";
+
+ if (xsdSchema != null)
+ {
+ Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+ Iterator iter = map.keySet().iterator();
+ while (iter.hasNext())
+ {
+ Object keyObj = iter.next();
+ Object value = map.get(keyObj);
+ if (value != null && value.toString().equals(ns))
+ {
+ if (keyObj != null)
+ {
+ key = keyObj.toString();
+ }
+ else
+ {
+ key = "";
+ }
+ break;
+ }
+ }
+ if (!key.equals(""))
+ {
+ if (withColon)
+ {
+ key = key + ":";
+ }
+ }
+ }
+ return key;
+ }
+
+ public java.util.List getGlobalElements()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ updateExternalImportGlobals();
+ if (xsdSchema.getElementDeclarations() != null)
+ {
+ Iterator i = xsdSchema.getElementDeclarations().iterator();
+ while (i.hasNext())
+ {
+ XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) i.next();
+ String name = elementDeclaration.getQName(xsdSchema);
+ if (name != null)
+ {
+ items.add(name);
+ }
+ }
+ }
+ // items = addExternalImportedGlobalElements(items);
+ items = (Vector) sortList(items);
+ }
+ return items;
+ }
+
+ public java.util.List getGlobalAttributes()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ updateExternalImportGlobals();
+ if (xsdSchema.getAttributeDeclarations() != null)
+ {
+ Iterator i = xsdSchema.getAttributeDeclarations().iterator();
+ while (i.hasNext())
+ {
+ XSDAttributeDeclaration attributeDeclaration = (XSDAttributeDeclaration) i.next();
+ if (attributeDeclaration.getTargetNamespace() == null || (attributeDeclaration.getTargetNamespace() != null && !attributeDeclaration.getTargetNamespace().equals(XSDConstants.SCHEMA_INSTANCE_URI_2001)))
+ {
+ String name = attributeDeclaration.getQName(xsdSchema);
+ if (name != null)
+ {
+ items.add(name);
+ }
+ }
+ }
+ }
+ // items = addExternalImportedAttributes(items);
+ items = (Vector) sortList(items);
+ }
+ return items;
+ }
+
+ public java.util.List getGlobalAttributeGroups()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ updateExternalImportGlobals();
+ if (xsdSchema.getAttributeGroupDefinitions() != null)
+ {
+ Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator();
+ while (i.hasNext())
+ {
+ XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) i.next();
+ String name = attributeGroupDefinition.getQName(xsdSchema);
+ if (name != null)
+ {
+ items.add(name);
+ }
+ }
+ }
+ // items = addExternalImportedAttributeGroups(items);
+ items = (Vector) sortList(items);
+ }
+ return items;
+ }
+
+ public java.util.List getModelGroups()
+ {
+ Vector items = new Vector();
+ if (xsdSchema != null)
+ {
+ updateExternalImportGlobals();
+ if (xsdSchema.getModelGroupDefinitions() != null)
+ {
+ Iterator i = xsdSchema.getModelGroupDefinitions().iterator();
+ while (i.hasNext())
+ {
+ XSDModelGroupDefinition modelGroupDefinition = (XSDModelGroupDefinition) i.next();
+ String name = modelGroupDefinition.getQName(xsdSchema);
+ if (name != null)
+ {
+ items.add(name);
+ }
+ }
+ }
+ // items = addExternalImportedGroups(items);
+ items = (Vector) sortList(items);
+ }
+ return items;
+ }
+
+ // issue (cs) ssems like a rather goofy util method?
+ public static java.util.List sortList(java.util.List types)
+ {
+ try
+ {
+ java.util.Collections.sort(types); // performance? n*log(n)
+ }
+ catch (Exception e)
+ {
+// XSDEditorPlugin.getPlugin().getMsgLogger().write("Sort failed");
+ }
+ return types;
+ }
+
+ // issue (cs) do we still need this?
+ public void updateMapAfterDelete(XSDImport deletedNode)
+ {
+ String ns = deletedNode.getNamespace();
+ if (ns != null)
+ {
+ String prefix = getPrefix(ns, false);
+ if (prefix != null)
+ {
+ prefix = prefix.trim();
+ }
+ String xmlnsAttr = (prefix == "") ? "xmlns" : "xmlns:" + prefix;
+
+ if (prefix == "")
+ {
+ prefix = null;
+ }
+
+ if (xsdSchema != null)
+ {
+ Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+ map.remove(prefix);
+ Element schemaElement = xsdSchema.getElement();
+ schemaElement.removeAttribute(xmlnsAttr);
+ }
+ }
+ }
+
+ public List getPrefixedNames(String namespace, String localName)
+ {
+ List list = new ArrayList();
+ if (namespace == null)
+ {
+ namespace = "";
+ }
+ if (xsdSchema != null && localName != null)
+ {
+ List prefixes = getPrefixesForNamespace(namespace);
+ for (Iterator i = prefixes.iterator(); i.hasNext(); )
+ {
+ String prefix = (String)i.next();
+ if (prefix == null) prefix = "";
+ String prefixedName = prefix.length() > 0 ? prefix + ":" + localName : localName;
+ list.add(prefixedName);
+ }
+ if (prefixes.size() == 0)
+ {
+ list.add(localName);
+ }
+ }
+ return list;
+ }
+
+ protected List getPrefixesForNamespace(String namespace)
+ {
+ List list = new ArrayList();
+ Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+ for (Iterator iter = map.keySet().iterator(); iter.hasNext();)
+ {
+ String prefix = (String) iter.next();
+ Object value = map.get(prefix);
+ if (value != null && value.toString().equals(namespace))
+ {
+ list.add(prefix);
+ }
+ }
+ return list;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
new file mode 100644
index 0000000..9c95ee7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
@@ -0,0 +1,246 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2004 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.util;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+// issue (cs) can we get rid of this class?
+// I've stripped it down a whole lot... but it'd be great to get rid of it
+//
+public class ViewUtility
+{
+ private static Font font;
+
+ private static Font getFont()
+ {
+ if (font == null)
+ {
+ font = new Font(Display.getCurrent(), "ms sans serif", 8, SWT.NORMAL);
+ }
+ return font;
+ }
+
+ public static void setComposite(Composite comp)
+ {
+ // deprecated. Remove later
+ }
+ public static Composite createComposite(Composite parent, int numColumns)
+ {
+ Composite composite = new Composite(parent, SWT.NONE);
+
+ composite.setFont(getFont());
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ composite.setLayout(layout);
+
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ composite.setLayoutData(data);
+ return composite;
+ }
+
+ public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill)
+ {
+ if (!horizontalFill)
+ {
+ createComposite(parent, numColumns);
+ }
+
+ Composite composite = new Composite(parent, SWT.NONE);
+
+ composite.setFont(getFont());
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ composite.setLayout(layout);
+
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ composite.setLayoutData(data);
+
+ return composite;
+ }
+
+ public static Label createHorizontalFiller(Composite parent, int horizontalSpan)
+ {
+ Label label = new Label(parent, SWT.LEFT);
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.horizontalSpan = horizontalSpan;
+ label.setLayoutData(data);
+ return label;
+ }
+
+ /**
+ * Helper method for creating labels.
+ */
+ public static Label createLabel(Composite parent, String text)
+ {
+ Label label = new Label(parent, SWT.LEFT);
+ label.setText(text);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ label.setLayoutData(data);
+ return label;
+ }
+
+ public Label createLabel(Composite parent, int style, String text)
+ {
+ Label label = new Label(parent, style);
+// setColor(label);
+ label.setText(text);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ label.setLayoutData(data);
+ return label;
+ }
+
+ public static Label createLabel(Composite parent, String text, int alignment)
+ {
+ Label label = new Label(parent, SWT.LEFT);
+ label.setText(text);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = alignment;
+ label.setLayoutData(data);
+ return label;
+ }
+
+
+
+
+ /**
+ * Create radio button
+ */
+ public static Button createRadioButton(Composite parent, String label)
+ {
+ Button button = new Button(parent, SWT.RADIO);
+ button.setText(label);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ button.setLayoutData(data);
+
+ return button;
+ }
+
+ /**
+ * Helper method for creating check box
+ */
+ public static Button createCheckBox(Composite parent, String label)
+ {
+ Button button = new Button(parent, SWT.CHECK);
+ button.setText(label);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ button.setLayoutData(data);
+ return button;
+ }
+
+ public static Combo createComboBox(Composite parent)
+ {
+ return createComboBox(parent, true);
+ }
+
+ public static Combo createComboBox(Composite parent, boolean isReadOnly)
+ {
+ int style = isReadOnly == true ? SWT.READ_ONLY : SWT.DROP_DOWN;
+
+ Combo combo = new Combo(parent, style);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ combo.setLayoutData(data);
+ return combo;
+ }
+
+
+ public static Text createTextField(Composite parent, int width)
+ {
+ Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ data.widthHint = width;
+ text.setLayoutData(data);
+
+ return text;
+ }
+
+ /**
+ * <code>createWrappedMultiTextField</code> creates a wrapped multitext field
+ *
+ * @param parent a <code>Composite</code> value
+ * @param width an <code>int</code> value
+ * @param numLines an <code>int</code> value representing number of characters in height
+ * @param verticalFill a <code>boolean</code> value
+ * @return a <code>Text</code> value
+ */
+ public static Text createWrappedMultiTextField(Composite parent, int width, int numLines, boolean verticalFill)
+ {
+ Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ if (verticalFill)
+ {
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessVerticalSpace = true;
+ }
+ data.widthHint = width;
+ FontData[] fontData = getFont().getFontData();
+ // hack for now where on Windows, only 1 fontdata exists
+ data.heightHint = numLines * fontData[0].getHeight();
+ text.setLayoutData(data);
+
+ return text;
+ }
+
+ public static Text createMultiTextField(Composite parent, int width, int height, boolean verticalFill)
+ {
+ Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ if (verticalFill)
+ {
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessVerticalSpace = true;
+ }
+ data.widthHint = width;
+ data.heightHint = height;
+ text.setLayoutData(data);
+
+ return text;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
new file mode 100644
index 0000000..6e705b8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
@@ -0,0 +1,431 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2004 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.util;
+
+import java.util.ArrayList;
+
+import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+// issue (cs) remove this class!!
+public class XSDDOMHelper
+{
+
+ private static String XMLSchemaURI = "http://www.w3.org/2001/XMLSchema";
+
+ /**
+ * Constructor for XSDDOMHelper.
+ */
+ public XSDDOMHelper()
+ {
+ super();
+ }
+
+ public Node getChildNode(Element parent, String childName)
+ {
+/* NodeList nodeList = parent.getElementsByTagNameNS(XMLSchemaURI, childName);
+ if (nodeList.getLength() > 0)
+ return nodeList.item(0);
+ return null;
+*/
+ NodeList list = null;
+ if (parent != null)
+ {
+ list = parent.getChildNodes();
+ }
+
+ if (list != null)
+ {
+ // Performance issue perhaps?
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ if (list.item(i) instanceof Element)
+ {
+ if (list.item(i).getLocalName().equals(childName))
+ {
+ return list.item(i);
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+
+
+
+ public void changeDerivedByType(Element element, String derivedByType, String type)
+ {
+ Document doc = element.getOwnerDocument();
+
+ String prefix = element.getPrefix();
+ prefix = prefix == null ? "" : prefix + ":";
+
+ Element derivedByElement = getDerivedByElement(element);
+
+ if (derivedByElement != null && derivedByElement.getLocalName().equals(derivedByType))
+ {
+ return; // it's already the derived by type
+ }
+ Element newNode;
+ if (derivedByType.equals("restriction"))
+ {
+ newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
+ }
+ else
+ {
+ newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.EXTENSION_ELEMENT_TAG);
+ }
+
+ newNode.setAttribute("base", type);
+
+ if (derivedByElement != null)
+ {
+ if (derivedByElement.hasChildNodes())
+ {
+ NodeList nodes = derivedByElement.getChildNodes();
+ // use clones so we don't have a refresh problem
+ for (int i = 0; i < nodes.getLength(); i++)
+ {
+ Node node = nodes.item(i);
+ newNode.appendChild(node.cloneNode(true));
+ }
+ }
+ element.replaceChild(newNode, derivedByElement);
+ }
+ else
+ {
+ Element parent = (Element) element.getParentNode(); // get back to complexType
+ NodeList nodes = parent.getChildNodes();
+ ArrayList nodeSaveList = new ArrayList();
+
+ // save children. (nodes turns out to be the same object as parent;
+ // deleting them from parent will delete them from nodes.)
+ for (int i = 0; i < nodes.getLength(); i++)
+ {
+ Node node = nodes.item(i);
+ nodeSaveList.add(node);
+ }
+
+ // remove children so we can surround them by complexContent
+ for (int i = 0; i < nodeSaveList.size(); i++)
+ {
+ Node node = (Node) nodeSaveList.get(i);
+ parent.removeChild(node);
+ }
+
+ // build a complexContent element
+ Element complexContent = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.COMPLEXCONTENT_ELEMENT_TAG);
+ parent.appendChild(complexContent); // insert into complexType
+ complexContent.appendChild(newNode); // insert derivation type
+ for (int i = 0; i < nodeSaveList.size(); i++) // insert children previously of complexType
+ {
+ Node node = (Node) nodeSaveList.get(i);
+ newNode.appendChild(node.cloneNode(true));
+ }
+
+ parent.appendChild(complexContent);
+ formatChild(complexContent);
+ }
+ }
+
+
+ /**
+ * Get the derived by node given the complexContent or simpleContent node
+ */
+ public Element getDerivedByElement(Element element)
+ {
+ Node restrictionChild = getChildNode(element, "restriction");
+ Node extensionChild = getChildNode(element, "extension");
+ if (restrictionChild != null)
+ {
+ if (restrictionChild instanceof Element)
+ {
+ return (Element)restrictionChild;
+ }
+ }
+
+ if (extensionChild != null)
+ {
+ if (extensionChild instanceof Element)
+ {
+ return (Element)extensionChild;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get the derived by node given the ComplexType node
+ * Returns the first one, if say, the INVALID schema has more than one
+ */
+ public Element getDerivedByElementFromComplexType(Element element)
+ {
+ NodeList nl = element.getChildNodes();
+ int j = 0;
+ for (j = 0; j < nl.getLength(); j++)
+ {
+ Node aNode = nl.item(j);
+ if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
+ {
+ break;
+ }
+ else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
+ {
+ break;
+ }
+ }
+ Element derivedByNode = getDerivedByElement((Element)nl.item(j));
+ return derivedByNode;
+ }
+
+ /**
+ * Get the content model given the ComplexType node
+ * Returns the first one, if say, the INVALID schema has more than one
+ */
+ public Element getContentModelFromParent(Element element)
+ {
+ NodeList nl = element.getChildNodes();
+ int j = 0;
+ boolean modelExists = false;
+ int length = nl.getLength();
+ for (j = 0; j < length; j++)
+ {
+ Node aNode = nl.item(j);
+ if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
+ {
+ modelExists = true;
+ break;
+ }
+ else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
+ {
+ modelExists = true;
+ break;
+ }
+ else if (inputEquals(aNode, XSDConstants.SEQUENCE_ELEMENT_TAG, false))
+ {
+ modelExists = true;
+ break;
+ }
+ else if (inputEquals(aNode, XSDConstants.CHOICE_ELEMENT_TAG, false))
+ {
+ modelExists = true;
+ break;
+ }
+ else if (inputEquals(aNode, XSDConstants.ALL_ELEMENT_TAG, false))
+ {
+ modelExists = true;
+ break;
+ }
+ }
+ if (!modelExists)
+ {
+ return null;
+ }
+
+ Element derivedByNode = (Element)nl.item(j);
+ return derivedByNode;
+ }
+
+ /**
+ *
+ */
+ public void changeContentModel(Element complexTypeElement, String contentModel, Element sequenceChoiceOrAllElement)
+ {
+ Document doc = complexTypeElement.getOwnerDocument();
+
+ String prefix = complexTypeElement.getPrefix();
+ prefix = prefix == null ? "" : prefix + ":";
+
+ Element contentModelElement = getContentModelFromParent(complexTypeElement);
+
+ if (contentModelElement.getLocalName().equals(contentModel))
+ {
+ return; // it's already the content model
+ }
+ Element newNode;
+ newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
+
+ if (contentModelElement.hasChildNodes())
+ {
+ NodeList nodes = contentModelElement.getChildNodes();
+ // use clones so we don't have a refresh problem
+ for (int i = 0; i < nodes.getLength(); i++)
+ {
+ Node node = nodes.item(i);
+ if (node instanceof Element)
+ {
+ if (node.getLocalName().equals(XSDConstants.ANNOTATION_ELEMENT_TAG))
+ {
+ if (!(XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
+ XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
+ XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.ALL_ELEMENT_TAG, false)))
+ {
+ newNode.appendChild(node.cloneNode(true));
+ }
+ }
+ else if (node.getLocalName().equals(XSDConstants.RESTRICTION_ELEMENT_TAG) ||
+ node.getLocalName().equals(XSDConstants.EXTENSION_ELEMENT_TAG))
+ {
+ newNode.appendChild(node.cloneNode(true));
+ if (sequenceChoiceOrAllElement != null)
+ {
+ node.appendChild(sequenceChoiceOrAllElement);
+ }
+ }
+ else
+ {
+ removeNodeAndWhitespace(node);
+ }
+ }
+ else
+ {
+ newNode.appendChild(node.cloneNode(true));
+ }
+ }
+ }
+ complexTypeElement.replaceChild(newNode, contentModelElement);
+ }
+
+ public Element cloneElement(Element parent, Element sourceNode)
+ {
+ Document doc = parent.getOwnerDocument();
+ String prefix = parent.getPrefix();
+ prefix = prefix == null ? "" : prefix + ":";
+
+ Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + sourceNode.getLocalName());
+
+ if (sourceNode.hasChildNodes())
+ {
+ NodeList nodes = sourceNode.getChildNodes();
+ // use clones so we don't have a refresh problem
+ for (int i = 0; i < nodes.getLength(); i++)
+ {
+ Node node = nodes.item(i);
+ newNode.appendChild(node.cloneNode(true));
+ }
+ }
+ return newNode;
+// parent.replaceChild(newNode, sourceNode);
+ }
+
+
+
+ public static void removeNodeAndWhitespace(Node node)
+ {
+ Node parentNode = node.getParentNode();
+
+ Node nextElement = getNextElementNode(node);
+ Node previousElement = getPreviousElementNode(node);
+
+ Node nextSibling = node.getNextSibling();
+ if (nextSibling instanceof Text)
+ {
+ parentNode.removeChild(nextSibling);
+ }
+
+ if (parentNode != null)
+ {
+ parentNode.removeChild(node);
+ }
+
+ if (nextElement != null)
+ {
+ formatChild(nextElement);
+ }
+
+ if (previousElement != null)
+ {
+ formatChild(previousElement);
+ }
+ }
+
+ public static void formatChild(Node child)
+ {
+ if (child instanceof IDOMNode)
+ {
+ IDOMModel model = ((IDOMNode)child).getModel();
+ try
+ {
+ // tell the model that we are about to make a big model change
+ model.aboutToChangeModel();
+
+ IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
+ formatProcessor.formatNode(child);
+ }
+ finally
+ {
+ // tell the model that we are done with the big model change
+ model.changedModel();
+ }
+ }
+ }
+
+
+ private static Node getNextElementNode(Node node)
+ {
+ Node next = node.getNextSibling();
+
+ while (!(next instanceof Element) && next != null)
+ {
+ next = next.getNextSibling();
+ }
+ if (next instanceof Text)
+ {
+ return null;
+ }
+ return next;
+ }
+
+ private static Node getPreviousElementNode(Node node)
+ {
+ Node previous = node.getPreviousSibling();
+
+ while (!(previous instanceof Element) && previous != null)
+ {
+ previous = previous.getPreviousSibling();
+ }
+ if (previous instanceof Text)
+ {
+ return null;
+ }
+ return previous;
+ }
+
+
+
+ // issue (cs) what's this method supposed to do?
+ // bizzare name
+ public static boolean inputEquals(Object input, String tagname, boolean isRef)
+ {
+ if (input instanceof Element)
+ {
+ Element element = (Element) input;
+ if (element.getLocalName().equals(tagname))
+ {
+ boolean refPresent = element.hasAttribute("ref");
+
+ return refPresent == isRef;
+ }
+ }
+ return false;
+ }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
index eba2c64..5db6c11 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
@@ -19,7 +19,7 @@
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
index e5b6bdc..ec97e3f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
@@ -18,8 +18,8 @@
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
import org.eclipse.xsd.XSDSchema;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
index 5cffc52..8382030 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
@@ -33,7 +33,7 @@
import org.eclipse.ui.part.ISetSelectionTarget;
import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames;
import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
public class NewXSDWizard extends Wizard implements INewWizard {
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
index e7923d6..2e2859b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
@@ -35,8 +35,8 @@
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
import org.eclipse.xsd.XSDPatternFacet;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
index 2844709..3dd0b63 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.wst.xsd.ui.internal.wizards;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
class RegexNode
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
index 9abe271..6421e12 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
@@ -27,8 +27,8 @@
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
similarity index 96%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
index 95da3f7..62e393e 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
@@ -12,7 +12,7 @@
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.xsd.XSDPatternFacet;
import org.eclipse.xsd.impl.XSDFactoryImpl;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
index 204ff2d..d824efb 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
@@ -15,7 +15,7 @@
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
index db12cd6..98c8d23 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
@@ -19,7 +19,7 @@
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
public class XSDNewFilePage extends WizardNewFileCreationPage
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
index 16e2ac7..83b3810 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
@@ -28,7 +28,7 @@
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.wst.common.ui.internal.viewers.SelectSingleFilePage;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
import org.eclipse.xsd.XSDSchema;
import org.eclipse.xsd.util.XSDParser;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/AddFieldAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/AddFieldAction.java
new file mode 100644
index 0000000..42ee0b4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/AddFieldAction.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.ui.common.commands.BaseCommand;
+
+
+public class AddFieldAction extends BaseSelectionAction
+{
+ public static String ID = "AddFieldAction";
+
+ public AddFieldAction(IWorkbenchPart part)
+ {
+ super(part);
+ setId(ID);
+ setText("Add Field");
+ }
+
+ public void run()
+ {
+ if (getSelectedObjects().size() > 0)
+ {
+ Object o = getSelectedObjects().get(0);
+ IComplexType type = null;
+
+ if (o instanceof IComplexType)
+ {
+ type = (IComplexType)o;
+ }
+ else if (o instanceof IField)
+ {
+ IField field = (IField)o;
+ type = field.getContainerType();
+ }
+ if (type != null)
+ {
+ Command command = ((IComplexType)type).getAddNewFieldCommand("");
+ if (command != null)
+ {
+ getCommandStack().execute(command);
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(((BaseCommand)command).getAddedComponent());
+ if (adapter != null)
+ provider.setSelection(new StructuredSelection(adapter));
+ }
+ else
+ {
+ //TODO ... pop up a command not implemented message
+ }
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/BaseSelectionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/BaseSelectionAction.java
new file mode 100644
index 0000000..ee5c85f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/BaseSelectionAction.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.actions;
+
+import org.eclipse.gef.ui.actions.SelectionAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+
+public abstract class BaseSelectionAction extends SelectionAction
+{
+ public static final String SEPARATOR_ID = "org.eclipse.jface.action.Separator";
+ public static final String SUBMENU_START_ID = "SUBMENU_START_ID: ";
+ public static final String SUBMENU_END_ID = "SUBMENU_END_ID: ";
+
+ protected ISelectionProvider provider;
+
+ public BaseSelectionAction(IWorkbenchPart part)
+ {
+ super(part);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.gef.ui.actions.SelectionAction#getSelection()
+ */
+ protected ISelection getSelection()
+ {
+ // always get selection from selection provider first
+ if (provider!=null)
+ return provider.getSelection();
+
+ return super.getSelection();
+ }
+ /* (non-Javadoc)
+ * @see org.eclipse.gef.ui.actions.SelectionAction#setSelectionProvider(org.eclipse.jface.viewers.ISelectionProvider)
+ */
+ public void setSelectionProvider(ISelectionProvider provider)
+ {
+ super.setSelectionProvider(provider);
+ this.provider = provider;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.xsd.adt.actions.BaseSelectionAction#calculateEnabled()
+ */
+ protected boolean calculateEnabled()
+ {
+ if (getSelectedObjects().size() > 0)
+ {
+ Object o = getSelectedObjects().get(0);
+ if (o instanceof IComplexType)
+ {
+ return !((IComplexType)o).isReadOnly();
+ }
+ else if (o instanceof IField)
+ {
+ return !((IField)o).isReadOnly();
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/DeleteAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/DeleteAction.java
new file mode 100644
index 0000000..74bd725
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/DeleteAction.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.actions;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class DeleteAction extends BaseSelectionAction
+{
+ public final static String ID = "org.eclipse.wst.xsd.editor.DeleteAction";
+ public DeleteAction(IWorkbenchPart part)
+ {
+ super(part);
+ setText("Delete");
+ setId(ID);
+ setImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/delete_obj.gif") );
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+ Command command = null;
+ boolean doReselect = false;
+ IModel model = null;
+ if (selection instanceof IComplexType)
+ {
+ command = ((IComplexType)selection).getDeleteCommand();
+ model = ((IComplexType)selection).getModel();
+ doReselect = true;
+ }
+ else if (selection instanceof IField)
+ {
+ model = ((IField)selection).getModel();
+ if ( ((IField)selection).isGlobal())
+ {
+ doReselect = true;
+ }
+ command = ((IField)selection).getDeleteCommand();
+ }
+ if (command != null)
+ {
+ command.execute();
+ if (model != null && doReselect)
+ provider.setSelection(new StructuredSelection(model));
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/SetInputToGraphView.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/SetInputToGraphView.java
new file mode 100644
index 0000000..573f5ae
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/SetInputToGraphView.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.actions;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.design.DesignViewGraphicalViewer;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+
+public class SetInputToGraphView extends BaseSelectionAction
+{
+ public static String ID = "SetAsFocus";
+ IEditorPart editorPart;
+
+ public SetInputToGraphView(IWorkbenchPart part)
+ {
+ super(part);
+ setId(ID);
+ setText("Set As Focus");
+ if (part instanceof IEditorPart)
+ {
+ editorPart = (IEditorPart)part;
+ }
+ }
+
+ protected boolean calculateEnabled()
+ {
+ return true;
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+ Object adapter = getWorkbenchPart().getAdapter(GraphicalViewer.class);
+
+ if (selection instanceof IComplexType)
+ {
+ IComplexType type = (IComplexType) selection;
+
+ if (adapter instanceof DesignViewGraphicalViewer)
+ {
+ DesignViewGraphicalViewer graphicalViewer = (DesignViewGraphicalViewer) adapter;
+ RootEditPart rootEditPart = graphicalViewer.getRootEditPart();
+ EditPart editPart = rootEditPart.getContents();
+ if (editPart instanceof RootContentEditPart)
+ {
+ if (editorPart != null)
+ {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getNavigationHistory().markLocation(editorPart);
+ }
+ ((RootContentEditPart) editPart).setInput(type);
+ ((RootContentEditPart) editPart).refresh();
+ if (editorPart != null)
+ {
+ PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getNavigationHistory().markLocation(editorPart);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/ShowPropertiesViewAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/ShowPropertiesViewAction.java
new file mode 100644
index 0000000..7752efc
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/ShowPropertiesViewAction.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.actions;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+
+/**
+ * Show the properties view in the current perspective.
+ */
+public class ShowPropertiesViewAction extends BaseSelectionAction
+{
+ public static final String ID = "org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction"; //$NON-NLS-1$
+ public static final String PROPERTIES_VIEW_ID = "org.eclipse.ui.views.PropertySheet"; //$NON-NLS-1$
+
+ protected static ImageDescriptor enabledImage, disabledImage;
+
+ public ShowPropertiesViewAction(IWorkbenchPart part)
+ {
+ super(part);
+ setId(ID);
+ setText("Show properties");
+ setToolTipText(getText());
+ setImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/elcl16/showproperties_obj.gif") );
+ setDisabledImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/dlcl16/showproperties_obj.gif") );
+ }
+
+ protected boolean calculateEnabled()
+ {
+ return true;
+ }
+
+ public void run()
+ {
+ try
+ {
+ getWorkbenchPart().getSite().getPage().showView(PROPERTIES_VIEW_ID);
+ }
+ catch (PartInitException pie)
+ {
+
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewContextMenuProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewContextMenuProvider.java
new file mode 100644
index 0000000..67d6529
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewContextMenuProvider.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design;
+
+import org.eclipse.gef.ContextMenuProvider;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+
+
+public class DesignViewContextMenuProvider extends ContextMenuProvider
+{
+ IEditorPart editor;
+ ISelectionProvider selectionProvider;
+
+ /**
+ * Constructor for GraphContextMenuProvider.
+ *
+ * @param selectionProvider
+ * @param editor
+ */
+ public DesignViewContextMenuProvider(IEditorPart editor, EditPartViewer viewer, ISelectionProvider selectionProvider)
+ {
+ super(viewer);
+ this.editor = editor;
+ this.selectionProvider = selectionProvider;
+ }
+
+ /**
+ * @see org.eclipse.gef.ui.parts.ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager,
+ * org.eclipse.gef.EditPartViewer)
+ */
+ public void buildContextMenu(IMenuManager menu)
+ {
+ IMenuManager currentMenu = menu;
+ menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ ActionRegistry registry = getEditorActionRegistry();
+ ISelection selection = selectionProvider.getSelection();
+
+ if (selection != null)
+ {
+ Object selectedObject = ((StructuredSelection) selection).getFirstElement();
+
+ // Convert editparts to model objects as selections
+ if (selectedObject instanceof EditPart)
+ {
+ selectedObject = ((EditPart)selectedObject).getModel();
+ }
+
+ if (selectedObject instanceof IActionProvider)
+ {
+ IActionProvider actionProvider = (IActionProvider) selectedObject;
+
+ String[] actions = actionProvider.getActions(null);
+ for (int i = 0; i < actions.length; i++)
+ {
+ String id = actions[i];
+ if (id.startsWith(BaseSelectionAction.SUBMENU_START_ID))
+ {
+ String text = id.substring(BaseSelectionAction.SUBMENU_START_ID.length());
+ IMenuManager subMenu = new MenuManager(text);
+ currentMenu.add(subMenu);
+ currentMenu = subMenu;
+ }
+ else if (id.startsWith(BaseSelectionAction.SUBMENU_END_ID))
+ {
+ currentMenu = getParentMenu(menu, currentMenu);
+ }
+ else if (id.equals(BaseSelectionAction.SEPARATOR_ID))
+ {
+ currentMenu.add(new Separator());
+ }
+ else
+ {
+ IAction action = registry.getAction(id);
+ if (action != null)
+ {
+ action.isEnabled();
+ currentMenu.add(action);
+ }
+ }
+ }
+ menu.add(new Separator());
+ menu.add(new Separator("refactoring-slot"));
+ menu.add(new Separator());
+ menu.add(new Separator("search-slot"));
+ menu.add(new Separator());
+ }
+ }
+ menu.add(new Separator());
+ //menu.add(registry.getAction("org.eclipse.wst.xsd.DeleteAction"));
+ //menu.add(new Separator());
+ //ShowPropertiesViewAction showPropertiesAction = (ShowPropertiesViewAction) registry.getAction(ShowPropertiesViewAction.ACTION_ID);
+ //showPropertiesAction.setPage(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage());
+ //menu.add(showPropertiesAction);
+ }
+
+ protected IMenuManager getParentMenu(IMenuManager root, IMenuManager child) {
+ IMenuManager parent = null;
+
+ IContributionItem[] kids = root.getItems();
+ int index = 0;
+ while (index < kids.length && parent == null) {
+ IContributionItem item = kids[index];
+ if (item.equals(child)) {
+ parent = root;
+ }
+ else {
+ if (item instanceof IMenuManager) {
+ parent = getParentMenu((IMenuManager) item, child);
+ }
+ }
+ index++;
+ }
+
+ return parent;
+ }
+
+ protected ActionRegistry getEditorActionRegistry()
+ {
+ return (ActionRegistry) editor.getAdapter(ActionRegistry.class);
+ }
+ protected CommandStack commandStack;
+
+ protected CommandStack getCommandStack()
+ {
+ if (commandStack == null)
+ commandStack = getViewer().getEditDomain().getCommandStack();
+ return commandStack;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewGraphicalViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewGraphicalViewer.java
new file mode 100644
index 0000000..2716912
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewGraphicalViewer.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.adt.editor.ADTSelectionManager;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class DesignViewGraphicalViewer extends ScrollingGraphicalViewer implements ISelectionChangedListener
+{
+ protected ADTSelectionChangedListener internalSelectionProvider = new ADTSelectionChangedListener();
+
+ public DesignViewGraphicalViewer(IEditorPart editor, ADTSelectionManager manager)
+ {
+ super();
+ setContextMenu(new DesignViewContextMenuProvider(editor, this, this));
+ editor.getEditorSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.graph", getContextMenu(), internalSelectionProvider, false);
+
+ // make the internalSelectionProvider listen to graph view selection changes
+ addSelectionChangedListener(internalSelectionProvider);
+ internalSelectionProvider.addSelectionChangedListener(manager);
+ }
+
+
+ // this method is called when something changes in the selection manager
+ // (e.g. a selection occured from another view)
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ Object selectedObject = ((StructuredSelection) event.getSelection()).getFirstElement();
+
+ // TODO (cs) It seems like there's way more selection going on than there should
+ // be!! There's at least 2 selections getting fired when something is selected in the
+ // outline view. Are we listening to too many things?
+ //
+ //if (event.getSource() instanceof ADTContentOutlinePage)
+ if (event.getSource() != internalSelectionProvider)
+ {
+ if (selectedObject instanceof IStructure)
+ {
+ ((RootContentEditPart) getContents()).setInput(selectedObject);
+ }
+ else if (selectedObject instanceof IField)
+ {
+ IField field = (IField)selectedObject;
+ if (field.isGlobal())
+ {
+ ((RootContentEditPart) getContents()).setInput(selectedObject);
+ }
+ }
+ else if (selectedObject instanceof IModel)
+ {
+ IModel model = (IModel)selectedObject;
+ if (model.getTypes().size() > 0)
+ {
+ selectedObject = model.getTypes().get(0);
+ ((RootContentEditPart) getContents()).setInput(selectedObject);
+ }
+ EditPart editPart = getEditPart(getRootEditPart(), selectedObject);
+ if (editPart != null)
+ setSelection(new StructuredSelection(editPart));
+ else
+ setInput(null);
+ return;
+ }
+
+ EditPart editPart = getEditPart(getRootEditPart(), selectedObject);
+ if (editPart != null)
+ setSelection(new StructuredSelection(editPart));
+ }
+ }
+
+ /*
+ * We need to convert from edit part selections to model object selections
+ */
+ class ADTSelectionChangedListener implements ISelectionProvider, ISelectionChangedListener
+ {
+ protected List listenerList = new ArrayList();
+ protected ISelection selection = new StructuredSelection();
+
+ public void addSelectionChangedListener(ISelectionChangedListener listener)
+ {
+ listenerList.add(listener);
+ }
+
+ public void removeSelectionChangedListener(ISelectionChangedListener listener)
+ {
+ listenerList.remove(listener);
+ }
+
+ public ISelection getSelection()
+ {
+ return selection;
+ }
+
+ protected void notifyListeners(SelectionChangedEvent event)
+ {
+ for (Iterator i = listenerList.iterator(); i.hasNext();)
+ {
+ ISelectionChangedListener listener = (ISelectionChangedListener) i.next();
+ listener.selectionChanged(event);
+ }
+ }
+
+ public StructuredSelection convertSelectionFromEditPartToModel(ISelection editPartSelection)
+ {
+ List selectedModelObjectList = new ArrayList();
+ if (editPartSelection instanceof IStructuredSelection)
+ {
+ for (Iterator i = ((IStructuredSelection) editPartSelection).iterator(); i.hasNext();)
+ {
+ Object obj = i.next();
+ Object model = null;
+ if (obj instanceof EditPart)
+ {
+ EditPart editPart = (EditPart) obj;
+ model = editPart.getModel();
+ }
+ if (model != null)
+ {
+ selectedModelObjectList.add(model);
+ }
+ }
+ }
+ return new StructuredSelection(selectedModelObjectList);
+ }
+
+ public void setSelection(ISelection selection)
+ {
+ this.selection = selection;
+ }
+
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ ISelection newSelection = convertSelectionFromEditPartToModel(event.getSelection());
+ this.selection = newSelection;
+ SelectionChangedEvent newEvent = new SelectionChangedEvent(this, newSelection);
+ notifyListeners(newEvent);
+ }
+ }
+
+ protected EditPart getEditPart(EditPart parent, Object object)
+ {
+ EditPart result = null;
+ for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
+ {
+ EditPart editPart = (EditPart)i.next();
+ if (editPart.getModel() == object)
+ {
+ result = editPart;
+ break;
+ }
+ }
+
+ if (result == null)
+ {
+ for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
+ {
+ EditPart editPart = getEditPart((EditPart)i.next(), object);
+ if (editPart != null)
+ {
+ result = editPart;
+ break;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ public void setInput(IADTObject object)
+ {
+ ((RootContentEditPart)getRootEditPart().getContents()).setInput(object);
+ }
+
+ public IADTObject getInput()
+ {
+ return (IADTObject)((RootContentEditPart)getRootEditPart().getContents()).getInput();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/IAnnotationProvider.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/IAnnotationProvider.java
index 24a0537..e11e149 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/IAnnotationProvider.java
@@ -1,17 +1,17 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editparts;
+package org.eclipse.wst.xsd.adt.design;
-public interface IFeedbackHandler
+public interface IAnnotationProvider
{
- public void addFeedback();
- public void removeFeedback();
-}
\ No newline at end of file
+ String getNameAnnotationString();
+ String getNameAnnotationToolTipString();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ADTComboBoxCellEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ADTComboBoxCellEditor.java
new file mode 100644
index 0000000..2bad965
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ADTComboBoxCellEditor.java
@@ -0,0 +1,367 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.directedit;
+
+import java.text.MessageFormat;
+import org.eclipse.jface.util.Assert;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+/*
+ * This is a copy of ComboBoxCellEditor.
+ * We need to apply and deactivate the combo on a single click (not on a double click like
+ * the ComboBoxCellEditor).
+ */
+public class ADTComboBoxCellEditor extends CellEditor
+{
+
+ /**
+ * The list of items to present in the combo box.
+ */
+ private String[] items;
+
+ /**
+ * The zero-based index of the selected item.
+ */
+ int selection;
+
+ /**
+ * The custom combo box control.
+ */
+ CCombo comboBox;
+
+ /**
+ * Used to determine if the value should be applied to the cell.
+ */
+ private boolean continueApply;
+
+ private Object selectedValue;
+ //private Object setObject;
+ private ComponentReferenceEditManager componentReferenceEditManager;
+
+ /**
+ * Default ComboBoxCellEditor style
+ */
+ private static final int defaultStyle = SWT.NONE;
+
+
+ /**
+ * Creates a new cell editor with a combo containing the given list of choices
+ * and parented under the given control. The cell editor value is the
+ * zero-based index of the selected item. Initially, the cell editor has no
+ * cell validator and the first item in the list is selected.
+ *
+ * @param parent
+ * the parent control
+ * @param items
+ * the list of strings for the combo box
+ */
+ public ADTComboBoxCellEditor(Composite parent, String[] items, ComponentReferenceEditManager editManager)
+ {
+ super(parent, defaultStyle);
+ setItems(items);
+ componentReferenceEditManager = editManager;
+ }
+
+ /**
+ * Returns the list of choices for the combo box
+ *
+ * @return the list of choices for the combo box
+ */
+ public String[] getItems()
+ {
+ return this.items;
+ }
+
+ /**
+ * Sets the list of choices for the combo box
+ *
+ * @param items
+ * the list of choices for the combo box
+ */
+ public void setItems(String[] items)
+ {
+ Assert.isNotNull(items);
+ this.items = items;
+ populateComboBoxItems();
+ }
+
+ /*
+ * (non-Javadoc) Method declared on CellEditor.
+ */
+ protected Control createControl(Composite parent)
+ {
+
+ comboBox = new CCombo(parent, getStyle() | SWT.READ_ONLY);
+ comboBox.setFont(parent.getFont());
+
+ comboBox.addKeyListener(new KeyAdapter()
+ {
+ // hook key pressed - see PR 14201
+ public void keyPressed(KeyEvent e)
+ {
+ keyReleaseOccured(e);
+ }
+ });
+
+ comboBox.addSelectionListener(new SelectionAdapter()
+ {
+ public void widgetDefaultSelected(SelectionEvent event)
+ {
+ applyEditorValueAndDeactivate();
+ }
+
+ public void widgetSelected(SelectionEvent event)
+ {
+ Object newValue = null;
+ continueApply = true;
+ selection = comboBox.getSelectionIndex();
+ String stringSelection = items[selection];
+
+ if (stringSelection.equals("Browse..."))
+ {
+ newValue = invokeDialog(componentReferenceEditManager.getBrowseDialog());
+ }
+ else if (stringSelection.equals("New..."))
+ {
+ newValue = invokeDialog(componentReferenceEditManager.getNewDialog());
+ }
+
+ if (continueApply)
+ {
+ if (newValue == null)
+ {
+ int index = comboBox.getSelectionIndex();
+ if (index != -1)
+ {
+ selectedValue = comboBox.getItem(index);
+ }
+ }
+ else
+ {
+ selectedValue = newValue;
+ }
+
+ applyEditorValueAndDeactivate();
+ }
+ }
+ });
+
+ comboBox.addTraverseListener(new TraverseListener()
+ {
+ public void keyTraversed(TraverseEvent e)
+ {
+ if (e.detail == SWT.TRAVERSE_ESCAPE || e.detail == SWT.TRAVERSE_RETURN)
+ {
+ e.doit = false;
+ }
+ }
+ });
+
+ comboBox.addFocusListener(new FocusAdapter()
+ {
+ public void focusLost(FocusEvent e)
+ {
+ ADTComboBoxCellEditor.this.focusLost();
+ }
+ });
+ return comboBox;
+ }
+
+ private Object invokeDialog(IComponentDialog dialog)
+ {
+ Object newValue = null;
+
+ if (dialog == null)
+ {
+ return null;
+ }
+
+ //dialog.setInitialComponent(setObject);
+ if (dialog.createAndOpen() == Window.OK)
+ {
+ newValue = dialog.getSelectedComponent();
+ }
+ else
+ {
+ continueApply = false;
+ }
+
+ return newValue;
+ }
+
+ /**
+ * The <code>ComboBoxCellEditor</code> implementation of this
+ * <code>CellEditor</code> framework method returns the zero-based index of
+ * the current selection.
+ *
+ * @return the zero-based index of the current selection wrapped as an
+ * <code>Integer</code>
+ */
+ protected Object doGetValue()
+ {
+ return new Integer(selection);
+ }
+
+ /*
+ * (non-Javadoc) Method declared on CellEditor.
+ */
+ protected void doSetFocus()
+ {
+ comboBox.setFocus();
+ }
+
+ /**
+ * The <code>ComboBoxCellEditor</code> implementation of this
+ * <code>CellEditor</code> framework method sets the minimum width of the
+ * cell. The minimum width is 10 characters if <code>comboBox</code> is not
+ * <code>null</code> or <code>disposed</code> eles it is 60 pixels to make
+ * sure the arrow button and some text is visible. The list of CCombo will be
+ * wide enough to show its longest item.
+ */
+ public LayoutData getLayoutData()
+ {
+ LayoutData layoutData = super.getLayoutData();
+ if ((comboBox == null) || comboBox.isDisposed())
+ layoutData.minimumWidth = 60;
+ else
+ {
+ // make the comboBox 10 characters wide
+ GC gc = new GC(comboBox);
+ layoutData.minimumWidth = (gc.getFontMetrics().getAverageCharWidth() * 10) + 10;
+ gc.dispose();
+ }
+ return layoutData;
+ }
+
+ /**
+ * The <code>ComboBoxCellEditor</code> implementation of this
+ * <code>CellEditor</code> framework method accepts a zero-based index of a
+ * selection.
+ *
+ * @param value
+ * the zero-based index of the selection wrapped as an
+ * <code>Integer</code>
+ */
+ protected void doSetValue(Object value)
+ {
+ Assert.isTrue(comboBox != null && (value instanceof Integer));
+ selection = ((Integer) value).intValue();
+ comboBox.select(selection);
+ }
+
+ /**
+ * Updates the list of choices for the combo box for the current control.
+ */
+ private void populateComboBoxItems()
+ {
+ if (comboBox != null && items != null)
+ {
+ comboBox.removeAll();
+ for (int i = 0; i < items.length; i++)
+ comboBox.add(items[i], i);
+
+ setValueValid(true);
+ selection = 0;
+ }
+ }
+
+ /**
+ * Applies the currently selected value and deactiavates the cell editor
+ */
+ void applyEditorValueAndDeactivate()
+ {
+ // must set the selection before getting value
+ selection = comboBox.getSelectionIndex();
+ Object newValue = doGetValue();
+ markDirty();
+ boolean isValid = isCorrect(newValue);
+ setValueValid(isValid);
+ if (!isValid)
+ {
+ // try to insert the current value into the error message.
+ setErrorMessage(MessageFormat.format(getErrorMessage(), new Object[] { items[selection] }));
+ }
+ fireApplyEditorValue();
+ deactivate();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.CellEditor#focusLost()
+ */
+ protected void focusLost()
+ {
+ if (isActivated())
+ {
+ applyEditorValueAndDeactivate();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.CellEditor#keyReleaseOccured(org.eclipse.swt.events.KeyEvent)
+ */
+ protected void keyReleaseOccured(KeyEvent keyEvent)
+ {
+ if (keyEvent.character == '\u001b')
+ { // Escape character
+ fireCancelEditor();
+ }
+ else if (keyEvent.character == '\t')
+ { // tab key
+ applyEditorValueAndDeactivate();
+ }
+ }
+
+ //public void setSetObject(Object object)
+ //{
+ // setObject = object;
+ //}
+
+ public Object getSelectedValue()
+ {
+ return selectedValue;
+ }
+
+ /*
+ * TODO: rmah: This should be moved to WSDLEditorPlugin.java
+ */
+ private IEditorPart getActiveEditor()
+ {
+ IWorkbench workbench = XSDEditorPlugin.getDefault().getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+
+ return editorPart;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ComboBoxCellEditorManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ComboBoxCellEditorManager.java
new file mode 100644
index 0000000..c919aec
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ComboBoxCellEditorManager.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.directedit;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.tools.CellEditorLocator;
+import org.eclipse.gef.tools.DirectEditManager;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ComboBoxCellEditor;
+import org.eclipse.jface.viewers.ICellEditorListener;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+
+public abstract class ComboBoxCellEditorManager extends DirectEditManager// implements
+ // DirectEditPolicyDelegate
+{
+ protected Label label;
+
+ public ComboBoxCellEditorManager(GraphicalEditPart source, Label label)
+ {
+ super(source, ComboBoxCellEditor.class, new InternalCellEditorLocator(label));
+ this.label = label;
+ }
+
+ protected void initCellEditor()
+ {
+ String initialLabelText = label.getText();
+
+ CCombo combo = (CCombo) getCellEditor().getControl();
+ combo.setFont(label.getFont());
+ combo.setForeground(label.getForegroundColor());
+ combo.setBackground(label.getBackgroundColor());
+ combo.setVisibleItemCount(20);
+
+ /*
+ * combo.addKeyListener(new KeyAdapter() { // hook key pressed - see PR
+ * 14201 public void keyPressed(KeyEvent keyEvent) { if (keyEvent.character ==
+ * 'z') { getCellEditor().applyEditorValue(); } } });
+ */
+ ICellEditorListener cellEditorListener = new ICellEditorListener()
+ {
+ public void cancelEditor()
+ {
+ }
+
+ public void applyEditorValue()
+ {
+ }
+
+ public void editorValueChanged(boolean old, boolean newState)
+ {
+ }
+ };
+ getCellEditor().addListener(cellEditorListener);
+
+ String[] item = combo.getItems();
+ for (int i = 0; i < item.length; i++)
+ {
+ if (item[i].equals(initialLabelText))
+ {
+ getCellEditor().setValue(new Integer(i));
+ break;
+ }
+ }
+ }
+
+ // hack... for some reason the ComboBoxCellEditor does't fire an
+ // editorValueChanged to set the dirty flag
+ // unless we overide this method to return true, the manager is not notified
+ // of changes made in the cell editor
+ protected boolean isDirty()
+ {
+ return true;
+ }
+
+ protected CellEditor createCellEditorOn(Composite composite)
+ {
+ boolean isLabelTextInList = false;
+ List list = computeComboContent();
+ for (Iterator i = list.iterator(); i.hasNext();)
+ {
+ String string = (String) i.next();
+ if (string.equals(label.getText()))
+ {
+ isLabelTextInList = true;
+ break;
+ }
+ }
+
+ if (!isLabelTextInList)
+ {
+ list.add(label.getText());
+ }
+
+ List sortedList = computeSortedList(list);
+ String[] stringArray = new String[sortedList.size()];
+ for (int i = 0; i < stringArray.length; i++)
+ {
+ stringArray[i] = (String) sortedList.get(i);
+ }
+ return createCellEditor(composite, stringArray);
+ }
+
+ protected CellEditor createCellEditor(Composite composite, String[] stringArray)
+ {
+ return new ComboBoxCellEditor(composite, stringArray);
+ }
+
+ protected List computeSortedList(List list)
+ {
+ return list;
+ }
+
+ protected abstract List computeComboContent();
+
+ protected abstract void performModify(Object value);
+
+ public static class InternalCellEditorLocator implements CellEditorLocator
+ {
+ protected Label label;
+
+ public InternalCellEditorLocator(Label label)
+ {
+ this.label = label;
+ }
+
+ public void relocate(CellEditor celleditor)
+ {
+ CCombo combo = (CCombo) celleditor.getControl();
+
+ // TODO: We're pulling a fast one here..... This is assuming we're using a
+ // CCombo as our widget
+ // Our eventual 'Combo' may not even use CCombo so this will most likely
+ // get replaced.
+ // int dropDownButtonSizeX = 16;
+
+ Rectangle labelParentBounds = label.getBounds().getCopy();
+ label.translateToAbsolute(labelParentBounds);
+
+ int x = labelParentBounds.x;
+ int y = labelParentBounds.y;
+ int widthK = labelParentBounds.width;
+ int height = labelParentBounds.height;
+ combo.setBounds(x, y + 1, widthK, height - 2);
+ }
+ }
+
+ // implements DirectEditPolicyDelegate
+ //
+ public void performEdit(CellEditor cellEditor)
+ {
+ ADTComboBoxCellEditor comboCellEditor = (ADTComboBoxCellEditor) cellEditor;
+ CCombo combo = (CCombo) getCellEditor().getControl();
+ int index = combo.getSelectionIndex();
+ if (index != -1)
+ {
+ Object value = combo.getItem(index);
+ if (comboCellEditor.getSelectedValue() != null)
+ {
+ value = comboCellEditor.getSelectedValue();
+ }
+
+ performModify(value);
+ }
+ else
+ {
+ String typedValue = combo.getText();
+ if (combo.indexOf(typedValue) != -1)
+ {
+ performModify(typedValue);
+ }
+ else
+ {
+ String closeMatch = getCloseMatch(typedValue, combo.getItems());
+ if (closeMatch != null)
+ {
+ performModify(closeMatch);
+ }
+ else
+ {
+ Display.getCurrent().beep();
+ }
+ }
+ }
+ }
+
+ protected String getCloseMatch(String value, String[] items)
+ {
+ int matchIndex = -1;
+
+ for (int i = 0; i < items.length; i++)
+ {
+ String item = items[i];
+ String a = getLocalName(value);
+ String b = getLocalName(item);
+ if (a.equalsIgnoreCase(b))
+ {
+ matchIndex = i;
+ break;
+ }
+ }
+ return matchIndex != -1 ? items[matchIndex] : null;
+ }
+
+ protected String getLocalName(String string)
+ {
+ int index = string.indexOf(":");
+ return (index != -1) ? string.substring(index + 1) : string;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ElementReferenceDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ElementReferenceDirectEditManager.java
new file mode 100644
index 0000000..1054a7c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ElementReferenceDirectEditManager.java
@@ -0,0 +1,178 @@
+package org.eclipse.wst.xsd.adt.design.directedit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.editor.XSDElementReferenceEditManager;
+
+public class ElementReferenceDirectEditManager extends ComboBoxCellEditorManager
+{
+ protected AbstractGraphicalEditPart editPart;
+ protected IField setObject;
+
+ public ElementReferenceDirectEditManager(IField parameter, AbstractGraphicalEditPart source, Label label)
+ {
+ super(source, label);
+ editPart = source;
+ setObject = parameter;
+ }
+
+ protected CellEditor createCellEditorOn(Composite composite)
+ {
+ return super.createCellEditorOn(composite);
+ }
+
+ protected List computeComboContent()
+ {
+ List list = new ArrayList();
+ ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+ if (editManager != null)
+ {
+ list.add("Browse...");
+ list.add("New...");
+ ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+ if (quickPicks != null)
+ {
+ for (int i=0; i < quickPicks.length; i++)
+ {
+ ComponentSpecification componentSpecification = quickPicks[i];
+ list.add(componentSpecification.getName());
+ }
+ }
+ ComponentSpecification[] history = editManager.getHistory();
+ if (history != null)
+ {
+ for (int i=0; i < history.length; i++)
+ {
+ ComponentSpecification componentSpecification = history[i];
+ list.add(componentSpecification.getName());
+ }
+ }
+ }
+ return list;
+ }
+
+ protected ComponentSpecification getComponentSpecificationForValue(String value)
+ {
+ ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+ if (editManager != null)
+ {
+ ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+ if (quickPicks != null)
+ {
+ for (int i=0; i < quickPicks.length; i++)
+ {
+ ComponentSpecification componentSpecification = quickPicks[i];
+ if (value.equals(componentSpecification.getName()))
+ {
+ return componentSpecification;
+ }
+ }
+ }
+ ComponentSpecification[] history = editManager.getHistory();
+ if (history != null)
+ {
+ for (int i=0; i < history.length; i++)
+ {
+ ComponentSpecification componentSpecification = history[i];
+ if (value.equals(componentSpecification.getName()))
+ {
+ return componentSpecification;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public void performModify(Object value)
+ {
+ ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+ if (editManager == null)
+ {
+ return;
+ }
+
+ // our crude combo box can only work with 'String' objects
+ // if we get a String back we need to do some clever mapping to get the ComponentSpecification
+ //
+ if (value instanceof String)
+ {
+ value = getComponentSpecificationForValue((String)value);
+ }
+ // we assume the selected value is always of the form of a ComponentSpecification
+ //
+ if (value instanceof ComponentSpecification)
+ {
+ // we need to perform an asyncExec here since the 'host' editpart may be
+ // removed as a side effect of performing the action
+ DelayedSetElementReferenceRunnable runnable = new DelayedSetElementReferenceRunnable(editManager, setObject, (ComponentSpecification)value);
+ //runnable.run();
+ Display.getCurrent().asyncExec(runnable);
+ }
+ }
+
+ protected List computeSortedList(List list)
+ {
+ // return TypesHelper.sortList(list);
+ return list;
+ }
+
+ protected CellEditor createCellEditor(Composite composite, String[] stringArray)
+ {
+ ADTComboBoxCellEditor cellEditor = new ADTComboBoxCellEditor(composite, stringArray, getComponentReferenceEditManager());
+ //((ADTComboBoxCellEditor) cellEditor).setObjectToModify(setObject);
+ return cellEditor;
+ }
+
+ protected ComponentReferenceEditManager getComponentReferenceEditManager()
+ {
+ ComponentReferenceEditManager result = null;
+ IEditorPart editor = getActiveEditor();
+ if (editor != null)
+ {
+ result = (ComponentReferenceEditManager)editor.getAdapter(XSDElementReferenceEditManager.class);
+ }
+ return result;
+ }
+
+ private IEditorPart getActiveEditor()
+ {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ return editorPart;
+ }
+
+ protected static class DelayedSetElementReferenceRunnable implements Runnable
+ {
+ protected ComponentReferenceEditManager componentReferenceEditManager;
+ protected ComponentSpecification newValue;
+ protected IField field;
+
+ public DelayedSetElementReferenceRunnable(ComponentReferenceEditManager componentReferenceEditManager,
+ IField setObject, ComponentSpecification selectedValue)
+ {
+ this.componentReferenceEditManager = componentReferenceEditManager;
+ newValue = selectedValue;
+ field = setObject;
+ }
+
+ public void run()
+ {
+ componentReferenceEditManager.modifyComponentReference(field, newValue);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelCellEditorLocator.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelCellEditorLocator.java
new file mode 100644
index 0000000..2e187eb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelCellEditorLocator.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.directedit;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.tools.CellEditorLocator;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseFieldEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.INamedEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+
+public class LabelCellEditorLocator implements CellEditorLocator
+{
+ private INamedEditPart namedEditPart;
+ private Point cursorLocation;
+
+ public LabelCellEditorLocator(INamedEditPart namedEditPart, Point cursorLocation)
+ {
+ this.namedEditPart = namedEditPart;
+ this.cursorLocation = cursorLocation;
+ }
+
+ public void relocate(CellEditor celleditor)
+ {
+ Text text = (Text) celleditor.getControl();
+
+ if (text.getBounds().x <= 0)
+ {
+ Label label = namedEditPart.getNameLabelFigure();
+
+ int widthToRemove = 0;
+ // HACK
+ if (namedEditPart instanceof BaseFieldEditPart)
+ {
+ BaseFieldEditPart field = (BaseFieldEditPart)namedEditPart;
+ IFieldFigure fieldFigure = field.getFieldFigure();
+ widthToRemove = fieldFigure.getTypeLabel().getBounds().width;
+ //TODO: !! perhaps the IFieldFigure should just have a method to compute this?
+ //Label typeAnnotationLabel = ((FieldFigure) field.getFigure()).getTypeAnnotationLabel();
+ //Label nameAnnotationLabel = ((FieldFigure) field.getFigure()).getNameAnnotationLabel();
+ //widthToRemove = typeLabel.getBounds().width + typeAnnotationLabel.getBounds().width + nameAnnotationLabel.getBounds().width;
+ }
+
+ Rectangle boundingRect = label.getTextBounds();
+
+ // Reduce the width by the amount we shifted along the x-axis
+ int delta = Math.abs(boundingRect.x - label.getParent().getBounds().x);
+
+ label.getParent().translateToAbsolute(boundingRect);
+ org.eclipse.swt.graphics.Rectangle trim = text.computeTrim(0, 0, 0, 0);
+ boundingRect.translate(trim.x, trim.y);
+ boundingRect.height = boundingRect.height - trim.y;
+
+ boundingRect.width = label.getParent().getBounds().width - delta - widthToRemove;
+ text.setBounds(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height);
+
+ // Translate point
+ Point translatedPoint = new Point(cursorLocation.x - boundingRect.x, cursorLocation.y - boundingRect.y);
+
+ // Calculate text offset corresponding to the translated point
+ text.setSelection(0, 0);
+ int xCaret = text.getCaretLocation().x;
+ int offset = text.getCaretPosition();
+ while (xCaret < translatedPoint.x)
+ {
+ text.setSelection(offset + 1, offset + 1);
+ xCaret = text.getCaretLocation().x;
+ int newOffset = text.getCaretPosition();
+ if (newOffset == offset)
+ {
+ break;
+ }
+ offset++;
+ }
+ text.setSelection(offset, offset);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelEditManager.java
new file mode 100644
index 0000000..1b621eb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelEditManager.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.directedit;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.tools.CellEditorLocator;
+import org.eclipse.gef.tools.DirectEditManager;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.part.CellEditorActionHandler;
+import org.eclipse.wst.xsd.adt.design.editparts.INamedEditPart;
+
+public class LabelEditManager extends DirectEditManager {
+
+ private IActionBars actionBars;
+ private CellEditorActionHandler actionHandler;
+ private IAction copy, cut, paste, undo, redo, find, selectAll, delete;
+ private Font scaledFont;
+
+ public LabelEditManager(GraphicalEditPart source, CellEditorLocator locator) {
+ super(source, null, locator);
+ }
+
+ /**
+ * @see org.eclipse.gef.tools.DirectEditManager#bringDown()
+ */
+ protected void bringDown() {
+ if (actionHandler != null) {
+ actionHandler.dispose();
+ actionHandler = null;
+ }
+ if (actionBars != null) {
+ restoreSavedActions(actionBars);
+ actionBars.updateActionBars();
+ actionBars = null;
+ }
+
+ Font disposeFont = scaledFont;
+ scaledFont = null;
+ super.bringDown();
+ if (disposeFont != null)
+ disposeFont.dispose();
+ }
+
+ public void showFeedback() {
+// super.showFeedback();
+ getEditPart().showSourceFeedback(getDirectEditRequest());
+ }
+
+ protected CellEditor createCellEditorOn(Composite composite) {
+ return new TextCellEditor(composite, SWT.SINGLE | SWT.WRAP);
+ }
+
+ protected void initCellEditor() {
+ Text text = (Text)getCellEditor().getControl();
+ Label label = ((INamedEditPart) getEditPart()).getNameLabelFigure();
+
+ if (label != null) {
+ scaledFont = label.getFont();
+
+ Color color = label.getBackgroundColor();
+ text.setBackground(color);
+
+ String initialLabelText = label.getText();
+ getCellEditor().setValue(initialLabelText);
+ }
+ else {
+ scaledFont = label.getParent().getFont();
+ text.setBackground(label.getParent().getBackgroundColor());
+ }
+
+ FontData data = scaledFont.getFontData()[0];
+ Dimension fontSize = new Dimension(0, data.getHeight());
+ label.getParent().translateToAbsolute(fontSize);
+ data.setHeight(fontSize.height);
+ scaledFont = new Font(null, data);
+
+ text.setFont(scaledFont);
+// text.selectAll();
+
+ // Hook the cell editor's copy/paste actions to the actionBars so that they can
+ // be invoked via keyboard shortcuts.
+ actionBars = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+ .getActiveEditor().getEditorSite().getActionBars();
+ saveCurrentActions(actionBars);
+ actionHandler = new CellEditorActionHandler(actionBars);
+ actionHandler.addCellEditor(getCellEditor());
+ actionBars.updateActionBars();
+ }
+
+ private void restoreSavedActions(IActionBars actionBars){
+ actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), copy);
+ actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), paste);
+ actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), delete);
+ actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAll);
+ actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), cut);
+ actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), find);
+ actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), undo);
+ actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), redo);
+ }
+
+ private void saveCurrentActions(IActionBars actionBars) {
+ copy = actionBars.getGlobalActionHandler(ActionFactory.COPY.getId());
+ paste = actionBars.getGlobalActionHandler(ActionFactory.PASTE.getId());
+ delete = actionBars.getGlobalActionHandler(ActionFactory.DELETE.getId());
+ selectAll = actionBars.getGlobalActionHandler(ActionFactory.SELECT_ALL.getId());
+ cut = actionBars.getGlobalActionHandler(ActionFactory.CUT.getId());
+ find = actionBars.getGlobalActionHandler(ActionFactory.FIND.getId());
+ undo = actionBars.getGlobalActionHandler(ActionFactory.UNDO.getId());
+ redo = actionBars.getGlobalActionHandler(ActionFactory.REDO.getId());
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/TypeReferenceDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/TypeReferenceDirectEditManager.java
new file mode 100644
index 0000000..61daa07
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/TypeReferenceDirectEditManager.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.directedit;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.draw2d.Label;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.editor.XSDTypeReferenceEditManager;
+
+public class TypeReferenceDirectEditManager extends ComboBoxCellEditorManager
+{
+ protected AbstractGraphicalEditPart editPart;
+ protected IField setObject;
+
+ public TypeReferenceDirectEditManager(IField parameter, AbstractGraphicalEditPart source, Label label)
+ {
+ super(source, label);
+ editPart = source;
+ setObject = parameter;
+ }
+
+ protected CellEditor createCellEditorOn(Composite composite)
+ {
+ return super.createCellEditorOn(composite);
+ }
+
+ protected List computeComboContent()
+ {
+ List list = new ArrayList();
+ ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+ if (editManager != null)
+ {
+ list.add("Browse...");
+ list.add("New...");
+ ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+ if (quickPicks != null)
+ {
+ for (int i=0; i < quickPicks.length; i++)
+ {
+ ComponentSpecification componentSpecification = quickPicks[i];
+ list.add(componentSpecification.getName());
+ }
+ }
+ ComponentSpecification[] history = editManager.getHistory();
+ if (history != null)
+ {
+ for (int i=0; i < history.length; i++)
+ {
+ ComponentSpecification componentSpecification = history[i];
+ list.add(componentSpecification.getName());
+ }
+ }
+ }
+ return list;
+ }
+
+ protected ComponentSpecification getComponentSpecificationForValue(String value)
+ {
+ ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+ if (editManager != null)
+ {
+ ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+ if (quickPicks != null)
+ {
+ for (int i=0; i < quickPicks.length; i++)
+ {
+ ComponentSpecification componentSpecification = quickPicks[i];
+ if (value.equals(componentSpecification.getName()))
+ {
+ return componentSpecification;
+ }
+ }
+ }
+ ComponentSpecification[] history = editManager.getHistory();
+ if (history != null)
+ {
+ for (int i=0; i < history.length; i++)
+ {
+ ComponentSpecification componentSpecification = history[i];
+ if (value.equals(componentSpecification.getName()))
+ {
+ return componentSpecification;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public void performModify(Object value)
+ {
+ ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+ if (editManager == null)
+ {
+ return;
+ }
+
+ // our crude combo box can only work with 'String' objects
+ // if we get a String back we need to do some clever mapping to get the ComponentSpecification
+ //
+ if (value instanceof String)
+ {
+ value = getComponentSpecificationForValue((String)value);
+ }
+ // we assume the selected value is always of the form of a ComponentSpecification
+ //
+ if (value instanceof ComponentSpecification)
+ {
+ // we need to perform an asyncExec here since the 'host' editpart may be
+ // removed as a side effect of performing the action
+ DelayedSetTypeRunnable runnable = new DelayedSetTypeRunnable(editManager, setObject, (ComponentSpecification)value);
+ //runnable.run();
+ Display.getCurrent().asyncExec(runnable);
+ }
+ }
+
+ protected List computeSortedList(List list)
+ {
+ // return TypesHelper.sortList(list);
+ return list;
+ }
+
+ protected CellEditor createCellEditor(Composite composite, String[] stringArray)
+ {
+ ADTComboBoxCellEditor cellEditor = new ADTComboBoxCellEditor(composite, stringArray, getComponentReferenceEditManager());
+ //((ADTComboBoxCellEditor) cellEditor).setObjectToModify(setObject);
+ return cellEditor;
+ }
+
+ protected ComponentReferenceEditManager getComponentReferenceEditManager()
+ {
+ ComponentReferenceEditManager result = null;
+ IEditorPart editor = getActiveEditor();
+ if (editor != null)
+ {
+ result = (ComponentReferenceEditManager)editor.getAdapter(XSDTypeReferenceEditManager.class);
+ }
+ return result;
+ }
+
+ private IEditorPart getActiveEditor()
+ {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ return editorPart;
+ }
+
+ protected static class DelayedSetTypeRunnable implements Runnable
+ {
+ protected ComponentReferenceEditManager componentReferenceEditManager;
+ protected ComponentSpecification newValue;
+ protected IField field;
+
+ public DelayedSetTypeRunnable(ComponentReferenceEditManager componentReferenceEditManager, IField setObject, ComponentSpecification selectedValue)
+ {
+ this.componentReferenceEditManager = componentReferenceEditManager;
+ newValue = selectedValue;
+ field = setObject;
+ }
+
+ public void run()
+ {
+ componentReferenceEditManager.modifyComponentReference(field, newValue);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ADTEditPartFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ADTEditPartFactory.java
new file mode 100644
index 0000000..b7b5f53
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ADTEditPartFactory.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.jface.util.Assert;
+import org.eclipse.wst.xsd.adt.design.editparts.model.AbstractModelCollection;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class ADTEditPartFactory implements EditPartFactory
+{
+ public EditPart createEditPart(EditPart context, Object model)
+ {
+ EditPart child = null;
+ if (model instanceof Compartment)
+ {
+ child = new CompartmentEditPart();
+ }
+ else if (model instanceof AbstractModelCollection)
+ {
+ child = new ColumnEditPart();
+ if (model instanceof FocusTypeColumn)
+ {
+ ColumnEditPart columnEditPart = (ColumnEditPart)child;
+ columnEditPart.setSpacing(60);
+ columnEditPart.setMinorAlignment(ToolbarLayout.ALIGN_CENTER);
+ }
+ }
+ else if (model instanceof IComplexType)
+ {
+ child = new ComplexTypeEditPart();
+ }
+ else if (model instanceof IStructure)
+ {
+ child = new StructureEditPart();
+ }
+ else if (model instanceof IField)
+ {
+ if (context instanceof CompartmentEditPart)
+ {
+ child = new FieldEditPart();
+ }
+ else
+ {
+ child = new TopLevelFieldEditPart();
+ }
+ }
+ else if (model instanceof IModel)
+ {
+ child = new RootContentEditPart();
+ }
+
+ checkChild(child, model);
+
+ return child;
+ }
+
+ /**
+ * Subclasses can override and not check for null
+ *
+ * @param child
+ * @param model
+ */
+ protected void checkChild(EditPart child, Object model)
+ {
+ if (child == null)
+ {
+ Thread.dumpStack();
+ }
+ Assert.isNotNull(child);
+ child.setModel(model);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseEditPart.java
new file mode 100644
index 0000000..86d4c10
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseEditPart.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.editparts.ScalableRootEditPart;
+import org.eclipse.gef.editparts.ZoomListener;
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IFeedbackHandler;
+import org.eclipse.wst.xsd.adt.design.figures.IFigureFactory;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+
+public abstract class BaseEditPart extends AbstractGraphicalEditPart implements IActionProvider, IADTObjectListener, IFeedbackHandler
+{
+ protected static final String[] EMPTY_ACTION_ARRAY = {};
+
+ public IFigureFactory getFigureFactory()
+ {
+ EditPartFactory factory = getViewer().getEditPartFactory();
+ Assert.isTrue(factory instanceof IFigureFactory, "EditPartFactory must be an instanceof of IFigureFactory");
+ return (IFigureFactory)factory;
+ }
+
+ public String[] getActions(Object object)
+ {
+ Object model = getModel();
+ if (model instanceof IActionProvider)
+ {
+ return ((IActionProvider)model).getActions(object);
+ }
+ return EMPTY_ACTION_ARRAY;
+ }
+
+ protected void addActionsToList(List list, IAction[] actions)
+ {
+ for (int i = 0; i < actions.length; i++)
+ {
+ list.add(actions[i]);
+ }
+ }
+
+ public void activate()
+ {
+ super.activate();
+ Object model = getModel();
+ if (model instanceof IADTObject)
+ {
+ IADTObject object = (IADTObject)model;
+ object.registerListener(this);
+ }
+
+ if (getZoomManager() != null)
+ getZoomManager().addZoomListener(zoomListener);
+
+ }
+
+ public void deactivate()
+ {
+ try
+ {
+ Object model = getModel();
+ if (model instanceof IADTObject)
+ {
+ IADTObject object = (IADTObject)model;
+ object.unregisterListener(this);
+ }
+
+ if (getZoomManager() != null)
+ getZoomManager().removeZoomListener(zoomListener);
+ }
+ finally
+ {
+ super.deactivate();
+ }
+ }
+
+ public void propertyChanged(Object object, String property)
+ {
+ refresh();
+ }
+
+ public void refresh() {
+ super.refresh();
+
+ // Tell our children to refresh (note, this is NOT the function of
+ // refreshChildren(), strangely enough)
+ for(Iterator i = getChildren().iterator(); i.hasNext(); )
+ {
+ Object obj = i.next();
+ if (obj instanceof BaseEditPart)
+ {
+ ((BaseEditPart)obj).refresh();
+ }
+ else if (obj instanceof AbstractGraphicalEditPart)
+ {
+ ((AbstractGraphicalEditPart)obj).refresh();
+ }
+
+ }
+ }
+
+ public void addFeedback()
+ {
+ }
+
+ public void removeFeedback()
+ {
+ }
+
+ public ZoomManager getZoomManager()
+ {
+ return ((ScalableRootEditPart)getRoot()).getZoomManager();
+ }
+
+ public Rectangle getZoomedBounds(Rectangle r)
+ {
+ double factor = getZoomManager().getZoom();
+ int x = (int)Math.round(r.x * factor);
+ int y = (int)Math.round(r.y * factor);
+ int width = (int)Math.round(r.width * factor);
+ int height = (int)Math.round(r.height * factor);
+
+ return new Rectangle(x, y, width, height);
+ }
+
+ private ZoomListener zoomListener = new ZoomListener()
+ {
+ public void zoomChanged(double zoom)
+ {
+ handleZoomChanged();
+ }
+ };
+
+ protected void handleZoomChanged()
+ {
+ refreshVisuals();
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseFieldEditPart.java
new file mode 100644
index 0000000..7a46fce
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseFieldEditPart.java
@@ -0,0 +1,359 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.DragTracker;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.requests.DirectEditRequest;
+import org.eclipse.gef.requests.LocationRequest;
+import org.eclipse.wst.xsd.adt.design.directedit.ComboBoxCellEditorManager;
+import org.eclipse.wst.xsd.adt.design.directedit.ElementReferenceDirectEditManager;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelCellEditorLocator;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelEditManager;
+import org.eclipse.wst.xsd.adt.design.directedit.TypeReferenceDirectEditManager;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.IADTUpdateCommand;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDElementDeclarationAdapter;
+
+public class BaseFieldEditPart extends BaseTypeConnectingEditPart implements INamedEditPart
+{
+ protected TypeReferenceConnection connectionFigure;
+ protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+ TypeUpdateCommand typeUpdateCommand = new TypeUpdateCommand();
+ ElementReferenceUpdateCommand elementUpdateCommand = new ElementReferenceUpdateCommand();
+
+ protected IFigure createFigure()
+ {
+ IFieldFigure figure = getFigureFactory().createFieldFigure(getModel());
+ figure.setForegroundColor(ColorConstants.black);
+ return figure;
+ }
+
+ public IFieldFigure getFieldFigure()
+ {
+ return (IFieldFigure)figure;
+ }
+
+
+ public void activate()
+ {
+ super.activate();
+ activateConnection();
+ }
+
+ public void deactivate()
+ {
+ deactivateConnection();
+ super.deactivate();
+ }
+
+ protected boolean shouldDrawConnection()
+ {
+ boolean result = false;
+
+ // For now we only want to produce outbound lines from a Field to a Type
+ // when the field in contained in the 'focus' edit part
+ for (EditPart parent = getParent(); parent != null; parent = parent.getParent())
+ {
+ if (parent.getModel() instanceof FocusTypeColumn)
+ {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ public TypeReferenceConnection createConnectionFigure()
+ {
+ connectionFigure = null;
+ IField field = (IField)getModel();
+ IType type = field.getType();
+ if (type != null) // && type.isComplexType())
+ {
+ AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart)getViewer().getEditPartRegistry().get(type);
+ if (referenceTypePart != null)
+ {
+ connectionFigure = new TypeReferenceConnection();
+
+ if (getFigure().getParent() == referenceTypePart.getFigure())
+ {
+ connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.LEFT, 1));
+ }
+ else
+ {
+ connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.RIGHT, 5));
+ }
+ int targetAnchorYOffset = 8;
+
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(referenceTypePart.getFigure(), CenteredConnectionAnchor.HEADER_LEFT, 0, targetAnchorYOffset));
+ connectionFigure.setHighlight(false);
+ }
+ }
+ return connectionFigure;
+ }
+
+
+ protected void createEditPolicies()
+ {
+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+ installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+
+ // todo... perhaps this is aggressive?
+ // really we only need to update the connection when the IType changes
+
+ deactivateConnection();
+ activateConnection();
+ }
+
+ protected void refreshVisuals()
+ {
+ super.refreshVisuals();
+ IFieldFigure figure = getFieldFigure();
+ IField field = (IField) getModel();
+
+ figure.getNameLabel().setText(field.getName());
+ figure.getTypeLabel().setText(field.getTypeName());
+ figure.refreshVisuals(getModel());
+
+ figure.recomputeLayout();
+
+ ((GraphicalEditPart)getRoot()).getFigure().invalidateTree();
+ }
+
+ public DragTracker getDragTracker(Request request)
+ {
+ return super.getDragTracker(request);
+ }
+
+ /*
+ public IAction[] getActions(Object object)
+ {
+ // when a FieldEditPart is selected it provides it's own actions
+ // as well as those of it's parent 'type' edit part
+ List list = new ArrayList();
+ EditPart compartment = getParent();
+ if (compartment != null)
+ {
+ EditPart type = compartment.getParent();
+ if (type != null && type instanceof IActionProvider)
+ {
+ IActionProvider provider = (IActionProvider)type;
+ addActionsToList(list, provider.getActions(object));
+ }
+ }
+ addActionsToList(list, super.getActions(object));
+ IAction[] result = new IAction[list.size()];
+ list.toArray(result);
+ return result;
+ }*/
+
+ public Label getNameLabelFigure()
+ {
+ return getFieldFigure().getNameLabel();
+ }
+
+ public void performDirectEdit(Point cursorLocation)
+ {
+
+ }
+
+ public void performRequest(Request request)
+ {
+ if (request.getType() == RequestConstants.REQ_DIRECT_EDIT||
+ request.getType() == RequestConstants.REQ_OPEN)
+ {
+ IFieldFigure fieldFigure = getFieldFigure();
+ Object model = getModel();
+ if (request instanceof LocationRequest)
+ {
+ LocationRequest locationRequest = (LocationRequest)request;
+ Point p = locationRequest.getLocation();
+
+ if (hitTest(fieldFigure.getTypeLabel(), p))
+ {
+ TypeReferenceDirectEditManager manager = new TypeReferenceDirectEditManager((IField)model, this, fieldFigure.getTypeLabel());
+ typeUpdateCommand.setDelegate(manager);
+ adtDirectEditPolicy.setUpdateCommand(typeUpdateCommand);
+ manager.show();
+ }
+ else if (hitTest(fieldFigure.getNameLabel(), p))
+ {
+ if ( model instanceof XSDElementDeclarationAdapter ){
+ XSDElementDeclarationAdapter elementDecAdapter = ((XSDElementDeclarationAdapter) model);
+ if ( elementDecAdapter.isElementDeclarationReference() ){
+ ElementReferenceDirectEditManager manager =
+ new ElementReferenceDirectEditManager((IField)model, this, fieldFigure.getNameLabel());
+ elementUpdateCommand.setDelegate(manager);
+ adtDirectEditPolicy.setUpdateCommand(elementUpdateCommand);
+ manager.show();
+ }
+ else {
+ LabelEditManager manager = new LabelEditManager(this, new LabelCellEditorLocator(this, p));
+ NameUpdateCommandWrapper wrapper = new NameUpdateCommandWrapper();
+ adtDirectEditPolicy.setUpdateCommand(wrapper);
+ manager.show();
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ class NameUpdateCommandWrapper extends Command implements IADTUpdateCommand
+ {
+ Command command;
+ protected DirectEditRequest request;
+
+ public NameUpdateCommandWrapper()
+ {
+ super("Update Name");
+ }
+
+ public void setRequest(DirectEditRequest request)
+ {
+ this.request = request;
+ }
+
+ public void execute()
+ {
+ IField field = (IField)getModel();
+ Object newValue = request.getCellEditor().getValue();
+ if (newValue instanceof String)
+ {
+ command = field.getUpdateNameCommand((String)newValue);
+ }
+ if (command != null)
+ command.execute();
+ }
+ }
+
+ class TypeUpdateCommand extends Command implements IADTUpdateCommand
+ {
+ protected ComboBoxCellEditorManager delegate;
+ protected DirectEditRequest request;
+
+ public TypeUpdateCommand()
+ {
+ super("Update type");
+ }
+
+ public void setDelegate(ComboBoxCellEditorManager delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public void setRequest(DirectEditRequest request)
+ {
+ this.request = request;
+ }
+
+ public void execute()
+ {
+ if (delegate != null)
+ {
+ delegate.performEdit(request.getCellEditor());
+ }
+ }
+
+ public boolean canExecute()
+ {
+ return true;
+ }
+ }
+
+ class ElementReferenceUpdateCommand extends Command implements IADTUpdateCommand
+ {
+ protected ComboBoxCellEditorManager delegate;
+ protected DirectEditRequest request;
+
+ public ElementReferenceUpdateCommand()
+ {
+ super("Update element reference");
+ }
+
+ public void setDelegate(ComboBoxCellEditorManager delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public void setRequest(DirectEditRequest request)
+ {
+ this.request = request;
+ }
+
+ public void execute()
+ {
+ if (delegate != null)
+ {
+ delegate.performEdit(request.getCellEditor());
+ }
+ }
+
+ public boolean canExecute()
+ {
+ return true;
+ }
+ }
+
+
+ TypeReferenceConnection connectionFeedbackFigure;
+
+ public void addFeedback()
+ {
+ // Put back connection figure so it won't get overlayed by other non highlighted connections
+ if (connectionFigure != null)
+ {
+ connectionFeedbackFigure = new TypeReferenceConnection();
+ connectionFeedbackFigure.setSourceAnchor(connectionFigure.getSourceAnchor());
+ connectionFeedbackFigure.setTargetAnchor(connectionFigure.getTargetAnchor());
+ connectionFeedbackFigure.setHighlight(true);
+ getLayer(LayerConstants.FEEDBACK_LAYER).add(connectionFeedbackFigure);
+ }
+ super.addFeedback();
+ getFieldFigure().addSelectionFeedback();
+ }
+
+ public void removeFeedback()
+ {
+ if (connectionFeedbackFigure != null)
+ {
+ connectionFeedbackFigure.setHighlight(false);
+ getLayer(LayerConstants.FEEDBACK_LAYER).remove(connectionFeedbackFigure);
+ }
+ connectionFeedbackFigure = null;
+ super.removeFeedback();
+ getFieldFigure().removeSelectionFeedback();
+ }
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseTypeConnectingEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseTypeConnectingEditPart.java
new file mode 100644
index 0000000..bc74d6d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseTypeConnectingEditPart.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.requests.DirectEditRequest;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IFeedbackHandler;
+import org.eclipse.wst.xsd.adt.design.editpolicies.IADTUpdateCommand;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+/**
+ * This class provides some base function to enable drawing connections to a referenced type
+ *
+ */
+public abstract class BaseTypeConnectingEditPart extends BaseEditPart implements IFeedbackHandler
+{
+ private TypeReferenceConnection connectionFigure;
+
+ public void activate()
+ {
+ super.activate();
+ // TODO (cs) revisit this, perhaps has Randy for his advice
+ // it seems that the edit parts required for the target end of the connections
+ // are not always layed available when active is called. So we need to delay
+ // the activateConnection() until a short time later. For now the only way I can think
+ // of doing this is via an asyncExec.
+ //
+ Display.getCurrent().asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ if (isActive())
+ {
+ activateConnection();
+ }
+ }
+ });
+ }
+
+ public void deactivate()
+ {
+ deactivateConnection();
+ super.deactivate();
+ }
+
+ protected void activateConnection()
+ {
+ // If appropriate, create our connectionFigure and add it to the appropriate layer
+ if (connectionFigure == null && shouldDrawConnection())
+ {
+ connectionFigure = createConnectionFigure();
+ if (connectionFigure != null)
+ {
+ // Add our editpolicy as a listener on the connection, so it can stay in synch
+ //connectionFigure.addPropertyChangeListener((AttributeSelectionFeedbackPolicy) getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE));
+ //connectionFigure.addMouseListener(this);
+ getLayer(LayerConstants.CONNECTION_LAYER).add(connectionFigure);
+ }
+ }
+ }
+
+ protected void deactivateConnection()
+ {
+ // if we have a connection, remove it
+ if (connectionFigure != null)
+ {
+ getLayer(LayerConstants.CONNECTION_LAYER).remove(connectionFigure);
+ // Remove our editpolicy listener(s)
+ //connectionFigure.removePropertyChangeListener((AttributeSelectionFeedbackPolicy) getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE));
+ //connectionFigure.removeMouseListener(this);
+ connectionFigure = null;
+ }
+ }
+
+ protected boolean shouldDrawConnection()
+ {
+ return true;
+ }
+
+ public abstract TypeReferenceConnection createConnectionFigure();
+
+ public void addFeedback()
+ {
+ if (connectionFigure != null)
+ {
+ connectionFigure.setHighlight(true);
+ }
+ }
+
+ public void removeFeedback()
+ {
+ if (connectionFigure != null)
+ {
+ connectionFigure.setHighlight(false);
+ }
+ }
+
+ protected class NameUpdateCommandWrapper extends Command implements IADTUpdateCommand
+ {
+ Command command;
+ protected DirectEditRequest request;
+
+ public NameUpdateCommandWrapper()
+ {
+ super("Update Name");
+ }
+
+ public void setRequest(DirectEditRequest request)
+ {
+ this.request = request;
+ }
+
+ public void execute()
+ {
+ IType iType = (IType)getModel();
+ Object newValue = request.getCellEditor().getValue();
+ if (newValue instanceof String)
+ {
+ command = iType.getUpdateNameCommand((String)newValue);
+ }
+ if (command != null)
+ command.execute();
+ }
+ }
+
+ public boolean hitTest(IFigure target, Point location)
+ {
+ Rectangle b = target.getBounds().getCopy();
+ target.translateToAbsolute(b);
+ return b.contains(location);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BoxEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BoxEditPart.java
new file mode 100644
index 0000000..60815cf
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BoxEditPart.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import java.util.List;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.BoxFigure;
+import org.eclipse.wst.xsd.adt.design.editpolicies.SimpleDirectEditPolicy;
+
+public abstract class BoxEditPart extends BaseTypeConnectingEditPart //IFeedbackHandler
+{
+ protected List compartmentList = null;
+ protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
+
+ protected Compartment[] getCompartments()
+ {
+ return null;
+ }
+
+ protected IFigure createFigure()
+ {
+ BoxFigure figure = new BoxFigure();
+ LineBorder boxLineBorder = new LineBorder(1);
+ figure.setBorder(boxLineBorder);
+ ToolbarLayout toolbarLayout = new ToolbarLayout();
+ toolbarLayout.setStretchMinorAxis(true);
+ figure.setLayoutManager(toolbarLayout);
+ // we should organize ITreeElement and integrate it with the facade
+ if (getModel() instanceof ITreeElement)
+ {
+ figure.getNameLabel().setIcon(((ITreeElement)getModel()).getImage());
+ }
+ return figure;
+ }
+
+ public IFigure getContentPane()
+ {
+ return ((BoxFigure)getFigure()).getContentPane();
+ }
+
+ protected void createEditPolicies()
+ {
+ installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
+ }
+
+
+ public void addFeedback()
+ {
+ BoxFigure boxFigure = (BoxFigure)figure;
+ LineBorder boxFigureLineBorder = (LineBorder)boxFigure.getBorder();
+ boxFigureLineBorder.setWidth(2);
+ boxFigureLineBorder.setColor(ColorConstants.darkBlue);
+ boxFigure.getHeadingFigure().setSelected(true);
+ figure.repaint();
+ super.addFeedback();
+ }
+
+ public void removeFeedback()
+ {
+ BoxFigure boxFigure = (BoxFigure)figure;
+ LineBorder boxFigureLineBorder = (LineBorder)boxFigure.getBorder();
+ boxFigureLineBorder.setWidth(1);
+ boxFigureLineBorder.setColor(ColorConstants.black);
+ boxFigure.getHeadingFigure().setSelected(false);
+ figure.repaint();
+ super.removeFeedback();
+ }
+
+ protected ActionRegistry getEditorActionRegistry(IEditorPart editor)
+ {
+ return (ActionRegistry) editor.getAdapter(ActionRegistry.class);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CenteredConnectionAnchor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CenteredConnectionAnchor.java
new file mode 100644
index 0000000..3e19c6f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CenteredConnectionAnchor.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.draw2d.AbstractConnectionAnchor;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.editor.internal.design.figures.CenteredIconFigure;
+
+public class CenteredConnectionAnchor extends AbstractConnectionAnchor
+{
+ public static final int TOP = 0;
+ public static final int BOTTOM = 1;
+ public static final int LEFT = 2;
+ public static final int RIGHT = 3;
+
+ public static final int HEADER_LEFT = 4;
+ public static final int HEADER_RIGHT = 5;
+
+ private int location;
+ private int inset;
+ private int offset = 0;
+
+ public CenteredConnectionAnchor(IFigure owner, int location, int inset)
+ {
+ super(owner);
+ this.location = location;
+ this.inset = inset;
+ }
+
+ public CenteredConnectionAnchor(IFigure owner, int location, int inset, int offset)
+ {
+ this(owner, location, inset);
+ this.offset = offset;
+ }
+
+ public Point getLocation(Point reference)
+ {
+ Rectangle r = getOwner().getBounds();
+ int x, y;
+ switch (location)
+ {
+ case TOP:
+ x = r.right() - r.width / 2 + offset;
+ y = r.y + inset;
+ break;
+ case BOTTOM:
+ x = r.right() - r.width / 2 + offset;
+ y = r.bottom() - inset;
+ break;
+ case LEFT:
+ x = r.x + inset;
+ y = r.bottom() - r.height / 2 + offset;
+ break;
+ case RIGHT:
+ x = r.right() - inset;
+ y = r.bottom() - r.height / 2 + offset;
+ break;
+ case HEADER_LEFT:
+ x = r.x + inset;
+ y = r.y + offset;
+ break;
+ case HEADER_RIGHT:
+ x = r.right() - inset;
+ y = r.y + offset;
+ break;
+
+ default:
+ x = r.right() - r.width / 2;
+ y = r.bottom() - r.height / 2;
+ }
+ Point p = new Point(x, y);
+
+ if (!(getOwner() instanceof CenteredIconFigure))
+ {
+ getOwner().translateToAbsolute(p);
+ }
+ else
+ {
+ getOwner().translateToAbsolute(p);
+ }
+ return p;
+ }
+
+ public Point getReferencePoint()
+ {
+ return getLocation(null);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ColumnEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ColumnEditPart.java
new file mode 100644
index 0000000..f6352ae
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ColumnEditPart.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.editparts.model.AbstractModelCollection;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+
+public class ColumnEditPart extends BaseEditPart
+{
+ protected int spacing = 20;
+ protected int minorAlignment = -1;
+
+ protected IFigure createFigure()
+ {
+ Figure figure = new Figure();
+ ToolbarLayout layout = new ToolbarLayout(false);
+ if (minorAlignment != -1)
+ {
+ layout.setMinorAlignment(minorAlignment);
+ }
+ layout.setStretchMinorAxis(false);
+ layout.setSpacing(spacing);
+ figure.setLayoutManager(layout);
+ return figure;
+ }
+
+ public void setSpacing(int spacing)
+ {
+ this.spacing = spacing;
+ if (figure != null)
+ {
+ ((ToolbarLayout)figure.getLayoutManager()).setSpacing(spacing);
+ }
+ }
+
+ public IComplexType getComplexType()
+ {
+ return (IComplexType)getModel();
+ }
+
+ protected void createEditPolicies()
+ {
+ // TODO Auto-generated method stub
+ }
+
+ protected List getModelChildren()
+ {
+ AbstractModelCollection collection = (AbstractModelCollection)getModel();
+ return collection.getChildren();
+ }
+
+ public int getMinorAlignment()
+ {
+ return minorAlignment;
+ }
+
+ public void setMinorAlignment(int minorAlignment)
+ {
+ this.minorAlignment = minorAlignment;
+ }
+}
+
+
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CompartmentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CompartmentEditPart.java
new file mode 100644
index 0000000..b5724e0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CompartmentEditPart.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import java.util.List;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+
+// TODO (cs) common-up with BoxEditPart (?)
+public class CompartmentEditPart extends BaseEditPart // implements
+ // IFeedbackHandler
+{
+ Annotation annotation = new Annotation();
+
+ protected IFigure createFigure()
+ {
+ ICompartmentFigure figure = getFigureFactory().createCompartmentFigure(getModel());
+ return figure;
+ }
+
+ public IFigure getContentPane()
+ {
+ return getCompartmentFigure().getContentPane();
+ }
+
+ protected void createEditPolicies()
+ {
+ // installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new
+ // SelectionFeedbackEditPolicy(this));
+ }
+
+ protected void addChildVisual(EditPart childEditPart, int index)
+ {
+ Object model = childEditPart.getModel();
+
+ IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+
+ if (model instanceof IField)
+ {
+ getCompartmentFigure().getContentPane().add(child, index);
+ return;
+ }
+ else if (model instanceof Annotation)
+ {
+ getCompartmentFigure().getAnnotationPane().add(child);
+ return;
+ }
+ super.addChildVisual(childEditPart, index);
+ }
+
+ protected void removeChildVisual(EditPart childEditPart)
+ {
+ Object model = childEditPart.getModel();
+ IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+
+ if (model instanceof IField)
+ {
+ getCompartmentFigure().getContentPane().remove(child);
+ return;
+ }
+ else if (model instanceof Annotation)
+ {
+ getCompartmentFigure().getAnnotationPane().remove(child);
+ return;
+ }
+ super.removeChildVisual(childEditPart);
+ }
+
+ protected Compartment getCompartment()
+ {
+ return (Compartment) getModel();
+ }
+
+ protected List getModelChildren()
+ {
+ List children = getCompartment().getChildren();
+ children.add(annotation);
+ return children;
+ }
+
+ public void setModel(Object model)
+ {
+ super.setModel(model);
+ annotation.setCompartment(getCompartment());
+ }
+
+ protected void refreshChildren()
+ {
+ super.refreshChildren();
+ // ((AbstractGraphicalEditPart)getParent()).getContentPane().invalidate();
+ }
+
+ protected void refreshVisuals()
+ {
+ super.refreshVisuals();
+ }
+
+ public void addFeedback()
+ {
+ // getFigure().setBackgroundColor(ColorConstants.blue);
+ // ((CompartmentFigure)getFigure()).setBorderColor(ColorConstants.black);
+ getFigure().repaint();
+ }
+
+ public void removeFeedback()
+ {
+ // getFigure().setBackgroundColor(ColorConstants.lightBlue);
+ // ((CompartmentFigure)getFigure()).setBorderColor(ColorConstants.lightGray);
+ getFigure().repaint();
+ }
+
+ public ICompartmentFigure getCompartmentFigure()
+ {
+ return (ICompartmentFigure)figure;
+ }
+
+ public void addNotify()
+ {
+ super.addNotify();
+ getCompartmentFigure().editPartAttached(this);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ComplexTypeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ComplexTypeEditPart.java
new file mode 100644
index 0000000..6445ee8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ComplexTypeEditPart.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+public class ComplexTypeEditPart extends StructureEditPart
+{
+ protected boolean shouldDrawConnection()
+ {
+ if (getParent().getModel() instanceof FocusTypeColumn)
+ {
+ IComplexType complexType = (IComplexType)getModel();
+ return complexType.getSuperType() != null;
+ }
+ return false;
+ }
+
+ public TypeReferenceConnection createConnectionFigure()
+ {
+ TypeReferenceConnection connectionFigure = null;
+ IComplexType complexType = (IComplexType)getModel();
+ IType type = complexType.getSuperType();
+ if (type != null && type.isComplexType())
+ {
+ AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart)getViewer().getEditPartRegistry().get(type);
+ if (referenceTypePart != null)
+ {
+ connectionFigure = new TypeReferenceConnection();
+ // draw a line out from the top
+ connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.TOP, 1));
+
+ // TODO (cs) need to draw the target anchor to look like a UML inheritance relationship
+ // adding a label to the connection would help to
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(referenceTypePart.getFigure(), CenteredConnectionAnchor.BOTTOM, 0, 0));
+ connectionFigure.setHighlight(false);
+ }
+ }
+ return connectionFigure;
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/FieldEditPart.java
similarity index 64%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/FieldEditPart.java
index ff6e4db..20d4377 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/FieldEditPart.java
@@ -1,18 +1,21 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.model;
+package org.eclipse.wst.xsd.adt.design.editparts;
-
-public interface ModelAdapterListener
-{
- public void propertyChanged(Object object, String property);
+public class FieldEditPart extends BaseFieldEditPart
+{
+ public void addNotify()
+ {
+ super.addNotify();
+ getFieldFigure().editPartAttached(this);
+ }
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/INamedEditPart.java
similarity index 60%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/INamedEditPart.java
index ff6e4db..089b8b6 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/INamedEditPart.java
@@ -1,18 +1,21 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.model;
+package org.eclipse.wst.xsd.adt.design.editparts;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+public interface INamedEditPart
+{
+ public Label getNameLabelFigure();
-public interface ModelAdapterListener
-{
- public void propertyChanged(Object object, String property);
+ public void performDirectEdit(Point cursorLocation);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootContentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootContentEditPart.java
new file mode 100644
index 0000000..a046556
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootContentEditPart.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Panel;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.design.editparts.model.ReferencedTypeColumn;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.internal.design.layouts.ContainerLayout;
+
+public class RootContentEditPart extends AbstractGraphicalEditPart
+{
+ List collections = null;
+ Figure contentPane;
+
+ protected IFigure createFigure()
+ {
+ Panel panel = new Panel();
+ // why do we need to use a container layout? can we just set a
+ // margin border and get the same effect?
+ ContainerLayout clayout = new ContainerLayout();
+ clayout.setBorder(60);
+ panel.setLayoutManager(clayout);
+
+ contentPane = new Figure();
+ panel.add(contentPane);
+
+ ToolbarLayout layout = new ToolbarLayout(true);
+ layout.setStretchMinorAxis(false);
+ layout.setSpacing(100);
+ contentPane.setLayoutManager(layout);
+ return panel;
+ }
+
+ public IFigure getContentPane()
+ {
+ return contentPane;
+ }
+
+
+ public IComplexType getSelectedComplexType()
+ {
+ IComplexType result = null;
+ IModel model = (IModel)getModel();
+ List types = model.getTypes();
+ if (types.size() > 0)
+ {
+ if (types.get(0) instanceof IComplexType)
+ result = (IComplexType)types.get(0);
+ }
+ return result;
+ }
+
+ protected void createEditPolicies()
+ {
+ // TODO Auto-generated method stub
+ }
+
+ protected List getModelChildren()
+ {
+ collections = new ArrayList();
+ if (getModel() != null)
+ {
+ Object obj = getModel();
+ IADTObject focusObject = null;
+ if (obj instanceof IStructure)
+ {
+ focusObject = (IStructure)obj;
+ }
+ else if (obj instanceof IField)
+ {
+ focusObject = (IField)obj;
+ }
+ else if (obj instanceof IModel)
+ {
+ focusObject = getSelectedComplexType();
+ }
+ else if (obj instanceof IType)
+ {
+ if (((IType)obj).isFocusAllowed())
+ {
+ focusObject = (IType)obj;
+ }
+ }
+ if (focusObject != null)
+ {
+ collections.add(new FocusTypeColumn(focusObject));
+ collections.add(new ReferencedTypeColumn(focusObject));
+ }
+ }
+ return collections;
+ }
+
+ public void setInput(Object component)
+ {
+ setModel(component);
+ refresh();
+ }
+
+ public Object getInput()
+ {
+ return getModel();
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+ // the connections are not refreshed
+ for(Iterator i = getChildren().iterator(); i.hasNext(); )
+ {
+ Object obj = i.next();
+ if (obj instanceof AbstractGraphicalEditPart)
+ {
+ ((AbstractGraphicalEditPart)obj).refresh();
+ }
+ }
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootEditPart.java
new file mode 100644
index 0000000..ba0fcbb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootEditPart.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.draw2d.BendpointConnectionRouter;
+import org.eclipse.draw2d.ConnectionLayer;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.editparts.ScalableRootEditPart;
+
+public class RootEditPart extends ScalableRootEditPart implements org.eclipse.gef.RootEditPart
+{
+ public void activate()
+ {
+ super.activate();
+ // Set up Connection layer with a router, if it doesn't already have one
+ ConnectionLayer connectionLayer = (ConnectionLayer) getLayer(LayerConstants.CONNECTION_LAYER);
+ if (connectionLayer != null)
+ {
+ connectionLayer.setConnectionRouter(new BendpointConnectionRouter());
+ }
+ refresh();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/StructureEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/StructureEditPart.java
new file mode 100644
index 0000000..0189d58
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/StructureEditPart.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.requests.LocationRequest;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+import org.eclipse.wst.xsd.ui.common.actions.OpenInNewEditor;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDSchema;
+
+public class StructureEditPart extends BaseTypeConnectingEditPart implements INamedEditPart
+{
+ protected List compartmentList = null;
+ protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+
+ /**
+ * TODO cs... I'm sure this has something to do with the way we wanted to rework compartment creation
+ * I suppose we could have subclasses override this method instead of getModelChildren()
+ *
+ * @deprecated
+ */
+ protected Compartment[] getCompartments()
+ {
+ return null;
+ }
+
+ protected IFigure createFigure()
+ {
+ IStructureFigure figure = getFigureFactory().createStructureFigure(getModel());
+ return figure;
+ }
+
+ public IStructureFigure getStructureFigure()
+ {
+ return (IStructureFigure)getFigure();
+ }
+
+ public IFigure getContentPane()
+ {
+ return getStructureFigure().getContentPane();
+ }
+
+
+ protected void createEditPolicies()
+ {
+ installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+ }
+
+ protected IStructure getStructure()
+ {
+ return (IStructure)getModel();
+ }
+
+ protected List getModelChildren()
+ {
+ if (compartmentList == null)
+ {
+ compartmentList = new ArrayList();
+
+ // TODO.. this needs to be moved to the xsd specific version of this class
+ compartmentList.add(new Compartment(getStructure(), "attribute"));
+ compartmentList.add(new Compartment(getStructure(), "element"));
+ }
+ return compartmentList;
+ }
+
+ protected void refreshChildren()
+ {
+ super.refreshChildren();
+ //getFigure().invalidateTree();
+ }
+
+ protected void refreshVisuals()
+ {
+ super.refreshVisuals();
+ getStructureFigure().refreshVisuals(getModel());
+ }
+
+ public void addFeedback()
+ {
+ getStructureFigure().addSelectionFeedback();
+ super.addFeedback();
+ }
+
+ public void removeFeedback()
+ {
+ getStructureFigure().removeSelectionFeedback();
+ super.removeFeedback();
+ }
+
+ public Label getNameLabelFigure()
+ {
+ return getStructureFigure().getNameLabel();
+ }
+
+ public void performDirectEdit(Point cursorLocation)
+ {
+
+ }
+
+ public void performRequest(Request request)
+ {
+ if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
+ request.getType() == RequestConstants.REQ_OPEN)
+ {
+
+ Object model = getModel();
+ if (request instanceof LocationRequest)
+ {
+ LocationRequest locationRequest = (LocationRequest)request;
+ Point p = locationRequest.getLocation();
+// uncomment for direct edit of name (add else)
+// if (hitTest(getNameLabelFigure(), p))
+// {
+// LabelEditManager manager = new LabelEditManager(this, new LabelCellEditorLocator(this, p));
+// NameUpdateCommandWrapper wrapper = new NameUpdateCommandWrapper();
+// adtDirectEditPolicy.setUpdateCommand(wrapper);
+// manager.show();
+// }
+
+
+ if (getStructureFigure().hitTestHeader(p))
+ {
+ // TODO: !!! This should be moved to the adt-xsd package
+ //
+ if (model instanceof XSDComplexTypeDefinitionAdapter)
+ {
+ XSDComplexTypeDefinitionAdapter adapter = (XSDComplexTypeDefinitionAdapter)model;
+ XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)adapter.getTarget();
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ Object schema = editorPart.getAdapter(XSDSchema.class);
+ ActionRegistry registry = getEditorActionRegistry(editorPart);
+ if (registry != null)
+ {
+ if (schema == ct.getSchema())
+ {
+ IAction action = registry.getAction(SetInputToGraphView.ID);
+ action.run();
+ }
+ else
+ {
+ IAction action = registry.getAction(OpenInNewEditor.ID);
+ action.run();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ protected ActionRegistry getEditorActionRegistry(IEditorPart editor)
+ {
+ return (ActionRegistry) editor.getAdapter(ActionRegistry.class);
+ }
+
+ protected boolean shouldDrawConnection()
+ {
+ return false;
+ }
+
+ public TypeReferenceConnection createConnectionFigure()
+ {
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TopLevelFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TopLevelFieldEditPart.java
new file mode 100644
index 0000000..901f420
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TopLevelFieldEditPart.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.requests.LocationRequest;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelCellEditorLocator;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelEditManager;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.BoxFigure;
+
+public class TopLevelFieldEditPart extends BoxEditPart implements INamedEditPart
+{
+ protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+
+ protected boolean shouldDrawConnection()
+ {
+ IField field = (IField)getModel();
+ IType type = field.getType();
+ return (type != null && type.isComplexType());
+ }
+
+ public TypeReferenceConnection createConnectionFigure()
+ {
+ TypeReferenceConnection connectionFigure = null;
+ IField field = (IField)getModel();
+ IType type = field.getType();
+ if (type != null && type.isComplexType())
+ {
+ AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart)getViewer().getEditPartRegistry().get(type);
+ if (referenceTypePart != null)
+ {
+ connectionFigure = new TypeReferenceConnection();
+ connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.RIGHT, 5));
+ int targetAnchorYOffset = 16;
+ connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(referenceTypePart.getFigure(), CenteredConnectionAnchor.HEADER_LEFT, 0, targetAnchorYOffset));
+ connectionFigure.setHighlight(false);
+ }
+ }
+ return connectionFigure;
+ }
+
+ protected void createEditPolicies()
+ {
+ super.createEditPolicies();
+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+ installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+ }
+
+ protected void refreshVisuals()
+ {
+ IField field = (IField)getModel();
+ BoxFigure boxFigure = (BoxFigure)getFigure();
+ boxFigure.getNameLabel().setText(field.getName());
+ super.refreshVisuals();
+ }
+
+ public Label getNameLabelFigure()
+ {
+ BoxFigure boxFigure = (BoxFigure)getFigure();
+ return boxFigure.getNameLabel();
+ }
+
+ public void performDirectEdit(Point cursorLocation)
+ {
+
+ }
+
+ public void performRequest(Request request)
+ {
+ if (request.getType() == RequestConstants.REQ_DIRECT_EDIT||
+ request.getType() == RequestConstants.REQ_OPEN)
+ {
+ if (request instanceof LocationRequest)
+ {
+ LocationRequest locationRequest = (LocationRequest)request;
+ Point p = locationRequest.getLocation();
+
+ if (hitTest(getNameLabelFigure(), p))
+ {
+ LabelEditManager manager = new LabelEditManager(this, new LabelCellEditorLocator(this, p));
+ NameUpdateCommandWrapper wrapper = new NameUpdateCommandWrapper();
+ adtDirectEditPolicy.setUpdateCommand(wrapper);
+ manager.show();
+ }
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TypeReferenceConnection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TypeReferenceConnection.java
new file mode 100644
index 0000000..d4eef12
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TypeReferenceConnection.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ConnectionRouter;
+import org.eclipse.draw2d.ManhattanConnectionRouter;
+import org.eclipse.draw2d.PolygonDecoration;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.swt.graphics.Color;
+
+public class TypeReferenceConnection extends PolylineConnection
+{
+ protected boolean highlight = false;
+ protected static final Color activeConnection = ColorConstants.black;
+ protected static final Color inactiveConnection = new Color(null, 198, 195, 198);
+
+ /**
+ * Default constructor
+ */
+ public TypeReferenceConnection()
+ {
+ super();
+ setTargetDecoration(new PolygonDecoration());
+ }
+
+
+
+ public void setConnectionRouter(ConnectionRouter cr)
+ {
+ if (cr != null && getConnectionRouter() != null && !(getConnectionRouter() instanceof ManhattanConnectionRouter))
+ super.setConnectionRouter(cr);
+ }
+
+ /**
+ * @return Returns the current highlight status.
+ */
+ public boolean isHighlighted()
+ {
+ return highlight;
+ }
+
+ /**
+ * @param highlight
+ * The highlight to set.
+ */
+ public void setHighlight(boolean highlight)
+ {
+ this.highlight = highlight;
+ // Update our connection to use the correct colouring
+ setForegroundColor(highlight ? activeConnection : inactiveConnection);
+ setOpaque(highlight);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/AbstractModelCollection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/AbstractModelCollection.java
new file mode 100644
index 0000000..37d1e33
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/AbstractModelCollection.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts.model;
+
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+
+public abstract class AbstractModelCollection implements IADTObject
+{
+ IADTObject model;
+ String kind;
+
+ public AbstractModelCollection(IADTObject model, String kind)
+ {
+ this.model = model;
+ this.kind = kind;
+ }
+
+ public Object getModel()
+ {
+ return model;
+ }
+
+ public void setModel(IADTObject model)
+ {
+ this.model = model;
+ }
+
+ public String getKind()
+ {
+ return kind;
+ }
+
+ public void setKind(String kind)
+ {
+ this.kind = kind;
+ }
+
+ public abstract List getChildren();
+
+ public void registerListener(IADTObjectListener listener)
+ {
+ model.registerListener(listener);
+ }
+
+ public void unregisterListener(IADTObjectListener listener)
+ {
+ model.unregisterListener(listener);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Annotation.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Annotation.java
new file mode 100644
index 0000000..fee40af
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Annotation.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts.model;
+
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class Annotation
+{
+ Compartment compartment;
+ public Annotation()
+ {
+ super();
+ }
+
+ public void setCompartment(Compartment compartment)
+ {
+ this.compartment = compartment;
+ }
+
+ public Compartment getCompartment()
+ {
+ return compartment;
+ }
+
+ public IStructure getOwner()
+ {
+ return compartment.getOwner();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Compartment.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Compartment.java
new file mode 100644
index 0000000..6de4ff2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Compartment.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class Compartment implements IADTObject
+{
+ String kind;
+ IStructure owner;
+
+ public Compartment(IStructure owner, String kind)
+ {
+ this.kind = kind;
+ this.owner = owner;
+ }
+
+ public List getChildren()
+ {
+ List list = new ArrayList();
+ for (Iterator i = owner.getFields().iterator(); i.hasNext();)
+ {
+ IField field = (IField) i.next();
+ if (kind == null || kind.equals(field.getKind()))
+ {
+ list.add(field);
+ }
+ }
+ return list;
+ }
+
+ public String getKind()
+ {
+ return kind;
+ }
+
+ public IStructure getOwner()
+ {
+ return owner;
+ }
+
+ public void registerListener(IADTObjectListener listener)
+ {
+ // really we want to listen to the owner
+ owner.registerListener(listener);
+ }
+
+ public void unregisterListener(IADTObjectListener listener)
+ {
+ // really we want to listen to the owner
+ owner.unregisterListener(listener);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/FocusTypeColumn.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/FocusTypeColumn.java
new file mode 100644
index 0000000..81272c3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/FocusTypeColumn.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+public class FocusTypeColumn extends AbstractModelCollection
+{
+ public FocusTypeColumn(IADTObject model)
+ {
+ super(model, "FocusTypeColumn");
+ }
+
+ public List getChildren()
+ {
+ List result = new ArrayList();
+ if (model instanceof IType)
+ {
+ IType type = (IType)model;
+ if (type.getSuperType() != null)
+ {
+ result.add(type.getSuperType());
+ }
+ result.add(type);
+ }
+ else if (model instanceof IField ||
+ model instanceof IStructure)
+ {
+ result.add(model);
+ }
+ return result;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IActionProvider.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IActionProvider.java
index 24a0537..46d812c 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IActionProvider.java
@@ -1,17 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editparts;
+package org.eclipse.wst.xsd.adt.design.editparts.model;
-public interface IFeedbackHandler
+
+
+public interface IActionProvider
{
- public void addFeedback();
- public void removeFeedback();
-}
\ No newline at end of file
+ public String[] getActions(Object object);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IFeedbackHandler.java
similarity index 81%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IFeedbackHandler.java
index 24a0537..a8f6ca3 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IFeedbackHandler.java
@@ -1,17 +1,17 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editparts;
+package org.eclipse.wst.xsd.adt.design.editparts.model;
public interface IFeedbackHandler
{
public void addFeedback();
public void removeFeedback();
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/ReferencedTypeColumn.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/ReferencedTypeColumn.java
new file mode 100644
index 0000000..761a59a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/ReferencedTypeColumn.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editparts.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+public class ReferencedTypeColumn extends AbstractModelCollection
+{
+ List listenerList = new ArrayList();
+ InternalListener internalListener = new InternalListener();
+
+ // todo... really this this model object should listen
+ // to the parent of the IType
+ //
+ public ReferencedTypeColumn(IADTObject model)
+ {
+ super(model, "ReferencedTypeColumn");
+ model.registerListener(internalListener);
+ internalListener.recomputeSubListeners();
+ }
+
+ public List getChildren()
+ {
+ List result = new ArrayList();
+ if (model instanceof IStructure)
+ {
+ IStructure structure = (IStructure)model;
+ for (Iterator i = structure.getFields().iterator(); i.hasNext(); )
+ {
+ IField field = (IField)i.next();
+ IType type = field.getType();
+ if (type != null) // && type.isComplexType())
+ {
+ if (!result.contains(type))
+ {
+ if (type.isFocusAllowed())
+ result.add(type);
+ }
+ }
+ }
+ }
+ else if (model instanceof IField)
+ {
+ IField field = (IField)model;
+ IType type = field.getType();
+ if (type != null) // && type.isComplexType())
+ {
+ if (type.isFocusAllowed())
+ result.add(type);
+ }
+ }
+ return result;
+ }
+
+ public void registerListener(IADTObjectListener listener)
+ {
+ listenerList.add(listener);
+ }
+
+ public void unregisterListener(IADTObjectListener listener)
+ {
+ listenerList.remove(listener);
+ }
+
+ protected void notifyListeners(Object changedObject, String property)
+ {
+ List clonedListenerList = new ArrayList();
+ clonedListenerList.addAll(listenerList);
+ for (Iterator i = clonedListenerList.iterator(); i.hasNext(); )
+ {
+ IADTObjectListener listener = (IADTObjectListener)i.next();
+ listener.propertyChanged(this, null);
+ }
+ }
+
+ protected class InternalListener implements IADTObjectListener
+ {
+ List fields = new ArrayList();
+
+ void recomputeSubListeners()
+ {
+ if (model instanceof IStructure)
+ {
+ // remove old ones
+ for (Iterator i = fields.iterator(); i.hasNext();)
+ {
+ IField field = (IField) i.next();
+ field.unregisterListener(this);
+ }
+ // add new ones
+ fields.clear();
+ IStructure complexType = (IStructure) model;
+ for (Iterator i = complexType.getFields().iterator(); i.hasNext();)
+ {
+ IField field = (IField) i.next();
+ fields.add(field);
+ field.registerListener(this);
+ }
+ }
+ }
+
+ public void propertyChanged(Object object, String property)
+ {
+ if (object == model)
+ {
+ // we need to update the fields we're listening too
+ // since these may have changed
+ recomputeSubListeners();
+ }
+ else if (object instanceof IField)
+ {
+ System.out.println("field changed!!! " + fields.size() + " " + object);
+ }
+ notifyListeners(object, property);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTDirectEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTDirectEditPolicy.java
new file mode 100644
index 0000000..d06be2d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTDirectEditPolicy.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editpolicies;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.editpolicies.DirectEditPolicy;
+import org.eclipse.gef.requests.DirectEditRequest;
+import org.eclipse.wst.xsd.adt.design.directedit.ComboBoxCellEditorManager;
+
+public class ADTDirectEditPolicy extends DirectEditPolicy
+{
+ protected ComboBoxCellEditorManager delegate;
+ protected IADTUpdateCommand command;
+
+ public ADTDirectEditPolicy()
+ {
+ super();
+ }
+
+
+ public void setUpdateCommand(IADTUpdateCommand command)
+ {
+ this.command = command;
+ }
+
+ protected void showCurrentEditValue(DirectEditRequest request)
+ {
+ getHostFigure().getUpdateManager().performUpdate();
+ }
+
+ protected Command getDirectEditCommand(DirectEditRequest request)
+ {
+ command.setRequest(request);
+ return (Command)command;
+ }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTSelectionFeedbackEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTSelectionFeedbackEditPolicy.java
new file mode 100644
index 0000000..4d391fb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTSelectionFeedbackEditPolicy.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.editpolicies;
+
+import org.eclipse.gef.editpolicies.SelectionEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IFeedbackHandler;
+
+public class ADTSelectionFeedbackEditPolicy extends SelectionEditPolicy
+{
+
+ public ADTSelectionFeedbackEditPolicy()
+ {
+ super();
+ }
+
+ protected void hideSelection()
+ {
+ if (getHost() instanceof IFeedbackHandler)
+ {
+ ((IFeedbackHandler) getHost()).removeFeedback();
+ }
+ }
+
+ protected void showSelection()
+ {
+ if (getHost() instanceof IFeedbackHandler)
+ {
+ ((IFeedbackHandler) getHost()).addFeedback();
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DirectEditPolicyDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/DirectEditPolicyDelegate.java
similarity index 83%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DirectEditPolicyDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/DirectEditPolicyDelegate.java
index b5cce8b..d4b33a1 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DirectEditPolicyDelegate.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/DirectEditPolicyDelegate.java
@@ -1,18 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editpolicies;
+package org.eclipse.wst.xsd.adt.design.editpolicies;
import org.eclipse.jface.viewers.CellEditor;
public interface DirectEditPolicyDelegate
{
public void performEdit(CellEditor cellEditor);
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/IADTUpdateCommand.java
similarity index 65%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/IADTUpdateCommand.java
index ff6e4db..56d9092 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/IADTUpdateCommand.java
@@ -1,18 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.model;
+package org.eclipse.wst.xsd.adt.design.editpolicies;
+import org.eclipse.gef.requests.DirectEditRequest;
-
-public interface ModelAdapterListener
-{
- public void propertyChanged(Object object, String property);
+public interface IADTUpdateCommand
+{
+ void setRequest(DirectEditRequest request);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SimpleDirectEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/SimpleDirectEditPolicy.java
similarity index 93%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SimpleDirectEditPolicy.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/SimpleDirectEditPolicy.java
index 531eef2..9363426 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SimpleDirectEditPolicy.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/SimpleDirectEditPolicy.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.graph.editpolicies;
+package org.eclipse.wst.xsd.adt.design.editpolicies;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.DirectEditPolicy;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IADTFigure.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IADTFigure.java
index 21a1f54..ce7b14b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IADTFigure.java
@@ -1,19 +1,22 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.EditPart;
-
-public interface PostLayoutManager
+public interface IADTFigure extends IFigure
{
- public void postLayout(IFigure figure);
+ void editPartAttached(EditPart owner);
+ void addSelectionFeedback();
+ void removeSelectionFeedback();
+ void refreshVisuals(Object model);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/ICompartmentFigure.java
similarity index 69%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/ICompartmentFigure.java
index 21a1f54..9eff72f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/ICompartmentFigure.java
@@ -1,19 +1,19 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
import org.eclipse.draw2d.IFigure;
-
-public interface PostLayoutManager
+public interface ICompartmentFigure extends IADTFigure
{
- public void postLayout(IFigure figure);
+ IFigure getContentPane();
+ IFigure getAnnotationPane();
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFieldFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFieldFigure.java
new file mode 100644
index 0000000..d310271
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFieldFigure.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.design.figures;
+
+import org.eclipse.draw2d.Label;
+
+
+public interface IFieldFigure extends IADTFigure
+{
+ Label getTypeLabel();
+ Label getNameLabel();
+ Label getNameAnnotationLabel();
+ Label getTypeAnnotationLabel();
+ void recomputeLayout();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFigureFactory.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFigureFactory.java
index 21a1f54..893222b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFigureFactory.java
@@ -1,19 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
-import org.eclipse.draw2d.IFigure;
-
-
-public interface PostLayoutManager
+public interface IFigureFactory
{
- public void postLayout(IFigure figure);
+ IFieldFigure createFieldFigure(Object model);
+ IStructureFigure createStructureFigure(Object model);
+ ICompartmentFigure createCompartmentFigure(Object model);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IStructureFigure.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IStructureFigure.java
index 21a1f54..7e7cbc5 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IStructureFigure.java
@@ -1,19 +1,22 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
-
-public interface PostLayoutManager
+public interface IStructureFigure extends IADTFigure
{
- public void postLayout(IFigure figure);
+ IFigure getContentPane();
+ Label getNameLabel();
+ boolean hitTestHeader(Point point);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/ComponentReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/ComponentReferenceEditManager.java
new file mode 100644
index 0000000..21b9ded
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/ComponentReferenceEditManager.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.edit;
+
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentDescriptionProvider;
+
+public interface ComponentReferenceEditManager
+{
+ public IComponentDialog getBrowseDialog();
+ public IComponentDialog getNewDialog();
+ public void modifyComponentReference(Object referencingObject, ComponentSpecification referencedComponent);
+ public IComponentDescriptionProvider getComponentDescriptionProvider();
+
+ public ComponentSpecification[] getQuickPicks();
+ public ComponentSpecification[] getHistory();
+ public void addToHistory(ComponentSpecification component);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/IComponentDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/IComponentDialog.java
new file mode 100644
index 0000000..f18e8f0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/IComponentDialog.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.edit;
+
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+
+public interface IComponentDialog {
+
+ /*
+ * Set the Object being set
+ */
+ public void setInitialSelection(ComponentSpecification componentSpecification);
+
+ /*
+ * Return the Object which should be used as the type.
+ */
+ public ComponentSpecification getSelectedComponent();
+
+ /*
+ * Used to open the Dialog
+ */
+ public int createAndOpen();
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTMultiPageEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTMultiPageEditor.java
new file mode 100644
index 0000000..80e75d9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTMultiPageEditor.java
@@ -0,0 +1,421 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.editor;
+
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.MouseWheelHandler;
+import org.eclipse.gef.MouseWheelZoomHandler;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.commands.CommandStackListener;
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.UpdateAction;
+import org.eclipse.gef.ui.actions.ZoomInAction;
+import org.eclipse.gef.ui.actions.ZoomOutAction;
+import org.eclipse.gef.ui.parts.SelectionSynchronizer;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.design.DesignViewGraphicalViewer;
+import org.eclipse.wst.xsd.adt.design.editparts.ADTEditPartFactory;
+import org.eclipse.wst.xsd.adt.design.editparts.RootEditPart;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.outline.ADTContentOutlinePage;
+import org.eclipse.wst.xsd.adt.outline.ADTContentOutlineProvider;
+import org.eclipse.wst.xsd.adt.outline.ADTLabelProvider;
+
+/**
+ * </ul>
+ * <li>page 0 graph
+ * <li>page 1 source
+ * </ul>
+ */
+public abstract class ADTMultiPageEditor extends MultiPageEditorPart implements IResourceChangeListener, CommandStackListener, ITabbedPropertySheetPageContributor
+{
+ protected IContentOutlinePage fOutlinePage;
+ protected long lastModificationStamp;
+ protected DesignViewGraphicalViewer graphicalViewer;
+
+ protected IModel model;
+ private DefaultEditDomain editDomain;
+ private SelectionSynchronizer synchronizer;
+ private ActionRegistry actionRegistry;
+ private List selectionActions = new ArrayList();
+ private List stackActions = new ArrayList();
+ private List propertyActions = new ArrayList();
+ protected ADTSelectionManager selectionManager;
+
+ /**
+ * Creates a multi-page editor example.
+ */
+ public ADTMultiPageEditor()
+ {
+ super();
+ DefaultEditDomain defaultGEFEditDomain = new DefaultEditDomain(this);
+ setEditDomain(defaultGEFEditDomain);
+ }
+
+ public String getContributorId()
+ {
+ return "org.eclipse.wst.xsd.editor";
+ }
+
+
+ public ADTSelectionManager getSelectionManager()
+ {
+ if (selectionManager == null)
+ {
+ selectionManager = new ADTSelectionManager(this);
+ }
+ return selectionManager;
+ }
+
+ protected void createGraphPage()
+ {
+ Composite parent = new Composite(getContainer(), SWT.NONE);
+ parent.setLayout(new FillLayout());
+
+ graphicalViewer = new DesignViewGraphicalViewer(this, getSelectionProvider());//getSelectionManager(), xsdModelAdapterFactory);
+ graphicalViewer.createControl(parent);
+ getEditDomain().addViewer(graphicalViewer);
+
+ configureGraphicalViewer();
+ hookGraphicalViewer();
+ initializeGraphicalViewer();
+ int index = addPage(parent);
+ setPageText(index, "Design");
+ }
+
+ protected ADTSelectionManager selectionProvider;
+ public ADTSelectionManager getSelectionProvider()
+ {
+ return selectionProvider;
+ }
+
+ /**
+ * Creates the pages of the multi-page editor.
+ */
+ protected void createPages()
+ {
+ model = buildModel((IFileEditorInput)getEditorInput());
+
+ selectionProvider = getSelectionManager();
+ getEditorSite().setSelectionProvider(selectionProvider);
+
+ createGraphPage();
+ }
+
+ /**
+ * The <code>MultiPageEditorPart</code> implementation of this
+ * <code>IWorkbenchPart</code> method disposes all nested editors.
+ * Subclasses may extend.
+ */
+ public void dispose()
+ {
+ getCommandStack().removeCommandStackListener(this);
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+ getActionRegistry().dispose();
+ super.dispose();
+ }
+
+ /**
+ * Saves the multi-page editor's document.
+ */
+ public void doSave(IProgressMonitor monitor)
+ {
+ getEditor(1).doSave(monitor);
+ getCommandStack().markSaveLocation();
+ }
+
+ /**
+ * Saves the multi-page editor's document as another file. Also updates the
+ * text for page 0's tab, and updates this multi-page editor's input to
+ * correspond to the nested editor's.
+ */
+ public void doSaveAs()
+ {
+ IEditorPart editor = getEditor(0);
+ editor.doSaveAs();
+ setPageText(0, editor.getTitle());
+ setInput(editor.getEditorInput());
+ }
+
+ /*
+ * (non-Javadoc) Method declared on IEditorPart
+ */
+ public void gotoMarker(IMarker marker)
+ {
+ setActivePage(0);
+ IDE.gotoMarker(getEditor(0), marker);
+ }
+
+ /**
+ * The <code>MultiPageEditorExample</code> implementation of this method
+ * checks that the input is an instance of <code>IFileEditorInput</code>.
+ */
+ public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException
+ {
+ if (!(editorInput instanceof IFileEditorInput))
+ throw new PartInitException("Invalid Input: Must be IFileEditorInput");
+ super.init(site, editorInput);
+
+ getCommandStack().addCommandStackListener(this);
+ initializeActionRegistry();
+
+ String title = null;
+ if (getEditorInput() != null) {
+ title = getEditorInput().getName();
+ }
+ setPartName(title);
+ }
+
+ /*
+ * (non-Javadoc) Method declared on IEditorPart.
+ */
+ public boolean isSaveAsAllowed()
+ {
+ return true;
+ }
+
+ /**
+ * Calculates the contents of page 2 when the it is activated.
+ */
+ protected void pageChange(int newPageIndex)
+ {
+ super.pageChange(newPageIndex);
+ if (newPageIndex == 1)
+ {
+ }
+ }
+
+ abstract public IModel buildModel(IFileEditorInput editorInput);
+
+ protected void initializeActionRegistry()
+ {
+ createActions();
+ }
+
+ protected void createActions()
+ {
+ ActionRegistry registry = getActionRegistry();
+
+ BaseSelectionAction action = new SetInputToGraphView(this);
+ action.setSelectionProvider(getSelectionManager());
+ registry.registerAction(action);
+ }
+
+
+ public IModel getModel()
+ {
+ return model;
+ }
+
+ //protected XSDModelAdapterFactoryImpl xsdModelAdapterFactory;
+ //protected XSDAdapterFactoryLabelProvider adapterFactoryLabelProvider;
+
+ public Object getAdapter(Class type)
+ {
+ Object result = null;
+ if (type == ZoomManager.class)
+ return graphicalViewer.getProperty(ZoomManager.class.toString());
+
+ if (type == ISelectionProvider.class)
+ {
+ result = getSelectionManager();
+ }
+ /*
+ if (type == org.eclipse.ui.views.properties.IPropertySheetPage.class)
+ {
+ // PropertySheetPage page = new PropertySheetPage();
+ // page.setRootEntry(new UndoablePropertySheetEntry(getCommandStack()));
+ XSDTabbedPropertiesPage page = new XSDTabbedPropertiesPage(this);
+ return page;
+ }*/
+ if (type == GraphicalViewer.class)
+ return graphicalViewer;
+ if (type == CommandStack.class)
+ return getCommandStack();
+ if (type == ActionRegistry.class)
+ return getActionRegistry();
+ if (type == EditPart.class && graphicalViewer != null)
+ return graphicalViewer.getRootEditPart();
+ if (type == IFigure.class && graphicalViewer != null)
+ return ((GraphicalEditPart) graphicalViewer.getRootEditPart()).getFigure();
+
+ if (type == IContentOutlinePage.class)
+ {
+ if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed())
+ {
+ ADTContentOutlinePage outlinePage = new ADTContentOutlinePage(this);
+ ADTContentOutlineProvider adtContentProvider = new ADTContentOutlineProvider();
+ outlinePage.setContentProvider(adtContentProvider);
+ ADTLabelProvider adtLabelProvider = new ADTLabelProvider();
+ outlinePage.setLabelProvider(adtLabelProvider);
+ outlinePage.setModel(getModel());
+
+ fOutlinePage = outlinePage;
+ }
+ return fOutlinePage;
+ }
+
+ return super.getAdapter(type);
+ }
+
+ protected DefaultEditDomain getEditDomain()
+ {
+ return editDomain;
+ }
+
+
+ protected void configureGraphicalViewer()
+ {
+ graphicalViewer.getControl().setBackground(ColorConstants.listBackground);
+
+ // Set the root edit part
+ // ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart();
+ RootEditPart root = new RootEditPart();
+
+ List zoomLevels = new ArrayList(3);
+ zoomLevels.add(ZoomManager.FIT_ALL);
+ zoomLevels.add(ZoomManager.FIT_WIDTH);
+ zoomLevels.add(ZoomManager.FIT_HEIGHT);
+ root.getZoomManager().setZoomLevelContributions(zoomLevels);
+
+ IAction zoomIn = new ZoomInAction(root.getZoomManager());
+ IAction zoomOut = new ZoomOutAction(root.getZoomManager());
+ getActionRegistry().registerAction(zoomIn);
+ getActionRegistry().registerAction(zoomOut);
+
+ getSite().getKeyBindingService().registerAction(zoomIn);
+ getSite().getKeyBindingService().registerAction(zoomOut);
+
+ //ConnectionLayer connectionLayer = (ConnectionLayer) root.getLayer(LayerConstants.CONNECTION_LAYER);
+ //connectionLayer.setConnectionRouter(new BendpointConnectionRouter());
+ IFigure feedbackLayer = root.getLayer(LayerConstants.FEEDBACK_LAYER);
+
+ //connectionLayer.setConnectionRouter(new ShortestPathConnectionRouter(connectionLayer));
+ // connectionLayer.setVisible(false);
+
+ // Zoom
+ ZoomManager manager = (ZoomManager) graphicalViewer.getProperty(ZoomManager.class.toString());
+ if (manager != null)
+ manager.setZoom(1.0);
+ // Scroll-wheel Zoom
+ graphicalViewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.CTRL), MouseWheelZoomHandler.SINGLETON);
+
+
+
+ graphicalViewer.setRootEditPart(root);
+ graphicalViewer.setEditPartFactory(new ADTEditPartFactory());
+ }
+
+ protected void hookGraphicalViewer()
+ {
+ getSelectionSynchronizer().addViewer(graphicalViewer);
+ getSelectionManager().addSelectionChangedListener(graphicalViewer);
+ }
+
+ protected SelectionSynchronizer getSelectionSynchronizer()
+ {
+ if (synchronizer == null)
+ synchronizer = new SelectionSynchronizer();
+ return synchronizer;
+ }
+
+ protected void initializeGraphicalViewer()
+ {
+ graphicalViewer.setContents(model);
+ }
+
+ protected void setEditDomain(DefaultEditDomain ed)
+ {
+ this.editDomain = ed;
+ }
+
+ protected CommandStack getCommandStack()
+ {
+ return getEditDomain().getCommandStack();
+ }
+
+ protected ActionRegistry getActionRegistry()
+ {
+ if (actionRegistry == null)
+ actionRegistry = new ActionRegistry();
+ return actionRegistry;
+ }
+
+ public void commandStackChanged(EventObject event)
+ {
+ updateActions(stackActions);
+ firePropertyChange(PROP_DIRTY);
+ }
+
+ /**
+ * From GEF GraphicalEditor A convenience method for updating a set of actions
+ * defined by the given List of action IDs. The actions are found by looking
+ * up the ID in the {@link #getActionRegistry() action registry}. If the
+ * corresponding action is an {@link UpdateAction}, it will have its
+ * <code>update()</code> method called.
+ *
+ * @param actionIds
+ * the list of IDs to update
+ */
+ protected void updateActions(List actionIds)
+ {
+ ActionRegistry registry = getActionRegistry();
+ Iterator iter = actionIds.iterator();
+ while (iter.hasNext())
+ {
+ IAction action = registry.getAction(iter.next());
+ if (action instanceof UpdateAction)
+ ((UpdateAction) action).update();
+ }
+ }
+
+ /**
+ * Returns <code>true</code> if the command stack is dirty
+ *
+ * @see org.eclipse.ui.ISaveablePart#isDirty()
+ */
+ public boolean isDirty()
+ {
+ super.isDirty();
+ return getCommandStack().isDirty();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDSelectionManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTSelectionManager.java
similarity index 79%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDSelectionManager.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTSelectionManager.java
index 22f0354..5b67d6d 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDSelectionManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTSelectionManager.java
@@ -1,14 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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;
+package org.eclipse.wst.xsd.adt.editor;
import java.util.ArrayList;
import java.util.Iterator;
@@ -18,10 +18,17 @@
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.MultiPageSelectionProvider;
-public class XSDSelectionManager implements ISelectionProvider, ISelectionChangedListener
+public class ADTSelectionManager extends MultiPageSelectionProvider implements ISelectionProvider, ISelectionChangedListener
{
+ public ADTSelectionManager(MultiPageEditorPart multiPageEditor)
+ {
+ super(multiPageEditor);
+ }
+
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
*/
@@ -35,6 +42,7 @@
*/
public ISelection getSelection()
{
+// System.out.println("getSelection() = " + currentSelection);
return currentSelection;
}
@@ -70,9 +78,14 @@
protected ISelection currentSelection;
protected boolean enableNotify = true;
+ public boolean getEnableNotify()
+ {
+ return enableNotify;
+ }
+
public void setSelection(ISelection selection, ISelectionProvider source)
{
-// System.out.println("SelectionManager.setSelection() " + selection + ", " + source);
+ //System.out.println("ADTSelectionManager.setSelection(" + selection + ")");
if (enableNotify)
{
currentSelection = selection;
@@ -87,6 +100,10 @@
listener.selectionChanged(event);
}
}
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
finally
{
enableNotify = true;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObject.java
similarity index 65%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObject.java
index 21a1f54..77d6b5f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObject.java
@@ -1,19 +1,17 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.figures;
+package org.eclipse.wst.xsd.adt.facade;
-import org.eclipse.draw2d.IFigure;
-
-
-public interface PostLayoutManager
+public interface IADTObject
{
- public void postLayout(IFigure figure);
+ public void registerListener(IADTObjectListener listener);
+ public void unregisterListener(IADTObjectListener listener);
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObjectListener.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObjectListener.java
index 24a0537..5fafdbf 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObjectListener.java
@@ -1,17 +1,16 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editparts;
+package org.eclipse.wst.xsd.adt.facade;
-public interface IFeedbackHandler
+public interface IADTObjectListener
{
- public void addFeedback();
- public void removeFeedback();
-}
\ No newline at end of file
+ public void propertyChanged(Object object, String property);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IComplexType.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IComplexType.java
index 24a0537..3f3c4ea 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IComplexType.java
@@ -1,17 +1,17 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editparts;
+package org.eclipse.wst.xsd.adt.facade;
-public interface IFeedbackHandler
+
+
+public interface IComplexType extends IType, IStructure
{
- public void addFeedback();
- public void removeFeedback();
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IField.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IField.java
new file mode 100644
index 0000000..a0c85d2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IField.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.facade;
+
+import org.eclipse.gef.commands.Command;
+
+public interface IField extends IADTObject
+{
+ String getKind();
+ String getName();
+ String getTypeName();
+ String getTypeNameQualifier();
+ IModel getModel();
+ IType getType();
+ IComplexType getContainerType();
+ int getMinOccurs();
+ int getMaxOccurs();
+ boolean isGlobal();
+ boolean isReadOnly();
+
+ Command getUpdateMinOccursCommand(int minOccurs);
+ Command getUpdateMaxOccursCommand(int maxOccurs);
+ Command getUpdateTypeNameCommand(String typeName, String quailifier);
+ Command getUpdateNameCommand(String name);
+ Command getDeleteCommand();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IModel.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IModel.java
index 24a0537..7e904b2 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IModel.java
@@ -1,17 +1,18 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.graph.editparts;
+package org.eclipse.wst.xsd.adt.facade;
-public interface IFeedbackHandler
+import java.util.List;
+
+public interface IModel extends IADTObject
{
- public void addFeedback();
- public void removeFeedback();
-}
\ No newline at end of file
+ List getTypes();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IStructure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IStructure.java
new file mode 100644
index 0000000..3e0e012
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IStructure.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.facade;
+
+import java.util.List;
+import org.eclipse.gef.commands.Command;
+
+public interface IStructure extends IADTObject
+{
+ String getName();
+ List getFields();
+ IModel getModel();
+ Command getAddNewFieldCommand(String fieldKind);
+ Command getDeleteCommand();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IType.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IType.java
new file mode 100644
index 0000000..1cbe3aa
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IType.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.facade;
+
+import org.eclipse.gef.commands.Command;
+
+public interface IType extends IADTObject
+{
+ IType getSuperType();
+ String getName();
+ String getQualifier();
+ boolean isComplexType();
+ boolean isReadOnly();
+ boolean isFocusAllowed();
+
+ Command getUpdateNameCommand(String newName);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlinePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlinePage.java
new file mode 100644
index 0000000..0765069
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlinePage.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.outline;
+
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.part.MultiPageSelectionProvider;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.wst.xsd.adt.design.DesignViewContextMenuProvider;
+import org.eclipse.wst.xsd.adt.editor.ADTMultiPageEditor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public class ADTContentOutlinePage extends ContentOutlinePage
+{
+ protected ADTMultiPageEditor editor;
+ protected int level = 0;
+ protected Object model;
+ protected ITreeContentProvider contentProvider;
+ protected ILabelProvider labelProvider;
+ protected MultiPageSelectionProvider selectionManager;
+ protected SelectionManagerSelectionChangeListener selectionManagerSelectionChangeListener = new SelectionManagerSelectionChangeListener();
+ protected TreeSelectionChangeListener treeSelectionChangeListener = new TreeSelectionChangeListener();
+
+ /**
+ *
+ */
+ public ADTContentOutlinePage(ADTMultiPageEditor editor)
+ {
+ super();
+ this.editor = editor;
+ }
+
+ public void setModel(Object newModel)
+ {
+ model = newModel;
+ }
+
+ public void setContentProvider(ITreeContentProvider contentProvider)
+ {
+ this.contentProvider = contentProvider;
+ }
+
+ public void setLabelProvider(ILabelProvider labelProvider)
+ {
+ this.labelProvider = labelProvider;
+ }
+
+ // expose
+ public TreeViewer getTreeViewer()
+ {
+ return super.getTreeViewer();
+ }
+
+ public void createControl(Composite parent)
+ {
+ super.createControl(parent);
+ getTreeViewer().setContentProvider(contentProvider);
+ getTreeViewer().setLabelProvider(labelProvider);
+ getTreeViewer().setInput(model);
+ getTreeViewer().addSelectionChangedListener(this);
+ MenuManager menuManager = new MenuManager("#popup");//$NON-NLS-1$
+ menuManager.setRemoveAllWhenShown(true);
+ Menu menu = menuManager.createContextMenu(getTreeViewer().getControl());
+ getTreeViewer().getControl().setMenu(menu);
+ setSelectionManager(editor.getSelectionManager());
+
+ // Create menu...for now reuse graph's. Note edit part viewer = null
+ DesignViewContextMenuProvider menuProvider = new DesignViewContextMenuProvider(editor, null, (ISelectionProvider)editor.getSelectionManager());
+ menuManager.addMenuListener(menuProvider);
+ getSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.outline", menuManager, editor.getSelectionManager());
+
+ // enable popupMenus extension
+ // getSite().registerContextMenu("org.eclipse.wst.xsdeditor.ui.popup.outline",
+ // menuManager, xsdEditor.getSelectionManager());
+
+ // cs... why are we doing this from the outline view?
+ //
+ // xsdTextEditor.getXSDEditor().getSelectionManager().setSelection(new
+ // StructuredSelection(xsdTextEditor.getXSDSchema()));
+ // drill down from outline view
+ getTreeViewer().getControl().addMouseListener(new MouseAdapter()
+ {
+ public void mouseDoubleClick(MouseEvent e)
+ {
+ ISelection iSelection = getTreeViewer().getSelection();
+ if (iSelection instanceof StructuredSelection)
+ {
+ StructuredSelection selection = (StructuredSelection) iSelection;
+ Object obj = selection.getFirstElement();
+ if (obj instanceof XSDConcreteComponent)
+ {
+ XSDConcreteComponent comp = (XSDConcreteComponent) obj;
+ if (comp.getContainer() instanceof XSDSchema)
+ {
+ // getXSDEditor().getGraphViewer().setInput(obj);
+ }
+ }
+ }
+
+ }
+ });
+ }
+
+ class XSDKeyListener extends KeyAdapter
+ {
+ }
+
+ public void dispose()
+ {
+ contentProvider.dispose();
+ super.dispose();
+ }
+
+ public void setExpandToLevel(int i)
+ {
+ level = i;
+ }
+
+ public void setInput(Object value)
+ {
+ getTreeViewer().setInput(value);
+ getTreeViewer().expandToLevel(level);
+ }
+
+ // public ISelection getSelection()
+ // {
+ // if (getTreeViewer() == null)
+ // return StructuredSelection.EMPTY;
+ // return getTreeViewer().getSelection();
+ // }
+ public void setSelectionManager(MultiPageSelectionProvider newSelectionManager)
+ {
+ TreeViewer treeViewer = getTreeViewer();
+ // disconnect from old one
+ if (selectionManager != null)
+ {
+ selectionManager.removeSelectionChangedListener(selectionManagerSelectionChangeListener);
+ treeViewer.removeSelectionChangedListener(treeSelectionChangeListener);
+ }
+ selectionManager = newSelectionManager;
+ // connect to new one
+ if (selectionManager != null)
+ {
+ selectionManager.addSelectionChangedListener(selectionManagerSelectionChangeListener);
+ treeViewer.addSelectionChangedListener(treeSelectionChangeListener);
+ }
+ }
+
+ class SelectionManagerSelectionChangeListener implements ISelectionChangedListener
+ {
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ if (event.getSelectionProvider() != getTreeViewer())
+ {
+ getTreeViewer().setSelection(event.getSelection(), true);
+ }
+ }
+ }
+
+ class TreeSelectionChangeListener implements ISelectionChangedListener
+ {
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ if (selectionManager != null)
+ {
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection)
+ {
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+ Object o = structuredSelection.getFirstElement();
+ if (o != null)
+ {
+ selectionManager.setSelection(structuredSelection);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlineProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlineProvider.java
new file mode 100644
index 0000000..0264e9c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlineProvider.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.outline;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+
+public class ADTContentOutlineProvider implements ITreeContentProvider, IADTObjectListener
+{
+ protected Viewer viewer = null;
+ protected Object oldInput, newInput;
+
+ public ADTContentOutlineProvider()
+ {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object parentElement)
+ {
+ if (parentElement instanceof ITreeElement)
+ {
+ Object[] children = ((ITreeElement) parentElement).getChildren();
+ if (children != null)
+ {
+ int length = children.length;
+ for (int i = 0; i < length; i++)
+ {
+ Object child = children[i];
+ if (child instanceof IADTObject)
+ {
+ ((IADTObject) child).registerListener(this);
+ }
+ }
+ }
+ return children;
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element)
+ {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element)
+ {
+ if (element instanceof ITreeElement)
+ {
+ return ((ITreeElement) element).hasChildren();
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement)
+ {
+ return getChildren(inputElement);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose()
+ {
+ Object input = viewer.getInput();
+ if (input instanceof IADTObject)
+ {
+ removeListener((IADTObject) input);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ this.viewer = viewer;
+ this.oldInput = oldInput;
+ this.newInput = newInput;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.xsd.adt.facade.IADTObjectListener#propertyChanged(java.lang.Object, java.lang.String)
+ */
+ public void propertyChanged(Object object, String property)
+ {
+ if (viewer instanceof TreeViewer)
+ {
+ TreeViewer treeViewer = (TreeViewer) viewer;
+ treeViewer.refresh(object);
+ treeViewer.reveal(object);
+ }
+ }
+
+ /**
+ * @param model
+ */
+ private void removeListener(IADTObject model)
+ {
+ model.unregisterListener(this);
+ Object[] children = getChildren(model);
+ if (children != null)
+ {
+ int length = children.length;
+ for (int i = 0; i < length; i++)
+ {
+ Object child = children[i];
+ if (child instanceof IADTObject)
+ {
+ removeListener((IADTObject) child);
+ }
+ }
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTLabelProvider.java
new file mode 100644
index 0000000..d662507
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTLabelProvider.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.outline;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+
+public class ADTLabelProvider implements ILabelProvider
+{
+
+ public ADTLabelProvider()
+ {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage(Object element)
+ {
+ if (element instanceof ITreeElement)
+ {
+ return ((ITreeElement)element).getImage();
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+ */
+ public String getText(Object element)
+ {
+ if (element instanceof ITreeElement)
+ {
+ return ((ITreeElement)element).getText();
+ }
+ return "";
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void addListener(ILabelProviderListener listener)
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+ */
+ public void dispose()
+ {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
+ */
+ public boolean isLabelProperty(Object element, String property)
+ {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+ */
+ public void removeListener(ILabelProviderListener listener)
+ {
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ITreeElement.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ITreeElement.java
new file mode 100644
index 0000000..49304a7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ITreeElement.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.outline;
+
+import org.eclipse.swt.graphics.Image;
+
+public interface ITreeElement
+{
+ public final static ITreeElement[] EMPTY_LIST = {};
+ ITreeElement[] getChildren();
+ ITreeElement getParent();
+ boolean hasChildren();
+ String getText();
+ Image getImage();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/properties/ADTTabbedPropertySheetPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/properties/ADTTabbedPropertySheetPage.java
new file mode 100644
index 0000000..d31d2ee
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/properties/ADTTabbedPropertySheetPage.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.adt.properties;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+
+public class ADTTabbedPropertySheetPage extends TabbedPropertySheetPage
+{
+ public ADTTabbedPropertySheetPage(ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor)
+ {
+ super(tabbedPropertySheetPageContributor);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+
+ Object selected = ((StructuredSelection)selection).getFirstElement();
+// if (selected instanceof EditPart)
+// {
+// Object model = ((EditPart)selected).getModel();
+// selection = new StructuredSelection(model);
+// }
+ super.selectionChanged(part, selection);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeDeclarationAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeDeclarationAction.java
new file mode 100644
index 0000000..f5b054e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeDeclarationAction.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDAttributeDeclarationCommand;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDAttributeDeclarationAction extends XSDBaseAction
+{
+ public static String ID = "AddXSDAttributeAction";
+
+ public AddXSDAttributeDeclarationAction(IWorkbenchPart part)
+ {
+ super(part);
+ setText("Add Attribute");
+ setId(ID);
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDBaseAdapter)
+ {
+ selection = ((XSDBaseAdapter) selection).getTarget();
+ }
+ AddXSDAttributeDeclarationCommand command = null;
+ if (selection instanceof XSDComplexTypeDefinition)
+ {
+ command = new AddXSDAttributeDeclarationCommand("Add Attribute", (XSDComplexTypeDefinition) selection);
+ getCommandStack().execute(command);
+ }
+ else if (selection instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse xsdAttributeUse = (XSDAttributeUse) selection;
+ XSDConcreteComponent parent = null;
+ XSDComplexTypeDefinition ct = null;
+ for (parent = xsdAttributeUse.getContainer(); parent != null;)
+ {
+ if (parent instanceof XSDComplexTypeDefinition)
+ {
+ ct = (XSDComplexTypeDefinition) parent;
+ break;
+ }
+ parent = parent.getContainer();
+ }
+ if (ct != null)
+ {
+ command = new AddXSDAttributeDeclarationCommand("Add Attribute", ct);
+ getCommandStack().execute(command);
+ }
+ }
+ else if (selection instanceof XSDAttributeGroupDefinition)
+ {
+ command = new AddXSDAttributeDeclarationCommand("Add Attribute", (XSDAttributeGroupDefinition)selection);
+ getCommandStack().execute(command);
+ }
+ else if (selection instanceof XSDSchema)
+ {
+ command = new AddXSDAttributeDeclarationCommand("Add Attribute", (XSDSchema)selection);
+ getCommandStack().execute(command);
+ }
+
+ if (command != null)
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+ if (adapter != null)
+ provider.setSelection(new StructuredSelection(adapter));
+ }
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeGroupDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeGroupDefinitionAction.java
new file mode 100644
index 0000000..29daef2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeGroupDefinitionAction.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDAttributeGroupDefinitionCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDAttributeGroupDefinitionAction extends XSDBaseAction
+{
+ public static String ID = "AddXSDAttributeGroupDefinitionAction";
+
+ public AddXSDAttributeGroupDefinitionAction(IWorkbenchPart part)
+ {
+ super(part);
+ setText("Add Attribute Group");
+ setId(ID);
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDBaseAdapter)
+ {
+ selection = ((XSDBaseAdapter) selection).getTarget();
+ }
+
+ AddXSDAttributeGroupDefinitionCommand command = null;
+ if (selection instanceof XSDComplexTypeDefinition)
+ {
+ command = new AddXSDAttributeGroupDefinitionCommand("Add Attribute Group Ref", (XSDComplexTypeDefinition) selection);
+ getCommandStack().execute(command);
+ }
+ else if (selection instanceof XSDSchema)
+ {
+ command = new AddXSDAttributeGroupDefinitionCommand("Add Attribute Group Definition", (XSDSchema) selection);
+ getCommandStack().execute(command);
+ }
+
+ if (command != null)
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+ if (adapter != null)
+ provider.setSelection(new StructuredSelection(adapter));
+ }
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDComplexTypeDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDComplexTypeDefinitionAction.java
new file mode 100644
index 0000000..2c9cb5e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDComplexTypeDefinitionAction.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDComplexTypeDefinitionCommand;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDComplexTypeDefinitionAction extends XSDBaseAction
+{
+ public static final String ID = "org.eclipse.wst.xsd.editor.AddXSDComplexTypeDefinitionAction";
+
+ public AddXSDComplexTypeDefinitionAction(IWorkbenchPart part)
+ {
+ super(part);
+ setText("Add Complex Type");
+ setId(ID);
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDBaseAdapter)
+ {
+ selection = ((XSDBaseAdapter) selection).getTarget();
+ }
+
+ if (selection instanceof XSDSchema)
+ {
+ AddXSDComplexTypeDefinitionCommand command = new AddXSDComplexTypeDefinitionCommand("Add Complex Type", (XSDSchema) selection);
+ getCommandStack().execute(command);
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+ if (adapter != null)
+ provider.setSelection(new StructuredSelection(adapter));
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDElementAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDElementAction.java
new file mode 100644
index 0000000..cb0482d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDElementAction.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDElementCommand;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDSchema;
+
+//revisit this and see if we can reuse AddFieldAction??
+
+public class AddXSDElementAction extends XSDBaseAction
+{
+ public static String ID = "org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction";
+ public static String REF_ID = "org.eclipse.wst.xsd.ui.common.actions.AddXSDElementReferenceAction";
+ boolean isReference;
+
+ public AddXSDElementAction(IWorkbenchPart part, String id, String label, boolean isReference)
+ {
+ super(part);
+ setText(label);
+ setId(id);
+ this.isReference = isReference;
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDBaseAdapter)
+ {
+ selection = ((XSDBaseAdapter) selection).getTarget();
+ }
+ AddXSDElementCommand command = null;
+ if (selection instanceof XSDComplexTypeDefinition)
+ {
+ command = new AddXSDElementCommand(getText(), (XSDComplexTypeDefinition) selection);
+ command.setReference(isReference);
+ getCommandStack().execute(command);
+ }
+ else if (selection instanceof XSDModelGroupDefinition)
+ {
+ command = new AddXSDElementCommand(getText(), (XSDModelGroupDefinition) selection);
+ command.setReference(isReference);
+ getCommandStack().execute(command);
+ }
+ else if (selection instanceof XSDSchema)
+ {
+ command = new AddXSDElementCommand(getText(), (XSDSchema) selection);
+ getCommandStack().execute(command);
+ }
+ else if (selection instanceof XSDModelGroup)
+ {
+ XSDModelGroup modelGroup = (XSDModelGroup) selection;
+ XSDConcreteComponent component = modelGroup.getContainer();
+ XSDComplexTypeDefinition ct = null;
+ while (component != null)
+ {
+ if (component instanceof XSDComplexTypeDefinition)
+ {
+ ct = (XSDComplexTypeDefinition) component;
+ break;
+ }
+ component = component.getContainer();
+ }
+
+ if (ct != null)
+ {
+ command = new AddXSDElementCommand(getText(), (XSDModelGroup) selection, ct);
+ }
+ else
+ {
+ command = new AddXSDElementCommand(getText(), (XSDModelGroup) selection);
+ }
+ command.setReference(isReference);
+ getCommandStack().execute(command);
+ }
+ else if (selection instanceof XSDElementDeclaration || selection instanceof XSDAttributeUse)
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent) selection;
+ XSDConcreteComponent parent = null;
+ XSDComplexTypeDefinition ct = null;
+ for (parent = xsdConcreteComponent.getContainer(); parent != null; )
+ {
+ if (parent instanceof XSDComplexTypeDefinition)
+ {
+ ct = (XSDComplexTypeDefinition)parent;
+ break;
+ }
+ parent = parent.getContainer();
+ }
+ if (ct != null)
+ {
+ command = new AddXSDElementCommand(getText(), ct);
+ command.setReference(isReference);
+ getCommandStack().execute(command);
+ }
+ }
+
+ if (command != null)
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+ if (adapter != null)
+ provider.setSelection(new StructuredSelection(adapter));
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupAction.java
new file mode 100644
index 0000000..4fc6840
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupAction.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDModelGroupCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+
+public class AddXSDModelGroupAction extends XSDBaseAction
+{
+ public static String SEQUENCE_ID = "AddXSDSequenceModelGroupAction";
+ public static String CHOICE_ID = "AddXSDChoiceModelGroupAction";
+ public static String ALL_ID = "AddXSDAllModelGroupAction";
+ XSDCompositor xsdCompositor;
+
+ public AddXSDModelGroupAction(IWorkbenchPart part, XSDCompositor compositor, String ID)
+ {
+ super(part);
+ setText(getLabel(compositor));
+ setId(ID);
+ this.xsdCompositor = compositor;
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+ if (selection instanceof XSDBaseAdapter)
+ {
+ XSDConcreteComponent xsdComponent = (XSDConcreteComponent) ((XSDBaseAdapter) selection).getTarget();
+ AddXSDModelGroupCommand command = null;
+ if (xsdComponent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) xsdComponent;
+
+ command = new AddXSDModelGroupCommand(getLabel(xsdCompositor), xsdElementDeclaration, xsdCompositor);
+ getCommandStack().execute(command);
+ }
+ else if (xsdComponent instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdModelGroup = (XSDModelGroup) xsdComponent;
+
+ command = new AddXSDModelGroupCommand(getLabel(xsdCompositor), xsdModelGroup, xsdCompositor);
+ getCommandStack().execute(command);
+ }
+ else if (xsdComponent instanceof XSDComplexTypeDefinition)
+ {
+ command = new AddXSDModelGroupCommand(getLabel(xsdCompositor), xsdComponent, xsdCompositor);
+ getCommandStack().execute(command);
+ }
+
+ if (command != null)
+ {
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+ if (adapter != null)
+ provider.setSelection(new StructuredSelection(adapter));
+ }
+
+ }
+ }
+
+ private String getLabel(XSDCompositor compositor)
+ {
+ String result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SEQUENCE"); //$NON-NLS-1$
+ if (compositor != null)
+ {
+ if (compositor == XSDCompositor.CHOICE_LITERAL)
+ {
+ result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CHOICE"); //$NON-NLS-1$
+ }
+ else if (compositor == XSDCompositor.ALL_LITERAL)
+ {
+ result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ALL");//$NON-NLS-1$
+ }
+ }
+ return result;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupDefinitionAction.java
new file mode 100644
index 0000000..2f2a542
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupDefinitionAction.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDModelGroupDefinitionCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class AddXSDModelGroupDefinitionAction extends XSDBaseAction
+{
+ public static final String MODELGROUPDEFINITION_ID = "AddXSDModelGroupDefinitionAction";
+ public static final String MODELGROUPDEFINITIONREF_ID = "AddXSDModelGroupDefinitionRefAction";
+ boolean isReference;
+
+ public AddXSDModelGroupDefinitionAction(IWorkbenchPart part, boolean isReference)
+ {
+ super(part);
+ this.isReference = isReference;
+ if (isReference)
+ {
+ setText("Add Group Ref");
+ setId(MODELGROUPDEFINITION_ID);
+ }
+ else
+ {
+ setText("Add Group");
+ setId(MODELGROUPDEFINITIONREF_ID);
+ }
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+ XSDConcreteComponent xsdConcreteComponent = null;
+ if (selection instanceof XSDBaseAdapter)
+ {
+ xsdConcreteComponent = (XSDConcreteComponent) ((XSDBaseAdapter) selection).getTarget();
+ }
+ if (xsdConcreteComponent != null)
+ {
+ AddXSDModelGroupDefinitionCommand command = new AddXSDModelGroupDefinitionCommand(getText(), xsdConcreteComponent, isReference);
+ getCommandStack().execute(command);
+ Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+ if (adapter != null)
+ provider.setSelection(new StructuredSelection(adapter));
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDSimpleTypeDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDSimpleTypeDefinitionAction.java
new file mode 100644
index 0000000..14ee444
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDSimpleTypeDefinitionAction.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDSimpleTypeDefinitionCommand;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDSimpleTypeDefinitionAction extends XSDBaseAction
+{
+ public static final String ID = "org.eclipse.wst.xsd.editor.AddXSDSimpleTypeDefinitionAction";
+
+ public AddXSDSimpleTypeDefinitionAction(IWorkbenchPart part)
+ {
+ super(part);
+ setText("Add Simple Type");
+ setId(ID);
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDBaseAdapter)
+ {
+ selection = ((XSDBaseAdapter) selection).getTarget();
+ }
+
+ if (selection instanceof XSDSchema)
+ {
+ AddXSDSimpleTypeDefinitionCommand command = new AddXSDSimpleTypeDefinitionCommand("Add Simple Type", (XSDSchema) selection);
+ getCommandStack().execute(command);
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/DeleteXSDConcreteComponentAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/DeleteXSDConcreteComponentAction.java
new file mode 100644
index 0000000..ff9b772
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/DeleteXSDConcreteComponentAction.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class DeleteXSDConcreteComponentAction extends XSDBaseAction
+{
+ public static final String DELETE_XSD_COMPONENT_ID = "org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction"; //$NON-NLS-1$
+
+ public DeleteXSDConcreteComponentAction(IWorkbenchPart part)
+ {
+ super(part);
+ setText("Delete");
+ setId(DELETE_XSD_COMPONENT_ID);
+ setImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/delete_obj.gif") );
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDBaseAdapter)
+ {
+ selection = ((XSDBaseAdapter) selection).getTarget();
+ }
+
+ if (selection instanceof XSDConcreteComponent)
+ {
+ DeleteCommand command = new DeleteCommand(getText(), (XSDConcreteComponent) selection);
+ getCommandStack().execute(command);
+ }
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/OpenInNewEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/OpenInNewEditor.java
new file mode 100644
index 0000000..1e781a7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/OpenInNewEditor.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+
+public class OpenInNewEditor extends BaseSelectionAction
+{
+ public static final String ID = "OpenInNewEditor";
+
+ public OpenInNewEditor(IWorkbenchPart part)
+ {
+ super(part);
+ setText("Open In New Editor");
+ setId(ID);
+ }
+
+ protected boolean calculateEnabled()
+ {
+ return true;
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDComplexTypeDefinitionAdapter)
+ {
+ XSDComplexTypeDefinitionAdapter xsdAdapter = (XSDComplexTypeDefinitionAdapter) selection;
+ XSDComplexTypeDefinition fComponent = (XSDComplexTypeDefinition) xsdAdapter.getTarget();
+
+ if (fComponent.getSchema() != null)
+ {
+ String schemaLocation = URIHelper.removePlatformResourceProtocol(fComponent.getSchema().getSchemaLocation());
+ IPath schemaPath = new Path(schemaLocation);
+ IFile schemaFile = ResourcesPlugin.getWorkspace().getRoot().getFile(schemaPath);
+ if (schemaFile != null && schemaFile.exists())
+ {
+ IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (workbenchWindow != null)
+ {
+ IWorkbenchPage page = workbenchWindow.getActivePage();
+ try
+ {
+ // TODO: Should use this to open in default editor
+ // IEditorPart editorPart = IDE.openEditor(page, schemaFile, true);
+ IEditorPart editorPart = page.openEditor(new FileEditorInput(schemaFile), "org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor", true);
+
+ if (editorPart instanceof InternalXSDMultiPageEditor)
+ {
+ InternalXSDMultiPageEditor xsdEditor = (InternalXSDMultiPageEditor) editorPart;
+
+ xsdEditor.openOnGlobalReference(fComponent);
+ }
+
+ }
+ catch (PartInitException pie)
+ {
+ }
+ }
+ }
+ }
+
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetMultiplicityAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetMultiplicityAction.java
new file mode 100644
index 0000000..ad92a70
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetMultiplicityAction.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.SetMultiplicityCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class SetMultiplicityAction extends XSDBaseAction
+{
+ public static String REQUIRED_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.REQUIRED_ID";
+ public static String ZERO_OR_ONE_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.ZERO_OR_ONE_ID";
+ public static String ZERO_OR_MORE_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.ZERO_OR_MORE_ID";
+ public static String ONE_OR_MORE_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.ONE_OR_MORE_ID";
+
+ SetMultiplicityCommand command;
+
+ public SetMultiplicityAction(IWorkbenchPart part, String label, String ID)
+ {
+ super(part);
+ setText(label);
+ setId(ID);
+ command = new SetMultiplicityCommand(label);
+ }
+
+ public void setMaxOccurs(int i)
+ {
+ command.setMaxOccurs(i);
+ }
+
+ public void setMinOccurs(int i)
+ {
+ command.setMinOccurs(i);
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ XSDConcreteComponent xsdConcreteComponent = null;
+ if (selection instanceof XSDBaseAdapter)
+ {
+ xsdConcreteComponent = (XSDConcreteComponent)((XSDBaseAdapter) selection).getTarget();
+ }
+ if (xsdConcreteComponent != null)
+ {
+ command.setXSDConcreteComponent(xsdConcreteComponent);
+ getCommandStack().execute(command);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetTypeAction.java
new file mode 100644
index 0000000..1040e95
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetTypeAction.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.SetTypeCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class SetTypeAction extends XSDBaseAction
+{
+ public static final String SET_NEW_TYPE_ID = "SetTypeAction_AddType";
+ public static final String SELECT_EXISTING_TYPE_ID = "SetTypeAction_ExistingType";
+
+ SetTypeCommand command;
+
+ public SetTypeAction(String label, String ID, IWorkbenchPart part)
+ {
+ super(part);
+ setText(label);
+ setId(ID);
+ }
+
+ public void run()
+ {
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+ if (selection instanceof XSDBaseAdapter)
+ {
+ Object target = ((XSDBaseAdapter) selection).getTarget();
+
+ if (target instanceof XSDConcreteComponent)
+ {
+ command = new SetTypeCommand(getText(), getId(), (XSDConcreteComponent) target);
+ command.setAdapter((XSDBaseAdapter) selection);
+ getCommandStack().execute(command);
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/XSDBaseAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/XSDBaseAction.java
new file mode 100644
index 0000000..7374229
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/XSDBaseAction.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDBaseAction extends BaseSelectionAction
+{
+
+ public XSDBaseAction(IWorkbenchPart part)
+ {
+ super(part);
+ }
+
+ protected boolean calculateEnabled()
+ {
+ if (getWorkbenchPart() instanceof IEditorPart)
+ {
+ IEditorPart owningEditor = (IEditorPart)getWorkbenchPart();
+
+ Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+ if (selection instanceof XSDBaseAdapter)
+ {
+ selection = ((XSDBaseAdapter) selection).getTarget();
+ }
+ XSDSchema xsdSchema = null;
+ if (selection instanceof XSDConcreteComponent)
+ {
+ xsdSchema = ((XSDConcreteComponent)selection).getSchema();
+ }
+
+ if (xsdSchema != null && xsdSchema == owningEditor.getAdapter(XSDSchema.class))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoAttributeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoAttributeCommand.java
new file mode 100644
index 0000000..7d4117d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoAttributeCommand.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMNamespaceInfoManager;
+import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.w3c.dom.Element;
+
+public class AddAppInfoAttributeCommand extends AddAppInfoCommand
+{
+ private static DOMNamespaceInfoManager manager = new DOMNamespaceInfoManager();
+ private XSDAttributeDeclaration attribute;
+ private boolean appInfoAttributeAdded = false;
+ private boolean prefixAdded = false;
+ private String attributeQName;
+ private String namespacePrefix;
+
+ XSDConcreteComponent component;
+
+
+ public AddAppInfoAttributeCommand(String label, XSDConcreteComponent component,
+ XSDAttributeDeclaration attribute)
+ {
+ super(label);
+ this.component = component;
+ this.attribute = attribute;
+ }
+
+ public void execute()
+ {
+ namespacePrefix = handleNamespacePrefices();
+
+ attributeQName = namespacePrefix + ":" + attribute.getName();
+ String value = component.getElement().getAttribute(attributeQName);
+ if ( value == null) {
+ appInfoAttributeAdded = true;
+ component.getElement().setAttribute(attributeQName, "");
+ }
+ }
+
+ public void undo()
+ {
+ super.undo();
+ // TODO (allison) remove the namespace prefix when applicable as well
+ if (appInfoAttributeAdded){
+ component.getElement().removeAttribute(attributeQName);
+ }
+ }
+
+ /** Create a namespace prefix if needed, other wise retrieve
+ * a predefined namespace prefix
+ * @return */
+ private String handleNamespacePrefices()
+ {
+ Element schemaElement = component.getSchema().getElement();
+ String prefix = null;
+
+ // If target namespace of the attribute already exists
+ List namespacePrefices = manager.getNamespaceInfoList(schemaElement);
+ for (int i = 0; i < namespacePrefices.size(); i++){
+ NamespaceInfo info = (NamespaceInfo) namespacePrefices.get(i);
+ if ( info.uri.equals(attribute.getTargetNamespace())) {
+ prefix = info.prefix;
+ }
+ }
+
+ // Create unquie namespace prefix
+ if ( prefix == null){
+ prefixAdded = true;
+ prefix = createUniquePrefix(component);
+ }
+
+ NamespaceInfo info = new NamespaceInfo(attribute.getTargetNamespace(), prefix, "");
+ List infoList = new ArrayList(1);
+ infoList.add(info);
+ manager.addNamespaceInfo(schemaElement, infoList, false);
+ return prefix;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoCommand.java
new file mode 100644
index 0000000..133cd8e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoCommand.java
@@ -0,0 +1,35 @@
+package org.eclipse.wst.xsd.ui.common.commands;
+
+import java.util.Map;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class AddAppInfoCommand extends Command
+{
+ protected SpecificationForAppinfoSchema appInfoSchemaSpec;
+
+ protected AddAppInfoCommand(String label)
+ {
+ super(label);
+ }
+
+ public void setSchemaProperties(SpecificationForAppinfoSchema appInfoSchemaSpec)
+ {
+ this.appInfoSchemaSpec = appInfoSchemaSpec;
+ }
+
+ protected String createUniquePrefix(XSDConcreteComponent component)
+ {
+ String prefix = "sdo";
+ Map prefMapper = component.getSchema().getQNamePrefixToNamespaceMap();
+ if ( prefMapper.get(prefix) != null){
+ int i = 1;
+ while ( prefMapper.get(prefix + i) != null)
+ i++;
+ prefix += i;
+ }
+ return prefix;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoElementCommand.java
new file mode 100644
index 0000000..a0cbe17
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoElementCommand.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class AddAppInfoElementCommand extends AddAppInfoCommand
+{
+ XSDConcreteComponent input;
+ XSDElementDeclaration element;
+ Element appInfo;
+
+ public AddAppInfoElementCommand(String label, XSDConcreteComponent input, XSDElementDeclaration element)
+ {
+ super(label);
+ this.input = input;
+ this.element = element;
+ }
+
+ public void execute()
+ {
+ super.execute();
+ addAnnotationSet(input.getSchema(), appInfoSchemaSpec);
+ }
+
+ public void undo()
+ {
+ super.undo();
+ XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation(input, false);
+ xsdAnnotation.getElement().removeChild(appInfo);
+ List appInfos = xsdAnnotation.getApplicationInformation();
+ appInfos.remove(appInfo);
+ xsdAnnotation.updateElement();
+
+ }
+
+ public void setSchemaProperties(SpecificationForAppinfoSchema appInfoSchemaSpec)
+ {
+ this.appInfoSchemaSpec = appInfoSchemaSpec;
+ }
+
+ public void addAnnotationSet(XSDSchema xsdSchema, SpecificationForAppinfoSchema asiSpec)
+ {
+ XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation(input, true);
+ addAnnotationSet(asiSpec, xsdAnnotation);
+ }
+
+ private void addAnnotationSet(SpecificationForAppinfoSchema asiProperties, XSDAnnotation xsdAnnotation)
+ {
+ appInfo = xsdAnnotation.createApplicationInformation(asiProperties.getNamespaceURI());
+
+ if (appInfo != null)
+ {
+ Document doc = appInfo.getOwnerDocument();
+
+ Element rootElement = doc.createElementNS(asiProperties.getNamespaceURI(), element.getName());
+
+ String prefix = createUniquePrefix(input);
+ rootElement.setPrefix(prefix);
+
+ Attr nsURIAttribute = doc.createAttribute("xmlns:"+prefix);
+ nsURIAttribute.setValue(asiProperties.getNamespaceURI());
+ rootElement.setAttributeNode(nsURIAttribute);
+ appInfo.appendChild(rootElement);
+
+ xsdAnnotation.getElement().appendChild(appInfo);
+ List appInfos = xsdAnnotation.getApplicationInformation();
+ appInfos.add(appInfo);
+ xsdAnnotation.updateElement();
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddDocumentationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddDocumentationCommand.java
new file mode 100644
index 0000000..8ed0c27
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddDocumentationCommand.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.List;
+
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class AddDocumentationCommand extends BaseCommand
+{
+ XSDAnnotation xsdAnnotation;
+ XSDConcreteComponent input;
+ String newValue, oldValue;
+ boolean documentationExists;
+ Element documentationElement;
+
+ public AddDocumentationCommand(String label, XSDAnnotation xsdAnnotation, XSDConcreteComponent input, String newValue, String oldValue)
+ {
+ super(label);
+ this.xsdAnnotation = xsdAnnotation;
+ this.input = input;
+ this.newValue = newValue;
+ this.oldValue = oldValue;
+ }
+
+ public void execute()
+ {
+ xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation((XSDConcreteComponent) input, true);
+ Element element = xsdAnnotation.getElement();
+
+ List documentationList = xsdAnnotation.getUserInformation();
+ documentationElement = null;
+ documentationExists = false;
+ if (documentationList.size() > 0)
+ {
+ documentationExists = true;
+ documentationElement = (Element) documentationList.get(0);
+ }
+
+ if (documentationElement == null)
+ {
+ documentationElement = xsdAnnotation.createUserInformation(null);
+ element.appendChild(documentationElement);
+ formatChild(documentationElement);
+ // Defect in model....I create it but the model object doesn't appear
+ // to be updated
+ xsdAnnotation.updateElement();
+ xsdAnnotation.setElement(element);
+ }
+
+ try
+ {
+ if (documentationElement.hasChildNodes())
+ {
+ if (documentationElement instanceof IDOMElement)
+ {
+ IDOMElement domElement = (IDOMElement) documentationElement;
+
+ Node firstChild = documentationElement.getFirstChild();
+ Node lastChild = documentationElement.getLastChild();
+ int start = 0;
+ int end = 0;
+
+ IDOMModel model = domElement.getModel();
+ IDOMDocument doc = model.getDocument();
+ IDOMNode first = null;
+ if (firstChild instanceof IDOMNode)
+ {
+ first = (IDOMNode) firstChild;
+ start = first.getStartOffset();
+ }
+ if (lastChild instanceof IDOMNode)
+ {
+ IDOMNode last = (IDOMNode) lastChild;
+ end = last.getEndOffset();
+ }
+
+ if (domElement != null)
+ {
+ oldValue = domElement.getModel().getStructuredDocument().get(start, end - start);
+ domElement.getModel().getStructuredDocument().replaceText(documentationElement, start, end - start, newValue);
+ }
+ }
+ }
+ else
+ {
+ if (newValue.length() > 0)
+ {
+ oldValue = "";
+ Node childNode = documentationElement.getOwnerDocument().createTextNode(newValue);
+ documentationElement.appendChild(childNode);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+
+ public void undo()
+ {
+ super.undo();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddEnumerationsCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddEnumerationsCommand.java
new file mode 100644
index 0000000..90cdc4c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddEnumerationsCommand.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+
+public class AddEnumerationsCommand extends BaseCommand
+{
+ XSDSimpleTypeDefinition simpleType;
+ String value;
+
+ public AddEnumerationsCommand(String label, XSDSimpleTypeDefinition simpleType)
+ {
+ super(label);
+ this.simpleType = simpleType;
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
+ public void execute()
+ {
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDEnumerationFacet enumerationFacet = factory.createXSDEnumerationFacet();
+ enumerationFacet.setLexicalValue(value);
+ simpleType.getFacetContents().add(enumerationFacet);
+ formatChild(simpleType.getElement());
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddExtensibilityElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddExtensibilityElementCommand.java
new file mode 100644
index 0000000..26a2e7b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddExtensibilityElementCommand.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class AddExtensibilityElementCommand extends Command
+{
+ Element input, elementToAdd;
+ SpecificationForAppinfoSchema appInfoSchemaSpec;
+
+ public AddExtensibilityElementCommand(String label, Element input, Element elementToAdd)
+ {
+ super(label);
+ this.input = input;
+ this.elementToAdd = elementToAdd;
+ }
+
+ public void execute()
+ {
+ super.execute();
+ addElement();
+ }
+
+ public void undo()
+ {
+ super.undo();
+ // TODO
+ }
+
+ public void setSchemaProperties(SpecificationForAppinfoSchema appInfoSchemaSpec)
+ {
+ this.appInfoSchemaSpec = appInfoSchemaSpec;
+ }
+
+ private void addElement()
+ {
+ if (input != null)
+ {
+ Document doc = input.getOwnerDocument();
+ String name = elementToAdd.getAttribute("name");
+ try
+ {
+ Element rootElement = doc.createElementNS(appInfoSchemaSpec.getNamespaceURI(), name);
+ String prefix = input.getPrefix();
+ rootElement.setPrefix(prefix);
+ String xmlns = (prefix == null || prefix.equals("")) ? "xmlns" : "xmlns:" + prefix;
+ Attr nsURIAttribute = doc.createAttribute(xmlns);
+ nsURIAttribute.setValue(appInfoSchemaSpec.getNamespaceURI());
+ rootElement.setAttributeNode(nsURIAttribute);
+ input.appendChild(rootElement);
+
+ }
+ catch (Exception e)
+ {
+
+ }
+
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeDeclarationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeDeclarationCommand.java
new file mode 100644
index 0000000..0f0a15f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeDeclarationCommand.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.w3c.dom.Text;
+
+public class AddXSDAttributeDeclarationCommand extends BaseCommand
+{
+ XSDComplexTypeDefinition xsdComplexTypeDefinition;
+ XSDModelGroup xsdModelGroup;
+// XSDSchema xsdSchema;
+ XSDConcreteComponent parent;
+
+ public AddXSDAttributeDeclarationCommand(String label, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ super(label);
+ this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+ }
+
+ public AddXSDAttributeDeclarationCommand(String label, XSDConcreteComponent parent)
+ {
+ super(label);
+ this.parent = parent;
+ }
+
+ public void execute()
+ {
+ XSDAttributeDeclaration attribute = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+ if (parent == null)
+ {
+ attribute.setName(getNewName("Attribute")); //$NON-NLS-1$
+ attribute.setTypeDefinition(xsdComplexTypeDefinition.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string")); //$NON-NLS-1$
+
+ XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ attributeUse.setAttributeDeclaration(attribute);
+ attributeUse.setContent(attribute);
+
+ if (xsdComplexTypeDefinition.getAttributeContents() != null)
+ {
+ xsdComplexTypeDefinition.getAttributeContents().add(attributeUse);
+ formatChild(xsdComplexTypeDefinition.getElement());
+ }
+ addedXSDConcreteComponent = attributeUse;
+ }
+ else
+ {
+ attribute.setTypeDefinition(parent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string")); //$NON-NLS-1$
+ if (parent instanceof XSDSchema)
+ {
+ attribute.setName(XSDCommonUIUtils.createUniqueElementName("NewAttribute", parent.getSchema().getAttributeDeclarations()));
+ XSDSchema xsdSchema = (XSDSchema)parent;
+ Text textNode = xsdSchema.getDocument().createTextNode("\n");
+ xsdSchema.getElement().appendChild(textNode);
+ xsdSchema.getContents().add(attribute);
+ }
+ else if (parent instanceof XSDAttributeGroupDefinition)
+ {
+ List list = new ArrayList();
+ Iterator i = ((XSDAttributeGroupDefinition)parent).getResolvedAttributeGroupDefinition().getAttributeUses().iterator();
+ while (i.hasNext())
+ {
+ XSDAttributeUse use = (XSDAttributeUse)i.next();
+ list.add(use.getAttributeDeclaration());
+ }
+ attribute.setName(XSDCommonUIUtils.createUniqueElementName("NewAttribute", list));
+ XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+ attributeUse.setAttributeDeclaration(attribute);
+ attributeUse.setContent(attribute);
+
+ ((XSDAttributeGroupDefinition)parent).getResolvedAttributeGroupDefinition().getContents().add(attributeUse);
+ formatChild(parent.getElement());
+ }
+ addedXSDConcreteComponent = attribute;
+ }
+ }
+
+ ArrayList names;
+
+ protected String getNewName(String description)
+ {
+ String candidateName = "New" + description; //$NON-NLS-1$
+ XSDConcreteComponent parent = xsdComplexTypeDefinition;
+ names = new ArrayList();
+ int i = 1;
+ if (parent instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) parent;
+ walkUpInheritance(ct);
+
+ boolean ready = false;
+ while (!ready)
+ {
+ ready = true;
+ for (Iterator iter = names.iterator(); iter.hasNext();)
+ {
+ String attrName = (String) iter.next();
+ if (candidateName.equals(attrName))
+ {
+ ready = false;
+ candidateName = "New" + description + String.valueOf(i); //$NON-NLS-1$
+ i++;
+ }
+ }
+ }
+ }
+ return candidateName;
+ }
+
+ private void walkUpInheritance(XSDComplexTypeDefinition ct)
+ {
+ updateNames(ct);
+ XSDTypeDefinition typeDef = ct.getBaseTypeDefinition();
+ if (ct != ct.getRootType())
+ {
+ if (typeDef instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition ct2 = (XSDComplexTypeDefinition) typeDef;
+ walkUpInheritance(ct2);
+ }
+ }
+ }
+
+ private void updateNames(XSDComplexTypeDefinition ct)
+ {
+ Iterator iter = ct.getAttributeContents().iterator();
+ while (iter.hasNext())
+ {
+ Object obj = iter.next();
+ if (obj instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse use = (XSDAttributeUse) obj;
+ XSDAttributeDeclaration attr = use.getAttributeDeclaration();
+ String attrName = attr.getName();
+ if (attrName != null)
+ {
+ names.add(attrName);
+ }
+ }
+ }
+
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeGroupDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeGroupDefinitionCommand.java
new file mode 100644
index 0000000..2bf259f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeGroupDefinitionCommand.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.w3c.dom.Text;
+
+public class AddXSDAttributeGroupDefinitionCommand extends BaseCommand
+{
+ XSDComplexTypeDefinition xsdComplexTypeDefinition;
+ XSDSchema xsdSchema;
+
+ public AddXSDAttributeGroupDefinitionCommand(String label, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ super(label);
+ this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+ }
+
+ public AddXSDAttributeGroupDefinitionCommand(String label, XSDSchema xsdSchema)
+ {
+ super(label);
+ this.xsdSchema = xsdSchema;
+ }
+
+ public void execute()
+ {
+ XSDAttributeGroupDefinition attributeGroup = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ if (xsdSchema == null)
+ {
+ attributeGroup.setName(getNewName("AttributeGroup")); //$NON-NLS-1$
+
+ List list = xsdComplexTypeDefinition.getSchema().getAttributeGroupDefinitions();
+ if (list.size() > 0)
+ {
+ attributeGroup.setResolvedAttributeGroupDefinition((XSDAttributeGroupDefinition) list.get(0));
+ }
+ else
+ {
+ attributeGroup.setName(null);
+ XSDAttributeGroupDefinition attributeGroup2 = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+ attributeGroup2.setName(XSDCommonUIUtils.createUniqueElementName("NewAttributeGroup", xsdComplexTypeDefinition.getSchema().getAttributeGroupDefinitions()));
+ xsdComplexTypeDefinition.getSchema().getContents().add(attributeGroup2);
+ attributeGroup.setResolvedAttributeGroupDefinition(attributeGroup2);
+ }
+
+ if (xsdComplexTypeDefinition.getAttributeContents() != null)
+ {
+ xsdComplexTypeDefinition.getAttributeContents().add(attributeGroup);
+ }
+ addedXSDConcreteComponent = attributeGroup;
+ }
+ else
+ {
+ attributeGroup.setName(XSDCommonUIUtils.createUniqueElementName("NewAttributeGroup", xsdSchema.getAttributeGroupDefinitions()));
+ Text textNode = xsdSchema.getDocument().createTextNode("\n");
+ xsdSchema.getElement().appendChild(textNode);
+ xsdSchema.getContents().add(attributeGroup);
+ addedXSDConcreteComponent = attributeGroup;
+ }
+ }
+
+ ArrayList names;
+
+ protected String getNewName(String description)
+ {
+ String candidateName = "New" + description; //$NON-NLS-1$
+ XSDConcreteComponent parent = xsdComplexTypeDefinition;
+ names = new ArrayList();
+ int i = 1;
+ if (parent instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) parent;
+ walkUpInheritance(ct);
+
+ boolean ready = false;
+ while (!ready)
+ {
+ ready = true;
+ for (Iterator iter = names.iterator(); iter.hasNext();)
+ {
+ String attrName = (String) iter.next();
+ if (candidateName.equals(attrName))
+ {
+ ready = false;
+ candidateName = "New" + description + String.valueOf(i); //$NON-NLS-1$
+ i++;
+ }
+ }
+ }
+ }
+ return candidateName;
+ }
+
+ private void walkUpInheritance(XSDComplexTypeDefinition ct)
+ {
+ updateNames(ct);
+ XSDTypeDefinition typeDef = ct.getBaseTypeDefinition();
+ if (ct != ct.getRootType())
+ {
+ if (typeDef instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition ct2 = (XSDComplexTypeDefinition) typeDef;
+ walkUpInheritance(ct2);
+ }
+ }
+ }
+
+ private void updateNames(XSDComplexTypeDefinition ct)
+ {
+ Iterator iter = ct.getAttributeContents().iterator();
+ while (iter.hasNext())
+ {
+ Object obj = iter.next();
+ if (obj instanceof XSDAttributeUse)
+ {
+ XSDAttributeUse use = (XSDAttributeUse) obj;
+ XSDAttributeDeclaration attr = use.getAttributeDeclaration();
+ String attrName = attr.getName();
+ if (attrName != null)
+ {
+ names.add(attrName);
+ }
+ }
+ }
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDComplexTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDComplexTypeDefinitionCommand.java
new file mode 100644
index 0000000..6cfe1af
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDComplexTypeDefinitionCommand.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+import org.w3c.dom.Text;
+
+public final class AddXSDComplexTypeDefinitionCommand extends BaseCommand
+{
+ protected XSDConcreteComponent parent;
+ protected XSDComplexTypeDefinition createdComplexType;
+ private String nameToAdd;
+
+ public AddXSDComplexTypeDefinitionCommand(String label, XSDConcreteComponent parent)
+ {
+ super(label);
+ this.parent = parent;
+ }
+
+ public void setNameToAdd(String nameToAdd)
+ {
+ this.nameToAdd = nameToAdd;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.commands.Command#execute()
+ */
+ public void execute()
+ {
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDComplexTypeDefinition complexType = factory.createXSDComplexTypeDefinition();
+ addedXSDConcreteComponent = complexType;
+ String newName = getNewName(nameToAdd == null ? "NewXSDComplexType" : nameToAdd, parent.getSchema());
+ complexType.setName(newName);
+ if (parent instanceof XSDSchema)
+ {
+ try
+ {
+ XSDSchema xsdSchema = (XSDSchema)parent;
+ Text textNode = xsdSchema.getDocument().createTextNode("\n");
+ xsdSchema.getElement().appendChild(textNode);
+ xsdSchema.getContents().add(complexType);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ else if (parent instanceof XSDElementDeclaration)
+ {
+ ((XSDElementDeclaration) parent).setAnonymousTypeDefinition((XSDComplexTypeDefinition) complexType);
+ formatChild(parent.getElement());
+ }
+ createdComplexType = complexType;
+ }
+
+ protected String getNewName(String description, XSDSchema schema)
+ {
+ String candidateName = description; //$NON-NLS-1$
+ int i = 1;
+
+ List list = schema.getTypeDefinitions();
+ List listOfNames = new ArrayList();
+ for (Iterator iter = list.iterator(); iter.hasNext();)
+ {
+ XSDTypeDefinition typeDef = (XSDTypeDefinition) iter.next();
+ String name = typeDef.getName();
+ if (name == null)
+ name = "";
+ if (typeDef.getTargetNamespace() == schema.getTargetNamespace())
+ listOfNames.add(name);
+ }
+
+ boolean flag = true;
+ while (flag)
+ {
+ if (!listOfNames.contains(candidateName))
+ {
+ flag = false;
+ break;
+ }
+ candidateName = description + String.valueOf(i); //$NON-NLS-1$
+ i++;
+ }
+
+ return candidateName;
+ }
+
+ public XSDComplexTypeDefinition getCreatedComplexType()
+ {
+ return createdComplexType;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDElementCommand.java
new file mode 100644
index 0000000..efa2dda
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDElementCommand.java
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+import org.w3c.dom.Text;
+
+public class AddXSDElementCommand extends BaseCommand
+{
+ XSDComplexTypeDefinition xsdComplexTypeDefinition;
+ XSDModelGroupDefinition xsdModelGroupDefinition;
+ XSDModelGroup xsdModelGroup;
+ XSDSchema xsdSchema;
+ boolean isReference;
+private String nameToAdd;
+
+ public AddXSDElementCommand()
+ {
+ super();
+ }
+
+ public AddXSDElementCommand(String label, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ super(label);
+ this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+ xsdModelGroup = getModelGroup(xsdComplexTypeDefinition);
+ }
+
+ public AddXSDElementCommand(String label, XSDModelGroupDefinition xsdModelGroupDefinition)
+ {
+ super(label);
+ this.xsdModelGroupDefinition = xsdModelGroupDefinition;
+ xsdModelGroup = getModelGroup(xsdModelGroupDefinition);
+ }
+
+ public AddXSDElementCommand(String label, XSDModelGroup xsdModelGroup, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+ {
+ super(label);
+ this.xsdModelGroup = xsdModelGroup;
+ this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+ }
+
+ public AddXSDElementCommand(String label, XSDModelGroup xsdModelGroup)
+ {
+ super(label);
+ this.xsdModelGroup = xsdModelGroup;
+ }
+
+ public AddXSDElementCommand(String label, XSDSchema xsdSchema)
+ {
+ super(label);
+ this.xsdSchema = xsdSchema;
+ }
+
+ public void setReference(boolean isReference)
+ {
+ this.isReference = isReference;
+ }
+
+ public void setNameToAdd(String name){
+ nameToAdd = name;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.commands.Command#execute()
+ */
+ public void execute()
+ {
+ if (xsdSchema != null)
+ {
+ XSDElementDeclaration element = createGlobalXSDElementDeclaration();
+ Text textNode = xsdSchema.getDocument().createTextNode("\n");
+ xsdSchema.getElement().appendChild(textNode);
+ xsdSchema.getContents().add(element);
+ addedXSDConcreteComponent = element;
+ }
+ else if (xsdModelGroupDefinition != null)
+ {
+ if (xsdModelGroup == null)
+ {
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDParticle particle = factory.createXSDParticle();
+ xsdModelGroup = factory.createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ particle.setContent(xsdModelGroup);
+ }
+ if (!isReference)
+ {
+ xsdModelGroup.getContents().add(createXSDElementDeclaration());
+ }
+ else
+ {
+ xsdModelGroup.getContents().add(createXSDElementReference());
+ }
+ }
+ else if (xsdComplexTypeDefinition == null && xsdModelGroup != null)
+ {
+ xsdSchema = xsdModelGroup.getSchema();
+ if (!isReference)
+ {
+ xsdModelGroup.getContents().add(createXSDElementDeclaration());
+ }
+ else
+ {
+ xsdModelGroup.getContents().add(createXSDElementReference());
+ }
+ formatChild(xsdModelGroup.getElement());
+ }
+ else
+ {
+ if (xsdModelGroup == null)
+ {
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDParticle particle = factory.createXSDParticle();
+ xsdModelGroup = factory.createXSDModelGroup();
+ xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ particle.setContent(xsdModelGroup);
+ xsdComplexTypeDefinition.setContent(particle);
+ }
+ xsdSchema = xsdComplexTypeDefinition.getSchema();
+
+ if (!isReference)
+ {
+ xsdModelGroup.getContents().add(createXSDElementDeclarationForComplexType());
+ }
+ else
+ {
+ xsdModelGroup.getContents().add(createXSDElementReference());
+ }
+ formatChild(xsdModelGroup.getElement());
+ }
+
+ }
+
+ protected XSDParticle createXSDElementDeclaration()
+ {
+ XSDSimpleTypeDefinition type = xsdModelGroup.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string");
+
+ XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+
+ ArrayList usedAttributeNames = new ArrayList();
+ usedAttributeNames.addAll(XSDCommonUIUtils.getChildElements(xsdModelGroup));
+ element.setName(XSDCommonUIUtils.createUniqueElementName(
+ nameToAdd == null ? "NewElement" : nameToAdd , xsdSchema.getElementDeclarations()));
+ element.setTypeDefinition(type);
+
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(element);
+ addedXSDConcreteComponent = element;
+ return particle;
+ }
+
+ protected XSDParticle createXSDElementReference()
+ {
+ List list = xsdModelGroup.getSchema().getElementDeclarations();
+ XSDElementDeclaration referencedElement = null;
+ if (list.size() > 0)
+ {
+ referencedElement = (XSDElementDeclaration)list.get(0);
+ }
+ else
+ {
+ referencedElement = createGlobalXSDElementDeclaration();
+ Text textNode = xsdSchema.getDocument().createTextNode("\n");
+ xsdSchema.getElement().appendChild(textNode);
+ xsdSchema.getContents().add(referencedElement);
+ }
+
+ XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+
+ element.setResolvedElementDeclaration(referencedElement);
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(element);
+ addedXSDConcreteComponent = element;
+ return particle;
+ }
+
+ protected XSDParticle createXSDElementDeclarationForComplexType()
+ {
+ XSDSimpleTypeDefinition type = xsdModelGroup.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string");
+
+ XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+
+ ArrayList usedAttributeNames = new ArrayList();
+ usedAttributeNames.addAll(XSDCommonUIUtils.getAllAttributes(xsdComplexTypeDefinition));
+ usedAttributeNames.addAll(XSDCommonUIUtils.getInheritedAttributes(xsdComplexTypeDefinition));
+ element.setName(XSDCommonUIUtils.createUniqueElementName(
+ nameToAdd == null ? "NewElement" : nameToAdd , usedAttributeNames));
+ element.setTypeDefinition(type);
+
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(element);
+ addedXSDConcreteComponent = element;
+ return particle;
+ }
+
+ protected XSDElementDeclaration createGlobalXSDElementDeclaration()
+ {
+ XSDSimpleTypeDefinition type = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string");
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDElementDeclaration element = factory.createXSDElementDeclaration();
+
+ element.setName(XSDCommonUIUtils.createUniqueElementName(
+ nameToAdd == null ? "NewElement" : nameToAdd , xsdSchema.getElementDeclarations()));
+ element.setTypeDefinition(type);
+
+ return element;
+ }
+
+ public XSDModelGroup getModelGroup(XSDModelGroupDefinition modelGroupDef)
+ {
+ return modelGroupDef.getModelGroup();
+ }
+
+ //PORT
+ public XSDModelGroup getModelGroup(XSDComplexTypeDefinition cType)
+ {
+ XSDParticle particle = cType.getComplexType();
+
+ if (particle == null)
+ {
+ return null;
+ }
+
+ Object particleContent = particle.getContent();
+ XSDModelGroup group = null;
+
+ if (particleContent instanceof XSDModelGroupDefinition)
+ {
+ group = ((XSDModelGroupDefinition) particleContent).getResolvedModelGroupDefinition().getModelGroup();
+ }
+ else if (particleContent instanceof XSDModelGroup)
+ {
+ group = (XSDModelGroup) particleContent;
+ }
+
+ if (group == null)
+ {
+ return null;
+ }
+
+ if (group.getContents().isEmpty() || group.eResource() != cType.eResource())
+ {
+ if (cType.getBaseType() != null)
+ {
+ XSDComplexTypeContent content = cType.getContent();
+ if (content instanceof XSDParticle)
+ {
+ group = (XSDModelGroup) ((XSDParticle) content).getContent();
+ }
+ }
+ }
+
+ return group;
+ }
+
+ public XSDConcreteComponent getAddedComponent()
+ {
+ return super.getAddedComponent();
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupCommand.java
new file mode 100644
index 0000000..4821c85
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupCommand.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+
+public class AddXSDModelGroupCommand extends BaseCommand
+{
+ XSDConcreteComponent parent;
+ XSDCompositor xsdCompositor;
+ XSDModelGroup newModelGroup;
+
+ public AddXSDModelGroupCommand(String label, XSDConcreteComponent parent, XSDCompositor xsdCompositor)
+ {
+ super(label);
+ this.parent = parent;
+ this.xsdCompositor = xsdCompositor;
+ }
+
+ public void execute()
+ {
+ XSDConcreteComponent owner = getOwner();
+ if (owner != null)
+ {
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ newModelGroup = createModelGroup();
+ particle.setContent(newModelGroup);
+
+ XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)owner;
+ ctd.setContent(particle);
+ }
+ formatChild(parent.getElement());
+ }
+
+ public void undo()
+ {
+ super.undo();
+
+ if (parent instanceof XSDModelGroup)
+ {
+ XSDModelGroup model = (XSDModelGroup) parent;
+ model.getContents().remove(newModelGroup.getContainer());
+ }
+ }
+
+ private XSDConcreteComponent getOwner()
+ {
+ XSDConcreteComponent owner = null;
+ if (parent instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration ed = (XSDElementDeclaration)parent;
+ if (ed.getTypeDefinition() != null)
+ {
+ if (ed.getAnonymousTypeDefinition() == null)
+ {
+ ed.setTypeDefinition(null);
+ XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ ed.setAnonymousTypeDefinition(td);
+ owner = ed.getTypeDefinition();
+ }
+ else
+ {
+ XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ ed.setAnonymousTypeDefinition(td);
+ owner = td;
+ }
+ }
+ else if (ed.getAnonymousTypeDefinition() == null)
+ {
+ XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ ed.setAnonymousTypeDefinition(td);
+ owner = td;
+ }
+ else if (ed.getAnonymousTypeDefinition() instanceof XSDComplexTypeDefinition)
+ {
+ owner = ed.getAnonymousTypeDefinition();
+ }
+ else if (ed.getAnonymousTypeDefinition() instanceof XSDSimpleTypeDefinition)
+ {
+ XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+ ed.setAnonymousTypeDefinition(td);
+ owner = td;
+ }
+ }
+ else if (parent instanceof XSDModelGroup)
+ {
+ newModelGroup = createModelGroup();
+ ((XSDModelGroup) parent).getContents().add(newModelGroup.getContainer());
+ }
+ else if (parent instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)parent;
+ owner = parent;
+ if (ct.getContent() instanceof XSDParticle)
+ {
+ XSDParticle particle = (XSDParticle)ct.getContent();
+ if (particle.getContent() instanceof XSDModelGroup)
+ {
+ owner = null;
+ newModelGroup = createModelGroup();
+ XSDModelGroup newParent = (XSDModelGroup)particle.getContent();
+ newParent.getContents().add(newModelGroup.getContainer());
+ }
+
+ }
+ }
+ return owner;
+ }
+
+
+ protected boolean adopt(XSDConcreteComponent model)
+ {
+ return false;
+ }
+
+ protected XSDModelGroup createModelGroup()
+ {
+
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDParticle particle = factory.createXSDParticle();
+ XSDModelGroup modelGroup = factory.createXSDModelGroup();
+ modelGroup.setCompositor(xsdCompositor);
+ particle.setContent(modelGroup);
+ addedXSDConcreteComponent = modelGroup;
+ return modelGroup;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupDefinitionCommand.java
new file mode 100644
index 0000000..0947ee5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupDefinitionCommand.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+import org.w3c.dom.Text;
+
+public class AddXSDModelGroupDefinitionCommand extends BaseCommand
+{
+ XSDConcreteComponent parent;
+ boolean isReference;
+
+ public AddXSDModelGroupDefinitionCommand(String label, XSDConcreteComponent parent, boolean isReference)
+ {
+ super(label);
+ this.parent = parent;
+ this.isReference = isReference;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.commands.Command#execute()
+ */
+ public void execute()
+ {
+ if (!isReference)
+ {
+ XSDModelGroupDefinition def= createXSDModelGroupDefinition();
+ addedXSDConcreteComponent = def;
+ }
+ else
+ {
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDModelGroupDefinition def = factory.createXSDModelGroupDefinition();
+ XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+ particle.setContent(def);
+ List list = parent.getSchema().getModelGroupDefinitions();
+ if (list.size() > 0)
+ {
+ def.setResolvedModelGroupDefinition((XSDModelGroupDefinition) list.get(0));
+ }
+ else
+ {
+ XSDModelGroupDefinition newGroupDef = createXSDModelGroupDefinition();
+ def.setResolvedModelGroupDefinition(newGroupDef);
+ }
+
+ if (parent instanceof XSDModelGroup)
+ {
+ ((XSDModelGroup) parent).getContents().add(particle);
+ }
+ formatChild(def.getElement());
+ addedXSDConcreteComponent = def;
+ }
+ }
+
+ protected XSDModelGroupDefinition createXSDModelGroupDefinition()
+ {
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDModelGroupDefinition def = factory.createXSDModelGroupDefinition();
+ List list = parent.getSchema().getModelGroupDefinitions();
+ String newName = XSDCommonUIUtils.createUniqueElementName("ModelGroupDefinition", list);
+ def.setName(newName);
+
+ XSDModelGroup modelGroup = createModelGroup();
+ def.setModelGroup(modelGroup);
+ Text textNode = parent.getSchema().getDocument().createTextNode("\n");
+ parent.getSchema().getElement().appendChild(textNode);
+ parent.getSchema().getContents().add(def);
+ formatChild(def.getElement());
+ return def;
+ }
+
+ protected XSDModelGroup createModelGroup()
+ {
+ XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+ XSDParticle particle = factory.createXSDParticle();
+ XSDModelGroup modelGroup = factory.createXSDModelGroup();
+ modelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+ particle.setContent(modelGroup);
+
+ return modelGroup;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDSimpleTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDSimpleTypeDefinitionCommand.java
new file mode 100644
index 0000000..64f7b36
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDSimpleTypeDefinitionCommand.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Text;
+
+public final class AddXSDSimpleTypeDefinitionCommand extends BaseCommand
+{
+ XSDConcreteComponent parent;
+ XSDSimpleTypeDefinition createdSimpleType;
+ private String nameToAdd;
+
+ public AddXSDSimpleTypeDefinitionCommand(String label, XSDConcreteComponent parent)
+ {
+ super(label);
+ this.parent = parent;
+ }
+
+ public void setNameToAdd(String nameToAdd)
+ {
+ this.nameToAdd = nameToAdd;
+ }
+
+ public void execute()
+ {
+ XSDSimpleTypeDefinition typeDef = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ typeDef.setBaseTypeDefinition(parent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "string"));
+
+ if (parent instanceof XSDSchema)
+ {
+ typeDef.setName(XSDCommonUIUtils.createUniqueElementName(nameToAdd == null ? "XSDSimpleType" : nameToAdd, ((XSDSchema) parent).getTypeDefinitions()));
+ createdSimpleType = typeDef;
+ try
+ {
+ XSDSchema xsdSchema = (XSDSchema)parent;
+ Text textNode = xsdSchema.getDocument().createTextNode("\n");
+ xsdSchema.getElement().appendChild(textNode);
+ xsdSchema.getContents().add(typeDef);
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+ else if (parent instanceof XSDElementDeclaration)
+ {
+ ((XSDElementDeclaration) parent).setAnonymousTypeDefinition(typeDef);
+ }
+ else if (parent instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration) parent).setAnonymousTypeDefinition(typeDef);
+ }
+ formatChild(createdSimpleType.getElement());
+ }
+
+ public XSDSimpleTypeDefinition getCreatedSimpleType()
+ {
+ return createdSimpleType;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AbstractCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/BaseCommand.java
similarity index 67%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AbstractCommand.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/BaseCommand.java
index 3c0ae25..b8c4803 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AbstractCommand.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/BaseCommand.java
@@ -1,15 +1,16 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.commands;
+package org.eclipse.wst.xsd.ui.common.commands;
+import org.eclipse.gef.commands.Command;
import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
@@ -17,35 +18,24 @@
import org.eclipse.xsd.XSDConcreteComponent;
import org.w3c.dom.Element;
-public abstract class AbstractCommand
+public class BaseCommand extends Command
{
- private XSDConcreteComponent parent;
- private XSDConcreteComponent model;
+ XSDConcreteComponent addedXSDConcreteComponent;
- protected AbstractCommand(XSDConcreteComponent parent)
+ public BaseCommand()
{
- this.parent = parent;
+ super();
}
-
- public abstract void run();
- protected XSDConcreteComponent getParent()
+ public BaseCommand(String label)
{
- return parent;
+ super(label);
}
- public XSDConcreteComponent getModelObject()
+ public XSDConcreteComponent getAddedComponent()
{
- return model;
+ return addedXSDConcreteComponent;
}
-
- protected void setModelObject(XSDConcreteComponent model)
- {
- this.model = model;
- }
-
- // Establish part-whole relationship
- protected abstract boolean adopt(XSDConcreteComponent model);
protected void formatChild(Element child)
{
@@ -67,5 +57,5 @@
}
}
}
-
+
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/ChangeToLocalSimpleTypeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/ChangeToLocalSimpleTypeCommand.java
new file mode 100644
index 0000000..c17c9f3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/ChangeToLocalSimpleTypeCommand.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class ChangeToLocalSimpleTypeCommand extends BaseCommand
+{
+ XSDFeature parent;
+ XSDSimpleTypeDefinition anonymousSimpleType;
+ XSDSimpleTypeDefinition currentType;
+
+ public ChangeToLocalSimpleTypeCommand(String label, XSDFeature parent)
+ {
+ super(label);
+ this.parent = parent;
+
+// if (parent instanceof XSDElementDeclaration)
+// {
+// XSDElementDeclaration element = (XSDElementDeclaration) parent;
+// XSDTypeDefinition aType = element.getResolvedElementDeclaration().getTypeDefinition();
+//
+// if (aType instanceof XSDSimpleTypeDefinition)
+// {
+// currentType = (XSDSimpleTypeDefinition) aType;
+// }
+// }
+ }
+
+ public void execute()
+ {
+// anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+// anonymousSimpleType.setBaseTypeDefinition(currentType);
+ if (parent instanceof XSDElementDeclaration)
+ {
+ ((XSDElementDeclaration)parent).setAnonymousTypeDefinition(anonymousSimpleType);
+ }
+ else if (parent instanceof XSDAttributeDeclaration)
+ {
+ ((XSDAttributeDeclaration)parent).setAnonymousTypeDefinition(anonymousSimpleType);
+ }
+ formatChild(parent.getElement());
+ }
+
+ public void setAnonymousSimpleType(XSDSimpleTypeDefinition anonymousSimpleType)
+ {
+ this.anonymousSimpleType = anonymousSimpleType;
+ }
+
+ public XSDSimpleTypeDefinition getAnonymousType()
+ {
+ if (anonymousSimpleType == null)
+ {
+ anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ anonymousSimpleType.setBaseTypeDefinition(currentType);
+ }
+ return anonymousSimpleType;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/DeleteCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/DeleteCommand.java
new file mode 100644
index 0000000..eee0802
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/DeleteCommand.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDVisitor;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class DeleteCommand extends BaseCommand
+{
+ XSDConcreteComponent target;
+
+ public DeleteCommand(String label, XSDConcreteComponent target)
+ {
+ super(label);
+ this.target = target;
+ }
+
+ public void execute()
+ {
+ XSDVisitor visitor = new XSDVisitor()
+ {
+ public void visitElementDeclaration(org.eclipse.xsd.XSDElementDeclaration element)
+ {
+ if (element.getTypeDefinition() == target)
+ {
+ XSDSimpleTypeDefinition type = target.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string");
+ element.setTypeDefinition(type);
+ }
+ super.visitElementDeclaration(element);
+ }
+ };
+
+ XSDConcreteComponent parent = target.getContainer();
+
+ if (target instanceof XSDModelGroup || target instanceof XSDElementDeclaration || target instanceof XSDModelGroupDefinition)
+ {
+ if (parent instanceof XSDParticle)
+ {
+ if (parent.getContainer() instanceof XSDModelGroup)
+ {
+ XSDModelGroup modelGroup = (XSDModelGroup) ((XSDParticle) parent).getContainer();
+
+ modelGroup.getContents().remove(parent);
+ }
+ }
+ else if (parent instanceof XSDSchema)
+ {
+ visitor.visitSchema(target.getSchema());
+ ((XSDSchema) parent).getContents().remove(target);
+ }
+
+ }
+ else if (target instanceof XSDAttributeDeclaration)
+ {
+ if (parent instanceof XSDAttributeUse)
+ {
+ EObject obj = parent.eContainer();
+ XSDComplexTypeDefinition complexType = null;
+ while (obj != null)
+ {
+ if (obj instanceof XSDComplexTypeDefinition)
+ {
+ complexType = (XSDComplexTypeDefinition) obj;
+ break;
+ }
+ obj = obj.eContainer();
+ }
+ if (complexType != null)
+ {
+ complexType.getAttributeContents().remove((XSDAttributeUse) parent);
+ }
+
+ if (parent.getContainer() instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) parent.getContainer();
+
+ attrGroup.getContents().remove(parent);
+ }
+ }
+ }
+ else if (target instanceof XSDAttributeGroupDefinition &&
+ parent instanceof XSDComplexTypeDefinition)
+ {
+ ((XSDComplexTypeDefinition)parent).getAttributeContents().remove(target);
+ }
+ else if (target instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumerationFacet = (XSDEnumerationFacet)target;
+ enumerationFacet.getSimpleTypeDefinition().getFacetContents().remove(enumerationFacet);
+ }
+ else
+ {
+ if (parent instanceof XSDSchema)
+ {
+ visitor.visitSchema(target.getSchema());
+ ((XSDSchema) parent).getContents().remove(target);
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoAttrCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoAttrCommand.java
new file mode 100644
index 0000000..031e975
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoAttrCommand.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+
+public class RemoveAppInfoAttrCommand extends Command
+{
+ Element hostElement;
+ Attr attr;
+
+ public RemoveAppInfoAttrCommand(String label, Element hostElement, Attr attr)
+ {
+ super(label);
+ this.hostElement = hostElement;
+ this.attr = attr;
+ }
+
+ public void execute()
+ {
+ super.execute();
+ hostElement.removeAttributeNode(attr);
+ }
+
+ public void undo()
+ {
+ super.undo();
+ //TODO implement me
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoElementCommand.java
new file mode 100644
index 0000000..fabfe62
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoElementCommand.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDAnnotation;
+import org.w3c.dom.Node;
+
+public class RemoveAppInfoElementCommand extends Command
+{
+ XSDAnnotation xsdAnnotation;
+ Node appInfo;
+
+ public RemoveAppInfoElementCommand(String label, XSDAnnotation xsdAnnotation, Node appInfo)
+ {
+ super(label);
+ this.xsdAnnotation = xsdAnnotation;
+ this.appInfo = appInfo;
+ }
+
+ public void execute()
+ {
+ super.execute();
+ xsdAnnotation.getApplicationInformation().remove(appInfo);
+ xsdAnnotation.getElement().removeChild(appInfo);
+ xsdAnnotation.updateElement();
+ }
+
+ public void undo()
+ {
+ super.undo();
+ xsdAnnotation.getApplicationInformation().add(appInfo);
+ xsdAnnotation.getElement().appendChild(appInfo);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetMultiplicityCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetMultiplicityCommand.java
similarity index 71%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetMultiplicityCommand.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetMultiplicityCommand.java
index 4c8c27d..1810fde 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetMultiplicityCommand.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetMultiplicityCommand.java
@@ -1,29 +1,30 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.commands;
+package org.eclipse.wst.xsd.ui.common.commands;
import org.eclipse.xsd.XSDConcreteComponent;
import org.eclipse.xsd.XSDParticle;
import org.eclipse.xsd.XSDParticleContent;
-public class SetMultiplicityCommand extends AbstractCommand
+public class SetMultiplicityCommand extends BaseCommand
{
+ XSDConcreteComponent parent;
int maxOccurs, minOccurs;
/**
* @param parent
*/
- public SetMultiplicityCommand(XSDConcreteComponent parent)
+ public SetMultiplicityCommand(String label)
{
- super(parent);
+ super(label);
}
public void setMaxOccurs(int i)
@@ -36,12 +37,16 @@
minOccurs=i;
}
+ public void setXSDConcreteComponent(XSDConcreteComponent parent)
+ {
+ this.parent = parent;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#run()
*/
- public void run()
+ public void execute()
{
- XSDConcreteComponent parent = getParent();
if (parent instanceof XSDParticleContent)
{
XSDParticleContent xsdParticleContent = (XSDParticleContent)parent;
@@ -54,13 +59,4 @@
xsdParticle.setMinOccurs(minOccurs);
}
}
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
- */
- protected boolean adopt(XSDConcreteComponent model)
- {
- return false;
- }
-
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetTypeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetTypeCommand.java
new file mode 100644
index 0000000..2c02f61
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetTypeCommand.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.jface.window.Window;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.actions.SetTypeAction;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+
+public class SetTypeCommand extends BaseCommand
+{
+ XSDConcreteComponent parent;
+ private boolean continueApply;
+ XSDBaseAdapter adapter;
+ String action;
+
+ public SetTypeCommand(String label, String ID, XSDConcreteComponent parent)
+ {
+ super(label);
+ this.parent = parent;
+ this.action = ID;
+ }
+
+ public void setAdapter(XSDBaseAdapter adapter)
+ {
+ this.adapter = adapter;
+ }
+
+ public void execute()
+ {
+ ComponentReferenceEditManager componentReferenceEditManager = getComponentReferenceEditManager();
+ continueApply = true;
+ if (parent instanceof XSDElementDeclaration)
+ {
+ if (action.equals(SetTypeAction.SET_NEW_TYPE_ID))
+ {
+ ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getNewDialog());
+ if (continueApply)
+ componentReferenceEditManager.modifyComponentReference(adapter, newValue);
+ }
+ else
+ {
+ ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getBrowseDialog());
+ if (continueApply)
+ componentReferenceEditManager.modifyComponentReference(adapter, newValue);
+ }
+ formatChild(parent.getElement());
+ }
+
+ }
+
+ private Object invokeDialog(IComponentDialog dialog)
+ {
+ Object newValue = null;
+
+ if (dialog == null)
+ {
+ return null;
+ }
+
+ if (dialog.createAndOpen() == Window.OK)
+ {
+ newValue = dialog.getSelectedComponent();
+ }
+ else
+ {
+ continueApply = false;
+ }
+
+ return newValue;
+ }
+
+ protected ComponentReferenceEditManager getComponentReferenceEditManager()
+ {
+ ComponentReferenceEditManager result = null;
+ IEditorPart editor = getActiveEditor();
+ if (editor != null)
+ {
+ result = (ComponentReferenceEditManager)editor.getAdapter(ComponentReferenceEditManager.class);
+ }
+ return result;
+ }
+
+ private IEditorPart getActiveEditor()
+ {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ return editorPart;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetXSDFacetValueCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetXSDFacetValueCommand.java
new file mode 100644
index 0000000..33c3523
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetXSDFacetValueCommand.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDFacet;
+
+public class SetXSDFacetValueCommand extends BaseCommand
+{
+ protected XSDFacet facet;
+ protected String value;
+
+ public SetXSDFacetValueCommand(String label, XSDFacet facet)
+ {
+ super(label);
+ this.facet = facet;
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
+ public void execute()
+ {
+ facet.setLexicalValue(value);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java
new file mode 100644
index 0000000..fddfcf3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java
@@ -0,0 +1,26 @@
+package org.eclipse.wst.xsd.ui.common.commands;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public abstract class UpdateComponentReferenceAndManageDirectivesCommand extends Command{
+ protected XSDConcreteComponent concreteComponent;
+ protected String componentName;
+ protected String componentNamespace;
+ protected IFile file;
+
+ public UpdateComponentReferenceAndManageDirectivesCommand(XSDConcreteComponent concreteComponent, String componentName, String componentNamespace, IFile file)
+ {
+ this.concreteComponent = concreteComponent;
+ this.componentName = componentName;
+ this.componentNamespace = componentNamespace;
+ this.file = file;
+ }
+
+ protected abstract XSDComponent computeComponent();
+
+ public abstract void execute() ;
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateContentModelCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateContentModelCommand.java
new file mode 100644
index 0000000..0faa3e5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateContentModelCommand.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDModelGroup;
+
+public class UpdateContentModelCommand extends Command
+{
+ XSDModelGroup xsdModelGroup;
+ XSDCompositor oldXSDCompositor, newXSDCompositor;
+
+
+ public UpdateContentModelCommand(String label, XSDModelGroup xsdModelGroup, XSDCompositor xsdCompositor)
+ {
+ super(label);
+ this.xsdModelGroup = xsdModelGroup;
+ this.newXSDCompositor = xsdCompositor;
+ this.oldXSDCompositor = xsdModelGroup.getCompositor();
+ }
+
+
+ public void execute()
+ {
+ super.execute();
+ xsdModelGroup.setCompositor(newXSDCompositor);
+
+ }
+
+ public void undo()
+ {
+ xsdModelGroup.setCompositor(oldXSDCompositor);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceAndManageDirectivesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceAndManageDirectivesCommand.java
new file mode 100644
index 0000000..e07dbca
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceAndManageDirectivesCommand.java
@@ -0,0 +1,135 @@
+package org.eclipse.wst.xsd.ui.common.commands;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.util.XSDResourceImpl;
+
+public class UpdateElementReferenceAndManageDirectivesCommand extends
+UpdateComponentReferenceAndManageDirectivesCommand{
+
+ public UpdateElementReferenceAndManageDirectivesCommand(XSDConcreteComponent concreteComponent,
+ String componentName, String componentNamespace, IFile file)
+ {
+ super(concreteComponent, componentName, componentNamespace, file);
+ }
+
+ protected XSDComponent computeComponent()
+ {
+ XSDElementDeclaration result = null;
+ XSDSchema schema = concreteComponent.getSchema();
+ XSDSchemaDirective directive = null;
+
+ // TODO (cs) handle case where namespace==null
+ //
+ if (componentNamespace != null)
+ {
+
+ // lets see if the element is already visible to our schema
+ result = getDefinedComponent(schema, componentName, componentNamespace);
+ if (result == null)
+ {
+ // TODO (cs) we need to provide a separate command to do this part
+ //
+ // apparently the element is not yet visible, we need to add includes/imports to get to it
+ if (componentNamespace.equals(schema.getTargetNamespace()))
+ {
+ // we need to add an include
+ directive =XSDFactory.eINSTANCE.createXSDInclude();
+ }
+ else
+ {
+ // we need to add an import
+ XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+ xsdImport.setNamespace(componentNamespace);
+ directive = xsdImport;
+ }
+
+ // TODO (cs) we need to compute a relative URI to make this nicer!
+ //
+ String fileURI = file.getLocationURI().toString();
+ if (fileURI.startsWith("file:/") && !fileURI.startsWith("file:///"))
+ {
+ fileURI = "file:///" + fileURI.substring(6);
+ }
+ directive.setSchemaLocation(fileURI);
+
+ // TODO (cs) we should at the directive 'next' in the list of directives
+ // for now I'm just adding as the first thing in the schema :-(
+ //
+ schema.getContents().add(0, directive);
+ XSDSchema resolvedSchema = directive.getResolvedSchema();
+
+ if (resolvedSchema == null)
+ {
+ System.out.println("resolvedSchema is null!!!");
+ Resource resource = concreteComponent.eResource().getResourceSet().createResource(URI.createURI(fileURI));
+ if (resource instanceof XSDResourceImpl)
+ {
+ try
+ {
+ resource.load(null);
+ XSDResourceImpl resourceImpl = (XSDResourceImpl)resource;
+ resolvedSchema = resourceImpl.getSchema();
+ if (resolvedSchema != null)
+ {
+ System.out.println("Strange... managed to make the schema resovle myself 8-P" + resource);
+ directive.setResolvedSchema(resolvedSchema);
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+ }
+ if (resolvedSchema != null)
+ {
+ result = getDefinedComponent(resolvedSchema, componentName, componentNamespace);
+ }
+ else
+ {
+ // TODO (cs) consider setting some error state so that the client can provide a pop-dialog error
+ // we should also remove the import/include so save from cluttering the file with bogus directives
+ }
+ }
+ }
+ return result;
+ }
+
+ private XSDElementDeclaration getDefinedComponent(XSDSchema schema,
+ String componentName, String componentNamespace) {
+ XSDElementDeclaration result = schema.resolveElementDeclaration(componentNamespace, componentName);
+ if (result.eContainer() == null)
+ {
+ result = null;
+ }
+ return result;
+ }
+
+ public void execute() {
+ try
+ {
+ XSDComponent elementDef = computeComponent();
+ if (elementDef != null)
+ {
+ UpdateElementReferenceCommand command = new UpdateElementReferenceCommand(
+ "Update Element Reference", (XSDElementDeclaration) concreteComponent,
+ (XSDElementDeclaration) elementDef);
+ command.execute();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceCommand.java
new file mode 100644
index 0000000..5f05506
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceCommand.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDElementDeclaration;
+
+public class UpdateElementReferenceCommand extends BaseCommand
+{
+ XSDElementDeclaration element, ref;
+
+ public UpdateElementReferenceCommand(String label, XSDElementDeclaration element, XSDElementDeclaration ref)
+ {
+ super(label);
+ this.element = element;
+ this.ref = ref;
+ }
+
+ public void execute()
+ {
+ element.setResolvedElementDeclaration(ref);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMaxOccursCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMaxOccursCommand.java
new file mode 100644
index 0000000..a1f0ff4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMaxOccursCommand.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class UpdateMaxOccursCommand extends Command
+{
+ private int oldMaxOccurs;
+ private int newMaxOccurs;
+ private boolean removeMaxOccursAttribute;
+
+ XSDParticle particle;
+
+ public UpdateMaxOccursCommand(String label, XSDParticle particle, int MaxOccurs)
+ {
+ super(label);
+ this.newMaxOccurs = MaxOccurs;
+ this.particle = particle;
+ }
+
+ public void execute()
+ {
+ Element element = particle.getElement();
+ String currentMax = element.getAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+ removeMaxOccursAttribute = (currentMax == null)? true: false;
+ oldMaxOccurs = particle.getMaxOccurs();
+ particle.setMaxOccurs(newMaxOccurs);
+ }
+
+ public void redo()
+ {
+ execute();
+ }
+
+ public void undo()
+ {
+ if (removeMaxOccursAttribute)
+ {
+ particle.unsetMaxOccurs();
+ }
+ else
+ {
+ particle.setMaxOccurs(oldMaxOccurs);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMinOccursCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMinOccursCommand.java
new file mode 100644
index 0000000..457e4c6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMinOccursCommand.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class UpdateMinOccursCommand extends Command
+{
+ private int oldMinOccurs;
+ private int newMinOccurs;
+ private boolean removeMinOccursAttribute;
+
+ XSDComponent component;
+
+ public UpdateMinOccursCommand(String label, XSDComponent component, int minOccurs)
+ {
+ super(label);
+ this.newMinOccurs = minOccurs;
+ this.component = component;
+ }
+
+ public void execute()
+ {
+
+ Element element = component.getElement();
+ String currentMin = element.getAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+ removeMinOccursAttribute = (currentMin == null) ? true : false;
+
+ if (component instanceof XSDParticle)
+ {
+ oldMinOccurs = ((XSDParticle) component).getMinOccurs();
+ ((XSDParticle) component).setMinOccurs(newMinOccurs);
+ }
+ else if (component instanceof XSDAttributeUse)
+ {
+ oldMinOccurs = (((XSDAttributeUse) component).getUse() == XSDAttributeUseCategory.REQUIRED_LITERAL ? 1 : 0);
+ if (newMinOccurs == 1)
+ ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+ else
+ ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.OPTIONAL_LITERAL);
+ }
+ }
+
+ public void undo()
+ {
+ if (component instanceof XSDParticle)
+ {
+ if (removeMinOccursAttribute)
+ {
+ ((XSDParticle) component).unsetMinOccurs();
+ }
+ else
+ {
+ ((XSDParticle) component).setMinOccurs(oldMinOccurs);
+ }
+ }
+ else if (component instanceof XSDAttributeUse)
+ {
+ if (removeMinOccursAttribute)
+ {
+ ((XSDParticle) component).unsetMinOccurs();
+ }
+ else
+ {
+ if (oldMinOccurs == 1)
+ ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+ else
+ ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.OPTIONAL_LITERAL);
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNameCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNameCommand.java
new file mode 100644
index 0000000..b2fd461
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNameCommand.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+
+public class UpdateNameCommand extends Command
+{
+ private String oldName;
+ private String newName;
+ private XSDNamedComponent component;
+
+ public UpdateNameCommand(String label, XSDNamedComponent component, String newName)
+ {
+ super(label);
+
+ if (component instanceof XSDComplexTypeDefinition && component.getName() == null && component.eContainer() instanceof XSDNamedComponent && ((XSDNamedComponent) component.eContainer()).getName() != null)
+ {
+ component = (XSDNamedComponent) component.eContainer();
+ }
+
+ this.component = component;
+ this.newName = newName;
+ this.oldName = component.getName();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.gef.commands.Command#execute()
+ */
+ public void execute()
+ {
+ component.setName(newName);
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNumericBoundsFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNumericBoundsFacetCommand.java
new file mode 100644
index 0000000..26598e1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNumericBoundsFacetCommand.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class UpdateNumericBoundsFacetCommand extends BaseCommand
+{
+ XSDSimpleTypeDefinition xsdSimpleType;
+ String max, min;
+ boolean includeMin, includeMax;
+ private boolean doUpdateMax = false, doUpdateMin = false;
+ XSDMinInclusiveFacet minInclusiveFacet;
+ XSDMinExclusiveFacet minExclusiveFacet;
+ XSDMaxInclusiveFacet maxInclusiveFacet;
+ XSDMaxExclusiveFacet maxExclusiveFacet;
+
+
+ public UpdateNumericBoundsFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleType, boolean includeMin, boolean includeMax)
+ {
+ super(label);
+ this.xsdSimpleType = xsdSimpleType;
+ this.includeMin = includeMin;
+ this.includeMax = includeMax;
+
+ minInclusiveFacet = xsdSimpleType.getMinInclusiveFacet();
+ minExclusiveFacet = xsdSimpleType.getMinExclusiveFacet();
+ maxInclusiveFacet = xsdSimpleType.getMaxInclusiveFacet();
+ maxExclusiveFacet = xsdSimpleType.getMaxExclusiveFacet();
+
+ }
+
+ public void setMin(String min)
+ {
+ this.min = min;
+ doUpdateMin = true;
+ }
+
+ public void setMax(String max)
+ {
+ this.max = max;
+ doUpdateMax = true;
+ }
+
+ public void execute()
+ {
+ if (doUpdateMin)
+ {
+ if (includeMin)
+ {
+ if (minInclusiveFacet == null && min != null)
+ {
+ minInclusiveFacet = XSDFactory.eINSTANCE.createXSDMinInclusiveFacet();
+ minInclusiveFacet.setLexicalValue(min);
+ xsdSimpleType.getFacetContents().add(minInclusiveFacet);
+
+ if (minExclusiveFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(minExclusiveFacet);
+ }
+ }
+ else if (minInclusiveFacet != null && min != null)
+ {
+ minInclusiveFacet.setLexicalValue(min);
+ }
+ else if (minInclusiveFacet != null && min == null)
+ {
+ xsdSimpleType.getFacetContents().remove(minInclusiveFacet);
+ }
+ }
+ else // !includeMin
+ {
+ if (minExclusiveFacet == null && min != null)
+ {
+ minExclusiveFacet = XSDFactory.eINSTANCE.createXSDMinExclusiveFacet();
+ minExclusiveFacet.setLexicalValue(min);
+ xsdSimpleType.getFacetContents().add(minExclusiveFacet);
+
+ if (minInclusiveFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(minInclusiveFacet);
+ }
+ }
+ else if (minExclusiveFacet != null && min != null)
+ {
+ minExclusiveFacet.setLexicalValue(min);
+ }
+ else if (minExclusiveFacet != null && min == null)
+ {
+ xsdSimpleType.getFacetContents().remove(minExclusiveFacet);
+ }
+ }
+ }
+ else if (doUpdateMax)
+ {
+ if (includeMax)
+ {
+ if (maxInclusiveFacet == null && max != null)
+ {
+ maxInclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxInclusiveFacet();
+ maxInclusiveFacet.setLexicalValue(max);
+ xsdSimpleType.getFacetContents().add(maxInclusiveFacet);
+
+ if (maxExclusiveFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(maxExclusiveFacet);
+ }
+ }
+ else if (maxInclusiveFacet != null && max != null)
+ {
+ maxInclusiveFacet.setLexicalValue(max);
+ }
+ else if (maxInclusiveFacet != null && max == null)
+ {
+ xsdSimpleType.getFacetContents().remove(maxInclusiveFacet);
+ }
+ }
+ else // !includeMax
+ {
+ if (maxExclusiveFacet == null && max != null)
+ {
+ maxExclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxExclusiveFacet();
+ maxExclusiveFacet.setLexicalValue(max);
+ xsdSimpleType.getFacetContents().add(maxExclusiveFacet);
+
+ if (maxInclusiveFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(maxInclusiveFacet);
+ }
+ }
+ else if (maxExclusiveFacet != null && max != null)
+ {
+ maxExclusiveFacet.setLexicalValue(max);
+ }
+ else if (maxExclusiveFacet != null && max == null)
+ {
+ xsdSimpleType.getFacetContents().remove(maxExclusiveFacet);
+ }
+ }
+ }
+
+ formatChild(xsdSimpleType.getElement());
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateStringLengthFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateStringLengthFacetCommand.java
new file mode 100644
index 0000000..48d0f63
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateStringLengthFacetCommand.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class UpdateStringLengthFacetCommand extends BaseCommand
+{
+ XSDSimpleTypeDefinition xsdSimpleType;
+ String max, min;
+ private boolean doUpdateMax = false, doUpdateMin = false;
+
+ public UpdateStringLengthFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleType)
+ {
+ super(label);
+ this.xsdSimpleType = xsdSimpleType;
+ }
+
+ public void setMin(String min)
+ {
+ this.min = min;
+ doUpdateMin = true;
+ }
+
+ public void setMax(String max)
+ {
+ this.max = max;
+ doUpdateMax = true;
+ }
+
+ public void execute()
+ {
+ XSDLengthFacet lengthFacet = xsdSimpleType.getEffectiveLengthFacet();
+ XSDMinLengthFacet minLengthFacet = xsdSimpleType.getEffectiveMinLengthFacet();
+ XSDMaxLengthFacet maxLengthFacet = xsdSimpleType.getEffectiveMaxLengthFacet();
+
+ String currentLength = null, currentMin = null, currentMax = null;
+ if (lengthFacet != null)
+ {
+ currentLength = lengthFacet.getLexicalValue();
+ }
+ if (minLengthFacet != null)
+ {
+ currentMin = minLengthFacet.getLexicalValue();
+ }
+ if (maxLengthFacet != null)
+ {
+ currentMax = maxLengthFacet.getLexicalValue();
+ }
+
+ if (doUpdateMax && !doUpdateMin)
+ {
+ if (maxLengthFacet != null)
+ {
+ if (max != null)
+ {
+ if (max.equals(currentMin))
+ {
+ lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+ lengthFacet.setLexicalValue(max);
+ xsdSimpleType.getFacetContents().add(lengthFacet);
+ xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+ xsdSimpleType.getFacetContents().remove(minLengthFacet);
+ }
+ else
+ {
+ if (lengthFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(lengthFacet);
+ }
+ if (minLengthFacet == null && currentLength != null)
+ {
+ minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ minLengthFacet.setLexicalValue(currentLength);
+ xsdSimpleType.getFacetContents().add(minLengthFacet);
+ }
+ maxLengthFacet.setLexicalValue(max);
+ }
+ }
+ else
+ {
+ xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+ }
+ }
+ else
+ {
+ if (currentMin != null && currentMin.equals(max))
+ {
+ if (lengthFacet == null)
+ {
+ lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+ xsdSimpleType.getFacetContents().add(lengthFacet);
+ }
+ lengthFacet.setLexicalValue(max);
+ xsdSimpleType.getFacetContents().remove(minLengthFacet);
+ }
+ else if (currentLength != null && !currentLength.equals(max))
+ {
+ xsdSimpleType.getFacetContents().remove(lengthFacet);
+
+ if (max != null)
+ {
+ maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ maxLengthFacet.setLexicalValue(max);
+ xsdSimpleType.getFacetContents().add(maxLengthFacet);
+ }
+
+ minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ minLengthFacet.setLexicalValue(currentLength);
+ xsdSimpleType.getFacetContents().add(minLengthFacet);
+ }
+ else
+ {
+ if (lengthFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(lengthFacet);
+
+ minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ minLengthFacet.setLexicalValue(currentLength);
+ xsdSimpleType.getFacetContents().add(minLengthFacet);
+
+ }
+ maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ maxLengthFacet.setLexicalValue(max);
+ xsdSimpleType.getFacetContents().add(maxLengthFacet);
+ }
+ }
+ }
+ else if (!doUpdateMax && doUpdateMin)
+ {
+ if (minLengthFacet != null)
+ {
+ if (min != null)
+ {
+ if (min.equals(currentMax))
+ {
+ lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+ lengthFacet.setLexicalValue(min);
+ xsdSimpleType.getFacetContents().add(lengthFacet);
+ xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+ xsdSimpleType.getFacetContents().remove(minLengthFacet);
+ }
+ else
+ {
+ if (lengthFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(lengthFacet);
+ }
+ if (maxLengthFacet == null && currentLength != null)
+ {
+ maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ maxLengthFacet.setLexicalValue(currentLength);
+ xsdSimpleType.getFacetContents().add(maxLengthFacet);
+ }
+ minLengthFacet.setLexicalValue(min);
+ }
+ }
+ else
+ {
+ xsdSimpleType.getFacetContents().remove(minLengthFacet);
+ }
+ }
+ else
+ {
+ if (currentMax != null && currentMax.equals(min))
+ {
+ if (lengthFacet == null)
+ {
+ lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+ xsdSimpleType.getFacetContents().add(lengthFacet);
+ }
+ lengthFacet.setLexicalValue(min);
+ xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+ }
+ else if (currentLength != null && !currentLength.equals(min))
+ {
+ xsdSimpleType.getFacetContents().remove(lengthFacet);
+
+ if (min != null)
+ {
+ minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ minLengthFacet.setLexicalValue(min);
+ xsdSimpleType.getFacetContents().add(minLengthFacet);
+ }
+
+ maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ maxLengthFacet.setLexicalValue(currentLength);
+ xsdSimpleType.getFacetContents().add(maxLengthFacet);
+ }
+ else
+ {
+ minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+ minLengthFacet.setLexicalValue(min);
+ xsdSimpleType.getFacetContents().add(minLengthFacet);
+
+ if (lengthFacet != null)
+ {
+ xsdSimpleType.getFacetContents().remove(lengthFacet);
+
+ maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+ maxLengthFacet.setLexicalValue(currentLength);
+ xsdSimpleType.getFacetContents().add(maxLengthFacet);
+ }
+ }
+ }
+ }
+ formatChild(xsdSimpleType.getElement());
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceAndManageDirectivesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceAndManageDirectivesCommand.java
new file mode 100644
index 0000000..157c1a9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceAndManageDirectivesCommand.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDResourceImpl;
+
+public class UpdateTypeReferenceAndManageDirectivesCommand extends UpdateComponentReferenceAndManageDirectivesCommand
+{
+
+ public UpdateTypeReferenceAndManageDirectivesCommand(XSDConcreteComponent concreteComponent,
+ String componentName, String componentNamespace, IFile file)
+ {
+ super(concreteComponent, componentName, componentNamespace, file);
+ }
+
+ public XSDComponent computeComponent()
+ {
+ XSDComponent result = null;
+ XSDSchema schema = concreteComponent.getSchema();
+ XSDSchemaDirective directive = null;
+
+ // TODO (cs) handle case where namespace==null
+ //
+ if (componentNamespace != null)
+ {
+ if (XSDConstants.isSchemaForSchemaNamespace(componentNamespace))
+ {
+ // this is the easy case, its just a built-in type
+ //
+ result = getDefinedComponent(schema, componentName, componentNamespace);
+ }
+ else
+ {
+ // lets see if the type is already visible to our schema
+ result = getDefinedComponent(schema, componentName, componentNamespace);
+ if (result == null)
+ {
+ // TODO (cs) we need to provide a separate command to do this part
+ // TODO (trung) directives in the outline view does not get updated
+ // apparently the type is not yet visible, we need to add includes/imports to get to it
+ if (componentNamespace.equals(schema.getTargetNamespace()))
+ {
+ // we need to add an include
+ directive =XSDFactory.eINSTANCE.createXSDInclude();
+ }
+ else
+ {
+ // we need to add an import
+ XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+ xsdImport.setNamespace(componentNamespace);
+ directive = xsdImport;
+ }
+
+ // TODO (cs) we need to compute a relative URI to make this nicer!
+ //
+ String fileURI = file.getLocationURI().toString();
+ if (fileURI.startsWith("file:/") && !fileURI.startsWith("file:///"))
+ {
+ fileURI = "file:///" + fileURI.substring(6);
+ }
+ directive.setSchemaLocation(fileURI);
+
+ // TODO (cs) we should at the directive 'next' in the list of directives
+ // for now I'm just adding as the first thing in the schema :-(
+ //
+ schema.getContents().add(0, directive);
+ XSDSchema resolvedSchema = directive.getResolvedSchema();
+
+ if (resolvedSchema == null)
+ {
+ System.out.println("resolvedSchema is null!!!");
+ Resource resource = concreteComponent.eResource().getResourceSet().createResource(URI.createURI(fileURI));
+ if (resource instanceof XSDResourceImpl)
+ {
+ try
+ {
+ resource.load(null);
+ XSDResourceImpl resourceImpl = (XSDResourceImpl)resource;
+ resolvedSchema = resourceImpl.getSchema();
+ if (resolvedSchema != null)
+ {
+ System.out.println("Strange... managed to make the schema resovle myself 8-P" + resource);
+ directive.setResolvedSchema(resolvedSchema);
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+ }
+ if (resolvedSchema != null)
+ {
+ result = getDefinedComponent(resolvedSchema, componentName, componentNamespace);
+ }
+ else
+ {
+ // TODO (cs) consider setting some error state so that the client can provide a pop-dialog error
+ // we should also remove the import/include so save from cluttering the file with bogus directives
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+
+ private XSDTypeDefinition getDefinedComponent(XSDSchema schema, String componentName, String componentNamespace)
+ {
+ XSDTypeDefinition result = schema.resolveTypeDefinition(componentNamespace, componentName);
+ if (result.eContainer() == null)
+ {
+ result = null;
+ }
+ return result;
+ }
+
+
+ public void execute()
+ {
+ try
+ {
+ XSDComponent td = computeComponent();
+ if (td != null && td instanceof XSDTypeDefinition)
+ {
+ UpdateTypeReferenceCommand command = new UpdateTypeReferenceCommand(
+ concreteComponent, (XSDTypeDefinition) td);
+ command.execute();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceCommand.java
new file mode 100644
index 0000000..b9b9a8a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceCommand.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public class UpdateTypeReferenceCommand extends Command
+{
+ XSDConcreteComponent concreteComponent;
+ XSDTypeDefinition newType;
+
+ public UpdateTypeReferenceCommand(XSDConcreteComponent concreteComponent, XSDTypeDefinition newType)
+ {
+ this.concreteComponent = concreteComponent;
+ this.newType = newType;
+ }
+
+ public void execute()
+ {
+
+ if (concreteComponent instanceof XSDElementDeclaration)
+ {
+ setElementType((XSDElementDeclaration)concreteComponent);
+ }
+ else if (concreteComponent instanceof XSDAttributeUse)
+ {
+ setAttributeType((XSDAttributeUse)concreteComponent);
+ }
+ else if (concreteComponent instanceof XSDAttributeDeclaration)
+ {
+ setAttributeType((XSDAttributeDeclaration)concreteComponent);
+ }
+ }
+
+ protected void setElementType(XSDElementDeclaration ed)
+ {
+ ed = ed.getResolvedElementDeclaration();
+ if (ed != null)
+ {
+ ed.setTypeDefinition(newType);
+ }
+ }
+
+ protected void setAttributeType(XSDAttributeUse attributeUse)
+ {
+ setAttributeType(attributeUse.getAttributeDeclaration());
+ }
+
+ protected void setAttributeType(XSDAttributeDeclaration ad)
+ {
+ ad = ad.getResolvedAttributeDeclaration();
+ if (ad != null && newType instanceof XSDSimpleTypeDefinition)
+ {
+ ad.setTypeDefinition((XSDSimpleTypeDefinition)newType);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDPatternFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDPatternFacetCommand.java
new file mode 100644
index 0000000..2880469
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDPatternFacetCommand.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class UpdateXSDPatternFacetCommand extends BaseCommand
+{
+ public static final int ADD = 0;
+ public static final int DELETE = 1;
+ public static final int UPDATE = 2;
+
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition;
+ String value;
+ int actionType;
+ XSDPatternFacet patternToEdit;
+
+ public UpdateXSDPatternFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleTypeDefinition, int actionType)
+ {
+ super(label);
+ this.xsdSimpleTypeDefinition = xsdSimpleTypeDefinition;
+ this.actionType = actionType;
+
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
+ public void setPatternToEdit(XSDPatternFacet patternToEdit)
+ {
+ this.patternToEdit = patternToEdit;
+ }
+
+ public void execute()
+ {
+ if (actionType == ADD)
+ {
+ XSDPatternFacet pattern = XSDFactory.eINSTANCE.createXSDPatternFacet();
+ pattern.setLexicalValue(value);
+ xsdSimpleTypeDefinition.getFacetContents().add(pattern);
+ }
+ else if (actionType == DELETE)
+ {
+ Assert.isNotNull(patternToEdit);
+ if (xsdSimpleTypeDefinition.getFacetContents().contains(patternToEdit))
+ xsdSimpleTypeDefinition.getFacetContents().remove(patternToEdit);
+ }
+ else if (actionType == UPDATE)
+ {
+ Assert.isNotNull(patternToEdit);
+ patternToEdit.setLexicalValue(value);
+ }
+ formatChild(xsdSimpleTypeDefinition.getElement());
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDWhiteSpaceFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDWhiteSpaceFacetCommand.java
new file mode 100644
index 0000000..05b64d6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDWhiteSpaceFacetCommand.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.commands;
+
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDWhiteSpace;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+
+public class UpdateXSDWhiteSpaceFacetCommand extends BaseCommand
+{
+ XSDSimpleTypeDefinition xsdSimpleTypeDefinition;
+ boolean doAddFacet;
+
+ public UpdateXSDWhiteSpaceFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleType, boolean doAddFacet)
+ {
+ super(label);
+ this.xsdSimpleTypeDefinition = xsdSimpleType;
+ this.doAddFacet = doAddFacet;
+ }
+
+ public void execute()
+ {
+ XSDWhiteSpaceFacet whitespaceFacet = xsdSimpleTypeDefinition.getWhiteSpaceFacet();
+
+ if (doAddFacet)
+ {
+ if (whitespaceFacet == null)
+ {
+ whitespaceFacet = XSDFactory.eINSTANCE.createXSDWhiteSpaceFacet();
+ xsdSimpleTypeDefinition.getFacetContents().add(whitespaceFacet);
+ }
+ whitespaceFacet.setLexicalValue(XSDWhiteSpace.COLLAPSE_LITERAL.getName());
+ }
+ else
+ {
+ if (whitespaceFacet != null)
+ {
+ xsdSimpleTypeDefinition.getFacetContents().remove(whitespaceFacet);
+ }
+ }
+ formatChild(xsdSimpleTypeDefinition.getElement());
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/providers/XSDSectionLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/providers/XSDSectionLabelProvider.java
new file mode 100644
index 0000000..b633a98
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/providers/XSDSectionLabelProvider.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.providers;
+
+import org.eclipse.jface.util.Assert;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Element;
+
+public class XSDSectionLabelProvider extends LabelProvider
+{
+ /**
+ *
+ */
+ public XSDSectionLabelProvider()
+ {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage(Object object)
+ {
+ if (object == null || object.equals(StructuredSelection.EMPTY))
+ {
+ return null;
+ }
+ Image result = null;
+ if (object instanceof StructuredSelection)
+ {
+ Object selected = ((StructuredSelection) object).getFirstElement();
+
+ if (selected instanceof XSDConcreteComponent)
+ {
+ XSDBaseAdapter adapter = (XSDBaseAdapter)XSDAdapterFactory.getInstance().adapt((XSDConcreteComponent)selected);
+ if (adapter instanceof ITreeElement)
+ {
+ return ((ITreeElement)adapter).getImage();
+ }
+
+ }
+ }
+ return result;
+ }
+
+ /**
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+ */
+ public String getText(Object object)
+ {
+ if (object == null || object.equals(StructuredSelection.EMPTY))
+ {
+ return "No items selected";
+ }
+
+ String result = null;
+
+ boolean isReference = false;
+ Object selected = null;
+ if (object instanceof StructuredSelection)
+ {
+ selected = ((StructuredSelection) object).getFirstElement();
+
+ if (selected instanceof XSDConcreteComponent)
+ {
+ if (selected instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) selected;
+ if (xsdElementDeclaration.isElementDeclarationReference())
+ {
+ isReference = true;
+ }
+ } else if (selected instanceof XSDAttributeDeclaration)
+ {
+ if (((XSDAttributeDeclaration) selected).isAttributeDeclarationReference())
+ {
+ isReference = true;
+ }
+ } else if (selected instanceof XSDModelGroupDefinition)
+ {
+ if (((XSDModelGroupDefinition) selected).isModelGroupDefinitionReference())
+ {
+ isReference = true;
+ }
+ }
+ StringBuffer sb = new StringBuffer();
+ Element element = ((XSDConcreteComponent) selected).getElement();
+ if (element != null)
+ {
+ sb.append(((XSDConcreteComponent) selected).getElement().getLocalName());
+
+ if (isReference)
+ {
+ sb.append(" ");//$NON-NLS-1$
+ sb.append(Messages.UI_PAGE_HEADING_REFERENCE);
+ }
+
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ XSDSchema xsdSchema = ((XSDConcreteComponent) selected).getSchema();
+ if (xsdSchema != editorPart.getAdapter(XSDSchema.class))
+ {
+ sb.append(" (" + Messages.UI_LABEL_READ_ONLY + ")"); //$NON-NLS-1$
+ }
+ return sb.toString();
+ }
+ else
+ {
+ return "(" + Messages.UI_LABEL_READ_ONLY + ")"; //$NON-NLS-1$
+ }
+ }
+
+ if (object instanceof Element)
+ {
+ return ((Element) object).getLocalName();
+ }
+ }
+
+ return result;
+ }
+
+ private Object getObject(Object objects, boolean multiple[])
+ {
+ Assert.isNotNull(objects);
+ Object object = null;
+ return object;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSection.java
new file mode 100644
index 0000000..ba785f2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSection.java
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.SubContributionManager;
+import org.eclipse.jface.action.SubStatusLineManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.FormColors;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public abstract class AbstractSection extends AbstractPropertySection implements SelectionListener, Listener
+{
+ protected Composite composite;
+ protected PaintListener painter;
+ protected XSDSchema xsdSchema;
+ protected Object input;
+ protected boolean isReadOnly;
+ protected boolean listenerEnabled = true;
+ protected boolean isSimple;
+ protected CustomListener customListener = new CustomListener();
+ protected IEditorPart owningEditor;
+ private IStatusLineManager statusLine;
+
+ public static final Image ICON_ERROR = XSDEditorPlugin.getDefault().getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
+
+ public AbstractSection()
+ {
+ super();
+ }
+
+ public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage)
+ {
+ super.createControls(parent, aTabbedPropertySheetPage);
+ isSimple = getIsSimple();
+ createContents(parent);
+ }
+
+ protected abstract void createContents(Composite parent);
+
+ protected PaintListener createPainter() {
+ return new PaintListener() {
+
+ public void paintControl(PaintEvent e) {
+ Rectangle bounds = composite.getClientArea();
+ GC gc = e.gc;
+
+ gc.setForeground(gc.getBackground());
+ gc.setBackground(getWidgetFactory().getColors().getColor(
+ FormColors.TB_BG));
+
+// gc.fillGradientRectangle(4 + bounds.width / 2, 0,
+// bounds.width / 2 - 9, bounds.height, false);
+
+ gc.setForeground(getWidgetFactory().getColors().getColor(
+ FormColors.TB_BORDER));
+// gc.drawLine(bounds.width - 5, 0, bounds.width - 5,
+// bounds.height);
+ }
+
+ };
+
+ }
+
+ public void dispose()
+ {
+ if (composite != null && ! composite.isDisposed() && painter != null)
+ composite.removePaintListener(painter);
+
+ super.dispose();
+ }
+
+ public void setInput(IWorkbenchPart part, ISelection selection) {
+ super.setInput(part, selection);
+ isSimple = getIsSimple();
+ Object input = ((IStructuredSelection)selection).getFirstElement();
+ this.input = input;
+
+ if (input instanceof XSDConcreteComponent)
+ {
+ xsdSchema = ((XSDConcreteComponent)input).getSchema();
+ }
+
+ // set owning editor of this section
+ if (part!=null)
+ {
+ if (part instanceof IEditorPart)
+ {
+ owningEditor = (IEditorPart)part;
+ }
+ else
+ {
+ owningEditor = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
+ }
+ }
+ if (xsdSchema == owningEditor.getAdapter(XSDSchema.class))
+ {
+ isReadOnly = false;
+ }
+ else
+ {
+ isReadOnly = true;
+ }
+
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+
+ if (isReadOnly)
+ {
+ composite.setEnabled(false);
+ }
+ else
+ {
+ composite.setEnabled(true);
+ }
+ }
+
+ public void applyAllListeners(Control control)
+ {
+ control.addListener(SWT.Modify, customListener);
+ control.addListener(SWT.FocusOut, customListener);
+ control.addListener(SWT.KeyDown, customListener);
+ }
+
+ public void applyModifyListeners(Control control)
+ {
+ control.addListener(SWT.Modify, customListener);
+ control.addListener(SWT.FocusOut, customListener);
+ }
+
+ public void applyKeyListener(Control control)
+ {
+ control.addListener(SWT.KeyDown, customListener);
+ }
+
+ public void removeListeners(Control control)
+ {
+ control.removeListener(SWT.Modify, customListener);
+ control.removeListener(SWT.FocusOut, customListener);
+ control.removeListener(SWT.KeyDown, customListener);
+ }
+
+ public void doWidgetDefaultSelected(SelectionEvent e)
+ {}
+
+ public void doWidgetSelected(SelectionEvent e)
+ {}
+
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (isListenerEnabled() &&
+ input != null &&
+ !isReadOnly)
+ {
+ doWidgetSelected(e);
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e)
+ {
+ if (isListenerEnabled() &&
+ input != null &&
+ !isReadOnly)
+ {
+ doWidgetDefaultSelected(e);
+ }
+ }
+
+ /**
+ * Get the value of listenerEnabled.
+ * @return value of listenerEnabled.
+ */
+ public boolean isListenerEnabled()
+ {
+ return listenerEnabled;
+ }
+
+ /**
+ * Set the value of listenerEnabled.
+ * @param v Value to assign to listenerEnabled.
+ */
+ public void setListenerEnabled(boolean v)
+ {
+ this.listenerEnabled = v;
+ }
+
+ /**
+ * Sent when an event that the receiver has registered for occurs.
+ *
+ * @param event the event which occurred
+ */
+ public void handleEvent(Event event)
+ {
+ if (isListenerEnabled() && !isReadOnly)
+ {
+ doHandleEvent(event);
+ }
+ }
+
+ /**
+ * Subclasses should override
+ * @param event
+ */
+ protected void doHandleEvent(Event event)
+ {
+ }
+
+ protected IEditorPart getActiveEditor()
+ {
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+ this.owningEditor = editorPart;
+ return editorPart;
+ }
+
+ public CommandStack getCommandStack()
+ {
+ Object commandStack = owningEditor.getAdapter(CommandStack.class);
+
+ if (commandStack==null)
+ return null;
+ else
+ return (CommandStack)commandStack;
+ }
+
+ public boolean getIsSimple()
+ {
+ return false;
+ }
+
+
+
+ /**
+ * Intended to display error messages.
+ * @return
+ */
+ private IStatusLineManager getStatusLineManager()
+ {
+ if (statusLine==null && getPart()!=null)
+ {
+ if(getPart().getSite() instanceof IEditorSite)
+ statusLine = ((IEditorSite)getPart().getSite()).getActionBars().getStatusLineManager();
+ else if (getPart().getSite() instanceof IViewSite)
+ statusLine = ((IViewSite)getPart().getSite()).getActionBars().getStatusLineManager();
+
+ /*
+ * We must manually set the visibility of the status line since the action bars are from the editor
+ * which means the status line only shows up when the editor is in focus (by default).
+ * Note only a SubStatusLineManager can set the visibility.
+ */
+ if (statusLine instanceof SubStatusLineManager)
+ ((SubStatusLineManager)statusLine).setVisible(true);
+ }
+
+ return statusLine;
+ }
+
+ /**
+ * Display an error message in the status line.
+ * Call setErrorMessage(null) to clear the status line.
+ * @param text
+ */
+ public void setErrorMessage(String text)
+ {
+ IStatusLineManager statusLine = getStatusLineManager();
+
+ if (statusLine!=null)
+ {
+ if (text==null || text.length()<1)
+ statusLine.setErrorMessage(null);
+ else
+ statusLine.setErrorMessage(ICON_ERROR, text);
+
+ // ensure our message gets displayed
+ if (statusLine instanceof SubContributionManager)
+ ((SubContributionManager)statusLine).setVisible(true);
+
+ statusLine.update(true);
+ }
+ }
+
+
+ protected EObject getModel()
+ {
+ return (XSDComponent)input;
+ }
+
+
+ class CustomListener implements Listener
+ {
+ boolean handlingEvent = false;
+ public void handleEvent(Event event)
+ {
+ if (isListenerEnabled() && !isReadOnly)
+ {
+ switch (event.type)
+ {
+ case SWT.KeyDown :
+ {
+ if (event.character == SWT.CR)
+ {
+ if (!handlingEvent)
+ {
+ handlingEvent = true;
+ doHandleEvent(event);
+ handlingEvent = false;
+ }
+ }
+ break;
+ }
+ case SWT.FocusOut :
+ {
+ if (!handlingEvent)
+ {
+ handlingEvent = true;
+ doHandleEvent(event);
+ handlingEvent = false;
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSectionDescriptor.java
similarity index 81%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSectionDescriptor.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSectionDescriptor.java
index 1cbcf10..19a3545 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSectionDescriptor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSectionDescriptor.java
@@ -1,25 +1,24 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.jface.viewers.IFilter;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITypeMapper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
import org.eclipse.xsd.XSDConcreteComponent;
import org.w3c.dom.Element;
@@ -44,7 +43,7 @@
/* (non-Javadoc)
* @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getFilter()
*/
- public ITypeMapper getFilter()
+ public IFilter getFilter()
{
return null;
}
@@ -101,10 +100,6 @@
return "";
}
- protected boolean inputEquals(Object input, String tagname, boolean isRef)
- {
- return XSDDOMHelper.inputEquals(input, tagname, isRef);
- }
public int getEnablesFor()
{
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AnnotationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AnnotationSection.java
new file mode 100644
index 0000000..9ec3844
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AnnotationSection.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.ui.common.commands.AddDocumentationCommand;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class AnnotationSection extends AbstractSection
+{
+ Text simpleText;
+
+ public void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ simpleText = getWidgetFactory().createText(composite, "", SWT.V_SCROLL | SWT.H_SCROLL); //$NON-NLS-1$
+ simpleText.addListener(SWT.Modify, this);
+
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 1);
+ data.right = new FormAttachment(100, -1);
+ data.top = new FormAttachment(0, 1);
+ data.bottom = new FormAttachment(100, -1);
+ simpleText.setLayoutData(data);
+ }
+
+ public AnnotationSection()
+ {
+ super();
+ }
+
+ /*
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+ */
+ public void refresh()
+ {
+ super.refresh();
+ setListenerEnabled(false);
+ if (input instanceof XSDConcreteComponent)
+ {
+ XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation((XSDConcreteComponent) input, false);
+ setInitialText(xsdAnnotation);
+ }
+ setListenerEnabled(true);
+ }
+
+ public void doHandleEvent(Event event)
+ {
+ if (input instanceof XSDConcreteComponent)
+ {
+ if (event.widget == simpleText)
+ {
+ AddDocumentationCommand command = new AddDocumentationCommand("Add Documentation", null, (XSDConcreteComponent) input, simpleText.getText(), "");
+ getCommandStack().execute(command);
+ }
+ }
+
+ }
+
+ public boolean shouldUseExtraSpace()
+ {
+ return true;
+ }
+
+ public void dispose()
+ {
+
+ }
+
+ private void setInitialText(XSDAnnotation an)
+ {
+ if (an != null)
+ {
+ try
+ {
+ List documentationList = an.getUserInformation();
+ if (documentationList.size() > 0)
+ {
+ Element docElement = (Element) documentationList.get(0);
+ if (docElement != null)
+ {
+ simpleText.setText(doSerialize(docElement));
+ }
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+ else
+ {
+ simpleText.setText("");
+ }
+ }
+
+ private String doSerialize(Element element) throws IOException
+ {
+ String source = "";
+
+ Node firstChild = element.getFirstChild();
+ Node lastChild = element.getLastChild();
+ int start = 0;
+ int end = 0;
+
+ if (element instanceof IDOMElement)
+ {
+ IDOMElement domElement = (IDOMElement) element;
+ IDOMModel model = domElement.getModel();
+ IDOMDocument doc = model.getDocument();
+
+ if (firstChild instanceof IDOMNode)
+ {
+ IDOMNode first = (IDOMNode) firstChild;
+ start = first.getStartOffset();
+ }
+ if (lastChild instanceof IDOMNode)
+ {
+ IDOMNode last = (IDOMNode) lastChild;
+ end = last.getEndOffset();
+ }
+ source = doc.getSource().substring(start, end);
+ }
+
+ return source;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/ApplicationInfoSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/ApplicationInfoSection.java
new file mode 100644
index 0000000..ef4181d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/ApplicationInfoSection.java
@@ -0,0 +1,586 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.MouseTrackAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.AddAppInfoAttributeCommand;
+import org.eclipse.wst.xsd.ui.common.commands.AddAppInfoCommand;
+import org.eclipse.wst.xsd.ui.common.commands.AddAppInfoElementCommand;
+import org.eclipse.wst.xsd.ui.common.commands.RemoveAppInfoAttrCommand;
+import org.eclipse.wst.xsd.ui.common.commands.RemoveAppInfoElementCommand;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.AddApplicationInfoDialog;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.ApplicationInformationPropertiesRegistry;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.ApplicationInformationTableTreeViewer;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class ApplicationInfoSection extends AbstractSection
+{
+ protected static final Image DEFAULT_ELEMENT_ICON = XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+ protected static final Image DEFAULT_ATTR_ICON = XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+ protected ApplicationInformationTableTreeViewer tableTree;
+ protected TableViewer extensibleElementsTable;
+ protected Label extensibilityElementsLabel, contentLabel;
+ protected ISelectionChangedListener elementSelectionChangedListener;
+
+ private Text simpleText;
+ private Composite page, pageBook1, pageBook2;
+ private Button textRadioButton, structureRadioButton;
+ private Button addButton, removeButton;
+ private PageBook pageBook;
+
+ /**
+ *
+ */
+ public ApplicationInfoSection()
+ {
+ super();
+ }
+
+ public void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 1;
+ composite.setLayout(gridLayout);
+
+ GridData gridData = new GridData();
+
+ page = getWidgetFactory().createComposite(composite);
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 1;
+ page.setLayout(gridLayout);
+
+ gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ page.setLayoutData(gridData);
+
+ pageBook = new PageBook(page, SWT.FLAT);
+ gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ pageBook.setLayoutData(gridData);
+
+ pageBook2 = getWidgetFactory().createComposite(pageBook, SWT.FLAT);
+
+ gridLayout = new GridLayout();
+ gridLayout.marginHeight = 2;
+ gridLayout.marginWidth = 2;
+ gridLayout.numColumns = 1;
+ pageBook2.setLayout(gridLayout);
+
+ gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ pageBook2.setLayoutData(gridData);
+
+ SashForm sashForm = new SashForm(pageBook2, SWT.HORIZONTAL);
+ gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ sashForm.setLayoutData(gridData);
+
+ Composite leftContent = getWidgetFactory().createComposite(sashForm, SWT.FLAT);
+ gridLayout = new GridLayout();
+ gridLayout.numColumns = 1;
+ leftContent.setLayout(gridLayout);
+
+ extensibilityElementsLabel = getWidgetFactory().createLabel(leftContent, "Extensibility Items");
+ extensibleElementsTable = new TableViewer(leftContent, SWT.FLAT | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.LINE_SOLID);
+ gridLayout = new GridLayout();
+ gridLayout.numColumns = 1;
+ extensibleElementsTable.getTable().setLayout(gridLayout);
+ gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ extensibleElementsTable.getTable().setLayoutData(gridData);
+ extensibleElementsTable.setContentProvider(new ElementTableContentProvider());
+ extensibleElementsTable.setLabelProvider(new ElementTableLabelProvider());
+ elementSelectionChangedListener = new ElementSelectionChangedListener();
+ extensibleElementsTable.addSelectionChangedListener(elementSelectionChangedListener);
+ extensibleElementsTable.getTable().addMouseTrackListener(new MouseTrackAdapter()
+ {
+ public void mouseHover(org.eclipse.swt.events.MouseEvent e)
+ {
+ ISelection selection = extensibleElementsTable.getSelection();
+ if (selection instanceof StructuredSelection)
+ {
+ Object obj = ((StructuredSelection) selection).getFirstElement();
+ if (obj instanceof Element)
+ {
+ Element element = (Element) obj;
+ ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+ // ApplicationSpecificSchemaProperties[] properties =
+ // registry.getAllApplicationSpecificSchemaProperties();
+ // ApplicationSpecificSchemaProperties[] properties =
+ // (ApplicationSpecificSchemaProperties[])
+ // registry.getAllApplicationSpecificSchemaProperties().toArray(new
+ // ApplicationSpecificSchemaProperties[0]);
+ List properties = registry.getAllApplicationSpecificSchemaProperties();
+
+ int length = properties.size();
+ for (int i = 0; i < length; i++)
+ {
+ SpecificationForAppinfoSchema current = (SpecificationForAppinfoSchema) properties.get(i);
+ if (current.getNamespaceURI().equals(element.getNamespaceURI()))
+ {
+ extensibleElementsTable.getTable().setToolTipText(current.getDescription());
+ break;
+ }
+ }
+ }
+ }
+ };
+
+ });
+
+ Composite rightContent = getWidgetFactory().createComposite(sashForm, SWT.FLAT);
+
+ contentLabel = getWidgetFactory().createLabel(rightContent, "Content");
+
+ Composite testComp = getWidgetFactory().createComposite(rightContent, SWT.FLAT);
+
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.marginLeft = 0;
+ gridLayout.marginRight = 0;
+ gridLayout.numColumns = 1;
+ gridLayout.marginHeight = 3;
+ gridLayout.marginWidth = 3;
+ rightContent.setLayout(gridLayout);
+
+ gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ rightContent.setLayoutData(gridData);
+
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginLeft = 0;
+ gridLayout.marginRight = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.marginHeight = 3;
+ gridLayout.marginWidth = 3;
+ gridLayout.numColumns = 1;
+ testComp.setLayout(gridLayout);
+
+ gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+ testComp.setLayoutData(gridData);
+
+ createElementContentWidget(testComp);
+
+ int[] weights = { 30, 70 };
+ sashForm.setWeights(weights);
+
+ Composite buttonComposite = getWidgetFactory().createComposite(pageBook2, SWT.FLAT);
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 2;
+ gridLayout.makeColumnsEqualWidth = true;
+ buttonComposite.setLayout(gridLayout);
+ addButton = getWidgetFactory().createButton(buttonComposite, "Add...", SWT.FLAT);
+ addButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ addButton.addSelectionListener(this);
+ addButton.setToolTipText("Add Extension Component");
+ removeButton = getWidgetFactory().createButton(buttonComposite, "Remove", SWT.FLAT);
+ removeButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ removeButton.addSelectionListener(this);
+ removeButton.setToolTipText("Remove Extension Component");
+
+ pageBook.showPage(pageBook2);
+ }
+
+ protected void createElementContentWidget(Composite parent)
+ {
+ tableTree = new ApplicationInformationTableTreeViewer(parent);
+ GridData gridData = new GridData();
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.grabExcessVerticalSpace = true;
+ gridData.verticalAlignment = GridData.FILL;
+ gridData.horizontalAlignment = GridData.FILL;
+
+ tableTree.getControl().setLayoutData(gridData);
+ }
+
+ /*
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+ */
+ public void refresh()
+ {
+ setListenerEnabled(false);
+ if (input != null)
+ {
+ tableTree.setInput(null);
+ tableTree.getTree().removeAll();
+ extensibleElementsTable.getTable().removeAll();
+
+ extensibleElementsTable.setInput(input);
+
+ if (extensibleElementsTable.getTable().getSelectionCount() == 0)
+ {
+ Object o = extensibleElementsTable.getElementAt(0);
+ if (o != null)
+ {
+ extensibleElementsTable.setSelection(new StructuredSelection(o));
+ if (o instanceof Element)
+ {
+ tableTree.setInput(((Element) o).getParentNode());
+ }
+ }
+ tableTree.refresh();
+ }
+
+ }
+ setListenerEnabled(true);
+
+ }
+
+ public Composite getPage()
+ {
+ return page;
+ }
+
+ public void widgetSelected(SelectionEvent event)
+ {
+ if (event.widget == addButton)
+ {
+ ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+ AddApplicationInfoDialog dialog = new AddApplicationInfoDialog(composite.getShell(), registry);
+
+ List properties = registry.getAllApplicationSpecificSchemaProperties();
+
+ dialog.setInput(properties);
+ dialog.setBlockOnOpen(true);
+
+ if (dialog.open() == Window.OK)
+ {
+ Object[] result = dialog.getResult();
+ if (result != null)
+ {
+ SpecificationForAppinfoSchema appInfoSchemaSpec = (SpecificationForAppinfoSchema) result[1];
+ if (input instanceof XSDConcreteComponent)
+ {
+ AddAppInfoCommand addAppInfo = null;
+ if (result[0] instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration element = (XSDElementDeclaration) result[0];
+ addAppInfo = new AddAppInfoElementCommand("Add AppInfo Element", (XSDConcreteComponent) input, element);
+ }
+ else if (result[0] instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration attribute = (XSDAttributeDeclaration) result[0];
+ addAppInfo = new AddAppInfoAttributeCommand("Add AppInfo Attribute", (XSDConcreteComponent) input, attribute);
+ }
+ else
+ return;
+
+ addAppInfo.setSchemaProperties(appInfoSchemaSpec);
+ if (getCommandStack() != null)
+ {
+ getCommandStack().execute(addAppInfo);
+ }
+ }
+ }
+ extensibleElementsTable.refresh();
+ refresh();
+ }
+
+ }
+ else if (event.widget == removeButton)
+ {
+ ISelection selection = extensibleElementsTable.getSelection();
+
+ if (selection instanceof StructuredSelection)
+ {
+ Command command = null;
+ Object o = ((StructuredSelection) selection).getFirstElement();
+ if (o instanceof Element)
+ {
+ XSDAnnotation xsdAnnotation = (XSDAnnotation) extensibleElementsTable.getInput();
+ Node appInfoElement = ((Element) o).getParentNode();
+ command = new RemoveAppInfoElementCommand("Remove AppInfo Element",
+ xsdAnnotation, appInfoElement);
+ }
+ else if (o instanceof Attr){
+ Element hostElement = ((Attr) o).getOwnerElement();
+ command = new RemoveAppInfoAttrCommand("Remove AppInfo Attribute",
+ hostElement, (Attr) o);
+ }
+ else
+ return;
+ if (getCommandStack() != null)
+ {
+ getCommandStack().execute(command);
+ extensibleElementsTable.setInput(input);
+ extensibleElementsTable.refresh();
+
+ if (extensibleElementsTable.getTable().getItemCount() > 0)
+ {
+ Object object = extensibleElementsTable.getElementAt(0);
+ if (object != null)
+ {
+ extensibleElementsTable.setSelection(new StructuredSelection(object));
+ }
+ }
+ else
+ {
+ tableTree.setInput(null);
+ }
+ }
+ }
+ }
+ else if (event.widget == extensibleElementsTable.getTable())
+ {
+
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent event)
+ {
+
+ }
+
+ public boolean shouldUseExtraSpace()
+ {
+ return true;
+ }
+
+ public void dispose()
+ {
+
+ }
+
+ static class ElementTableContentProvider implements IStructuredContentProvider
+ {
+ protected String facet;
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ }
+
+ public java.lang.Object[] getElements(java.lang.Object inputElement)
+ {
+ if (inputElement instanceof XSDConcreteComponent)
+ {
+ XSDConcreteComponent component = (XSDConcreteComponent) inputElement;
+ List elementsAndAttributes = new ArrayList();
+
+ /** Construct elements list */
+ XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation(component, false);
+ if (xsdAnnotation != null)
+ {
+ List appInfoList = xsdAnnotation.getApplicationInformation();
+ Element appInfoElement = null;
+ if (appInfoList.size() > 0)
+ {
+ appInfoElement = (Element) appInfoList.get(0);
+ }
+ if (appInfoElement != null)
+ {
+ for (Iterator it = appInfoList.iterator(); it.hasNext();)
+ {
+ Object obj = it.next();
+ if (obj instanceof Element)
+ {
+ Element appInfo = (Element) obj;
+ NodeList nodeList = appInfo.getChildNodes();
+ int length = nodeList.getLength();
+ for (int i = 0; i < length; i++)
+ {
+ Node node = nodeList.item(i);
+ if (node instanceof Element)
+ {
+ elementsAndAttributes.add(node);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /** Construct attributes list */
+ NamedNodeMap attributes = component.getElement().getAttributes();
+ if ( attributes != null ){
+ //String defaultNamespace = (String)component.getSchema().getQNamePrefixToNamespaceMap().get("");
+ int length = attributes.getLength();
+ for (int i = 0; i < length; i++){
+ Node oneAttribute = attributes.item(i);
+ if (!isXmlnsAttribute(oneAttribute))
+ {
+ String namespace = oneAttribute.getNamespaceURI();
+ boolean isExtension = true;
+ if (namespace == null && oneAttribute.getPrefix() == null)
+ {
+ isExtension = false;
+ }
+ else if (!XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(namespace))
+ {
+ isExtension = true;
+ }
+ if (isExtension)
+ {
+ elementsAndAttributes.add(oneAttribute);
+ }
+ }
+ }
+ }
+ return elementsAndAttributes.toArray();
+ }
+ return Collections.EMPTY_LIST.toArray();
+ }
+
+ private static boolean isXmlnsAttribute(Node attribute)
+ {
+ String prefix = attribute.getPrefix();
+ if (prefix != null)
+ {
+ // this handle the xmlns:foo="blah" case
+ return "xmlns".equals(prefix);
+ }
+ else
+ {
+ // this handles the xmlns="blah" case
+ return "xmlns".equals(attribute.getNodeName());
+ }
+ }
+
+ public void dispose()
+ {
+
+ }
+ }
+
+ static class ElementTableLabelProvider extends LabelProvider implements ITableLabelProvider
+ {
+ public Image getColumnImage(Object element, int columnIndex)
+ {
+ ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+ if (element instanceof Element)
+ {
+ Element domElement = (Element) element;
+ ILabelProvider lp = registry.getLabelProvider(domElement);
+ if (lp != null)
+ {
+ Image img = lp.getImage(domElement);
+ if (img != null)
+ return img;
+ }
+ return DEFAULT_ELEMENT_ICON;
+ }
+ if (element instanceof Attr)
+ return DEFAULT_ATTR_ICON;
+ return null;
+ }
+
+ public String getColumnText(Object input, int columnIndex)
+ {
+ ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+
+ if (input instanceof Element)
+ {
+ Element domElement = (Element) input;
+ return domElement.getLocalName();
+ }
+ if ( input instanceof Attr){
+ return ((Attr) input).getLocalName();
+ }
+ return "";
+ }
+ }
+
+ Element selectedElement;
+
+ class ElementSelectionChangedListener implements ISelectionChangedListener
+ {
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ ISelection selection = event.getSelection();
+ if (selection instanceof StructuredSelection)
+ {
+ Object obj = ((StructuredSelection) selection).getFirstElement();
+ if (obj instanceof Element)
+ {
+ selectedElement = (Element) obj;
+ tableTree.setInput(selectedElement.getParentNode());
+ tableTree.setASIElement(selectedElement);
+ tableTree.setCommandStack(getCommandStack());
+ contentLabel.setText("Structure of " + selectedElement.getLocalName());
+ contentLabel.getParent().layout();
+ }
+ }
+ }
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/CommonDirectivesSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/CommonDirectivesSection.java
similarity index 87%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/CommonDirectivesSection.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/CommonDirectivesSection.java
index 6a89da7..f77f0ae 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/CommonDirectivesSection.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/CommonDirectivesSection.java
@@ -1,14 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.common.util.URI;
@@ -21,13 +21,13 @@
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.xsd.XSDInclude;
import org.eclipse.xsd.XSDRedefine;
import org.eclipse.xsd.XSDSchema;
import org.eclipse.xsd.util.XSDParser;
-public class CommonDirectivesSection extends AbstractSection
+public abstract class CommonDirectivesSection extends AbstractSection
{
Text schemaLocationText;
Button wizardButton;
@@ -77,11 +77,11 @@
externalSchema.getDiagnostics().size() > 0)
{
isValidSchemaLocation = false;
- errorMessage = XSDEditorPlugin.getPlugin().getString("_UI_INCORRECT_XML_SCHEMA", xsdModelFile);
+ errorMessage = XSDEditorPlugin.getResourceString("_UI_INCORRECT_XML_SCHEMA", xsdModelFile);
}
else
{
- String currentNameSpace = getSchema().getTargetNamespace();
+ String currentNameSpace = xsdSchema.getTargetNamespace();
if (input instanceof XSDInclude || input instanceof XSDRedefine)
{
// Check the namespace to make sure they are the same as current file
@@ -89,7 +89,7 @@
{
if (currentNameSpace != null && !extNamespace.equals(currentNameSpace))
{
- errorMessage = XSDEditorPlugin.getPlugin().getString("_UI_DIFFERENT_NAME_SPACE", xsdModelFile);
+ errorMessage = XSDEditorPlugin.getResourceString("_UI_DIFFERENT_NAME_SPACE", xsdModelFile);
isValidSchemaLocation = false;
}
}
@@ -101,7 +101,7 @@
{
if (currentNameSpace != null && extNamespace.equals(currentNameSpace))
{
- errorMessage = XSDEditorPlugin.getPlugin().getString("_UI_SAME_NAME_SPACE", xsdModelFile);
+ errorMessage = XSDEditorPlugin.getResourceString("_UI_SAME_NAME_SPACE", xsdModelFile);
isValidSchemaLocation = false;
}
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/EnumerationsSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/EnumerationsSection.java
new file mode 100644
index 0000000..7f2723f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/EnumerationsSection.java
@@ -0,0 +1,404 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.AddEnumerationsCommand;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.SetXSDFacetValueCommand;
+import org.eclipse.wst.xsd.ui.internal.widgets.EnumerationsDialog;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class EnumerationsSection extends AbstractSection
+{
+ private EnumerationsTableViewer enumerationsTable;
+ private Button addButton;
+ private Button addManyButton;
+ private Button deleteButton;
+
+ /**
+ *
+ */
+ public EnumerationsSection()
+ {
+ super();
+ }
+
+ public void widgetSelected(SelectionEvent e)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+
+ if (e.widget == addButton)
+ {
+ List enumList = st.getEnumerationFacets();
+ StringBuffer newName = new StringBuffer("value1"); //$NON-NLS-1$
+ int suffix = 1;
+ for (Iterator i = enumList.iterator(); i.hasNext();)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) i.next();
+ String value = enumFacet.getLexicalValue();
+ if (value != null)
+ {
+ if (value.equals(newName.toString()))
+ {
+ suffix++;
+ newName = new StringBuffer("value" + String.valueOf(suffix)); //$NON-NLS-1$
+ }
+ }
+ }
+
+ AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumeration", (XSDSimpleTypeDefinition) input);
+ command.setValue(newName.toString());
+ getCommandStack().execute(command);
+
+ enumerationsTable.refresh();
+ int newItemIndex = enumerationsTable.getTable().getItemCount() - 1;
+ enumerationsTable.editElement(enumerationsTable.getElementAt(newItemIndex), 0);
+ }
+ else if (e.widget == addManyButton)
+ {
+ Display display = Display.getCurrent();
+ // if it is null, get the default one
+ display = display == null ? Display.getDefault() : display;
+ Shell parentShell = display.getActiveShell();
+ EnumerationsDialog dialog = new EnumerationsDialog(parentShell);
+ dialog.setBlockOnOpen(true);
+ int result = dialog.open();
+
+ if (result == Window.OK)
+ {
+ String text = dialog.getText();
+ String delimiter = dialog.getDelimiter();
+ StringTokenizer tokenizer = new StringTokenizer(text, delimiter);
+ CompoundCommand compoundCommand = new CompoundCommand("Add Enumerations");
+ while (tokenizer.hasMoreTokens())
+ {
+ String token = tokenizer.nextToken();
+ if (dialog.isPreserveWhitespace() == false)
+ {
+ token = token.trim();
+ }
+ AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumerations", (XSDSimpleTypeDefinition) input);
+ command.setValue(token);
+ compoundCommand.add(command);
+ }
+ getCommandStack().execute(compoundCommand);
+ }
+ enumerationsTable.refresh();
+ }
+ else if (e.widget == deleteButton)
+ {
+ StructuredSelection selection = (StructuredSelection) enumerationsTable.getSelection();
+ if (selection != null)
+ {
+ Iterator i = selection.iterator();
+ CompoundCommand compoundCommand = new CompoundCommand("Delete Enumeration");
+ while (i.hasNext())
+ {
+ Object obj = i.next();
+ if (obj != null)
+ {
+ if (obj instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) obj;
+
+ DeleteCommand deleteCommand = new DeleteCommand("Delete Enumeration", enumFacet);
+ compoundCommand.add(deleteCommand);
+ }
+ }
+ }
+ getCommandStack().execute(compoundCommand);
+ enumerationsTable.refresh();
+ }
+ }
+ else if (e.widget == enumerationsTable.getTable())
+ {
+ StructuredSelection selection = (StructuredSelection) enumerationsTable.getSelection();
+ if (selection.getFirstElement() != null)
+ {
+ deleteButton.setEnabled(true);
+ }
+ else
+ {
+ deleteButton.setEnabled(false);
+ }
+ }
+
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e)
+ {
+
+ }
+
+ public void createContents(Composite parent)
+ {
+ TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+ composite = factory.createFlatFormComposite(parent);
+
+ enumerationsTable = new EnumerationsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
+ enumerationsTable.setInput(input);
+ Table table = enumerationsTable.getTable();
+ table.addSelectionListener(this);
+
+ addButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL"), SWT.PUSH); //$NON-NLS-1$
+ addManyButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL") + "...", SWT.PUSH); //$NON-NLS-1$
+ deleteButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), SWT.PUSH); //$NON-NLS-1$
+
+ FormData data2 = new FormData();
+ data2.top = new FormAttachment(0, 0);
+ data2.left = new FormAttachment(100, -100);
+ data2.right = new FormAttachment(100, 0);
+ // data2.width = 50;
+ addButton.setLayoutData(data2);
+ addButton.addSelectionListener(this);
+
+ FormData data = new FormData();
+ data.left = new FormAttachment(addButton, 0, SWT.LEFT);
+ data.right = new FormAttachment(100, 0);
+ data.top = new FormAttachment(addButton, 0);
+ addManyButton.setLayoutData(data);
+ addManyButton.addSelectionListener(this);
+
+ data = new FormData();
+ data.left = new FormAttachment(addButton, 0, SWT.LEFT);
+ data.right = new FormAttachment(100, 0);
+ data.top = new FormAttachment(addManyButton, 0);
+ deleteButton.setLayoutData(data);
+ deleteButton.setEnabled(false);
+ deleteButton.addSelectionListener(this);
+
+ data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(addButton, 0);
+ data.bottom = new FormAttachment(100, 0);
+ data.width = 50;
+ table.setLayoutData(data);
+ table.addListener(SWT.Resize, this);
+ }
+
+ /*
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+ */
+ public void refresh()
+ {
+ if (isReadOnly)
+ {
+ composite.setEnabled(false);
+ }
+ else
+ {
+ composite.setEnabled(true);
+ }
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+
+ Iterator validFacets = st.getValidFacets().iterator();
+
+ boolean isApplicable = false;
+ while (validFacets.hasNext())
+ {
+ String aValidFacet = (String) validFacets.next();
+ if (aValidFacet.equals(XSDConstants.ENUMERATION_ELEMENT_TAG))
+ {
+ isApplicable = true;
+ }
+ }
+
+ if (isApplicable)
+ {
+ addButton.setEnabled(true);
+ addManyButton.setEnabled(true);
+ }
+ else
+ {
+ addButton.setEnabled(false);
+ addManyButton.setEnabled(false);
+ }
+ enumerationsTable.setInput(input);
+ }
+
+ public void handleEvent(Event event)
+ {
+ Table table = enumerationsTable.getTable();
+ if (event.type == SWT.Resize && event.widget == table)
+ {
+ TableColumn tableColumn = table.getColumn(0);
+ tableColumn.setWidth(table.getSize().x);
+ }
+ }
+
+ public void dispose()
+ {
+ }
+
+ public boolean shouldUseExtraSpace()
+ {
+ return true;
+ }
+
+ class EnumerationsTableViewer extends NavigableTableViewer implements ICellModifier
+ {
+ protected String[] columnProperties = { XSDConstants.ENUMERATION_ELEMENT_TAG };
+
+ protected CellEditor[] cellEditors;
+
+ Table table;
+
+ public EnumerationsTableViewer(Table table)
+ {
+ super(table);
+ table = getTable();
+
+ table.setLinesVisible(true);
+
+ setContentProvider(new EnumerationsTableContentProvider());
+ setLabelProvider(new EnumerationsTableLabelProvider());
+ setColumnProperties(columnProperties);
+
+ setCellModifier(this);
+
+ TableColumn column = new TableColumn(table, SWT.NONE, 0);
+ column.setText(columnProperties[0]);
+ column.setAlignment(SWT.LEFT);
+ column.setResizable(true);
+
+ cellEditors = new CellEditor[1];
+
+ TableLayout layout = new TableLayout();
+ ColumnWeightData data = new ColumnWeightData(100);
+
+ layout.addColumnData(data);
+ cellEditors[0] = new TextCellEditor(table);
+
+ getTable().setLayout(layout);
+ setCellEditors(cellEditors);
+ }
+
+ public boolean canModify(Object element, String property)
+ {
+ return true;
+ }
+
+ public void modify(Object element, String property, Object value)
+ {
+ if (element instanceof TableItem && (value != null))
+ {
+ TableItem item = (TableItem) element;
+
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) item.getData();
+ SetXSDFacetValueCommand command = new SetXSDFacetValueCommand("Set Enumeration Value", enumFacet);
+ command.setValue((String) value);
+ getCommandStack().execute(command);
+ item.setData(enumFacet);
+ item.setText((String) value);
+ }
+ }
+
+ public Object getValue(Object element, String property)
+ {
+ if (element instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+ String value = enumFacet.getLexicalValue();
+ if (value == null)
+ value = ""; //$NON-NLS-1$
+ return value;
+ }
+ return ""; //$NON-NLS-1$
+ }
+
+ }
+
+ class EnumerationsTableContentProvider implements IStructuredContentProvider
+ {
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ }
+
+ public java.lang.Object[] getElements(java.lang.Object inputElement)
+ {
+ java.util.List list = new ArrayList();
+ if (inputElement instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) inputElement;
+ return st.getEnumerationFacets().toArray();
+ }
+ return list.toArray();
+ }
+
+ public void dispose()
+ {
+ }
+ }
+
+ class EnumerationsTableLabelProvider extends LabelProvider implements ITableLabelProvider
+ {
+ public EnumerationsTableLabelProvider()
+ {
+
+ }
+
+ public Image getColumnImage(Object element, int columnIndex)
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
+ }
+
+ public String getColumnText(Object element, int columnIndex)
+ {
+ if (element instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+ String value = enumFacet.getLexicalValue();
+ if (value == null)
+ value = "";
+ return value;
+ }
+ return "";
+ }
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/FacetViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/FacetViewer.java
new file mode 100644
index 0000000..3ae9947
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/FacetViewer.java
@@ -0,0 +1,559 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+//import java.util.ArrayList;
+//import java.util.Iterator;
+//import java.util.List;
+//
+//import org.eclipse.jface.viewers.CellEditor;
+//import org.eclipse.jface.viewers.ColumnWeightData;
+//import org.eclipse.jface.viewers.ICellModifier;
+//import org.eclipse.jface.viewers.ISelectionChangedListener;
+//import org.eclipse.jface.viewers.IStructuredContentProvider;
+//import org.eclipse.jface.viewers.ITableLabelProvider;
+//import org.eclipse.jface.viewers.LabelProvider;
+//import org.eclipse.jface.viewers.SelectionChangedEvent;
+//import org.eclipse.jface.viewers.StructuredSelection;
+//import org.eclipse.jface.viewers.TableLayout;
+//import org.eclipse.jface.viewers.TextCellEditor;
+//import org.eclipse.jface.viewers.Viewer;
+//import org.eclipse.swt.SWT;
+//import org.eclipse.swt.events.MouseEvent;
+//import org.eclipse.swt.events.MouseTrackAdapter;
+//import org.eclipse.swt.graphics.Image;
+//import org.eclipse.swt.graphics.Point;
+//import org.eclipse.swt.widgets.Composite;
+//import org.eclipse.swt.widgets.Table;
+//import org.eclipse.swt.widgets.TableColumn;
+//import org.eclipse.swt.widgets.TableItem;
+//import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
+//import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+//import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
+//import org.eclipse.wst.xsd.ui.internal.properties.XSDComboBoxPropertyDescriptor;
+//import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
+//import org.eclipse.xsd.XSDConstrainingFacet;
+//import org.eclipse.xsd.XSDFactory;
+//import org.eclipse.xsd.XSDMaxExclusiveFacet;
+//import org.eclipse.xsd.XSDMaxFacet;
+//import org.eclipse.xsd.XSDMaxInclusiveFacet;
+//import org.eclipse.xsd.XSDMinExclusiveFacet;
+//import org.eclipse.xsd.XSDMinFacet;
+//import org.eclipse.xsd.XSDMinInclusiveFacet;
+//import org.eclipse.xsd.XSDSimpleTypeDefinition;
+//import org.eclipse.xsd.util.XSDConstants;
+//import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+//import org.w3c.dom.Element;
+
+public class FacetViewer //extends NavigableTableViewer implements ICellModifier
+{
+// public static final String FACET_NAME = XSDEditorPlugin.getXSDString("_UI_FACET_NAME"); // "Name";
+// public static final String FACET_VALUE = XSDEditorPlugin.getXSDString("_UI_FACET_VALUE"); // "Value";
+// public static final String FACET_OTHER = XSDEditorPlugin.getXSDString("_UI_FACET_FIXED"); // "Fixed";
+//
+// protected FacetsTableLabelProvider facetsTableLabelProvider = new FacetsTableLabelProvider();
+// protected FacetsTableContentProvider facetsTableContentProvider = new FacetsTableContentProvider();
+// protected String[] columnProperties = { FACET_NAME, FACET_VALUE, FACET_OTHER };
+// protected CellEditor[] cellEditors; // these cellEditors are used when
+// // non-whitespace facet is selected
+// protected CellEditor[] altCellEditors; // these cellEditors are used when
+// // whitespace facet is selected
+//
+// protected String[] whiteSpaceValues = new String[] { "", "preserve", "replace", "collapse" };
+// protected String[] trueFalseValues = new String[] { "", "false", "true" };
+//
+// /**
+// * @param parent
+// */
+// public FacetViewer(Composite parent)
+// {
+// super(new Table(parent, SWT.FULL_SELECTION | SWT.SINGLE));
+//
+// getTable().setLinesVisible(true);
+// getTable().setHeaderVisible(true);
+//
+// addSelectionChangedListener(new SelectionChangedListener());
+// getTable().addMouseTrackListener(new MyMouseTrackListener());
+//
+// setContentProvider(facetsTableContentProvider);
+// setLabelProvider(facetsTableLabelProvider);
+// setColumnProperties(columnProperties);
+//
+// setCellModifier(this);
+//
+// for (int i = 0; i < 3; i++)
+// {
+// TableColumn column = new TableColumn(getTable(), SWT.NONE, i);
+// column.setText(columnProperties[i]);
+// column.setAlignment(SWT.LEFT);
+// column.setResizable(true);
+// }
+//
+// cellEditors = new CellEditor[3];
+// altCellEditors = new CellEditor[3];
+//
+// TableLayout layout = new TableLayout();
+// ColumnWeightData data = new ColumnWeightData(60, 80, true);
+// layout.addColumnData(data);
+// cellEditors[0] = null;
+//
+// ColumnWeightData data2 = new ColumnWeightData(120, 80, true);
+// layout.addColumnData(data2);
+//
+// cellEditors[1] = new TextCellEditor(getTable());
+// XSDComboBoxPropertyDescriptor pd = new XSDComboBoxPropertyDescriptor("combo", "whitespace", whiteSpaceValues);
+// altCellEditors[1] = pd.createPropertyEditor(getTable());
+//
+// ColumnWeightData data3 = new ColumnWeightData(60, 60, true);
+// layout.addColumnData(data3);
+//
+// XSDComboBoxPropertyDescriptor pd2 = new XSDComboBoxPropertyDescriptor("combo", "other", trueFalseValues);
+// cellEditors[2] = pd2.createPropertyEditor(getTable());
+// altCellEditors[2] = pd2.createPropertyEditor(getTable());
+//
+// getTable().setLayout(layout);
+// setCellEditors(cellEditors);
+//
+// }
+//
+// /*
+// * (non-Javadoc)
+// *
+// * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object,
+// * java.lang.String)
+// */
+// public boolean canModify(Object element, String property)
+// {
+// return property.equals(FACET_VALUE) || property.equals(FACET_OTHER);
+// }
+//
+// /*
+// * (non-Javadoc)
+// *
+// * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object,
+// * java.lang.String)
+// */
+// public Object getValue(Object element, String property)
+// {
+// int column = 0;
+// if (property.equals(columnProperties[0]))
+// {
+// column = 0;
+// }
+// else if (property.equals(columnProperties[1]))
+// {
+// column = 1;
+// }
+// else if (property.equals(columnProperties[2]))
+// {
+// column = 2;
+// }
+//
+// return facetsTableLabelProvider.getColumnText(element, column);
+// }
+//
+// /*
+// * (non-Javadoc)
+// *
+// * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object,
+// * java.lang.String, java.lang.Object)
+// */
+// public void modify(Object element, String property, Object value)
+// {
+// XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition) getInput();
+// TableItem item = (TableItem) element;
+// if (item != null)
+// {
+// Object o = item.getData();
+// if (o != null)
+// {
+// if (o instanceof String)
+// {
+// String facet = (String) o;
+//
+// Element simpleTypeElement = xsdSimpleType.getElement();
+// XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
+// Element derivedByElement = xsdDOMHelper.getDerivedByElement(simpleTypeElement);
+//
+// String prefix = simpleTypeElement.getPrefix();
+// prefix = (prefix == null) ? "" : (prefix + ":");
+//
+// Element childNodeElement = null;
+// DOMAttribute valueAttr = null;
+//
+// XSDConstrainingFacet targetFacet = getXSDConstrainingFacet(facet);
+//
+// String newValue = "";
+// if (value != null && value instanceof String)
+// {
+// newValue = (String) value;
+// }
+//
+// if (property.equals(columnProperties[1]))
+// {
+// if (targetFacet == null && newValue.length() > 0)
+// {
+// targetFacet = createFacet(facet);
+// childNodeElement = (derivedByElement.getOwnerDocument()).createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + facet);
+// valueAttr = new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newValue);
+// childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());
+// // add and format child
+// derivedByElement.appendChild(childNodeElement);
+// targetFacet.setElement(childNodeElement);
+// XSDDOMHelper.formatChild(childNodeElement);
+//
+// // XSDSchemaHelper.updateElement(xsdSimpleType);
+// }
+// if (targetFacet == null)
+// {
+// return;
+// }
+//
+// if (newValue.length() > 0)
+// {
+// targetFacet.setLexicalValue(newValue);
+//
+// if (targetFacet instanceof XSDMaxFacet || targetFacet instanceof XSDMinFacet)
+// {
+// if (targetFacet instanceof XSDMaxFacet)
+// {
+// if (targetFacet instanceof XSDMaxExclusiveFacet)
+// {
+// XSDMaxInclusiveFacet xsdMaxInclusiveFacet = xsdSimpleType.getMaxInclusiveFacet();
+// if (xsdMaxInclusiveFacet != null)
+// {
+// Element xsdMaxInclusiveFacetElement = xsdMaxInclusiveFacet.getElement();
+// XSDDOMHelper.removeNodeAndWhitespace(xsdMaxInclusiveFacetElement);
+// }
+// }
+// else if (targetFacet instanceof XSDMaxInclusiveFacet)
+// {
+// XSDMaxExclusiveFacet xsdMaxExclusiveFacet = xsdSimpleType.getMaxExclusiveFacet();
+// if (xsdMaxExclusiveFacet != null)
+// {
+// Element xsdMaxExclusiveFacetElement = xsdMaxExclusiveFacet.getElement();
+// XSDDOMHelper.removeNodeAndWhitespace(xsdMaxExclusiveFacetElement);
+// }
+// }
+// }
+// else if (targetFacet instanceof XSDMinFacet)
+// {
+// if (targetFacet instanceof XSDMinExclusiveFacet)
+// {
+// XSDMinInclusiveFacet xsdMinInclusiveFacet = xsdSimpleType.getMinInclusiveFacet();
+// if (xsdMinInclusiveFacet != null)
+// {
+// Element xsdMinInclusiveFacetElement = xsdMinInclusiveFacet.getElement();
+// XSDDOMHelper.removeNodeAndWhitespace(xsdMinInclusiveFacetElement);
+// }
+// }
+// else if (targetFacet instanceof XSDMinInclusiveFacet)
+// {
+// XSDMinExclusiveFacet xsdMinExclusiveFacet = xsdSimpleType.getMinExclusiveFacet();
+// if (xsdMinExclusiveFacet != null)
+// {
+// Element xsdMinExclusiveFacetElement = xsdMinExclusiveFacet.getElement();
+// XSDDOMHelper.removeNodeAndWhitespace(xsdMinExclusiveFacetElement);
+// }
+// }
+// }
+// }
+// }
+// else
+// // newValue.length == 0
+// {
+// Element targetFacetElement = targetFacet.getElement();
+// XSDDOMHelper.removeNodeAndWhitespace(targetFacetElement);
+// }
+// }
+// else if (property.equals(columnProperties[2]))
+// {
+// if (targetFacet != null)
+// {
+// if (newValue.length() > 0)
+// {
+// targetFacet.getElement().setAttribute(XSDConstants.FIXED_ATTRIBUTE, newValue);
+// }
+// else
+// {
+// targetFacet.getElement().removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
+// }
+// }
+// }
+// xsdSimpleType.setElement(simpleTypeElement);
+// // xsdSimpleType.updateElement();
+// refresh();
+// }
+// }
+// }
+// }
+//
+// private XSDConstrainingFacet getXSDConstrainingFacet(String facetString)
+// {
+// XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition) getInput();
+// List list = xsdSimpleType.getFacetContents();
+// if (list == null)
+// {
+// return null;
+// }
+// Iterator iter = list.iterator();
+// XSDConstrainingFacet targetFacet = null;
+//
+// while (iter.hasNext())
+// {
+// XSDConstrainingFacet xsdConstrainingFacet = (XSDConstrainingFacet) iter.next();
+// if (xsdConstrainingFacet.getFacetName().equals(facetString))
+// {
+// targetFacet = xsdConstrainingFacet;
+// break;
+// }
+// }
+// return targetFacet;
+// }
+//
+// private XSDConstrainingFacet createFacet(String facet)
+// {
+// XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+// XSDConstrainingFacet xsdFacet = null;
+// if (facet.equals("length"))
+// {
+// xsdFacet = factory.createXSDLengthFacet();
+// }
+// else if (facet.equals("minLength"))
+// {
+// xsdFacet = factory.createXSDMinLengthFacet();
+// }
+// else if (facet.equals("maxLength"))
+// {
+// xsdFacet = factory.createXSDMaxLengthFacet();
+// }
+// else if (facet.equals("minInclusive"))
+// {
+// xsdFacet = factory.createXSDMinInclusiveFacet();
+// }
+// else if (facet.equals("minExclusive"))
+// {
+// xsdFacet = factory.createXSDMinExclusiveFacet();
+// }
+// else if (facet.equals("maxInclusive"))
+// {
+// xsdFacet = factory.createXSDMaxInclusiveFacet();
+// }
+// else if (facet.equals("maxExclusive"))
+// {
+// xsdFacet = factory.createXSDMaxExclusiveFacet();
+// }
+//
+// else if (facet.equals("totalDigits"))
+// {
+// xsdFacet = factory.createXSDTotalDigitsFacet();
+// }
+// else if (facet.equals("fractionDigits"))
+// {
+// xsdFacet = factory.createXSDFractionDigitsFacet();
+// }
+// else if (facet.equals("whiteSpace"))
+// {
+// xsdFacet = factory.createXSDWhiteSpaceFacet();
+// }
+// return xsdFacet;
+// }
+//
+// /**
+// * Get the tooltip for the facet
+// */
+// public String getToolTip(String facet)
+// {
+// String key = "";
+// if (facet.equals("length"))
+// {
+// key = "_UI_TOOLTIP_LENGTH";
+// }
+// else if (facet.equals("minLength"))
+// {
+// key = "_UI_TOOLTIP_MIN_LEN";
+// }
+// else if (facet.equals("maxLength"))
+// {
+// key = "_UI_TOOLTIP_MAX_LEN";
+// }
+//
+// else if (facet.equals("minInclusive"))
+// {
+// key = "_UI_TOOLTIP_MIN_INCLUSIVE";
+// }
+// else if (facet.equals("minExclusive"))
+// {
+// key = "_UI_TOOLTIP_MIN_EXCLUSIVE";
+// }
+//
+// else if (facet.equals("maxInclusive"))
+// {
+// key = "_UI_TOOLTIP_MAX_INCLUSIVE";
+// }
+// else if (facet.equals("maxExclusive"))
+// {
+// key = "_UI_TOOLTIP_MAX_EXCLUSIVE";
+// }
+//
+// else if (facet.equals("totalDigits"))
+// {
+// key = "_UI_TOOLTIP_TOTAL_DIGITS";
+// }
+// else if (facet.equals("fractionDigits"))
+// {
+// key = "_UI_TOOLTIP_FRACTION_DIGITS";
+// }
+//
+// else if (facet.equals("whiteSpace"))
+// {
+// key = "_UI_TOOLTIP_WHITE_SPACE";
+// }
+//
+// return (key != null) ? XSDEditorPlugin.getXSDString(key) : "";
+// }
+//
+// /**
+// * This listener detects which row is selected and add a tool tip for that row
+// */
+// public class MyMouseTrackListener extends MouseTrackAdapter
+// {
+// public void mouseHover(MouseEvent e)
+// {
+// TableItem item = getTable().getItem(new Point(e.x, e.y));
+// if (item != null)
+// {
+// Object o = item.getData();
+// if (o != null)
+// {
+// String facetName = (String) o;
+// getTable().setToolTipText(getToolTip(facetName));
+// }
+// }
+// }
+// }
+//
+// /**
+// * Based on the selection, detects if it is a white space or not, and add the
+// * corresponding cell editors
+// */
+// public class SelectionChangedListener implements ISelectionChangedListener
+// {
+// public void selectionChanged(SelectionChangedEvent event)
+// {
+// Object selection = event.getSelection();
+// if (selection instanceof StructuredSelection)
+// {
+// Object o = ((StructuredSelection) selection).getFirstElement();
+// if (o != null)
+// {
+// String facet = (String) o;
+// if (facet.equals("whiteSpace"))
+// {
+// setCellEditors(altCellEditors);
+// }
+// else
+// {
+// setCellEditors(cellEditors);
+// }
+// }
+// }
+// }
+// }
+//
+// class FacetsTableContentProvider implements IStructuredContentProvider
+// {
+// protected String facet;
+//
+// public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+// {
+// }
+//
+// public java.lang.Object[] getElements(java.lang.Object inputElement)
+// {
+// List v = new ArrayList();
+// XSDSimpleTypeDefinition inputXSDSimpleType = (XSDSimpleTypeDefinition) inputElement;
+// XSDSimpleTypeDefinition base = inputXSDSimpleType.getPrimitiveTypeDefinition();
+//
+// if (base != null)
+// {
+// Iterator validFacets = inputXSDSimpleType.getValidFacets().iterator();
+// while (validFacets.hasNext())
+// {
+// String aValidFacet = (String) validFacets.next();
+// if (!(aValidFacet.equals("pattern") || aValidFacet.equals("enumeration")))
+// {
+// v.add(aValidFacet);
+// }
+// }
+// }
+// return v.toArray();
+// }
+//
+// public void dispose()
+// {
+// }
+// }
+//
+// class FacetsTableLabelProvider extends LabelProvider implements ITableLabelProvider
+// {
+// public Image getColumnImage(Object element, int columnIndex)
+// {
+// return null;
+// }
+//
+// public String getColumnText(Object element, int columnIndex)
+// {
+// if (element instanceof String)
+// {
+// String value = null;
+// XSDConstrainingFacet targetFacet = getXSDConstrainingFacet((String) element);
+// switch (columnIndex)
+// {
+// case 0:
+// {
+// value = (String) element;
+// break;
+// }
+// case 1:
+// {
+// if (targetFacet == null)
+// {
+// value = "";
+// }
+// else
+// {
+// value = targetFacet.getLexicalValue();
+// }
+//
+// break;
+// }
+// case 2:
+// {
+// if (targetFacet == null)
+// {
+// value = "";
+// }
+// else
+// {
+// Element elem = targetFacet.getElement();
+// value = elem.getAttribute(XSDConstants.FIXED_ATTRIBUTE);
+// if (value == null)
+// value = "";
+// }
+// }
+// }
+// return value;
+// }
+// return "";
+// }
+// }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/MultiplicitySection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/MultiplicitySection.java
new file mode 100644
index 0000000..128991f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/MultiplicitySection.java
@@ -0,0 +1,211 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMaxOccursCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMinOccursCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+
+public class MultiplicitySection extends AbstractSection
+{
+ protected CCombo minCombo, maxCombo;
+ protected Button listButton;
+ protected Button requiredButton;
+ protected boolean isRequired;
+
+ public MultiplicitySection()
+ {
+ super();
+ }
+
+ protected void createContents(Composite parent)
+ {
+ }
+
+
+ public void doHandleEvent(Event event)
+ {
+ if (event.widget == minCombo)
+ {
+ updateMinAttribute();
+ }
+ else if (event.widget == maxCombo)
+ {
+ updateMaxAttribute();
+ }
+ }
+
+ public void doWidgetSelected(SelectionEvent e)
+ {
+ if (e.widget == minCombo)
+ {
+ updateMinAttribute();
+ }
+ else if (e.widget == maxCombo)
+ {
+ updateMaxAttribute();
+ }
+ }
+
+ protected void updateMaxAttribute()
+ {
+ setErrorMessage(null);
+ XSDParticle particle = null;
+
+ if (input instanceof XSDParticleContent)
+ {
+ particle = getAssociatedParticle((XSDParticleContent) input);
+ }
+ if (particle != null)
+ {
+ String newValue = maxCombo.getText().trim();
+
+ if (newValue.length() == 0)
+ {
+ particle.unsetMaxOccurs();
+ return;
+ }
+ try
+ {
+ int newMax = 1;
+ if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
+ {
+ newMax = XSDParticle.UNBOUNDED;
+ }
+ else
+ {
+ if (newValue.length() > 0)
+ {
+ newMax = Integer.parseInt(newValue);
+ }
+ }
+ setListenerEnabled(false);
+ UpdateMaxOccursCommand command = new UpdateMaxOccursCommand("Maximum Occurrence Change", particle, newMax);
+ getCommandStack().execute(command);
+ setListenerEnabled(true);
+
+ }
+ catch (NumberFormatException e)
+ {
+ setErrorMessage("Invalid value for maximum occurrence");
+ }
+ }
+ }
+
+ protected void updateMinAttribute()
+ {
+ setErrorMessage(null);
+ XSDParticle particle = null;
+
+ if (input instanceof XSDParticleContent)
+ {
+ particle = getAssociatedParticle((XSDParticleContent) input);
+ }
+ if (particle != null)
+ {
+ String newValue = minCombo.getText();
+ isRequired = false;
+ if (newValue.length() == 0)
+ {
+ particle.unsetMinOccurs();
+ }
+ try
+ {
+ int newMin = 1;
+ if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
+ {
+ newMin = XSDParticle.UNBOUNDED;
+ isRequired = true;
+ }
+ else
+ {
+ newMin = Integer.parseInt(newValue);
+ isRequired = newMin > 0;
+ }
+ UpdateMinOccursCommand command = new UpdateMinOccursCommand("Minimum Occurrence Change", particle, newMin);
+ getCommandStack().execute(command);
+ }
+ catch (NumberFormatException e)
+ {
+
+ }
+ }
+ }
+
+ protected void refreshMinMax()
+ {
+ boolean refreshMinText = true;
+ boolean refreshMaxText = true;
+ if (minCombo.isFocusControl())
+ {
+ refreshMinText = false;
+ }
+ if (maxCombo.isFocusControl())
+ {
+ refreshMaxText = false;
+ }
+ if (refreshMinText)
+ {
+ minCombo.setText(""); //$NON-NLS-1$
+ }
+ if (refreshMaxText)
+ {
+ maxCombo.setText(""); //$NON-NLS-1$
+ }
+
+ if (input != null)
+ {
+ if (input instanceof XSDParticleContent)
+ {
+ XSDParticle particle = getAssociatedParticle((XSDParticleContent) input);
+ if (particle != null)
+ {
+ // minText.setText(String.valueOf(particle.getMinOccurs()));
+ // maxText.setText(String.valueOf(particle.getMaxOccurs()));
+ Element element = particle.getElement();
+ if (element != null)
+ {
+ String min = element.getAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+ String max = element.getAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+ if (min != null && refreshMinText)
+ {
+ minCombo.setText(min);
+ }
+ if (max != null && refreshMaxText)
+ {
+ maxCombo.setText(max);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ protected XSDParticle getAssociatedParticle(XSDParticleContent particleContent)
+ {
+ XSDConcreteComponent xsdComp = particleContent.getContainer();
+ if (xsdComp instanceof XSDParticle)
+ {
+ return (XSDParticle) xsdComp;
+ }
+ return null;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SchemaLocationSection.java
similarity index 73%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationSection.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SchemaLocationSection.java
index 6f2d1df..4b2f160 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationSection.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SchemaLocationSection.java
@@ -1,14 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 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.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.viewers.IStructuredSelection;
@@ -19,18 +19,16 @@
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.wst.common.ui.internal.viewers.ResourceFilter;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.wizards.XSDSelectIncludeFileWizard;
import org.eclipse.xsd.XSDInclude;
import org.eclipse.xsd.XSDRedefine;
@@ -54,55 +52,55 @@
/**
* @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
*/
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
+ public void createContents(Composite parent)
{
- super.createControls(parent, factory);
- Composite composite = getWidgetFactory().createFlatFormComposite(parent);
+ composite = getWidgetFactory().createFlatFormComposite(parent);
- int leftCoordinate = getStandardLabelWidth(composite,
- new String[] {XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_LOCATION")});
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 3;
+ composite.setLayout(gridLayout);
+ GridData data = new GridData();
+
// Create Schema Location Label
CLabel schemaLocationLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_LOCATION")); //$NON-NLS-1$
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ schemaLocationLabel.setLayoutData(data);
// Create Schema Location Text
schemaLocationText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
+ schemaLocationText.setEditable(true);
+ applyAllListeners(schemaLocationText);
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ schemaLocationText.setLayoutData(data);
// Create Wizard Button
wizardButton = getWidgetFactory().createButton(composite, "", SWT.NONE); //$NON-NLS-1$
-
wizardButton.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
- FormData buttonFormData = new FormData();
- buttonFormData.left = new FormAttachment(100, -rightMarginSpace + 2);
- buttonFormData.right = new FormAttachment(100,0);
- buttonFormData.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
- wizardButton.setLayoutData(buttonFormData);
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ wizardButton.setLayoutData(data);
wizardButton.addSelectionListener(this);
- schemaLocationText.setEditable(true);
- FormData schemaLocationData = new FormData();
- schemaLocationData.left = new FormAttachment(0, leftCoordinate);
- schemaLocationData.right = new FormAttachment(wizardButton, 0);
- schemaLocationText.setLayoutData(schemaLocationData);
- schemaLocationText.addListener(SWT.Modify, this);
-
- FormData data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(schemaLocationText, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
- schemaLocationLabel.setLayoutData(data);
-
// error text
errorText = new StyledText(composite, SWT.FLAT);
errorText.setEditable(false);
errorText.setEnabled(false);
errorText.setText("");
- data = new FormData();
- data.left = new FormAttachment(schemaLocationText, 0, SWT.LEFT);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(schemaLocationText, 0);
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.horizontalSpan = 3;
+ data.grabExcessHorizontalSpace = true;
errorText.setLayoutData(data);
+
}
public void widgetSelected(SelectionEvent event)
@@ -121,7 +119,7 @@
XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_SCHEMA"), //$NON-NLS-1$
XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_DESC"), //$NON-NLS-1$
filter,
- (IStructuredSelection) selection);
+ (IStructuredSelection) getSelection());
WizardDialog wizardDialog = new WizardDialog(shell, fileSelectWizard);
wizardDialog.create();
@@ -154,8 +152,6 @@
*/
public void refresh()
{
- if (doRefresh)
- {
setListenerEnabled(false);
Element element = null;
@@ -180,7 +176,6 @@
}
setListenerEnabled(true);
- }
}
/* (non-Javadoc)
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentUnionMemberTypesDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SimpleContentUnionMemberTypesDialog.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentUnionMemberTypesDialog.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SimpleContentUnionMemberTypesDialog.java
index c58a7aa..1f921f9 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentUnionMemberTypesDialog.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SimpleContentUnionMemberTypesDialog.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
import java.util.Iterator;
import java.util.List;
@@ -27,7 +27,7 @@
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SpecificConstraintsWidget.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SpecificConstraintsWidget.java
new file mode 100644
index 0000000..40b7dab
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SpecificConstraintsWidget.java
@@ -0,0 +1,667 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.AddEnumerationsCommand;
+import org.eclipse.wst.xsd.ui.common.commands.ChangeToLocalSimpleTypeCommand;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.SetXSDFacetValueCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateXSDPatternFacetCommand;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.wst.xsd.ui.internal.widgets.EnumerationsDialog;
+import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class SpecificConstraintsWidget implements SelectionListener, Listener
+{
+ public static int ENUMERATION = 0;
+ public static int PATTERN = 1;
+
+ int kind;
+ ConstraintsTableViewer constraintsTableViewer;
+ Button addButton;
+ Button addUsingDialogButton;
+ Button deleteButton;
+ Button editButton;
+ Composite composite;
+ boolean isEnabled;
+ TabbedPropertySheetWidgetFactory factory;
+ XSDSimpleTypeDefinition input;
+ XSDFeature feature;
+ boolean isReadOnly;
+ CommandStack commandStack;
+ XSDFacetSection facetSection;
+
+ public SpecificConstraintsWidget(Composite composite, TabbedPropertySheetWidgetFactory factory, XSDFeature feature, XSDSimpleTypeDefinition input, XSDFacetSection facetSection)
+ {
+ this.factory = factory;
+ this.input = input;
+ this.composite = composite;
+ this.feature = feature;
+ this.facetSection = facetSection;
+ createControl(composite);
+ }
+
+ public void setCommandStack(CommandStack commandStack)
+ {
+ this.commandStack = commandStack;
+ }
+
+ public void setIsReadOnly(boolean isReadOnly)
+ {
+ this.isReadOnly = isReadOnly;
+ }
+
+ public TabbedPropertySheetWidgetFactory getWidgetFactory()
+ {
+ return factory;
+ }
+
+ public Control getControl()
+ {
+ return composite;
+ }
+
+ public void setEnabled(boolean isEnabled)
+ {
+ this.isEnabled = isEnabled;
+ addButton.setEnabled(isEnabled);
+ addUsingDialogButton.setEnabled(isEnabled);
+ editButton.setEnabled(isEnabled);
+ constraintsTableViewer.getTable().setEnabled(isEnabled);
+ composite.setEnabled(isEnabled);
+ }
+
+ public Control createControl(Composite parent)
+ {
+ composite = factory.createFlatFormComposite(parent);
+ GridData data = new GridData();
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 2;
+ composite.setLayout(gridLayout);
+
+ constraintsTableViewer = new ConstraintsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
+ constraintsTableViewer.setInput(input);
+ Table table = constraintsTableViewer.getTable();
+ table.addSelectionListener(this);
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ data.widthHint = 150;
+ data.grabExcessVerticalSpace = true;
+ table.setLayoutData(data);
+ table.addListener(SWT.Resize, this);
+
+ Composite buttonComposite = getWidgetFactory().createComposite(composite, SWT.FLAT);
+ GridLayout buttonCompositeLayout = new GridLayout();
+ buttonCompositeLayout.marginTop = 0;
+ buttonCompositeLayout.marginBottom = 0;
+ buttonCompositeLayout.numColumns = 1;
+ buttonComposite.setLayout(buttonCompositeLayout);
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = false;
+ buttonComposite.setLayoutData(data);
+
+
+ addButton = getWidgetFactory().createButton(buttonComposite, "Add", SWT.PUSH);
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = GridData.BEGINNING;
+ addButton.setLayoutData(data);
+ addButton.addSelectionListener(this);
+
+ addUsingDialogButton = getWidgetFactory().createButton(buttonComposite, "Add...", SWT.PUSH);
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = GridData.BEGINNING;
+ addUsingDialogButton.setLayoutData(data);
+ addUsingDialogButton.addSelectionListener(this);
+
+ editButton = getWidgetFactory().createButton(buttonComposite, "Edit...", SWT.PUSH);
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ editButton.setLayoutData(data);
+ editButton.setEnabled(false);
+ editButton.addSelectionListener(this);
+
+
+ deleteButton = getWidgetFactory().createButton(buttonComposite, "Delete", SWT.PUSH);
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ deleteButton.setLayoutData(data);
+ deleteButton.setEnabled(false);
+ deleteButton.addSelectionListener(this);
+
+
+ return composite;
+ }
+
+ public void handleEvent(Event event)
+ {
+ Table table = constraintsTableViewer.getTable();
+ if (event.type == SWT.Resize && event.widget == table)
+ {
+ TableColumn tableColumn = table.getColumn(0);
+ tableColumn.setWidth(table.getSize().x);
+ }
+ }
+
+ public void setInput(Object input)
+ {
+ constraintsTableViewer.setInput(input);
+ if (isReadOnly)
+ {
+ composite.setEnabled(false);
+ }
+ else
+ {
+ composite.setEnabled(true);
+ }
+// constraintsTableViewer.refresh();
+ }
+
+ public void widgetSelected(SelectionEvent e)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+ Element element = st.getElement();
+
+ if (e.widget == addButton)
+ {
+ List enumList = st.getEnumerationFacets();
+ StringBuffer newName = new StringBuffer("value1"); //$NON-NLS-1$
+ int suffix = 1;
+ for (Iterator i = enumList.iterator(); i.hasNext();)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) i.next();
+ String value = enumFacet.getLexicalValue();
+ if (value != null)
+ {
+ if (value.equals(newName.toString()))
+ {
+ suffix++;
+ newName = new StringBuffer("value" + String.valueOf(suffix)); //$NON-NLS-1$
+ }
+ }
+ }
+
+ if (kind == ENUMERATION)
+ {
+ CompoundCommand compoundCommand = new CompoundCommand();
+ XSDSimpleTypeDefinition targetSimpleType = null;
+ if (feature != null)
+ {
+ XSDSimpleTypeDefinition anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType(feature, input);
+ if (anonymousSimpleType == null)
+ {
+ anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ anonymousSimpleType.setBaseTypeDefinition(input);
+
+ ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Change pattern", (XSDFeature) feature);
+ changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+ compoundCommand.add(changeToAnonymousCommand);
+ input = anonymousSimpleType;
+ }
+ targetSimpleType = anonymousSimpleType;
+ }
+ else
+ {
+ targetSimpleType = input;
+ }
+
+ AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumeration", targetSimpleType);
+ command.setValue(newName.toString());
+ compoundCommand.add(command);
+ commandStack.execute(compoundCommand);
+ setInput(input);
+ constraintsTableViewer.refresh();
+ int newItemIndex = constraintsTableViewer.getTable().getItemCount() - 1;
+ constraintsTableViewer.editElement(constraintsTableViewer.getElementAt(newItemIndex), 0);
+ }
+ }
+ else if (e.widget == addUsingDialogButton)
+ {
+ Display display = Display.getCurrent();
+ // if it is null, get the default one
+ display = display == null ? Display.getDefault() : display;
+ Shell shell = display.getActiveShell();
+
+ if (kind == PATTERN)
+ {
+ String initialValue = ""; //$NON-NLS-1$
+ RegexWizard wizard = new RegexWizard(initialValue);
+
+ WizardDialog wizardDialog = new WizardDialog(shell, wizard);
+ wizardDialog.setBlockOnOpen(true);
+ wizardDialog.create();
+
+ int result = wizardDialog.open();
+
+ if (result == Window.OK)
+ {
+ String newPattern = wizard.getPattern();
+ CompoundCommand compoundCommand = new CompoundCommand();
+ XSDSimpleTypeDefinition targetSimpleType = null;
+ if (feature != null)
+ {
+ XSDSimpleTypeDefinition anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType(feature, input);
+ if (anonymousSimpleType == null)
+ {
+ anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ anonymousSimpleType.setBaseTypeDefinition(input);
+
+ ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Change pattern", (XSDFeature) feature);
+ changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+ compoundCommand.add(changeToAnonymousCommand);
+ input = anonymousSimpleType;
+ }
+ targetSimpleType = anonymousSimpleType;
+ }
+ else
+ {
+ targetSimpleType = input;
+ }
+
+ UpdateXSDPatternFacetCommand command = new UpdateXSDPatternFacetCommand("Add pattern", targetSimpleType, UpdateXSDPatternFacetCommand.ADD);
+ command.setValue(newPattern);
+ setInput(input);
+ compoundCommand.add(command);
+ commandStack.execute(compoundCommand);
+ facetSection.doSetInput();
+ }
+ constraintsTableViewer.refresh();
+ }
+ else
+ {
+ EnumerationsDialog dialog = new EnumerationsDialog(shell);
+ dialog.setBlockOnOpen(true);
+ int result = dialog.open();
+
+ if (result == Window.OK)
+ {
+ String text = dialog.getText();
+ String delimiter = dialog.getDelimiter();
+ StringTokenizer tokenizer = new StringTokenizer(text, delimiter);
+ CompoundCommand compoundCommand = new CompoundCommand("Add Enumerations");
+
+ XSDSimpleTypeDefinition targetSimpleType = null;
+ if (feature != null)
+ {
+ XSDSimpleTypeDefinition anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType(feature, input);
+ if (anonymousSimpleType == null)
+ {
+ anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ anonymousSimpleType.setBaseTypeDefinition(input);
+
+ ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("", (XSDFeature) feature);
+ changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+ compoundCommand.add(changeToAnonymousCommand);
+ input = anonymousSimpleType;
+ }
+ targetSimpleType = anonymousSimpleType;
+ }
+ else
+ {
+ targetSimpleType = input;
+ }
+
+ while (tokenizer.hasMoreTokens())
+ {
+ String token = tokenizer.nextToken();
+ if (dialog.isPreserveWhitespace() == false)
+ {
+ token = token.trim();
+ }
+ AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumerations", targetSimpleType);
+ command.setValue(token);
+ compoundCommand.add(command);
+ }
+ commandStack.execute(compoundCommand);
+ }
+ //setInput(input);
+ facetSection.doSetInput();
+ constraintsTableViewer.refresh();
+ }
+ }
+ else if (e.widget == deleteButton)
+ {
+ StructuredSelection selection = (StructuredSelection) constraintsTableViewer.getSelection();
+ CompoundCommand compoundCommand = new CompoundCommand();
+ if (selection != null)
+ {
+ Iterator i = selection.iterator();
+ if (selection.size() > 0)
+ {
+ compoundCommand.setLabel("Delete Constraints");
+ }
+ else
+ {
+ compoundCommand.setLabel("Delete Pattern");
+ }
+ while (i.hasNext())
+ {
+ Object obj = i.next();
+ if (obj != null)
+ {
+ if (obj instanceof XSDPatternFacet)
+ {
+ UpdateXSDPatternFacetCommand command = new UpdateXSDPatternFacetCommand("", input, UpdateXSDPatternFacetCommand.DELETE);
+ command.setPatternToEdit((XSDPatternFacet)obj);
+ compoundCommand.add(command);
+ }
+ else if (obj instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) obj;
+ DeleteCommand deleteCommand = new DeleteCommand("Delete Enumeration", enumFacet);
+ compoundCommand.add(deleteCommand);
+ }
+ }
+ }
+ commandStack.execute(compoundCommand);
+ constraintsTableViewer.refresh();
+
+ if (constraintsTableViewer.getTable().getItemCount() == 0)
+ {
+ editButton.setEnabled(false);
+ deleteButton.setEnabled(false);
+ }
+ }
+ }
+ else if (e.widget == editButton)
+ {
+ StructuredSelection selection = (StructuredSelection) constraintsTableViewer.getSelection();
+ if (selection != null)
+ {
+ Object obj = selection.getFirstElement();
+ if (obj instanceof XSDPatternFacet)
+ {
+ XSDPatternFacet pattern = (XSDPatternFacet) obj;
+ String initialValue = pattern.getLexicalValue();
+ if (initialValue == null)
+ {
+ initialValue = ""; //$NON-NLS-1$
+ }
+
+ Shell shell = Display.getCurrent().getActiveShell();
+
+ RegexWizard wizard = new RegexWizard(initialValue);
+
+ WizardDialog wizardDialog = new WizardDialog(shell, wizard);
+ wizardDialog.setBlockOnOpen(true);
+ wizardDialog.create();
+
+ int result = wizardDialog.open();
+
+ if (result == Window.OK)
+ {
+ String newPattern = wizard.getPattern();
+ element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern);
+ pattern.setLexicalValue(newPattern);
+ constraintsTableViewer.refresh();
+ }
+ }
+ }
+ }
+ else if (e.widget == constraintsTableViewer.getTable())
+ {
+ StructuredSelection selection = (StructuredSelection) constraintsTableViewer.getSelection();
+ if (selection.getFirstElement() != null)
+ {
+ editButton.setEnabled(true);
+ deleteButton.setEnabled(true);
+ }
+ else
+ {
+ editButton.setEnabled(false);
+ deleteButton.setEnabled(false);
+ }
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e)
+ {
+
+ }
+
+
+ public void setConstraintKind(int kind)
+ {
+ this.kind = kind;
+ constraintsTableViewer.setInput(input);
+ constraintsTableViewer.refresh();
+ }
+
+ public void doModify(Object element, String property, Object value)
+ {
+ if (element instanceof TableItem && (value != null))
+ {
+ TableItem item = (TableItem) element;
+
+ if (item.getData() instanceof XSDPatternFacet)
+ {
+ XSDPatternFacet patternFacet = (XSDPatternFacet) item.getData();
+ patternFacet.setLexicalValue((String) value);
+
+ item.setData(patternFacet);
+ item.setText((String) value);
+ }
+ else if (item.getData() instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) item.getData();
+ SetXSDFacetValueCommand command = new SetXSDFacetValueCommand("Set Enumeration Value", enumFacet);
+ command.setValue((String) value);
+ commandStack.execute(command);
+ item.setData(enumFacet);
+ item.setText((String) value);
+ }
+ }
+ }
+
+ public Object doGetValue(Object element, String property)
+ {
+ if (element instanceof XSDPatternFacet)
+ {
+ XSDPatternFacet patternFacet = (XSDPatternFacet) element;
+ String value = patternFacet.getLexicalValue();
+ if (value == null)
+ value = ""; //$NON-NLS-1$
+ return value;
+ }
+ else if (element instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+ String value = enumFacet.getLexicalValue();
+ if (value == null)
+ value = ""; //$NON-NLS-1$
+ return value;
+ }
+
+ return ""; //$NON-NLS-1$
+ }
+
+ class ConstraintsTableViewer extends NavigableTableViewer implements ICellModifier
+ {
+ protected String[] columnProperties = { "Pattern" };
+
+ protected CellEditor[] cellEditors;
+
+ Table table;
+
+ public ConstraintsTableViewer(Table table)
+ {
+ super(table);
+ table = getTable();
+
+ table.setLinesVisible(true);
+
+ setContentProvider(new ConstraintsContentProvider());
+ setLabelProvider(new ConstraintsTableLabelProvider());
+ setColumnProperties(columnProperties);
+
+ setCellModifier(this);
+
+ TableColumn column = new TableColumn(table, SWT.NONE, 0);
+ column.setText(columnProperties[0]);
+ column.setAlignment(SWT.LEFT);
+ column.setResizable(true);
+
+ cellEditors = new CellEditor[1];
+
+ TableLayout layout = new TableLayout();
+ ColumnWeightData data = new ColumnWeightData(100);
+
+ layout.addColumnData(data);
+ cellEditors[0] = new TextCellEditor(table);
+
+ getTable().setLayout(layout);
+ setCellEditors(cellEditors);
+ }
+
+ public boolean canModify(Object element, String property)
+ {
+ return true;
+ }
+
+ public void modify(Object element, String property, Object value)
+ {
+ doModify(element, property, value);
+ }
+
+ public Object getValue(Object element, String property)
+ {
+ return doGetValue(element, property);
+ }
+
+ }
+
+ class ConstraintsContentProvider implements IStructuredContentProvider
+ {
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ }
+
+ public java.lang.Object[] getElements(java.lang.Object inputElement)
+ {
+ java.util.List list = new ArrayList();
+ if (inputElement instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) inputElement;
+ if (kind == PATTERN)
+ {
+ return st.getPatternFacets().toArray();
+ }
+ else
+ {
+ return st.getEnumerationFacets().toArray();
+ }
+ }
+ return list.toArray();
+ }
+
+ public void dispose()
+ {
+ }
+ }
+
+ class ConstraintsTableLabelProvider extends LabelProvider implements ITableLabelProvider
+ {
+ public ConstraintsTableLabelProvider()
+ {
+
+ }
+
+ public Image getColumnImage(Object element, int columnIndex)
+ {
+ if (kind == PATTERN)
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimplePattern.gif"); //$NON-NLS-1$
+ }
+ else
+ {
+ return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
+ }
+ }
+
+ public String getColumnText(Object element, int columnIndex)
+ {
+ if (element instanceof XSDPatternFacet)
+ {
+ XSDPatternFacet pattern = (XSDPatternFacet) element;
+ String value = pattern.getLexicalValue();
+ if (value == null)
+ value = ""; //$NON-NLS-1$
+ return value;
+ }
+ else if (element instanceof XSDEnumerationFacet)
+ {
+ XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+ String value = enumFacet.getLexicalValue();
+ if (value == null)
+ value = "";
+ return value;
+ }
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDActionManager.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDActionManager.java
new file mode 100644
index 0000000..04f0a5e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDActionManager.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.ui.internal.XMLUIMessages;
+import org.eclipse.wst.xml.ui.internal.actions.EditAttributeAction;
+import org.eclipse.wst.xml.ui.internal.contentoutline.XMLNodeActionManager;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class XSDActionManager extends XMLNodeActionManager {
+
+ private CommandStack commandStack;
+
+ public XSDActionManager(IStructuredModel model, Viewer viewer) {
+ super(model, viewer);
+ }
+
+ public void setCommandStack(CommandStack commandStack) {
+ this.commandStack = commandStack;
+ }
+
+ protected Action createAddCDataSectionAction(Node parent, int index)
+ {
+ return null;
+ }
+
+ protected Action createAddPCDataAction(Node parent, CMDataType dataType, int index) {
+ return null;
+ }
+
+
+ protected void contributeAddDocumentChildActions(IMenuManager menu, Document document, int ic, int vc) {
+ }
+
+ protected void contributeEditGrammarInformationActions(IMenuManager menu, Node node) {
+ }
+
+ protected void contributePIAndCommentActions(IMenuManager menu, Document document, int index) {
+ }
+
+ protected void contributePIAndCommentActions(IMenuManager menu, Element parentElement, CMElementDeclaration parentEd, int index) {
+ }
+
+ protected void contributeTextNodeActions(IMenuManager menu, Element parentElement, CMElementDeclaration parentEd, int index) {
+ super.contributeTextNodeActions(menu, parentElement, parentEd, index);
+ }
+
+ protected Action createAddAttributeAction(Element parent, CMAttributeDeclaration ad) {
+ Action action = null;
+ if (ad == null) {
+ action = new EditAttributeAction(this, parent, null, XMLUIMessages._UI_MENU_NEW_ATTRIBUTE, XMLUIMessages._UI_MENU_NEW_ATTRIBUTE_TITLE); //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ action = new AddNodeAction(ad, parent, -1);
+ }
+
+ WrapperCommand command = new WrapperCommand(action, parent, ad);
+ WrapperAction wrapperAction = new WrapperAction(command);
+ return wrapperAction;
+ }
+
+ class WrapperAction extends Action
+ {
+ WrapperCommand command;
+
+ public WrapperAction(WrapperCommand command)
+ {
+ super();
+ this.command = command;
+ }
+
+ public String getText()
+ {
+ return command.getAction().getText();
+ }
+
+ public void run()
+ {
+ // Some editors may not use a command stack
+ if (commandStack != null)
+ {
+ commandStack.execute(command);
+ }
+ else
+ {
+ command.execute();
+ }
+ }
+ }
+
+ class WrapperCommand extends Command
+ {
+ Action action;
+ Element parent;
+ CMAttributeDeclaration ad;
+ public WrapperCommand(Action action, Element parent, CMAttributeDeclaration ad)
+ {
+ super();
+ this.action = action;
+ this.parent = parent;
+ this.ad = ad;
+ }
+
+ public String getLabel()
+ {
+ return action.getText();
+ }
+
+ public Action getAction()
+ {
+ return action;
+ }
+
+ public void execute()
+ {
+ action.run();
+ }
+
+ public void undo() {
+
+// ((Element)parent).removeAttribute(ad.getAttrName());
+
+ getModel().getUndoManager().undo();
+
+ }
+
+
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeDeclarationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeDeclarationSection.java
new file mode 100644
index 0000000..b3438f2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeDeclarationSection.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDAttributeDeclarationSection extends AbstractSection
+{
+ protected Text nameText;
+ protected Text typeCombo;
+ protected Button button;
+ boolean isAttributeReference;
+
+ public XSDAttributeDeclarationSection()
+ {
+ super();
+ }
+
+ protected void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ String typeLabel = Messages.UI_LABEL_TYPE; //$NON-NLS-1$
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 3;
+ composite.setLayout(gridLayout);
+
+ // ------------------------------------------------------------------
+ // NameLabel
+ // ------------------------------------------------------------------
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Name:"); //$NON-NLS-1$
+ nameLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // NameText
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ nameText.setLayoutData(data);
+ applyAllListeners(nameText);
+
+ // ------------------------------------------------------------------
+ // DummyLabel
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // typeLabel
+ // ------------------------------------------------------------------
+ getWidgetFactory().createCLabel(composite, typeLabel); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // typeCombo
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ typeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ typeCombo.setEditable(false);
+ // baseTypeCombo.addListener(SWT.Modify, this);
+ typeCombo.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // BaseTypeButton
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+
+ button = getWidgetFactory().createButton(composite, "", SWT.PUSH);
+ button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif"));
+ button.addSelectionListener(this);
+ button.setLayoutData(data);
+ }
+
+ /*
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+ */
+ public void refresh()
+ {
+ super.refresh();
+
+ setListenerEnabled(false);
+
+ // refresh name
+
+ nameText.setText("");
+ if (input instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration namedComponent = ((XSDAttributeDeclaration) input).getResolvedAttributeDeclaration();
+
+ String name = namedComponent.getName();
+ if (name != null)
+ {
+ nameText.setText(name);
+ }
+ }
+
+ // refresh type
+
+ typeCombo.setText(""); //$NON-NLS-1$
+ if (input != null)
+ {
+ Element element = null;
+ if (input instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration xsdAttribute = ((XSDAttributeDeclaration) input).getResolvedAttributeDeclaration();
+ isAttributeReference = ((XSDAttributeDeclaration)input).isAttributeDeclarationReference();
+ element = xsdAttribute.getElement();
+ XSDTypeDefinition typeDef = xsdAttribute.getTypeDefinition();
+ boolean isAnonymous = xsdAttribute.getAnonymousTypeDefinition() != null;
+
+ if (isAnonymous)
+ {
+ typeCombo.setText("**anonymous**"); //$NON-NLS-1$
+ }
+ else
+ {
+ String typeName = ""; //$NON-NLS-1$
+ if (typeDef != null)
+ {
+ typeName = typeDef.getQName(xsdSchema);
+ if (typeName == null)
+ {
+ typeName = ""; //$NON-NLS-1$
+ }
+ typeCombo.setText(typeName);
+ }
+ else
+ {
+ typeCombo.setText(Messages.UI_NO_TYPE); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+
+ setListenerEnabled(true);
+ }
+
+ public boolean shouldUseExtraSpace()
+ {
+ return false;
+ }
+
+ protected void doHandleEvent(Event event)
+ {
+ super.doHandleEvent(event);
+ if (event.widget == nameText)
+ {
+ if (!nameText.getEditable())
+ return;
+
+ String newValue = nameText.getText().trim();
+ if (input instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration namedComponent = ((XSDAttributeDeclaration) input).getResolvedAttributeDeclaration();
+
+ if (!validateSection())
+ return;
+
+ Command command = null;
+
+ // Make sure an actual name change has taken place
+ String oldName = namedComponent.getName();
+ if (!newValue.equals(oldName))
+ {
+ command = new UpdateNameCommand("Rename", namedComponent, newValue);
+ }
+
+ if (command != null && getCommandStack() != null)
+ {
+ getCommandStack().execute(command);
+ }
+
+ if (isAttributeReference)
+ {
+ XSDAttributeDeclaration attrRef = (XSDAttributeDeclaration)input;
+ String qname = attrRef.getResolvedAttributeDeclaration().getQName();
+ attrRef.getElement().setAttribute(XSDConstants.REF_ATTRIBUTE, qname);
+
+// TypesHelper helper = new TypesHelper(xsdSchema);
+// List items = new ArrayList();
+// items = helper.getGlobalElements();
+// items.add(0, "");
+// componentNameCombo.setItems((String [])items.toArray(new String[0]));
+//
+// refreshRefCombo();
+ }
+
+ }
+ }
+ }
+
+ protected boolean validateSection()
+ {
+ if (nameText == null || nameText.isDisposed())
+ return true;
+
+ setErrorMessage(null);
+
+ String name = nameText.getText().trim();
+
+ // validate against NCName
+ if (name.length() < 1 || !XMLChar.isValidNCName(name))
+ {
+ setErrorMessage("Error Invalid Name");
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeGroupDefinitionSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeGroupDefinitionSection.java
new file mode 100644
index 0000000..cee4335
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeGroupDefinitionSection.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDAttributeGroupDefinitionSection extends AbstractSection
+{
+ protected CCombo refCombo;
+
+ public XSDAttributeGroupDefinitionSection()
+ {
+ super();
+ }
+
+ protected void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
+ composite.setLayout(gridLayout);
+
+ // ------------------------------------------------------------------
+ // Ref Label
+ // ------------------------------------------------------------------
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel refLabel = getWidgetFactory().createCLabel(composite, XSDConstants.REF_ATTRIBUTE + ":"); //$NON-NLS-1$
+ refLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // Ref Combo
+ // ------------------------------------------------------------------
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ refCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ refCombo.addSelectionListener(this);
+ refCombo.setLayoutData(data);
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+
+ if (isReadOnly)
+ {
+ composite.setEnabled(false);
+ }
+ else
+ {
+ composite.setEnabled(true);
+ }
+
+ setListenerEnabled(false);
+
+ if (input instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent namedComponent = (XSDNamedComponent)input;
+ Element element = namedComponent.getElement();
+ if (element != null)
+ {
+ String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
+ if (attrValue == null)
+ {
+ attrValue = "";
+ }
+ refCombo.setText(attrValue);
+ }
+ }
+
+ setListenerEnabled(true);
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDComplexTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDComplexTypeSection.java
new file mode 100644
index 0000000..326419d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDComplexTypeSection.java
@@ -0,0 +1,365 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDComplexTypeSection extends AbstractSection implements SelectionListener
+{
+ protected Text nameText;
+ protected Text baseTypeCombo;
+ protected CCombo derivedByCombo;
+ protected Button button;
+ private String derivedByChoicesComboValues[] = { "", XSDConstants.RESTRICTION_ELEMENT_TAG, XSDConstants.EXTENSION_ELEMENT_TAG };
+
+ public XSDComplexTypeSection()
+ {
+ super();
+ }
+
+ /**
+ * Contents of the property tab
+ *
+ * NameLabel NameText DummyLabel BaseTypeLabel BaseTypeCombo BaseTypeButton
+ * DerivedByLabel DerivedByCombo
+ */
+ public void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 3;
+ composite.setLayout(gridLayout);
+
+ // ------------------------------------------------------------------
+ // NameLabel
+ // ------------------------------------------------------------------
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Name:"); //$NON-NLS-1$
+ nameLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // NameText
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ nameText.setLayoutData(data);
+ applyAllListeners(nameText);
+
+ // ------------------------------------------------------------------
+ // DummyLabel
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // BaseTypeLabel
+ // ------------------------------------------------------------------
+
+ getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_INHERIT_FROM); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // BaseTypeCombo
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ baseTypeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ baseTypeCombo.setEditable(false);
+ // baseTypeCombo.addListener(SWT.Modify, this);
+ baseTypeCombo.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // BaseTypeButton
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+
+ button = getWidgetFactory().createButton(composite, "", SWT.PUSH);
+ button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif"));
+ button.addSelectionListener(this);
+ button.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // DerivedByLabel
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+
+ CLabel derivedByLabel = getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_INHERIT_BY); //$NON-NLS-1$
+ derivedByLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // DerivedByCombo
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ derivedByCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ derivedByCombo.setLayoutData(data);
+ derivedByCombo.setItems(derivedByChoicesComboValues);
+ // derivedByCombo.addSelectionListener(this);
+
+ }
+
+ /*
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+ */
+ public void refresh()
+ {
+ super.refresh();
+ if (Display.getCurrent() == null)
+ return;
+
+ setListenerEnabled(false);
+
+ try
+ {
+ nameText.setText("");
+ baseTypeCombo.setText(""); //$NON-NLS-1$
+
+ if (input instanceof XSDComplexTypeDefinition)
+ {
+ XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition) input;
+ String name = complexType.getName();
+ if (name == null)
+ name = "";
+
+ boolean isAnonymousType = name.equals("") ? true : false;
+ if (isAnonymousType)
+ {
+ nameText.setText("**anonymous**"); //$NON-NLS-1$
+ nameText.setEditable(false);
+ }
+ else
+ {
+ nameText.setText(name);
+ nameText.setEditable(true);
+ }
+
+ XSDTypeDefinition baseTypeDefinition = complexType.getBaseTypeDefinition();
+ String baseType = ""; //$NON-NLS-1$
+ if (baseTypeDefinition != null)
+ {
+ baseType = baseTypeDefinition.getName();
+ if (baseType == null)
+ {
+ baseType = "";
+ }
+ }
+ baseTypeCombo.setText(baseType);
+
+ derivedByCombo.setText(""); //$NON-NLS-1$
+ int derivationMethod = complexType.getDerivationMethod().getValue();
+ if (derivationMethod == XSDDerivationMethod.EXTENSION)
+ {
+ derivedByCombo.setText(XSDConstants.EXTENSION_ELEMENT_TAG);
+ }
+ else if (derivationMethod == XSDDerivationMethod.RESTRICTION)
+ {
+ derivedByCombo.setText(XSDConstants.RESTRICTION_ELEMENT_TAG);
+ }
+ }
+
+ }
+ finally
+ {
+ setListenerEnabled(true);
+ }
+ }
+
+ /**
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent e)
+ {
+ XSDComplexTypeDefinition xsdComplexType = (XSDComplexTypeDefinition) input;
+ Element ctElement = xsdComplexType.getElement();
+ if (e.widget == button)
+ {
+ Shell shell = Display.getCurrent().getActiveShell();
+ Element element = null;
+ if (xsdComplexType.getContent() != null)
+ {
+ element = xsdComplexType.getContent().getElement();
+ }
+
+ // SimpleContentBaseTypeOptionsDialog dialog = new
+ // SimpleContentBaseTypeOptionsDialog(shell, element, BASE_TYPE_ID,
+ // xsdComplexType.getSchema());
+ // dialog.setBlockOnOpen(true);
+ // dialog.create();
+ // int result = dialog.open();
+
+ IFile currentIFile = ((IFileEditorInput) getActiveEditor().getEditorInput()).getFile();
+
+ XSDSchema schema = xsdComplexType.getSchema();
+
+ // issuec (cs) need to move the common.ui's selection dialog
+ /*
+ XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
+ XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, Messages.UI_LABEL_SET_TYPE, provider);
+ provider.setDialog(dialog);
+ dialog.setBlockOnOpen(true);
+ dialog.create();
+ int result = dialog.open();
+
+ if (result == Window.OK)
+ {
+ XMLComponentSpecification spec = dialog.getSelection();
+ XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
+ helper.addImportIfNecessary(element, spec);
+
+ String typeString = helper.getPrefixedTypeName(spec);
+
+ String derivedBy = "";
+ int derivationMethod = xsdComplexType.getDerivationMethod().getValue();
+ if (derivationMethod == XSDDerivationMethod.EXTENSION)
+ {
+ derivedBy = XSDConstants.EXTENSION_ELEMENT_TAG;
+ }
+ else if (derivationMethod == XSDDerivationMethod.RESTRICTION)
+ {
+ derivedBy = XSDConstants.RESTRICTION_ELEMENT_TAG;
+ }
+
+ SetBaseTypeAction setBaseTypeAction = new SetBaseTypeAction("_UI_LABEL_SET_BASE_TYPE"); //$NON-NLS-1$
+ setBaseTypeAction.setXSDSchema(xsdSchema);
+ setBaseTypeAction.setComplexTypeElement(ctElement);
+ setBaseTypeAction.setType(typeString);
+ setBaseTypeAction.setDerivedBy(derivedBy);
+ setBaseTypeAction.performAction();
+
+ }
+ refresh();
+ // }
+ // else if (e.widget == derivedByCombo)
+ // {
+ // Element contentModelElement =
+ // getDomHelper().getContentModelFromParent(ctElement);
+ // String baseType = getDomHelper().getBaseType(contentModelElement);
+ // beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"),
+ // ctElement); //$NON-NLS-1$
+ // if (contentModelElement != null)
+ // {
+ // getDomHelper().changeDerivedByType(contentModelElement,
+ // derivedByCombo.getText(), baseType);
+ // }
+ // endRecording(ctElement);
+ */
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
+ */
+ public boolean shouldUseExtraSpace()
+ {
+ return false;
+ }
+
+ public void dispose()
+ {
+ super.dispose();
+ }
+
+ public void doHandleEvent(Event event)
+ {
+ super.doHandleEvent(event);
+ if (event.widget == nameText)
+ {
+ if (!nameText.getEditable())
+ return;
+
+ String newValue = nameText.getText().trim();
+ if (input instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+
+ if (!validateSection())
+ return;
+
+ Command command = null;
+
+ // Make sure an actual name change has taken place
+ String oldName = namedComponent.getName();
+ if (!newValue.equals(oldName))
+ {
+ command = new UpdateNameCommand("Rename", namedComponent, newValue);
+ }
+
+ if (command != null && getCommandStack() != null)
+ {
+ getCommandStack().execute(command);
+ }
+ // doReferentialIntegrityCheck(namedComponent, newValue);
+ }
+ }
+ }
+
+ protected boolean validateSection()
+ {
+ if (nameText == null || nameText.isDisposed())
+ return true;
+
+ setErrorMessage(null);
+
+ String name = nameText.getText().trim();
+
+ // validate against NCName
+ if (name.length() < 1 || !XMLChar.isValidNCName(name))
+ {
+ setErrorMessage("Error Invalid Name");
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDElementDeclarationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDElementDeclarationSection.java
new file mode 100644
index 0000000..17bc839
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDElementDeclarationSection.java
@@ -0,0 +1,581 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialog;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialogConfiguration;
+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.editor.Messages;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.dialogs.NewTypeButtonHandler;
+import org.eclipse.wst.xsd.editor.internal.search.XSDComponentDescriptionProvider;
+import org.eclipse.wst.xsd.editor.internal.search.XSDTypesSearchListProvider;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMaxOccursCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMinOccursCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateTypeReferenceCommand;
+import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDElementDeclarationSection extends MultiplicitySection
+{
+ protected Text nameText;
+ protected Text typeCombo;
+ protected Button typesBrowseButton;
+ protected CCombo componentNameCombo;
+ boolean isElementReference;
+
+ private XSDTypeDefinition typeDefinition;
+
+ public XSDElementDeclarationSection()
+ {
+ super();
+ }
+
+ /**
+ * Contents of the property tab
+ */
+ public void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+ TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+
+ String typeLabel = Messages.UI_LABEL_TYPE; //$NON-NLS-1$
+
+ GridData data = new GridData();
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 3;
+ composite.setLayout(gridLayout);
+
+ // ------------------------------------------------------------------
+ // NameLabel
+ // ------------------------------------------------------------------
+
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel nameLabel = factory.createCLabel(composite, "Name:");
+ nameLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // NameText
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ nameText.setLayoutData(data);
+ applyAllListeners(nameText);
+
+ // ------------------------------------------------------------------
+ // DummyLabel
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // Ref Label
+ // ------------------------------------------------------------------
+ if (isElementReference)
+ {
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel refLabel = getWidgetFactory().createCLabel(composite, "Reference:");
+ refLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // Ref Combo
+ // ------------------------------------------------------------------
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ componentNameCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ componentNameCombo.addSelectionListener(this);
+ componentNameCombo.setLayoutData(data);
+
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+ }
+
+ // ------------------------------------------------------------------
+ // typeLabel
+ // ------------------------------------------------------------------
+ getWidgetFactory().createCLabel(composite, typeLabel);
+
+ // ------------------------------------------------------------------
+ // typeCombo
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ typeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ typeCombo.setEditable(false);
+ typeCombo.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // BaseTypeButton
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+
+ typesBrowseButton = getWidgetFactory().createButton(composite, "", SWT.PUSH);
+ typesBrowseButton.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif"));
+ typesBrowseButton.addSelectionListener(this);
+ typesBrowseButton.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // min/max button modifiers
+ // ------------------------------------------------------------------
+
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ Composite modifierComposite = getWidgetFactory().createComposite(composite, SWT.FLAT);
+ GridLayout gridLayout2 = new GridLayout();
+ gridLayout2.marginLeft = 0;
+ gridLayout2.marginRight = 0;
+ gridLayout2.marginTop = 0;
+ gridLayout2.marginBottom = 0;
+ gridLayout2.numColumns = 2;
+ modifierComposite.setLayout(gridLayout2);
+ modifierComposite.setLayoutData(data);
+ requiredButton = getWidgetFactory().createButton(modifierComposite, "Required", SWT.CHECK | SWT.FLAT); //$NON-NLS-1$
+ requiredButton.addSelectionListener(this);
+
+ listButton = getWidgetFactory().createButton(modifierComposite, "Array", SWT.CHECK | SWT.FLAT); //$NON-NLS-1$
+ listButton.addSelectionListener(this);
+
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // min property
+ // ------------------------------------------------------------------
+
+ getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MINOCCURS);
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ minCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ minCombo.setLayoutData(data);
+ minCombo.add("0"); //$NON-NLS-1$
+ minCombo.add("1"); //$NON-NLS-1$
+ applyModifyListeners(minCombo);
+ minCombo.addSelectionListener(this);
+
+ // ------------------------------------------------------------------
+ // DummyLabel
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // max property
+ // ------------------------------------------------------------------
+ getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MAXOCCURS);
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ maxCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ maxCombo.setLayoutData(data);
+ maxCombo.add("0"); //$NON-NLS-1$
+ maxCombo.add("1"); //$NON-NLS-1$
+ maxCombo.add("unbounded"); //$NON-NLS-1$
+ applyModifyListeners(maxCombo);
+ maxCombo.addSelectionListener(this);
+ }
+
+ public void setInput(IWorkbenchPart part, ISelection selection)
+ {
+ super.setInput(part, selection);
+ setListenerEnabled(false);
+ init();
+ relayout();
+
+ if (isElementReference)
+ {
+ TypesHelper helper = new TypesHelper(xsdSchema);
+ List items = new ArrayList();
+ items = helper.getGlobalElements();
+ items.add(0, "");
+ componentNameCombo.setItems((String [])items.toArray(new String[0]));
+ }
+ setListenerEnabled(true);
+ }
+
+ protected void init()
+ {
+ if (input instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) input;
+ isElementReference = xsdElementDeclaration.isElementDeclarationReference();
+
+ typeDefinition = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
+ }
+ }
+
+ /*
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+ */
+ public void refresh()
+ {
+ super.refresh();
+
+ setListenerEnabled(false);
+
+ XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration) input).getResolvedElementDeclaration();
+
+ // refresh name
+ nameText.setText("");
+ typeCombo.setText(""); //$NON-NLS-1$
+ typesBrowseButton.setEnabled(true);
+//
+// if (input instanceof XSDNamedComponent)
+// {
+// XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+//
+ String name = xsdElementDeclaration.getName();
+ if (name != null)
+ {
+ nameText.setText(name);
+ }
+// }
+
+ if (isElementReference)
+ {
+ refreshRefCombo();
+ }
+
+ // refresh type
+ if (input != null)
+ {
+ Element element = null;
+ if (input instanceof XSDElementDeclaration)
+ {
+ element = xsdElementDeclaration.getElement();
+ boolean isAnonymous = xsdElementDeclaration.getAnonymousTypeDefinition() != null;
+ //XSDTypeDefinition typeDef = XSDUtils.getResolvedType(xsdElementDeclaration);
+ XSDTypeDefinition typeDef = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
+ XSDTypeDefinition typeValue = xsdElementDeclaration.getType();
+ boolean isPrimitive = false;
+ if (typeValue != null)
+ {
+ if (typeValue.getTargetNamespace() != null)
+ {
+ isPrimitive = typeValue.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+ }
+ }
+
+ String typeName = ""; //$NON-NLS-1$
+ if (typeDef != null)
+ typeName = typeDef.getQName(xsdSchema);
+
+ if (typeName == null)
+ {
+ typeName = ""; //$NON-NLS-1$
+ }
+
+ if (isAnonymous)
+ {
+ typeCombo.setText("**anonymous**"); //$NON-NLS-1$
+ }
+ else
+ {
+ if (typeDefinition != null)
+ {
+ typeCombo.setText(typeName);
+ }
+ else
+ {
+ typeCombo.setText(Messages.UI_NO_TYPE); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+
+ // refresh min max
+ refreshMinMax();
+
+ setListenerEnabled(true);
+
+ }
+
+ public boolean shouldUseExtraSpace()
+ {
+ return false;
+ }
+
+ public void doWidgetSelected(SelectionEvent e)
+ {
+ if (e.widget == typesBrowseButton)
+ {
+ Shell shell = Display.getCurrent().getActiveShell();
+ IFile currentIFile = ((IFileEditorInput) getActiveEditor().getEditorInput()).getFile();
+
+ /** Initialize the Set types Dialog */
+ final XSDTypesSearchListProvider searchListProvider =
+ new XSDTypesSearchListProvider(currentIFile, new XSDSchema[] {xsdSchema} );
+ ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
+ configuration.setDescriptionProvider(new XSDComponentDescriptionProvider() );
+ configuration.setSearchListProvider(searchListProvider);
+ configuration.setNewComponentHandler(new NewTypeButtonHandler());
+ ComponentSearchListDialog dialog = new ScopedComponentSearchListDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), configuration);
+ //dialog.setFilterLabel("Text:");
+
+ if (input instanceof XSDAttributeDeclaration)
+ {
+ searchListProvider.showComplexTypes(false);
+ }
+
+ dialog.setBlockOnOpen(true);
+ dialog.create();
+
+ if (dialog.open() == Window.OK)
+ {
+ //String newType = (String) dialog.getSelection().getAttributeInfo("name");
+ //String nsType = (String) dialog.getSelection().getTargetNamespace();
+
+ ComponentSpecification selection = dialog.getSelectedComponent();
+ String newType = selection.getName();
+ String namespace = selection.getQualifier();
+
+ UpdateTypeReferenceCommand command = new UpdateTypeReferenceCommand((XSDElementDeclaration) input, xsdSchema.resolveTypeDefinition(namespace, newType));
+ getCommandStack().execute(command);
+
+ init();
+ relayout();
+ }
+ }
+ else if (e.widget == listButton)
+ {
+ int maxOccurs = (listButton.getSelection() ? XSDParticle.UNBOUNDED : 1);
+ if (input instanceof XSDElementDeclaration)
+ {
+ XSDParticle particle = (XSDParticle) ((XSDElementDeclaration) input).eContainer();
+ UpdateMaxOccursCommand command = new UpdateMaxOccursCommand("Update Maximum Occurence", particle, maxOccurs);
+ getCommandStack().execute(command);
+ if (maxOccurs == -1)
+ maxCombo.setText("*");
+ else
+ maxCombo.setText("");
+ }
+ }
+ else if (e.widget == requiredButton)
+ {
+ int minOccurs = requiredButton.getSelection() ? 1 : 0;
+ if (input instanceof XSDElementDeclaration)
+ {
+ XSDParticle particle = (XSDParticle) ((XSDElementDeclaration) input).eContainer();
+ UpdateMinOccursCommand command = new UpdateMinOccursCommand("Update Minimum Occurrence", particle, minOccurs);
+ getCommandStack().execute(command);
+ }
+ minCombo.setText("" + minOccurs);
+ }
+ else if (e.widget == componentNameCombo)
+ {
+ String newValue = componentNameCombo.getText();
+ if (input instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration element = (XSDElementDeclaration)input;
+// TODO: We should set the ref using the model, and not the DOM.
+ element.setResolvedElementDeclaration(element.resolveElementDeclaration(newValue));
+// element.getElement().setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
+ }
+ }
+ else if (e.widget == maxCombo)
+ {
+ updateMaxAttribute();
+ }
+ else if (e.widget == minCombo)
+ {
+ updateMinAttribute();
+ }
+
+ }
+
+ protected void relayout()
+ {
+ Composite parentComposite = composite.getParent();
+ parentComposite.getParent().setRedraw(false);
+
+ if (parentComposite != null && !parentComposite.isDisposed())
+ {
+ Control[] children = parentComposite.getChildren();
+ for (int i = 0; i < children.length; i++)
+ {
+ children[i].dispose();
+ }
+ }
+
+ // Now initialize the new handler
+ createContents(parentComposite);
+ parentComposite.getParent().layout(true, true);
+
+ // Now turn painting back on
+ parentComposite.getParent().setRedraw(true);
+ refresh();
+ }
+
+ public void doHandleEvent(Event event)
+ {
+ super.doHandleEvent(event);
+ if (event.widget == nameText)
+ {
+ String newValue = nameText.getText().trim();
+ if (input instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration namedComponent = ((XSDElementDeclaration) input).getResolvedElementDeclaration();
+ if (!validateSection())
+ return;
+
+ Command command = null;
+
+ // Make sure an actual name change has taken place
+ String oldName = namedComponent.getName();
+ if (!newValue.equals(oldName))
+ {
+ command = new UpdateNameCommand("Rename", namedComponent, newValue);
+ }
+
+ if (command != null && getCommandStack() != null)
+ {
+ getCommandStack().execute(command);
+ }
+
+ if (isElementReference)
+ {
+ XSDElementDeclaration elementRef = (XSDElementDeclaration)input;
+ String qname = elementRef.getResolvedElementDeclaration().getQName();
+ elementRef.getElement().setAttribute(XSDConstants.REF_ATTRIBUTE, qname);
+
+ TypesHelper helper = new TypesHelper(xsdSchema);
+ List items = new ArrayList();
+ items = helper.getGlobalElements();
+ items.add(0, "");
+ componentNameCombo.setItems((String [])items.toArray(new String[0]));
+
+ refreshRefCombo();
+ }
+
+ // doReferentialIntegrityCheck(namedComponent, newValue);
+ }
+ }
+ else if (event.widget == minCombo)
+ {
+ requiredButton.setSelection(isRequired);
+ }
+
+ }
+
+ protected boolean validateSection()
+ {
+ if (nameText == null || nameText.isDisposed())
+ return true;
+
+ setErrorMessage(null);
+
+ String name = nameText.getText().trim();
+
+ // validate against NCName
+ if (name.length() < 1 || !XMLChar.isValidNCName(name))
+ {
+ setErrorMessage("Invalid name");
+ return false;
+ }
+
+ return true;
+ }
+
+ public void dispose()
+ {
+ if (typesBrowseButton != null && !typesBrowseButton.isDisposed())
+ typesBrowseButton.removeSelectionListener(this);
+ if (componentNameCombo != null && !componentNameCombo.isDisposed())
+ componentNameCombo.removeSelectionListener(this);
+ if (minCombo != null && !minCombo.isDisposed())
+ minCombo.removeSelectionListener(this);
+ if (maxCombo != null && !maxCombo.isDisposed())
+ maxCombo.removeSelectionListener(this);
+ if (requiredButton != null && !requiredButton.isDisposed())
+ requiredButton.removeSelectionListener(this);
+ if (listButton != null && !listButton.isDisposed())
+ listButton.removeSelectionListener(this);
+ super.dispose();
+ }
+
+ protected void refreshRefCombo()
+ {
+ componentNameCombo.setText("");
+ typesBrowseButton.setEnabled(false);
+
+ XSDElementDeclaration namedComponent = (XSDElementDeclaration) input;
+ Element element = namedComponent.getElement();
+ if (element != null)
+ {
+ String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
+ if (attrValue == null)
+ {
+ attrValue = "";
+ }
+ componentNameCombo.setText(attrValue);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSection.java
new file mode 100644
index 0000000..0a07f3c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSection.java
@@ -0,0 +1,912 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.xsd.ui.common.commands.ChangeToLocalSimpleTypeCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNumericBoundsFacetCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateStringLengthFacetCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateXSDWhiteSpaceFacetCommand;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWhiteSpace;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDFacetSection extends AbstractSection
+{
+ private String minLengthString, maxLengthString, titleString;
+ Font titleFont;
+ CLabel title;
+ Label minLengthLabel;
+ Text minLengthText;
+ Label maxLengthLabel;
+ Text maxLengthText;
+ Group simpleTypeModifierGroup;
+ String simpleTypeModifierGroupTitle = "";
+ Button collapseWhitespaceButton;
+ Button useEnumerationsButton, usePatternsButton;
+ Button minimumInclusiveCheckbox;
+ Button maximumInclusiveCheckbox;
+ boolean isNumericBaseType;
+ private XSDTypeDefinition typeDefinition;
+ private XSDSimpleTypeDefinition xsdSimpleTypeDefinition;
+ private XSDElementDeclaration xsdElementDeclaration;
+ private XSDAttributeDeclaration xsdAttributeDeclaration;
+ private XSDFeature xsdFeature;
+ boolean hasMaxMinFacets;
+
+ SpecificConstraintsWidget constraintsWidget;
+
+ public XSDFacetSection()
+ {
+ super();
+ }
+
+ protected void createContents(Composite parent)
+ {
+ TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+ composite = factory.createFlatFormComposite(parent);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 1;
+ composite.setLayout(gridLayout);
+
+ title = factory.createCLabel(composite, ""); //$NON-NLS-1$
+ FontData fontData = composite.getFont().getFontData()[0];
+ int height = fontData.getHeight();
+ fontData.setHeight(height + 2);
+ fontData.setStyle(SWT.BOLD);
+ titleFont = new Font(null, fontData);
+ title.setFont(titleFont);
+ title.setText(titleString + (isReadOnly ? " - ReadOnly" : ""));
+
+ Composite facetComposite = factory.createComposite(composite, SWT.FLAT);
+
+ GridData data = new GridData();
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 2;
+ facetComposite.setLayout(gridLayout);
+ data.grabExcessVerticalSpace = true;
+ data.grabExcessHorizontalSpace = true;
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ facetComposite.setLayoutData(data);
+
+ data = new GridData();
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = GridData.FILL;
+
+ simpleTypeModifierGroup = getWidgetFactory().createGroup(facetComposite, simpleTypeModifierGroupTitle);
+ GridLayout groupGrid = new GridLayout();
+ groupGrid.marginTop = 0;
+ groupGrid.marginBottom = 0;
+ groupGrid.numColumns = 1;
+ simpleTypeModifierGroup.setLayoutData(data);
+ simpleTypeModifierGroup.setLayout(groupGrid);
+
+ Composite simpleTypeModifierComposite = getWidgetFactory().createFlatFormComposite(simpleTypeModifierGroup);
+ data = new GridData();
+ data.grabExcessVerticalSpace = true;
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+
+ GridLayout grid = new GridLayout();
+ grid.marginTop = 0;
+ grid.marginBottom = 0;
+ grid.numColumns = 3;
+ simpleTypeModifierComposite.setLayout(grid);
+ simpleTypeModifierComposite.setLayoutData(data);
+ if (hasMaxMinFacets)
+ {
+ minLengthLabel = factory.createLabel(simpleTypeModifierComposite, minLengthString);
+ minLengthText = factory.createText(simpleTypeModifierComposite, "");
+ applyAllListeners(minLengthText);
+
+ GridData minGridData = new GridData();
+ minGridData.widthHint = 100;
+ minLengthText.setLayoutData(minGridData);
+ minimumInclusiveCheckbox = factory.createButton(simpleTypeModifierComposite, "Inclusive", SWT.CHECK);
+ minimumInclusiveCheckbox.addSelectionListener(this);
+
+ maxLengthLabel = factory.createLabel(simpleTypeModifierComposite, maxLengthString);
+ maxLengthText = factory.createText(simpleTypeModifierComposite, "");
+ applyAllListeners(maxLengthText);
+
+ GridData maxGridData = new GridData();
+ maxGridData.widthHint = 100;
+ maxLengthText.setLayoutData(maxGridData);
+
+ maximumInclusiveCheckbox = factory.createButton(simpleTypeModifierComposite, "Inclusive", SWT.CHECK);
+ maximumInclusiveCheckbox.addSelectionListener(this);
+
+ minimumInclusiveCheckbox.setVisible(isNumericBaseType);
+ maximumInclusiveCheckbox.setVisible(isNumericBaseType);
+ }
+ collapseWhitespaceButton = factory.createButton(simpleTypeModifierComposite, "Collapse whitespace", SWT.CHECK);
+ collapseWhitespaceButton.addSelectionListener(this);
+
+ Group specificValueConstraintsGroup = factory.createGroup(facetComposite, "Specific constraint values");
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 2;
+ specificValueConstraintsGroup.setLayout(gridLayout);
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = GridData.FILL;
+ specificValueConstraintsGroup.setLayoutData(data);
+
+ Composite compositeForButtons = factory.createFlatFormComposite(specificValueConstraintsGroup);
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.verticalSpacing = 1;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 1;
+ compositeForButtons.setLayout(gridLayout);
+ data = new GridData();
+ data.verticalAlignment = GridData.BEGINNING;
+ compositeForButtons.setLayoutData(data);
+
+ factory.createCLabel(compositeForButtons, "Restrict values by:");
+// useDefinedValuesButton = factory.createButton(compositeForButtons, "Only permit certain values", SWT.CHECK);
+// useDefinedValuesButton.addSelectionListener(this);
+
+ Composite compositeForRadioButtons = factory.createFlatFormComposite(compositeForButtons);
+ gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginLeft = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 1;
+ compositeForRadioButtons.setLayout(gridLayout);
+ useEnumerationsButton = factory.createButton(compositeForRadioButtons, "Enumerations", SWT.RADIO);
+ useEnumerationsButton.addSelectionListener(this);
+ usePatternsButton = factory.createButton(compositeForRadioButtons, "Patterns", SWT.RADIO);
+ usePatternsButton.addSelectionListener(this);
+
+ constraintsWidget = new SpecificConstraintsWidget(specificValueConstraintsGroup, factory, (input instanceof XSDFeature) ? (XSDFeature)input : null, xsdSimpleTypeDefinition, this);
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = GridData.FILL;
+ constraintsWidget.getControl().setLayoutData(data);
+ }
+
+ public void doSetInput()
+ {
+ setInput(getPart(), getSelection());
+ }
+
+ public void setInput(IWorkbenchPart part, ISelection selection)
+ {
+ super.setInput(part, selection);
+ init();
+
+ XSDSchema schemaOfType = null;
+
+ if (!isReadOnly)
+ {
+ schemaOfType = xsdSimpleTypeDefinition.getSchema();
+ }
+ if (schemaOfType == owningEditor.getAdapter(XSDSchema.class))
+ {
+ isReadOnly = false;
+ }
+ else
+ {
+ if (!XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+ isReadOnly = true;
+ }
+ if (hasMaxMinFacets)
+ {
+ title.setText(titleString + (isReadOnly ? " - ReadOnly" : ""));
+ }
+ relayout();
+ constraintsWidget.setCommandStack(getCommandStack());
+ }
+
+ protected void init()
+ {
+ hasMaxMinFacets = false;
+ try
+ {
+ updateInput();
+
+ if (xsdSimpleTypeDefinition != null)
+ {
+ XSDSimpleTypeDefinition targetST = xsdSimpleTypeDefinition;
+ XSDSimpleTypeDefinition basePrimitive = xsdSimpleTypeDefinition.getPrimitiveTypeDefinition();
+ if (basePrimitive != null)
+ targetST = basePrimitive;
+ else
+ targetST = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+
+ minLengthString = "";
+ maxLengthString = "";
+ if (targetST.getValidFacets().contains("length"))
+ {
+ minLengthString = "Minimum length:";
+ maxLengthString = "Maximum length:";
+ simpleTypeModifierGroupTitle = "Constraints on length of " + targetST.getName();
+ isNumericBaseType = false;
+ hasMaxMinFacets = true;
+ }
+ else if (targetST.getValidFacets().contains("maxInclusive"))
+ {
+ simpleTypeModifierGroupTitle = "Constraints on value of " + targetST.getName();
+ minLengthString = "Minimum value:";
+ maxLengthString = "Maximum value:";
+ isNumericBaseType = true;
+ hasMaxMinFacets = true;
+ }
+ else
+ {
+ simpleTypeModifierGroupTitle = "Constraints on " + (basePrimitive != null ? basePrimitive.getName() : "anyType");
+ }
+ }
+ }
+ catch(Exception e)
+ {
+ }
+ }
+
+ private void updateInput()
+ {
+ if (input instanceof XSDFeature)
+ {
+ xsdFeature = (XSDFeature) input;
+ typeDefinition = xsdFeature.getResolvedFeature().getType();
+ XSDTypeDefinition anonymousTypeDefinition = null;
+ if (xsdFeature instanceof XSDElementDeclaration)
+ {
+ xsdElementDeclaration = (XSDElementDeclaration)xsdFeature;
+ anonymousTypeDefinition = xsdElementDeclaration.getResolvedElementDeclaration().getAnonymousTypeDefinition();
+ }
+ else if (xsdFeature instanceof XSDAttributeDeclaration)
+ {
+ xsdAttributeDeclaration = (XSDAttributeDeclaration)xsdFeature;
+ anonymousTypeDefinition = xsdAttributeDeclaration.getResolvedAttributeDeclaration().getAnonymousTypeDefinition();
+ }
+
+ if (typeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) typeDefinition;
+ }
+
+ if (anonymousTypeDefinition instanceof XSDSimpleTypeDefinition)
+ {
+ xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)anonymousTypeDefinition;
+ }
+
+ if (xsdSimpleTypeDefinition != null)
+ titleString = "Type: " + (anonymousTypeDefinition != null ? "(" + xsdElementDeclaration.getResolvedElementDeclaration().getName() + "Type)" : xsdSimpleTypeDefinition.getName()) + " , Base: " + xsdSimpleTypeDefinition.getPrimitiveTypeDefinition().getName();
+ }
+ else if (input instanceof XSDSimpleTypeDefinition)
+ {
+ xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) input;
+ titleString = "Type: " + xsdSimpleTypeDefinition.getName() + " , Base: " + xsdSimpleTypeDefinition.getPrimitiveTypeDefinition().getName();
+ }
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+ init();
+ setListenerEnabled(false);
+
+ collapseWhitespaceButton.setSelection(false);
+ XSDWhiteSpaceFacet whitespaceFacet = xsdSimpleTypeDefinition.getWhiteSpaceFacet();
+ if (whitespaceFacet != null)
+ {
+ if (xsdSimpleTypeDefinition.getFacetContents().contains(whitespaceFacet))
+ {
+ if (XSDWhiteSpace.COLLAPSE_LITERAL.equals(whitespaceFacet.getValue()))
+ {
+ if (!XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+ {
+ collapseWhitespaceButton.setSelection(true);
+ }
+ }
+ }
+ }
+
+ if (hasMaxMinFacets)
+ {
+ minLengthLabel.setText(minLengthString);
+ maxLengthLabel.setText(maxLengthString);
+
+ if (!isNumericBaseType)
+ refreshStringLength();
+ else
+ refreshValueLengths();
+ }
+
+ if (xsdSimpleTypeDefinition.getEnumerationFacets().size() > 0)
+ {
+ usePatternsButton.setSelection(false);
+ useEnumerationsButton.setSelection(true);
+ constraintsWidget.setConstraintKind(SpecificConstraintsWidget.ENUMERATION);
+ constraintsWidget.addButton.setEnabled(true);
+ }
+ else if (xsdSimpleTypeDefinition.getPatternFacets().size() > 0)
+ {
+ usePatternsButton.setSelection(true);
+ useEnumerationsButton.setSelection(false);
+ constraintsWidget.setConstraintKind(SpecificConstraintsWidget.PATTERN);
+ constraintsWidget.addButton.setEnabled(false);
+ }
+ else
+ {
+ usePatternsButton.setSelection(false);
+ useEnumerationsButton.setSelection(true);
+ constraintsWidget.setConstraintKind(SpecificConstraintsWidget.ENUMERATION);
+ constraintsWidget.addButton.setEnabled(true);
+ }
+ constraintsWidget.setInput(xsdSimpleTypeDefinition);
+
+ setListenerEnabled(true);
+ }
+
+ protected void relayout()
+ {
+ Composite parent = composite.getParent();
+ parent.getParent().setRedraw(false);
+
+ if (parent != null && !parent.isDisposed())
+ {
+ Control[] children = parent.getChildren();
+ for (int i = 0; i < children.length; i++)
+ {
+ children[i].dispose();
+ }
+ }
+ createContents(parent);
+ parent.getParent().layout(true, true);
+ parent.getParent().setRedraw(true);
+ refresh();
+ }
+
+ public void dispose()
+ {
+ if (titleFont != null && !titleFont.isDisposed())
+ titleFont.dispose();
+ titleFont = null;
+
+ if (minimumInclusiveCheckbox != null && !minimumInclusiveCheckbox.isDisposed())
+ minimumInclusiveCheckbox.removeSelectionListener(this);
+ if (maximumInclusiveCheckbox != null && !maximumInclusiveCheckbox.isDisposed())
+ maximumInclusiveCheckbox.removeSelectionListener(this);
+
+ if (collapseWhitespaceButton != null && !collapseWhitespaceButton.isDisposed())
+ collapseWhitespaceButton.removeSelectionListener(this);
+
+ if (maxLengthText != null && !maxLengthText.isDisposed())
+ removeListeners(maxLengthText);
+ if (minLengthText != null && !minLengthText.isDisposed())
+ removeListeners(minLengthText);
+
+ super.dispose();
+ }
+
+ public void refreshStringLength()
+ {
+ XSDMinLengthFacet minLengthFacet = xsdSimpleTypeDefinition.getMinLengthFacet();
+ XSDMaxLengthFacet maxLengthFacet = xsdSimpleTypeDefinition.getMaxLengthFacet();
+ XSDLengthFacet lengthFacet = xsdSimpleTypeDefinition.getLengthFacet();
+
+ try
+ {
+ if (minLengthFacet != null)
+ {
+ int minLengthValue = minLengthFacet.getValue();
+ if (minLengthValue >= 0)
+ {
+ minLengthText.setText(Integer.toString(minLengthValue));
+ }
+ else
+ {
+ minLengthText.setText(""); //$NON-NLS-1$
+ }
+ }
+ if (maxLengthFacet != null)
+ {
+ int maxLength = maxLengthFacet.getValue();
+ if (maxLength >= 0)
+ {
+ maxLengthText.setText(Integer.toString(maxLength));
+ }
+ else
+ {
+ maxLengthText.setText(""); //$NON-NLS-1$
+ }
+ }
+ if (lengthFacet != null)
+ {
+ int length = lengthFacet.getValue();
+ if (length >= 0)
+ {
+ minLengthText.setText(Integer.toString(length));
+ maxLengthText.setText(Integer.toString(length));
+ }
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+
+ }
+
+ public void refreshValueLengths()
+ {
+ XSDSimpleTypeDefinition type = xsdSimpleTypeDefinition;
+ XSDMinFacet minFacet = type.getMinFacet();
+ XSDMaxFacet maxFacet = type.getMaxFacet();
+
+ minimumInclusiveCheckbox.removeSelectionListener(this);
+ maximumInclusiveCheckbox.removeSelectionListener(this);
+ try
+ {
+ minLengthText.setText(""); //$NON-NLS-1$
+ maxLengthText.setText(""); //$NON-NLS-1$
+
+ minimumInclusiveCheckbox.setSelection(false);
+ minimumInclusiveCheckbox.setEnabled(false);
+ if (minFacet != null)
+ {
+ if (minFacet.getElement().getNodeName().equals(XSDConstants.MINEXCLUSIVE_ELEMENT_TAG) ||
+ minFacet.getElement().getNodeName().equals(XSDConstants.MININCLUSIVE_ELEMENT_TAG))
+ {
+ minLengthText.setText(minFacet.getLexicalValue());
+ minimumInclusiveCheckbox.setSelection(minFacet.isInclusive());
+ minimumInclusiveCheckbox.setEnabled(true);
+ }
+ }
+
+ maximumInclusiveCheckbox.setSelection(false);
+ maximumInclusiveCheckbox.setEnabled(false);
+ if (maxFacet != null)
+ {
+ if (maxFacet.getElement().getNodeName().equals(XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG) ||
+ maxFacet.getElement().getNodeName().equals(XSDConstants.MAXINCLUSIVE_ELEMENT_TAG))
+ {
+ maxLengthText.setText(maxFacet.getLexicalValue());
+ maximumInclusiveCheckbox.setSelection(maxFacet.isInclusive());
+ maximumInclusiveCheckbox.setEnabled(true);
+ }
+ }
+ }
+ finally
+ {
+ minimumInclusiveCheckbox.addSelectionListener(this);
+ maximumInclusiveCheckbox.addSelectionListener(this);
+ }
+ }
+
+ protected void doHandleEvent(Event event)
+ {
+ super.doHandleEvent(event);
+ Command command = null;
+ boolean doUpdateMax = false, doUpdateMin = false;
+
+ String minValue = minLengthText.getText().trim();
+ String maxValue = maxLengthText.getText().trim();
+
+ XSDLengthFacet lengthFacet = xsdSimpleTypeDefinition.getLengthFacet();
+ XSDMinLengthFacet minLengthFacet = xsdSimpleTypeDefinition.getMinLengthFacet();
+ XSDMaxLengthFacet maxLengthFacet = xsdSimpleTypeDefinition.getMaxLengthFacet();
+
+ XSDMinInclusiveFacet minInclusiveFacet = xsdSimpleTypeDefinition.getMinInclusiveFacet();
+ XSDMinExclusiveFacet minExclusiveFacet = xsdSimpleTypeDefinition.getMinExclusiveFacet();
+ XSDMaxInclusiveFacet maxInclusiveFacet = xsdSimpleTypeDefinition.getMaxInclusiveFacet();
+ XSDMaxExclusiveFacet maxExclusiveFacet = xsdSimpleTypeDefinition.getMaxExclusiveFacet();
+
+ String currentMinInclusive = null, currentMinExclusive = null, currentMaxInclusive = null, currentMaxExclusive = null;
+ if (minInclusiveFacet != null)
+ {
+ currentMinInclusive = minInclusiveFacet.getLexicalValue();
+ }
+ if (minExclusiveFacet != null)
+ {
+ currentMinExclusive = minExclusiveFacet.getLexicalValue();
+ }
+ if (maxInclusiveFacet != null)
+ {
+ currentMaxInclusive = maxInclusiveFacet.getLexicalValue();
+ }
+ if (maxExclusiveFacet != null)
+ {
+ currentMaxExclusive = maxExclusiveFacet.getLexicalValue();
+ }
+
+
+ String currentLength = null, currentMin = null, currentMax = null;
+ if (lengthFacet != null)
+ {
+ currentLength = lengthFacet.getLexicalValue();
+ }
+ if (minLengthFacet != null)
+ {
+ currentMin = minLengthFacet.getLexicalValue();
+ }
+ if (maxLengthFacet != null)
+ {
+ currentMax = maxLengthFacet.getLexicalValue();
+ }
+
+ if (event.widget == minLengthText)
+ {
+ try
+ {
+ if (minValue.length() > 0)
+ {
+ if (!isNumericBaseType)
+ {
+ Number big = new BigInteger(minValue);
+ big.toString();
+ if (minLengthFacet != null)
+ {
+ if (minValue.equals(currentMin) || minValue.equals(currentLength))
+ return;
+ }
+ else
+ {
+ if (maxValue != null && minValue.equals(maxValue) && lengthFacet != null)
+ {
+ return;
+ }
+ }
+ }
+ else
+ {
+ if (xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("double").equals(xsdSimpleTypeDefinition) ||
+ xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("float").equals(xsdSimpleTypeDefinition) ||
+ xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal").equals(xsdSimpleTypeDefinition))
+ {
+ BigDecimal bigDecimal = new BigDecimal(minValue);
+ bigDecimal.toString();
+ if ( (currentMinInclusive != null && minValue.equals(currentMinInclusive)) ||
+ (currentMinExclusive != null && minValue.equals(currentMinExclusive)) )
+ {
+ return;
+ }
+ }
+ else
+ {
+ Number big = new BigInteger(minValue);
+ big.toString();
+ }
+ minimumInclusiveCheckbox.setEnabled(true);
+ }
+ }
+ else
+ {
+ if (!isNumericBaseType)
+ {
+ if (currentMin == null && currentLength == null)
+ return;
+ }
+ else
+ {
+ if (currentMinInclusive == null && minimumInclusiveCheckbox.getSelection())
+ {
+ return;
+ }
+ else if (currentMinExclusive == null && !minimumInclusiveCheckbox.getSelection())
+ {
+ return;
+ }
+ }
+ minimumInclusiveCheckbox.setEnabled(false);
+ minValue = null;
+ }
+ doUpdateMin = true;
+ }
+ catch (NumberFormatException e)
+ {
+ // TODO show error message
+ doUpdateMin = false;
+ }
+ }
+ if (event.widget == maxLengthText)
+ {
+ try
+ {
+ if (maxValue.length() > 0)
+ {
+ if (!isNumericBaseType)
+ {
+ Number big = new BigInteger(maxValue);
+ big.toString();
+ if (maxLengthFacet != null)
+ {
+ if (maxValue.equals(currentMax) || maxValue.equals(currentLength))
+ return;
+ }
+ else
+ {
+ if (minValue != null && maxValue.equals(minValue) && lengthFacet != null)
+ {
+ return;
+ }
+ }
+ }
+ else
+ {
+ if (xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("double").equals(xsdSimpleTypeDefinition) ||
+ xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("float").equals(xsdSimpleTypeDefinition) ||
+ xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal").equals(xsdSimpleTypeDefinition))
+ {
+ BigDecimal bigDecimal = new BigDecimal(maxValue);
+ bigDecimal.toString();
+ }
+ else
+ {
+ Number big = new BigInteger(maxValue);
+ big.toString();
+ }
+ maximumInclusiveCheckbox.setEnabled(true);
+ }
+ }
+ else
+ {
+ if (!isNumericBaseType)
+ {
+ if (currentMax == null && currentLength == null)
+ return;
+ }
+ else
+ {
+ if (currentMaxInclusive == null && maximumInclusiveCheckbox.getSelection())
+ {
+ return;
+ }
+ else if (currentMaxExclusive == null && !maximumInclusiveCheckbox.getSelection())
+ {
+ return;
+ }
+ maximumInclusiveCheckbox.setEnabled(false);
+ }
+ maxValue = null;
+ }
+
+ doUpdateMax = true;
+ }
+ catch (NumberFormatException e)
+ {
+ doUpdateMax = false;
+ // TODO show error message
+ }
+ }
+
+ if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()) && (doUpdateMax || doUpdateMin))
+ {
+ XSDSimpleTypeDefinition anonymousSimpleType = null;
+ CompoundCommand compoundCommand = new CompoundCommand();
+ ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = null;
+ if (input instanceof XSDFeature)
+ {
+ anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType((XSDFeature)input, xsdSimpleTypeDefinition);
+ if (anonymousSimpleType == null)
+ {
+ anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ anonymousSimpleType.setBaseTypeDefinition(xsdSimpleTypeDefinition);
+
+ changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Constrain length", (XSDFeature)input);
+ changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+ compoundCommand.add(changeToAnonymousCommand);
+ }
+
+ if (!isNumericBaseType)
+ {
+ UpdateStringLengthFacetCommand updateCommand = new UpdateStringLengthFacetCommand("", anonymousSimpleType);
+ if (doUpdateMax)
+ {
+ updateCommand.setMax(maxValue);
+ }
+ if (doUpdateMin)
+ {
+ updateCommand.setMin(minValue);
+ }
+ compoundCommand.add(updateCommand);
+ }
+ else
+ {
+ UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", anonymousSimpleType, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+ if (doUpdateMax)
+ {
+ updateCommand.setMax(maxValue);
+ }
+ if (doUpdateMin)
+ {
+ updateCommand.setMin(minValue);
+ }
+ compoundCommand.add(updateCommand);
+ }
+ command = compoundCommand;
+ getCommandStack().execute(command);
+ }
+ else if (input instanceof XSDSimpleTypeDefinition)
+ {
+ if (!isNumericBaseType)
+ {
+ UpdateStringLengthFacetCommand updateCommand = new UpdateStringLengthFacetCommand("", xsdSimpleTypeDefinition);
+ if (doUpdateMax)
+ {
+ updateCommand.setMax(maxValue);
+ }
+ if (doUpdateMin)
+ {
+ updateCommand.setMin(minValue);
+ }
+ command = updateCommand;
+ }
+ else
+ {
+ UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+ if (doUpdateMax)
+ {
+ updateCommand.setMax(maxValue);
+ }
+ if (doUpdateMin)
+ {
+ updateCommand.setMin(minValue);
+ }
+ command = updateCommand;
+ }
+ getCommandStack().execute(command);
+ }
+ }
+ else
+ {
+ if (!isNumericBaseType)
+ {
+ UpdateStringLengthFacetCommand updateCommand = new UpdateStringLengthFacetCommand("", xsdSimpleTypeDefinition);
+ if (doUpdateMax)
+ {
+ updateCommand.setMax(maxValue);
+ }
+ if (doUpdateMin)
+ {
+ updateCommand.setMin(minValue);
+ }
+ getCommandStack().execute(updateCommand);
+ }
+ else
+ {
+ UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+ if (doUpdateMax)
+ {
+ updateCommand.setMax(maxValue);
+ }
+ if (doUpdateMin)
+ {
+ updateCommand.setMin(minValue);
+ }
+ getCommandStack().execute(updateCommand);
+ }
+
+ }
+ setInput(getPart(), getSelection());
+ }
+
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (e.widget == collapseWhitespaceButton)
+ {
+ CompoundCommand compoundCommand = new CompoundCommand();
+ XSDSimpleTypeDefinition anonymousSimpleType = null;
+ if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+ {
+ if (input instanceof XSDFeature)
+ {
+ anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType((XSDFeature)input, xsdSimpleTypeDefinition);
+ if (anonymousSimpleType == null)
+ {
+ anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+ anonymousSimpleType.setBaseTypeDefinition(xsdSimpleTypeDefinition);
+
+ ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Constrain length", (XSDFeature)input);
+ changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+ compoundCommand.add(changeToAnonymousCommand);
+ }
+
+ UpdateXSDWhiteSpaceFacetCommand whiteSpaceCommand = new UpdateXSDWhiteSpaceFacetCommand("Collapse whitespace", anonymousSimpleType, collapseWhitespaceButton.getSelection());
+ compoundCommand.add(whiteSpaceCommand);
+
+ getCommandStack().execute(compoundCommand);
+ }
+ setInput(getPart(), getSelection());
+ }
+ else
+ {
+ UpdateXSDWhiteSpaceFacetCommand whiteSpaceCommand = new UpdateXSDWhiteSpaceFacetCommand("Collapse whitespace", xsdSimpleTypeDefinition, collapseWhitespaceButton.getSelection());
+ getCommandStack().execute(whiteSpaceCommand);
+ }
+ }
+ else if (e.widget == minimumInclusiveCheckbox)
+ {
+ String minValue = minLengthText.getText().trim();
+ if (minValue.length() == 0) minValue = null;
+
+ UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+ updateCommand.setMin(minValue);
+
+ if (minValue != null)
+ getCommandStack().execute(updateCommand);
+ }
+ else if (e.widget == maximumInclusiveCheckbox)
+ {
+ String maxValue = maxLengthText.getText().trim();
+ if (maxValue.length() == 0) maxValue = null;
+ UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+ updateCommand.setMax(maxValue);
+ if (maxValue != null)
+ getCommandStack().execute(updateCommand);
+ }
+ else if (e.widget == useEnumerationsButton)
+ {
+ constraintsWidget.addButton.setEnabled(true);
+ if (isListenerEnabled())
+ constraintsWidget.setConstraintKind(SpecificConstraintsWidget.ENUMERATION);
+ }
+ else if (e.widget == usePatternsButton)
+ {
+ constraintsWidget.addButton.setEnabled(false);
+ if (isListenerEnabled())
+ constraintsWidget.setConstraintKind(SpecificConstraintsWidget.PATTERN);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSectionFilter.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSectionFilter.java
new file mode 100644
index 0000000..294189c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSectionFilter.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.eclipse.jface.viewers.IFilter;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public class XSDFacetSectionFilter implements IFilter
+{
+ public boolean select(Object toTest)
+ {
+ if (toTest instanceof XSDFeature)
+ {
+ XSDTypeDefinition type = ((XSDFeature)toTest).getResolvedFeature().getType();
+ if (type instanceof XSDSimpleTypeDefinition)
+ {
+ return true;
+ }
+ }
+ else if (toTest instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)toTest;
+ if (st.eContainer() instanceof XSDSchema ||
+ st.eContainer() instanceof XSDFeature)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupDefinitionSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupDefinitionSection.java
new file mode 100644
index 0000000..f499498
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupDefinitionSection.java
@@ -0,0 +1,261 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDModelGroupDefinitionSection extends AbstractSection
+{
+ protected Text nameText;
+ protected CCombo componentNameCombo;
+ boolean isReference;
+
+ public XSDModelGroupDefinitionSection()
+ {
+ super();
+ }
+
+ protected void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
+ composite.setLayout(gridLayout);
+
+ if (isReference)
+ {
+ // ------------------------------------------------------------------
+ // Ref Label
+ // ------------------------------------------------------------------
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel refLabel = getWidgetFactory().createCLabel(composite, XSDConstants.REF_ATTRIBUTE + ":"); //$NON-NLS-1$
+ refLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // Ref Combo
+ // ------------------------------------------------------------------
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ componentNameCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ componentNameCombo.addSelectionListener(this);
+ componentNameCombo.setLayoutData(data);
+ }
+ else
+ {
+ // ------------------------------------------------------------------
+ // NameLabel
+ // ------------------------------------------------------------------
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Name:");
+ nameLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // NameText
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ nameText.setLayoutData(data);
+ nameText.addListener(SWT.Modify, this);
+ }
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+
+ if (isReadOnly)
+ {
+ composite.setEnabled(false);
+ }
+ else
+ {
+ composite.setEnabled(true);
+ }
+
+ setListenerEnabled(false);
+
+ XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+
+ if (isReference)
+ {
+ Element element = namedComponent.getElement();
+ if (element != null)
+ {
+ String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
+ if (attrValue == null)
+ {
+ attrValue = "";
+ }
+ componentNameCombo.setText(attrValue);
+ }
+ }
+ else
+ {
+ // refresh name
+ nameText.setText("");
+
+ String name = namedComponent.getName();
+ if (name != null)
+ {
+ nameText.setText(name);
+ }
+ }
+
+ setListenerEnabled(true);
+ }
+
+ public void setInput(IWorkbenchPart part, ISelection selection)
+ {
+ super.setInput(part, selection);
+ init();
+ relayout();
+
+ if (isReference)
+ {
+ TypesHelper helper = new TypesHelper(xsdSchema);
+ List items = new ArrayList();
+ items = helper.getModelGroups();
+ items.add(0, "");
+ componentNameCombo.setItems((String [])items.toArray(new String[0]));
+ }
+ }
+
+ protected void init()
+ {
+ if (input instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition group = (XSDModelGroupDefinition) input;
+ isReference = group.isModelGroupDefinitionReference();
+ }
+ }
+
+ protected void relayout()
+ {
+ Composite parentComposite = composite.getParent();
+ parentComposite.getParent().setRedraw(false);
+
+ if (parentComposite != null && !parentComposite.isDisposed())
+ {
+ Control[] children = parentComposite.getChildren();
+ for (int i = 0; i < children.length; i++)
+ {
+ children[i].dispose();
+ }
+ }
+
+ // Now initialize the new handler
+ createContents(parentComposite);
+ parentComposite.getParent().layout(true, true);
+
+ // Now turn painting back on
+ parentComposite.getParent().setRedraw(true);
+ refresh();
+ }
+
+ public void doHandleEvent(Event event)
+ {
+ super.doHandleEvent(event);
+ if (event.widget == nameText)
+ {
+ String newValue = nameText.getText().trim();
+ if (input instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+ if (!validateSection())
+ return;
+
+ Command command = null;
+
+ // Make sure an actual name change has taken place
+ String oldName = namedComponent.getName();
+ if (!newValue.equals(oldName))
+ {
+ command = new UpdateNameCommand("Rename", namedComponent, newValue);
+ }
+
+ if (command != null && getCommandStack() != null)
+ {
+ getCommandStack().execute(command);
+ }
+ // doReferentialIntegrityCheck(namedComponent, newValue);
+ }
+ }
+ }
+
+ protected boolean validateSection()
+ {
+ if (nameText == null || nameText.isDisposed())
+ return true;
+
+ setErrorMessage(null);
+
+ String name = nameText.getText().trim();
+
+ // validate against NCName
+ if (name.length() < 1 || !XMLChar.isValidNCName(name))
+ {
+ setErrorMessage("Invalid name");
+ return false;
+ }
+
+ return true;
+ }
+
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (e.widget == componentNameCombo)
+ {
+ String newValue = componentNameCombo.getText();
+ if (input instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent namedComponent = (XSDNamedComponent)input;
+ Element element = namedComponent.getElement();
+
+ if (namedComponent instanceof XSDModelGroupDefinition)
+ {
+ element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
+ }
+ }
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupSection.java
new file mode 100644
index 0000000..d9a653d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupSection.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateContentModelCommand;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDModelGroup;
+
+public class XSDModelGroupSection extends MultiplicitySection
+{
+ protected CCombo modelGroupCombo;
+ private String[] modelGroupComboValues = { "sequence", "choice", "all" }; //$NON-NLS-1$
+
+ public XSDModelGroupSection()
+ {
+ super();
+ }
+
+ public void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ String typeLabel = Messages.UI_LABEL_TYPE; //$NON-NLS-1$
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 2;
+ composite.setLayout(gridLayout);
+
+ // ------------------------------------------------------------------
+ // NameLabel
+ // ------------------------------------------------------------------
+ GridData data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Kind:"); //$NON-NLS-1$
+ nameLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // NameText
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ modelGroupCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ modelGroupCombo.setLayoutData(data);
+ modelGroupCombo.addSelectionListener(this);
+ modelGroupCombo.setItems(modelGroupComboValues);
+
+ // ------------------------------------------------------------------
+ // min property
+ // ------------------------------------------------------------------
+ getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MINOCCURS);
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ minCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ minCombo.setLayoutData(data);
+ minCombo.add("0"); //$NON-NLS-1$
+ minCombo.add("1"); //$NON-NLS-1$
+ minCombo.addListener(SWT.Modify, this);
+ minCombo.addSelectionListener(this);
+
+ // ------------------------------------------------------------------
+ // max property
+ // ------------------------------------------------------------------
+ getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MAXOCCURS);
+
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ maxCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ maxCombo.setLayoutData(data);
+ maxCombo.add("0"); //$NON-NLS-1$
+ maxCombo.add("1"); //$NON-NLS-1$
+ maxCombo.add("unbounded"); //$NON-NLS-1$
+ maxCombo.addListener(SWT.Modify, this);
+ maxCombo.addSelectionListener(this);
+ }
+
+
+ public void refresh()
+ {
+ super.refresh();
+
+ if (isReadOnly)
+ {
+ composite.setEnabled(false);
+ }
+ else
+ {
+ composite.setEnabled(true);
+ }
+
+ setListenerEnabled(false);
+
+ if (input != null)
+ {
+ if (input instanceof XSDModelGroup)
+ {
+ XSDModelGroup particle = (XSDModelGroup)input;
+ String modelType = particle.getCompositor().getName();
+ modelGroupCombo.setText(modelType);
+ }
+ }
+
+ refreshMinMax();
+
+ setListenerEnabled(true);
+ }
+
+ public void doWidgetSelected(SelectionEvent e)
+ {
+ XSDModelGroup particle = (XSDModelGroup)input;
+ if (e.widget == modelGroupCombo)
+ {
+ XSDCompositor newValue = XSDCompositor.get(modelGroupCombo.getText());
+ UpdateContentModelCommand command = new UpdateContentModelCommand("Content Model Change", particle, newValue);
+ getCommandStack().execute(command);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSchemaSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSchemaSection.java
new file mode 100644
index 0000000..7100bc9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSchemaSection.java
@@ -0,0 +1,468 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.internal.actions.XSDEditNamespacesAction;
+import org.eclipse.wst.xsd.ui.internal.nsedit.TargetNamespaceChangeHandler;
+import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XSDSchemaSection extends AbstractSection
+{
+ IWorkbenchPart part;
+ Text prefixText;
+ Text targetNamespaceText;
+ Button editButton;
+ StyledText errorText;
+ Color red;
+
+ /**
+ *
+ */
+ public XSDSchemaSection()
+ {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite,
+ * org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
+ */
+ public void createContents(Composite parent)
+ {
+ composite = getWidgetFactory().createFlatFormComposite(parent);
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 2;
+ composite.setLayout(gridLayout);
+
+ GridData data = new GridData();
+
+ // Create Prefix Label
+ CLabel prefixLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_PREFIX")); //$NON-NLS-1$
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ prefixLabel.setLayoutData(data);
+
+ // Create Prefix Text
+ prefixText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ prefixText.setLayoutData(data);
+ prefixText.addListener(SWT.Modify, this);
+
+ // Create TargetNamespace Label
+ CLabel targetNamespaceLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_TARGET_NAME_SPACE")); //$NON-NLS-1$
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ targetNamespaceLabel.setLayoutData(data);
+
+ // Create TargetNamespace Text
+ targetNamespaceText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ targetNamespaceText.setLayoutData(data);
+ targetNamespaceText.addListener(SWT.Modify, this);
+
+ // Advanced Button
+ editButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_SECTION_ADVANCED_ATTRIBUTES") + "...", SWT.PUSH);
+ data = new GridData(SWT.END, SWT.CENTER, true, false);
+ data.horizontalSpan = 2;
+ editButton.setLayoutData(data);
+ editButton.addSelectionListener(this);
+
+ // error text
+ errorText = new StyledText(composite, SWT.FLAT);
+ errorText.setEditable(false);
+ errorText.setEnabled(false);
+ errorText.setText("");
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.horizontalSpan = 2;
+ data.grabExcessHorizontalSpace = true;
+ errorText.setLayoutData(data);
+
+ }
+
+ /*
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+ */
+ public void refresh()
+ {
+ setListenerEnabled(false);
+
+ Element element = xsdSchema.getElement();
+
+ if (element != null)
+ {
+ // Handle prefixText
+ TypesHelper helper = new TypesHelper(xsdSchema);
+ String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
+
+ if (aPrefix != null && aPrefix.length() > 0)
+ {
+ prefixText.setText(aPrefix);
+ }
+ else
+ {
+ prefixText.setText(""); //$NON-NLS-1$
+ }
+
+ // Handle TargetNamespaceText
+ String tns = element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
+ if (tns != null && tns.length() > 0)
+ {
+ targetNamespaceText.setText(tns);
+ }
+ else
+ {
+ targetNamespaceText.setText(""); //$NON-NLS-1$
+ }
+ errorText.setText("");
+ }
+ setListenerEnabled(true);
+ }
+
+ public void doHandleEvent(Event event)
+ {
+ errorText.setText("");
+ String prefixValue = prefixText.getText();
+ String tnsValue = targetNamespaceText.getText();
+ if (tnsValue.trim().length() == 0)
+ {
+ if (prefixValue.trim().length() > 0)
+ {
+ errorText.setText(XSDEditorPlugin.getXSDString("_ERROR_TARGET_NAMESPACE_AND_PREFIX"));
+ int length = errorText.getText().length();
+ red = new Color(null, 255, 0, 0);
+ StyleRange style = new StyleRange(0, length, red, targetNamespaceText.getBackground());
+ errorText.setStyleRange(style);
+ return;
+ }
+ }
+
+ if (event.widget == prefixText)
+ {
+ updateNamespaceInfo(prefixValue, tnsValue);
+ }
+ else if (event.widget == targetNamespaceText)
+ {
+ updateNamespaceInfo(prefixValue, tnsValue);
+ }
+ }
+
+ public void doWidgetSelected(SelectionEvent e)
+ {
+ if (e.widget == editButton)
+ {
+ XSDEditNamespacesAction nsAction = new XSDEditNamespacesAction(XSDEditorPlugin.getXSDString("_UI_ACTION_EDIT_NAMESPACES"), xsdSchema.getElement(), null, xsdSchema); //$NON-NLS-1$
+ nsAction.run();
+ refresh();
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
+ */
+ public boolean shouldUseExtraSpace()
+ {
+ return true;
+ }
+
+ private void updateNamespaceInfo(String newPrefix, String newTargetNamespace)
+ {
+ Element element = xsdSchema.getElement();
+ DocumentImpl doc = (DocumentImpl) element.getOwnerDocument();
+
+ String modelTargetNamespace = xsdSchema.getTargetNamespace();
+ String oldNamespace = xsdSchema.getTargetNamespace();
+
+ TypesHelper helper = new TypesHelper(xsdSchema);
+ String oldPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
+
+ if (modelTargetNamespace == null)
+ {
+ modelTargetNamespace = ""; //$NON-NLS-1$
+ }
+
+ String targetNamespace = newTargetNamespace.trim();
+ String prefix = newPrefix.trim();
+
+ if (!validatePrefix(prefix) || !validateTargetNamespace(targetNamespace))
+ {
+ return;
+ }
+
+ if (prefix.length() > 0 && targetNamespace.length() == 0)
+ {
+ // can't have blank targetnamespace and yet specify a prefix
+ return;
+ }
+
+ doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_TARGETNAMESPACE_CHANGE")); //$NON-NLS-1$
+ String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+ Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+
+ // For debugging
+ // System.out.println("1. SW Map is " + map.values());
+ // System.out.println("1. SW Map keys are " + map.keySet());
+
+ // Check if prefix is blank
+ // if it is, then make sure we have a prefix
+ // for schema for schema
+ if (prefix.length() == 0)
+ {
+ // if prefix for schema for schema is blank
+ // then set it to value specified in preference
+ // and update ALL nodes with this prefix
+ if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
+ {
+ // get preference prefix
+ xsdForXSDPrefix = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
+ // get a unique prefix by checking what's in the map
+
+ xsdForXSDPrefix = getUniqueSchemaForSchemaPrefix(xsdForXSDPrefix, map);
+ element.setAttribute("xmlns:" + xsdForXSDPrefix, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001); //$NON-NLS-1$
+
+ updateAllNodes(element, xsdForXSDPrefix);
+
+ // remove the old xmlns attribute for the schema for schema
+ if (element.getAttribute("xmlns") != null && //$NON-NLS-1$
+ element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
+ {
+ element.removeAttribute("xmlns"); //$NON-NLS-1$
+ }
+ }
+ }
+
+ if (targetNamespace.length() > 0 || (targetNamespace.length() == 0 && prefix.length() == 0))
+ {
+ // clean up the old prefix for this schema
+ if (oldPrefix != null && oldPrefix.length() > 0)
+ {
+ element.removeAttribute("xmlns:" + oldPrefix); //$NON-NLS-1$
+ // element.setAttribute("xmlns:" + prefix, targetNamespace);
+ // java.util.Map prefixToNameSpaceMap =
+ // xsdSchema.getQNamePrefixToNamespaceMap();
+ // prefixToNameSpaceMap.remove(oldPrefix);
+ }
+ else
+ // if no prefix
+ {
+ if (element.getAttribute("xmlns") != null) //$NON-NLS-1$
+ {
+ if (!element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
+ {
+ element.removeAttribute("xmlns"); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+
+ if (targetNamespace.length() > 0)
+ {
+ if (!modelTargetNamespace.equals(targetNamespace))
+ {
+ element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, targetNamespace);
+ }
+ // now set the new xmlns:prefix attribute
+ if (prefix.length() > 0)
+ {
+ element.setAttribute("xmlns:" + prefix, targetNamespace); //$NON-NLS-1$
+ }
+ else
+ {
+ element.setAttribute("xmlns", targetNamespace); //$NON-NLS-1$
+ }
+ // set the targetNamespace attribute
+ }
+ else
+ // else targetNamespace is blank
+ {
+ if (prefix.length() == 0)
+ {
+ element.removeAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
+ }
+ }
+
+ // System.out.println("1.5 SW Map is " + map.values());
+ // System.out.println("1.5 SW Map keys are " + map.keySet());
+
+ // do our own referential integrity
+ TargetNamespaceChangeHandler targetNamespaceChangeHandler = new TargetNamespaceChangeHandler(xsdSchema, oldNamespace, targetNamespace);
+ targetNamespaceChangeHandler.resolve();
+
+ updateElement(xsdSchema);
+
+
+ doc.getModel().endRecording(this);
+
+ // For debugging
+ // map = xsdSchema.getQNamePrefixToNamespaceMap();
+ // System.out.println("2. SW Map is " + map.values());
+ // System.out.println("2. SW Map keys are " + map.keySet());
+ }
+
+ // issue (cs) I don't have a clue why we need to call this method
+ //
+ private static void updateElement(XSDConcreteComponent concreteComp)
+ {
+ try
+ {
+ concreteComp.updateElement();
+ }
+ catch (Exception e)
+ {
+ for (Iterator containments = concreteComp.eClass().getEAllReferences().iterator(); containments.hasNext(); )
+ {
+ EReference eReference = (EReference)containments.next();
+ if (eReference.isContainment())
+ {
+ if (eReference.isMany())
+ {
+ for (Iterator objects = ((Collection)concreteComp.eGet(eReference)).iterator(); objects.hasNext(); )
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)objects.next();
+ try
+ {
+ xsdConcreteComponent.updateElement();
+ }
+ catch (Exception ex) {}
+ }
+ }
+ else
+ {
+ XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)concreteComp.eGet(eReference);
+ if (xsdConcreteComponent != null)
+ {
+ try
+ {
+ xsdConcreteComponent.updateElement();
+ }
+ catch (Exception ex) {}
+ }
+ }
+ }
+ }
+ }
+ }
+ private String getUniqueSchemaForSchemaPrefix(String xsdForXSDPrefix, Map map)
+ {
+ if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
+ {
+ xsdForXSDPrefix = "xsd"; //$NON-NLS-1$
+ }
+ // ensure prefix is unique
+ int prefixExtension = 1;
+ while (map.containsKey(xsdForXSDPrefix) && prefixExtension < 100)
+ {
+ xsdForXSDPrefix = xsdForXSDPrefix + String.valueOf(prefixExtension);
+ prefixExtension++;
+ }
+ return xsdForXSDPrefix;
+ }
+
+ private void updateAllNodes(Element element, String prefix)
+ {
+ element.setPrefix(prefix);
+ NodeList list = element.getChildNodes();
+ if (list != null)
+ {
+ for (int i = 0; i < list.getLength(); i++)
+ {
+ Node child = list.item(i);
+ if (child != null && child instanceof Element)
+ {
+ child.setPrefix(prefix);
+ if (child.hasChildNodes())
+ {
+ updateAllNodes((Element) child, prefix);
+ }
+ }
+ }
+ }
+ }
+
+ private boolean validateTargetNamespace(String ns)
+ {
+ // will allow blank namespace !!
+ if (ns.equals(""))
+ {
+ return true;
+ }
+
+ String errorMessage = null;
+ try
+ {
+ URI testURI = new URI(ns);
+ testURI.isAbsolute();
+ }
+ catch (URISyntaxException e)
+ {
+ errorMessage = XSDEditorPlugin.getXSDString("_WARN_INVALID_TARGET_NAMESPACE"); //$NON-NLS-1$
+ }
+
+ if (errorMessage == null || errorMessage.length() == 0)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ public void dispose()
+ {
+ super.dispose();
+ if (red != null)
+ {
+ red.dispose();
+ red = null;
+ }
+ }
+
+ protected boolean validatePrefix(String prefix)
+ {
+ // TODO
+ return true;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSimpleTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSimpleTypeSection.java
new file mode 100644
index 0000000..2f95ce6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSimpleTypeSection.java
@@ -0,0 +1,653 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
+import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
+import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XSDSimpleTypeSection extends AbstractSection
+{
+ protected Text nameText;
+ CCombo varietyCombo;
+ Text typesText;
+ CLabel typesLabel;
+ Button button;
+ XSDSimpleTypeDefinition memberTypeDefinition, itemTypeDefinition, baseTypeDefinition;
+
+ public XSDSimpleTypeSection()
+ {
+ super();
+ }
+
+ protected void createContents(Composite parent)
+ {
+ TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+ composite = factory.createFlatFormComposite(parent);
+
+ GridData data = new GridData();
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginTop = 0;
+ gridLayout.marginBottom = 0;
+ gridLayout.numColumns = 3;
+ composite.setLayout(gridLayout);
+
+ // ------------------------------------------------------------------
+ // NameLabel
+ // ------------------------------------------------------------------
+
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ CLabel nameLabel = factory.createCLabel(composite, "Name:");
+ nameLabel.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // NameText
+ // ------------------------------------------------------------------
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ nameText.setLayoutData(data);
+ applyAllListeners(nameText);
+
+ // ------------------------------------------------------------------
+ // DummyLabel
+ // ------------------------------------------------------------------
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ // Variety Label
+ CLabel label = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY")); //$NON-NLS-1$
+
+ // Variety Combo
+ data = new GridData();
+ data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+ data.grabExcessHorizontalSpace = false;
+ label.setLayoutData(data);
+
+ varietyCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+
+ List list = XSDVariety.VALUES;
+ Iterator iter = list.iterator();
+ while (iter.hasNext())
+ {
+ varietyCombo.add(((XSDVariety) iter.next()).getName());
+ }
+ varietyCombo.addSelectionListener(this);
+ varietyCombo.setLayoutData(data);
+
+ // ------------------------------------------------------------------
+ // DummyLabel
+ // ------------------------------------------------------------------
+ getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // Types Label
+ // ------------------------------------------------------------------
+ typesLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
+
+ // ------------------------------------------------------------------
+ // Types Text
+ // ------------------------------------------------------------------
+ typesText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+ typesText.addListener(SWT.Modify, this);
+ data = new GridData();
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ typesText.setLayoutData(data);
+
+ button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
+ button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
+ button.addSelectionListener(this);
+ }
+
+ public void setInput(IWorkbenchPart part, ISelection selection)
+ {
+ super.setInput(part, selection);
+ relayout();
+ }
+
+ protected void relayout()
+ {
+ Composite parentComposite = composite.getParent();
+ parentComposite.getParent().setRedraw(false);
+
+ if (parentComposite != null && !parentComposite.isDisposed())
+ {
+ Control[] children = parentComposite.getChildren();
+ for (int i = 0; i < children.length; i++)
+ {
+ children[i].dispose();
+ }
+ }
+
+ // Now initialize the new handler
+ createContents(parentComposite);
+ parentComposite.getParent().layout(true, true);
+
+ // Now turn painting back on
+ parentComposite.getParent().setRedraw(true);
+ refresh();
+ }
+
+ public void refresh()
+ {
+ super.refresh();
+
+ setListenerEnabled(false);
+ if (isReadOnly)
+ {
+ composite.setEnabled(false);
+ }
+ else
+ {
+ composite.setEnabled(true);
+ }
+
+ nameText.setText("");
+ varietyCombo.setText(""); //$NON-NLS-1$
+ typesText.setText(""); //$NON-NLS-1$
+ typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
+
+ if (input instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+ String simpleTypeName = st.getName();
+ if (simpleTypeName != null)
+ {
+ nameText.setText(simpleTypeName);
+ }
+ else
+ {
+ nameText.setText("**anonymous**");
+ }
+
+ Element simpleTypeElement = st.getElement();
+ Element element = null;
+ String variety = st.getVariety().getName();
+ int intVariety = st.getVariety().getValue();
+
+ if (variety != null)
+ {
+ varietyCombo.setText(variety);
+ if (intVariety == XSDVariety.ATOMIC)
+ {
+ baseTypeDefinition = st.getBaseTypeDefinition();
+ String name = "";
+ if (baseTypeDefinition != null)
+ {
+ name = baseTypeDefinition.getName();
+ }
+ typesText.setText(name);
+ typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
+ }
+ else if (intVariety == XSDVariety.LIST)
+ {
+ itemTypeDefinition = st.getItemTypeDefinition();
+ String name = "";
+ if (itemTypeDefinition != null)
+ {
+ name = itemTypeDefinition.getName();
+ }
+ typesText.setText(name);
+ typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
+ }
+ else if (intVariety == XSDVariety.UNION)
+ {
+ List memberTypesList = st.getMemberTypeDefinitions();
+ StringBuffer sb = new StringBuffer();
+ for (Iterator i = memberTypesList.iterator(); i.hasNext();)
+ {
+ XSDSimpleTypeDefinition typeObject = (XSDSimpleTypeDefinition) i.next();
+ String name = typeObject.getQName();
+ if (name != null)
+ {
+ sb.append(name);
+ if (i.hasNext())
+ {
+ sb.append(" "); //$NON-NLS-1$
+ }
+ }
+ }
+ String memberTypes = sb.toString();
+ typesText.setText(memberTypes);
+ typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
+ }
+ }
+ }
+ setListenerEnabled(true);
+
+ }
+
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (e.widget == varietyCombo)
+ {
+ if (input != null)
+ {
+ if (input instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+ Element parent = st.getElement();
+
+ String variety = varietyCombo.getText();
+ if (variety.equals(XSDVariety.ATOMIC_LITERAL.getName()))
+ {
+ typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
+ st.setVariety(XSDVariety.ATOMIC_LITERAL);
+ addCreateElementActionIfNotExist(XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), parent, null); //$NON-NLS-1$
+ }
+ else if (variety.equals(XSDVariety.UNION_LITERAL.getName()))
+ {
+ typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
+ st.setVariety(XSDVariety.UNION_LITERAL);
+ addCreateElementActionIfNotExist(XSDConstants.UNION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_UNION"), parent, null); //$NON-NLS-1$
+ }
+ else if (variety.equals(XSDVariety.LIST_LITERAL.getName()))
+ {
+ typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
+ st.setVariety(XSDVariety.LIST_LITERAL);
+ addCreateElementActionIfNotExist(XSDConstants.LIST_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LIST"), parent, null); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+ else if (e.widget == button)
+ {
+ Shell shell = Display.getCurrent().getActiveShell();
+ Element element = ((XSDConcreteComponent) input).getElement();
+ Dialog dialog = null;
+ String property = "";
+ Element secondaryElement = null;
+
+ IFile currentIFile = ((IFileEditorInput) getActiveEditor().getEditorInput()).getFile();
+
+ // issue (cs) need to move to common.ui's selection dialog
+ /*
+ XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, xsdSchema);
+ dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
+ provider.setDialog((XSDComponentSelectionDialog) dialog);
+
+ if (input instanceof XSDSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+ Element simpleTypeElement = st.getElement();
+ if (st.getVariety() == XSDVariety.LIST_LITERAL)
+ {
+ Element listElement = (Element) itemTypeDefinition.getElement();
+ // dialog = new TypesDialog(shell, listElement,
+ // XSDConstants.ITEMTYPE_ATTRIBUTE, xsdSchema);
+ // dialog.showComplexTypes = false;
+ provider.showComplexTypes(false);
+
+ secondaryElement = listElement;
+ property = XSDConstants.ITEMTYPE_ATTRIBUTE;
+ }
+ else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
+ {
+ Element derivedByElement = (Element) baseTypeDefinition.getElement();
+ if (derivedByElement != null)
+ {
+ // dialog = new TypesDialog(shell, derivedByElement,
+ // XSDConstants.BASE_ATTRIBUTE, xsdSchema);
+ // dialog.showComplexTypes = false;
+ provider.showComplexTypes(false);
+
+ secondaryElement = derivedByElement;
+ property = XSDConstants.BASE_ATTRIBUTE;
+ }
+ else
+ {
+ return;
+ }
+ }
+ else if (st.getVariety() == XSDVariety.UNION_LITERAL)
+ {
+ SimpleContentUnionMemberTypesDialog unionDialog = new SimpleContentUnionMemberTypesDialog(shell, st);
+ unionDialog.setBlockOnOpen(true);
+ unionDialog.create();
+
+ int result = unionDialog.open();
+ if (result == Window.OK)
+ {
+ String newValue = unionDialog.getResult();
+ // beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"),
+ // element); //$NON-NLS-1$
+ Element unionElement = (Element) memberTypeDefinition.getElement();
+ unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
+
+ if (newValue.length() > 0)
+ {
+ unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
+ }
+ else
+ {
+ unionElement.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
+ }
+ // endRecording(unionElement);
+ refresh();
+ }
+ return;
+ }
+ else
+ {
+ property = "type";
+ }
+ }
+ else
+ {
+ property = "type";
+ }
+ // beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"),
+ // element); //$NON-NLS-1$
+ dialog.setBlockOnOpen(true);
+ dialog.create();
+ int result = dialog.open();
+
+ if (result == Window.OK)
+ {
+ if (secondaryElement == null)
+ {
+ secondaryElement = element;
+ }
+ XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, xsdSchema);
+ helper.setType(secondaryElement, property, ((XSDComponentSelectionDialog) dialog).getSelection());
+
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+ st.setElement(element);
+ updateSimpleTypeFacets();*/
+ }
+ // endRecording(element);
+
+ refresh();
+ }
+
+ public boolean shouldUseExtraSpace()
+ {
+ return false;
+ }
+
+ // issue (cs) this method seems to be utilizing 'old' classes, can we reimplement?
+ // (e.g. ChangeElementAction, XSDDOMHelper, etc)
+ protected boolean addCreateElementActionIfNotExist(String elementTag, String label, Element parent, Node relativeNode)
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+ List attributes = new ArrayList();
+ String reuseType = null;
+
+ // beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY_CHANGE"),
+ // parent); //$NON-NLS-1$
+ if (elementTag.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
+ {
+ Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
+ if (listNode != null)
+ {
+ reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
+ XSDDOMHelper.removeNodeAndWhitespace(listNode);
+ }
+
+ Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
+ if (unionNode != null)
+ {
+ String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
+ if (memberAttr != null)
+ {
+ StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
+ reuseType = stringTokenizer.nextToken();
+ }
+ XSDDOMHelper.removeNodeAndWhitespace(unionNode);
+ }
+
+ if (reuseType == null)
+ {
+ reuseType = getBuiltInStringQName();
+ }
+ attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, reuseType));
+ st.setItemTypeDefinition(null);
+ }
+ else if (elementTag.equals(XSDConstants.LIST_ELEMENT_TAG))
+ {
+ Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
+ if (restrictionNode != null)
+ {
+ reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
+ XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
+ }
+ Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
+ if (unionNode != null)
+ {
+ String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
+ if (memberAttr != null)
+ {
+ StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
+ reuseType = stringTokenizer.nextToken();
+ }
+ XSDDOMHelper.removeNodeAndWhitespace(unionNode);
+ }
+ attributes.add(new DOMAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, reuseType));
+ }
+ else if (elementTag.equals(XSDConstants.UNION_ELEMENT_TAG))
+ {
+ Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
+ if (listNode != null)
+ {
+ reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
+ XSDDOMHelper.removeNodeAndWhitespace(listNode);
+ }
+ Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
+ if (restrictionNode != null)
+ {
+ reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
+ XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
+ }
+ attributes.add(new DOMAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, reuseType));
+ st.setItemTypeDefinition(null);
+ }
+
+ if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
+ {
+ Action action = addCreateElementAction(elementTag, label, attributes, parent, relativeNode);
+ action.run();
+ }
+
+ st.setElement(parent);
+ st.updateElement();
+ // endRecording(parent);
+ return true;
+ }
+
+ protected Action addCreateElementAction(String elementTag, String label, List attributes, Element parent, Node relativeNode)
+ {
+ CreateElementAction action = new CreateElementAction(label);
+ action.setElementTag(elementTag);
+ action.setAttributes(attributes);
+ action.setParentNode(parent);
+ action.setRelativeNode(relativeNode);
+ return action;
+ }
+
+ protected Element getFirstChildNodeIfExists(Node parent, String elementTag, boolean isRef)
+ {
+ NodeList children = parent.getChildNodes();
+ Element targetNode = null;
+ for (int i = 0; i < children.getLength(); i++)
+ {
+ Node child = children.item(i);
+ if (child != null && child instanceof Element)
+ {
+ if (XSDDOMHelper.inputEquals((Element) child, elementTag, isRef))
+ {
+ targetNode = (Element) child;
+ break;
+ }
+ }
+ }
+ return targetNode;
+ }
+
+ protected String getBuiltInStringQName()
+ {
+ String stringName = "string"; //$NON-NLS-1$
+
+ if (xsdSchema != null)
+ {
+ String schemaForSchemaPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+ if (schemaForSchemaPrefix != null && schemaForSchemaPrefix.length() > 0)
+ {
+ String prefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+ if (prefix != null && prefix.length() > 0)
+ {
+ stringName = prefix + ":" + stringName; //$NON-NLS-1$
+ }
+ }
+ }
+ return stringName;
+ }
+
+ private void updateSimpleTypeFacets()
+ {
+ XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+ Element simpleTypeElement = st.getElement();
+ Element derivedByElement = baseTypeDefinition.getElement();
+ if (derivedByElement != null)
+ {
+ List nodesToRemove = new ArrayList();
+ NodeList childList = derivedByElement.getChildNodes();
+ int length = childList.getLength();
+ for (int i = 0; i < length; i++)
+ {
+ Node child = childList.item(i);
+ if (child instanceof Element)
+ {
+ Element elementChild = (Element) child;
+ if (!(elementChild.getLocalName().equals("pattern") || elementChild.getLocalName().equals("enumeration") || //$NON-NLS-1$
+ XSDDOMHelper.inputEquals(elementChild, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ANNOTATION_ELEMENT_TAG, false)
+ || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true)
+ || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true) || XSDDOMHelper.inputEquals(elementChild,
+ XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false)))
+ {
+ nodesToRemove.add(child);
+ }
+ }
+ }
+ Iterator iter = nodesToRemove.iterator();
+ while (iter.hasNext())
+ {
+ Element facetToRemove = (Element) iter.next();
+ String facetName = facetToRemove.getLocalName();
+ Iterator it = st.getValidFacets().iterator();
+ boolean doRemove = true;
+ while (it.hasNext())
+ {
+ String aValidFacet = (String) it.next();
+ if (aValidFacet.equals(facetName))
+ {
+ doRemove = false;
+ break;
+ }
+ }
+ if (doRemove)
+ {
+ XSDDOMHelper.removeNodeAndWhitespace(facetToRemove);
+ }
+ }
+ }
+ }
+ // TODO: Common this up with element declaration
+ public void doHandleEvent(Event event)
+ {
+ if (event.widget == nameText)
+ {
+ String newValue = nameText.getText().trim();
+ if (input instanceof XSDNamedComponent)
+ {
+ XSDNamedComponent namedComponent = (XSDNamedComponent)input;
+ if (!validateSection())
+ return;
+
+ Command command = null;
+
+ // Make sure an actual name change has taken place
+ String oldName = namedComponent.getName();
+ if (!newValue.equals(oldName))
+ {
+ command = new UpdateNameCommand("Rename", namedComponent, newValue);
+ }
+
+ if (command != null && getCommandStack() != null)
+ {
+ getCommandStack().execute(command);
+ }
+
+ }
+ }
+ }
+
+ protected boolean validateSection()
+ {
+ if (nameText == null || nameText.isDisposed())
+ return true;
+
+ setErrorMessage(null);
+
+ String name = nameText.getText().trim();
+
+ // validate against NCName
+ if (name.length() < 1 || !XMLChar.isValidNCName(name))
+ {
+ setErrorMessage("Invalid name");
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDTableTreeViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDTableTreeViewer.java
new file mode 100644
index 0000000..2738861
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDTableTreeViewer.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 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.common.properties.sections;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeContentProvider;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeViewer;
+import org.w3c.dom.Element;
+
+public class XSDTableTreeViewer extends XMLTableTreeViewer
+{
+
+ String filter = "";
+
+ class XSDActionMenuListener implements IMenuListener
+ {
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ // used to disable NodeSelection listening while running NodeAction
+ // XSDActionManager nodeActionManager = new XSDActionManager(fModel,
+ // XSDTableTreeViewer.this);
+ // nodeActionManager.setCommandStack(commandStack);
+ // nodeActionManager.fillContextMenu(menuManager, getSelection());
+
+ // used to disable NodeSelection listening while running NodeAction
+ // XMLNodeActionManager nodeActionManager = new
+ // XMLNodeActionManager(((IDOMDocument) getInput()).getModel(),
+ // XMLTableTreeViewer.this) {
+ if (getInput() != null)
+ {
+ XSDActionManager nodeActionManager = new XSDActionManager(((IDOMDocument) (((Element) getInput()).getOwnerDocument())).getModel(), XSDTableTreeViewer.this);
+ // nodeActionManager.setCommandStack(commandStack);
+ nodeActionManager.fillContextMenu(menuManager, getSelection());
+ }
+
+ }
+ }
+
+ public XSDTableTreeViewer(Composite parent)
+ {
+ super(parent);
+ // treeExtension.setCellModifier(null);
+ getTree().setLinesVisible(true);
+
+ // treeExtension = new XMLTreeExtension(getTree());
+
+ // Reassign the content provider
+ XMLTableTreeContentProvider provider = new MyContentProvider();
+ // provider.addViewer(this);
+
+ setContentProvider(provider);
+ setLabelProvider(provider);
+
+ // setViewerSelectionManager(new ViewerSelectionManagerImpl(null));
+ }
+
+ protected Object getRoot()
+ {
+ return super.getRoot();
+ }
+
+ public void setFilter(String filter)
+ {
+ this.filter = filter;
+ }
+
+ protected void createContextMenu()
+ {
+ // TODO Verify if this is okay to override the MenuManager
+ MenuManager contextMenu = new MenuManager("#PopUp"); //$NON-NLS-1$
+ contextMenu.add(new Separator("additions")); //$NON-NLS-1$
+ contextMenu.setRemoveAllWhenShown(true);
+
+ // This is the line we have to modify
+ contextMenu.addMenuListener(new XSDActionMenuListener());
+ Menu menu = contextMenu.createContextMenu(getControl());
+ getControl().setMenu(menu);
+ }
+
+ boolean added = false;
+
+ class MyContentProvider extends XMLTableTreeContentProvider
+ {
+
+ // public Object[] getChildren(Object element) {
+ //
+ // if (!added) {
+ // if (element instanceof Element) {
+ // added = true;
+ // Element elem = (Element)element;
+ // System.out.println("getChildren " + elem.getLocalName());
+ // if (elem instanceof INodeNotifier) {
+ // viewerNotifyingAdapterFactory.adapt((INodeNotifier) elem);
+ // }
+ // // return new Object[] {elem};
+ // }
+ // }
+ // return super.getChildren(element);
+ // }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ added = false;
+ if (oldInput instanceof Element)
+ oldInput = ((Element) oldInput).getOwnerDocument();
+
+ if (newInput instanceof Element)
+ newInput = ((Element) newInput).getOwnerDocument();
+ super.inputChanged(viewer, oldInput, newInput);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddApplicationInfoDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddApplicationInfoDialog.java
new file mode 100644
index 0000000..1596ee7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddApplicationInfoDialog.java
@@ -0,0 +1,524 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.common.properties.sections.appinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.xerces.dom.DocumentImpl;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.dialogs.SelectionDialog;
+import org.eclipse.wst.xsd.contentmodel.internal.XSDImpl;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class AddApplicationInfoDialog extends SelectionDialog implements ISelectionChangedListener, SelectionListener
+{
+ // when this dialog is created it needs to know which registry it is going to use,the WSDL or the XSD,
+ // hence we need this field
+ ApplicationInformationPropertiesRegistry registry;
+
+ protected static final Image DEFAULT_ELEMENT_ICON = XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+ protected static final Image DEFAULT_ATTRIBUTE_ICON = XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+
+ /** A temporary Document in which we create temporary DOM element for each element in the
+ * Element view. (required by LabelProvider) */
+ protected static Document tempDoc = new DocumentImpl();
+
+ Button addButton, removeButton;
+
+ public AddApplicationInfoDialog(Shell parent, ApplicationInformationPropertiesRegistry registry)
+ {
+ super(parent);
+ setTitle("Add Extension Components");
+ setShellStyle(SWT.APPLICATION_MODAL | SWT.RESIZE | SWT.CLOSE);
+
+ this.registry = registry;
+ }
+
+ private IStructuredContentProvider categoryContentProvider, elementContentProvider;
+ private ILabelProvider categoryLabelProvider, elementLabelProvider;
+ private List fInput;
+
+ private TableViewer categoryTableViewer, elementTableViewer;
+ private ArrayList existingNames;
+
+ public void setInput(List input)
+ {
+ this.fInput = input;
+ }
+
+ protected Control createDialogArea(Composite container)
+ {
+ Composite parent = (Composite) super.createDialogArea(container);
+
+ Composite categoryComposite = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ gl.marginHeight = 0;
+ gl.marginWidth = 0;
+ GridData data = new GridData(GridData.FILL_BOTH);
+ categoryComposite.setLayoutData(data);
+ categoryComposite.setLayout(gl);
+
+ Label label = new Label(categoryComposite, SWT.LEFT);
+ label.setText("Extension Categories:");
+
+ new Label(categoryComposite, SWT.NONE);
+
+ categoryTableViewer = new TableViewer(categoryComposite, getTableStyle());
+ categoryTableViewer.setContentProvider(new CategoryContentProvider());
+ categoryTableViewer.setLabelProvider(new CategoryLabelProvider());
+ categoryTableViewer.setInput(fInput);
+ categoryTableViewer.addSelectionChangedListener(this);
+
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ Table table = categoryTableViewer.getTable();
+ table.setLayoutData(gd);
+ table.setFont(container.getFont());
+
+ Composite buttonComposite = new Composite(categoryComposite, SWT.NONE);
+ gl = new GridLayout();
+ gl.makeColumnsEqualWidth = true;
+ gl.numColumns = 1;
+ data = new GridData();
+ data.horizontalAlignment = SWT.FILL;
+ buttonComposite.setLayoutData(data);
+ buttonComposite.setLayout(gl);
+
+ addButton = new Button(buttonComposite, SWT.PUSH);
+ addButton.setText("Add...");
+ addButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ addButton.addSelectionListener(this);
+
+ removeButton = new Button(buttonComposite, SWT.PUSH);
+ removeButton.setText("Remove");
+ removeButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ removeButton.addSelectionListener(this);
+
+ List initialSelection = getInitialElementSelections();
+ if (initialSelection != null)
+ categoryTableViewer.setSelection(new StructuredSelection(initialSelection));
+
+ Label elementLabel = new Label(categoryComposite, SWT.LEFT);
+ elementLabel.setText("Available components to Add:");
+
+ new Label(categoryComposite, SWT.NONE);
+
+ elementTableViewer = new TableViewer(categoryComposite, getTableStyle());
+ elementTableViewer.setContentProvider(new ElementContentProvider());
+ elementTableViewer.setLabelProvider(new ElementLabelProvider());
+ elementTableViewer.setInput(null);
+ elementTableViewer.addDoubleClickListener(new IDoubleClickListener()
+ {
+ public void doubleClick(DoubleClickEvent event)
+ {
+ okPressed();
+ }
+ });
+
+ gd = new GridData(GridData.FILL_BOTH);
+ table = elementTableViewer.getTable();
+ table.setLayoutData(gd);
+ table.setFont(container.getFont());
+
+ elementTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ }
+ });
+
+ return parent;
+ }
+
+ public void create()
+ {
+ super.create();
+ if (categoryTableViewer.getTable().getItemCount() > 0)
+ {
+ categoryTableViewer.getTable().select(0);
+ categoryTableViewer.setSelection(new StructuredSelection(categoryTableViewer.getElementAt(0)));
+ }
+
+ // Setup the list of category names that already exist
+ existingNames = new ArrayList();
+ TableItem[] categoryNames = categoryTableViewer.getTable().getItems();
+ for (int i = 0; i < categoryNames.length; i++ ){
+ existingNames.add(categoryNames[i].getText());
+ }
+
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ }
+
+ protected Point getInitialSize()
+ {
+ return getShell().computeSize(400, 300);
+ }
+
+ /**
+ * Return the style flags for the table viewer.
+ *
+ * @return int
+ */
+ protected int getTableStyle()
+ {
+ return SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
+ }
+
+ /*
+ * Overrides method from Dialog
+ */
+ protected void okPressed()
+ {
+ // Build a list of selected children.
+ getShell().setCursor(new Cursor(getShell().getDisplay(), SWT.CURSOR_WAIT));
+ IStructuredSelection elementSelection = (IStructuredSelection) elementTableViewer.getSelection();
+ IStructuredSelection categorySelection = (IStructuredSelection) categoryTableViewer.getSelection();
+ List result = new ArrayList();
+ result.add(elementSelection.getFirstElement());
+ result.add(categorySelection.getFirstElement());
+ if (elementSelection.getFirstElement() != null)
+ {
+ setResult(result);
+ }
+ else
+ {
+ setResult(null);
+ }
+ super.okPressed();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (e.widget == addButton)
+ {
+ AddNewCategoryDialog addNewCategoryDialog
+ = new AddNewCategoryDialog(getShell());
+
+ addNewCategoryDialog.setUnavailableCategoryNames(existingNames);
+
+ if ( addNewCategoryDialog.open() == Window.OK ){
+ String location = addNewCategoryDialog.getAppInfoSchemaLocation();
+
+ SpecificationForAppinfoSchema schemaSpec = new SpecificationForAppinfoSchema();
+ schemaSpec.setDisplayName(addNewCategoryDialog.getNewCategoryName());
+ schemaSpec.setLocation(location);
+
+ fInput.add(schemaSpec);
+ existingNames.add(schemaSpec.getDisplayName());
+
+ // refresh without updating labels of existing TableItems
+ categoryTableViewer.refresh(false);
+
+ categoryTableViewer.setSelection(new StructuredSelection(schemaSpec));
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ }
+ }
+ else if (e.widget == removeButton)
+ {
+ TableItem[] selections = categoryTableViewer.getTable().getSelection();
+ for (int i =0; i < selections.length; i++){
+ fInput.remove(selections[i].getData() );
+ }
+ categoryTableViewer.refresh(false);
+
+ elementTableViewer.setInput(null);
+ elementTableViewer.refresh();
+
+ // TODO auto select either the prev category, the next category or the first category in the Table
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ public void widgetDefaultSelected(SelectionEvent event)
+ {
+
+ }
+
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ if (event.getSource() == categoryTableViewer)
+ {
+ ISelection selection = event.getSelection();
+ if (selection instanceof StructuredSelection)
+ {
+ Object obj = ((StructuredSelection) selection).getFirstElement();
+ if (obj instanceof SpecificationForAppinfoSchema)
+ {
+ SpecificationForAppinfoSchema properties = (SpecificationForAppinfoSchema) obj;
+
+ XSDSchema xsdSchema = getASISchemaModel(properties);
+
+ if (xsdSchema == null){
+ // TODO display an error Dialog telling the user that
+ // her selected schema file is invalid.
+ return;
+ }
+
+ List allItems = buildInput(xsdSchema);
+ elementTableViewer.setInput(allItems);
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ }
+ }
+ }
+ }
+ private List buildInput(XSDSchema xsdSchema)
+ {
+ List elements = xsdSchema.getElementDeclarations();
+ List attributes = xsdSchema.getAttributeDeclarations();
+ String targetNamespace = xsdSchema.getTargetNamespace();
+
+ // For safety purpose: We don't append 'attributes' to 'elements'
+ // ArrayStoreException(or similar one) may occur
+ List allItems = new ArrayList(attributes.size() + elements.size());
+ {
+ // getElementDeclarations returns a lot of elements from import
+ // statement, we
+ // only add non-imported elements here. (trung)
+ for (int i = 0; i < elements.size(); i++)
+ {
+ XSDElementDeclaration currentElement = (XSDElementDeclaration) elements.get(i);
+ if (currentElement.getTargetNamespace().equals(targetNamespace))
+ allItems.add(currentElement);
+ }
+ // getAttributeDeclarations also returns a lot of elements from
+ // import statement, we
+ // only add non-imported elements here. (trung)
+ for (int i = 0; i < attributes.size(); i++)
+ {
+ XSDAttributeDeclaration currentAttribute = (XSDAttributeDeclaration) attributes.get(i);
+ if (currentAttribute.isGlobal() && currentAttribute.getTargetNamespace().equals(targetNamespace))
+ allItems.add(currentAttribute);
+ }
+ }
+ return allItems;
+ }
+
+
+ private XSDSchema getASISchemaModel(SpecificationForAppinfoSchema appInfoSchemaSpec)
+ {
+ XSDSchema xsdSchema = XSDImpl.buildXSDModel(appInfoSchemaSpec.getLocation());
+
+ // now that the .xsd file is read, we can retrieve the namespace of this xsd file
+ // and set the namespace for 'properties'
+ if ( appInfoSchemaSpec.getNamespaceURI() == null){
+ appInfoSchemaSpec.setNamespaceURI( xsdSchema.getTargetNamespace());
+ }
+
+ return xsdSchema;
+ }
+
+ static class CategoryContentProvider implements IStructuredContentProvider
+ {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement)
+ {
+ SpecificationForAppinfoSchema[] appInfoSchemaSpecs = null;
+ try
+ {
+ List inputList = (List) inputElement;
+ appInfoSchemaSpecs = (SpecificationForAppinfoSchema[]) inputList.toArray(new SpecificationForAppinfoSchema[0]);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return appInfoSchemaSpecs;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose()
+ {
+ // Do nothing
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ // Do nothing
+
+ }
+ }
+
+ static class CategoryLabelProvider extends LabelProvider
+ {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage(Object element)
+ {
+ return XSDEditorPlugin.getXSDImage("icons/appinfo_category.gif");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+ */
+ public String getText(Object element)
+ {
+ if (element instanceof SpecificationForAppinfoSchema)
+ return ((SpecificationForAppinfoSchema) element).getDisplayName();
+
+ return super.getText(element);
+ }
+ }
+
+ static class ElementContentProvider implements IStructuredContentProvider
+ {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement)
+ {
+ if (inputElement instanceof List)
+ {
+ return ((List) inputElement).toArray();
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose()
+ {
+ // Do nothing
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ // Do nothing
+
+ }
+ }
+
+ class ElementLabelProvider extends LabelProvider
+ {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+ */
+ public Image getImage(Object element)
+ {
+ if ( element instanceof XSDElementDeclaration){
+
+ // Workaround trick: (trung) we create a temporary Dom element and put it in the label provider
+ // to get the image.
+ String namespace = ((XSDElementDeclaration) element).getSchema().getTargetNamespace();
+ String name = ((XSDElementDeclaration) element).getName();
+ Element tempElement = tempDoc.createElementNS(namespace, name);
+ ILabelProvider lp = registry.getLabelProvider(tempElement);
+ if (lp != null){
+ Image img = lp.getImage(tempElement);
+
+ if (img != null){
+ return img;
+ }
+ }
+ return DEFAULT_ELEMENT_ICON;
+ }
+ else if ( element instanceof XSDAttributeDeclaration){
+ return DEFAULT_ATTRIBUTE_ICON;
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+ */
+ public String getText(Object element)
+ {
+ if (element instanceof XSDElementDeclaration)
+ return ((XSDElementDeclaration) element).getName();
+ if (element instanceof XSDAttributeDeclaration )
+ return ((XSDAttributeDeclaration) element).getName();
+ return super.getText(element);
+ }
+ }
+
+ public boolean close()
+ {
+ return super.close();
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddNewCategoryDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddNewCategoryDialog.java
new file mode 100644
index 0000000..4b7787e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddNewCategoryDialog.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.common.properties.sections.appinfo;
+
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.wst.common.ui.internal.dialogs.SelectSingleFileDialog;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class AddNewCategoryDialog extends Dialog
+{
+
+ private static final String SCHEMA_LABEL = "Schema:";
+ private static final String DIALOG_TITLE = "Add Category";
+ private static final String NAME_LABEL = "Name:";
+ private MenuManager browseMenu;
+ private Label name;
+ private Text nameText;
+ private Label schema;
+ private CLabel schemaDisplayer;
+ private ToolBar browseToolBar;
+ private ToolItem browseItem;
+
+ private List invalidNames;
+ private String appInfoSchemaLocation;
+ private String categoryName;
+ private CLabel errDisplayer;
+
+ private boolean isCategoryNameValid;
+
+ public AddNewCategoryDialog(Shell parentShell)
+ {
+ super(parentShell);
+ }
+
+ /**
+ * receive a List of names which have already been added to the category list
+ *
+ * @param unavailNames
+ * Array of unvailable names
+ */
+ public void setUnavailableCategoryNames(List unavailNames)
+ {
+ invalidNames = unavailNames;
+ }
+
+ // we initially disable the Ok button
+ protected Control createButtonBar(Composite parent)
+ {
+ Control result = super.createButtonBar(parent);
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ return result;
+ }
+
+ protected Control createDialogArea(Composite parent)
+ {
+ getShell().setText(DIALOG_TITLE);
+
+ Composite mainComposite = (Composite) super.createDialogArea(parent);
+ GridLayout layout = new GridLayout(3, false);
+ layout.marginTop = 10;
+ mainComposite.setLayout(layout);
+ mainComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ GridData data = new GridData();
+ data.widthHint = 400;
+
+ mainComposite.setLayoutData(data);
+
+ // Line 1, name
+ name = new Label(mainComposite, SWT.NONE);
+ name.setText(NAME_LABEL);
+
+ nameText = new Text(mainComposite, SWT.BORDER | SWT.SINGLE);
+ nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Button hidden = new Button(mainComposite, SWT.NONE);
+ hidden.setVisible(false);
+
+ // Line 2, schema
+ schema = new Label(mainComposite, SWT.NONE);
+ schema.setText(SCHEMA_LABEL);
+
+ schemaDisplayer = new CLabel(mainComposite, SWT.BORDER | SWT.SINGLE);
+ schemaDisplayer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ browseToolBar = new ToolBar(mainComposite, SWT.FLAT);
+ browseItem = new ToolItem(browseToolBar, SWT.NONE);
+ // TODO: Should be able to get the image from the XML plugin. Don't need
+ // to copy to XSDEditor icons folder like this.
+ browseItem.setImage(XSDEditorPlugin.getXSDImage("icons/appinfo_browse.gif"));
+
+ browseMenu = new MenuManager();
+
+ BrowseInWorkspaceAction browseInWorkspace = new BrowseInWorkspaceAction();
+ browseMenu.add(browseInWorkspace);
+
+ BrowseCatalogAction browseCatalog = new BrowseCatalogAction();
+ browseMenu.add(browseCatalog);
+
+ browseItem.addSelectionListener(new SelectionAdapter()
+ {
+ public void widgetSelected(SelectionEvent e)
+ {
+ Menu menu = browseMenu.createContextMenu(getShell());
+ Rectangle bounds = browseItem.getBounds();
+ Point topLeft = new Point(bounds.x, bounds.y + bounds.height);
+ topLeft = browseToolBar.toDisplay(topLeft);
+ menu.setLocation(topLeft.x, topLeft.y);
+ menu.setVisible(true);
+ }
+ });
+
+ // Composite errComp = new Composite(mainComposite, SWT.NONE);
+ // errComp.setBackground(org.eclipse.draw2d.ColorConstants.white);
+ // errComp.setLayout(new GridLayout());
+ errDisplayer = new CLabel(mainComposite, SWT.FLAT);
+ // errDisplayer.setText("abd");
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.grabExcessHorizontalSpace = true;
+ gd.horizontalSpan = 3;
+ errDisplayer.setLayoutData(gd);
+
+ // errComp.setLayoutData(gd);
+ // errDisplayer.setLayoutData(gd);
+ // errMsgContainer.setContent(errDisplayer);
+
+ nameText.addModifyListener(new ModifyListener()
+ {
+ // track the nameText and enable/disable the OK button accordingly
+ public void modifyText(ModifyEvent e)
+ {
+ categoryName = nameText.getText();
+
+ // name is in the invalid List
+ if (invalidNames != null)
+ {
+ if (invalidNames.contains(categoryName.trim()))
+ {
+ isCategoryNameValid = false;
+
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ errDisplayer.setText("The name is already being used.");
+ errDisplayer.setImage(XSDEditorPlugin.getXSDImage("icons/error_st_obj.gif"));
+ return;
+ }
+ }
+ // name is empty string
+ if (categoryName.equals(""))
+ {
+ isCategoryNameValid = false;
+
+ getButton(IDialogConstants.OK_ID).setEnabled(false);
+ errDisplayer.setText("");
+ errDisplayer.setImage(null);
+ return;
+ }
+
+ /*
+ * Enable the Ok button if the location field AND the name field are not
+ * empty
+ */
+ if (!categoryName.equals(""))
+ {
+ isCategoryNameValid = true;
+ errDisplayer.setText("");
+ errDisplayer.setImage(null);
+ }
+ if (!appInfoSchemaLocation.equals(""))
+ {
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ }
+ }
+ });
+
+ return parent;
+ }
+
+ protected void okPressed()
+ {
+ super.okPressed();
+ }
+
+ protected class BrowseInWorkspaceAction extends Action
+ {
+ private static final String XSD_FILE_EXTENSION = ".xsd";
+
+ public BrowseInWorkspaceAction()
+ {
+ super("Workspace");
+ }
+
+ public void run()
+ {
+ SelectSingleFileDialog dialog = new SelectSingleFileDialog(getShell(), null, true);
+ dialog.addFilterExtensions(new String[] { XSD_FILE_EXTENSION });
+ dialog.create();
+ dialog.setTitle("Select XSD file");
+ dialog.setMessage("Choose an XSD file containing schema for your extensible components");
+
+ if (dialog.open() == Window.OK)
+ {
+ IFile appInfoSchemaFile = dialog.getFile();
+ if (appInfoSchemaFile != null)
+ {
+ // remove leading slash from the value to avoid the
+ // whole leading slash ambiguity problem
+ String uri = appInfoSchemaFile.getFullPath().toString();
+ while (uri.startsWith("/") || uri.startsWith("\\")) { //$NON-NLS-1$ //$NON-NLS-2$
+ uri = uri.substring(1);
+ }
+ appInfoSchemaLocation = uri.toString();
+
+ appInfoSchemaLocation = "file://" + Platform.getLocation().toString() + "/" + appInfoSchemaLocation;
+ // TODO... be careful how we construct the location
+ // UNIX related issues here
+
+ schemaDisplayer.setImage(XSDEditorPlugin.getXSDImage("icons/XSDFile.gif"));
+ schemaDisplayer.setText(uri);
+
+ // Enable the OK button if we should..
+ if (isCategoryNameValid)
+ {
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ errDisplayer.setText("");
+ errDisplayer.setImage(null);
+ }
+ }
+ }
+ }
+ }
+
+ protected class BrowseCatalogAction extends Action
+ {
+ public BrowseCatalogAction()
+ {
+ super("Catalog");
+ }
+
+ public void run()
+ {
+ SelectFromCatalogDialog dialog = new SelectFromCatalogDialog(getShell());
+ // dialog.open();
+ if (dialog.open() == Window.OK)
+ {
+ appInfoSchemaLocation = dialog.getCurrentSelectionLocation();
+
+ schemaDisplayer.setImage(XSDEditorPlugin.getXSDImage("icons/xmlcatalog_obj.gif"));
+ schemaDisplayer.setText(dialog.getCurrentSelectionNamespace());
+
+ // Enable the OK button if we should..
+ if (isCategoryNameValid && !appInfoSchemaLocation.equals(""))
+ {
+ getButton(IDialogConstants.OK_ID).setEnabled(true);
+ errDisplayer.setText("");
+ errDisplayer.setImage(null);
+ }
+ }
+ }
+ }
+
+ public String getNewCategoryName()
+ {
+ return categoryName.trim();
+ }
+
+ public String getAppInfoSchemaLocation()
+ {
+ return appInfoSchemaLocation;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationPropertiesRegistry.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationPropertiesRegistry.java
new file mode 100644
index 0000000..49682f2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationPropertiesRegistry.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.common.properties.sections.appinfo;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
+import org.w3c.dom.Element;
+
+public class ApplicationInformationPropertiesRegistry
+{
+ private static final String LOCATION_PREFIX = "platform:/plugin/";
+ public static final String DESCRIPTION = "description";
+ public static final String DISPLAYNAME = "displayName";
+ public static final String NAMESPACEURI = "namespaceURI";
+ public static final String XSDFILEURL = "xsdFileURL";
+ public static final String LABELPROVIDER = "labelProviderClass";
+
+ protected String extensionId;
+
+ HashMap propertyMap;
+ ArrayList nsURIProperties;
+ private ICatalog systemCatalog;
+
+ public ApplicationInformationPropertiesRegistry(String appinfo_extensionid)
+ {
+ extensionId = appinfo_extensionid;
+ }
+
+ public List getAllApplicationSpecificSchemaProperties()
+ {
+ // If we read the registry, then let's not do it again.
+ if (nsURIProperties != null)
+ {
+ return nsURIProperties;
+ }
+ IConfigurationElement[] asiPropertiesList = Platform.getExtensionRegistry().getConfigurationElementsFor(extensionId);
+
+ nsURIProperties = new ArrayList();
+ propertyMap = new HashMap();
+
+ boolean hasASIProperties = (asiPropertiesList != null) && (asiPropertiesList.length > 0);
+
+ if (hasASIProperties)
+ {
+ for (int i = 0; i < asiPropertiesList.length; i++)
+ {
+ IConfigurationElement asiPropertiesElement = asiPropertiesList[i];
+ String description = asiPropertiesElement.getAttribute(DESCRIPTION);
+ String displayName = asiPropertiesElement.getAttribute(DISPLAYNAME);
+ String namespaceURI = asiPropertiesElement.getAttribute(NAMESPACEURI);
+ String xsdFileURL = asiPropertiesElement.getAttribute(XSDFILEURL);
+ String labelProviderClass = asiPropertiesElement.getAttribute(LABELPROVIDER);
+
+ if (displayName == null)
+ {
+ // If there is no display name, force the user
+ // to manually create a name. Therefore, we ignore entry without
+ // a display name.
+ // TODO (trung) still in testing phase,
+ // remove the comment for "continue;" when needed
+ continue;
+ }
+
+ if (xsdFileURL == null)
+ {
+ xsdFileURL = locateFileUsingCatalog(namespaceURI);
+ }
+
+ SpecificationForAppinfoSchema asiAppinfoSpec = createEntry();
+ if (displayName == null)
+ displayName = namespaceURI;
+ asiAppinfoSpec.setDescription(description);
+ asiAppinfoSpec.setDisplayName(displayName);
+ asiAppinfoSpec.setNamespaceURI(namespaceURI);
+
+ if (labelProviderClass != null)
+ {
+ String pluginId = asiPropertiesElement.getDeclaringExtension().getContributor().getName();
+ ILabelProvider labelProvider = null;
+ try
+ {
+ Class theClass = Platform.getBundle(pluginId).loadClass(labelProviderClass);
+ if (theClass != null)
+ {
+ labelProvider = (ILabelProvider) theClass.newInstance();
+ if (labelProvider != null)
+ {
+ propertyMap.put(namespaceURI, labelProvider);
+ asiAppinfoSpec.setLabelProvider(labelProvider);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+
+ }
+ }
+ String plugin = asiPropertiesElement.getDeclaringExtension().getContributor().getName();
+ asiAppinfoSpec.setLocation(LOCATION_PREFIX + plugin + "/" + xsdFileURL);
+
+ nsURIProperties.add(asiAppinfoSpec);
+ }
+
+ }
+ return nsURIProperties;
+ }
+
+ public ILabelProvider getLabelProvider(Element element)
+ {
+ String uri = element.getNamespaceURI();
+ if (uri == null)
+ uri = "";
+
+ // Didn't retrieve the config elements yet.
+ if (propertyMap == null)
+ {
+ getAllApplicationSpecificSchemaProperties();
+ }
+
+ Object object = propertyMap.get(uri);
+ if (object instanceof ILabelProvider)
+ {
+ return (ILabelProvider) object;
+ }
+ return null;
+ }
+
+ public SpecificationForAppinfoSchema createEntry()
+ {
+ return new SpecificationForAppinfoSchema();
+ }
+
+ /**
+ * Returns the String location for the schema with the given namespaceURI by
+ * looking at the XML catalog. We look only in the plugin specified entries of
+ * the catalog.
+ *
+ * @param namespaceURI
+ * @return String representing the location of the schema.
+ */
+ private String locateFileUsingCatalog(String namespaceURI)
+ {
+ retrieveCatalog();
+
+ ICatalogEntry[] entries = systemCatalog.getCatalogEntries();
+ for (int i = 0; i < entries.length; i++)
+ {
+ if (entries[i].getKey().equals(namespaceURI))
+ return entries[i].getURI();
+ }
+
+ return null;
+ }
+
+ private void retrieveCatalog()
+ {
+ if (systemCatalog != null)
+ return;
+
+ ICatalog defaultCatalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
+ INextCatalog[] nextCatalogs = defaultCatalog.getNextCatalogs();
+ for (int i = 0; i < nextCatalogs.length; i++)
+ {
+ INextCatalog catalog = nextCatalogs[i];
+ ICatalog referencedCatalog = catalog.getReferencedCatalog();
+ if (referencedCatalog != null)
+ {
+ if (XMLCorePlugin.SYSTEM_CATALOG_ID.equals(referencedCatalog.getId()))
+ {
+ systemCatalog = referencedCatalog;
+ }
+ }
+ }
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationTableTreeViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationTableTreeViewer.java
new file mode 100644
index 0000000..6d4fbfb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationTableTreeViewer.java
@@ -0,0 +1,336 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.common.properties.sections.appinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.ui.internal.tabletree.TreeContentHelper;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeContentProvider;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeViewer;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTreeExtension;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.properties.sections.XSDActionManager;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+public class ApplicationInformationTableTreeViewer extends XMLTableTreeViewer
+{
+ private CommandStack commandStack;
+
+ public ApplicationInformationTableTreeViewer(Composite parent)
+ {
+ super(parent);
+
+ getTree().setLinesVisible(true);
+
+ treeExtension.setCellModifier(null);
+ getTree().removePaintListener(treeExtension);
+ treeExtension = new MyXMLTreeExtension(getTree());
+
+ AppInfoContentProvider provider = new AppInfoContentProvider();
+ setContentProvider(provider);
+ setLabelProvider(provider);
+ }
+
+ public void setCommandStack(CommandStack commandStack) {
+ this.commandStack = commandStack;
+ }
+
+ Element asiElement;
+
+ public void setASIElement(Element asiElement)
+ {
+ this.asiElement = asiElement;
+ }
+
+ class AppInfoContentProvider extends XMLTableTreeContentProvider
+ {
+ MyTreeContentHelper treeContentHelper;
+ public AppInfoContentProvider()
+ {
+ treeContentHelper = new MyTreeContentHelper();
+ }
+
+ public Object[] getChildren(Object element)
+ {
+ if (element instanceof List)
+ {
+ return ((List) element).toArray();
+ }
+ else if (element instanceof Element)
+ {
+
+ }
+ return treeContentHelper.getChildren(element);
+
+ //return super.getChildren(element);
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ if (oldInput instanceof Element)
+ oldInput = ((Element) oldInput).getOwnerDocument();
+
+ if (newInput instanceof Element)
+ newInput = ((Element) newInput).getOwnerDocument();
+
+ super.inputChanged(viewer, oldInput, newInput);
+
+ }
+ }
+
+ class ASIActionMenuListener implements IMenuListener
+ {
+ public void menuAboutToShow(IMenuManager menuManager)
+ {
+ // used to disable NodeSelection listening while running NodeAction
+ // ASIActionManager nodeActionManager = new ASIActionManager(fModel,
+ // ASITableTreeViewer.this);
+ // nodeActionManager.setCommandStack(commandStack);
+ IDOMModel model = null;
+ try
+ {
+ if (asiElement instanceof ElementImpl)
+ {
+ model = ((ElementImpl)asiElement).getModel();
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ // if the model is not the XML model, then we can't support the table viewer.
+ if (model != null)
+ {
+ XSDActionManager actionManager = new XSDActionManager(model, ApplicationInformationTableTreeViewer.this);
+ actionManager.setCommandStack(commandStack);
+
+ // add general actions
+ ActionRegistry registry = (ActionRegistry) XSDEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getAdapter(ActionRegistry.class);
+
+ if (registry != null) // an editor may not use the registry
+ {
+ // add undo, redo, revert
+ IAction undo = registry.getAction(ActionFactory.UNDO.getId());
+ if (undo != null)
+ {
+ menuManager.add(new Separator());
+ menuManager.add(undo);
+ }
+ IAction redo = registry.getAction(ActionFactory.REDO.getId());
+ if (redo != null)
+ {
+ menuManager.add(redo);
+ }
+ menuManager.add(new Separator());
+ }
+ actionManager.fillContextMenu(menuManager, getSelection());
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.ibm.xmleditor.internal.tabletree.XMLTableTreeViewer#createContextMenu()
+ */
+ protected void createContextMenu()
+ {
+ MenuManager contextMenu = new MenuManager("#PopUp"); //$NON-NLS-1$
+ contextMenu.add(new Separator("additions")); //$NON-NLS-1$
+ contextMenu.setRemoveAllWhenShown(true);
+
+ // This is the line we have to modify
+ contextMenu.addMenuListener(new ASIActionMenuListener());
+ Menu menu = contextMenu.createContextMenu(getControl());
+ getControl().setMenu(menu);
+ }
+
+
+
+
+
+ static String EMPTY_STRING = ""; //$NON-NLS-1$
+ static String XML_NS_STRING = "xmlns"; //$NON-NLS-1$
+ static String APPINFO = "appinfo"; //$NON-NLS-1$
+
+ public class MyTreeContentHelper extends TreeContentHelper {
+ public void setNodeValue(Node node, String value) {
+ String oldValue = getNodeValue(node);
+ // The command stack was being populated with changes like an empty string to a null value
+ // So we weed those out as well
+// if (value != null && !value.equals(oldValue) && (!(value.equals(EMPTY_STRING) && oldValue ==null))) {
+// ModifyNodeCommand command = new ModifyNodeCommand(node, value, this);
+// commandStack.execute(command);
+// }
+ }
+
+ // TODO - Remove this method when Bugzilla 6738 is fixed
+ public List getElementTextContent(Element element) {
+ List result = null;
+ if (!element.hasAttributes()) {
+ Node node = element.getFirstChild();
+
+ // TODO - Hack to workaround problem that a text cell editor appears on the first
+ // click and not the enumerated cell editor
+ if (node == null) {
+ result = new Vector();
+ Text txt = element.getOwnerDocument().createTextNode("");
+ element.appendChild(txt);
+ result.add(txt);
+ }
+ // end of workaround
+
+ for (; node != null; node = node.getNextSibling()) {
+ if (node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.ENTITY_REFERENCE_NODE) {
+ if (result == null) {
+ result = new Vector();
+ }
+ result.add(node);
+ } else {
+ result = null;
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ public void executeSetNodeValue(Node node, String value) {
+ super.setNodeValue(node, value);
+ }
+
+ public boolean isEditable(Node node) {
+ int nodeType = node.getNodeType();
+ boolean result = false;
+ switch (nodeType) {
+ case Node.ATTRIBUTE_NODE :
+ {
+ // Prevent the editing of the namespace attribute
+ Attr attr = (Attr)node;
+ result = !attr.getName().startsWith(XML_NS_STRING);
+ break;
+ }
+ default:
+ {
+ result = super.isEditable(node);
+ }
+ }
+ return result;
+ }
+
+ // Need to override since I don't want to see the source attribute
+ public Object[] getChildren(Object element) {
+ Object[] result = null;
+
+ if (element instanceof List) {
+ result = ((List)element).toArray();
+ } else if (element instanceof Node) {
+ Node node = (Node) element;
+ List list = new ArrayList();
+ boolean textContentOnly = true;
+
+ // Don't want to see any attributes for the input element
+ if (!(element instanceof Element && (element == getInput()))) {
+ NamedNodeMap map = node.getAttributes();
+ if (map != null) {
+ int length = map.getLength();
+ for (int i = 0; i < length; i++) {
+ list.add(map.item(i));
+ textContentOnly = false;
+ }
+ }
+ }
+
+ Node prevIncludedNode = null;
+ for (Node childNode = node.getFirstChild(); childNode != null; childNode = childNode.getNextSibling()) {
+ int childNodeType = childNode.getNodeType();
+ boolean includeNode = true;
+
+ if (includeNode && hasStyleFlag(HIDE_WHITE_SPACE_TEXT_NODES)) {
+ if (isIgnorableText(childNode)) {
+ // filter out the ignorable text node
+ includeNode = false;
+ }
+ }
+
+ if (includeNode && hasStyleFlag(COMBINE_ADJACENT_TEXT_AND_ENTITY_REFERENCES)) {
+ if (isTextOrEntityReferenceNode(childNode) && prevIncludedNode != null && isTextOrEntityReferenceNode(prevIncludedNode)) {
+ // we only show the first of a list of adjacent text or entity reference node in the tree
+ // so we filter out this subsequent one
+ includeNode = false;
+ }
+ }
+
+ if (hasStyleFlag(HIDE_ELEMENT_CHILD_TEXT_NODES)) {
+ if (childNodeType != Node.TEXT_NODE && childNodeType != Node.ENTITY_REFERENCE_NODE) {
+ textContentOnly = false;
+ }
+ }
+
+ if (includeNode) {
+ list.add(childNode);
+ prevIncludedNode = childNode;
+ }
+ }
+
+ if (hasStyleFlag(HIDE_ELEMENT_CHILD_TEXT_NODES) && textContentOnly) {
+ result = new Object[0];
+ }
+ else {
+ result = list.toArray();
+ }
+ }
+ return result;
+ }
+
+ }
+
+ class MyXMLTreeExtension extends XMLTreeExtension {
+
+ public MyXMLTreeExtension(Tree tree) {
+ super(tree);
+ this.treeContentHelper = new MyTreeContentHelper();
+ this.columnPosition = 200;
+// this.setRefreshAll(true);
+ }
+
+
+ // Do not wish to display any of the helper text
+ public String getElementValueHelper(Element element) {
+ return EMPTY_STRING;
+ }
+
+
+ }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SelectFromCatalogDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SelectFromCatalogDialog.java
new file mode 100644
index 0000000..2baa780
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SelectFromCatalogDialog.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.common.properties.sections.appinfo;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.catalog.CatalogSet;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogEntriesView;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogEntryDetailsView;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogMessages;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogTreeViewer;
+
+public class SelectFromCatalogDialog extends Dialog
+{
+
+ private ICatalog workingUserCatalog;
+ private ICatalog userCatalog;
+ private ICatalog defaultCatalog;
+ private XMLCatalogEntriesView catalogEntriesView;
+ private ICatalog systemCatalog;
+
+ private String currentSelectionLocation;
+ private String currentSelectionNamespace;
+
+ public SelectFromCatalogDialog(Shell parentShell)
+ {
+ super(parentShell);
+
+ defaultCatalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
+ INextCatalog[] nextCatalogs = defaultCatalog.getNextCatalogs();
+ for (int i = 0; i < nextCatalogs.length; i++)
+ {
+ INextCatalog catalog = nextCatalogs[i];
+ ICatalog referencedCatalog = catalog.getReferencedCatalog();
+ if (referencedCatalog != null)
+ {
+ if (XMLCorePlugin.SYSTEM_CATALOG_ID.equals(referencedCatalog.getId()))
+ {
+ systemCatalog = referencedCatalog;
+ }
+ else if (XMLCorePlugin.USER_CATALOG_ID.equals(referencedCatalog.getId()))
+ {
+ userCatalog = referencedCatalog;
+ }
+ }
+ }
+ }
+
+ protected Control createDialogArea(Composite parent)
+ {
+ // we create a working copy of the 'User Settings' for the Catalog
+ // that we can modify
+ CatalogSet tempCatalogSet = new CatalogSet();
+ workingUserCatalog = tempCatalogSet.lookupOrCreateCatalog("working", ""); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // TODO: add entries from the nested catalogs as well
+ workingUserCatalog.addEntriesFromCatalog(userCatalog);
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setLayout(new GridLayout());
+ GridData gridData = new GridData(GridData.FILL_BOTH);
+ gridData.heightHint = 500;
+ composite.setLayoutData(gridData);
+ createCatalogEntriesView(composite);
+ createCatalogDetailsView(composite);
+
+ return composite;
+ }
+
+ protected void createCatalogEntriesView(Composite parent)
+ {
+ Group group = new Group(parent, SWT.NONE);
+ group.setLayout(new GridLayout());
+ GridData gridData = new GridData(GridData.FILL_BOTH);
+ gridData.widthHint = 370;
+ group.setLayoutData(gridData);
+ group.setText(XMLCatalogMessages.UI_LABEL_USER_ENTRIES);
+ group.setToolTipText(XMLCatalogMessages.UI_LABEL_USER_ENTRIES_TOOL_TIP);
+
+ /*
+ * create a subclass of XMLCatalogEntriesView which suppresses - the
+ * creation of 'Add', 'Edit', 'Delete' buttons - any method involving the
+ * above buttons
+ */
+ catalogEntriesView = new XMLCatalogEntriesView(group, workingUserCatalog, systemCatalog)
+ {
+ protected void createButtons(Composite parent)
+ {
+ }
+
+ protected void updateWidgetEnabledState()
+ {
+ }
+
+ };
+
+ // Only XML Schema entry is selectable
+ catalogEntriesView.setLayoutData(gridData);
+ XMLCatalogTreeViewer catalogTreeViewer = ((XMLCatalogTreeViewer) catalogEntriesView.getViewer());
+ catalogTreeViewer.resetFilters();
+
+ catalogTreeViewer.addFilter(new XMLCatalogTableViewerFilter(new String[] { ".xsd" }));
+ }
+
+ // Bug in the filter of the XML plugin, have to give a correct version here
+ // TODO: Waiting for the fix to be commited to XML plugin and
+ // be used by constellation
+ private class XMLCatalogTableViewerFilter extends ViewerFilter
+ {
+ private static final String W3_XMLSCHEMA_NAMESPACE = "http://www.w3.org/2001/";
+ protected String[] extensions;
+
+ public XMLCatalogTableViewerFilter(String[] extensions1)
+ {
+ this.extensions = extensions1;
+ }
+
+ public boolean isFilterProperty(Object element, Object property)
+ {
+ return false;
+ }
+
+ public boolean select(Viewer viewer, Object parent, Object element)
+ {
+ boolean result = false;
+ if (element instanceof ICatalogEntry)
+ {
+ ICatalogEntry catalogEntry = (ICatalogEntry) element;
+ for (int i = 0; i < extensions.length; i++)
+ {
+ // if the extension is correct and the namespace indicates
+ // that this entry is not the W3 XML Schema
+ if (catalogEntry.getURI().endsWith(extensions[i]) && !catalogEntry.getKey().startsWith(W3_XMLSCHEMA_NAMESPACE))
+ {
+ result = true;
+ break;
+ }
+ }
+ }
+ else if (element.equals(XMLCatalogTreeViewer.PLUGIN_SPECIFIED_ENTRIES_OBJECT) || element.equals(XMLCatalogTreeViewer.USER_SPECIFIED_ENTRIES_OBJECT))
+ {
+ return true;
+ }
+ return result;
+ }
+ }
+
+ protected void createCatalogDetailsView(Composite parent)
+ {
+ Group detailsGroup = new Group(parent, SWT.NONE);
+ detailsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ detailsGroup.setLayout(new GridLayout());
+ detailsGroup.setText(XMLCatalogMessages.UI_LABEL_DETAILS);
+ final XMLCatalogEntryDetailsView detailsView = new XMLCatalogEntryDetailsView(detailsGroup);
+ ISelectionChangedListener listener = new ISelectionChangedListener()
+ {
+ public void selectionChanged(SelectionChangedEvent event)
+ {
+ ISelection selection = event.getSelection();
+ Object selectedObject = (selection instanceof IStructuredSelection) ? ((IStructuredSelection) selection).getFirstElement() : null;
+ if (selectedObject instanceof ICatalogEntry)
+ {
+ ICatalogEntry entry = (ICatalogEntry) selectedObject;
+ detailsView.setCatalogElement(entry);
+ currentSelectionLocation = entry.getURI();
+ currentSelectionNamespace = entry.getKey();
+ }
+ else
+ {
+ detailsView.setCatalogElement((ICatalogEntry) null);
+ currentSelectionLocation = "";
+ currentSelectionNamespace = "";
+ }
+ }
+ };
+ catalogEntriesView.getViewer().addSelectionChangedListener(listener);
+ }
+
+ public String getCurrentSelectionLocation()
+ {
+ return currentSelectionLocation;
+ }
+
+ public String getCurrentSelectionNamespace()
+ {
+ return currentSelectionNamespace;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SpecificationForAppinfoSchema.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SpecificationForAppinfoSchema.java
new file mode 100644
index 0000000..65d560d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SpecificationForAppinfoSchema.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2006 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.common.properties.sections.appinfo;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+
+public class SpecificationForAppinfoSchema
+{
+ private String description;
+ private String displayName;
+ private String namespaceURI;
+ private String location;
+ private ILabelProvider labelProvider;
+
+ public SpecificationForAppinfoSchema()
+ {
+ super();
+ }
+
+ /**
+ * @return Returns the description.
+ */
+ public String getDescription()
+ {
+ return description;
+ }
+
+ /**
+ * @param description
+ * The description to set.
+ */
+ public void setDescription(String description)
+ {
+ this.description = description;
+ }
+
+ /**
+ * @return Returns the displayName.
+ */
+ public String getDisplayName()
+ {
+ return displayName;
+ }
+
+ /**
+ * @param name
+ * The displayName to set.
+ */
+ public void setDisplayName(String displayName)
+ {
+ this.displayName = displayName;
+ }
+
+ /**
+ * @return Returns the namespaceURI.
+ */
+ public String getNamespaceURI()
+ {
+ return namespaceURI;
+ }
+
+ /**
+ * @param namespaceURI
+ * The namespaceURI to set.
+ */
+ public void setNamespaceURI(String namespaceURI)
+ {
+ this.namespaceURI = namespaceURI;
+ }
+
+ /**
+ * @return Returns the location of the xsd file.
+ */
+ public String getLocation()
+ {
+ return location;
+ }
+
+ /**
+ * @param location
+ * The location to be set
+ */
+ public void setLocation(String location)
+ {
+ this.location = location;
+ }
+
+ public ILabelProvider getLabelProvider()
+ {
+ return labelProvider;
+ }
+
+ public void setLabelProvider(ILabelProvider labelProvider)
+ {
+ this.labelProvider = labelProvider;
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/util/XSDCommonUIUtils.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/util/XSDCommonUIUtils.java
new file mode 100644
index 0000000..088923d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/util/XSDCommonUIUtils.java
@@ -0,0 +1,470 @@
+package org.eclipse.wst.xsd.ui.common.util;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class XSDCommonUIUtils
+{
+ public XSDCommonUIUtils()
+ {
+ super();
+ }
+
+ public static XSDAnnotation getInputXSDAnnotation(XSDConcreteComponent input, boolean createIfNotExist)
+ {
+ XSDAnnotation xsdAnnotation = null;
+ XSDFactory factory = XSDFactory.eINSTANCE;
+ if (input instanceof XSDAttributeDeclaration)
+ {
+ XSDAttributeDeclaration xsdComp = (XSDAttributeDeclaration) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition xsdComp = (XSDAttributeGroupDefinition) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDElementDeclaration)
+ {
+ XSDElementDeclaration xsdComp = (XSDElementDeclaration) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDNotationDeclaration)
+ {
+ XSDNotationDeclaration xsdComp = (XSDNotationDeclaration) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDXPathDefinition)
+ {
+ XSDXPathDefinition xsdComp = (XSDXPathDefinition) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDModelGroup)
+ {
+ XSDModelGroup xsdComp = (XSDModelGroup) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDModelGroupDefinition)
+ {
+ XSDModelGroupDefinition xsdComp = (XSDModelGroupDefinition) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDIdentityConstraintDefinition)
+ {
+ XSDIdentityConstraintDefinition xsdComp = (XSDIdentityConstraintDefinition) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDWildcard)
+ {
+ XSDWildcard xsdComp = (XSDWildcard) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDSchema)
+ {
+ XSDSchema xsdComp = (XSDSchema) input;
+ List list = xsdComp.getAnnotations();
+ if (list.size() > 0)
+ {
+ xsdAnnotation = (XSDAnnotation) list.get(0);
+ }
+ else
+ {
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ if (xsdComp.getContents() != null)
+ {
+ xsdComp.getContents().add(0, xsdAnnotation);
+ }
+ }
+ }
+ return xsdAnnotation;
+ }
+ else if (input instanceof XSDFacet)
+ {
+ XSDFacet xsdComp = (XSDFacet) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDTypeDefinition)
+ {
+ XSDTypeDefinition xsdComp = (XSDTypeDefinition) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDInclude)
+ {
+ XSDInclude xsdComp = (XSDInclude) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDImport)
+ {
+ XSDImport xsdComp = (XSDImport) input;
+ xsdAnnotation = xsdComp.getAnnotation();
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ xsdAnnotation = factory.createXSDAnnotation();
+ xsdComp.setAnnotation(xsdAnnotation);
+ }
+ }
+ else if (input instanceof XSDRedefine)
+ {
+ XSDRedefine xsdComp = (XSDRedefine) input;
+ List list = xsdComp.getAnnotations();
+ if (list.size() > 0)
+ {
+ xsdAnnotation = (XSDAnnotation) list.get(0);
+ }
+ else
+ {
+ if (createIfNotExist && xsdAnnotation == null)
+ {
+ // ?
+ }
+ }
+ return xsdAnnotation;
+ }
+ else if (input instanceof XSDAnnotation)
+ {
+ xsdAnnotation = (XSDAnnotation) input;
+ }
+
+ if (createIfNotExist)
+ {
+ formatAnnotation(xsdAnnotation);
+ }
+
+ return xsdAnnotation;
+ }
+
+ private static void formatAnnotation(XSDAnnotation annotation)
+ {
+ Element element = annotation.getElement();
+ formatChild(element);
+ }
+
+ public static void formatChild(Node child)
+ {
+ if (child instanceof IDOMNode)
+ {
+ IDOMModel model = ((IDOMNode) child).getModel();
+ try
+ {
+ // tell the model that we are about to make a big model change
+ model.aboutToChangeModel();
+
+ IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
+ formatProcessor.formatNode(child);
+ }
+ finally
+ {
+ // tell the model that we are done with the big model change
+ model.changedModel();
+ }
+ }
+ }
+
+ public static String createUniqueElementName(String prefix, List elements)
+ {
+ ArrayList usedNames = new ArrayList();
+ for (Iterator i = elements.iterator(); i.hasNext();)
+ {
+ usedNames.add(getDisplayName((XSDNamedComponent) i.next()));
+ }
+
+ int i = 1;
+ String testName = prefix + i++;
+ while (usedNames.contains(testName))
+ {
+ testName = prefix + i++;
+ }
+ return testName;
+ }
+
+ public static String getDisplayName(XSDNamedComponent component)
+ {
+ if (component instanceof XSDTypeDefinition)
+ return getDisplayNameFromXSDType((XSDTypeDefinition) component);
+
+ if (component instanceof XSDFeature)
+ {
+ XSDFeature feature = (XSDFeature) component;
+ if (feature.getName() != null)
+ return feature.getName();
+ else if (feature.getResolvedFeature() != null && feature.getResolvedFeature().getName() != null)
+ return feature.getResolvedFeature().getName();
+ }
+
+ return component.getName();
+
+ }
+
+ public static String getDisplayNameFromXSDType(XSDTypeDefinition type)
+ {
+ return getDisplayNameFromXSDType(type, true);
+ }
+
+ public static String getDisplayNameFromXSDType(XSDTypeDefinition type, boolean returnPrimitiveParents)
+ {
+ if (type == null)
+ return null;
+
+ if (type.getName() == null || type.getName().length() == 0)
+ {
+ if (returnPrimitiveParents && isPrimitiveType(type))
+ {
+ return getDisplayNameFromXSDType(type.getBaseType());
+ }
+
+ EObject container = type.eContainer();
+
+ while (container != null)
+ {
+ if (container instanceof XSDNamedComponent && ((XSDNamedComponent) container).getName() != null)
+ {
+ return ((XSDNamedComponent) container).getName();
+ }
+ container = container.eContainer();
+ }
+ return null;
+ }
+ else
+ return type.getName();
+ }
+
+ public static boolean isPrimitiveType(XSDTypeDefinition type)
+ {
+ if (type instanceof XSDComplexTypeDefinition)
+ return false;
+
+ XSDTypeDefinition baseType = null;
+ if (type != null)
+ {
+ baseType = type.getBaseType();
+ XSDTypeDefinition origType = baseType; // KC: although invalid, we need to
+ // prevent cycles and to avoid an
+ // infinite loop
+ while (baseType != null && !XSDUtil.isAnySimpleType(baseType) && !XSDUtil.isAnyType(baseType) && origType != baseType)
+ {
+ type = baseType;
+ baseType = type.getBaseType();
+ }
+ baseType = type;
+ }
+ else
+ {
+ return false;
+ }
+
+ return (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(baseType.getTargetNamespace()));
+ }
+
+ public static XSDSimpleTypeDefinition getAnonymousSimpleType(XSDFeature input, XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+ {
+ XSDSimpleTypeDefinition anonymousSimpleType = null;
+ XSDTypeDefinition localType = null;
+
+ if (input instanceof XSDElementDeclaration)
+ {
+ localType = ((XSDElementDeclaration) input).getAnonymousTypeDefinition();
+ }
+ else if (input instanceof XSDAttributeDeclaration)
+ {
+ localType = ((XSDAttributeDeclaration) input).getAnonymousTypeDefinition();
+ }
+
+ if (localType instanceof XSDSimpleTypeDefinition)
+ {
+ anonymousSimpleType = (XSDSimpleTypeDefinition) localType;
+ }
+ return anonymousSimpleType;
+ }
+
+ public static List getChildElements(XSDModelGroup group)
+ {
+ List children = new ArrayList();
+ for (Iterator i = group.getContents().iterator(); i.hasNext();)
+ {
+ XSDParticle next = (XSDParticle) i.next();
+ if (next.getContent() instanceof XSDFeature)
+ {
+ children.add(next.getContent());
+ }
+ else if (next.getTerm() instanceof XSDModelGroup)
+ {
+ children.addAll(getChildElements((XSDModelGroup) next.getTerm()));
+ }
+ }
+ return children;
+ }
+
+ public static List getAllAttributes(XSDComplexTypeDefinition xsdComplexType)
+ {
+ List attributes = getChildElements(xsdComplexType);
+ attributes.addAll(getChildAttributes(xsdComplexType));
+
+ return attributes;
+ }
+
+ public static List getInheritedAttributes(XSDComplexTypeDefinition ct)
+ {
+ List attrs = new ArrayList();
+ XSDTypeDefinition parent = ct.getBaseTypeDefinition();
+ if (parent != null && parent instanceof XSDComplexTypeDefinition && ct.isSetDerivationMethod())
+ {
+ attrs.addAll(getAllAttributes((XSDComplexTypeDefinition) parent));
+ attrs.addAll(getInheritedAttributes((XSDComplexTypeDefinition) parent));
+ }
+
+ return attrs;
+ }
+
+ public static List getChildElements(XSDComplexTypeDefinition ct)
+ {
+ return getChildElements(getModelGroup(ct));
+ }
+
+ public static XSDModelGroup getModelGroup(XSDComplexTypeDefinition cType)
+ {
+ XSDParticle particle = cType.getComplexType();
+
+ if (particle == null || particle.eContainer() != cType)
+ return null;
+
+ Object particleContent = particle.getContent();
+ XSDModelGroup group = null;
+
+ if (particleContent instanceof XSDModelGroupDefinition)
+ group = ((XSDModelGroupDefinition) particleContent).getResolvedModelGroupDefinition().getModelGroup();
+ else if (particleContent instanceof XSDModelGroup)
+ group = (XSDModelGroup) particleContent;
+
+ if (group == null)
+ return null;
+
+ if (group.getContents().isEmpty() || group.eResource() != cType.eResource())
+ {
+ XSDComplexTypeContent content = cType.getContent();
+ if (content instanceof XSDParticle)
+ group = (XSDModelGroup) ((XSDParticle) content).getContent();
+ }
+
+ return group;
+ }
+
+ public static List getChildAttributes(XSDComplexTypeDefinition ct)
+ {
+ EList attrContents = ct.getAttributeContents();
+ List attrs = new ArrayList();
+ for (int i = 0; i < attrContents.size(); i++)
+ {
+ Object next = attrContents.get(i);
+
+ if (next instanceof XSDAttributeUse)
+ {
+ attrs.add(((XSDAttributeUse) next).getContent().getResolvedAttributeDeclaration());
+ }
+ else if (next instanceof XSDAttributeGroupDefinition)
+ {
+ XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) next;
+ }
+ }
+ return attrs;
+ }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java
index 6216de7..dd5ffc4 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java
@@ -15,7 +15,7 @@
import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.refactor.structure.MakeAnonymousTypeGlobalCommand;
import org.eclipse.wst.xsd.ui.internal.refactor.structure.MakeTypeGlobalProcessor;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java
index fe8c721..0874e57 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java
@@ -17,7 +17,7 @@
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java
index 7cbc3fe..e433463 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java
@@ -18,7 +18,7 @@
import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
import org.eclipse.ui.actions.GlobalBuildAction;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.refactor.RefactoringComponent;
import org.eclipse.wst.xsd.ui.internal.refactor.XMLRefactoringComponent;
import org.eclipse.wst.xsd.ui.internal.refactor.rename.RenameComponentProcessor;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java
index 722e5e9..5cda216 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java
@@ -16,7 +16,7 @@
import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.refactor.rename.RenameResourceProcessor;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RenameRefactoringWizard;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java
index e7dac64..b6ac481 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java
@@ -17,7 +17,7 @@
import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
import org.eclipse.ui.actions.GlobalBuildAction;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.refactor.rename.RenameTargetNamespaceProcessor;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RenameRefactoringWizard;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java
index 4c8e451..d46aa02 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java
@@ -1,36 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.refactor.actions;
-import java.io.IOException;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xsd.editor.ISelectionMapper;
+import org.eclipse.wst.xsd.ui.internal.refactor.actions.XSDRefactorActionGroup;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactorActionGroup;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactorGroupActionDelegate;
import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactorGroupSubMenu;
-import org.eclipse.xsd.XSDFactory;
import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDResourceImpl;
public class XSDRefactorGroupActionDelegate extends RefactorGroupActionDelegate {
@@ -52,45 +32,19 @@
return;
IEditorPart editor = site.getPage().getActiveEditor();
- if (editor != null) {
- IEditorInput editorInput = editor.getEditorInput();
- if(editorInput instanceof IFileEditorInput){
- IFileEditorInput fileInput = (IFileEditorInput)editorInput;
- XSDSchema schema = createXMLSchema(fileInput.getFile(), resourceSet);
- RefactorActionGroup refactorMenuGroup = new XSDRefactorActionGroup(fSelection, schema);
+ if (editor != null) {
+ XSDSchema schema = (XSDSchema)editor.getAdapter(XSDSchema.class);
+ ISelectionMapper mapper = (ISelectionMapper)editor.getAdapter(ISelectionMapper.class);
+ if (schema != null)
+ {
+ ISelection selection = mapper != null ? mapper.mapSelection(fSelection) : fSelection;
+ RefactorActionGroup refactorMenuGroup = new XSDRefactorActionGroup(selection, schema);
RefactorGroupSubMenu subMenu = new RefactorGroupSubMenu(refactorMenuGroup);
subMenu.fill(menu, -1);
- }
-
+ }
}
}
}
-
- public static XSDSchema createXMLSchema(IFile file, ResourceSet set) {
-
- URI uri = URI.createFileURI(file.getLocation().toString());
- XSDSchema schema = XSDFactory.eINSTANCE.createXSDSchema();
- // we need this model to be able to get locations
- try {
- IStructuredModel structuredModel = StructuredModelManager.getModelManager().getModelForEdit(file);
- IDOMModel domModel = (IDOMModel) structuredModel;
- Resource xsdResource = new XSDResourceImpl();
- xsdResource.setURI(uri);
- schema = XSDFactory.eINSTANCE.createXSDSchema();
- xsdResource.getContents().add(schema);
- schema.setElement(domModel.getDocument().getDocumentElement());
- if(set != null){
- set.getResources().add(xsdResource);
- }
- } catch (IOException e) {
- // do nothing
- } catch (CoreException e) {
- // do nothing
- }
- return schema;
- }
-
-
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java
index e1b69ef..ecb772f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java
@@ -54,7 +54,7 @@
try {
IContentDescription description = aFile.getContentDescription();
if ( description == null )
- return false;
+ return false;
IContentType contentType = description.getContentType();
if(contentType != null){
if(XSD_CONTENT_TYPE_ID.equals(contentType.getId()) ||
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
deleted file mode 100644
index ce0476d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.search.actions;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.core.search.scope.SearchScope;
-import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
-import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
-import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public class FindReferencesAction extends FindAction{
- public FindReferencesAction(IEditorPart editor)
- {
- super(editor);
- }
-
- public void setActionDefinitionId(String string)
- {
-
- }
-
- /**
- * To be used by subclass in its run()
- * Returns the file where the selection of a component (from the user) occurs
- * ie. Returns the file that the user is currently working on.
- * @return The IFile representation of the current working file.
- */
- protected IFile getCurrentFile(){
- if (editor != null){
- IEditorInput input = editor.getEditorInput();
- if (input instanceof IFileEditorInput){
- IFileEditorInput fileEditorInput = (IFileEditorInput)input;
- return fileEditorInput.getFile();
- }
- }
- return null;
- }
-
- /**
- * To be used by subclass in its run()
- * Works with the Editor to return the selected XSD component which the user
- * wants to do the search on.
- * @return
- * The XSDNamedComponent that the user points to (using cursor).
- */
- protected XSDNamedComponent getXSDNamedComponent(){
- if (editor != null){
- ISelectionProvider provider =
- (ISelectionProvider) editor.getAdapter(ISelectionProvider.class);
- if (provider != null)
- {
- ISelection selection = provider.getSelection();
- if (selection != null && selection instanceof IStructuredSelection)
- {
- IStructuredSelection s = (IStructuredSelection) selection;
- Object o = s.getFirstElement();
- if (o != null && o instanceof XSDNamedComponent)
- {
- return (XSDNamedComponent) o;
- }
- }
- }
- }
- //The expected component we get from the editor does not meet
- // our expectation
- return null;
- }
-
- /**
- * To be used by subclass in its run()..
- * Determines the metaName of the XSD component given to this method.
- * @param component The component of which we want to determine the name
- * @return
- */
- protected QualifiedName determineMetaName(XSDNamedComponent component){
- QualifiedName metaName = null;
- if (component instanceof XSDComplexTypeDefinition)
- {
- metaName = IXSDSearchConstants.COMPLEX_TYPE_META_NAME;
- }
- else if (component instanceof XSDSimpleTypeDefinition)
- {
- metaName = IXSDSearchConstants.SIMPLE_TYPE_META_NAME;
- }
- else if (component instanceof XSDElementDeclaration)
- {
- metaName = IXSDSearchConstants.ELEMENT_META_NAME;
- }
- return metaName;
- }
-
- public void run()
- {
- String pattern = "";
-
- XSDNamedComponent component = getXSDNamedComponent();
- IFile file = getCurrentFile();
- if ( file != null && component != null){
- QualifiedName metaName = determineMetaName(component);
-
- QualifiedName elementQName =
- new QualifiedName(component.getTargetNamespace(), component.getName());
-
- SearchScope scope = new WorkspaceSearchScope();
- String scopeDescription = "Workspace";
- XSDSearchQuery searchQuery =
- new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
- NewSearchUI.activateSearchResultView();
- NewSearchUI.runQueryInBackground(searchQuery);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
deleted file mode 100644
index 34371e7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.search.actions;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.core.search.scope.ProjectSearchScope;
-import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
-import org.eclipse.xsd.XSDNamedComponent;
-
-public class FindReferencesInProjectAction extends FindReferencesAction {
-
- public FindReferencesInProjectAction(IEditorPart editor) {
- super(editor);
- }
-
- public void run()
- {
- String pattern = "";
-
- XSDNamedComponent component = getXSDNamedComponent();
- IFile file = getCurrentFile();
-
- if ( file != null && component != null){
- QualifiedName metaName = determineMetaName(component);
-
- QualifiedName elementQName =
- new QualifiedName(component.getTargetNamespace(), component.getName());
-
- IPath fullPath = (IPath) file.getFullPath();
- ProjectSearchScope scope =
- new ProjectSearchScope( fullPath);
-
- String scopeDescription = "Workspace";
- XSDSearchQuery searchQuery =
- new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
- NewSearchUI.activateSearchResultView();
- NewSearchUI.runQueryInBackground(searchQuery);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
index 187d894..c4d6664 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
@@ -10,24 +10,21 @@
*
*******************************************************************************/
package org.eclipse.wst.xsd.ui.internal.search.actions;
-
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.ui.IEditorPart;
-
public class FindAction extends Action implements ISelectionChangedListener
{
IEditorPart editor;
-
+
protected FindAction(IEditorPart editor)
{
this.editor = editor;
}
-
+
public void selectionChanged(SelectionChangedEvent event)
{
// TODO Auto-generated method stub
-
}
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
new file mode 100644
index 0000000..095ccd5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 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.search.actions;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
+import org.eclipse.wst.xsd.editor.ISelectionMapper;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+public class FindReferencesAction extends FindAction
+{
+ public FindReferencesAction(IEditorPart editor)
+ {
+ super(editor);
+ }
+
+ public void setActionDefinitionId(String string)
+ {
+ }
+
+ /**
+ * To be used by subclass in its run() Returns the file where the selection of
+ * a component (from the user) occurs ie. Returns the file that the user is
+ * currently working on.
+ *
+ * @return The IFile representation of the current working file.
+ */
+ protected IFile getCurrentFile()
+ {
+ if (editor != null)
+ {
+ IEditorInput input = editor.getEditorInput();
+ if (input instanceof IFileEditorInput)
+ {
+ IFileEditorInput fileEditorInput = (IFileEditorInput) input;
+ return fileEditorInput.getFile();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * To be used by subclass in its run().. Determines the metaName of the XSD
+ * component given to this method.
+ *
+ * @param component
+ * The component of which we want to determine the name
+ * @return
+ */
+ protected QualifiedName determineMetaName(XSDNamedComponent component)
+ {
+ QualifiedName metaName = null;
+ if (component instanceof XSDComplexTypeDefinition)
+ {
+ metaName = IXSDSearchConstants.COMPLEX_TYPE_META_NAME;
+ }
+ else if (component instanceof XSDSimpleTypeDefinition)
+ {
+ metaName = IXSDSearchConstants.SIMPLE_TYPE_META_NAME;
+ }
+ else if (component instanceof XSDElementDeclaration)
+ {
+ metaName = IXSDSearchConstants.ELEMENT_META_NAME;
+ }
+ return metaName;
+ }
+
+ protected XSDNamedComponent getXSDNamedComponent()
+ {
+ if (editor != null)
+ {
+ ISelectionProvider provider = (ISelectionProvider) editor.getAdapter(ISelectionProvider.class);
+ ISelectionMapper mapper = (ISelectionMapper) editor.getAdapter(ISelectionMapper.class);
+ if (provider != null)
+ {
+ ISelection selection = provider.getSelection();
+ if (mapper != null)
+ {
+ selection = mapper.mapSelection(selection);
+ }
+ if (selection != null && selection instanceof IStructuredSelection)
+ {
+ IStructuredSelection s = (IStructuredSelection) selection;
+ Object o = s.getFirstElement();
+ if (o != null && o instanceof XSDNamedComponent)
+ {
+ return (XSDNamedComponent) o;
+ }
+ }
+ }
+ }
+ // The expected component we get from the editor does not meet
+ // our expectation
+ return null;
+ }
+
+ public void run()
+ {
+ String pattern = "";
+ XSDNamedComponent component = getXSDNamedComponent();
+ IFile file = getCurrentFile();
+ if (file != null && component != null)
+ {
+ QualifiedName metaName = determineMetaName(component);
+ QualifiedName elementQName = new QualifiedName(component.getTargetNamespace(), component.getName());
+ SearchScope scope = new WorkspaceSearchScope();
+ String scopeDescription = "Workspace";
+ XSDSearchQuery searchQuery = new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
+ NewSearchUI.activateSearchResultView();
+ NewSearchUI.runQueryInBackground(searchQuery);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
new file mode 100644
index 0000000..cab3b94
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 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.search.actions;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.ProjectSearchScope;
+import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
+import org.eclipse.xsd.XSDNamedComponent;
+public class FindReferencesInProjectAction extends FindReferencesAction
+{
+ public FindReferencesInProjectAction(IEditorPart editor)
+ {
+ super(editor);
+ }
+
+ public void run()
+ {
+ String pattern = "";
+ XSDNamedComponent component = getXSDNamedComponent();
+ IFile file = getCurrentFile();
+ if (file != null && component != null)
+ {
+ QualifiedName metaName = determineMetaName(component);
+ QualifiedName elementQName = new QualifiedName(component.getTargetNamespace(), component.getName());
+ IPath fullPath = (IPath) file.getFullPath();
+ ProjectSearchScope scope = new ProjectSearchScope(fullPath);
+ String scopeDescription = "Workspace";
+ XSDSearchQuery searchQuery = new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
+ NewSearchUI.activateSearchResultView();
+ NewSearchUI.runQueryInBackground(searchQuery);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
index 67b0b53..bfe6947 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
@@ -22,7 +22,7 @@
import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
import org.eclipse.wst.common.core.search.pattern.QualifiedName;
import org.eclipse.wst.common.core.search.scope.WorkingSetSearchScope;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
import org.eclipse.xsd.XSDNamedComponent;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
similarity index 71%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
index e57b1e5..91c55c6 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
@@ -17,14 +17,6 @@
public class XSDSearchDeclarationsGroupActionDelegate extends BaseGroupActionDelegate
{
protected void fillMenu(Menu menu) {
- // TODO... fill in the content
- /*
- if (fSelection == null) {
- return;
- }
- XSDSearchActionGroup refactorMenuGroup = new XSDSearchActionGroup(null);
- XSDSearchGroupSubMenu subMenu = new XSDSearchGroupSubMenu(refactorMenuGroup);
- subMenu.fill(menu, -1);
- */
- }
+
+ }
}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java b/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java
index a489005..817f390 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java
@@ -22,7 +22,7 @@
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage;
import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/BaseHyperlinkDetector.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/BaseHyperlinkDetector.java
deleted file mode 100644
index 4a97205..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/BaseHyperlinkDetector.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- * Base class for hyperlinks detectors. Provides a framework and common code for
- * hyperlink detectors. TODO: Can we pull this class further up the inheritance
- * hierarchy?
- */
-public abstract class BaseHyperlinkDetector implements IHyperlinkDetector
-{
- /*
- * (non-Javadoc)
- */
- public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks)
- {
- if (region == null || textViewer == null)
- {
- return null;
- }
-
- List hyperlinks = new ArrayList(0);
- IDocument document = textViewer.getDocument();
- int offset = region.getOffset();
-
- IDOMNode node = getCurrentNode(document, offset);
-
- // This call allows us to determine whether an attribute is linkable,
- // without incurring the cost of asking for the target component.
-
- if (!isLinkable(node))
- {
- return null;
- }
-
- IRegion hyperlinkRegion = getHyperlinkRegion(node);
-
- // createHyperlink is a template method. Derived classes, should override.
-
- IHyperlink hyperlink = createHyperlink(document, node, hyperlinkRegion);
-
- if (hyperlink != null)
- {
- hyperlinks.add(hyperlink);
- }
-
- if (hyperlinks.size() == 0)
- {
- return null;
- }
-
- return (IHyperlink[]) hyperlinks.toArray(new IHyperlink[0]);
- }
-
- /**
- * Determines whether a node is "linkable" that is, the component it refers to
- * can be the target of a "go to definition" navigation.
- *
- * @param node the node to test, must not be null;
- * @return true if the node is linkable, false otherwise.
- */
- private boolean isLinkable(IDOMNode node)
- {
- if (node == null)
- {
- return false;
- }
-
- short nodeType = node.getNodeType();
-
- boolean isLinkable = false;
-
- if (nodeType == Node.ATTRIBUTE_NODE)
- {
- IDOMAttr attr = (IDOMAttr) node;
- String name = attr.getName();
-
- // isLinkableAttribute is a template method. Derived classes should
- // override.
-
- isLinkable = isLinkableAttribute(name);
- }
-
- return isLinkable;
- }
-
- /**
- * Determines whether an attribute is "linkable" that is, the component it
- * points to can be the target of a "go to definition" navigation. Derived
- * classes should override.
- *
- * @param name the attribute name. Must not be null.
- * @return true if the attribute is linkable, false otherwise.
- */
- protected abstract boolean isLinkableAttribute(String name);
-
- /**
- * Creates a hyperlink based on the selected node. Derived classes should
- * override.
- *
- * @param document the source document.
- * @param node the node under the cursor.
- * @param region the text region to use to create the hyperlink.
- * @return a new IHyperlink for the node or null if one cannot be created.
- */
- protected abstract IHyperlink createHyperlink(IDocument document, IDOMNode node, IRegion region);
-
- /**
- * Locates the attribute node under the cursor.
- *
- * @param offset the cursor offset.
- * @param parent the parent node
- * @return an IDOMNode representing the attribute if one is found at the
- * offset or null otherwise.
- */
- protected IDOMNode getAttributeNode(int offset, IDOMNode parent)
- {
- IDOMAttr attrNode = null;
- NamedNodeMap map = parent.getAttributes();
-
- for (int index = 0; index < map.getLength(); index++)
- {
- attrNode = (IDOMAttr) map.item(index);
- boolean located = attrNode.contains(offset);
- if (located)
- {
- if (attrNode.hasNameOnly())
- {
- attrNode = null;
- }
- break;
- }
- }
-
- if (attrNode == null)
- {
- return parent;
- }
- return attrNode;
- }
-
- /**
- * Returns the node the cursor is currently on in the document or null if no
- * node is selected
- *
- * @param offset the current cursor offset.
- * @return IDOMNode either element, doctype, text, attribute or null
- */
- private IDOMNode getCurrentNode(IDocument document, int offset)
- {
- IndexedRegion inode = null;
- IStructuredModel sModel = null;
-
- try
- {
- sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document);
- inode = sModel.getIndexedRegion(offset);
- if (inode == null)
- inode = sModel.getIndexedRegion(offset - 1);
- }
- finally
- {
- if (sModel != null)
- sModel.releaseFromRead();
- }
-
- if (inode instanceof IDOMNode)
- {
- IDOMNode node = (IDOMNode) inode;
-
- if (node.hasAttributes())
- {
- node = getAttributeNode(offset, node);
- }
- return node;
- }
-
- return null;
- }
-
- /**
- * Get the text region corresponding to an IDOMNode.
- *
- * @param node the node for which we want the text region. Must not be null.
- * @return an IRegion for the node, or null if the node is not recognized.
- */
- protected IRegion getHyperlinkRegion(IDOMNode node)
- {
- if (node == null)
- {
- return null;
- }
-
- IRegion hyperRegion = null;
- short nodeType = node.getNodeType();
-
- switch (nodeType)
- {
- case Node.ELEMENT_NODE :
- {
- hyperRegion = new Region(node.getStartOffset(), node.getEndOffset() - node.getStartOffset());
- }
- break;
- case Node.ATTRIBUTE_NODE :
- {
- IDOMAttr att = (IDOMAttr) node;
-
- int regOffset = att.getValueRegionStartOffset();
-
- // ISSUE: We are using a deprecated method here. Is there
- // a better way to get what we need?
-
- ITextRegion valueRegion = att.getValueRegion();
- if (valueRegion != null)
- {
- int regLength = valueRegion.getTextLength();
- String attValue = att.getValueRegionText();
-
- // Do not include quotes in attribute value region.
- if (StringUtils.isQuoted(attValue))
- {
- regOffset = ++regOffset;
- regLength = regLength - 2;
- }
- hyperRegion = new Region(regOffset, regLength);
- }
- }
- break;
- default :
- // Do nothing.
- break;
- }
-
- return hyperRegion;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/Logger.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/Logger.java
deleted file mode 100644
index 3ba5a01..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/Logger.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *
- *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.Bundle;
-
-/**
- * Small convenience class to log messages to plugin's log file and also, if
- * desired, the console. This class should only be used by classes in this
- * plugin. Other plugins should make their own copy, with appropriate ID.
- */
-public class Logger {
- private static final String PLUGIN_ID = "org.eclipse.wst.xsd.ui"; //$NON-NLS-1$
-
- public static final int ERROR = IStatus.ERROR; // 4
- public static final int ERROR_DEBUG = 200 + ERROR;
- public static final int INFO = IStatus.INFO; // 1
- public static final int INFO_DEBUG = 200 + INFO;
-
- public static final int OK = IStatus.OK; // 0
-
- public static final int OK_DEBUG = 200 + OK;
-
- private static final String TRACEFILTER_LOCATION = "/debug/tracefilter"; //$NON-NLS-1$
- public static final int WARNING = IStatus.WARNING; // 2
- public static final int WARNING_DEBUG = 200 + WARNING;
-
- /**
- * Adds message to log.
- *
- * @param level
- * severity level of the message (OK, INFO, WARNING, ERROR,
- * OK_DEBUG, INFO_DEBUG, WARNING_DEBUG, ERROR_DEBUG)
- * @param message
- * text to add to the log
- * @param exception
- * exception thrown
- */
- protected static void _log(int level, String message, Throwable exception) {
- if (level == OK_DEBUG || level == INFO_DEBUG || level == WARNING_DEBUG || level == ERROR_DEBUG) {
- if (!isDebugging())
- return;
- }
-
- int severity = IStatus.OK;
- switch (level) {
- case INFO_DEBUG :
- case INFO :
- severity = IStatus.INFO;
- break;
- case WARNING_DEBUG :
- case WARNING :
- severity = IStatus.WARNING;
- break;
- case ERROR_DEBUG :
- case ERROR :
- severity = IStatus.ERROR;
- }
- message = (message != null) ? message : "null"; //$NON-NLS-1$
- Status statusObj = new Status(severity, PLUGIN_ID, severity, message, exception);
- Bundle bundle = Platform.getBundle(PLUGIN_ID);
- if (bundle != null)
- Platform.getLog(bundle).log(statusObj);
- }
-
- /**
- * Prints message to log if category matches /debug/tracefilter option.
- *
- * @param message
- * text to print
- * @param category
- * category of the message, to be compared with
- * /debug/tracefilter
- */
- protected static void _trace(String category, String message, Throwable exception) {
- if (isTracing(category)) {
- message = (message != null) ? message : "null"; //$NON-NLS-1$
- Status statusObj = new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, exception);
- Bundle bundle = Platform.getBundle(PLUGIN_ID);
- if (bundle != null)
- Platform.getLog(bundle).log(statusObj);
- }
- }
-
- /**
- * @return true if the platform is debugging
- */
- public static boolean isDebugging() {
- return Platform.inDebugMode();
- }
-
- /**
- * Determines if currently tracing a category
- *
- * @param category
- * @return true if tracing category, false otherwise
- */
- public static boolean isTracing(String category) {
- if (!isDebugging())
- return false;
-
- String traceFilter = Platform.getDebugOption(PLUGIN_ID + TRACEFILTER_LOCATION);
- if (traceFilter != null) {
- StringTokenizer tokenizer = new StringTokenizer(traceFilter, ","); //$NON-NLS-1$
- while (tokenizer.hasMoreTokens()) {
- String cat = tokenizer.nextToken().trim();
- if (category.equals(cat)) {
- return true;
- }
- }
- }
- return false;
- }
-
- public static void log(int level, String message) {
- _log(level, message, null);
- }
-
- public static void log(int level, String message, Throwable exception) {
- _log(level, message, exception);
- }
-
- public static void logException(String message, Throwable exception) {
- _log(ERROR, message, exception);
- }
-
- public static void logException(Throwable exception) {
- _log(ERROR, exception.getMessage(), exception);
- }
-
- public static void trace(String category, String message) {
- _trace(category, message, null);
- }
-
- public static void traceException(String category, String message, Throwable exception) {
- _trace(category, message, exception);
- }
-
- public static void traceException(String category, Throwable exception) {
- _trace(category, exception.getMessage(), exception);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/StructuredTextViewerConfigurationXSD.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/StructuredTextViewerConfigurationXSD.java
deleted file mode 100644
index 1b68b13..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/StructuredTextViewerConfigurationXSD.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
-import org.eclipse.wst.xml.ui.StructuredTextViewerConfigurationXML;
-
-/**
- * Configuration for editing XSD content type
- */
-public class StructuredTextViewerConfigurationXSD extends StructuredTextViewerConfigurationXML {
- public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) {
- if (sourceViewer == null || !fPreferenceStore.getBoolean(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_HYPERLINKS_ENABLED))
- return null;
-
- List allDetectors = new ArrayList(0);
- // add XSD Hyperlink detector
- allDetectors.add(new XSDHyperlinkDetector());
-
- IHyperlinkDetector[] superDetectors = super.getHyperlinkDetectors(sourceViewer);
- for (int m = 0; m < superDetectors.length; m++) {
- IHyperlinkDetector detector = superDetectors[m];
- if (!allDetectors.contains(detector)) {
- allDetectors.add(detector);
- }
- }
- return (IHyperlinkDetector[]) allDetectors.toArray(new IHyperlinkDetector[0]);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java
deleted file mode 100644
index 50f2e5b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ResourceBundle;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.actions.RetargetAction;
-import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.ui.texteditor.ITextEditorActionConstants;
-import org.eclipse.ui.texteditor.RetargetTextEditorAction;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.sse.ui.internal.ISourceViewerActionBarContributor;
-import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants;
-import org.eclipse.wst.xsd.ui.internal.actions.ISchemaEditorActionConstants;
-import org.eclipse.wst.xsd.ui.internal.actions.ReloadDependenciesAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SourcePageActionContributor;
-
-public class XSDActionBarContributor extends MultiPageEditorActionBarContributor
-{
- protected XSDEditor xsdEditor;
- protected ITextEditor textEditor;
- protected IEditorActionBarContributor sourceViewerActionContributor = null;
-
- protected ReloadDependenciesAction reloadDependenciesAction;
-
- protected List fPartListeners= new ArrayList();
-
- protected RetargetAction retargetReloadDependenciesAction;
- private RetargetTextEditorAction renameElementAction = null;
- //private IMenuManager refactorMenu = null;
-
- /**
- * Constructor for XSDActionBarContributor.
- */
- public XSDActionBarContributor()
- {
- super();
-
- sourceViewerActionContributor = new SourcePageActionContributor();
-
- // Reload Dependencies
- reloadDependenciesAction = new ReloadDependenciesAction(XSDEditorPlugin.getXSDString("_UI_MENU_RELOAD_DEPENDENCIES"));
- retargetReloadDependenciesAction = new RetargetAction(ISchemaEditorActionConstants.RETARGET_RELOAD_DEPENDENCIES_ACTION_ID, XSDEditorPlugin.getXSDString("_UI_MENU_RELOAD_DEPENDENCIES"));
- retargetReloadDependenciesAction.setToolTipText(XSDEditorPlugin.getXSDString("_UI_MENU_RELOAD_DEPENDENCIES_TOOLTIP"));
- retargetReloadDependenciesAction.setImageDescriptor(
- ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/reloadgrammar.gif"));
- fPartListeners.add(retargetReloadDependenciesAction);
-
- ResourceBundle bundle = Platform.getResourceBundle(XSDEditorPlugin.getPlugin().getBundle());
- renameElementAction = new RetargetTextEditorAction(bundle, ISchemaEditorActionConstants.RETARGET_RENAME_ELEMENT_ACTION_ID + StructuredTextEditorActionConstants.DOT);
- renameElementAction.setActionDefinitionId("org.eclipse.wst.xsd.ui.refactor.rename.element"); // TODO: add to contstants command id
-
- // the refactor menu, add the menu itself to add all refactor actions
- //refactorMenu = new MenuManager(XSDEditorPlugin.getXSDString("refactoring.menu.label"), RefactorActionGroup.MENU_ID); //TODO: externalize string
- //refactorMenu.add(this.renameElementAction);
- }
-
- protected void updateActions()
- {
- if (xsdEditor != null && xsdEditor.getCurrentPageType().equals(XSDEditorPlugin.GRAPH_PAGE))
- {
- IAction deleteAction = xsdEditor.getGraphViewer().getComponentViewer().getMenuListener().getDeleteAction();
- getActionBars().setGlobalActionHandler(ActionFactory.DELETE.getId(), deleteAction);
-
- IAction printGraphAction = xsdEditor.getGraphViewer().getPrintGraphAction();
- getActionBars().setGlobalActionHandler(ActionFactory.PRINT.getId(), printGraphAction);
- }
- else
- {
- getActionBars().setGlobalActionHandler(ActionFactory.DELETE.getId(), null);
- // always enable print regardless of whether we are on source or design
- updateAction(ActionFactory.PRINT.getId(), ITextEditorActionConstants.PRINT, true);
- }
- }
-
- public void setActivePage(IEditorPart activeEditor)
- {
- updateActions();
-
- if (activeEditor != null && activeEditor instanceof StructuredTextEditor)
- {
- activateSourcePage(activeEditor, true);
- }
- else
- {
- activateSourcePage(xsdEditor, false);
- }
-
- IActionBars actionBars = getActionBars();
- if (actionBars != null) {
- // update menu bar and tool bar
- actionBars.updateActionBars();
- }
-
- updateAction(IWorkbenchActionConstants.UNDO, ITextEditorActionConstants.UNDO, true);
- updateAction(IWorkbenchActionConstants.REDO, ITextEditorActionConstants.REDO, true);
-
- getActionBars().updateActionBars();
- }
-
- protected void activateSourcePage(IEditorPart activeEditor, boolean state)
- {
- if (sourceViewerActionContributor != null && sourceViewerActionContributor instanceof ISourceViewerActionBarContributor)
- {
- sourceViewerActionContributor.setActiveEditor(activeEditor);
- ((ISourceViewerActionBarContributor) sourceViewerActionContributor).setViewerSpecificContributionsEnabled(state);
- }
- }
-
- protected void updateAction(String globalActionId, String textEditorActionId, boolean enable)
- {
- getActionBars().setGlobalActionHandler(globalActionId,
- enable ? getAction(textEditor, textEditorActionId) :
- null);
- }
-
- /**
- * Returns the action registed with the given text editor.
- * @return IAction or null if editor is null.
- */
- protected IAction getAction(ITextEditor editor, String actionID)
- {
- try
- {
- return (editor == null ? null : editor.getAction(actionID));
- }
- catch (Exception e)
- {
- return null;
- }
- }
-
- public void addToMenu(IMenuManager menuManager)
- {
- MenuManager treeMenu = new MenuManager(XSDEditorPlugin.getXSDString("_UI_MENU_XSD_EDITOR"));
- menuManager.insertAfter(IWorkbenchActionConstants.MB_ADDITIONS, treeMenu);
-
- treeMenu.add(new Separator("group1"));
-// Add retarget actions
-
- treeMenu.add(retargetReloadDependenciesAction);
-
- treeMenu.add(new Separator("group2"));
- }
-
-
-public void addToToolBar(IToolBarManager toolBarManager)
- {
- toolBarManager.add(new Separator("XMLSchema.2"));
-// Add retarget actions
- toolBarManager.add(retargetReloadDependenciesAction);
-
- toolBarManager.add(new Separator("XMLSchema.1"));
-
- toolBarManager.add(new Separator());
- }
-
- public void contributeToToolBar(IToolBarManager toolBarManager)
- {
- addToToolBar(toolBarManager);
- }
-
- public void contributeToMenu(IMenuManager menuManager)
- {
- addToMenu(menuManager);
- }
-
- /**
- * @see org.eclipse.ui.IEditorActionBarContributor#setActiveEditor(IEditorPart)
- */
- public void setActiveEditor(IEditorPart targetEditor)
- {
- if (targetEditor instanceof XSDEditor)
- {
- xsdEditor = (XSDEditor) targetEditor;
- reloadDependenciesAction.setEditor((XSDEditor)targetEditor);
-
- textEditor = ((XSDEditor)targetEditor).getTextEditor();
- if (textEditor != null)
- {
-
- renameElementAction.setAction(getAction(textEditor, ISchemaEditorActionConstants.RETARGET_RENAME_ELEMENT_ACTION_ID));
- updateActions();
- getActionBars().updateActionBars();
- }
- }
- super.setActiveEditor(targetEditor);
-
- updateAction(IWorkbenchActionConstants.UNDO, ITextEditorActionConstants.UNDO, true);
- updateAction(IWorkbenchActionConstants.REDO, ITextEditorActionConstants.REDO, true);
- }
-
- public void init(IActionBars bars, IWorkbenchPage page)
- {
- Iterator e = fPartListeners.iterator();
- while (e.hasNext())
- {
- page.addPartListener((RetargetAction) e.next());
- }
-
- // register actions that have a dynamic editor.
-
- bars.setGlobalActionHandler(ISchemaEditorActionConstants.RETARGET_RELOAD_DEPENDENCIES_ACTION_ID, reloadDependenciesAction);
-
- initSourceViewerActionContributor(bars);
-
- super.init(bars, page);
- }
-
- protected void initSourceViewerActionContributor(IActionBars actionBars) {
- if (sourceViewerActionContributor != null)
- sourceViewerActionContributor.init(actionBars, getPage());
- }
-
-
- public void dispose()
- {
- super.dispose();
-
- if (sourceViewerActionContributor != null)
- sourceViewerActionContributor.dispose();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlineConfiguration.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlineConfiguration.java
deleted file mode 100644
index 09e105e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlineConfiguration.java
+++ /dev/null
@@ -1,354 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.sse.ui.internal.contentoutline.PropertyChangeUpdateAction;
-import org.eclipse.wst.sse.ui.internal.contentoutline.PropertyChangeUpdateActionContributionItem;
-import org.eclipse.wst.sse.ui.views.contentoutline.ContentOutlineConfiguration;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xsd.ui.internal.actions.OpenSchemaAction;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAdapterFactoryLabelProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDContentProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * Outline configuration for XSD
- */
-public class XSDContentOutlineConfiguration extends ContentOutlineConfiguration {
- private XSDContentProvider fContentProvider;
- private ILabelProvider fLabelProvider;
- private KeyListener[] fKeyListeners = null;
- private IMenuListener fMenuListener = null;
- private XSDEditor fEditor = null;
- private TreeViewer treeViewer;
- protected SelectionManagerSelectionChangeListener selectionManagerSelectionChangeListener = new SelectionManagerSelectionChangeListener();
-
- public XSDContentOutlineConfiguration()
- {
- super();
- }
-
- public IContentProvider getContentProvider(TreeViewer viewer) {
- if (fContentProvider == null) {
- fContentProvider = new XSDContentProvider(XSDModelAdapterFactoryImpl.getInstance());
- }
- this.treeViewer = viewer;
- getXSDEditor().getSelectionManager().addSelectionChangedListener(selectionManagerSelectionChangeListener);
- return fContentProvider;
- }
-
- public ILabelProvider getLabelProvider(TreeViewer viewer) {
- if (fLabelProvider == null) {
- fLabelProvider = new XSDAdapterFactoryLabelProvider(XSDModelAdapterFactoryImpl.getInstance());
- }
- return fLabelProvider;
- }
-
- public IMenuListener getMenuListener(TreeViewer viewer) {
- if (fMenuListener == null) {
- // ISSUE: what happens if cannot get XSD Editor? (See
- // getXSDEditor comment)
- if (getXSDEditor() != null)
- fMenuListener = new XSDMenuListener(getXSDEditor().getSelectionManager());
- }
- return fMenuListener;
- }
-
- public KeyListener[] getKeyListeners(TreeViewer viewer) {
- if (fKeyListeners == null) {
- final TreeViewer finalViewer = viewer;
- KeyAdapter keyListener = new KeyAdapter() {
- public void keyReleased(KeyEvent e) {
- if (e.character == SWT.DEL) {
- IMenuListener menuListener = getMenuListener(finalViewer);
- if (menuListener instanceof XSDMenuListener)
- ((XSDMenuListener) menuListener).getDeleteAction().run();
- }
- else if (e.keyCode == SWT.F3) // open editor on any
- // include/import/redefine
- {
- if (e.widget instanceof Tree) {
- Tree tree = (Tree) e.widget;
- TreeItem[] selection = tree.getSelection();
- if (selection.length > 0) {
- if (selection[0].getData() instanceof XSDSchemaDirective) {
- XSDSchemaDirective comp = (XSDSchemaDirective) selection[0].getData();
- OpenSchemaAction openSchema = new OpenSchemaAction(XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), comp);
- openSchema.run();
- }
- }
- }
- }
- }
- };
- fKeyListeners = new KeyListener[]{keyListener};
- }
-
- return fKeyListeners;
- }
-
- public ISelection getSelection(TreeViewer viewer, ISelection selection) {
- ISelection sel = selection;
-
- if (selection instanceof IStructuredSelection) {
- List xsdSelections = new ArrayList();
- for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();) {
- Object domNode = i.next();
- Object xsdNode = getXSDNode(domNode, viewer);
- if (xsdNode != null) {
- xsdSelections.add(xsdNode);
- }
- }
-
- if (!xsdSelections.isEmpty()) {
- sel = new StructuredSelection(xsdSelections);
- }
- }
- return sel;
- }
-
- /**
- * Determines XSD node based on object (DOM node)
- *
- * @param object
- * @return
- */
- private Object getXSDNode(Object object, TreeViewer viewer) {
- // get the element node
- Element element = null;
- if (object instanceof Node) {
- Node node = (Node) object;
- if (node != null) {
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- element = (Element) node;
- }
- else if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
- element = ((Attr) node).getOwnerElement();
- }
- }
- }
- Object o = element;
- if (element != null) {
- Object modelObject = getXSDSchema(viewer).getCorrespondingComponent(element);
- if (modelObject != null) {
- o = modelObject;
- }
- }
- return o;
- }
-
- /**
- * Gets the xsd schema from treeviewer's input
- *
- * @param model
- * (of type Object but really should be IStructuredModel)
- * @return Definition
- */
- private XSDSchema getXSDSchema(TreeViewer viewer) {
- XSDSchema xsdSchema = null;
- Object model = null;
- if (viewer != null)
- model = viewer.getInput();
-
- if (model instanceof IDOMModel) {
- IDOMDocument domDoc = ((IDOMModel) model).getDocument();
- if (domDoc != null) {
- XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
- /*
- * ISSUE: Didn't want to go through initializing schema if it
- * does not already exist, so just attempted to get existing
- * adapter. If doesn't exist, just don't bother working.
- */
- if (modelAdapter != null)
- xsdSchema = modelAdapter.getSchema();
- }
- }
- return xsdSchema;
- }
-
- // ISSUE: There are some cases where outline comes up before editor
- private XSDEditor getXSDEditor() {
- if (fEditor == null) {
- IWorkbench workbench = PlatformUI.getWorkbench();
- if (workbench != null) {
- IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
- if (window != null) {
- IWorkbenchPage page = window.getActivePage();
- if (page != null) {
- IEditorPart editor = page.getActiveEditor();
- if (editor instanceof XSDEditor)
- fEditor = (XSDEditor) editor;
- }
- }
- }
- }
- return fEditor;
- }
-
- protected IContributionItem[] createMenuContributions(TreeViewer viewer) {
- IContributionItem[] items = super.createMenuContributions(viewer);
-
- referenceAction = new FilterAction(XSDEditorPlugin.getPlugin().getPreferenceStore(), "referenceContentAction", new ReferenceFilter("Reference Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_REFERENCES"), ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/XSDElementRef.gif"));
- boolean initialRef = getXSDEditor().getXSDModelAdapterFactory().getShowReferences();
- referenceAction.setChecked(initialRef);
-
- inheritedAction = new FilterAction(XSDEditorPlugin.getPlugin().getPreferenceStore(), "inheritedContentAction", new ReferenceFilter("Inherited Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_INHERITED"), ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/XSDComplexContent.gif"));
-
- IContributionItem toggleReferenceItem = new PropertyChangeUpdateActionContributionItem(referenceAction);
- IContributionItem toggleInheritedItem = new PropertyChangeUpdateActionContributionItem(inheritedAction);
-
- List list = new ArrayList();
- list.addAll(Arrays.asList(items));
- list.add(toggleReferenceItem);
- list.add(toggleInheritedItem);
-
- int length = list.size();
- IContributionItem[] newItems = new IContributionItem[length];
- int i = 0;
- for (Iterator iter = list.iterator(); iter.hasNext(); i++)
- {
- newItems[i] = (IContributionItem)iter.next();
- }
-
- return newItems;
- }
-
- // expose
- public TreeViewer getTreeViewer()
- {
- return treeViewer;
- }
-
- FilterAction referenceAction, inheritedAction;
-
- private void updateActions(Action current)
- {
- if (referenceAction.isChecked())
- {
- getXSDEditor().getXSDModelAdapterFactory().setShowReferences(true);
- }
- else
- {
- getXSDEditor().getXSDModelAdapterFactory().setShowReferences(false);
- }
- if (inheritedAction.isChecked())
- {
- getXSDEditor().getXSDModelAdapterFactory().setShowInherited(true);
- }
- else
- {
- getXSDEditor().getXSDModelAdapterFactory().setShowInherited(false);
- }
- getTreeViewer().refresh();
- }
-
- public class FilterAction extends PropertyChangeUpdateAction
- {
- ViewerFilter filter;
-
- public FilterAction(IPreferenceStore store, String preference, ViewerFilter filter, String label, ImageDescriptor image)
- {
- super(label, store, preference, true);
- setImageDescriptor(image);
- setUpdateFromPropertyChange(false);
- this.filter = filter;
- setChecked(false);
- }
-
- public void update()
- {
- super.update();
- updateActions(this);
- }
- }
-
- class ReferenceFilter extends ViewerFilter // Dummy filter
- {
- public ReferenceFilter(String elementTag)
- {
- this.elementTag = elementTag;
- }
- protected String elementTag;
-
- public boolean select(Viewer viewer, Object parentElement, Object element)
- {
- return true;
- }
- }
-
- class SelectionManagerSelectionChangeListener implements ISelectionChangedListener
- {
- public void selectionChanged(SelectionChangedEvent event)
- {
- if (event.getSelectionProvider() != getTreeViewer())
- {
- StructuredSelection selection = (StructuredSelection)event.getSelection();
- if (selection.getFirstElement() instanceof XSDSchema)
- {
- StructuredSelection s = (StructuredSelection)getTreeViewer().getSelection();
- if (!(s.getFirstElement() instanceof CategoryAdapter))
- {
- getTreeViewer().setSelection(event.getSelection(), true);
- }
- }
- else
- {
- getTreeViewer().setSelection(event.getSelection(), true);
- }
- }
- }
- }
-
- public void unconfigure(TreeViewer viewer) {
- super.unconfigure(viewer);
- getXSDEditor().getSelectionManager().removeSelectionChangedListener(selectionManagerSelectionChangeListener);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java
deleted file mode 100644
index f6ab990..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java
+++ /dev/null
@@ -1,561 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.ListenerList;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
-import org.eclipse.wst.xsd.ui.internal.actions.OpenSchemaAction;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.w3c.dom.Element;
-
-/**
- * @deprecated Using SSE's ConfiguratbleContentOutlinePage
- * instead via XSDContentOutlineCOnfiguration
- */
-public class XSDContentOutlinePage extends ContentOutlinePage implements ISelectionListener
-{
- protected XSDEditor xsdEditor;
- protected int level = 0;
- protected Object model;
- protected ITreeContentProvider contentProvider;
- protected ILabelProvider labelProvider;
- protected XSDSelectionManager selectionManager;
- protected SelectionManagerSelectionChangeListener selectionManagerSelectionChangeListener = new SelectionManagerSelectionChangeListener();
- protected TreeSelectionChangeListener treeSelectionChangeListener = new TreeSelectionChangeListener();
- XSDEditor xsdTextEditor;
- XSDMenuListener menuListener;
- SelectionProvider fSelectionProvider = null;
-
- /**
- *
- */
- public XSDContentOutlinePage(XSDEditor xsdTextEditor)
- {
- super();
- this.xsdTextEditor = xsdTextEditor;
- fSelectionProvider = new SelectionProvider();
- }
-
- public void init(IPageSite pageSite)
- {
- super.init(pageSite);
- getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
- getSite().setSelectionProvider(fSelectionProvider);
- }
-
- public void dispose()
- {
- super.dispose();
- getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this);
- }
-
- public void setModel(Object newModel)
- {
- model = newModel;
- }
-
- public void setContentProvider(ITreeContentProvider contentProvider)
- {
- this.contentProvider = contentProvider;
- }
-
- public void setLabelProvider(ILabelProvider labelProvider)
- {
- this.labelProvider = labelProvider;
- }
-
- // expose
- public TreeViewer getTreeViewer()
- {
- return super.getTreeViewer();
- }
-
- public void createControl(Composite parent)
- {
- super.createControl(parent);
- getTreeViewer().setContentProvider(contentProvider);
- getTreeViewer().setLabelProvider(labelProvider);
- getTreeViewer().setInput(model);
-// getTreeViewer().addSelectionChangedListener(this);
- MenuManager menuManager = new MenuManager("#popup");//$NON-NLS-1$
- menuManager.setRemoveAllWhenShown(true);
- Menu menu = menuManager.createContextMenu(getTreeViewer().getControl());
- getTreeViewer().getControl().setMenu(menu);
- menuListener = new XSDMenuListener(xsdTextEditor.getSelectionManager());
-// menuListener.setSelectionProvider(getTreeViewer());
- menuManager.addMenuListener(menuListener);
-
- // enable popupMenus extension
- getSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.outline", menuManager, xsdTextEditor.getSelectionManager());
-
- setSelectionManager(xsdTextEditor.getSelectionManager());
- // cs... why are we doing this from the outline view?
- //
- //xsdTextEditor.getXSDEditor().getSelectionManager().setSelection(new
- // StructuredSelection(xsdTextEditor.getXSDSchema()));
- XSDKeyListener keyListener = new XSDKeyListener(getTreeViewer(), menuListener);
- getTreeViewer().getControl().addKeyListener(keyListener);
- // drill down from outline view
- getTreeViewer().getControl().addMouseListener(new MouseAdapter()
- {
- public void mouseDoubleClick(MouseEvent e)
- {
- ISelection iSelection = getTreeViewer().getSelection();
- if (iSelection instanceof StructuredSelection)
- {
- StructuredSelection selection = (StructuredSelection)iSelection;
- Object obj = selection.getFirstElement();
- if (obj instanceof XSDConcreteComponent)
- {
- XSDConcreteComponent comp = (XSDConcreteComponent)obj;
- if (comp.getContainer() instanceof XSDSchema)
- {
- xsdTextEditor.getGraphViewer().setInput(obj);
- }
- }
- }
-
- }
- });
-
-
- getTreeViewer().addPostSelectionChangedListener(fSelectionProvider.getPostSelectionChangedListener());
- getTreeViewer().addSelectionChangedListener(fSelectionProvider.getSelectionChangedListener());
-
- }
- class XSDKeyListener extends KeyAdapter
- {
- TreeViewer viewer;
- XSDMenuListener menuListener;
-
- public XSDKeyListener(TreeViewer viewer, XSDMenuListener menuListener)
- {
- super();
- this.viewer = viewer;
- this.menuListener = menuListener;
- }
-
- /**
- * @see org.eclipse.swt.events.KeyAdapter#keyReleased(KeyEvent)
- */
- public void keyReleased(KeyEvent e)
- {
- if (e.character == SWT.DEL)
- {
- menuListener.getDeleteAction().run();
- }
- else if (e.keyCode == SWT.F3) // open editor on any
- // include/import/redefine
- {
- if (e.widget instanceof Tree)
- {
- Tree tree = (Tree) e.widget;
- TreeItem[] selection = tree.getSelection();
- if (selection.length > 0)
- {
- if (selection[0].getData() instanceof XSDSchemaDirective)
- {
- XSDSchemaDirective comp = (XSDSchemaDirective) selection[0].getData();
- OpenSchemaAction openSchema = new OpenSchemaAction(XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), comp);
- openSchema.run();
- }
- }
- }
- }
- }
- }
-
- public void setExpandToLevel(int i)
- {
- level = i;
- }
-
- public void setInput(Object value)
- {
- getTreeViewer().setInput(value);
- getTreeViewer().expandToLevel(level);
- }
-
- public void selectionChanged(IWorkbenchPart part, ISelection selection)
- {
- if (selectionManager != null)
- {
- if (selection instanceof IStructuredSelection)
- {
- IStructuredSelection structuredSelection = (IStructuredSelection) selection;
- Object o = structuredSelection.getFirstElement();
- // TODO ...
- // we need to implement a selectionManagerMapping extension point
- // so that extensions can specify how they'd like to map view objects
- // to selection objects
- //
- if (o instanceof Element)
- {
- try
- {
- Object modelObject = xsdTextEditor.getXSDSchema().getCorrespondingComponent((Element) o);
- if (modelObject != null)
- {
- o = modelObject;
- }
- }
- catch (Exception e)
- {
- }
- }
- else if (o instanceof CategoryAdapter)
- {
- // todo... we need to ensure we eliminate the propagation
- // of 'view' specific objects into the SelectionManager.
- // We need to do some work to ensure all views utilize the 'Category' model object
- // so we can get rid of this CategoryAdapter class.
-// CategoryAdapter adapter = (CategoryAdapter) o;
-// o = adapter.getXSDSchema();
- }
- if (o != null)
- {
- if (getControl() != null && !getControl().isDisposed() && !getControl().isFocusControl() && getControl().isVisible()) {
- /*
- * Do not allow selection from other parts to affect selection
- * in the tree widget if it has focus. Selection events
- * "bouncing" off of other parts are all that we can receive
- * if we have focus (since we forward selection to the
- * service), and only the user should affect selection if we
- * have focus.
- */
- getTreeViewer().setSelection(new StructuredSelection(o), true);
- }
- selectionManager.setSelection(new StructuredSelection(o), getTreeViewer());
-// selectionManager.selectionChanged(new SelectionChangedEvent(getTreeViewer(),new StructuredSelection(o)));
- }
- else
- {
- // selectionManager.setSelection(new StructuredSelection(),
- // getTreeViewer());
- }
- }
- }
- }
-
- public void setSelectionManager(XSDSelectionManager newSelectionManager)
- {
- TreeViewer treeViewer = getTreeViewer();
- // disconnect from old one
- if (selectionManager != null)
- {
- selectionManager.removeSelectionChangedListener(selectionManagerSelectionChangeListener);
- treeViewer.removeSelectionChangedListener(treeSelectionChangeListener);
- }
- selectionManager = newSelectionManager;
- // connect to new one
- if (selectionManager != null)
- {
- selectionManager.addSelectionChangedListener(selectionManagerSelectionChangeListener);
- treeViewer.addSelectionChangedListener(treeSelectionChangeListener);
- }
- }
-
- class SelectionManagerSelectionChangeListener implements ISelectionChangedListener
- {
- public void selectionChanged(SelectionChangedEvent event)
- {
- if (event.getSelectionProvider() != getTreeViewer())
- {
- getTreeViewer().setSelection(event.getSelection(), true);
- }
- }
- }
- class TreeSelectionChangeListener implements ISelectionChangedListener
- {
- public void selectionChanged(SelectionChangedEvent event)
- {
- if (selectionManager != null)
- {
- ISelection selection = event.getSelection();
- if (selection instanceof IStructuredSelection)
- {
- IStructuredSelection structuredSelection = (IStructuredSelection) selection;
- Object o = structuredSelection.getFirstElement();
- // TODO ...
- // we need to implement a selectionManagerMapping extension point
- // so that extensions can specify how they'd like to map view objects
- // to selection objects
- //
- if (o instanceof Element)
- {
- try
- {
- Object modelObject = xsdTextEditor.getXSDSchema().getCorrespondingComponent((Element) o);
- if (modelObject != null)
- {
- o = modelObject;
- }
- }
- catch (Exception e)
- {
- }
- }
- else if (o instanceof CategoryAdapter)
- {
- // todo... we need to ensure we eliminate the propagation
- // of 'view' specific objects into the SelectionManager.
- // We need to do some work to ensure all views utilize the 'Category' model object
- // so we can get rid of this CategoryAdapter class.
-// CategoryAdapter adapter = (CategoryAdapter) o;
-// o = adapter.getXSDSchema();
- }
- if (o != null)
- {
- selectionManager.setSelection(new StructuredSelection(o), getTreeViewer());
-// selectionManager.selectionChanged(new SelectionChangedEvent(getTreeViewer(),new StructuredSelection(o)));
- }
- }
- }
- }
- }
- FilterAction referenceAction, inheritedAction;
-
- public void setActionBars(IActionBars actionBars)
- {
- super.setActionBars(actionBars);
- // Uncomment to add sort action
- // SortAction sortAction = new SortAction();
- //
- // actionBars.getToolBarManager().add(sortAction);
- // sortAction.setChecked(false);
- referenceAction = new FilterAction(new ReferenceFilter("Reference Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_REFERENCES"), ImageDescriptor.createFromFile(XSDEditorPlugin
- .getPlugin().getClass(), "icons/XSDElementRef.gif"));
- boolean initialRef = xsdTextEditor.getXSDModelAdapterFactory().getShowReferences();
- referenceAction.setChecked(initialRef);
- inheritedAction = new FilterAction(new ReferenceFilter("Inherited Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_INHERITED"), ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin()
- .getClass(), "icons/XSDComplexContent.gif"));
- IMenuManager menu = actionBars.getMenuManager();
- menu.add(referenceAction);
- menu.add(inheritedAction);
- }
-
- private void updateActions(Action current)
- {
- if (referenceAction.isChecked())
- {
- xsdTextEditor.getXSDModelAdapterFactory().setShowReferences(true);
- }
- else
- {
- xsdTextEditor.getXSDModelAdapterFactory().setShowReferences(false);
- }
- if (inheritedAction.isChecked())
- {
- xsdTextEditor.getXSDModelAdapterFactory().setShowInherited(true);
- }
- else
- {
- xsdTextEditor.getXSDModelAdapterFactory().setShowInherited(false);
- }
- }
- private Sorter sorter = new Sorter();
- public class Sorter extends org.eclipse.jface.viewers.ViewerSorter
- {
- }
- public class SortAction extends Action
- {
- public SortAction()
- {
- super("Sort", ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/sort.gif"));
- }
-
- public void run()
- {
- getTreeViewer().getControl().setVisible(false);
- Object[] expandedElements = getTreeViewer().getExpandedElements();
- getTreeViewer().setSorter(isChecked() ? sorter : null);
- Object input = getTreeViewer().getInput();
- getTreeViewer().setInput(input);
- getTreeViewer().setExpandedElements(expandedElements);
- getTreeViewer().getControl().setVisible(true);
- }
-
- public void setChecked(boolean checked)
- {
- super.setChecked(checked);
- setToolTipText(checked ? XSDEditorPlugin.getXSDString("_UI_OUTLINE_DO_NOT_SORT") : XSDEditorPlugin.getXSDString("_UI_OUTLINE_SORT"));
- }
- }
- public class FilterAction extends Action
- {
- ViewerFilter filter;
-
- public FilterAction(ViewerFilter filter, String label, ImageDescriptor image)
- {
- super(label, image);
- this.filter = filter;
- setChecked(false);
- }
-
- public void run()
- {
- updateActions(this);
- if (isChecked())
- {
- getTreeViewer().resetFilters();
- getTreeViewer().addFilter(filter);
- }
- else
- {
- getTreeViewer().removeFilter(filter);
- }
- }
- }
- class ReferenceFilter extends ViewerFilter // Dummy filter
- {
- public ReferenceFilter(String elementTag)
- {
- this.elementTag = elementTag;
- }
- protected String elementTag;
-
- public boolean select(Viewer viewer, Object parentElement, Object element)
- {
- return true;
- }
- }
-
- /**
- * Forwards post-selection from the tree viewer to the listeners while
- * acting as this page's selection provider.
- */
- private class SelectionProvider implements IPostSelectionProvider {
- private class PostSelectionChangedListener implements ISelectionChangedListener {
- public void selectionChanged(SelectionChangedEvent event) {
- if (!isFiringSelection()) {
- fireSelectionChanged(event, postListeners);
- }
- }
- }
-
- private class SelectionChangedListener implements ISelectionChangedListener {
- public void selectionChanged(SelectionChangedEvent event) {
- if (!isFiringSelection()) {
- fireSelectionChanged(event, listeners);
- }
- }
- }
-
- private boolean isFiringSelection = false;
- private ListenerList listeners = new ListenerList();
- private ListenerList postListeners = new ListenerList();
- private ISelectionChangedListener postSelectionChangedListener = new PostSelectionChangedListener();
- private ISelectionChangedListener selectionChangedListener = new SelectionChangedListener();
-
- public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
- postListeners.add(listener);
- }
-
- public void addSelectionChangedListener(ISelectionChangedListener listener) {
- listeners.add(listener);
- }
-
- public void fireSelectionChanged(final SelectionChangedEvent event, ListenerList listenerList) {
- isFiringSelection = true;
- Object[] listeners = listenerList.getListeners();
- for (int i = 0; i < listeners.length; ++i) {
- final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
- Platform.run(new SafeRunnable() {
- public void run() {
- l.selectionChanged(event);
- }
- });
- }
- isFiringSelection = false;
- }
-
- public void fireSelectionChanged(final SelectionChangedEvent event) {
- isFiringSelection = true;
- Object[] listeners = postListeners.getListeners();
- for (int i = 0; i < listeners.length; ++i) {
- final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
- Platform.run(new SafeRunnable() {
- public void run() {
- l.selectionChanged(event);
- }
- });
- }
- isFiringSelection = false;
- }
-
- public ISelectionChangedListener getPostSelectionChangedListener() {
- return postSelectionChangedListener;
- }
-
- public ISelection getSelection() {
- if (getTreeViewer() != null) {
- return getTreeViewer().getSelection();
- }
- return StructuredSelection.EMPTY;
- }
-
- public ISelectionChangedListener getSelectionChangedListener() {
- return selectionChangedListener;
- }
-
- public boolean isFiringSelection() {
- return isFiringSelection;
- }
-
- public void removePostSelectionChangedListener(ISelectionChangedListener listener) {
- postListeners.remove(listener);
- }
-
- public void removeSelectionChangedListener(ISelectionChangedListener listener) {
- listeners.remove(listener);
- };
-
- public void setSelection(ISelection selection) {
- if (isFiringSelection) {
- getTreeViewer().setSelection(selection);
- }
- };
- }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditor.java
deleted file mode 100644
index 71fe602..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditor.java
+++ /dev/null
@@ -1,881 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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;
-
-import java.util.ArrayList;
-import java.util.EventObject;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.CommandStackListener;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.editors.text.ILocationProvider;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-import org.eclipse.ui.views.properties.IPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.events.IStructuredDocumentListener;
-import org.eclipse.wst.sse.core.internal.undo.IStructuredTextUndoManager;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.sse.ui.internal.contentoutline.ConfigurableContentOutlinePage;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphViewer;
-import org.eclipse.wst.xsd.ui.internal.properties.section.XSDTabbedPropertySheetPage;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAdapterFactoryLabelProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.wst.xsd.ui.internal.util.OpenOnSelectionHelper;
-import org.eclipse.xsd.XSDComponent;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.ProcessingInstruction;
-
-// public class XSDEditor extends StructuredTextMultiPageEditorPart
-public class XSDEditor extends XSDMultiPageEditorPart implements ITabbedPropertySheetPageContributor {
- protected StructuredTextEditor textEditor;
- IFile resourceFile;
- XSDSelectionManager xsdSelectionManager;
- XSDModelAdapter schemalNodeAdapter;
-
- private IStructuredModel result;
-
- /**
- * Listener on SSE's outline page's selections that converts DOM
- * selections into wsdl selections and notifies WSDL selection manager
- */
- class OutlineTreeSelectionChangeListener implements ISelectionChangedListener, IDoubleClickListener {
- public OutlineTreeSelectionChangeListener() {
- }
-
- private ISelection getXSDSelection(ISelection selection) {
- ISelection sel = null;
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection structuredSelection = (IStructuredSelection) selection;
- Object o = structuredSelection.getFirstElement();
- if (o != null)
- sel = new StructuredSelection(o);
- }
- return sel;
- }
-
- /**
- * Determines DOM node based on object (xsd node)
- *
- * @param object
- * @return
- */
- private Object getObjectForOtherModel(Object object) {
- Node node = null;
-
- if (object instanceof Node) {
- node = (Node) object;
- }
- else if (object instanceof XSDComponent) {
- node = ((XSDComponent) object).getElement();
- }
- else if (object instanceof CategoryAdapter) {
- node = ((CategoryAdapter) object).getXSDSchema().getElement();
- }
-
- // the text editor can only accept sed nodes!
- //
- if (!(node instanceof IDOMNode)) {
- node = null;
- }
- return node;
- }
-
- public void doubleClick(DoubleClickEvent event) {
- /*
- * Selection in outline tree changed so set outline tree's
- * selection into editor's selection and say it came from outline
- * tree
- */
- if (getSelectionManager() != null && getSelectionManager().enableNotify) {
- ISelection selection = getXSDSelection(event.getSelection());
- if (selection != null) {
- getSelectionManager().setSelection(selection, fOutlinePage);
- }
-
- if (getTextEditor() != null && selection instanceof IStructuredSelection) {
- int start = -1;
- int length = 0;
- Object o = ((IStructuredSelection) selection).getFirstElement();
- if (o != null)
- o = getObjectForOtherModel(o);
- if (o instanceof IndexedRegion) {
- start = ((IndexedRegion) o).getStartOffset();
- length = ((IndexedRegion) o).getEndOffset() - start;
- }
- if (start > -1) {
- getTextEditor().selectAndReveal(start, length);
- }
- }
- }
- }
-
- public void selectionChanged(SelectionChangedEvent event) {
- /*
- * Selection in outline tree changed so set outline tree's
- * selection into editor's selection and say it came from outline
- * tree
- */
- if (getSelectionManager() != null) { // && getSelectionManager().enableNotify) {
-
- ISelection selection = getXSDSelection(event.getSelection());
- if (selection != null) {
- getSelectionManager().setSelection(selection, fOutlinePage);
- }
- }
- }
- }
-
- /**
- * Listener on SSE's source editor's selections that converts DOM
- * selections into xsd selections and notifies XSD selection manager
- */
- private class SourceEditorSelectionListener implements ISelectionChangedListener {
- /**
- * Determines XSD node based on object (DOM node)
- *
- * @param object
- * @return
- */
- private Object getXSDNode(Object object) {
- // get the element node
- Element element = null;
- if (object instanceof Node) {
- Node node = (Node) object;
- if (node != null) {
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- element = (Element) node;
- }
- else if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
- element = ((Attr) node).getOwnerElement();
- }
- }
- }
- Object o = element;
- if (element != null) {
- Object modelObject = getXSDSchema().getCorrespondingComponent(element);
- if (modelObject != null) {
- o = modelObject;
- }
- }
- return o;
- }
-
- public void selectionChanged(SelectionChangedEvent event) {
- ISelection selection = event.getSelection();
- if (selection instanceof IStructuredSelection) {
- List xsdSelections = new ArrayList();
- for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();) {
- Object domNode = i.next();
- Object xsdNode = getXSDNode(domNode);
- if (xsdNode != null) {
- xsdSelections.add(xsdNode);
- }
- }
-
- if (!xsdSelections.isEmpty()) {
- StructuredSelection xsdSelection = new StructuredSelection(xsdSelections);
- getSelectionManager().setSelection(xsdSelection, getTextEditor().getSelectionProvider());
- }
- }
- }
- }
-
- /**
- * Listener on XSD's selection manager's selections that converts XSD
- * selections into DOM selections and notifies SSE's selection provider
- */
- private class XSDSelectionManagerSelectionListener implements ISelectionChangedListener {
- /**
- * Determines DOM node based on object (xsd node)
- *
- * @param object
- * @return
- */
- private Object getObjectForOtherModel(Object object) {
- Node node = null;
-
- if (object instanceof Node) {
- node = (Node) object;
- }
- else if (object instanceof XSDComponent) {
- node = ((XSDComponent) object).getElement();
- }
- else if (object instanceof CategoryAdapter) {
- node = ((CategoryAdapter) object).getXSDSchema().getElement();
- }
- else if (object instanceof String) {
-
- // The string is expected to be a URI fragment use to identify an XSD component.
- // The URI fragment should be relative to the schema being edited in this editor.
-
- String uriFragment = (String)object;
- XSDSchema schema = getXSDSchema();
- EObject eObject = schema.eResource().getEObject(uriFragment);
-
- if (eObject != null) {
- node = ((XSDComponent)eObject).getElement();
- }
- }
-
- // the text editor can only accept sed nodes!
- //
- if (!(node instanceof IDOMNode)) {
- node = null;
- }
- return node;
- }
-
- public void selectionChanged(SelectionChangedEvent event) {
- // do not fire selection in source editor if selection event came
- // from source editor
- if (event.getSource() != getTextEditor().getSelectionProvider()) {
- ISelection selection = event.getSelection();
- if (selection instanceof IStructuredSelection) {
- List otherModelObjectList = new ArrayList();
- for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();) {
- Object modelObject = i.next();
- Object otherModelObject = getObjectForOtherModel(modelObject);
- if (otherModelObject != null) {
- otherModelObjectList.add(otherModelObject);
- }
- }
- if (!otherModelObjectList.isEmpty()) {
- StructuredSelection nodeSelection = new StructuredSelection(otherModelObjectList);
- getTextEditor().getSelectionProvider().setSelection(nodeSelection);
- }
- }
- }
- }
- }
-
- public XSDEditor() {
- super();
- xsdSelectionManager = new XSDSelectionManager();
- }
-
- InternalPartListener partListener = new InternalPartListener(this);
-
- // show outline view - defect 266116
- public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException {
- super.init(site, editorInput);
- IWorkbenchWindow dw = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- IWorkbenchPage page = dw.getActivePage();
- getSite().getPage().addPartListener(partListener);
- try {
- if (page != null) {
- // page.showView("org.eclipse.ui.views.ContentOutline");
- page.showView("org.eclipse.ui.views.PropertySheet");
- }
- }
- catch (PartInitException e) {
- // e.printStackTrace();
- }
- }
-
- // For team support
- // protected PropertyDirtyChangeListener propertyChangeListener;
-
- /**
- * Creates the pages of this multi-page editor.
- * <p>
- * Subclasses of <code>MultiPageEditor</code> must implement this
- * method.
- * </p>
- */
- protected void createPages() {
- try {
- if (!loadFile())
- return;
-
- xsdModelAdapterFactory = XSDModelAdapterFactoryImpl.getInstance();
- adapterFactoryLabelProvider = new XSDAdapterFactoryLabelProvider(xsdModelAdapterFactory);
-
- // source page MUST be created before design page, now
- createSourcePage();
-
- addSourcePage();
- buildXSDModel();
-
- // comment this line out to hide the graph page
- //
- createAndAddGraphPage();
-
- int pageIndexToShow = getDefaultPageTypeIndex();
- setActivePage(pageIndexToShow);
-
- openOnSelectionHelper = new OpenOnSelectionHelper(textEditor, getXSDSchema());
- // added selection listeners after setting selection to avoid
- // navigation exception
- ISelectionProvider provider = getTextEditor().getSelectionProvider();
- fSourceEditorSelectionListener = new SourceEditorSelectionListener();
- if (provider instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) provider).addPostSelectionChangedListener(fSourceEditorSelectionListener);
- }
- else {
- provider.addSelectionChangedListener(fSourceEditorSelectionListener);
- }
- fXSDSelectionListener = new XSDSelectionManagerSelectionListener();
- getSelectionManager().addSelectionChangedListener(fXSDSelectionListener);
-
- addCommandStackListener();
-
- XSDEditorPlugin.getPlugin().getPreferenceStore().addPropertyChangeListener(preferenceStoreListener);
- }
- catch (PartInitException e) {
- // log for now, unless we find reason not to
- Logger.log(Logger.INFO, e.getMessage());
- }
- }
-
-
- public void buildXSDModel() {
- try {
- Document document = ((IDOMModel) getModel()).getDocument();
-
- boolean schemaNodeExists = document.getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "schema").getLength() == 1;
-
- if (document.getChildNodes().getLength() == 0 || !schemaNodeExists) {
- createDefaultSchemaNode(document);
- }
-
- if (document instanceof INodeNotifier) {
- INodeNotifier notifier = (INodeNotifier) document;
- schemalNodeAdapter = (XSDModelAdapter) notifier.getAdapterFor(XSDModelAdapter.class);
- if (schemalNodeAdapter == null) {
- schemalNodeAdapter = new XSDModelAdapter();
- notifier.addAdapter(schemalNodeAdapter);
- schemalNodeAdapter.createSchema(document.getDocumentElement());
- }
- }
- }
- catch (Exception e) {
- // XSDEditorPlugin.getPlugin().getMsgLogger().write("Failed to
- // create Model");
- // XSDEditorPlugin.getPlugin().getMsgLogger().write(e);
- // e.printStackTrace();
- }
-
-
-
- // XSDResourceFactoryImpl.validate(xsdSchema,
- // input.getFile().getContents(true));
- }
-
- public String[] getPropertyCategories() {
- return new String[]{"general", "namespace", "other", "attributes", "documentation", "facets"}; //$NON-NLS-1$
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor#getContributorId()
- */
- public String getContributorId() {
- return "org.eclipse.wst.xsd.ui.internal.XSDEditor";
- // return getSite().getId();
- }
-
- protected CommandStackListener commandStackListener;
-
- protected void addCommandStackListener() {
- if (commandStackListener == null) {
- IStructuredTextUndoManager undoManager = getModel().getUndoManager();
- commandStackListener = new CommandStackListener() {
- /**
- * @see org.eclipse.emf.common.command.CommandStackListener#commandStackChanged(EventObject)
- */
- public void commandStackChanged(EventObject event) {
- Object obj = event.getSource();
- if (obj instanceof BasicCommandStack) {
- BasicCommandStack stack = (BasicCommandStack) obj;
- Command recentCommand = stack.getMostRecentCommand();
- Command redoCommand = stack.getRedoCommand();
- Command undoCommand = stack.getUndoCommand();
- if (recentCommand == redoCommand) {
- // there must have been an undo reset info tasks
- resetInformationTasks();
- }
- }
- }
- };
-
- // TODO WTP Port
- // undoManager.getCommandStack().addCommandStackListener(commandStackListener);
-
- }
- }
-
- protected void pageChange(int arg) {
- super.pageChange(arg);
- }
-
- protected void removeCommandStackListener() {
- if (commandStackListener != null) {
- IStructuredTextUndoManager undoManager = getModel().getUndoManager();
- // TODO WTP Port
- // undoManager.getCommandStack().removeCommandStackListener(commandStackListener);
- }
- }
-
- // This is from the IValidateEditEditor interface
- /*
- * public void undoChange() { StructuredTextUndoManager undoManager =
- * textEditor.getModel().getUndoManager(); undoManager.undo(); // Make the
- * editor clean textEditor.getModel().setDirtyState(false); }
- */
-
- private class PreferenceStoreListener implements IPropertyChangeListener {
- /**
- * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent event) {
- }
- }
-
- protected IPropertyChangeListener preferenceStoreListener = new PreferenceStoreListener();
-
- protected int getDefaultPageTypeIndex() {
- int pageIndex = sourcePageIndex;
-
- if (XSDEditorPlugin.getPlugin().getDefaultPage().equals(XSDEditorPlugin.GRAPH_PAGE)) {
- if (graphPageIndex != -1)
- pageIndex = graphPageIndex;
- }
-
- return pageIndex;
- }
-
- int currentPage = -1;
-
- public String getCurrentPageType() {
- // should update pref. for valid pages
- if (getActivePage() != -1) {
- currentPage = getActivePage();
- }
- if (currentPage == graphPageIndex) {
- return XSDEditorPlugin.GRAPH_PAGE;
- }
- else {
- return XSDEditorPlugin.SOURCE_PAGE;
- }
- }
-
- public Object getActivePart() {
- return getSite().getWorkbenchWindow().getActivePage().getActivePart();
- }
-
- public void dispose() {
- // some things in the configuration need to clean
- // up after themselves
- if (fOutlinePage != null) {
- if (fOutlinePage instanceof ConfigurableContentOutlinePage && fOutlineListener != null) {
- ((ConfigurableContentOutlinePage) fOutlinePage).removeDoubleClickListener(fOutlineListener);
- }
- if (fOutlineListener != null) {
- fOutlinePage.removeSelectionChangedListener(fOutlineListener);
- }
- }
- ISelectionProvider provider = getTextEditor().getSelectionProvider();
- if (provider instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) provider).removePostSelectionChangedListener(fSourceEditorSelectionListener);
- }
- else {
- provider.removeSelectionChangedListener(fSourceEditorSelectionListener);
- }
- getSelectionManager().removeSelectionChangedListener(fXSDSelectionListener);
-
- // propertyChangeListener.dispose();
- removeCommandStackListener();
-
- XSDEditorPlugin.getPlugin().setDefaultPage(getCurrentPageType());
- XSDEditorPlugin.getPlugin().getPreferenceStore().removePropertyChangeListener(preferenceStoreListener);
-
- getSite().getPage().removePartListener(partListener);
-
- // KB: Temporary solution for bug 99468
- IStructuredModel myModel = textEditor.getModel();
- if (myModel != null && myModel instanceof IStructuredDocumentListener)
- myModel.getStructuredDocument().removeDocumentChangingListener((IStructuredDocumentListener) myModel);
-
- textEditor = null;
- resourceFile = null;
- xsdSelectionManager = null;
- schemalNodeAdapter = null;
- result = null;
- partListener = null;
- commandStackListener = null;
- preferenceStoreListener = null;
- openOnSelectionHelper = null;
- graphViewer = null;
-
- super.dispose();
-
- // release the schema model
- //
- if (schemalNodeAdapter != null) {
- schemalNodeAdapter.clear();
- schemalNodeAdapter = null;
- }
- }
-
- protected boolean loadFile() {
- Object input = getEditorInput();
-
- if (input instanceof IFileEditorInput) {
- resourceFile = ((IFileEditorInput) input).getFile();
- }
- else if (input instanceof ILocationProvider) {
- IPath path = ((ILocationProvider) input).getPath(input);
- String ext = path.getFileExtension();
- if (ext != null && ext.equals("xsd")) {
- return true;
- }
- return false;
- }
- else {
- return false;
- }
- return true;
- }
-
- /**
- * Method openOnGlobalReference. The comp argument is a resolved xsd
- * schema object from another file. This is created and called from
- * another schema model to allow F3 navigation to open a new editor and
- * choose the referenced object within that editor context
- *
- * @param comp
- */
- public void openOnGlobalReference(XSDConcreteComponent comp) {
- openOnSelectionHelper.openOnGlobalReference(comp);
- }
-
- protected OpenOnSelectionHelper openOnSelectionHelper;
-
- public OpenOnSelectionHelper getOpenOnSelectionHelper() {
- return openOnSelectionHelper;
- }
-
- /**
- * @see org.eclipse.wst.xsd.ui.internal.XSDMultiPageEditorPart#createTextEditor()
- */
- protected StructuredTextEditor createTextEditor() {
- textEditor = new StructuredTextEditor();
- return textEditor;
- }
-
- /*
- * @see StructuredTextMultiPageEditorPart#createSourcePage()
- */
- protected void createSourcePage() throws PartInitException {
- super.createSourcePage();
- }
-
- int sourcePageIndex = -1;
-
- /**
- * Adds the source page of the multi-page editor.
- */
- protected void addSourcePage() throws PartInitException {
-
- sourcePageIndex = addPage(textEditor, getEditorInput());
- setPageText(sourcePageIndex, XSDEditorPlugin.getXSDString("_UI_TAB_SOURCE"));
-
- // the update's critical, to get viewer selection manager and
- // highlighting to work
- textEditor.update();
- firePropertyChange(PROP_TITLE);
- }
-
- int graphPageIndex = -1;
- XSDGraphViewer graphViewer;
-
- /**
- * Creates the graph page and adds it to the multi-page editor.
- */
- protected void createAndAddGraphPage() throws PartInitException {
- graphViewer = new XSDGraphViewer(this);
- graphViewer.setSchema(getXSDSchema());
- Control graphControl = graphViewer.createControl(getContainer());
- graphPageIndex = addPage(graphControl);
- setPageText(graphPageIndex, XSDEditorPlugin.getXSDString("_UI_TAB_GRAPH"));
-
- // graphViewer.setViewerSelectionManager(textEditor.getViewerSelectionManager());
- graphViewer.setSelectionManager(getSelectionManager());
-
- // this forces the editor to initially select the top level schema
- // object
- //
- if (getXSDSchema() != null) {
- getSelectionManager().setSelection(new StructuredSelection(getXSDSchema()));
- }
- }
-
- protected XSDModelAdapterFactoryImpl xsdModelAdapterFactory;
- protected XSDAdapterFactoryLabelProvider adapterFactoryLabelProvider;
- private IPropertySheetPage fPropertySheetPage;
- private IContentOutlinePage fOutlinePage;
- private OutlineTreeSelectionChangeListener fOutlineListener;
- private SourceEditorSelectionListener fSourceEditorSelectionListener;
- private XSDSelectionManagerSelectionListener fXSDSelectionListener;
-
- /*
- * @see IAdaptable#getAdapter(Class)
- */
- public Object getAdapter(Class key) {
- Object result = null;
- if (key == ISelectionProvider.class) {
- result = xsdSelectionManager;
- }
- else if (IPropertySheetPage.class.equals(key)) {
- fPropertySheetPage = new XSDTabbedPropertySheetPage(this);
-
- ((XSDTabbedPropertySheetPage) fPropertySheetPage).setXSDModelAdapterFactory(xsdModelAdapterFactory);
- ((XSDTabbedPropertySheetPage) fPropertySheetPage).setSelectionManager(getSelectionManager());
- ((XSDTabbedPropertySheetPage) fPropertySheetPage).setXSDSchema(getXSDSchema());
-
- return fPropertySheetPage;
- }
- else if (IContentOutlinePage.class.equals(key)) {
- if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed()) {
- IContentOutlinePage page = (IContentOutlinePage) super.getAdapter(key);
- if (page != null) {
- fOutlineListener = new OutlineTreeSelectionChangeListener();
- page.addSelectionChangedListener(fOutlineListener);
- if (page instanceof ConfigurableContentOutlinePage) {
- ((ConfigurableContentOutlinePage) page).addDoubleClickListener(fOutlineListener);
- }
- }
- fOutlinePage = page;
- // XSDContentOutlinePage outlinePage = new
- // XSDContentOutlinePage(this);
- // XSDContentProvider xsdContentProvider = new
- // XSDContentProvider(xsdModelAdapterFactory);
- // xsdContentProvider.setXSDSchema(getXSDSchema());
- // outlinePage.setContentProvider(xsdContentProvider);
- // outlinePage.setLabelProvider(adapterFactoryLabelProvider);
- // outlinePage.setModel(getXSDSchema().getDocument());
- //
- // fOutlinePage = outlinePage;
- }
- return fOutlinePage;
- }
- else {
- result = super.getAdapter(key);
- }
- return result;
- }
-
-
- public XSDModelAdapterFactoryImpl getXSDModelAdapterFactory() {
- return xsdModelAdapterFactory;
- }
-
- public XSDAdapterFactoryLabelProvider getLabelProvider() {
- return adapterFactoryLabelProvider;
- }
-
-
- public XSDSelectionManager getSelectionManager() {
- return xsdSelectionManager;
- }
-
- /**
- * @see org.eclipse.wst.xsd.ui.internal.XSDMultiPageEditorPart#doSaveAs()
- */
- public void doSaveAs() {
- super.doSaveAs();
- }
-
- public void doSave(org.eclipse.core.runtime.IProgressMonitor monitor) {
- super.doSave(monitor);
- }
-
- public void reparseSchema() {
- // TODO cs : Are there no better ways to make the model
- // reload it's dependencies? This seems rather extreme.
- //
- Document document = ((IDOMModel) getModel()).getDocument();
- if (schemalNodeAdapter != null) {
- schemalNodeAdapter.createSchema(document.getDocumentElement());
- }
- }
-
- /**
- * Returns the xsdSchema.
- *
- * @return XSDSchema
- */
- public XSDSchema getXSDSchema() {
- return schemalNodeAdapter != null ? schemalNodeAdapter.getSchema() : null;
- }
-
-
- /**
- * Returns the resourceFile.
- *
- * @return IFile
- */
- public IFile getFileResource() {
- return resourceFile;
- }
-
- /**
- * Get the IDocument from the text viewer
- */
- public IDocument getEditorIDocument() {
- IDocument document = textEditor.getTextViewer().getDocument();
- return document;
- }
-
- /**
- * Create ref integrity tasks in task list
- */
- public void createTasksInTaskList(ArrayList messages) {
- // DisplayErrorInTaskList tasks = new
- // DisplayErrorInTaskList(getEditorIDocument(), getFileResource(),
- // messages);
- // tasks.run();
- }
-
- public void resetInformationTasks() {
- // DisplayErrorInTaskList.removeInfoMarkers(getFileResource());
- }
-
- public XSDGraphViewer getGraphViewer() {
- return graphViewer;
- }
-
- public IEditorPart getActiveEditorPage() {
- return getActiveEditor();
- }
-
- public StructuredTextEditor getTextEditor() {
- return textEditor;
- }
-
- class InternalPartListener implements IPartListener {
- XSDEditor editor;
-
- public InternalPartListener(XSDEditor editor) {
- this.editor = editor;
- }
-
- public void partActivated(IWorkbenchPart part) {
- if (part == editor) {
- ISelection selection = getSelectionManager().getSelection();
- if (selection != null) {
- if (getCurrentPageType().equals(XSDEditorPlugin.GRAPH_PAGE)) {
- getSelectionManager().selectionChanged(new SelectionChangedEvent(editor.getGraphViewer().getComponentViewer(), selection));
- }
- else if (getCurrentPageType().equals(XSDEditorPlugin.SOURCE_PAGE)) {
- getSelectionManager().setSelection(selection);
- }
- }
- }
- }
-
- public void partBroughtToTop(IWorkbenchPart part) {
- }
-
- public void partClosed(IWorkbenchPart part) {
- }
-
- public void partDeactivated(IWorkbenchPart part) {
- }
-
- public void partOpened(IWorkbenchPart part) {
- }
- }
-
-
- /**
- * Method createDefaultSchemaNode. Should only be called to insert a
- * schema node into an empty document
- */
- public void createDefaultSchemaNode(Document document) {
- if (document.getChildNodes().getLength() == 0) {
- // if it is a completely empty file, then add the encoding and
- // version processing instruction
- // TODO String encoding = EncodingHelper.getDefaultEncodingTag();
- String encoding = "UTF-8";
- ProcessingInstruction instr = document.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"" + encoding + "\"");
- document.appendChild(instr);
- }
-
- // Create a default schema tag now
-
- // String defaultPrefixForTargetNamespace =
- // getFileResource().getProjectRelativePath().removeFileExtension().lastSegment();
- String defaultPrefixForTargetNamespace = "tns";
- String prefixForSchemaNamespace = "";
- String schemaNamespaceAttribute = "xmlns";
- if (XSDEditorPlugin.getPlugin().isQualifyXMLSchemaLanguage()) {
- // Added this if check before disallowing blank prefixes in the
- // preferences...
- // Can take this out. See also NewXSDWizard
- if (XSDEditorPlugin.getPlugin().getXMLSchemaPrefix().trim().length() > 0) {
- prefixForSchemaNamespace = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix() + ":";
- schemaNamespaceAttribute += ":" + XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
- }
- }
-
- document.appendChild(document.createTextNode("\n"));
- Element element = document.createElement(prefixForSchemaNamespace + XSDConstants.SCHEMA_ELEMENT_TAG);
-
- element.setAttribute(schemaNamespaceAttribute, "http://www.w3.org/2001/XMLSchema");
-
- String defaultTargetURI = XSDEditorPlugin.getPlugin().getXMLSchemaTargetNamespace();
- element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, defaultTargetURI);
- element.setAttribute("xmlns:" + defaultPrefixForTargetNamespace, defaultTargetURI);
-
- document.appendChild(element);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorAdapter.java
deleted file mode 100644
index 7591376..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorAdapter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.text.IDocument;
-
-public interface XSDEditorAdapter
-{
- public IFile getFileResource();
-
- public IDocument getEditorIDocument();
-
- public void createTasksInTaskList(ArrayList messages);
-
- public void resetInformationTasks();
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorPlugin.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorPlugin.java
deleted file mode 100644
index dbcfdd1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorPlugin.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.MessageFormat;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-
-
-public class XSDEditorPlugin extends AbstractUIPlugin {
- public final static String PLUGIN_ID = "org.eclipse.wst.xsd.ui";
- public final static String XSD_EDITOR_ID = "org.eclipse.wst.xsd.ui.XSDEditor";
-
- public final static String DEFAULT_TARGET_NAMESPACE = "http://www.example.org";
-
- protected static XSDEditorPlugin plugin;
-
- // protected XMLSchemaPackage xmlschemaPackage;
- // KCPort private static MsgLogger myMsgLogger;
-
- public XSDEditorPlugin() {
- super();
- plugin = this;
- // KCPort myMsgLogger = getMsgLogger();
- // myMsgLogger.write(Level.CONFIG, new BuildInfo());
- // myMsgLogger.write(Level.CONFIG, BuildInfo.getWSABuildLevel());
- }
-
- /**
- * @deprecated use StructuredModelManager.getModelManager(); instead.
- */
- public static IModelManager getModelManager() {
- return StructuredModelManager.getModelManager();
- }
-
-
- /**
- * Get the Install URL
- */
- public static URL getInstallURL() {
- try
- {
- return FileLocator.resolve(plugin.getBundle().getEntry("/"));
- }
- catch (IOException e)
- {
- return null;
- }
- }
-
- /**
- * Return the plugin physical directory location
- */
- public static IPath getPluginLocation() {
- try {
- IPath installPath = new Path(getInstallURL().toExternalForm()).removeTrailingSeparator();
- String installStr = FileLocator.toFileURL(new URL(installPath.toString())).getFile();
- return new Path(installStr);
- }
- catch (IOException e) {
-
- }
- return null;
- }
-
- /**
- * Get the metadata directory for this plugin
- */
- public static String getMetaDataDirectory() {
- return getPlugin().getStateLocation().toOSString();
- }
-
- /**
- * Get the one xmlschema package.
- */
- // public XMLSchemaPackage getXMLSchemaPackage()
- // {
- // return xmlschemaPackage;
- // }
- // /**
- // * Get the one xmlschema factory.
- // */
- // public XMLSchemaFactory getXMLSchemaFactory()
- // {
- // return (XMLSchemaFactory)xmlschemaPackage.getEFactoryInstance();
- // }
- /**
- * Get the singleton instance.
- */
- public static XSDEditorPlugin getPlugin() {
- return plugin;
- }
-
- public static Image getXSDImage(String iconName) {
- return getPlugin().getImage(iconName);
- }
-
- public Image getImage(String iconName) {
- ImageRegistry imageRegistry = getImageRegistry();
-
- if (imageRegistry.get(iconName) != null) {
- return imageRegistry.get(iconName);
- }
- else {
- imageRegistry.put(iconName, ImageDescriptor.createFromFile(getClass(), iconName));
- return imageRegistry.get(iconName);
- }
- }
-
- public static String getXSDString(String key) {
- return Platform.getResourceBundle(plugin.getBundle()).getString(key);
- }
-
- /**
- * This gets the string resource and does one substitution.
- */
- public String getString(String key, Object s1) {
- return MessageFormat.format(Platform.getResourceBundle(getBundle()).getString(key), new Object[]{s1});
- }
-
- // public IWorkspace getWorkspace()
- // {
- // return ResourcesPlugin.getWorkspace();
- // }
-
- public static Shell getShell() {
- return getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell();
- }
-
- /**
- * Get the xml schema default namespace prefix
- */
- public String getXMLSchemaPrefix() {
- return getPreferenceStore().getString(CONST_XSD_DEFAULT_PREFIX_TEXT);
- }
-
- /**
- * Get the xml schema default target namespace
- */
- public String getXMLSchemaTargetNamespace() {
- String targetNamespace = getPreferenceStore().getString(CONST_DEFAULT_TARGET_NAMESPACE);
- if (!targetNamespace.endsWith("/")) {
- targetNamespace = targetNamespace + "/";
- }
- return targetNamespace;
- }
-
- /**
- * Get the xml schema language qualification
- */
- public boolean isQualifyXMLSchemaLanguage() {
- return getPreferenceStore().getBoolean(CONST_XSD_LANGUAGE_QUALIFY);
- }
-
- /**
- * Method isCombinedDesignAndSourceView.
- *
- * @return boolean if the editor should have a single page that is a
- * combined design and source page
- */
- public boolean isCombinedDesignAndSourceView() {
- return COMBINED_LAYOUT.equals(getPreferenceStore().getString(EDITOR_LAYOUT));
- }
-
- public int getDesignLayout() {
- if (TOP_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return SWT.VERTICAL;
- }
- else if (BOTTOM_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return SWT.VERTICAL;
- }
- else if (LEFT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return SWT.HORIZONTAL;
- }
- else if (RIGHT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return SWT.HORIZONTAL;
- }
- return SWT.HORIZONTAL;
- }
-
- public String getDesignLayoutPosition() {
- if (TOP_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return TOP_LAYOUT;
- }
- else if (BOTTOM_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return BOTTOM_LAYOUT;
- }
- else if (LEFT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return LEFT_LAYOUT;
- }
- else if (RIGHT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
- return RIGHT_LAYOUT;
- }
- return RIGHT_LAYOUT;
- }
-
- /*---------------------------------------------------------------------------*/
- /* the following methods are impls for the IPluginHelper interface */
- /*---------------------------------------------------------------------------*/
- // public void setMsgLoggerConfig(Hashtable msgLoggerConfig)
- // {
- // getMsgLogger().setMsgLoggerConfig(msgLoggerConfig);
- // }
- //
- // public Hashtable getMsgLoggerConfig(Plugin plugin)
- // {
- // return (new PluginHelperImpl().getMsgLoggerConfig(plugin));
- // }
- //
- // public Hashtable getMsgLoggerConfig()
- // {
- // return (getMsgLoggerConfig(this));
- // }
- //
- // /**
- // * XSDEditor and XSDModel use the same logger. See plugin.xml
- // */
- // public MsgLogger getMsgLogger()
- // {
- // if (myMsgLogger == null)
- // {
- // myMsgLogger = (MsgLogger) MsgLogger.getFactory().getLogger(new
- // PluginHelperImpl().getMsgLoggerName(this), this);
- // }
- // return (myMsgLogger);
- // }
- public static final String CONST_XSD_DEFAULT_PREFIX_TEXT = "org.eclipse.wst.xmlschema.xsdDefaultPrefixText";
- public static final String CONST_XSD_LANGUAGE_QUALIFY = "org.eclipse.wst.xmlschema.xsdQualify";
- public static final String CONST_DEFAULT_TARGET_NAMESPACE = "org.eclipse.wst.xmlschema.defaultTargetnamespaceText";
-
- // Preference to store which page should come up as the default page in
- // the editor. This setting is based
- // on the page that was left showing the last time the editor was closed.
- public static String DEFAULT_PAGE = "org.eclipse.wst.xsd.ui.internal.defaultPage";
- public static String DESIGN_PAGE = "org.eclipse.wst.xsd.ui.internal.designPage";
- public static String SOURCE_PAGE = "org.eclipse.wst.xsd.ui.internal.sourcePage";
- public static String GRAPH_PAGE = "org.eclipse.wst.xsd.ui.internal.graphPage";
-
- public static String EDITOR_LAYOUT = "org.eclipse.wst.xsd.ui.internal.editorlayout";
- public static String COMBINED_LAYOUT = "org.eclipse.wst.xsd.ui.internal.combined";
- public static String SEPARATE_LAYOUT = "org.eclipse.wst.xsd.ui.internal.separate";
-
- public static String DESIGN_LAYOUT = "org.eclipse.wst.xsd.ui.internal.designlayout";
- public static String TOP_LAYOUT = "org.eclipse.wst.xsd.ui.internal.top";
- public static String BOTTOM_LAYOUT = "org.eclipse.wst.xsd.ui.internal.bottom";
- public static String LEFT_LAYOUT = "org.eclipse.wst.xsd.ui.internal.left";
- public static String RIGHT_LAYOUT = "org.eclipse.wst.xsd.ui.internal.right";
-
- /**
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#initializeDefaultPreferences(IPreferenceStore)
- */
- protected void initializeDefaultPreferences(IPreferenceStore store) {
- super.initializeDefaultPreferences(store);
-
- store.setDefault(CONST_XSD_DEFAULT_PREFIX_TEXT, "xsd");
- store.setDefault(CONST_XSD_LANGUAGE_QUALIFY, false);
-
- store.setDefault(DEFAULT_PAGE, DESIGN_PAGE);
- store.setDefault(EDITOR_LAYOUT, COMBINED_LAYOUT);
- store.setDefault(DESIGN_LAYOUT, RIGHT_LAYOUT);
-
- store.setDefault(XSDEditorPlugin.CONST_DEFAULT_TARGET_NAMESPACE, DEFAULT_TARGET_NAMESPACE);
- }
-
- public void setDefaultPage(String page) {
- getPreferenceStore().setValue(DEFAULT_PAGE, page);
- }
-
- /**
- * Method getDefaultPage.
- *
- * @return String value of the string constant that is the default page
- * the editor should turn to when first opened. Changes to the
- * last visible page when the editor was closed
- */
- public String getDefaultPage() {
- return getPreferenceStore().getString(DEFAULT_PAGE);
- }
-
- protected URL baseURL;
-
- public URL getBaseURL() {
- try
- {
- return FileLocator.resolve(getBundle().getEntry("/"));
- }
- catch (IOException e)
- {
- return null;
- }
- }
-
- public Image getIconImage(String object) {
- try {
- return ExtendedImageRegistry.getInstance().getImage(new URL(getBaseURL() + "icons/" + object + ".gif"));
- }
- catch (MalformedURLException exception) {
- System.out.println("Failed to load image for '" + object + "'");
- }
- return null;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlink.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlink.java
deleted file mode 100644
index 13d4d57..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlink.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-
-package org.eclipse.wst.xsd.ui.internal;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-
-/**
- * XSDHyperlink knows how to open links from XSD files.
- *
- * @see XSDHyperlinkDetector
- */
-public class XSDHyperlink implements IHyperlink
-{
- private IRegion fRegion;
- private XSDConcreteComponent fComponent;
-
- public XSDHyperlink(IRegion region, XSDConcreteComponent component)
- {
- fRegion = region;
- fComponent = component;
- }
-
- public IRegion getHyperlinkRegion()
- {
- return fRegion;
- }
-
- public String getTypeLabel()
- {
- return null;
- }
-
- public String getHyperlinkText()
- {
- return null;
- }
-
- public void open()
- {
- XSDSchema schema = fComponent.getSchema();
-
- if (schema == null)
- {
- return;
- }
-
- String schemaLocation = schema.getSchemaLocation();
- schemaLocation = URIHelper.removePlatformResourceProtocol(schemaLocation);
- IPath schemaPath = new Path(schemaLocation);
- IFile schemaFile = ResourcesPlugin.getWorkspace().getRoot().getFile(schemaPath);
-
- boolean fileExists = schemaFile != null && schemaFile.exists();
-
- if (!fileExists)
- {
- return;
- }
- IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- if (workbenchWindow != null)
- {
- IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
- IEditorPart editorPart = workbenchPage.getActiveEditor();
-
- workbenchPage.getNavigationHistory().markLocation(editorPart);
-
- try
- {
- editorPart = IDE.openEditor(workbenchPage, schemaFile, true);
- if (editorPart instanceof XSDEditor)
- {
- ((XSDEditor) editorPart).openOnGlobalReference(fComponent);
- }
- }
- catch (PartInitException pie)
- {
- Logger.log(Logger.WARNING_DEBUG, pie.getMessage(), pie);
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlinkDetector.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlinkDetector.java
deleted file mode 100644
index 6d3f2ad..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlinkDetector.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.List;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Node;
-
-/**
- * Detects hyperlinks for XSD files. Used by the XSD text editor to provide a
- * "Go to declaration" functionality similar with the one provided by the Java
- * editor.
- */
-public class XSDHyperlinkDetector extends BaseHyperlinkDetector
-{
- /**
- * Determines whether an attribute is "linkable" that is, the component it
- * points to can be the target of a "go to definition" navigation. Derived
- * classes should override.
- *
- * @param name the attribute name. Must not be null.
- * @return true if the attribute is linkable, false otherwise.
- */
- protected boolean isLinkableAttribute(String name)
- {
- boolean isLinkable = name.equals(XSDConstants.TYPE_ATTRIBUTE) ||
- name.equals(XSDConstants.REFER_ATTRIBUTE) ||
- name.equals(XSDConstants.REF_ATTRIBUTE) ||
- name.equals(XSDConstants.BASE_ATTRIBUTE) ||
- name.equals(XSDConstants.SCHEMALOCATION_ATTRIBUTE) ||
- name.equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE) ||
- name.equals(XSDConstants.ITEMTYPE_ATTRIBUTE) ||
- name.equals(XSDConstants.MEMBERTYPES_ATTRIBUTE)
- ;
-
- return isLinkable;
- }
-
- /**
- * Creates a hyperlink based on the selected node. Derived classes should
- * override.
- *
- * @param document the source document.
- * @param node the node under the cursor.
- * @param region the text region to use to create the hyperlink.
- * @return a new IHyperlink for the node or null if one cannot be created.
- */
- protected IHyperlink createHyperlink(IDocument document, IDOMNode node, IRegion region)
- {
- XSDSchema xsdSchema = getXSDSchema(document);
-
- if (xsdSchema == null)
- {
- return null;
- }
-
- XSDConcreteComponent targetComponent = getTargetXSDComponent(xsdSchema, node);
-
- if (targetComponent != null)
- {
- IRegion nodeRegion = getHyperlinkRegion(node);
-
- return new XSDHyperlink(nodeRegion, targetComponent);
- }
-
- return null;
- }
-
- /**
- * Finds the XSD component for the given node.
- *
- * @param xsdSchema cannot be null
- * @param node cannot be null
- * @return XSDConcreteComponent
- */
- private XSDConcreteComponent getTargetXSDComponent(XSDSchema xsdSchema, IDOMNode node)
- {
- XSDConcreteComponent component = null;
-
- XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent((Node) node);
- if (xsdComp instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration elementDecl = (XSDElementDeclaration) xsdComp;
- if (elementDecl.isElementDeclarationReference())
- {
- component = elementDecl.getResolvedElementDeclaration();
- }
- else
- {
- XSDConcreteComponent typeDef = null;
- if (elementDecl.getAnonymousTypeDefinition() == null)
- {
- typeDef = elementDecl.getTypeDefinition();
- }
-
- XSDConcreteComponent subGroupAffiliation = elementDecl.getSubstitutionGroupAffiliation();
-
- if (typeDef != null && subGroupAffiliation != null)
- {
- // we have 2 things we can navigate to, if the
- // cursor is anywhere on the substitution
- // attribute
- // then jump to that, otherwise just go to the
- // typeDef.
- if (node instanceof Attr && ((Attr) node).getLocalName().equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE))
- {
- component = subGroupAffiliation;
- }
- else
- {
- // try to reveal the type now. On success,
- // then we return true.
- // if we fail, set the substitution group
- // as
- // the object to reveal as a backup plan.
- // ISSUE: how to set backup?
- // if (revealObject(typeDef)) {
- component = typeDef;
- // }
- // else {
- // objectToReveal = subGroupAffiliation;
- // }
- }
- }
- else
- {
- // one or more of these is null. If the
- // typeDef is
- // non-null, use it. Otherwise
- // try and use the substitution group
- component = typeDef != null ? typeDef : subGroupAffiliation;
- }
- }
- }
- else if (xsdComp instanceof XSDModelGroupDefinition)
- {
- XSDModelGroupDefinition elementDecl = (XSDModelGroupDefinition) xsdComp;
- if (elementDecl.isModelGroupDefinitionReference())
- {
- component = elementDecl.getResolvedModelGroupDefinition();
- }
- }
- else if (xsdComp instanceof XSDAttributeDeclaration)
- {
- XSDAttributeDeclaration attrDecl = (XSDAttributeDeclaration) xsdComp;
- if (attrDecl.isAttributeDeclarationReference())
- {
- component = attrDecl.getResolvedAttributeDeclaration();
- }
- else if (attrDecl.getAnonymousTypeDefinition() == null)
- {
- component = attrDecl.getTypeDefinition();
- }
- }
- else if (xsdComp instanceof XSDAttributeGroupDefinition)
- {
- XSDAttributeGroupDefinition attrGroupDef = (XSDAttributeGroupDefinition) xsdComp;
- if (attrGroupDef.isAttributeGroupDefinitionReference())
- {
- component = attrGroupDef.getResolvedAttributeGroupDefinition();
- }
- }
- else if (xsdComp instanceof XSDIdentityConstraintDefinition)
- {
- XSDIdentityConstraintDefinition idConstraintDef = (XSDIdentityConstraintDefinition) xsdComp;
- if (idConstraintDef.getReferencedKey() != null)
- {
- component = idConstraintDef.getReferencedKey();
- }
- }
- else if (xsdComp instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition typeDef = (XSDSimpleTypeDefinition) xsdComp;
-
- // Simple types can be one of restriction, list or union.
-
- XSDVariety variety = typeDef.getVariety();
- int varietyType = variety.getValue();
-
- switch (varietyType)
- {
- case XSDVariety.ATOMIC :
- {
- component = typeDef.getBaseTypeDefinition();
- }
- break;
- case XSDVariety.LIST :
- {
- component = typeDef.getItemTypeDefinition();
- }
- break;
- case XSDVariety.UNION :
- {
- List memberTypes = typeDef.getMemberTypeDefinitions();
- if (memberTypes != null && memberTypes.size() > 0)
- {
- // ISSUE: What if there are more than one type?
- // This could be a case for multiple hyperlinks at the same
- // location.
- component = (XSDConcreteComponent) memberTypes.get(0);
- }
- }
- break;
- }
- }
- else if (xsdComp instanceof XSDTypeDefinition)
- {
- XSDTypeDefinition typeDef = (XSDTypeDefinition) xsdComp;
- component = typeDef.getBaseType();
- }
- else if (xsdComp instanceof XSDSchemaDirective)
- {
- XSDSchemaDirective directive = (XSDSchemaDirective) xsdComp;
- component = directive.getResolvedSchema();
- }
-
- // Avoid types located in the schema for schema (the built in XSD types)
- // as we don't want to navigate to their definition.
-
- if (component != null)
- {
- XSDSchema schema = component.getSchema();
-
- if (schema.equals(schema.getSchemaForSchema())) {
- component = null;
- }
- }
-
- return component;
- }
-
- /**
- * Gets the xsd schema from document
- *
- * @param document
- * @return XSDSchema or null of one does not exist yet for document
- */
- private XSDSchema getXSDSchema(IDocument document)
- {
- XSDSchema schema = null;
- IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(document);
- if (model != null)
- {
- try
- {
- if (model instanceof IDOMModel)
- {
- IDOMDocument domDoc = ((IDOMModel) model).getDocument();
- if (domDoc != null)
- {
- XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
- /*
- * ISSUE: Didn't want to go through initializing schema if it does
- * not already exist, so just attempted to get existing adapter. If
- * doesn't exist, just don't bother working.
- */
- if (modelAdapter != null)
- schema = modelAdapter.getSchema();
- }
- }
- }
- finally
- {
- model.releaseFromRead();
- }
- }
- return schema;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMenuListener.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMenuListener.java
deleted file mode 100644
index 090992a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMenuListener.java
+++ /dev/null
@@ -1,1767 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.xsd.ui.internal.actions.AddEnumsAction;
-import org.eclipse.wst.xsd.ui.internal.actions.AddModelGroupAction;
-import org.eclipse.wst.xsd.ui.internal.actions.BackAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateAnnotationAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateGroupAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateIdentityConstraintsAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateLocalComplexTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateLocalSimpleTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateSimpleContentAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateSimpleTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.actions.DeleteAction;
-import org.eclipse.wst.xsd.ui.internal.actions.OpenSchemaAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SetBaseTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SetMultiplicityAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SetTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.XSDEditNamespacesAction;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class XSDMenuListener implements IMenuListener
-{
- protected ISelectionProvider selectionProvider;
- protected DeleteAction deleteAction;
- protected CreateElementAction addComplexTypeAction;
- protected XSDSchema xsdSchema;
- protected boolean isReadOnly;
- protected Object sourceContext;
- //private RefactorActionGroup fRefactorMenuGroup;
-
- /**
- * Constructor for XSDMenuListener.
- */
- public XSDMenuListener(ISelectionProvider selectionProvider)
- {
- super();
- this.selectionProvider = selectionProvider;
-
- deleteAction = new DeleteAction(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE"), null, getXSDSchema());
- deleteAction.setSelectionProvider(selectionProvider);
- selectionProvider.addSelectionChangedListener(deleteAction);
- }
-
- public void setSourceContext(Object sourceContext)
- {
- this.sourceContext = sourceContext;
- }
-
- public void setSelectionProvider(ISelectionProvider selectionProvider)
- {
- this.selectionProvider = selectionProvider;
- }
-
- protected XSDSchema getXSDSchema()
- {
- return xsdSchema;
- }
-
- protected Object getSelectedElement()
- {
- ISelection selection = selectionProvider.getSelection();
- if (selection.isEmpty())
- {
- return null;
- }
- return ((IStructuredSelection) selection).getFirstElement();
- }
-
- protected boolean isSchemaReadOnly()
- {
- XSDSchema editorSchema = ((XSDEditor)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).getXSDSchema();
- if (editorSchema == xsdSchema) {
- return false;
- }
-
- return true;
- }
-
- protected XSDSchema getCurrentSchemaInEditor()
- {
- return ((XSDEditor)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).getXSDSchema();
- }
-
- protected void updateXSDSchema()
- {
- isReadOnly = false;
-
- Object object = getSelectedElement();
- if (object instanceof XSDConcreteComponent)
- {
- xsdSchema = ((XSDConcreteComponent) object).getSchema();
- isReadOnly = isSchemaReadOnly();
- }
- else if (object instanceof Category)
- {
- Category cg = (Category) object;
- xsdSchema = cg.getXSDSchema();
- }
- else if (object instanceof CategoryAdapter)
- {
- CategoryAdapter category = (CategoryAdapter) object;
- xsdSchema = category.getXSDSchema();
- }
- }
-
- /*
- * @see IMenuListener#menuAboutToShow(IMenuManager)
- */
- public void menuAboutToShow(IMenuManager manager)
- {
- isReadOnly = false;
- updateXSDSchema();
- if (xsdSchema == null)
- {
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- return;
- }
-
- deleteAction.setXSDSchema(xsdSchema);
- deleteAction.setEnabled(!isReadOnly);
-
- BackAction backAction = new BackAction(XSDEditorPlugin.getXSDString("_UI_ACTION_BACK_TO_SCHEMA_VIEW")); //$NON-NLS-1$
- backAction.setXSDSchema(getCurrentSchemaInEditor());
- backAction.setSelectionProvider(selectionProvider);
-
- Object selectedElementObj = getSelectedElement();
-
- if (selectedElementObj instanceof XSDSchema || selectedElementObj instanceof Category || selectedElementObj instanceof CategoryAdapter)
- {
- backAction.setEnabled(false);
- }
- manager.add(backAction);
- manager.add(new Separator());
-// if (undoAction == null && textEditor != null)
-// {
-// undoAction = textEditor.getAction(org.eclipse.ui.texteditor.ITextEditorActionConstants.UNDO);
-// redoAction = textEditor.getAction(org.eclipse.ui.texteditor.ITextEditorActionConstants.REDO);
-// }
- // Element selectedElement = getSelectedElement();
-
- Element selectedElement = null;
-
- if (selectedElementObj instanceof Element)
- {
- selectedElement = (Element) selectedElementObj;
- }
- else if (selectedElementObj instanceof XSDConcreteComponent)
- {
- selectedElement = ((XSDConcreteComponent) selectedElementObj).getElement();
- }
- else if (selectedElementObj instanceof Category || selectedElementObj instanceof CategoryAdapter)
- {
- int groupType = -1;
- if (selectedElementObj instanceof Category)
- {
- Category category = (Category) selectedElementObj;
- groupType = category.getGroupType();
- }
- // todo... We need to ensure we eliminate the need for
- // this case. The XSDMenuListener class should not have
- // view dependant code. We need to do some work to ensure all
- // views utilize the 'Category' model object
- else if (selectedElementObj instanceof CategoryAdapter)
- {
- CategoryAdapter categoryAdapter = (CategoryAdapter) selectedElementObj;
- groupType = categoryAdapter.getGroupType();
- }
- ArrayList attributes = null;
- Element parent = getXSDSchema().getElement();
-
- if (parent == null)
- {
- return;
- }
-
- Node relativeNode = null;
- switch (groupType)
- {
- case Category.TYPES : {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
- Action action = addCreateElementAction(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_COMPLEX_TYPE"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
- Action action2 = addCreateSimpleTypeAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SIMPLE_TYPE"), attributes, parent, relativeNode);
- ((CreateElementAction) action2).setIsGlobal(true);
- break;
- }
- case Category.ELEMENTS : {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ELEMENT_ELEMENT_TAG, "GlobalElement")));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- Action action = addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- break;
- }
- case Category.GROUPS : {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.GROUP_ELEMENT_TAG, "Group")));
- CreateGroupAction groupAction = addCreateGroupAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GROUP"), attributes, parent, relativeNode);
- groupAction.setIsGlobal(true);
- break;
- }
- case Category.ATTRIBUTES : {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTE_ELEMENT_TAG, "GlobalAttribute")));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- Action action = addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GLOBAL_ATTRIBUTE"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- break;
- }
- case Category.ATTRIBUTE_GROUPS : {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, "AttributeGroup")));
- Action action = addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- break;
- }
- case Category.NOTATIONS : {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.NOTATION_ELEMENT_TAG, "Notation")));
- attributes.add(new DOMAttribute(XSDConstants.PUBLIC_ATTRIBUTE, ""));
- Action action = addCreateElementAction(manager, XSDConstants.NOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_NOTATION"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- break;
- }
- case Category.DIRECTIVES : {
- boolean b = true;
- NodeList children = parent.getChildNodes();
- int length = children.getLength();
- Node effectiveRelativeNode = parent.getFirstChild();
- for (int i = 0; i < length && b; i++)
- {
- Node child = children.item(i);
- if (child != null && child instanceof Element)
- {
- if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.INCLUDE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.IMPORT_ELEMENT_TAG, false)
- || XSDDOMHelper.inputEquals((Element) child, XSDConstants.REDEFINE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
- {
- effectiveRelativeNode = child;
- }
- else
- {
- b = false;
- }
- }
- }
- relativeNode = effectiveRelativeNode != null ? XSDDOMHelper.getNextElementNode(effectiveRelativeNode) : null;
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, ""));
- Action action = addCreateElementAction(manager, XSDConstants.INCLUDE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_INCLUDE"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- action = addCreateElementAction(manager, XSDConstants.IMPORT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_IMPORT"), null, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- action = addCreateElementAction(manager, XSDConstants.REDEFINE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_REDEFINE"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- break;
- }
- case Category.ANNOTATIONS : {
- Action action = addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- break;
- }
- }
-// manager.add(new Separator());
-// if (undoAction != null)
-// {
-// manager.add(undoAction);
-// manager.add(redoAction);
-// }
-
- // insertion point for popupMenus extension
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-
- return;
- }
- if (selectedElement != null)
- {
- addContextItems(manager, selectedElement, null);
- manager.add(new Separator());
- }
-
- manager.add(new Separator());
- if (deleteAction != null)
- {
- manager.add(deleteAction);
- }
-
- manager.add(new Separator());
- manager.add(new Separator("refactoring_slot"));
- manager.add(new Separator());
- manager.add(new Separator("search_slot"));
- manager.add(new Separator());
-
- // insertion point for popupMenus extension
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- protected String getBuiltInStringQName()
- {
- String stringName = "string";
- if (getXSDSchema() != null)
- {
- String schemaForSchemaPrefix = getXSDSchema().getSchemaForSchemaQNamePrefix();
- if (schemaForSchemaPrefix != null && schemaForSchemaPrefix.length() > 0)
- {
- String prefix = getXSDSchema().getSchemaForSchemaQNamePrefix();
- if (prefix != null && prefix.length() > 0)
- {
- stringName = prefix + ":" + stringName;
- }
- }
- }
- return stringName;
- }
-
- /**
- * Method addContextItems.
- *
- * @param manager
- * @param parent -
- * menu items should be context sensitive to this node
- * @param relativeNode -
- * anything inserted, should be inserted before this node (which is a
- * child of the parent node. A value of null means add to the end
- */
- protected void addContextItems(IMenuManager manager, Element parent, Node relativeNode)
- {
- ArrayList attributes = null;
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- { //
- addSchemaElementItems(manager, parent, relativeNode);
- manager.add(new Separator());
- boolean b = true;
- NodeList children = parent.getChildNodes();
- Node effectiveRelativeNode = parent.getFirstChild();
- for (int i = 0; i < children.getLength() && b; i++)
- {
- Node child = children.item(i);
- if (child != null && child instanceof Element)
- {
- if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.INCLUDE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.IMPORT_ELEMENT_TAG, false)
- || XSDDOMHelper.inputEquals((Element) child, XSDConstants.REDEFINE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
- {
- effectiveRelativeNode = child;
- }
- else
- {
- b = false;
- }
- }
- }
- relativeNode = effectiveRelativeNode != null ? effectiveRelativeNode.getNextSibling() : null;
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, ""));
- addCreateElementAction(manager, XSDConstants.INCLUDE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_INCLUDE"), attributes, parent, relativeNode);
- addCreateElementAction(manager, XSDConstants.IMPORT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_IMPORT"), null, parent, relativeNode);
- addCreateElementAction(manager, XSDConstants.REDEFINE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_REDEFINE"), attributes, parent, relativeNode);
- attributes = null;
- addCreateAnnotationAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
- { //
- addCreateElementAction(manager, XSDConstants.DOCUMENTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_DOC"), attributes, parent, null);
- addCreateElementAction(manager, XSDConstants.APPINFO_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_APP_INFO"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
- Element parentNode = (Element) parent.getParentNode();
- boolean isGlobalElement = false;
- if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- isGlobalElement = true;
- }
- boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- boolean simpleTypeExists = elementExists(XSDConstants.SIMPLETYPE_ELEMENT_TAG, parent);
- boolean complexTypeExists = elementExists(XSDConstants.COMPLEXTYPE_ELEMENT_TAG, parent);
- manager.add(new Separator());
- if (annotationExists)
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- if (!(simpleTypeExists || complexTypeExists) && annotationNode != null)
- {
- manager.add(new Separator());
- }
- }
- else
- {
- if (concreteComponent != null)
- {
- AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- manager.add(new Separator());
- }
- }
- XSDDOMHelper domHelper = new XSDDOMHelper();
- Element anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (anonymousType != null)
- {
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
- addMoveAnonymousGlobal(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
- attributes = null;
- }
- anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (anonymousType != null)
- {
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
- addMoveAnonymousGlobal(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
- attributes = null;
- }
-
- manager.add(new Separator());
- MenuManager setTypeCascadeMenu = new MenuManager(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"));
- manager.add(setTypeCascadeMenu);
-
- SetTypeAction setNewComplexTypeAction = new SetTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_NEW_COMPLEX_TYPE"), ImageDescriptor.createFromFile(XSDEditorPlugin.class, "icons/XSDComplexType.gif"), concreteComponent);
- setNewComplexTypeAction.setTypeKind(XSDConstants.COMPLEXTYPE_ELEMENT);
- setNewComplexTypeAction.setEnabled(!isReadOnly);
- setTypeCascadeMenu.add(setNewComplexTypeAction);
-
- SetTypeAction setNewSimpleTypeAction = new SetTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_NEW_SIMPLE_TYPE"), ImageDescriptor.createFromFile(XSDEditorPlugin.class, "icons/XSDSimpleType.gif"), concreteComponent);
- setNewSimpleTypeAction.setTypeKind(XSDConstants.SIMPLETYPE_ELEMENT);
- setNewSimpleTypeAction.setEnabled(!isReadOnly);
- setTypeCascadeMenu.add(setNewSimpleTypeAction);
-
- SetTypeAction setExistingTypeAction = new SetTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_EXISTING_TYPE"), concreteComponent);
- setExistingTypeAction.setTypeKind(0);
- setExistingTypeAction.setEnabled(!isReadOnly);
- setTypeCascadeMenu.add(setExistingTypeAction);
- manager.add(new Separator());
-
- if (!isGlobalElement)
- {
- addMultiplicityMenu(concreteComponent, manager);
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SEQUENCE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(parent, XSDConstants.CHOICE_ELEMENT_TAG, false))
- { //
- XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- manager.add(new Separator());
- addCreateElementAction(manager, XSDConstants.CHOICE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CHOICE"), attributes, parent, null);
- addCreateElementAction(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SEQUENCE"), attributes, parent, null);
- addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, null);
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ELEMENT_ELEMENT_TAG, "Element", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT"), attributes, parent, null);
- addCreateElementRefAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT_REF"), parent, null);
- manager.add(new Separator());
- attributes = null;
- addCreateElementAction(manager, XSDConstants.ANY_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ELEMENT"), attributes, parent, null);
-
- if (concreteComponent.getContainer() instanceof XSDParticle)
- {
- addMultiplicityMenu(concreteComponent, manager);
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ALL_ELEMENT_TAG, false))
- { //
- XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ELEMENT_ELEMENT_TAG, "Element", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT"), attributes, parent, null);
- addCreateElementRefAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT_REF"), parent, null);
-
- if (concreteComponent.getContainer() instanceof XSDParticle)
- {
- addMultiplicityMenu(concreteComponent, manager);
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
- { //
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- boolean anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
- Node anyAttributeNode = null;
- manager.add(new Separator());
- if (anyAttributeExists)
- {
- anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
- }
- else
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
- }
- attributes = null;
- addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.NOTATION_ELEMENT_TAG, false))
- { //
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- { //
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- boolean restrictionExists = elementExists(XSDConstants.RESTRICTION_ELEMENT_TAG, parent);
- boolean unionExists = elementExists(XSDConstants.UNION_ELEMENT_TAG, parent);
- boolean listExists = elementExists(XSDConstants.LIST_ELEMENT_TAG, parent);
- if (!(restrictionExists || unionExists || listExists))
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementActionIfNotExist(manager, XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), attributes, parent, null);
- attributes = null;
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementActionIfNotExist(manager, XSDConstants.UNION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_UNION"), attributes, parent, null);
- attributes = null;
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementActionIfNotExist(manager, XSDConstants.LIST_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LIST"), attributes, parent, null);
- attributes = null;
- }
- if (XSDDOMHelper.inputEquals(parent.getParentNode(), XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
- addMoveAnonymousGlobal(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, parent, null);
- attributes = null;
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.GROUP_ELEMENT_TAG, false))
- { //
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- { //
- boolean annotationExists = false;
- boolean contentExists = false;
- Node annotationNode = null;
- NodeList children = parent.getChildNodes();
- for (int i = 0; i < children.getLength(); i++)
- {
- Node child = children.item(i);
- if (child != null && child instanceof Element)
- {
- if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
- {
- annotationNode = child;
- annotationExists = true;
- }
- else if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.SEQUENCE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.ALL_ELEMENT_TAG, false)
- || XSDDOMHelper.inputEquals((Element) child, XSDConstants.CHOICE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.GROUP_ELEMENT_TAG, true)
- || XSDDOMHelper.inputEquals((Element) child, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- contentExists = true;
- }
- }
- }
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- manager.add(new Separator());
- addSetBaseTypeAction(manager, parent);
- XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
- if (annotationExists)
- {
- if (!contentExists)
- {
- if (concreteComponent != null)
- {
- AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- }
- addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, annotationNode.getNextSibling());
- attributes = null;
- }
- }
- else
- {
- if (!contentExists)
- {
- if (concreteComponent != null)
- {
- AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- }
- addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, parent.getFirstChild());
- attributes = null;
- }
- }
- manager.add(new Separator());
- if (XSDDOMHelper.inputEquals(parent.getParentNode(), XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
- addMoveAnonymousGlobal(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, parent, null);
- attributes = null;
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- { //
- XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
- Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- manager.add(new Separator());
- if (derivedByNode == null)
- {
- TypesHelper typesHelper = new TypesHelper(getXSDSchema());
- String firstType = "";
- List listOfCT = typesHelper.getUserComplexTypeNamesList();
- if (listOfCT.size() > 0)
- {
- firstType = (String) (listOfCT).get(0);
- }
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, firstType));
- addCreateElementActionIfNotExist(manager, XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), attributes, parent, null);
- addCreateElementActionIfNotExist(manager, XSDConstants.EXTENSION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_EXTENSION"), attributes, parent, null);
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- { //
- XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
- Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- manager.add(new Separator());
- if (derivedByNode == null)
- {
- TypesHelper typesHelper = new TypesHelper(getXSDSchema());
- String firstType = "";
- List listOfCT = typesHelper.getUserComplexTypeNamesList();
- if (listOfCT.size() > 0)
- {
- firstType = (String) (listOfCT).get(0);
- }
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, firstType));
- addCreateElementActionIfNotExist(manager, XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), attributes, parent, null);
- addCreateElementActionIfNotExist(manager, XSDConstants.EXTENSION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_EXTENSION"), attributes, parent, null);
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
- {
- Element parentNode = (Element) parent.getParentNode();
- // <simpleContent>
- // <restriction>
- // ...
- if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- boolean annotationExists = false;
- boolean anyAttributeExists = false;
- Node anyAttributeNode = null;
- anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
- annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
- .getFirstChild());
- if (annotationExists)
- {
- getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- }
-
- manager.add(new Separator());
- if (anyAttributeExists)
- {
- anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
- }
- else
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
- }
- attributes = null;
- addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- }
- // <simpleType>
- // <restriction>
- // ...
- else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- boolean annotationExists = false;
- attributes = null;
- annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
- .getFirstChild());
- if (annotationExists)
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, annotationNode
- .getNextSibling());
- }
- else
- {
- addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, parent
- .getFirstChild());
- }
- manager.add(new Separator());
- addCreateElementAction(manager, XSDConstants.PATTERN_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_PATTERN"), attributes, parent, null);
- addCreateElementAction(manager, XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), attributes, parent, null);
- addEnumsAction(manager, XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUMS"), attributes, parent, null);
- }
- // <complexContent>
- // <restriction>
- // ...
- else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- boolean annotationExists = false;
- boolean anyAttributeExists = false;
- Node anyAttributeNode = null;
- boolean sequenceExists = elementExists(XSDConstants.SEQUENCE_ELEMENT_TAG, parent);
- boolean choiceExists = elementExists(XSDConstants.CHOICE_ELEMENT_TAG, parent);
- boolean allExists = elementExists(XSDConstants.ALL_ELEMENT_TAG, parent);
- boolean groupExists = elementExists(XSDConstants.GROUP_ELEMENT_TAG, parent);
- anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
- annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
- .getFirstChild());
- manager.add(new Separator());
- if (annotationExists)
- {
- if (!(sequenceExists || choiceExists || allExists || groupExists))
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, annotationNode
- .getNextSibling());
- addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, annotationNode.getNextSibling());
- }
- }
- else
- {
- if (!(sequenceExists || choiceExists || allExists || groupExists))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, parent.getFirstChild());
- addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, parent.getFirstChild());
- }
- }
- manager.add(new Separator());
- if (anyAttributeExists)
- {
- anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
- }
- else
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
- }
- attributes = null;
- addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.EXTENSION_ELEMENT_TAG, false))
- {
- Element parentNode = (Element) parent.getParentNode();
- // <simpleContent>
- // <extension>
- // ...
- if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- boolean anyAttributeExists = false;
- Node anyAttributeNode = null;
- anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
- .getFirstChild());
- manager.add(new Separator());
- if (anyAttributeExists)
- {
- anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
- }
- else
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
- }
- attributes = null;
- addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- }
- // <complexContent>
- // <extension>
- // ...
- else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- boolean annotationExists = false;
- boolean anyAttributeExists = false;
- Node anyAttributeNode = null;
- boolean sequenceExists = elementExists(XSDConstants.SEQUENCE_ELEMENT_TAG, parent);
- boolean choiceExists = elementExists(XSDConstants.CHOICE_ELEMENT_TAG, parent);
- boolean allExists = elementExists(XSDConstants.ALL_ELEMENT_TAG, parent);
- boolean groupExists = elementExists(XSDConstants.GROUP_ELEMENT_TAG, parent);
- anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
- annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
- .getFirstChild());
- manager.add(new Separator());
- if (annotationExists)
- {
- if (!(sequenceExists || choiceExists || allExists || groupExists))
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, annotationNode
- .getNextSibling());
- addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, annotationNode.getNextSibling());
- }
- }
- else
- {
- if (!(sequenceExists || choiceExists || allExists || groupExists))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, parent.getFirstChild());
- addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, parent.getFirstChild());
- }
- }
- manager.add(new Separator());
- if (anyAttributeExists)
- {
- anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
- }
- else
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
- }
- attributes = null;
- addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- }
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.REDEFINE_ELEMENT_TAG, false))
- { //
- addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, null);
- addCreateElementAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SIMPLE_TYPE"), attributes, parent, null);
- addCreateElementAction(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_COMPLEX_TYPE"), attributes, parent, null);
- addCreateGroupAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GROUP"), attributes, parent, null);
- addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP"), attributes, parent, null);
- manager.add(new Separator());
- addOpenSchemaAction(manager, XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), parent);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.LIST_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- manager.add(new Separator());
- addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- manager.add(new Separator());
- addCreateLocalSimpleTypeAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.UNIQUE_ELEMENT_TAG, false))
- {
- boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
- if (annotationExists)
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, annotationNode.getNextSibling());
- }
- else
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, parent.getFirstChild());
- }
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
- addCreateElementAction(manager, XSDConstants.FIELD_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_FIELD"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.KEYREF_ELEMENT_TAG, false))
- {
- boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
- if (annotationExists)
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, annotationNode.getNextSibling());
- }
- else
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, parent.getFirstChild());
- }
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
- addCreateElementAction(manager, XSDConstants.FIELD_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_FIELD"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.KEY_ELEMENT_TAG, false))
- {
- boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
- if (annotationExists)
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, annotationNode.getNextSibling());
- }
- else
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, parent.getFirstChild());
- }
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
- addCreateElementAction(manager, XSDConstants.FIELD_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_FIELD"), attributes, parent, null);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.IMPORT_ELEMENT_TAG, false))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- manager.add(new Separator());
- addOpenSchemaAction(manager, XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), parent);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SELECTOR_ELEMENT_TAG, false))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.FIELD_ELEMENT_TAG, false))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.INCLUDE_ELEMENT_TAG, false))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- manager.add(new Separator());
- addOpenSchemaAction(manager, XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), parent);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ANY_ELEMENT_TAG, false))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- // need to add adapters for the ANY element. I'd rather not provide this menu
- // and let users see that the graph view doesn't update
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, null);
- }
- // Facets all have optional annotation nodes
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MINEXCLUSIVE_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MININCLUSIVE_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MAXINCLUSIVE_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.TOTALDIGITS_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.FRACTIONDIGITS_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.LENGTH_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MINLENGTH_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MAXLENGTH_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ENUMERATION_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.WHITESPACE_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.PATTERN_ELEMENT_TAG, false))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
- {
- addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ELEMENT_ELEMENT_TAG, true))
- {
- XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)getXSDSchema().getCorrespondingComponent(parent);
- if (xsdConcreteComponent instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdConcreteComponent;
- XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
- if (resolvedElementDeclaration.getRootContainer() == xsdSchema)
- {
- parent = resolvedElementDeclaration.getElement();
-
- boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
- parent.getFirstChild());
- boolean simpleTypeExists = elementExists(XSDConstants.SIMPLETYPE_ELEMENT_TAG, parent);
- boolean complexTypeExists = elementExists(XSDConstants.COMPLEXTYPE_ELEMENT_TAG, parent);
- manager.add(new Separator());
- if (annotationExists)
- {
- Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
- if (!(simpleTypeExists || complexTypeExists) && annotationNode != null)
- {
- manager.add(new Separator());
- }
- }
- else
- {
- XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
- if (concreteComponent != null)
- {
- AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
- addModelGroupAction.setEnabled(!isReadOnly);
- manager.add(addModelGroupAction);
-
- manager.add(new Separator());
- }
- }
- XSDDOMHelper domHelper = new XSDDOMHelper();
- Element anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (anonymousType != null)
- {
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
- addMoveAnonymousGlobal(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
- attributes = null;
- }
- anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (anonymousType != null)
- {
- manager.add(new Separator());
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
- addMoveAnonymousGlobal(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
- attributes = null;
- }
- }
- addMultiplicityMenu(xsdConcreteComponent, manager);
- }
- }
-
- XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
- if (concreteComponent instanceof XSDNamedComponent)
- {
- addRefactorMenuGroup(manager);
- }
- }
-
- protected void addContextInsertItems(IMenuManager manager, Element parent, Element currentElement, Node relativeNode)
- {
- ArrayList attributes = null;
- if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.INCLUDE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(currentElement, XSDConstants.IMPORT_ELEMENT_TAG, false)
- || XSDDOMHelper.inputEquals(currentElement, XSDConstants.REDEFINE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(currentElement, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, ""));
- addCreateElementAction(manager, XSDConstants.INCLUDE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_INCLUDE"), attributes, parent, relativeNode);
- addCreateElementAction(manager, XSDConstants.IMPORT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_IMPORT"), null, parent, relativeNode);
- addCreateElementAction(manager, XSDConstants.REDEFINE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_REDEFINE"), attributes, parent, relativeNode);
- attributes = null;
- addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- addSchemaElementItems(manager, parent, relativeNode);
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- addCreateLocalSimpleTypeAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- addSchemaElementItems(manager, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.GROUP_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- addSchemaElementItems(manager, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- addSchemaElementItems(manager, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- addSchemaElementItems(manager, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- addSchemaElementItems(manager, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.NOTATION_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- addSchemaElementItems(manager, parent, relativeNode);
- }
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.DOCUMENTATION_ELEMENT_TAG, false))
- {
- addCreateElementAction(manager, XSDConstants.DOCUMENTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_DOC"), attributes, parent, relativeNode);
- addCreateElementAction(manager, XSDConstants.APPINFO_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_APP_INFO"), attributes, parent, relativeNode);
- }
- else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.APPINFO_ELEMENT_TAG, false))
- {
- addCreateElementAction(manager, XSDConstants.DOCUMENTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_DOC"), attributes, parent, relativeNode);
- addCreateElementAction(manager, XSDConstants.APPINFO_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_APP_INFO"), attributes, parent, relativeNode);
- }
- }
-
- protected String getNewGlobalName(String elementTag, String description)
- {
- return getNewGlobalName(elementTag, description, false);
- }
-
- protected String getNewGlobalTypeName(String description)
- {
- return getNewGlobalName(null, description, true);
- }
-
- protected String getNewGlobalName(String elementTag, String description, boolean isSimpleOrComplexType)
- {
- return getNewName(getXSDSchema().getDocument(), elementTag, description, isSimpleOrComplexType);
- }
-
- // TODO.. .we need to rewrite this code to me model driven... not document driven
- //
- protected String getNewName(Node parentNode, String elementTag, String description, boolean isSimpleOrComplexType)
- {
- NodeList list = null;
- NodeList typeList2 = null;
- // if the global name is for a simple or complex type, we ignore the
- // elementTag and populate 2 lists
- // one to look for all simple types and the other to look for all complex
- // types
- if (isSimpleOrComplexType)
- {
- if (parentNode instanceof Document)
- {
- list = ((Document) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- typeList2 = ((Document) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- else if (parentNode instanceof Element)
- {
- list = ((Element) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- typeList2 = ((Element) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- }
- else
- {
- if (parentNode instanceof Document)
- {
- list = ((Document) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, elementTag);
- }
- else if (parentNode instanceof Element)
- {
- list = ((Element) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, elementTag);
- }
- }
- String name = "New" + description;
- if (list == null || list.getLength() == 0 && (typeList2 != null && typeList2.getLength() == 0))
- {
- return name;
- }
- for (int i = 1; i < 100; i++)
- {
- boolean newName = false;
- for (int j = 0; j < list.getLength(); j++)
- {
- String currName = ((Element) list.item(j)).getAttribute(XSDConstants.NAME_ATTRIBUTE);
- if (currName == null || currName.length() == 0)
- {
- continue;
- }
- if (currName.equals(name))
- {
- name = "New" + description + String.valueOf(i);
- newName = true;
- break;
- }
- }
- // if there is another type list and we haven't created a new name, then
- // check the type list
- if (typeList2 != null && !newName)
- {
- for (int j = 0; j < typeList2.getLength(); j++)
- {
- String currName = ((Element) typeList2.item(j)).getAttribute(XSDConstants.NAME_ATTRIBUTE);
- if (currName == null || currName.length() == 0)
- {
- continue;
- }
- if (currName.equals(name))
- {
- name = "New" + description + String.valueOf(i);
- break;
- }
- }
- }
- }
- return name;
- }
-
- protected String getFirstGlobalElementTagName(String elementTag)
- {
- //XMLModel model = getXMLModel();
- //if (model != null)
- {
- XSDSchema schema = getXSDSchema();
- TypesHelper helper = new TypesHelper(schema);
- String prefix = "";
- if (schema != null)
- {
- prefix = helper.getPrefix(schema.getTargetNamespace(), true);
- }
- // get the schema node
- NodeList slist = schema.getDocument().getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SCHEMA_ELEMENT_TAG);
- Node schemaNode = null;
- if (slist != null && slist.getLength() > 0)
- {
- schemaNode = slist.item(0);
- }
- NodeList list = null;
- // get the schema's direct children - hence, globals
- if (schemaNode != null)
- {
- list = schemaNode.getChildNodes();
- }
- String name = null;
- if (list != null)
- {
- for (int i = 0; i < list.getLength(); i++)
- {
- if (list.item(i) instanceof Element)
- {
- if (list.item(i).getLocalName().equals(elementTag))
- {
- name = ((Element) list.item(i)).getAttribute(XSDConstants.NAME_ATTRIBUTE);
- if (name != null && name.length() > 0)
- {
- return prefix + name;
- }
- }
- }
- }
- }
- if (elementTag.equals(XSDConstants.ELEMENT_ELEMENT_TAG))
- {
- return helper.getGlobalElement(schema);
- }
- else if (elementTag.equals(XSDConstants.ATTRIBUTE_ELEMENT_TAG))
- {
- return helper.getGlobalAttribute(schema);
- }
- else if (elementTag.equals(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG))
- {
- return helper.getGlobalAttributeGroup(schema);
- }
- else if (elementTag.equals(XSDConstants.GROUP_ELEMENT_TAG))
- {
- return helper.getModelGroup(schema);
- }
- }
- return null;
- }
-
- protected void addSchemaElementItems(IMenuManager manager, Element parent, Node relativeNode)
- {
- ArrayList attributes = null;
- // Add Edit Namespaces menu action
- XSDEditNamespacesAction nsAction = new XSDEditNamespacesAction(XSDEditorPlugin.getXSDString("_UI_ACTION_EDIT_NAMESPACES"), parent, relativeNode, getXSDSchema());
- manager.add(nsAction);
- manager.add(new Separator());
- DOMAttribute nameAttribute = new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType"));
- attributes = new ArrayList();
- attributes.add(nameAttribute);
- Action action = addCreateElementAction(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_COMPLEX_TYPE"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
- action = addCreateElementAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SIMPLE_TYPE"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ELEMENT_ELEMENT_TAG, "GlobalElement")));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- action = addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GLOBAL_ELEMENT"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTE_ELEMENT_TAG, "GlobalAttribute")));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- action = addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GLOBAL_ATTRIBUTE"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, "AttributeGroup")));
- action = addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.GROUP_ELEMENT_TAG, "Group")));
- CreateGroupAction groupAction = addCreateGroupAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GROUP"), attributes, parent, relativeNode);
- groupAction.setIsGlobal(true);
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.NOTATION_ELEMENT_TAG, "Notation")));
- attributes.add(new DOMAttribute(XSDConstants.PUBLIC_ATTRIBUTE, ""));
- action = addCreateElementAction(manager, XSDConstants.NOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_NOTATION"), attributes, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- action = addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
- ((CreateElementAction) action).setIsGlobal(true);
- }
-
- // returns whether element exists already
- protected boolean addCreateElementActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
- {
- addCreateElementAction(manager, elementTag, label, attributes, parent, relativeNode);
- return false;
- }
- return true;
- }
-
- protected Action addCreateElementAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateElementAction action = new CreateElementAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(getXSDSchema());
- action.setSelectionProvider(selectionProvider);
- action.setEnabled(!isReadOnly);
- action.setSourceContext(sourceContext);
- manager.add(action);
- return action;
- }
-
- protected void addCreateElementAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode, boolean isEnabled)
- {
- Action action = addCreateElementAction(manager, elementTag, label, attributes, parent, relativeNode);
- action.setEnabled(isEnabled);
- }
-
- protected void addCreateElementRefAction(IMenuManager manager, String elementTag, String label, Element parent, Node relativeNode)
- {
- ArrayList attributes = new ArrayList();
- String ref = getFirstGlobalElementTagName(elementTag);
- attributes.add(new DOMAttribute(XSDConstants.REF_ATTRIBUTE, ref));
- Action action = addCreateElementAction(manager, elementTag, label, attributes, parent, relativeNode);
- action.setEnabled(ref != null && !isReadOnly);
- }
-
- protected void addCreateSimpleContentAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
- {
- CreateSimpleContentAction action = new CreateSimpleContentAction(label, getXSDSchema());
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setEnabled(!isReadOnly);
- manager.add(action);
- }
- }
-
- protected CreateGroupAction addCreateGroupAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateGroupAction action = new CreateGroupAction(label, getXSDSchema());
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(getXSDSchema());
- action.setSelectionProvider(selectionProvider);
- action.setEnabled(!isReadOnly);
- action.setSourceContext(sourceContext);
- manager.add(action);
- return action;
- }
-
- protected void addCreateIdentityConstraintsAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateIdentityConstraintsAction action = new CreateIdentityConstraintsAction(label, getXSDSchema());
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(getXSDSchema());
- action.setSelectionProvider(selectionProvider);
- action.setEnabled(!isReadOnly);
- manager.add(action);
- }
-
- protected void addEnumsAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- AddEnumsAction action = new AddEnumsAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setDescription(XSDEditorPlugin.getXSDString("_UI_ENUMERATIONS_DIALOG_TITLE"));
- action.setEnabled(!isReadOnly);
- manager.add(action);
- }
-
- protected Action addCreateSimpleTypeAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateSimpleTypeAction action = new CreateSimpleTypeAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(getXSDSchema());
- action.setSelectionProvider(selectionProvider);
- action.setEnabled(!isReadOnly);
- action.setSourceContext(sourceContext);
- manager.add(action);
- return action;
- }
-
- protected boolean addCreateLocalSimpleTypeActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
- {
- addCreateLocalSimpleTypeAction(manager, elementTag, label, attributes, parent, relativeNode);
- return false;
- }
- return true;
- }
-
- protected void addSetBaseTypeAction(IMenuManager manager, Element element)
- {
- SetBaseTypeAction action = new SetBaseTypeAction(XSDEditorPlugin.getXSDString("_UI_ACTION_SET_BASE_TYPE"));// +
- // "...");
- action.setComplexTypeElement(element);
- action.setXSDSchema(getXSDSchema());
- action.setEnabled(!isReadOnly);
- manager.add(action);
- }
-
- protected void addCreateLocalSimpleTypeAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateLocalSimpleTypeAction action = new CreateLocalSimpleTypeAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(getXSDSchema());
- action.setSelectionProvider(selectionProvider);
- action.setEnabled(!isReadOnly);
- manager.add(action);
- }
-
- protected boolean addCreateLocalComplexTypeActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
- {
- addCreateLocalComplexTypeAction(manager, elementTag, label, attributes, parent, relativeNode);
- return false;
- }
- return true;
- }
-
- protected void addCreateLocalComplexTypeAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateLocalComplexTypeAction action = new CreateLocalComplexTypeAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(getXSDSchema());
- action.setSelectionProvider(selectionProvider);
- action.setEnabled(!isReadOnly);
- manager.add(action);
- }
-
- protected boolean addCreateAnnotationActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- return false;
- }
-
- protected void addOpenSchemaAction(IMenuManager manager, String label, Element parent)
- {
- OpenSchemaAction openAction = new OpenSchemaAction(label, getXSDSchema().getCorrespondingComponent(parent));
- manager.add(openAction);
- }
-
- protected void addMoveAnonymousGlobal(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
-// MakeAnonymousGlobal action = new MakeAnonymousGlobal(label, parent, getXSDSchema());
-// action.setElementTag(elementTag);
-// action.setAttributes(attributes);
-// action.setParentNode(getXSDSchema().getElement());
-// action.setRelativeNode(relativeNode);
-// action.setEnabled(!isReadOnly);
-// //manager.add(action);
-// addRefactorMenuGroup(manager);
-// fRefactorMenuGroup.addAction(action);
- }
-
- protected void addRefactorMenuGroup(IMenuManager manager){
- /*
- fRefactorMenuGroup = new RefactorActionGroup(selectionProvider, getXSDSchema());
- ActionContext context= new ActionContext(selectionProvider.getSelection());
- fRefactorMenuGroup.setContext(context);
- fRefactorMenuGroup.fillContextMenu(manager);
- fRefactorMenuGroup.setContext(null);
- */
- }
-
- protected void addCreateAnnotationAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateAnnotationAction action = new CreateAnnotationAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setEnabled(!isReadOnly);
- manager.add(action);
- }
-
- protected Node getFirstChildNodeIfExists(Node parent, String elementTag, boolean isRef)
- {
- if (parent == null)
- return null;
- NodeList children = parent.getChildNodes();
- Node targetNode = null;
- for (int i = 0; i < children.getLength(); i++)
- {
- Node child = children.item(i);
- if (child != null && child instanceof Element)
- {
- if (XSDDOMHelper.inputEquals((Element) child, elementTag, isRef))
- {
- targetNode = child;
- break;
- }
- }
- }
- return targetNode;
- }
-
- protected boolean elementExists(String elementTag, Element parent)
- {
- if (!(parent.getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, elementTag).getLength() > 0))
- {
- return false;
- }
- return true;
- }
-
- /**
- * Returns the deleteAction.
- *
- * @return DeleteAction
- */
- public DeleteAction getDeleteAction()
- {
- return deleteAction;
- }
-
- protected void addMultiplicityMenu(XSDConcreteComponent concreteComponent, IMenuManager manager)
- {
- SetMultiplicityAction oneMultiplicity = new SetMultiplicityAction(concreteComponent, "1");
- oneMultiplicity.setMaxOccurs(1);
- oneMultiplicity.setMinOccurs(1);
- oneMultiplicity.setEnabled(!isReadOnly);
- SetMultiplicityAction zeroOrMoreMultiplicity = new SetMultiplicityAction(concreteComponent, "0..* (" + XSDEditorPlugin.getXSDString("_ZERO_OR_MORE") + ")");
- zeroOrMoreMultiplicity.setMaxOccurs(-1);
- zeroOrMoreMultiplicity.setMinOccurs(0);
- zeroOrMoreMultiplicity.setEnabled(!isReadOnly);
- SetMultiplicityAction zeroOrOneMultiplicity = new SetMultiplicityAction(concreteComponent, "0..1 (" + XSDEditorPlugin.getXSDString("_ZERO_OR_ONE") + ")");
- zeroOrOneMultiplicity.setMaxOccurs(1);
- zeroOrOneMultiplicity.setMinOccurs(0);
- zeroOrOneMultiplicity.setEnabled(!isReadOnly);
- SetMultiplicityAction oneOrMoreMultiplicity = new SetMultiplicityAction(concreteComponent, "1..* (" + XSDEditorPlugin.getXSDString("_ONE_OR_MORE") + ")");
- oneOrMoreMultiplicity.setMaxOccurs(-1);
- oneOrMoreMultiplicity.setMinOccurs(1);
- oneOrMoreMultiplicity.setEnabled(!isReadOnly);
-
- MenuManager multiplicityMenu = new MenuManager(XSDEditorPlugin.getXSDString("_UI_ACTION_SET_MULTIPLICITY"));
- manager.add(multiplicityMenu);
- multiplicityMenu.add(oneMultiplicity);
- multiplicityMenu.add(zeroOrOneMultiplicity);
- multiplicityMenu.add(zeroOrMoreMultiplicity);
- multiplicityMenu.add(oneOrMoreMultiplicity);
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMultiPageEditorPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMultiPageEditorPart.java
deleted file mode 100644
index 009efb1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMultiPageEditorPart.java
+++ /dev/null
@@ -1,645 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextInputListener;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IStorageEditorInput;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IGotoMarker;
-import org.eclipse.wst.common.ui.provisional.editors.PostMultiPageEditorSite;
-import org.eclipse.wst.common.ui.provisional.editors.PostSelectionMultiPageEditorPart;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools;
-import org.eclipse.wst.xml.core.internal.provisional.IXMLPreferenceNames;
-import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML;
-import org.eclipse.wst.xml.ui.internal.provisional.IDOMSourceEditingTextTools;
-import org.eclipse.wst.xml.ui.internal.tabletree.XMLEditorMessages;
-import org.w3c.dom.Document;
-
-public class XSDMultiPageEditorPart extends PostSelectionMultiPageEditorPart implements IPropertyListener
-{
-
- /**
- *
- */
- public XSDMultiPageEditorPart()
- {
- super();
- }
-
- /**
- * Internal part activation listener
- */
- class PartListener extends ShellAdapter implements IPartListener {
- private IWorkbenchPart fActivePart;
- private boolean fIsHandlingActivation = false;
-
- private void handleActivation() {
-
- if (fIsHandlingActivation)
- return;
-
- if (fActivePart == XSDMultiPageEditorPart.this) {
- fIsHandlingActivation = true;
- try {
- safelySanityCheckState();
- }
- finally {
- fIsHandlingActivation = false;
- }
- }
- }
-
- /**
- * @see IPartListener#partActivated(IWorkbenchPart)
- */
- public void partActivated(IWorkbenchPart part) {
- fActivePart = part;
- handleActivation();
- }
-
- /**
- * @see IPartListener#partBroughtToTop(IWorkbenchPart)
- */
- public void partBroughtToTop(IWorkbenchPart part) {
- }
-
- /**
- * @see IPartListener#partClosed(IWorkbenchPart)
- */
- public void partClosed(IWorkbenchPart part) {
- }
-
- /**
- * @see IPartListener#partDeactivated(IWorkbenchPart)
- */
- public void partDeactivated(IWorkbenchPart part) {
- fActivePart = null;
- }
-
- /**
- * @see IPartListener#partOpened(IWorkbenchPart)
- */
- public void partOpened(IWorkbenchPart part) {
- }
-
- /*
- * @see ShellListener#shellActivated(ShellEvent)
- */
- public void shellActivated(ShellEvent e) {
- handleActivation();
- }
- }
-
- class TextInputListener implements ITextInputListener {
- public void inputDocumentAboutToBeChanged(IDocument oldInput, IDocument newInput) {
- }
-
- public void inputDocumentChanged(IDocument oldInput, IDocument newInput) {
- }
- }
-
- /** The source page index. */
- private int fSourcePageIndex;
- /** The text editor. */
- private StructuredTextEditor fTextEditor;
-
- private PartListener partListener;
-
-
- /*
- * This method is just to make firePropertyChanged accessbible from some
- * (anonomous) inner classes.
- */
- protected void _firePropertyChange(int property) {
- super.firePropertyChange(property);
- }
-
- /**
- * Adds the source page of the multi-page editor.
- */
- protected void addSourcePage() throws PartInitException {
- try {
- fSourcePageIndex = addPage(fTextEditor, getEditorInput());
- setPageText(fSourcePageIndex, XSDEditorPlugin.getXSDString("_UI_TAB_SOURCE")); //$NON-NLS-1$
- // the update's critical, to get viewer selection manager and
- // highlighting to work
- fTextEditor.update();
-
- firePropertyChange(PROP_TITLE);
-
- // Changes to the Text Viewer's document instance should also force an
- // input refresh
- fTextEditor.getTextViewer().addTextInputListener(new TextInputListener());
- }
- catch (PartInitException e) {
- // dispose editor
- dispose();
-
- // log for now, unless we find reason not to
- Logger.log(Logger.INFO, e.getMessage());
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.MultiPageEditorPart#createPages()
- */
- protected void createPages()
- {
- try
- {
- // source page MUST be created before design page, now
- createSourcePage();
- addSourcePage();
- setActivePage();
-
- // future_TODO: add a catch block here for any exception the design
- // page throws and convert it into a more informative message.
- }
- catch (PartInitException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * @see org.eclipse.ui.part.MultiPageEditorPart#createSite(org.eclipse.ui.IEditorPart)
- */
- protected IEditorSite createSite(IEditorPart editor) {
- IEditorSite site = null;
- if (editor == fTextEditor) {
- site = new PostMultiPageEditorSite(this, editor) {
- public IEditorActionBarContributor getActionBarContributor() {
- IEditorActionBarContributor contributor = super.getActionBarContributor();
- XSDMultiPageEditorPart.this.getEditorSite().getActionBarContributor();
- return contributor;
- }
-
- public String getId() {
- // sets this id so nested editor is considered xml source
- // page
- return ContentTypeIdForXML.ContentTypeID_XML + ".source"; //$NON-NLS-1$;
- }
- };
- }
- else {
- site = super.createSite(editor);
- }
- return site;
- }
-
- /**
- * Creates the source page of the multi-page editor.
- */
- protected void createSourcePage() throws PartInitException {
- fTextEditor = createTextEditor();
- fTextEditor.setEditorPart(this);
-
- // Set the SourceViewerConfiguration now so the text editor won't use
- // the default configuration first
- // and switch to the StructuredTextViewerConfiguration later.
- // DMW removed setSourceViewerConfiguration 3/26/2003 since added
- // createPartControl to our text editor.
- // fTextEditor.setSourceViewerConfiguration();
- fTextEditor.addPropertyListener(this);
- }
-
- /**
- * Method createTextEditor.
- *
- * @return StructuredTextEditor
- */
- protected StructuredTextEditor createTextEditor() {
- return new StructuredTextEditor();
- }
-
- public void dispose()
- {
- IWorkbenchWindow window = getSite().getWorkbenchWindow();
- window.getPartService().removePartListener(partListener);
- window.getShell().removeShellListener(partListener);
-
- getSite().getPage().removePartListener(partListener);
- if (fTextEditor != null) {
- fTextEditor.removePropertyListener(this);
- }
- fTextEditor = null;
-
- // moved to last when added window ... seems like
- // we'd be in danger of losing some data, like site,
- // or something.
- super.dispose();
- }
-
- /*
- * (non-Javadoc) Saves the contents of this editor. <p> Subclasses must
- * override this method to implement the open-save-close lifecycle for an
- * editor. For greater details, see <code> IEditorPart </code></p>
- *
- * @see IEditorPart
- */
- public void doSave(IProgressMonitor monitor) {
- fTextEditor.doSave(monitor);
- // // this is a temporary way to force validation.
- // // when the validator is a workbench builder, the following lines
- // can be removed
- // if (fDesignViewer != null)
- // fDesignViewer.saveOccurred();
-
- }
-
- /*
- * (non-Javadoc) Saves the contents of this editor to another object. <p>
- * Subclasses must override this method to implement the open-save-close
- * lifecycle for an editor. For greater details, see <code> IEditorPart
- * </code></p>
- *
- * @see IEditorPart
- */
- public void doSaveAs() {
- fTextEditor.doSaveAs();
- // 253619
- // following used to be executed here, but is
- // now called "back" from text editor (since
- // mulitiple paths to the performSaveAs in StructuredTextEditor.
- //doSaveAsForStructuredTextMulitPagePart();
- }
-
- private void editorInputIsAcceptable(IEditorInput input) throws PartInitException {
- if (input instanceof IFileEditorInput) {
- // verify that it can be opened
- CoreException[] coreExceptionArray = new CoreException[1];
- if (fileDoesNotExist((IFileEditorInput) input, coreExceptionArray)) {
- CoreException coreException = coreExceptionArray[0];
- if (coreException.getStatus().getCode() == IResourceStatus.FAILED_READ_LOCAL) {
- // I'm assuming this is always 'does not exist'
- // we'll refresh local go mimic behavior of default
- // editor, where the
- // troublesome file is refreshed (and will cause it to
- // 'disappear' from Navigator.
- try {
- ((IFileEditorInput) input).getFile().refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
- } catch (CoreException ce) {
- // very unlikely
- Logger.logException(ce);
- }
- throw new PartInitException(NLS.bind(XMLEditorMessages.Resource__does_not_exist, (new Object[]{input.getName()})));
- } else {
- throw new PartInitException(NLS.bind(XMLEditorMessages.Editor_could_not_be_open, (new Object[]{input.getName()})));
- }
- }
- } else if (input instanceof IStorageEditorInput) {
- InputStream contents = null;
- try {
- contents = ((IStorageEditorInput) input).getStorage().getContents();
- } catch (CoreException noStorageExc) {
- }
- if (contents == null) {
- throw new PartInitException(NLS.bind(XMLEditorMessages.Editor_could_not_be_open, (new Object[]{input.getName()})));
- } else {
- try {
- contents.close();
- } catch (IOException e) {
- }
- }
- }
- }
-
- // void doSaveAsForStructuredTextMulitPagePart() {
- // setPageText(getActivePage(), fTextEditor.getTitle());
- // setInput(fTextEditor.getEditorInput());
- // if (fDesignViewer != null) {
- // //fDesignViewer.setEditorInput(fTextEditor.getEditorInput());
- // fDesignViewer.setModel(getModel());
- // fDesignViewer.saveAsOccurred();
- // }
- // // even though we've set title etc., several times already!
- // // only now is all prepared for it.
- // firePropertyChange(IWorkbenchPart.PROP_TITLE);
- // firePropertyChange(PROP_DIRTY);
- // }
- /*
- * (non-Javadoc) Initializes the editor part with a site and input. <p>
- * Subclasses of <code> EditorPart </code> must implement this method.
- * Within the implementation subclasses should verify that the input type
- * is acceptable and then save the site and input. Here is sample code:
- * </p><pre> if (!(input instanceof IFileEditorInput)) throw new
- * PartInitException("Invalid Input: Must be IFileEditorInput");
- * setSite(site); setInput(editorInput); </pre>
- */
- protected boolean fileDoesNotExist(IFileEditorInput input, Throwable[] coreException) {
- boolean result = false;
- InputStream inStream = null;
- if ((!(input.exists())) || (!(input.getFile().exists()))) {
- result = true;
- }
- else {
- try {
- inStream = input.getFile().getContents(true);
- }
- catch (CoreException e) {
- // very likely to be file not found
- result = true;
- coreException[0] = e;
- }
- finally {
- if (input != null) {
- try {
- if (inStream != null) {
- inStream.close();
- }
- }
- catch (IOException e) {
-
- }
- }
- }
- }
- return result;
- }
-
- public Object getAdapter(Class key) {
- Object result = null;
-
- // DMW: I'm bullet-proofing this because
- // its been reported (on 4.03 version) a null pointer sometimes
- // happens here on startup, when an editor has been left
- // open when workbench shutdown.
- if (fTextEditor != null) {
- result = fTextEditor.getAdapter(key);
- }
- return result;
- }
-
- public Document getDOMDocument() {
- if (getTextEditor() == null)
- return null;
-
- ISourceEditingTextTools tools = (ISourceEditingTextTools) getAdapter(ISourceEditingTextTools.class);
- if(tools != null && tools instanceof IDOMSourceEditingTextTools) {
- return ((IDOMSourceEditingTextTools)tools).getDOMDocument();
- }
- return null;
- }
-
- protected IStructuredModel getModel() {
- IStructuredModel model = null;
- if (fTextEditor != null)
- model = fTextEditor.getModel();
- return model;
- }
-
- protected IPreferenceStore getPreferenceStore() {
- return XSDEditorPlugin.getPlugin().getPreferenceStore();
- }
-
- public StructuredTextEditor getTextEditor() {
- return fTextEditor;
- }
-
- /*
- * (non-Javadoc) Method declared on IWorkbenchPart.
- */
- public String getTitle() {
- String title = null;
- if (getTextEditor() == null) {
- if (getEditorInput() != null) {
- title = getEditorInput().getName();
- }
- }
- else {
- title = getTextEditor().getTitle();
- }
- if (title == null) {
- title = getPartName();
- }
- return title;
- }
-
- /*
- * (non-Javadoc) Sets the cursor and selection state for this editor to
- * the passage defined by the given marker. <p> Subclasses may override.
- * For greater details, see <code> IEditorPart </code></p>
- *
- * @see IEditorPart
- */
- public void gotoMarker(IMarker marker) {
- // (pa) 20020217 this was null when opening an editor that was
- // already open
- if (fTextEditor != null) {
- IGotoMarker markerGotoer = (IGotoMarker) fTextEditor.getAdapter(IGotoMarker.class);
- markerGotoer.gotoMarker(marker);
- }
- }
-
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-// editorInputIsAcceptable(input);
- try {
- super.init(site, input);
- if (partListener == null) {
- partListener = new PartListener();
- }
- //getSite().getPage().addPartListener(partListner);
- // we want to listen for our own activation
- IWorkbenchWindow window = getSite().getWorkbenchWindow();
- window.getPartService().addPartListener(partListener);
- window.getShell().addShellListener(partListener);
- }
- catch (Exception e) {
- // log for now, unless we find reason not to
- Logger.log(Logger.INFO, e.getMessage());
- }
- setPartName(input.getName());
- }
-
- /*
- * (non-Javadoc) Returns whether the "save as" operation is supported by
- * this editor. <p> Subclasses must override this method to implement the
- * open-save-close lifecycle for an editor. For greater details, see
- * <code> IEditorPart </code></p>
- *
- * @see IEditorPart
- */
- public boolean isSaveAsAllowed() {
- return fTextEditor != null && fTextEditor.isSaveAsAllowed();
- }
-
- /*
- * (non-Javadoc) Returns whether the contents of this editor should be
- * saved when the editor is closed. <p> This method returns <code> true
- * </code> if and only if the editor is dirty ( <code> isDirty </code> ).
- * </p>
- */
- public boolean isSaveOnCloseNeeded() {
- // overriding super class since it does a lowly isDirty!
- if (fTextEditor != null)
- return fTextEditor.isSaveOnCloseNeeded();
- return isDirty();
- }
-
- /**
- * Notifies this multi-page editor that the page with the given id has
- * been activated. This method is called when the user selects a different
- * tab.
- *
- * @param newPageIndex
- * the index of the activated page
- */
- protected void pageChange(int newPageIndex) {
- super.pageChange(newPageIndex);
-
- saveLastActivePageIndex(newPageIndex);
- }
-
- /**
- * Posts the update code "behind" the running operation.
- */
- protected void postOnDisplayQue(Runnable runnable) {
- IWorkbench workbench = PlatformUI.getWorkbench();
- IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
- if (windows != null && windows.length > 0) {
- Display display = windows[0].getShell().getDisplay();
- display.asyncExec(runnable);
- }
- else
- runnable.run();
- }
-
- /**
- * Indicates that a property has changed.
- *
- * @param source
- * the object whose property has changed
- * @param propId
- * the id of the property which has changed; property ids are
- * generally defined as constants on the source class
- */
- public void propertyChanged(Object source, int propId) {
- switch (propId) {
- // had to implement input changed "listener" so that
- // strucutedText could tell it containing editor that
- // the input has change, when a 'resource moved' event is
- // found.
- case IEditorPart.PROP_INPUT :
- case IEditorPart.PROP_DIRTY : {
- if (source == fTextEditor) {
- if (fTextEditor.getEditorInput() != getEditorInput()) {
- setInput(fTextEditor.getEditorInput());
- // title should always change when input changes.
- // create runnable for following post call
- Runnable runnable = new Runnable() {
- public void run() {
- _firePropertyChange(IWorkbenchPart.PROP_TITLE);
- }
- };
- // Update is just to post things on the display queue
- // (thread). We have to do this to get the dirty
- // property to get updated after other things on the
- // queue are executed.
- postOnDisplayQue(runnable);
- }
- }
- break;
- }
- case IWorkbenchPart.PROP_TITLE : {
- // update the input if the title is changed
- if (source == fTextEditor) {
- if (fTextEditor.getEditorInput() != getEditorInput()) {
- setInput(fTextEditor.getEditorInput());
- }
- }
- break;
- }
- default : {
- // propagate changes. Is this needed? Answer: Yes.
- if (source == fTextEditor) {
- firePropertyChange(propId);
- }
- break;
- }
- }
-
- }
-
- protected void safelySanityCheckState() {
- // If we're called before editor is created, simply ignore since we
- // delegate this function to our embedded TextEditor
- if (getTextEditor() == null)
- return;
-
- getTextEditor().safelySanityCheckState(getEditorInput());
-
- }
-
- protected void saveLastActivePageIndex(int newPageIndex) {
- // save the last active page index to preference manager
- getPreferenceStore().setValue(IXMLPreferenceNames.LAST_ACTIVE_PAGE, newPageIndex);
- }
-
- /**
- * Sets the currently active page.
- */
- protected void setActivePage() {
- // retrieve the last active page index from preference manager
- int activePageIndex = getPreferenceStore().getInt(IXMLPreferenceNames.LAST_ACTIVE_PAGE);
-
- // We check this range since someone could hand edit the XML
- // preference file to an invalid value ... which I know from
- // experience :( ... if they do, we'll reset to default and continue
- // rather than throw an assertion error in the setActivePage(int)
- // method.
- if (activePageIndex < 0 || activePageIndex >= getPageCount()) {
- activePageIndex = fSourcePageIndex;
- }
- setActivePage(activePageIndex);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.EditorPart#setInput(org.eclipse.ui.IEditorInput)
- */
- protected void setInput(IEditorInput input) {
- // If driven from the Source page, it's "model" may not be up to date
- // with the input just yet. We'll rely on later notification from the
- // TextViewer to set us straight
- super.setInput(input);
- setPartName(input.getName());
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AbstractAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AbstractAction.java
deleted file mode 100644
index b421416..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AbstractAction.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class AbstractAction extends Action
-{
- XSDConcreteComponent xsdConcreteComponent;
-
- /**
- * @param text
- */
- public AbstractAction(String text, XSDConcreteComponent xsdConcreteComponent)
- {
- super(text);
- this.xsdConcreteComponent = xsdConcreteComponent;
- }
-
- /**
- * @param text
- * @param image
- */
- public AbstractAction(String text, ImageDescriptor image, XSDConcreteComponent xsdConcreteComponent)
- {
- super(text, image);
- this.xsdConcreteComponent = xsdConcreteComponent;
- }
-
- /**
- * @param text
- * @param style
- */
- public AbstractAction(String text, int style)
- {
- super(text, style);
- }
-
- public DocumentImpl getDocument()
- {
- return (DocumentImpl) xsdConcreteComponent.getElement().getOwnerDocument();
- }
-
- public void beginRecording(String description)
- {
- getDocument().getModel().beginRecording(this, description);
- }
-
- public void endRecording()
- {
- DocumentImpl doc = (DocumentImpl) getDocument();
-
- doc.getModel().endRecording(this);
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddAttributeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddAttributeAction.java
deleted file mode 100644
index f1a9f3f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddAttributeAction.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.commands.AddAttributeDeclarationCommand;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class AddAttributeAction extends AbstractAction
-{
- protected AddAttributeDeclarationCommand command;
-
- public AddAttributeAction(String text, XSDConcreteComponent parent)
- {
- super(text, parent);
- command = new AddAttributeDeclarationCommand(parent);
- }
-
- public AddAttributeAction(String text, ImageDescriptor image, XSDConcreteComponent parent)
- {
- super(text, image, parent);
- command = new AddAttributeDeclarationCommand(parent);
- }
-
- public void run()
- {
- beginRecording(getText());
- command.run();
-
- endRecording();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddEnumsAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddEnumsAction.java
deleted file mode 100644
index ecc2f4b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddEnumsAction.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.xsd.ui.internal.widgets.EnumerationsDialog;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-/**
- * Pattern is scoped to Enum Type
- */
-public class AddEnumsAction extends CreateElementAction
-{
- public AddEnumsAction(String label)
- {
- super(label);
- }
-
- public Element createAndAddNewChildElement(String token)
- {
- String prefix = parentNode.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- Element childNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + elementTag);
- if (getAttributes() != null)
- {
- List attributes = getAttributes();
- for (int i = 0; i < attributes.size(); i++)
- {
- DOMAttribute attr = (DOMAttribute) attributes.get(i);
- childNode.setAttribute(attr.getName(), attr.getValue());
- }
- }
- if (getRelativeNode() == null)
- {
- parentNode.appendChild(childNode);
- }
- else
- {
- ((Element)parentNode).insertBefore(childNode,getRelativeNode());
- }
- childNode.setAttribute("value", token);
- return childNode;
- }
-
- public void run()
- {
- Display display = Display.getCurrent();
- // if it is null, get the default one
- display = display == null ? Display.getDefault() : display;
- Shell parentShell = display.getActiveShell();
- EnumerationsDialog dialog = new EnumerationsDialog(parentShell);
- dialog.setBlockOnOpen(true);
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- beginRecording(getDescription());
-
- String text = dialog.getText();
- String delimiter = dialog.getDelimiter();
- StringTokenizer tokenizer = new StringTokenizer(text, delimiter);
- while (tokenizer.hasMoreTokens())
- {
- String token = tokenizer.nextToken();
- if (dialog.isPreserveWhitespace() == false)
- {
- token = token.trim();
- }
-
- Element child = createAndAddNewChildElement(token);
- formatChild(child);
- }
- endRecording();
- }
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddModelGroupAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddModelGroupAction.java
deleted file mode 100644
index fcfdc77..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddModelGroupAction.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.commands.AddModelGroupCommand;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-
-public class AddModelGroupAction extends Action
-{
- protected AddModelGroupCommand command;
- protected XSDConcreteComponent parent;
-
- public static String getLabel(XSDCompositor compositor)
- {
- String result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SEQUENCE"); //$NON-NLS-1$
- if (compositor != null)
- {
- if (compositor == XSDCompositor.CHOICE_LITERAL)
- {
- result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CHOICE"); //$NON-NLS-1$
- }
- else if (compositor == XSDCompositor.ALL_LITERAL)
- {
- result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ALL");//$NON-NLS-1$
- }
- }
- return result;
- }
-
- public AddModelGroupAction(XSDConcreteComponent parent, XSDCompositor compositor)
- {
- command = new AddModelGroupCommand(parent, compositor);
- this.parent = parent;
- setText(getLabel(compositor));
- }
-
- public void run()
- {
- DocumentImpl doc = (DocumentImpl) parent.getElement().getOwnerDocument();
- doc.getModel().beginRecording(this, getText());
- command.run();
- doc.getModel().endRecording(this);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddSchemaNodeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddSchemaNodeAction.java
deleted file mode 100644
index d890af0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddSchemaNodeAction.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-
-
-public class AddSchemaNodeAction extends Action
-{
- /**
- * Constructor for AddSchemaNodeAction.
- */
- public AddSchemaNodeAction()
- {
- super();
- }
-
- /**
- * Constructor for AddSchemaNodeAction.
- * @param text
- */
- public AddSchemaNodeAction(String text)
- {
- super(text);
- }
-
- /**
- * Constructor for AddSchemaNodeAction.
- * @param text
- * @param image
- */
- public AddSchemaNodeAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public void setEditor(XSDEditor editor)
- {
- this.editor = editor;
- }
-
- protected XSDEditor editor;
-
- /**
- * @see org.eclipse.jface.action.IAction#run()
- */
- public void run()
- {
- editor.createDefaultSchemaNode(editor.getDOMDocument());
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/BackAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/BackAction.java
deleted file mode 100644
index 0ab518d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/BackAction.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphViewer;
-import org.eclipse.xsd.XSDSchema;
-
-/**
- * @author kchong
- *
- * <a href="mailto:kchong@ca.ibm.com">kchong@ca.ibm.com</a>
- *
- */
-public class BackAction extends Action
-{
- ISelectionProvider selectionProvider;
- XSDGraphViewer xsdGraphViewer;
- XSDSchema xsdSchema;
-
- /**
- *
- */
- public BackAction()
- {
- super();
- }
-
- /**
- * @param text
- */
- public BackAction(String text)
- {
- super(text);
- }
-
- public BackAction(String text, XSDGraphViewer viewer)
- {
- super(text);
- xsdGraphViewer = viewer;
- }
-
- /**
- * @param text
- * @param image
- */
- public BackAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- /**
- * @param text
- * @param style
- */
- public BackAction(String text, int style)
- {
- super(text, style);
- }
-
- public void setSelectionProvider(ISelectionProvider selectionProvider)
- {
- this.selectionProvider = selectionProvider;
- }
-
- public void setXSDSchema(XSDSchema xsdSchema)
- {
- this.xsdSchema = xsdSchema;
- }
-
- /*
- * @see IAction#run()
- */
- public void run()
- {
- StructuredSelection selection = new StructuredSelection(xsdSchema);
- selectionProvider.setSelection(selection);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAnnotationAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAnnotationAction.java
deleted file mode 100644
index 698d433..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAnnotationAction.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class CreateAnnotationAction extends CreateElementAction
-{
- XSDSchema xsdSchema;
- Element documentationNode;
-
- public CreateAnnotationAction()
- {
- super();
- }
-
- public CreateAnnotationAction(String text)
- {
- super(text);
- }
-
- public CreateAnnotationAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public Element createAndAddNewChildElement()
- {
- Element childNode = super.createAndAddNewChildElement();
-
- String prefix = parentNode.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- documentationNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.DOCUMENTATION_ELEMENT_TAG);
- childNode.appendChild(documentationNode);
-
- formatChild(childNode);
- formatChild(documentationNode);
- formatChild(childNode);
-
- return childNode;
- }
-
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAttributeAndRequired.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAttributeAndRequired.java
deleted file mode 100644
index 155577b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAttributeAndRequired.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-
-/*
- * Class which creates an Attribute and necessary Elements required before
- * an Attribute can be added. For example, if we wish to add an Attribute
- * to a GlobalElement without a ComplexType, a ComplexType will be created.
- */
-public class CreateAttributeAndRequired extends Action {
- String elementTag;
- String label;
- List attributes;
- XSDSchema xsdSchema;
- ISelectionProvider selectionProvider;
- Object parent;
-
- public CreateAttributeAndRequired(String elementTag, String label, List attributes, XSDSchema xsdSchema, ISelectionProvider selProvider, Object parent) {
- super(label);
-
- this.elementTag = elementTag;
- this.label = label;
- this.attributes = attributes;
- this.xsdSchema = xsdSchema;
- this.selectionProvider = selProvider;
- this.parent = parent;
- }
-
- public void run() {
- if (parent instanceof XSDElementDeclaration) {
- XSDElementDeclaration ed = (XSDElementDeclaration) parent;
- beginRecording(ed.getElement());
- ed.setTypeDefinition(null);
- XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
- ed.setAnonymousTypeDefinition(td);
-
- CreateElementAction action = new CreateElementAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(td.getElement());
- action.setRelativeNode(null);
- action.setXSDSchema(xsdSchema);
- action.setSelectionProvider(selectionProvider);
- action.run();
-
- formatChild(td.getElement());
- if (td.getAttributeContents().size() > 0)
- {
- selectObject(td.getAttributeContents().get(0));
- }
- endRecording(ed.getElement());
- }
- }
-
- protected void beginRecording(Element element) {
- ((DocumentImpl) element.getOwnerDocument()).getModel().beginRecording(this, getText());
- }
-
- protected void endRecording(Element element) {
- ((DocumentImpl) element.getOwnerDocument()).getModel().endRecording(this);
- }
-
- public void selectObject(Object object) {
- if (selectionProvider != null)
- {
- selectionProvider.setSelection(new StructuredSelection(object));
- }
- }
-
- protected void formatChild(Element child)
- {
- if (child instanceof IDOMNode)
- {
- IDOMModel model = ((IDOMNode)child).getModel();
- try
- {
- // tell the model that we are about to make a big model change
- model.aboutToChangeModel();
-
- IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
- formatProcessor.formatNode(child);
- }
- finally
- {
- // tell the model that we are done with the big model change
- model.changedModel();
- }
- }
- }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateGroupAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateGroupAction.java
deleted file mode 100644
index f9eadae..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateGroupAction.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class CreateGroupAction extends CreateElementAction
-{
- XSDSchema xsdSchema;
-
- /**
- * Constructor for CreateGroupAction.
- */
- public CreateGroupAction()
- {
- super();
- }
- /**
- * Constructor for CreateGroupAction.
- * @param text
- */
- public CreateGroupAction(String text)
- {
- super(text);
- }
- /**
- * Constructor for CreateGroupAction.
- * @param text
- * @param XSDSchema
- */
- public CreateGroupAction(String text, XSDSchema xsdSchema)
- {
- super(text);
- this.xsdSchema = xsdSchema;
- }
- /**
- * Constructor for CreateGroupAction.
- * @param text
- * @param image
- */
- public CreateGroupAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public Element createAndAddNewChildElement()
- {
- XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(parentNode);
- Element childNode = super.createAndAddNewChildElement();
-
- String prefix = parentNode.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- Element contentModelNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SEQUENCE_ELEMENT_TAG);
- childNode.appendChild(contentModelNode);
-
- formatChild(childNode);
-
- xsdComp.setElement(parentNode);
-
- return childNode;
- }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateIdentityConstraintsAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateIdentityConstraintsAction.java
deleted file mode 100644
index ca933f3..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateIdentityConstraintsAction.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class CreateIdentityConstraintsAction extends CreateElementAction
-{
- XSDSchema xsdSchema;
-
- /**
- * Constructor for CreateIdentityConstraintsAction.
- */
- public CreateIdentityConstraintsAction()
- {
- super();
- }
- /**
- * Constructor for CreateIdentityConstraintsAction.
- * @param text
- */
- public CreateIdentityConstraintsAction(String text)
- {
- super(text);
- }
- /**
- * Constructor for CreateIdentityConstraintsAction.
- * @param text
- * @param XSDSchema
- */
- public CreateIdentityConstraintsAction(String text, XSDSchema xsdSchema)
- {
- super(text);
- this.xsdSchema = xsdSchema;
- }
- /**
- * Constructor for CreateIdentityConstraintsAction.
- * @param text
- * @param image
- */
- public CreateIdentityConstraintsAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public Element createAndAddNewChildElement()
- {
- Element childNode = super.createAndAddNewChildElement();
-
- String prefix = parentNode.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- Element selectorNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SELECTOR_ELEMENT_TAG);
-
- DOMAttribute attr = new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, "");
- selectorNode.setAttribute(attr.getName(), attr.getValue());
-
- childNode.appendChild(selectorNode);
-
- return childNode;
- }
-
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalComplexTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalComplexTypeAction.java
deleted file mode 100644
index e8b0cd0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalComplexTypeAction.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class CreateLocalComplexTypeAction extends CreateElementAction
-{
- /**
- * Constructor for CreateLocalComplexTypeAction.
- */
- public CreateLocalComplexTypeAction()
- {
- super();
- }
- /**
- * Constructor for CreateLocalComplexTypeAction.
- * @param text
- */
- public CreateLocalComplexTypeAction(String text)
- {
- super(text);
- }
- /**
- * Constructor for CreateLocalComplexTypeAction.
- * @param text
- * @param image
- */
- public CreateLocalComplexTypeAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public Element createAndAddNewChildElement()
- {
- XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(parentNode);
-
- Element childNode = super.createAndAddNewChildElement();
-
- if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- parentNode.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
- }
-
- String prefix = parentNode.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- childNode.appendChild(getDocument().createElement(prefix + XSDConstants.SEQUENCE_ELEMENT_TAG));
-
- formatChild(childNode);
-
- xsdComp.setElement(parentNode);
-
- return childNode;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalSimpleTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalSimpleTypeAction.java
deleted file mode 100644
index d2e1065..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalSimpleTypeAction.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class CreateLocalSimpleTypeAction extends CreateElementAction
-{
- XSDSchema xsdSchema;
-
- /**
- * Constructor for CreateLocalSimpleTypeAction.
- */
- public CreateLocalSimpleTypeAction()
- {
- super();
- }
- /**
- * Constructor for CreateLocalSimpleTypeAction.
- * @param text
- */
- public CreateLocalSimpleTypeAction(String text)
- {
- super(text);
- }
-
- /**
- * Constructor for CreateLocalSimpleTypeAction.
- * @param text
- * @param image
- */
- public CreateLocalSimpleTypeAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public Element createAndAddNewChildElement()
- {
- Element childNode = super.createAndAddNewChildElement();
-
- if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.UNION_ELEMENT_TAG, false))
- {
-// parentNode.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- }
- else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.LIST_ELEMENT_TAG, false))
- {
- parentNode.removeAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
- }
- else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- parentNode.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
- }
- else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
- {
- Node parent = parentNode.getParentNode();
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- parentNode.removeAttribute(XSDConstants.BASE_ATTRIBUTE);
- }
- }
- else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- parentNode.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
- }
-
- formatChild(childNode);
-
- return childNode;
- }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleContentAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleContentAction.java
deleted file mode 100644
index d9d9eb7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleContentAction.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-import java.util.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-/**
- * @version 1.0
- * @author
- */
-public class CreateSimpleContentAction extends CreateElementAction
-{
- XSDSchema xsdSchema;
- //IDocument document;
-
- /**
- * Constructor for CreateSimpleContentAction.
- */
- public CreateSimpleContentAction()
- {
- super();
- }
- /**
- * Constructor for CreateSimpleContentAction.
- * @param text
- */
- public CreateSimpleContentAction(String text)
- {
- super(text);
- }
- /**
- * Constructor for CreateSimpleContentAction.
- * @param text
- * @param XSDSchema
- */
- public CreateSimpleContentAction(String text, XSDSchema xsdSchema)
- {
- super(text);
- this.xsdSchema = xsdSchema;
- }
- /**
- * Constructor for CreateSimpleContentAction.
- * @param text
- * @param image
- */
- public CreateSimpleContentAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public Element createAndAddNewChildElement()
- {
- Element childNode = super.createAndAddNewChildElement();
-
- String prefix = parentNode.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- Element derivedByNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + "restriction");
- childNode.appendChild(derivedByNode);
- Element sequence = null;
-
- if (XSDDOMHelper.inputEquals(childNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- sequence = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + "sequence");
- derivedByNode.appendChild(sequence);
- }
-
- // now add the required base attribute for the derived by node
- TypesHelper typesHelper = new TypesHelper(xsdSchema);
- List listOfCT = typesHelper.getUserComplexTypeNamesList();
- String firstType = "";
- if (listOfCT.size() > 0)
- {
- firstType = (String)(listOfCT).get(0);
- }
- DOMAttribute attr = new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, firstType);
- derivedByNode.setAttribute(attr.getName(), attr.getValue());
-
- formatChild(derivedByNode);
- if (sequence != null)
- {
- formatChild(sequence);
- formatChild(derivedByNode);
- }
- formatChild(childNode);
-
-
- return childNode;
- }
-
- /*
- * @see IAction#run()
- */
- public void run()
- {
- beginRecording(getDescription());
-
- createAndAddNewChildElement();
- endRecording();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleTypeAction.java
deleted file mode 100644
index 5e5c29c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleTypeAction.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-public class CreateSimpleTypeAction extends CreateElementAction
-{
- /**
- *
- */
- public CreateSimpleTypeAction()
- {
- super();
- }
-
- /**
- * @param text
- */
- public CreateSimpleTypeAction(String text)
- {
- super(text);
- }
-
- public CreateSimpleTypeAction(String text, XSDSchema xsdSchema)
- {
- super(text);
- this.xsdSchema = xsdSchema;
- }
-
- /**
- * @param text
- * @param image
- */
- public CreateSimpleTypeAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public Element createAndAddNewChildElement()
- {
- XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(parentNode);
- Element childNode = super.createAndAddNewChildElement();
-
- String prefix = parentNode.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- Element contentModelNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
- contentModelNode.setAttribute(XSDConstants.BASE_ATTRIBUTE, prefix + "string");
- childNode.appendChild(contentModelNode);
-
- formatChild(childNode);
-
- xsdComp.setElement(parentNode);
-
- return childNode;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DeleteAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DeleteAction.java
deleted file mode 100644
index 5495c98..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DeleteAction.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import java.util.Iterator;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.actions.SelectionListenerAction;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-
-public class DeleteAction extends SelectionListenerAction
-{
- protected IEditorPart editor;
- protected XSDSchema xsdSchema;
- protected ISelectionProvider selectionProvider;
- protected XSDConcreteComponent parentXSDComponent;
-
- /**
- * Constructor for DeleteAction.
- * @param text
- */
- public DeleteAction(String text, IEditorPart editor, XSDSchema xsdSchema)
- {
- super(text);
- this.editor = editor;
- this.xsdSchema = xsdSchema;
- }
-
- public void setSelectionProvider(ISelectionProvider selectionProvider)
- {
- this.selectionProvider = selectionProvider;
- }
-
- public IEditorPart getEditor()
- {
- return editor;
- }
-
- public XSDSchema getSchema()
- {
- return xsdSchema;
- }
-
- public void setXSDSchema(XSDSchema xsdSchema)
- {
- this.xsdSchema = xsdSchema;
- }
-
- /*
- * @see IAction#run()
- */
- public void run()
- {
- IStructuredSelection selection = getStructuredSelection();
-
- if (selection.isEmpty())
- {
- return;
- }
-
- Iterator iter = selection.iterator();
- DocumentImpl doc = null;
- while (iter.hasNext())
- {
- Object obj = iter.next();
- Node node = null;
- if (obj instanceof Node)
- {
- node = (Node)obj;
- }
- else if (obj instanceof XSDConcreteComponent)
- {
- xsdSchema = ((XSDConcreteComponent)obj).getSchema();
-
- node = ((XSDConcreteComponent)obj).getElement();
- if (node instanceof IDOMNode)
- {
- parentXSDComponent = ((XSDConcreteComponent)obj).getContainer();
-
- if (parentXSDComponent instanceof XSDParticle)
- {
- // need to get the modelGroup
- parentXSDComponent = parentXSDComponent.getContainer();
- }
- }
-
- }
- if (!XSDDOMHelper.inputEquals(node, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- if (node instanceof IDOMNode)
- {
- if (doc == null)
- {
- doc = (DocumentImpl) node.getOwnerDocument();
- doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_NODES"));
- }
-
- boolean refresh = cleanupReferences(node);
- if (node != null)
- {
- XSDDOMHelper.removeNodeAndWhitespace(node);
- }
-
- // Workaround to reset included elements in XSD model
- if (refresh)
- {
- // getEditor().reparseSchema();
- // getEditor().getGraphViewer().setSchema(getEditor().getXSDSchema());
- }
- }
- }
- }
-
- if (parentXSDComponent != null && selectionProvider != null)
- {
- selectionProvider.setSelection(new StructuredSelection(parentXSDComponent));
- }
-
- if (doc != null)
- {
- doc.getModel().endRecording(this);
- }
- }
-
- protected boolean cleanupReferences(Node deletedNode)
- {
- boolean refresh = false;
- /*
- XSDConcreteComponent comp = getSchema().getCorrespondingComponent(deletedNode);
-
- if (comp instanceof XSDInclude ||
- comp instanceof XSDImport ||
- comp instanceof XSDRedefine)
- {
- XSDSchema referencedSchema = null;
- if (comp instanceof XSDInclude)
- {
- referencedSchema = ((XSDInclude)comp).getIncorporatedSchema();
- refresh = true;
- }
- else if (comp instanceof XSDRedefine)
- {
- referencedSchema = ((XSDRedefine)comp).getIncorporatedSchema();
- refresh = true;
- }
- else if (comp instanceof XSDImport)
- {
- referencedSchema = ((XSDImport)comp).getResolvedSchema();
- refresh = true;
- }
-
- if (referencedSchema != null)
- {
- XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
- cleanHelper.visitSchema(getSchema());
- // populate messages
-// TODO getEditor().createTasksInTaskList(cleanHelper.getMessages());
- }
- if (comp instanceof XSDImport)
- {
- TypesHelper typesHelper = new TypesHelper(getSchema());
- typesHelper.updateMapAfterDelete((XSDImport)comp);
- }
- }
- else if (getSchema().equals(comp.getContainer()))
- {
- BaseGlobalCleanup cleanHelper = null;
- // Only need to clean up references if the component being deleted is global scoped
- if (comp instanceof XSDElementDeclaration)
- {
- cleanHelper = new GlobalElementCleanup(comp);
- }
- else if (comp instanceof XSDModelGroupDefinition)
- {
- cleanHelper = new GlobalGroupCleanup(comp);
- }
- else if (comp instanceof XSDTypeDefinition)
- {
- cleanHelper = new GlobalSimpleOrComplexTypeCleanup(comp);
- }
- else if (comp instanceof XSDAttributeDeclaration)
- {
- cleanHelper = new GlobalAttributeCleanup(comp);
- }
- else if (comp instanceof XSDAttributeGroupDefinition)
- {
- cleanHelper = new GlobalAttributeGroupCleanup(comp);
- }
-
-
- if (cleanHelper != null)
- {
- cleanHelper.visitSchema(getSchema());
- }
- }*/
- return refresh;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/GraphRenameAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/GraphRenameAction.java
deleted file mode 100644
index cea3fd9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/GraphRenameAction.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.actions;
-
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.action.Action;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.commands.RenameCommand;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-public class GraphRenameAction extends Action
-{
- protected RenameCommand command;
-
- public GraphRenameAction(XSDNamedComponent namedComponent, GraphicalEditPart editPart)
- {
- command = new RenameCommand(namedComponent, editPart);
- setText(XSDEditorPlugin.getXSDString("_UI_LABEL_RENAME"));
- }
-
- public void run()
- {
- command.run();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ISchemaEditorActionConstants.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ISchemaEditorActionConstants.java
deleted file mode 100644
index 39836ff..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ISchemaEditorActionConstants.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-public interface ISchemaEditorActionConstants
-{
- public static final String RETARGET_VALIDATE_SCHEMA_ACTION_ID = "retargetValidateSchemaAction"; //$NON-NLS-1$
- public static final String RETARGET_RELOAD_DEPENDENCIES_ACTION_ID = "retargetReloadDependenciesAction"; //$NON-NLS-1$
- public static final String RETARGET_GENERATE_JAVA_ACTION_ID = "retargetGenerateJavaAction"; //$NON-NLS-1$
- public static final String RETARGET_GENERATE_DTD_ACTION_ID = "retargetGenerateDtdAction"; //$NON-NLS-1$
- public static final String RETARGET_GENERATE_XML_ACTION_ID = "retargetGenerateXMLAction"; //$NON-NLS-1$
- public static final String RETARGET_RENAME_ELEMENT_ACTION_ID = "RenameElement"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MakeAnonymousGlobal.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MakeAnonymousGlobal.java
deleted file mode 100644
index 9a9638a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MakeAnonymousGlobal.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class MakeAnonymousGlobal extends CreateElementAction
-{
- XSDSchema xsdSchema;
- Element type;
-
- public MakeAnonymousGlobal(String text, Element type, XSDSchema xsdSchema)
- {
- super(text);
- this.xsdSchema = xsdSchema;
- this.type = type;
- isGlobal = true;
- }
-
- public Element createAndAddNewChildElement()
- {
- // create the new global type
- Element childNode = super.createAndAddNewChildElement();
- // add the anonymous type's children to the new global type
- if (type.hasChildNodes())
- {
- NodeList nodes = type.getChildNodes();
- // use clones so we don't have a refresh problem
- for (int i = 0; i < nodes.getLength(); i++)
- {
- Node node = nodes.item(i);
- childNode.appendChild(node.cloneNode(true));
- }
- }
-
- // clean up the element whose type was anonymous
- // and set its type attribute to the new global type
- TypesHelper helper = new TypesHelper(xsdSchema);
- String prefix = helper.getPrefix(xsdSchema.getTargetNamespace(), true);
- helper = null;
-
- Element parentElementOfAnonymousType = (Element)type.getParentNode();
-
- parentElementOfAnonymousType.removeChild(type);
- parentElementOfAnonymousType.setAttribute(XSDConstants.TYPE_ATTRIBUTE, prefix + childNode.getAttribute(XSDConstants.NAME_ATTRIBUTE));
-
- formatChild(childNode);
-
- return childNode;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ModelMessage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ModelMessage.java
deleted file mode 100644
index aa30618..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ModelMessage.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.w3c.dom.Node;
-
-public class ModelMessage
-{
- protected String message;
- protected Node node;
-
- public ModelMessage(String message, Node node)
- {
- this.message = message;
- this.node = node;
- }
-
- public String getMessage()
- {
- return message;
- }
-
- public Node getNode()
- {
- return node;
- }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MoveAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MoveAction.java
deleted file mode 100644
index e3606c9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MoveAction.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-
-public class MoveAction extends Action
-{
- protected List selectedNodes;
- protected Node parentNode;
- protected Node refChild;
-
- /**
- * Constructor for DeleteAction.
- * @param text
- */
- public MoveAction(Node parentNode, List selectedNodes, Node refChild)
- {
- this.parentNode = parentNode;
- this.selectedNodes = selectedNodes;
- this.refChild = refChild;
- }
-
- public MoveAction(XSDConcreteComponent parentComponent, List selectedComponents, XSDConcreteComponent refChildComponent)
- {
- selectedNodes = new ArrayList(selectedComponents.size());
- for (Iterator i = selectedComponents.iterator(); i.hasNext(); )
- {
- XSDConcreteComponent concreteComponent = (XSDConcreteComponent)i.next();
- selectedNodes.add(concreteComponent.getElement());
- }
- parentNode = parentComponent.getElement();
- refChild = refChildComponent != null ? refChildComponent.getElement() : null;
- }
-
- public boolean canMove()
- {
- // TODO... there are likely more restriction to consider here
- boolean result = true;
- for (Iterator i = selectedNodes.iterator(); i.hasNext(); )
- {
- Node child = (Node)i.next();
- if (isDecendantOrSelf(child, parentNode))
- {
- result = false;
- break;
- }
- }
- return result;
- }
-
- protected boolean isDecendantOrSelf(Node potentialParent, Node node)
- {
- boolean result = false;
- while (node != null)
- {
- if (node == potentialParent)
- {
- result = true;
- break;
- }
- node = node.getParentNode();
- }
- return result;
- }
-
-
- protected void beginRecording()
- {
- IDOMModel model = getModel();
- if (model != null)
- {
- model.beginRecording(this, XSDEditorPlugin.getXSDString("_UI_LABEL_MOVE"));
- }
- }
-
- protected void endRecording()
- {
- IDOMModel model = getModel();
- if (model != null)
- {
- model.endRecording(this);
- }
- }
-
- protected IDOMModel getModel()
- {
- IDOMModel model = null;
- if (parentNode instanceof IDOMNode)
- {
- model = ((IDOMNode)parentNode).getModel();
- }
- return model;
- }
-
-
-
- /*
- * @see IAction#run()
- */
- public void run()
- {
- beginRecording();
- try
- {
- for (Iterator i = selectedNodes.iterator(); i.hasNext(); )
- {
- Node child = (Node)i.next();
- repositionBefore(parentNode, child, refChild);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- endRecording();
- }
-
-
- public void repositionBefore(Node parent, Node child, Node refChild)
- {
- // TODO... when the refChild (inserting as the last element) we need to
- // special case the way we preserve indentation
- Node oldParent = child.getParentNode();
- if (oldParent != null && refChild != child)
- {
- // consider any indentation text node that preceeds the child
- //
- Node textNode = isWhitespaceTextNode(child.getPreviousSibling()) ? child.getPreviousSibling() : null;
-
- // remove the child
- //
- oldParent.removeChild(child);
-
- // Instead of inserting the child immediatlely infront of the refChild, we first check to see if there
- // is an indentation text node preceeding the refChild. If we find such a node, we perform the insertion
- // so that the child is inserted before the indentation text node.
- Node adjustedRefChild = refChild;
- if (refChild != null && isWhitespaceTextNode(refChild.getPreviousSibling()))
- {
- adjustedRefChild = refChild.getPreviousSibling();
- }
-
- // reposition the child and any indentation text node
- //
- parent.insertBefore(child, adjustedRefChild);
- if (textNode != null)
- {
- oldParent.removeChild(textNode);
- parent.insertBefore(textNode, child);
- }
- }
- }
-
-
- protected static boolean isWhitespaceTextNode(Node node)
- {
- boolean result = false;
- if (node != null && node.getNodeType() == Node.TEXT_NODE)
- {
- String data = ((Text)node).getData();
- result = (data == null || data.trim().length() == 0);
- }
- return result;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/OpenSchemaAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/OpenSchemaAction.java
deleted file mode 100644
index ce9216f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/OpenSchemaAction.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.util.OpenOnSelectionHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.impl.XSDImportImpl;
-
-
-public class OpenSchemaAction extends Action
-{
- XSDConcreteComponent component;
- public OpenSchemaAction(String label, XSDConcreteComponent component)
- {
- super(label);
- this.component = component;
- }
-
- public void run()
- {
- if (component != null)
- {
- revealObject();
- }
- }
-
- boolean lastResult = false;
- protected boolean revealObject()
- {
- String schemaLocation = "";
- XSDSchemaDirective dir;
- if (component instanceof XSDSchemaDirective)
- {
- dir = (XSDSchemaDirective)component;
- // force load of imported schema
- if (dir instanceof XSDImportImpl)
- {
- ((XSDImportImpl)dir).importSchema();
- }
- if (dir.getResolvedSchema() != null)
- {
- schemaLocation = URIHelper.removePlatformResourceProtocol(dir.getResolvedSchema().getSchemaLocation());
- if (schemaLocation != null)
- {
- OpenOnSelectionHelper.openXSDEditor(schemaLocation);
- }
- }
- }
- return lastResult;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ReloadDependenciesAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ReloadDependenciesAction.java
deleted file mode 100644
index 73e239f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ReloadDependenciesAction.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-
-
-public class ReloadDependenciesAction extends Action
-{
- /**
- * Constructor for ReloadDependenciesAction.
- */
- public ReloadDependenciesAction()
- {
- super();
- }
-
- /**
- * Constructor for ReloadDependenciesAction.
- * @param text
- */
- public ReloadDependenciesAction(String text)
- {
- super(text);
- }
-
- /**
- * Constructor for ReloadDependenciesAction.
- * @param text
- * @param image
- */
- public ReloadDependenciesAction(String text, ImageDescriptor image)
- {
- super(text, image);
- }
-
- public void setEditor(XSDEditor editor)
- {
- this.editor = editor;
- }
-
- protected XSDEditor editor;
-
- public void run()
- {
- editor.reparseSchema();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java
deleted file mode 100644
index 31d9753..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.widgets.SetBaseTypeDialog;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class SetBaseTypeAction extends Action
-{
- XSDSchema xsdSchema;
- Element element;
- String type = "";
- String derivedByString = "";
- XSDDOMHelper domHelper;
-
- /**
- * Constructor for SetBaseTypeAction.
- */
- public SetBaseTypeAction()
- {
- super();
- domHelper = new XSDDOMHelper();
- }
- /**
- * Constructor for SetBaseTypeAction.
- * @param arg0
- */
- public SetBaseTypeAction(String arg0)
- {
- super(arg0);
- domHelper = new XSDDOMHelper();
- }
- /**
- * Constructor for SetBaseTypeAction.
- * @param arg0
- * @param arg1
- */
- public SetBaseTypeAction(String arg0, ImageDescriptor arg1)
- {
- super(arg0, arg1);
- domHelper = new XSDDOMHelper();
- }
- /**
- * Constructor for SetBaseTypeAction.
- * @param arg0
- * @param arg1
- */
- public SetBaseTypeAction(String arg0, int arg1)
- {
- super(arg0, arg1);
- domHelper = new XSDDOMHelper();
- }
-
-
- public void setXSDSchema(XSDSchema schema)
- {
- this.xsdSchema = schema;
- }
-
- public void setComplexTypeElement(Element element)
- {
- this.element = element;
- }
-
- public void setType(String type)
- {
- this.type = type;
- }
-
- public void setDerivedBy(String derivedByString)
- {
- this.derivedByString = derivedByString;
- }
-
- public void run()
- {
- Display display = Display.getCurrent();
- // if it is null, get the default one
- display = display == null ? Display.getDefault() : display;
- Shell parentShell = display.getActiveShell();
-
- SetBaseTypeDialog dialog = new SetBaseTypeDialog(parentShell, xsdSchema, element);
- dialog.setBlockOnOpen(true);
-
- Element contentModelElement = domHelper.getContentModelFromParent(element);
- if (contentModelElement != null)
- {
- // to set the current values to show in the dialog
- if (XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- Element derivedByElement = domHelper.getDerivedByElementFromComplexType(element);
- if (derivedByElement != null)
- {
- String currentBaseType = derivedByElement.getAttribute(XSDConstants.BASE_ATTRIBUTE);
- dialog.setCurrentBaseType(currentBaseType);
- dialog.setCurrentDerivedBy(derivedByElement.getLocalName());
- }
- else
- {
- dialog.setCurrentBaseType("");
- dialog.setCurrentDerivedBy("");
- }
- }
- }
-
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- type = dialog.getBaseType();
- derivedByString = dialog.getDerivedBy();
- performAction();
- }
- }
-
- XSDTypeDefinition newTypeDefinition = null;
- public XSDTypeDefinition getXSDTypeDefinition()
- {
- return newTypeDefinition;
- }
-
- public void performAction()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
-
- XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(element);
-
- Element contentModelElement = domHelper.getContentModelFromParent(element);
- boolean contentModelExists = true;
- if (contentModelElement == null)
- {
- contentModelExists = false;
- }
-
-// get XSD component of the new type chosen
- newTypeDefinition = null;
- for (Iterator i = xsdSchema.getTypeDefinitions().iterator(); i.hasNext(); )
- {
- XSDTypeDefinition typeDef = (XSDTypeDefinition)i.next();
- if (typeDef.getQName().equals(type))
- {
- newTypeDefinition = typeDef;
- break;
- }
- }
-
- boolean needsComplexContent = false;
- boolean needsSimpleContent = false;
-
- if (helper.getBuiltInTypeNamesList().contains(type) ||
- helper.getUserSimpleTypeNamesList().contains(type))
-// if (newTypeDefinition instanceof XSDSimpleTypeDefinition)
- {
- needsSimpleContent = true;
- }
- else if (newTypeDefinition instanceof XSDComplexTypeDefinition)
- {
- needsComplexContent = true;
-// XSDComplexTypeDefinition newCTObj = (XSDComplexTypeDefinition)newTypeDefinition;
-// XSDContentTypeCategory category = newCTObj.getContentTypeCategory();
- }
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE"), element);
- String prefix = element.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
-
- DOMAttribute attr = new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, type);
- if (!contentModelExists) // if no content model exists, then add the new nodes
- {
- if (helper.getBuiltInTypeNamesList().contains(type) ||
- helper.getUserSimpleTypeNamesList().contains(type))
- {
- updateModelAndDerivedByKind(prefix + XSDConstants.SIMPLECONTENT_ELEMENT_TAG, prefix + XSDConstants.EXTENSION_ELEMENT_TAG, attr);
- }
- else if (helper.getUserComplexTypeNamesList().contains(type))
- {
- if (derivedByString.equals("")) // default
- {
- derivedByString = XSDConstants.EXTENSION_ELEMENT_TAG;
- }
- Element derivedByElement = updateModelAndDerivedByKind(prefix + XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, prefix + derivedByString, attr);
- Element newModelGroupElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SEQUENCE_ELEMENT_TAG);
- derivedByElement.appendChild(newModelGroupElement);
- formatChild(derivedByElement);
- }
- }
- else // else there is a content model
- {
- if (type.equals("")) // the chosen type is blank, ie. there is no base type
- {
- Element derivedByElement = domHelper.getDerivedByElementFromComplexType(element);
- Element sourceContentModelElement = domHelper.getContentModelFromParent(derivedByElement);
- // Retain the content model if there is one from the complex or simple content derive by element
- if (XSDDOMHelper.inputEquals(sourceContentModelElement, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(sourceContentModelElement, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(sourceContentModelElement, XSDConstants.ALL_ELEMENT_TAG, false))
- {
- Element newNode = domHelper.cloneElement(element, sourceContentModelElement);
- element.replaceChild(newNode, contentModelElement);
- formatChild(element);
- }
- else // otherwise just add the nodes
- {
- XSDDOMHelper.removeNodeAndWhitespace(contentModelElement);
- Element newSequenceElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SEQUENCE_ELEMENT_TAG);
- element.appendChild(newSequenceElement);
- formatChild(newSequenceElement);
- }
- }
- else // a base type is specified
- {
- Element sequenceChoiceOrAllElement = null; // copy the model to reposition it off of the new derived by element
- if (XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.ALL_ELEMENT_TAG, false))
- {
- sequenceChoiceOrAllElement = domHelper.cloneElement(element, contentModelElement);
- }
-
- if (needsComplexContent)
- {
- if (!(XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false)))
- {
- domHelper.changeContentModel(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, sequenceChoiceOrAllElement);
- contentModelElement = domHelper.getContentModelFromParent(element);
- }
- }
- if (needsSimpleContent)
- {
- if (!(XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false)))
- {
- // we don't want to append the element content to a simple content
- sequenceChoiceOrAllElement = null;
- domHelper.changeContentModel(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, sequenceChoiceOrAllElement);
- contentModelElement = domHelper.getContentModelFromParent(element);
- }
- }
-
- Element derivedByElement = domHelper.getDerivedByElementFromComplexType(element);
- if (derivedByElement == null)
- {
- if (derivedByString == null || (derivedByString != null && derivedByString.equals("")))
- {
- derivedByString = XSDConstants.EXTENSION_ELEMENT_TAG; // since there is no derivedByElement
- }
- derivedByElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, derivedByString);
- contentModelElement.appendChild(derivedByElement);
- formatChild(contentModelElement);
- if (sequenceChoiceOrAllElement != null)
- {
- derivedByElement.appendChild(sequenceChoiceOrAllElement);
- formatChild(derivedByElement);
- }
- }
- else
- {
- if (helper.getBuiltInTypeNamesList().contains(type) ||
- helper.getUserSimpleTypeNamesList().contains(type))
- {
- derivedByString = XSDConstants.EXTENSION_ELEMENT_TAG;
- Element aContentModelElement = domHelper.getContentModelFromParent(derivedByElement);
- if (aContentModelElement != null)
- {
- XSDDOMHelper.removeNodeAndWhitespace(aContentModelElement);
- }
- }
- domHelper.changeDerivedByType(contentModelElement, derivedByString, type);
- }
- derivedByElement.setAttribute(attr.getName(), attr.getValue());
- }
- }
-
- xsdComp.setElement(element);
- endRecording(element);
- }
-
- private Element updateModelAndDerivedByKind(String modelType, String derivedByKind, DOMAttribute attr)
- {
- Element newContentModelElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, modelType);
- element.appendChild(newContentModelElement);
-
- Element newDerivedByElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, derivedByKind);
- newContentModelElement.appendChild(newDerivedByElement);
-
- newDerivedByElement.setAttribute(attr.getName(), attr.getValue());
-
- NodeList children = element.getChildNodes();
- int length = children.getLength();
- ArrayList nodesToRemove = new ArrayList();
- for (int i = 0; i < length; i++)
- {
- Node node = children.item(i);
- if (XSDDOMHelper.inputEquals(node, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(node, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true) ||
- XSDDOMHelper.inputEquals(node, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true) ||
- XSDDOMHelper.inputEquals(node, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
- {
- newDerivedByElement.appendChild(node.cloneNode(true));
- nodesToRemove.add(node);
- }
- }
- for (Iterator i = nodesToRemove.iterator(); i.hasNext(); )
- {
- XSDDOMHelper.removeNodeAndWhitespace((Node)i.next());
- }
-
- formatChild(newContentModelElement);
-
- return newDerivedByElement;
- }
-
- protected void formatChild(Element child)
- {
- if (child instanceof IDOMNode)
- {
- IDOMModel model = ((IDOMNode)child).getModel();
- try
- {
- // tell the model that we are about to make a big model change
- model.aboutToChangeModel();
-
- IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
- formatProcessor.formatNode(child);
- }
- finally
- {
- // tell the model that we are done with the big model change
- model.changedModel();
- }
- }
-
- }
-
- public DocumentImpl getDocument(Element element)
- {
- return (DocumentImpl) element.getOwnerDocument();
- }
-
- public void beginRecording(String description, Element element)
- {
- getDocument(element).getModel().beginRecording(this, description);
- }
-
- public void endRecording(Element element)
- {
- DocumentImpl doc = (DocumentImpl) getDocument(element);
-
- doc.getModel().endRecording(this);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetMultiplicityAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetMultiplicityAction.java
deleted file mode 100644
index 7de436d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetMultiplicityAction.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.wst.xsd.ui.internal.commands.SetMultiplicityCommand;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class SetMultiplicityAction extends AbstractAction
-{
- SetMultiplicityCommand command;
-
- public SetMultiplicityAction(XSDConcreteComponent parent, String multiplicity)
- {
- super(multiplicity, parent);
- command = new SetMultiplicityCommand(parent);
- }
-
- public void setMaxOccurs(int i)
- {
- command.setMaxOccurs(i);
- }
-
- public void setMinOccurs(int i)
- {
- command.setMinOccurs(i);
- }
-
- public void run()
- {
- beginRecording(getText());
- command.run();
- endRecording();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetTypeAction.java
deleted file mode 100644
index b913398..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetTypeAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.actions;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.commands.SetTypeCommand;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class SetTypeAction extends AbstractAction
-{
- int typeKind;
- SetTypeCommand command;
-
- public SetTypeAction(String text, ImageDescriptor image, XSDConcreteComponent xsdConcreteComponent)
- {
- super(text, image, xsdConcreteComponent);
- command = new SetTypeCommand(xsdConcreteComponent);
- }
-
- public SetTypeAction(String text, XSDConcreteComponent xsdConcreteComponent)
- {
- super(text, xsdConcreteComponent);
- command = new SetTypeCommand(xsdConcreteComponent);
- }
-
- public void setTypeKind(int type)
- {
- this.typeKind = type;
- command.setTypeKind(type);
- }
-
- public void run()
- {
- beginRecording(getText());
- command.run();
- endRecording();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SourcePageActionContributor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SourcePageActionContributor.java
deleted file mode 100644
index 8bc62ca..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SourcePageActionContributor.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.actions;
-
-import org.eclipse.ui.IActionBars;
-import org.eclipse.wst.xml.ui.internal.actions.ActionContributorXML;
-
-
-/**
- * SourcePageActionContributor
- *
- * This class is for multi page editor's source page contributor.
- *
- *
- */
-public class SourcePageActionContributor extends ActionContributorXML {
-
- private IActionBars fBars;
-
- /**
- * This method calls:
- * <ul>
- * <li><code>contributeToMenu</code> with <code>bars</code>' menu manager</li>
- * <li><code>contributeToToolBar</code> with <code>bars</code>' tool bar
- * manager</li>
- * <li><code>contributeToStatusLine</code> with <code>bars</code>' status line
- * manager</li>
- * </ul>
- * The given action bars are also remembered and made accessible via
- * <code>getActionBars</code>.
- *
- * @param bars the action bars
- *
- */
- public void init(IActionBars bars) {
- fBars = bars;
- contributeToMenu(bars.getMenuManager());
- contributeToToolBar(bars.getToolBarManager());
- contributeToStatusLine(bars.getStatusLineManager());
- }
-
- /**
- * Returns this contributor's action bars.
- *
- * @return the action bars
- */
- public IActionBars getActionBars() {
- return fBars;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddAttributeDeclarationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddAttributeDeclarationCommand.java
deleted file mode 100644
index 0430149..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddAttributeDeclarationCommand.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.commands;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public class AddAttributeDeclarationCommand extends AbstractCommand
-{
- XSDAttributeDeclaration refAttribute = null;
- /**
- * @param parent
- */
- public AddAttributeDeclarationCommand(XSDConcreteComponent parent)
- {
- super(parent);
- }
-
- public AddAttributeDeclarationCommand(XSDConcreteComponent parent, XSDAttributeDeclaration ref)
- {
- super(parent);
- this.refAttribute = ref;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#run()
- */
- public void run()
- {
- XSDConcreteComponent parent = getParent();
- if (parent instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)parent;
-
- XSDAttributeDeclaration attribute = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
- attribute.setName(getNewName("Attribute")); //$NON-NLS-1$
- attribute.setTypeDefinition(ct.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string")); //$NON-NLS-1$
-
- XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
- attributeUse.setAttributeDeclaration(attribute);
- attributeUse.setContent(attribute);
-
- if (ct.getAttributeContents() != null)
- {
- ct.getAttributeContents().add(attributeUse);
- formatChild(attribute.getElement());
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
- */
- protected boolean adopt(XSDConcreteComponent model)
- {
- return false;
- }
-
- ArrayList names;
-
- protected String getNewName(String description)
- {
- String candidateName = "New" + description; //$NON-NLS-1$
- XSDConcreteComponent parent = getParent();
- names = new ArrayList();
- int i = 1;
- if (parent instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)parent;
- walkUpInheritance(ct);
-
- boolean ready = false;
- while (!ready)
- {
- ready = true;
- for (Iterator iter = names.iterator(); iter.hasNext(); )
- {
- String attrName = (String)iter.next();
- if (candidateName.equals(attrName))
- {
- ready = false;
- candidateName = "New" + description + String.valueOf(i); //$NON-NLS-1$
- i++;
- }
- }
- }
- }
- return candidateName;
- }
-
- private void walkUpInheritance(XSDComplexTypeDefinition ct)
- {
- updateNames(ct);
- XSDTypeDefinition typeDef = ct.getBaseTypeDefinition();
- if (ct != ct.getRootType())
- {
- if (typeDef instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ct2 = (XSDComplexTypeDefinition)typeDef;
- walkUpInheritance(ct2);
- }
- }
- }
-
- private void updateNames(XSDComplexTypeDefinition ct)
- {
- Iterator iter = ct.getAttributeContents().iterator();
- while (iter.hasNext())
- {
- Object obj = iter.next();
- if (obj instanceof XSDAttributeUse)
- {
- XSDAttributeUse use = (XSDAttributeUse)obj;
- XSDAttributeDeclaration attr = use.getAttributeDeclaration();
- String attrName = attr.getName();
- if (attrName != null)
- {
- names.add(attrName);
- }
- }
- }
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddComplexTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddComplexTypeDefinitionCommand.java
deleted file mode 100644
index 72da36a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddComplexTypeDefinitionCommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.commands;
-
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDSchema;
-
-public final class AddComplexTypeDefinitionCommand extends AbstractCommand
-{
- private String name;
-
- public AddComplexTypeDefinitionCommand
- (XSDConcreteComponent parent,
- String name)
- {
- super(parent);
- this.name = name; // this may be null for anonymous type
- }
-
- public void run()
- {
- XSDComplexTypeDefinition typeDef =
- XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
- typeDef.setName(name);
-
- if (adopt(typeDef))
- setModelObject(typeDef);
- }
-
- protected boolean adopt(XSDConcreteComponent model)
- {
- XSDConcreteComponent parent = getParent();
- if (parent instanceof XSDSchema)
- ((XSDSchema)parent).getTypeDefinitions().add(model);
- else if (parent instanceof XSDElementDeclaration)
- ((XSDElementDeclaration)parent).setAnonymousTypeDefinition((XSDComplexTypeDefinition)model);
- else
- return false; // invalid parent
-
- return true;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddElementDeclarationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddElementDeclarationCommand.java
deleted file mode 100644
index fa087dd..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddElementDeclarationCommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.commands;
-
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-
-public final class AddElementDeclarationCommand extends AbstractCommand
-{
- private String name; // element name
-
- public AddElementDeclarationCommand
- (XSDConcreteComponent parent,
- String name)
- {
- super(parent);
- this.name = name;
- }
-
- public void run()
- {
- XSDElementDeclaration elementDecl =
- XSDFactory.eINSTANCE.createXSDElementDeclaration();
- elementDecl.setName(name);
-
- adopt(elementDecl);
- setModelObject(elementDecl);
- }
-
- protected boolean adopt(XSDConcreteComponent model)
- {
- XSDConcreteComponent parent = getParent();
- if (parent instanceof XSDSchema)
- ((XSDSchema)parent).getElementDeclarations().add(model);
- else if (parent instanceof XSDParticle)
- ((XSDParticle)parent).setContent((XSDElementDeclaration)model);
- else
- return false; // invalid parent
-
- return true;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddModelGroupCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddModelGroupCommand.java
deleted file mode 100644
index f5518e2..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddModelGroupCommand.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.commands;
-
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public class AddModelGroupCommand extends AbstractCommand
-{
- protected XSDCompositor compositor;
-
- public AddModelGroupCommand(XSDConcreteComponent parent, XSDCompositor compositor)
- {
- super(parent);
- this.compositor = compositor;
- }
-
- public void run()
- {
- XSDConcreteComponent parent = getParent();
- XSDConcreteComponent owner = null;
- if (parent instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration ed = (XSDElementDeclaration)parent;
- if (ed.getTypeDefinition() != null)
- {
- if (ed.getAnonymousTypeDefinition() == null)
- {
- ed.setTypeDefinition(null);
- XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
- ed.setAnonymousTypeDefinition(td);
- owner = ed.getTypeDefinition();
- }
- else
- {
- XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
- ed.setAnonymousTypeDefinition(td);
- owner = td;
- }
- }
- else if (ed.getAnonymousTypeDefinition() == null)
- {
- XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
- ed.setAnonymousTypeDefinition(td);
- owner = td;
- }
- else if (ed.getAnonymousTypeDefinition() instanceof XSDComplexTypeDefinition)
- {
- owner = ed.getAnonymousTypeDefinition();
- }
- else if (ed.getAnonymousTypeDefinition() instanceof XSDSimpleTypeDefinition)
- {
- XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
- ed.setAnonymousTypeDefinition(td);
- owner = td;
- }
- }
- else if (parent instanceof XSDModelGroup)
- {
- ((XSDModelGroup) parent).getContents().add(createModelGroup());
- }
- else if (parent instanceof XSDComplexTypeDefinition)
- {
- owner = ((XSDComplexTypeDefinition)parent);
- }
- if (owner != null)
- {
- XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
- XSDModelGroup modelGroup = createModelGroup();
- particle.setContent(modelGroup);
-
- XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)owner;
- ctd.setContent(particle);
- formatChild(parent.getElement());
- }
- }
-
- protected boolean adopt(XSDConcreteComponent model)
- {
- return false;
- }
-
- protected XSDModelGroup createModelGroup()
- {
- XSDModelGroup modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
- modelGroup.setCompositor(compositor);
- return modelGroup;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddSimpleTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddSimpleTypeDefinitionCommand.java
deleted file mode 100644
index b0c347b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddSimpleTypeDefinitionCommand.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.commands;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public final class AddSimpleTypeDefinitionCommand extends AbstractCommand
-{
- private String name;
-
- public AddSimpleTypeDefinitionCommand
- (XSDConcreteComponent parent,
- String name)
- {
- super(parent);
- this.name = name; // this may be null for anonymous type
- }
-
- public void run()
- {
- XSDSimpleTypeDefinition typeDef =
- XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
- typeDef.setName(name);
-
- if (adopt(typeDef))
- setModelObject(typeDef);
- }
-
- protected boolean adopt(XSDConcreteComponent model)
- {
- XSDConcreteComponent parent = getParent();
- if (parent instanceof XSDSchema)
- ((XSDSchema)parent).getTypeDefinitions().add(model);
- else if (parent instanceof XSDElementDeclaration)
- ((XSDElementDeclaration)parent).setAnonymousTypeDefinition((XSDSimpleTypeDefinition)model);
- else if (parent instanceof XSDAttributeDeclaration)
- ((XSDAttributeDeclaration)parent).setAnonymousTypeDefinition((XSDSimpleTypeDefinition)model);
- else
- return false; // invalid parent
-
- return true;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeAnonymousTypeGlobalCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeAnonymousTypeGlobalCommand.java
deleted file mode 100644
index 7562a18..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeAnonymousTypeGlobalCommand.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.commands;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public final class MakeAnonymousTypeGlobalCommand extends AbstractCommand {
-
- String fNewName;
-
- public MakeAnonymousTypeGlobalCommand(XSDConcreteComponent element,
- String newName) {
- super(element.getContainer());
- setModelObject(element);
- fNewName = newName;
- }
-
- public void run() {
- XSDConcreteComponent model = getModelObject();
- XSDConcreteComponent parent = model.getContainer();
- XSDTypeDefinition globalTypeDef = null;
- if (model instanceof XSDComplexTypeDefinition) {
- if (parent instanceof XSDElementDeclaration) {
- // clone typedef with it's content and set it global
- globalTypeDef = (XSDComplexTypeDefinition) model
- .cloneConcreteComponent(true, false);
- globalTypeDef.setName(fNewName);
- parent.getSchema().getContents().add(globalTypeDef);
- ((XSDElementDeclaration) parent)
- .setTypeDefinition(globalTypeDef);
- }
- } else if (model instanceof XSDSimpleTypeDefinition) {
-
- XSDSimpleTypeDefinition typeDef = (XSDSimpleTypeDefinition) model;
- if (parent instanceof XSDElementDeclaration) {
- // clone typedef with it's content and set it global
- globalTypeDef = (XSDSimpleTypeDefinition) typeDef
- .cloneConcreteComponent(true, false);
- globalTypeDef.setName(fNewName);
- parent.getSchema().getContents().add(globalTypeDef);
- ((XSDElementDeclaration) parent)
- .setTypeDefinition(globalTypeDef);
- formatChild(globalTypeDef.getElement());
-
- } else if (parent instanceof XSDAttributeDeclaration) {
- // clone typedef with it's content and set it global
- globalTypeDef = (XSDSimpleTypeDefinition) typeDef
- .cloneConcreteComponent(true, false);
- globalTypeDef.setName(fNewName);
- parent.getSchema().getContents().add(globalTypeDef);
- ((XSDAttributeDeclaration) parent)
- .setTypeDefinition((XSDSimpleTypeDefinition) globalTypeDef);
-
- }
-
- }
-
- formatChild(globalTypeDef.getElement());
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
- */
- protected boolean adopt(XSDConcreteComponent model) {
- // TODO Auto-generated method stub
- return true;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeLocalElementGlobalCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeLocalElementGlobalCommand.java
deleted file mode 100644
index 7303919..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeLocalElementGlobalCommand.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.commands;
-
-import org.eclipse.xsd.XSDComplexTypeContent;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public final class MakeLocalElementGlobalCommand extends AbstractCommand
-{
-
- public MakeLocalElementGlobalCommand
- (XSDConcreteComponent element)
- {
- super(element.getContainer());
- setModelObject(element);
- }
-
- public void run()
- {
-
- if(getModelObject() instanceof XSDElementDeclaration){
-
- XSDElementDeclaration element = (XSDElementDeclaration)getModelObject();
- XSDConcreteComponent parent = getParent();
- XSDConcreteComponent container = parent.getContainer();
-
- // clone element with it's content and set it global
- XSDConcreteComponent elementDecl = ((XSDElementDeclaration)getModelObject()).cloneConcreteComponent(true, true);
- container.getSchema().getContents().add(elementDecl);
-
- // create local element and set it's reference to the global one
- XSDElementDeclaration elementRef =
- XSDFactory.eINSTANCE.createXSDElementDeclaration();
- elementRef.setValue(element.getValue());
- elementRef.setResolvedElementDeclaration((XSDElementDeclaration)elementDecl);
-
- // now set content models
- if(parent instanceof XSDComplexTypeContent){
- if(container instanceof XSDModelGroup){
- XSDModelGroup modelGroup = (XSDModelGroup)container;
- // disconnect parent from its container
- int index = modelGroup.getContents().indexOf(parent);
- XSDParticle particle =
- XSDFactory.eINSTANCE.createXSDParticle();
- particle.setContent(elementRef);
- modelGroup.getContents().add(index, particle);
-
- modelGroup.getContents().remove(parent);
- modelGroup.updateElement(true);
- formatChild(modelGroup.getElement());
- }
- }
- else if(parent instanceof XSDTypeDefinition){
- System.out.println("MakeLocalElementGlobalCommand.run: parent instanceof XSDTypeDefinition");
-
- }
-
- container.getSchema().updateElement(true);
- formatChild(elementDecl.getElement());
-
- }
-
- }
- /* (non-Javadoc)
- * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
- */
- protected boolean adopt(XSDConcreteComponent model) {
- // TODO Auto-generated method stub
- return true;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/RenameCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/RenameCommand.java
deleted file mode 100644
index 4ecd336..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/RenameCommand.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.commands;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ComplexTypeDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ElementDeclarationEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-/**
- * @author kchong
- *
- * <a href="mailto:kchong@ca.ibm.com">kchong@ca.ibm.com</a>
- *
- */
-public class RenameCommand
-{
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
- Label label = new Label();
- XSDNamedComponent namedComponent;
- GraphicalEditPart editPart;
-
- public RenameCommand(XSDNamedComponent namedComponent, GraphicalEditPart editPart)
- {
- this.namedComponent = namedComponent;
- this.editPart = editPart;
- }
-
- public void run()
- {
- if (editPart instanceof ElementDeclarationEditPart)
- {
- ElementDeclarationEditPart elementDeclarationEditPart = (ElementDeclarationEditPart)editPart;
- elementDeclarationEditPart.doEditName();
- }
- else if (editPart instanceof TopLevelComponentEditPart)
- {
- TopLevelComponentEditPart topLevelEditPart = (TopLevelComponentEditPart)editPart;
- topLevelEditPart.doEditName();
- }
- else if (editPart instanceof ComplexTypeDefinitionEditPart)
- {
- ((ComplexTypeDefinitionEditPart)editPart).doEditName();
- }
- else if (editPart instanceof ModelGroupDefinitionEditPart)
- {
- ((ModelGroupDefinitionEditPart)editPart).doEditName();
- }
- }
-
- protected boolean adopt(XSDConcreteComponent model)
- {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetTypeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetTypeCommand.java
deleted file mode 100644
index ce76482..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetTypeCommand.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.commands;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class SetTypeCommand extends AbstractCommand
-{
- protected int typeKind = XSDConstants.COMPLEXTYPE_ELEMENT;
-
- public SetTypeCommand(XSDConcreteComponent parent)
- {
- super(parent);
- }
-
- public void setTypeKind(int type)
- {
- this.typeKind = type;
- }
-
- public void run()
- {
- XSDConcreteComponent parent = getParent();
- if (parent instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration element = (XSDElementDeclaration)parent;
- XSDSchema schema = element.getSchema();
- if (typeKind == XSDConstants.COMPLEXTYPE_ELEMENT)
- {
- AddModelGroupCommand sequenceCommand = new AddModelGroupCommand(element, XSDCompositor.SEQUENCE_LITERAL);
- sequenceCommand.run();
- }
- else if (typeKind == XSDConstants.SIMPLETYPE_ELEMENT)
- {
- AddSimpleTypeDefinitionCommand stCommand = new AddSimpleTypeDefinitionCommand(element, null);
- stCommand.run();
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)stCommand.getModelObject();
- XSDSimpleTypeDefinition base = schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), "string");
- st.setBaseTypeDefinition(base);
- }
- else
- {
- Shell shell = Display.getCurrent().getActiveShell();
- IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-
- XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
- XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
- provider.setDialog(dialog);
-
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- if (dialog.open() == Window.OK) {
- XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
- helper.setType(element.getElement(), "type", dialog.getSelection());
- }
- }
- formatChild(element.getElement());
- }
-
- }
-
- private IEditorPart getActiveEditor()
- {
- IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
- IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
- IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
-// IEditorPart editorPart = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
-
- return editorPart;
- }
-
- protected boolean adopt(XSDConcreteComponent model)
- {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/ComponentSelectionDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/ComponentSelectionDialog.java
deleted file mode 100644
index 3ebe1f2..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/ComponentSelectionDialog.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.common;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-
-public class ComponentSelectionDialog extends Dialog {
- private Display display = Display.getCurrent();
- private String dialogTitle;
-
- protected IComponentSelectionProvider provider;
- private List componentTreeViewerInput;
- private List masterComponentList;
-
- // widgets
- protected Composite topComposite;
- protected Composite bottomComposite;
- private String filterTextLabel = "";
- private String componentListLabel = XSDEditorPlugin.getXSDString("_UI_LABEL_COMPONENTS");
- private Text textFilter;
- protected TreeViewer componentTreeViewer;
- private org.eclipse.swt.widgets.List qualifierList;
-
- protected Object componentSelection;
- protected Object qualifierTextSelection;
-
- public ComponentSelectionDialog(Shell shell, String dialogTitle, IComponentSelectionProvider provider) {
- super(shell);
- setShellStyle(getShellStyle() | SWT.RESIZE);
- this.dialogTitle = dialogTitle;
- this.provider = provider;
-
- componentTreeViewerInput = new ArrayList();
- masterComponentList = new ArrayList();
- }
-
- /*
- * This method should be called before createDialogArea(Composite)
- */
- public void setComponentTreeLabel(String string) {
- componentListLabel = string;
- }
-
- /*
- * This method should be called before createDialogArea(Composite)
- */
- public void setFilterLabel(String string) {
- filterTextLabel = string;
- }
-
- public void create() {
- super.create();
- setTextFilterFocus();
- }
-
- protected void setTextFilterFocus() {
- textFilter.setFocus();
- }
-
- public Control createDialogArea(Composite parent) {
- getShell().setText(dialogTitle);
-
- Composite mainComposite = (Composite) super.createDialogArea(parent);
- GridData gData = (GridData) mainComposite.getLayoutData();
- gData.heightHint = 500;
- gData.widthHint = 400;
-
- // Subclasses may use this Composite to add desired widgets
- //topComposite = new Composite(mainComposite, SWT.NONE);
- //topComposite.setLayoutData(new GridData());
- //topComposite.setLayout(new GridLayout());
-
- // do we need to introduce a method here to contain this
- // so we can add different parent other than 'topComposite'
- Composite filterLabelAndTree = new Composite(mainComposite, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginWidth = 0;
- filterLabelAndTree.setLayoutData(new GridData(GridData.FILL_BOTH));
- filterLabelAndTree.setLayout(layout);
-
- // Create Text textFilter
- Label filterLabel = new Label(filterLabelAndTree, SWT.NONE);
- filterLabel.setText(filterTextLabel);// + "(? = any character, * = any string):"); // TODO: Externalize String
-
- textFilter = new Text(filterLabelAndTree, SWT.SINGLE | SWT.BORDER);
- textFilter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- textFilter.addModifyListener(new TextFilterModifyAdapter());
- GridData textFilterData = new GridData();
- textFilterData.horizontalAlignment = GridData.FILL;
- textFilterData.grabExcessHorizontalSpace = true;
- textFilter.setLayoutData(textFilterData);
-
- //textFilter.setSelection(0);
- //textFilter.setf
-
-
- // Create Component TreeViewer
- createComponentTreeViewer(filterLabelAndTree);
-
- // Create Qualifier List widget
- Label qualifierLabel = new Label(mainComposite, SWT.NONE);
- qualifierLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_QUALIFIER"));
-
- qualifierList = new org.eclipse.swt.widgets.List(mainComposite, SWT.BORDER | SWT.SINGLE);
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.heightHint = 45;
- qualifierList.setLayoutData(data);
-
- bottomComposite = new Composite(mainComposite, SWT.NONE);
- bottomComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- bottomComposite.setLayout(new GridLayout());
-
- // Populate the Component TreeViewer via the provider
- // TODO: Is this the right way to set/get the ContentProvider?
- componentTreeViewer.setContentProvider(new ComponentTreeContentProvider());
- componentTreeViewer.setLabelProvider(provider.getLabelProvider());
- componentTreeViewer.setSorter(new ViewerSorter());
- componentTreeViewer.setInput(componentTreeViewerInput);
-
- populateMasterComponentList();
- refreshTreeViewer("");
-
- return mainComposite;
- }
-
- protected TreeViewer createTreeViewer(Composite comp, String title) {
- Label label = new Label(comp, SWT.NONE);
- label.setText(title);
-
- TreeViewer treeViewer = new TreeViewer(new Tree(comp, SWT.SINGLE | SWT.BORDER));
- Control treeWidget = treeViewer.getTree();
- GridData gd = new GridData(GridData.FILL_BOTH);
- treeWidget.setLayoutData(gd);
-
- return treeViewer;
- }
-
- /*
- * Creates the Component TreeViewer.
- */
- private void createComponentTreeViewer(Composite base) {
- componentTreeViewer = createTreeViewer(base, componentListLabel);
-
- componentTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection structuredSelection = (IStructuredSelection) event.getSelection();
- List qualifiers = provider.getQualifiers(structuredSelection.getFirstElement());
- updateQualifierList(qualifiers);
- updateCanFinish();
- }
- });
- }
-
- private void updateQualifierList(List qualifiers) {
- qualifierList.removeAll();
- Iterator it = qualifiers.iterator();
- while (it.hasNext()) {
- qualifierList.add(it.next().toString());
- }
- }
-
-
- /*
- * Returns the processed filter text for the Text field. Inserts a "."
- * before each supported meta-character.
- */
- protected String getProcessedFilterString() {
- return processFilterString(textFilter.getText());
- }
-
- /*
- * If supported metacharacters are used in the filter string, we need to
- * insert a "." before each metacharacter.
- */
- private String processFilterString(String inputString) {
- if (!(inputString.equals(""))) {
- inputString = insertString("*", ".", inputString);
- inputString = insertString("?", ".", inputString);
- inputString = inputString + ".*";
- } else {
- inputString = ".*";
- }
-
- return inputString.toLowerCase();
- }
-
- /*
- * Helper method to insert a "." before each metacharacter in the
- * search/filter string.
- */
- private String insertString(String target, String newString, String string) {
- StringBuffer stringBuffer = new StringBuffer(string);
-
- int index = stringBuffer.indexOf(target);
- while (index != -1) {
- stringBuffer = stringBuffer.insert(index, newString);
- index = stringBuffer.indexOf(target, index + newString.length() + target.length());
- }
-
- return stringBuffer.toString();
- }
-
- /*
- * Listens to changes made in the text filter widget
- */
- private class TextFilterModifyAdapter implements ModifyListener {
- public void modifyText(ModifyEvent e) {
- if (e.widget == textFilter) {
- if (delayedEvent != null) {
- delayedEvent.CANCEL = true;
- }
-
- delayedEvent = new DelayedEvent();
- Display.getCurrent().timerExec(400, delayedEvent);
- }
- }
- }
-
- //TODO... do we really need one instance?
- private DelayedEvent delayedEvent;
-
- /*
- * Update the component TreeViewer when the text filter is modified.
- * Use a DelayedEvent so we don't update on every keystroke.
- */
- private class DelayedEvent implements Runnable {
- public boolean CANCEL = false;
-
- public void run() {
- if (!CANCEL) {
- refreshTreeViewer(getProcessedFilterString());
-
- // Select first match
- if (componentTreeViewer.getTree().getItemCount() > 0) {
- TreeItem item = componentTreeViewer.getTree().getItems()[0];
- TreeItem items[] = new TreeItem[1];
- items[0] = item;
- componentTreeViewer.getTree().setSelection(items);
- }
-
- // Update qualifierList
- IStructuredSelection structuredSelection = (IStructuredSelection) componentTreeViewer.getSelection();
- List qualifiers = provider.getQualifiers(structuredSelection.getFirstElement());
- updateQualifierList(qualifiers);
-
- updateCanFinish();
- }
- }
- }
-
- class ComponentList implements IComponentList {
- private Vector objectVector = new Vector();
- private long currentChangeCounter = 0;
-
- public void addComponent(Object o) {
- objectVector.add(o);
- currentChangeCounter++;
- doViewerUpdate();
- }
-
- private void doViewerUpdate() {
- // TODO: Investigate if we should also add a timer condition??
- if (currentChangeCounter == 10) {
- currentChangeCounter = 0;
- fireUpdateList(this);
- }
- }
-
- public int size() {
- return objectVector.size();
- }
-
- public List subList(int startIndex, int endIndex) {
- return objectVector.subList(startIndex, endIndex);
- }
-
- public Iterator iterator() {
- return objectVector.iterator();
- }
- }
-
-
- // this method gets called from a non-ui thread so needs to call
- // asyncExec to ensure the UI updates happen on the UI thread
- //
- protected void fireUpdateList(final ComponentList list) {
- Runnable runnable = new Runnable() {
- public void run(){
- // add new objects
- int growingListSize = list.size();
- int currentSize = masterComponentList.size();
- if (growingListSize > currentSize) {
- masterComponentList.addAll(list.subList(currentSize, growingListSize));
- }
-
- refreshTreeViewer(getProcessedFilterString());
- }
- };
- display.asyncExec(runnable);
- }
-
-
- /*
- * Populate the Component TreeViewer with items.
- */
- protected void populateMasterComponentList() {
- masterComponentList.clear();
-
- final ComponentList componentList = new ComponentList();
- provider.getComponents(componentList, true);
-
- Job job = new Job("read components") {
- protected IStatus run(IProgressMonitor monitor) {
- try {
- // this stuff gets executed on a non-UI thread
- //
- provider.getComponents(componentList, false);
-
- // Do a final update of our Input for the component tree viewer.
- fireUpdateList(componentList);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- return Status.OK_STATUS;
- }
- };
- job.schedule();
- }
-
- protected void refreshTreeViewer(String filterText) {
- componentTreeViewerInput.clear();
- ILabelProvider labelProvider = provider.getLabelProvider();
- Pattern regex = Pattern.compile(filterText);
- Iterator it = masterComponentList.iterator();
- while (it.hasNext()) {
- Object item = it.next();
- String itemString = labelProvider.getText(item);
- Matcher m = regex.matcher(itemString.toLowerCase());
- if (itemString.toLowerCase().startsWith(filterText) || m.matches()) {
- componentTreeViewerInput.add(item);
- }
- }
-
- componentTreeViewer.refresh();
- }
-
- /*
- * If there is a selection in the ComponentTreeViewer, enable OK
- */
- protected void updateCanFinish() {
- IStructuredSelection selection = (IStructuredSelection) componentTreeViewer.getSelection();
- if (selection.getFirstElement() != null) {
- getButton(IDialogConstants.OK_ID).setEnabled(true);
- }
- else {
- getButton(IDialogConstants.OK_ID).setEnabled(false);
- }
- }
-
- protected void okPressed() {
- IStructuredSelection selection = (IStructuredSelection) componentTreeViewer.getSelection();
- componentSelection = selection.getFirstElement();
- int qualifierIndex = qualifierList.getSelectionIndex();
- if (qualifierIndex < 0) {
- qualifierIndex = 0;
- }
- qualifierTextSelection = qualifierList.getItem(qualifierIndex);
-
- super.okPressed();
- }
-
- private class ComponentTreeContentProvider implements ITreeContentProvider {
- public Object[] getChildren(Object parentElement) {
- if (parentElement instanceof List) {
- return ((List) parentElement).toArray();
- }
- return new Object[0];
- }
-
- public Object[] getElements(Object inputElement) {
- return getChildren(inputElement);
- }
-
- public Object getParent(Object element) {
- return null;
- }
-
- public boolean hasChildren(Object element) {
- if (getChildren(element).length > 0) {
- return true;
- }
- return false;
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-
- public void dispose() {
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentList.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentList.java
deleted file mode 100644
index 5c5d46a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentList.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.common;
-
-import java.util.Iterator;
-
-public interface IComponentList {
- public void addComponent(Object o);
- public Iterator iterator();
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentSelectionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentSelectionProvider.java
deleted file mode 100644
index de68271..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentSelectionProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.common;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.ILabelProvider;
-
-public interface IComponentSelectionProvider {
-
- // warning ... this will get called on a non UI thread
- void getComponents(IComponentList list, boolean quick);
-
- String getType(Object component);
- ILabelProvider getLabelProvider();
- List getQualifiers(Object component);
- String getNameFieldTitle();
- String getListTitle();
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/ResourceView.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/ResourceView.java
deleted file mode 100644
index 2a61449..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/ResourceView.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xml;
-
-public class ResourceView {
-/*
- Label scopeComboLabel = new Label(topComposite, SWT.NONE);
- scopeComboLabel.setText(searchScopeComboLabel);
- scopeCombo = new Combo(topComposite, SWT.NONE);
- initializeSearchScopeCombo();
-
- sashForm = new SashForm(topComposite, SWT.VERTICAL);
- GridData sashGD = new GridData(GridData.FILL_BOTH);
- sashGD.grabExcessHorizontalSpace = true;
- sashGD.grabExcessVerticalSpace = true;
- sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
- sashForm.setLayout(new GridLayout());
-
- int[] sashFormWeights = new int[2];
- sashFormWeights[0] = 0;
- sashFormWeights[1] = 7;
- sashForm.setWeights(sashFormWeights);
-
- // Create PageBook for High Level TreeViewer
- highLevelPageBook = new PageBook(sashForm, SWT.NONE);
- GridData fileSystemPBData = new GridData();
- fileSystemPBData.horizontalAlignment = SWT.FILL;
- highLevelPageBook.setLayoutData(fileSystemPBData);
-
- blankHighLevelComposite = new Composite(highLevelPageBook, SWT.NONE);
- highLevelComposite = new Composite(highLevelPageBook, SWT.NONE);
- GridLayout fileSystemLayout = new GridLayout();
- fileSystemLayout.marginWidth = 0;
- highLevelComposite.setLayout(fileSystemLayout);
- highLevelComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- createHighLevelTreeViewer(highLevelComposite);
- populateHighLevelTreeViewer();
-
- highLevelPageBook.showPage(blankHighLevelComposite);
-////////////////////////////////////////////////////////////////////////////// //
-
- /*
- * Creates the High Level TreeViewer (Top TreeViewer).
- *
- private void createHighLevelTreeViewer(Composite base) {
- highLevelTreeViewer = createTreeViewer(highLevelComposite, "Resources");
- initializeHighLevelTreeViewer();
- String ext[] = new String[1];
- ext[0] = "xsd";
- addFilterExtensions(highLevelTreeViewer, ext, new IFile[0]);
-
- initializeHighLevelTreeViewer();
- populateHighLevelTreeViewer();
- }
-
-
- protected void showHighLevelView(boolean show) {
- if (show) {
- int[] sashFormWeights = new int[2];
- sashFormWeights[0] = 4;
- sashFormWeights[1] = 5;
- sashForm.setWeights(sashFormWeights);
-
- highLevelPageBook.showPage(highLevelComposite);
- topComposite.layout(true, true);
-
- showHighLevelView();
- } else {
- int[] sashFormWeights = new int[2];
- sashFormWeights[0] = 0;
- sashFormWeights[1] = 7;
- sashForm.setWeights(sashFormWeights);
-
- highLevelPageBook.showPage(blankHighLevelComposite);
- topComposite.layout(true, true);
-
- hideHighLevelView();
- }
- }
-
- protected void setFilter(TreeViewer treeViewer, ViewerFilter filter) {
- treeViewer.getTree().setRedraw(false);
- treeViewer.resetFilters();
- treeViewer.addFilter(filter);
- treeViewer.getTree().setRedraw(true);
- treeViewer.getTree().redraw();
- }
-
- // ///////////////////////////////////////////////////
- // This is a convenience method that allows filtering of the given file
- // exensions. It internally creates a ResourceFilter so that users of this
- // class don't have to construct one.
- // If the extensions provided don't have '.', one will be added.
- protected void addFilterExtensions(TreeViewer treeViewer, String[] filterExtensions, IFile[] excludedFiles) {
- // First add the '.' to the filterExtensions if they don't already have
- // one
- String[] correctedFilterExtensions = new String[filterExtensions.length];
- for (int i = 0; i < filterExtensions.length; i++) {
- // If the extension doesn't start with a '.', then add one.
- if (filterExtensions[i].startsWith(".")) {
- correctedFilterExtensions[i] = filterExtensions[i];
- } else {
- correctedFilterExtensions[i] = "." + filterExtensions[i];
- }
- }
- ViewerFilter filter;
- if (excludedFiles != null) {
- filter = new SetTypeResourceFilter(correctedFilterExtensions, excludedFiles, null);
- } else {
- filter = new SetTypeResourceFilter(correctedFilterExtensions, null);
- }
- setFilter(treeViewer, filter);
- }
-
-
-
- * Creates a Generic TreeViewer object with the specified label and sets
- * it's GridData value.
-
- protected TreeViewer createTreeViewer(Composite comp, String title) {
- Label label = new Label(comp, SWT.NONE);
- label.setText(title);
-
- TreeViewer treeViewer = new TreeViewer(new Tree(comp, SWT.SINGLE | SWT.BORDER));
- Control treeWidget = treeViewer.getTree();
- GridData gd = new GridData(GridData.FILL_BOTH);
- treeWidget.setLayoutData(gd);
-
- return treeViewer;
- }
-*/
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentFinder.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentFinder.java
deleted file mode 100644
index 9c1bf72..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentFinder.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xml;
-
-import org.eclipse.core.resources.IFile;
-
-/**
- * this thing parsers xml artifacts and picks out the specified components attributes
- *
- */
-public class XMLComponentFinder {
- public static final int ENCLOSING_PROJECT_SCOPE = 0;
- public static final int ENTIRE_WORKSPACE_SCOPE = 1;
-
- protected IFile currentIFile;
-
- public XMLComponentFinder() {
- }
-
- /*
- * Takes in the IFile we are currently editing.
- * The currentIFile must be set before the getEnclosingProjectFiles()
- * method will return correctly.
- */
- public void setFile(IFile file) {
- currentIFile = file;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionDialog.java
deleted file mode 100644
index d9a74d5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionDialog.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xml;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.ComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSelectionProvider.XMLComponentTreeObject;
-
-public class XMLComponentSelectionDialog extends ComponentSelectionDialog {
-
- protected final static String DEFAULT_NAME_FIELD_TITLE = XSDEditorPlugin.getXSDString("_UI_LABEL_COMPONENT_NAME");
- protected final static String DEFAULT_LIST_TITLE = XSDEditorPlugin.getXSDString("_UI_LABEL_MATCHING_COMPONENTS");
-
- public static final String SCOPE_SPECIFIED_FILE = XSDEditorPlugin.getXSDString("_UI_LABEL_SPECIFIED_FILE");
-
- public static final String SCOPE_ENCLOSING_PROJECT = XSDEditorPlugin.getXSDString("_UI_LABEL_ENCLOSING_PROJECT");
-
- public static final String SCOPE_WORKSPACE = XSDEditorPlugin.getXSDString("_UI_LABEL_WORKSPACE");
-
- public static final String SCOPE_CURRENT_RESOURCE = XSDEditorPlugin.getXSDString("_UI_LABEL_CURRENT_RESOURCE");
-
- private String currentSearchScope = SCOPE_CURRENT_RESOURCE;
-
- protected Button chooseButton;
- protected Button[] radioButton = new Button[3];
-
- public XMLComponentSelectionDialog(Shell shell, String dialogTitle,
- IComponentSelectionProvider provider) {
- super(shell, dialogTitle, provider);
- }
-
-public Control createDialogArea(Composite parent) {
-
- setFilterLabel(provider.getNameFieldTitle() != null ? provider.getNameFieldTitle() : DEFAULT_NAME_FIELD_TITLE);
- setComponentTreeLabel(provider.getListTitle() != null ? provider.getListTitle() : DEFAULT_LIST_TITLE);
- super.createDialogArea(parent);
-
- // We use the Composite topComposite to create additional widgets
- GridLayout layout = new GridLayout();
- layout.marginWidth = 0;
- bottomComposite.setLayout(layout);
-
-
- Group group = new Group(bottomComposite, SWT.NONE);
- GridLayout gridLayout = new GridLayout(3, false);
- //gridLayout.marginWidth = 0;
- //gridLayout.marginLeft = 2;
- group.setLayout(gridLayout);
- group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- group.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_SEARCH_SCOPE"));
-
- ScopeChangeListener scopeChangeListener = new ScopeChangeListener();
- radioButton[0] = new Button(group, SWT.RADIO);
- radioButton[0].setText(SCOPE_WORKSPACE);
-
- radioButton[1] = new Button(group, SWT.RADIO);
- radioButton[1].setText(SCOPE_ENCLOSING_PROJECT);
-
- radioButton[2] = new Button(group, SWT.RADIO);
- radioButton[2].setText(SCOPE_CURRENT_RESOURCE);
-
- //radioButton[3] = new Button(group, SWT.RADIO);
- //radioButton[3].setText("Resource Set");
-
-
- for (int i = 0; i < radioButton.length; i++)
- {
- if (radioButton[i].getText().equals(currentSearchScope))
- {
- radioButton[i].setSelection(true);
- }
- radioButton[i].addSelectionListener(scopeChangeListener);
- }
- if (false){
- Composite selectFileGroup = new Composite(group, SWT.NONE);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 2;
- selectFileGroup.setLayoutData(gd);
- GridLayout gridLayout3 = new GridLayout(2, false);
- gridLayout3.marginWidth = 0;
- gridLayout3.marginHeight = 0;
- selectFileGroup.setLayout(gridLayout3);
- Text t = new Text(selectFileGroup, SWT.BORDER | SWT.READ_ONLY);
- t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- Button choose = new Button(selectFileGroup, SWT.NONE);
- choose.setText("Choose...");
- choose.addSelectionListener(scopeChangeListener);
- }
-
-
- Button check = new Button(group, SWT.CHECK);
- check.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_NARROW_SEARCH_SCOPE_RESOURCE"));
- GridData gd = new GridData();
- gd.horizontalSpan = 3;
- check.setLayoutData(gd);
- check.setEnabled(false);
-
- return parent;
- } /*
- * Returns the selected search scope.
- */
- public String getSearchScope() {
- return currentSearchScope;
- }
-
- public XMLComponentSpecification getSelection() {
- XMLComponentTreeObject treeObject = (XMLComponentTreeObject) componentSelection;
- List specs = treeObject.getXMLComponentSpecification();
-
- int matchingIndex = 0;
- for (int index = 0; index < specs.size(); index++) {
- XMLComponentSpecification spec = (XMLComponentSpecification) specs
- .get(index);
- IPath path = new Path(spec.getFileLocation());
- String specText = spec.getTargetNamespace() + " - "
- + path.lastSegment();
- if (specText.equals(qualifierTextSelection)) {
- matchingIndex = index;
- break;
- }
- }
-
- return (XMLComponentSpecification) specs.get(matchingIndex);
- }
-
- private class ScopeChangeListener extends SelectionAdapter {
- public void widgetSelected(SelectionEvent e) {
-
- if (e.widget instanceof Button) {
- Button b = (Button) e.widget;
- if ((b.getStyle() & SWT.RADIO) != 0) {
- currentSearchScope = b.getText();
- populateMasterComponentList();
- refreshTreeViewer(getProcessedFilterString());
-
- // Select the first matching component. Though we should be
- // smarter here
- // and determine if there was a selection before the scope
- // switch (and if
- // the component is still available.
- Tree tree = componentTreeViewer.getTree();
- TreeItem items[] = tree.getItems();
- if (items.length > 0) {
- TreeItem select[] = new TreeItem[1];
- select[0] = items[0];
- tree.setSelection(select);
- }
-
- updateCanFinish();
- }
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionProvider.java
deleted file mode 100644
index 613d31a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionProvider.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xml;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentList;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentSelectionProvider;
-
-public abstract class XMLComponentSelectionProvider implements IComponentSelectionProvider {
- public List getQualifiers(Object component) {
- List qualifiers = new ArrayList();
- if (component != null) {
- XMLComponentTreeObject specification = (XMLComponentTreeObject) component;
- Iterator it = specification.getXMLComponentSpecification().iterator();
- while (it.hasNext()) {
- XMLComponentSpecification spec = (XMLComponentSpecification) it.next();
- qualifiers.add(createQualifierText(spec));
- }
- }
-
- return qualifiers;
- }
-
- protected String createQualifierText(XMLComponentSpecification spec) {
- IPath path = new Path(spec.getFileLocation());
- return spec.getTargetNamespace() + " - " + path.lastSegment();
- }
-
- protected void addDataItemToTreeNode(IComponentList comps, XMLComponentSpecification dataItem) {
- boolean foundMatch = false;
- Iterator it = comps.iterator();
- XMLComponentTreeObject containingTreeObject = null;
-
- while (it.hasNext()) {
- XMLComponentTreeObject treeObject = (XMLComponentTreeObject) it.next();
- if (treeObject.getName().equals(dataItem.getAttributeInfo("name"))) {
- // If the existing data item and the new data item have the same names
- if (treeObject.getXMLComponentSpecification().size() > 0) {
- QualifiedName metaName = ((XMLComponentSpecification) treeObject.getXMLComponentSpecification().get(0)).getMetaName();
- if (metaName != null && metaName.equals(dataItem.getMetaName())) {
- // If they are the same 'type' of items (according to the path value)
- containingTreeObject = treeObject;
- foundMatch = true;
- break;
- }
- }
- }
- }
-
- if (!foundMatch) {
- containingTreeObject = new XMLComponentTreeObject(dataItem);
- comps.addComponent(containingTreeObject);
- }
- else {
- // Only add to the tree object if the qualifier text differs than existing
- // qualifier information contained in the tree object.
- Iterator existingQualifiers = getQualifiers(containingTreeObject).iterator();
- boolean alreadyExists = false;
- while (existingQualifiers.hasNext()) {
- String existingText = (String) existingQualifiers.next();
- String newItemText = createQualifierText(dataItem);
- if (existingText.equals(newItemText)) {
- alreadyExists = true;
- break;
- }
- }
-
- if (!alreadyExists) {
- containingTreeObject.addXMLComponentSpecification(dataItem);
- }
- }
- }
-
- protected String getNormalizedLocation(String location) {
- try {
- URL url = new URL(location);
- URL resolvedURL = Platform.resolve(url);
- location = resolvedURL.getPath();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
-
- return location;
- }
-
-
- /*
- * Object used to hold components with the same name but different qualifiers.
- * This object will contain a list of XMLComponentSpecifications (with the same
- * names but different qualifiers).
- */
- public class XMLComponentTreeObject {
- private String name;
- private List xmlComponentSpecifications;
-
- public XMLComponentTreeObject(XMLComponentSpecification spec) {
- xmlComponentSpecifications = new ArrayList();
- xmlComponentSpecifications.add(spec);
- name = (String) spec.getAttributeInfo("name");
- }
-
- public String getName() {
- return name;
- }
-
- public void addXMLComponentSpecification(XMLComponentSpecification spec) {
- xmlComponentSpecifications.add(spec);
- }
-
- public List getXMLComponentSpecification() {
- return xmlComponentSpecifications;
- }
- }
-
- /*
- * Used to provide labels to the ComponentSeletionDialog
- */
- public class XMLComponentSelectionLabelProvider extends LabelProvider {
- public String getText(Object element) {
- XMLComponentTreeObject specification = (XMLComponentTreeObject) element;
- return specification.getName();
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSpecification.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSpecification.java
deleted file mode 100644
index 321a5a3..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSpecification.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xml;
-
-import java.util.Hashtable;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-
-/*
- * Simple class which keeps track of attribute information.
- * This class is basically a Hashtable with convenience methods.
- */
-public class XMLComponentSpecification {
-
- QualifiedName metaName;
- Hashtable hashtable;
- String targetNamespace;
- String fileLocation;
-
- public XMLComponentSpecification(QualifiedName metaName) {
- this.metaName = metaName;
- hashtable = new Hashtable();
- }
-
- public void addAttributeInfo(Object attribute, Object value) {
- hashtable.put(attribute, value);
- }
-
- public Object getAttributeInfo(Object attribute) {
- return hashtable.get(attribute);
- }
-
- public QualifiedName getMetaName() {
- return metaName;
- }
-
- public String getTargetNamespace() {
- return targetNamespace;
- }
-
- public void setTargetNamespace(String tns) {
- targetNamespace = tns;
- }
-
- public String getFileLocation() {
- return fileLocation;
- }
-
- public void setFileLocation(String location) {
- fileLocation = location;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentFinder.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentFinder.java
deleted file mode 100644
index 0ae65d5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentFinder.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xsd;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.wst.common.core.search.SearchEngine;
-import org.eclipse.wst.common.core.search.SearchMatch;
-import org.eclipse.wst.common.core.search.SearchParticipant;
-import org.eclipse.wst.common.core.search.SearchPlugin;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-import org.eclipse.wst.common.core.search.scope.ProjectSearchScope;
-import org.eclipse.wst.common.core.search.scope.SearchScope;
-import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
-import org.eclipse.wst.common.core.search.util.CollectingSearchRequestor;
-import org.eclipse.wst.xml.core.internal.search.XMLComponentDeclarationPattern;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentFinder;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
-
-public class XSDComponentFinder extends XMLComponentFinder {
- public XSDComponentFinder() {
- }
-
- protected void findTypes(SearchEngine searchEngine, List list, int scope, QualifiedName metaName)
- {
- SearchScope searchScope = new WorkspaceSearchScope();
- if (scope == ENCLOSING_PROJECT_SCOPE)
- {
- searchScope = new ProjectSearchScope(currentIFile.getProject().getLocation());
- }
- try {
- CollectingSearchRequestor requestor = new CollectingSearchRequestor();
-
- XMLComponentDeclarationPattern pattern = new XMLComponentDeclarationPattern(new QualifiedName("*", "*"), metaName, SearchPattern.R_PATTERN_MATCH);
- SearchParticipant particpant = SearchPlugin.getDefault().getSearchParticipant("org.eclipse.wst.xsd.search.XSDSearchParticipant");
- Assert.isNotNull(particpant);
-
- // for now we assume that we only want to include the xsd related participant
- // that way we don't get SearchMatches for things withing WSDL files
- // TODO... rethink this... since folks should be capable of changing the 'xsd' search participant impl
- // without killing this logic
- SearchParticipant[] participants = { particpant };
- searchEngine.search(pattern, requestor, participants, searchScope, null, new NullProgressMonitor());
-
- for (Iterator i = requestor.getResults().iterator(); i.hasNext(); )
- {
- SearchMatch match = (SearchMatch)i.next();
- XMLComponentSpecification spec = new XMLComponentSpecification(metaName);
- spec.setFileLocation(match.getFile().getLocation().toString());
- Object o = match.map.get("name");
- if (o != null && o instanceof QualifiedName)
- {
- QualifiedName qualifiedName = (QualifiedName)o;
- if (qualifiedName.getLocalName() != null)
- {
- spec.addAttributeInfo("name", qualifiedName.getLocalName());
- spec.setTargetNamespace(qualifiedName.getNamespace());
- list.add(spec);
- }
- }
- }
- } catch (CoreException e) {
- e.printStackTrace();
- //status.add(e.getStatus());
- }
- }
-
- public List getWorkbenchResourceComponents(int scope) {
- // TODO... by making this method return a list... we're cutting off any chance provide asynchronous friendly
- // behaviour where we populate the list and refresh the dialog after every few updates or seconds
- // returning a list makes this an all or nothing deal
- //
- List list = new ArrayList();
- SearchEngine searchEngine = new SearchEngine();
- // TODO... we need a way to combine these into a single search!!
- // we can make this search 2X faster by doing so
- // either we should combine COMPLEX_TYPE_META_NAME and SIMPLE_TYPE_META_NAME into a single TYPE_META_NAME
- // or we'll need to introduce a way to 'OR' SearchPatterns ... which may be tricky!
- findTypes(searchEngine, list, scope, IXSDSearchConstants.COMPLEX_TYPE_META_NAME);
- findTypes(searchEngine, list, scope, IXSDSearchConstants.SIMPLE_TYPE_META_NAME);
- return list;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionDialog.java
deleted file mode 100644
index b66e13c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionDialog.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xsd;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSelectionDialog;
-
-public class XSDComponentSelectionDialog extends XMLComponentSelectionDialog {
-
- public static final int ELEMENT = 1;
- public static final int TYPE = 2;
-
- public XSDComponentSelectionDialog(Shell shell, String dialogTitle,
- IComponentSelectionProvider provider) {
- super(shell, dialogTitle, provider);
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionProvider.java
deleted file mode 100644
index 8aa8178..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionProvider.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xsd;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentList;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentFinder;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.impl.XSDImportImpl;
-import org.eclipse.xsd.util.XSDConstants;
-
-/*
- *
- */
-public class XSDComponentSelectionProvider extends XMLComponentSelectionProvider {
- private XSDComponentFinder xsdComponentFinder;
- private XSDComponentSelectionDialog dialog;
- private XSDSchema schema;
- private XSDComponentLabelProvider labelProvider;
-
- private boolean showComplexTypes = true;
-
- /*
- * Takes in the IFile we are currently editing.
- */
- public XSDComponentSelectionProvider(IFile file, XSDSchema schema) {
- xsdComponentFinder = new XSDComponentFinder();
- xsdComponentFinder.setFile(file);
- this.schema = schema;
- labelProvider = new XSDComponentLabelProvider();
- }
-
- public void setDialog(XSDComponentSelectionDialog dialog) {
- this.dialog = dialog;
- }
-
- public void showComplexTypes(boolean show) {
- showComplexTypes = show;
- }
-
- public String getType(Object element) {
- return null;
- }
-
- /*
- * The return value is a List of XMLComponentTreeObjects.
- *
- */
- public void getComponents(IComponentList list, boolean quick) {
- if (quick) {
- // Populate IComponentList list with components most easily accessible (fastest)
- // Grab Built-In types
- Iterator builtInIt = getBuiltInTypes().iterator();
- while (builtInIt.hasNext()) {
- XMLComponentSpecification tagItem = (XMLComponentSpecification) builtInIt.next();
- addDataItemToTreeNode(list, tagItem);
- }
-
- // Create current Schema's complex and simple types
- createComplexTypes(list);
- createSimpleTypes(list);
- }
- else {
- getComponents(list);
- }
- }
-
- /*
- * TODO: Need to revisit how we build up our treeObject list....
- * And it's somewhat messy, clean this up.
- */
- private void getComponents(IComponentList list) {
- List extensions = new ArrayList();
- extensions.add("xsd");
-
- String scope = "";
- if (dialog != null) {
- scope = dialog.getSearchScope();
- }
-
- List comps = new ArrayList();
- if (scope.equals(XSDComponentSelectionDialog.SCOPE_ENCLOSING_PROJECT)) {
- comps = xsdComponentFinder.getWorkbenchResourceComponents(XMLComponentFinder.ENCLOSING_PROJECT_SCOPE);
- }
- else if (scope.equals(XSDComponentSelectionDialog.SCOPE_WORKSPACE)) {
- comps = xsdComponentFinder.getWorkbenchResourceComponents(XMLComponentFinder.ENTIRE_WORKSPACE_SCOPE);
- }
-
-// Group same item types together (simple/complex)
- List complex = new ArrayList();
- List simple = new ArrayList();
- Iterator itemsIterator = comps.iterator();
- while (itemsIterator.hasNext()) {
- XMLComponentSpecification tagItem = (XMLComponentSpecification) itemsIterator.next();
- if (tagItem.getMetaName() == IXSDSearchConstants.COMPLEX_TYPE_META_NAME) {
- complex.add(tagItem);
- }
- else if (tagItem.getMetaName() == IXSDSearchConstants.SIMPLE_TYPE_META_NAME) {
- simple.add(tagItem);
- }
- }
-
- Iterator complexIt = complex.iterator();
- Iterator simpleIt = simple.iterator();
- if (showComplexTypes) {
- while (complexIt.hasNext()) {
- XMLComponentSpecification item = (XMLComponentSpecification) complexIt.next();
- addDataItemToTreeNode(list, item);
- }
- }
-
- while (simpleIt.hasNext()) {
- XMLComponentSpecification item = (XMLComponentSpecification) simpleIt.next();
- addDataItemToTreeNode(list, item);
- }
-
- // Create from imports, includes, and redefines
- createFromImport(list);
- createFromInclude(list);
- createFromRedefine(list);
- }
-
-////////////////////////////////////////////////////////////////////////////////
- private List getBuiltInTypes() {
- List items = new ArrayList();
- for (int i = 0; i < XSDDOMHelper.dataType.length; i++) {
- items.add(XSDDOMHelper.dataType[i][0]);
- }
- Iterator it = items.iterator();
-
- List builtInComponentSpecs = new ArrayList();
- while (it.hasNext()) {
- Object item = it.next();
- String itemString = item.toString();
-
- XMLComponentSpecification builtInTypeItem = new XMLComponentSpecification(null);
- builtInTypeItem.addAttributeInfo("name", itemString);
- builtInTypeItem.setTargetNamespace(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
-// String normalizedFile = getNormalizedLocation(schema.getSchemaLocation());
-// builtInTypeItem.setFileLocation(normalizedFile);
- builtInTypeItem.setFileLocation("Built-In");
-
- builtInComponentSpecs.add(builtInTypeItem);
- }
-
- return builtInComponentSpecs;
- }
-
- private void createComplexTypes(IComponentList treeObjectList) {
- TypesHelper typesHelper = new TypesHelper(schema);
- List complexTypes = typesHelper.getUserComplexTypes();
- createComplexSimpleTreeObject(treeObjectList, complexTypes, true);
- }
-
- private void createSimpleTypes(IComponentList treeObjectList) {
- TypesHelper typesHelper = new TypesHelper(schema);
- List complexTypes = typesHelper.getUserSimpleTypes();
- createComplexSimpleTreeObject(treeObjectList, complexTypes, true);
- }
-
-
- private void createFromImport(IComponentList treeObjectList) {
- Iterator imports = getXSDImports().iterator();
- while (imports.hasNext()) {
- XSDImport importItem = (XSDImport) imports.next();
- if (importItem.getSchemaLocation() != null) {
- ((XSDImportImpl) importItem).importSchema();
- TypesHelper helper = new TypesHelper(importItem.getResolvedSchema());
-
- List types = helper.getUserComplexTypes();
- types.addAll(helper.getUserSimpleTypes());
- createComplexSimpleTreeObject(treeObjectList, types, false);
- }
- }
- }
-
- private void createFromInclude(IComponentList treeObjectList) {
- Iterator imports = getXSDIncludes().iterator();
- while (imports.hasNext()) {
- XSDInclude includeItem = (XSDInclude) imports.next();
- if (includeItem.getSchemaLocation() != null) {
- TypesHelper helper = new TypesHelper(includeItem.getResolvedSchema());
-
- List types = helper.getUserComplexTypes();
- types.addAll(helper.getUserSimpleTypes());
- createComplexSimpleTreeObject(treeObjectList, types, false);
- }
- }
- }
-
- private void createFromRedefine(IComponentList treeObjectList) {
- Iterator redefines = getXSDRedefines().iterator();
- while (redefines.hasNext()) {
- XSDRedefine redefineItem = (XSDRedefine) redefines.next();
- if (redefineItem.getSchemaLocation() != null) {
- TypesHelper helper = new TypesHelper(redefineItem.getResolvedSchema());
-
- List types = helper.getUserComplexTypes();
- types.addAll(helper.getUserSimpleTypes());
- createComplexSimpleTreeObject(treeObjectList, types, false);
- }
- }
- }
-
- protected List getXSDImports() {
- List imports = new ArrayList();
-
- Iterator contents = schema.getContents().iterator();
- while (contents.hasNext()) {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDImport) {
- imports.add(content);
- }
- }
-
- return imports;
- }
-
- protected List getXSDIncludes() {
- List includes = new ArrayList();
-
- Iterator contents = schema.getContents().iterator();
- while (contents.hasNext()) {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDInclude) {
- includes.add(content);
- }
- }
-
- return includes;
- }
-
- protected List getXSDRedefines() {
- List includes = new ArrayList();
-
- Iterator contents = schema.getContents().iterator();
- while (contents.hasNext()) {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDRedefine) {
- includes.add(content);
- }
- }
-
- return includes;
- }
-
- private void createComplexSimpleTreeObject(IComponentList treeObjectList, List complexTypes, boolean sameNS) {
- boolean proceed = true;
-
- for (int i = 0; i < complexTypes.size(); i++) {
- XSDNamedComponent item = (XSDNamedComponent) complexTypes.get(i);
-
- if (sameNS) {
- // We do this check because Types from Includes might show up. However, we don't want to show them
- String itemLocation = item.getSchema().getSchemaLocation();
- String currentSchemaLocation = schema.getSchemaLocation();
- if (itemLocation != null) {
- proceed = itemLocation.equals(currentSchemaLocation);
- }
- else {
- proceed = false;
- }
- }
-
- if (proceed) {
- XMLComponentSpecification typeItem = null;
- if (showComplexTypes && item instanceof XSDComplexTypeDefinition) {
- typeItem = new XMLComponentSpecification(IXSDSearchConstants.COMPLEX_TYPE_META_NAME);
- typeItem.addAttributeInfo("name", ((XSDComplexTypeDefinition) item).getName());
- }
- else if (item instanceof XSDSimpleTypeDefinition) {
- typeItem = new XMLComponentSpecification(IXSDSearchConstants.SIMPLE_TYPE_META_NAME);
- typeItem.addAttributeInfo("name", ((XSDSimpleTypeDefinition) item).getName());
- }
-
- if (typeItem != null) {
- typeItem.setTargetNamespace(item.getTargetNamespace());
- String normalizedFile = getNormalizedLocation(schema.getSchemaLocation());
- typeItem.setFileLocation(normalizedFile);
-
- addDataItemToTreeNode(treeObjectList, typeItem);
- }
- }
- }
- }
-
-
- public ILabelProvider getLabelProvider() {
- return labelProvider;
- }
-
-
- public class XSDComponentLabelProvider extends XMLComponentSelectionLabelProvider {
- public Image getImage(Object element) {
- XMLComponentTreeObject specification = (XMLComponentTreeObject) element;
- XMLComponentSpecification spec = (XMLComponentSpecification) specification.getXMLComponentSpecification().get(0);
- if (spec.getMetaName() == IXSDSearchConstants.COMPLEX_TYPE_META_NAME) {
- return XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
- }
- else if (spec.getMetaName() == IXSDSearchConstants.SIMPLE_TYPE_META_NAME) {
- return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
- }
- else if (spec.getMetaName() == null) {
- return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
- }
-
- return null;
- }
- }
-
-
-
- public String getListTitle() {
- return XSDEditorPlugin.getXSDString("_UI_LABEL_MATCHING_TYPES");
- }
-
- public String getNameFieldTitle() {
- return XSDEditorPlugin.getXSDString("_UI_LABEL_TYPE_NAME");
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDSetTypeHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDSetTypeHelper.java
deleted file mode 100644
index 5c45e43..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDSetTypeHelper.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 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.dialogs.types.xsd;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.util.XSDConstants;
-import org.eclipse.xsd.util.XSDParser;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class XSDSetTypeHelper {
- private XSDSchema xsdSchema;
- private IFile currentIFile;
-
- public XSDSetTypeHelper(IFile iFile, XSDSchema schema) {
- currentIFile = iFile;
- xsdSchema = schema;
- }
-
- public void setType(Element element, String property, XMLComponentSpecification spec) {
- addImportIfNecessary(element, spec);
- String typeObject = getPrefixedTypeName(spec);
-
- // Get the previous type --> previousStringType
- String previousStringType = "";
- Attr attr = element.getAttributeNode(property);
- if (attr != null) {
- attr.getValue();
- }
-
- if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
- {/*
- if (spec != null && spec.getTagPath().equals("**anonymous**"))
- {
- if (spec.getTagPath().equals("ANONYMOUS_SIMPLE_TYPE"))
- {
- if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- }
- else
- {
- if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- }
- // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
- element.removeAttribute(property);
- }
- else*/
- {
- XSDDOMHelper.updateElementToNotAnonymous(element);
- //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
- element.setAttribute(property, typeObject.toString());
- }
- }
- }
-
- public void addImportIfNecessary(Element element, XMLComponentSpecification spec) {
-
- // Get the new type --> typeObject
- if (spec != null) {
- QualifiedName metaName = spec.getMetaName();
-
- if (metaName != null) {
- // Do an actual import if needed
- XSDParser parser = new XSDParser();
- parser.parse(spec.getFileLocation());
- XSDSchema schema = parser.getSchema();
- String tns = schema.getTargetNamespace();
-
- boolean exists = false;
- // Check if the type is defined in the 'current' file itself.
- String currentFile = getNormalizedLocation(xsdSchema.getSchemaLocation());
- IPath currentFilePath = new Path(currentFile);
- if (currentFilePath.equals(new Path(spec.getFileLocation()))) {
- exists = true;
- }
-
- if (!exists) {
- if (tns.equals(xsdSchema.getTargetNamespace())) {
- // Check if the schema is in a redefine/include
- List existingList = getXSDIncludes();
- existingList.addAll(getXSDRedefines());
- Iterator it = existingList.iterator();
- while (it.hasNext()) {
- XSDSchemaDirective existingSchema = (XSDSchemaDirective) it.next();
- String normalizedFile = getNormalizedLocation(existingSchema.getResolvedSchema().getSchemaLocation());
- String normalizedSpec = spec.getFileLocation();
-
- if (normalizedFile.equals(normalizedSpec)) {
- // Found and existing one
- exists = true;
- }
- }
- }
- else {
- // Check if the schema is in a import
- List existingList = getXSDImports();
- Iterator it = existingList.iterator();
- while (it.hasNext()) {
- XSDSchemaDirective existingSchema = (XSDSchemaDirective) it.next();
- String normalizedFile = getNormalizedLocation(existingSchema.getResolvedSchema().getSchemaLocation());
- String normalizedSpec = spec.getFileLocation();
-
- if (normalizedFile.equals(normalizedSpec)) {
- // Found and existing one
- exists = true;
- }
- }
- }
- }
-
- if (!exists) {
- doImport(spec.getFileLocation(), schema);
- }
- }
- }
- }
-
- /*
- * Return the prefixed type name for the type described by the given
- * XMLComponentSpecification object.
- * If the type described is a Built-in type, do not add the prefix
- */
- public String getPrefixedTypeName(XMLComponentSpecification spec) {
- String typeObject = (String) spec.getAttributeInfo("name");
-
- TypesHelper typesHelper = new TypesHelper(xsdSchema); // ???? Is this correct?
- List prefixedNames = typesHelper.getPrefixedNames(spec.getTargetNamespace(), typeObject);
- if (prefixedNames.size() > 0) {
- // Grab the first prefixed name
- typeObject = (String) prefixedNames.get(0);
- }
-
- return typeObject;
- }
-
- private void updateElementToAnonymous(Element element, String xsdType) {
- String prefix = element.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- XSDDOMHelper.updateElementToNotAnonymous(element);
- Element childNode = null;
- if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG)) {
- childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG)) {
- childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
-
- if (childNode != null) {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node annotationNode = helper.getChildNode(element, XSDConstants.ANNOTATION_ELEMENT_TAG);
- if (annotationNode == null) {
- Node firstChild = element.getFirstChild();
- element.insertBefore(childNode, firstChild);
- } else {
- Node nextSibling = annotationNode.getNextSibling();
- element.insertBefore(childNode, nextSibling);
- }
- XSDDOMHelper.formatChild(childNode);
- }
- }
-
- // TODO: We shouldn't need to pass in IPath externalSchemaPath.
- private void doImport(String externalSchemaPath, XSDSchema externalSchema) {
- // Determine schemaLocation
- String locationAttribute = URIHelper.getRelativeURI(externalSchemaPath, currentIFile.getLocation().toOSString());
-
- boolean isInclude = false;
- if (externalSchema.getTargetNamespace().equals(xsdSchema.getTargetNamespace())) {
- isInclude = true;
- }
-
- if (externalSchema != null) { // In case we have problems loading the file.... we should display an error message.
- Element newElement;
- if (isInclude) {
- List attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationAttribute));
- newElement = createElement(XSDConstants.INCLUDE_ELEMENT_TAG, attributes);
- }
- else if (!isInclude) {
- List attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, externalSchema.getTargetNamespace()));
- attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationAttribute));
- newElement = createElement(XSDConstants.IMPORT_ELEMENT_TAG, attributes);
- handleImportNS(newElement, externalSchema);
- }
- }
- }
-
- private void handleImportNS(Element importElement, XSDSchema externalSchema) {
- String namespace = externalSchema.getTargetNamespace();
- if (namespace == null) namespace = "";
-
- XSDImport xsdImport = (XSDImport) xsdSchema.getCorrespondingComponent(importElement);
- xsdImport.setResolvedSchema(externalSchema);
-
- java.util.Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
-// System.out.println("changed Import Map is " + map.values());
-// System.out.println("changed import Map keys are " + map.keySet());
-
- // Referential integrity on old import
- // How can we be sure that if the newlocation is the same as the oldlocation
- // the file hasn't changed
-
- XSDSchema referencedSchema = xsdImport.getResolvedSchema();
- if (referencedSchema != null)
- {
- XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
- cleanHelper.visitSchema(xsdSchema);
- }
-
- Element schemaElement = xsdSchema.getElement();
-
- // update the xmlns in the schema element first, and then update the import element next
- // so that the last change will be in the import element. This keeps the selection
- // on the import element
- TypesHelper helper = new TypesHelper(externalSchema);
- String prefix = helper.getPrefix(namespace, false);
-
- if (map.containsKey(prefix))
- {
- prefix = null;
- }
-
- if (prefix == null || (prefix !=null && prefix.length() == 0))
- {
- StringBuffer newPrefix = new StringBuffer("pref"); //$NON-NLS-1$
- int prefixExtension = 1;
- while (map.containsKey(newPrefix.toString()) && prefixExtension < 100)
- {
- newPrefix = new StringBuffer("pref" + String.valueOf(prefixExtension));
- prefixExtension++;
- }
- prefix = newPrefix.toString();
- }
-
- if (namespace.length() > 0)
- {
- // if ns already in map, use its corresponding prefix
- if (map.containsValue(namespace))
- {
- TypesHelper typesHelper = new TypesHelper(xsdSchema);
- prefix = typesHelper.getPrefix(namespace, false);
- }
- else // otherwise add to the map
- {
- schemaElement.setAttribute("xmlns:"+prefix, namespace);
- }
- }
-
-
-// System.out.println("changed Import Map is " + map.values());
-// System.out.println("changed import Map keys are " + map.keySet());
- }
-
- private Element createElement(String elementTag, List attributes) {
- Node relativeNode = XSDDOMHelper.getNextElementNode(xsdSchema.getElement().getFirstChild());
-
- CreateElementAction action = new CreateElementAction("");
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(xsdSchema.getElement());
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(xsdSchema);
- return action.createAndAddNewChildElement();
- }
-
- private String getNormalizedLocation(String location) {
- try {
- URL url = new URL(location);
- URL resolvedURL = Platform.resolve(url);
- location = resolvedURL.getPath();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
-
- return location;
- }
-
- private List getXSDImports() {
- List imports = new ArrayList();
-
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext()) {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDImport) {
- imports.add(content);
- }
- }
-
- return imports;
- }
-
- private List getXSDIncludes() {
- List includes = new ArrayList();
-
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext()) {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDInclude) {
- includes.add(content);
- }
- }
-
- return includes;
- }
-
- private List getXSDRedefines() {
- List includes = new ArrayList();
-
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext()) {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDRedefine) {
- includes.add(content);
- }
- }
-
- return includes;
- }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/BaseDragNodesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/BaseDragNodesCommand.java
deleted file mode 100644
index d83fc47..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/BaseDragNodesCommand.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.dnd;
-
-import java.util.Collection;
-
-import org.eclipse.wst.common.ui.internal.dnd.DefaultDragAndDropCommand;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-
-public abstract class BaseDragNodesCommand extends DefaultDragAndDropCommand
-{
- /**
- * Constructor for BaseDragNodesCommand.
- * @param target
- * @param location
- * @param operations
- * @param operation
- * @param sources
- */
- public BaseDragNodesCommand(
- Object target,
- float location,
- int operations,
- int operation,
- Collection sources)
- {
- super(target, location, operations, operation, sources);
- }
-
- protected boolean isDirectSchemaChild(Node node)
- {
- Node parent = node.getParentNode();
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false) &&
- parent.getParentNode().equals(parent.getOwnerDocument()))
- {
- return true;
- }
- return false;
- }
-
- protected boolean isSiblingNodes(Node first, Node second)
- {
- if (first.getParentNode() != null)
- {
- return first.getParentNode().equals(second.getParentNode());
- }
- return false;
- }
-
- protected void beginRecording()
- {
- if (target != null)
- {
- IDOMModel model = getModel((Node)target);
-
- if (model != null)
- {
- model.beginRecording(this, XSDEditorPlugin.getXSDString("_UI_LABEL_MOVE"));
- }
- }
- }
-
- protected void endRecording()
- {
- if (target != null)
- {
- IDOMModel model = getModel((Node)target);
-
- if (model != null)
- {
- model.endRecording(this);
- }
- }
- }
- protected IDOMModel getModel(Node node)
- {
- Object object = node.getOwnerDocument();
- if (object instanceof DocumentImpl)
- {
- return ((DocumentImpl) object).getModel();
- }
- return null;
- }
-
- protected void moveNode(Node referenceNode, Node nodeToMove, boolean isBefore)
- {
- XSDDOMHelper.moveNode(referenceNode, nodeToMove, isBefore);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/DragNodesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/DragNodesCommand.java
deleted file mode 100644
index fa0d0b9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/DragNodesCommand.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.dnd;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.NodeFormatter;
-import org.w3c.dom.Node;
-
-public class DragNodesCommand extends BaseDragNodesCommand
-{
- /**
- * Constructor for DragNodesCommand.
- * @param target
- * @param location
- * @param operations
- * @param operation
- * @param sources
- */
- public DragNodesCommand(
- Object target,
- float location,
- int operations,
- int operation,
- Collection sources)
- {
- super(target, location, operations, operation, sources);
- }
-
- /**
- * @see org.eclipse.wst.common.ui.internal.dnd.DragAndDropCommand#canExecute()
- */
- public boolean canExecute()
- {
- if (sources.size() > 0)
- {
- Node firstSource = (Node) sources.toArray()[0];
- return isSiblingNodes((Node) target, firstSource);
- }
- return false;
-// return isDirectSchemaChild((Node)target);
- }
-
-
- /**
- * @see org.eclipse.wst.common.ui.internal.dnd.DragAndDropCommand#execute()
- */
- public void execute()
- {
- NodeFormatter formatProcessor = new NodeFormatter();
- Node referenceNode = (Node) target;
- Iterator iter = sources.iterator();
- beginRecording();
-
- while (iter.hasNext())
- {
- Node node = (Node) iter.next();
- if (isSiblingNodes(referenceNode,node))
- {
- moveNode(referenceNode, node, !isAfter());
- formatProcessor.format((IDOMNode)node);
- }
- }
-// formatProcessor.format((XMLNode)referenceNode.getParentNode());
- endRecording();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/XSDDragAndDropManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/XSDDragAndDropManager.java
deleted file mode 100644
index 7c52cc9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/XSDDragAndDropManager.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.dnd;
-
-import java.util.Collection;
-
-import org.eclipse.wst.common.ui.internal.dnd.DragAndDropCommand;
-import org.eclipse.wst.common.ui.internal.dnd.DragAndDropManager;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-public class XSDDragAndDropManager implements DragAndDropManager
-{
- /**
- * Constructor for XSDDragAndDropManager.
- */
- public XSDDragAndDropManager()
- {
- }
-
- protected boolean isDirectSchemaChild(Node node)
- {
- Node parent = node.getParentNode();
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false) &&
- parent.getParentNode().equals(parent.getOwnerDocument()))
- {
- return true;
- }
- return false;
- }
-
- /**
- * @see org.eclipse.wst.common.ui.internal.dnd.DragAndDropManager#createCommand(Object, float, int, int, Collection)
- */
- public DragAndDropCommand createCommand(
- Object target,
- float location,
- int operations,
- int operation,
- Collection source)
- {
- if (target instanceof Node)
- {
- return new DragNodesCommand(target, location, operations, operation, source);
- }
- return null;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/editparts/AbstractComponentViewerRootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/editparts/AbstractComponentViewerRootEditPart.java
deleted file mode 100644
index caef397..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/editparts/AbstractComponentViewerRootEditPart.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.editparts;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Panel;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.ContainerLayout;
-
-
-public abstract class AbstractComponentViewerRootEditPart extends AbstractGraphicalEditPart
-{
- protected final static String MESSAGE_PLACE_HOLDER = "MESSAGE_PLACE_HOLDER";
- protected Object input;
-
- public void setInput(Object input)
- {
- this.input = input;
- refreshChildren();
- }
-
- protected IFigure createFigure()
- {
- Panel panel = new Panel();
- ContainerLayout layout = new ContainerLayout();
- layout.setBorder(60);
- panel.setLayoutManager(layout);
- return panel;
- }
-
-
- protected List getModelChildren()
- {
- List list = new ArrayList();
- if (input != null)
- {
- list.add(input);
- }
- else
- {
- list.add(MESSAGE_PLACE_HOLDER);
- }
- return list;
- }
-
- protected abstract EditPart createChild(Object model);
-
- protected void createEditPolicies()
- {
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectedEditPartFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectedEditPartFigure.java
deleted file mode 100644
index f25f677..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectedEditPartFigure.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-
-
-public class ConnectedEditPartFigure extends ContainerFigure implements IConnectedEditPartFigure
-{
- protected EditPart editPart;
- protected boolean childConnectionsEnabled = true;
- protected List connectedFigures = new ArrayList();
- protected int connectionType = RIGHT_CONNECTION;
-
- public ConnectedEditPartFigure(EditPart editPart)
- {
- this.editPart = editPart;
- }
-
- public void setChildConnectionsEnabled(boolean enabled)
- {
- childConnectionsEnabled = enabled;
- }
-
- protected IConnectedEditPartFigure getParentGraphNodeFigure()
- {
- IConnectedEditPartFigure result = null;
- for (EditPart parentEditPart = editPart.getParent(); parentEditPart != null; parentEditPart = parentEditPart.getParent())
- {
- IFigure figure = ((AbstractGraphicalEditPart)parentEditPart).getFigure();
- if (figure instanceof IConnectedEditPartFigure)
- {
- IConnectedEditPartFigure graphNodeFigure = (IConnectedEditPartFigure)figure;
- if (graphNodeFigure.getConnectionFigure() != null)
- {
- result = graphNodeFigure;
- break;
- }
- }
- }
- return result;
- }
-
- public void addNotify()
- {
- super.addNotify();
- if (getConnectionFigure() != null)
- {
- IConnectedEditPartFigure parentGraphNodeFigure = getParentGraphNodeFigure();
- if (parentGraphNodeFigure != null)
- {
- parentGraphNodeFigure.addConnectedFigure(this);
- }
- }
- }
-
- public void removeNotify()
- {
- super.removeNotify();
- if (getConnectionFigure() != null)
- {
- IConnectedEditPartFigure parentGraphNodeFigure = getParentGraphNodeFigure();
- if (parentGraphNodeFigure != null)
- {
- parentGraphNodeFigure.removeConnectedFigure(this);
- }
- }
- }
-
- public void addConnectedFigure(IConnectedEditPartFigure figure)
- {
- if (childConnectionsEnabled)
- {
- // this test is required since we sometimes receive the 'addNotify' call twice
- //
- if (!connectedFigures.contains(figure))
- {
- connectedFigures.add(figure);
- }
- }
- }
-
- public void removeConnectedFigure(IConnectedEditPartFigure figure)
- {
- if (childConnectionsEnabled)
- {
- connectedFigures.remove(figure);
- }
- }
-
- public IFigure getSelectionFigure()
- {
- return this;
- }
-
- public IFigure getConnectionFigure()
- {
- return this;
- }
-
- public List getConnectedFigures(int type)
- {
- List list = new ArrayList();
- for (Iterator i = connectedFigures.iterator(); i.hasNext(); )
- {
- IConnectedEditPartFigure figure = (IConnectedEditPartFigure)i.next();
- //if (type == 0 || type == figure.getConnectionType())
- {
- list.add(figure);
- }
- }
- return list;
- }
-
- public int getConnectionType()
- {
- return connectionType;
- }
-
- public void setConnectionType(int type)
- {
- connectionType = type;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectionRenderingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectionRenderingFigure.java
deleted file mode 100644
index 7192108..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectionRenderingFigure.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.GraphicalEditPart;
-
-
-public class ConnectionRenderingFigure extends RectangleFigure
-{
- protected boolean isOutlined = true;
- protected IFigure primaryLayer;
-
- public ConnectionRenderingFigure(IFigure primaryLayer)
- {
- setOpaque(false);
- this.primaryLayer = primaryLayer;
- //setFocusTraversable(false);
- //setEnabled(false);
- }
-
- protected boolean isMouseEventTarget()
- {
- return false;
- }
-
- public boolean containsPoint(int x, int y)
- {
- return false;
- }
-
- protected void fillShape(Graphics graphics)
- {
- graphics.setForegroundColor(ColorConstants.black);
- drawLines(graphics, primaryLayer);
- }
-
- protected void outlineShape(Graphics graphics)
- {
- if (isOutlined)
- {
- super.outlineShape(graphics);
- }
- }
-
- protected void drawLines(Graphics graphics, IFigure figure)
- {
- if (figure instanceof IConnectedEditPartFigure)
- {
- IConnectedEditPartFigure graphNodeFigure = (IConnectedEditPartFigure)figure;
- List connectedFigures = graphNodeFigure.getConnectedFigures(IConnectedEditPartFigure.RIGHT_CONNECTION);
- int connectedFiguresSize = connectedFigures.size();
-
- if (connectedFiguresSize > 0)
- {
- IConnectedEditPartFigure firstGraphNodeFigure = (IConnectedEditPartFigure)connectedFigures.get(0);
- Rectangle r = graphNodeFigure.getConnectionFigure().getBounds();
-
- int x1 = r.x + r.width;
- int y1 = r.y + r.height/2;
-
- int startOfChildBox = firstGraphNodeFigure.getConnectionFigure().getBounds().x;
- int x2 = x1 + (startOfChildBox - x1) / 3;
- int y2 = y1;
-
- if (connectedFiguresSize == 1)
- {
- graphics.drawLine(x1, y1, startOfChildBox, y2);
- }
- else // (connectedFigures.length > 1)
- {
- graphics.drawLine(x1, y1, x2, y2);
-
- int minY = Integer.MAX_VALUE;
- int maxY = -1;
-
- for (Iterator i = connectedFigures.iterator(); i.hasNext(); )
- {
- IConnectedEditPartFigure connectedFigure = (IConnectedEditPartFigure)i.next();
- Rectangle childConnectionRectangle = connectedFigure.getConnectionFigure().getBounds();
- int y = childConnectionRectangle.y + childConnectionRectangle.height / 2;
- minY = Math.min(minY, y);
- maxY = Math.max(maxY, y);
- graphics.drawLine(x2, y, childConnectionRectangle.x, y);
- }
- graphics.drawLine(x2, minY, x2, maxY);
- }
- }
- }
-
- //boolean visitChildren = true;
- List children = figure.getChildren();
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- drawLines(graphics, child);
- }
- }
-
- // This method supports the preview connection line function related to drag and drop
- //
- public PointList getConnectionPoints(GraphicalEditPart parentEditPart, GraphicalEditPart childRefEditPart, Rectangle draggedFigureBounds)
- {
- PointList pointList = new PointList();
- int[] data = new int[1];
- Point a = getConnectionPoint(parentEditPart, childRefEditPart, data);
- if (a != null)
- {
- int draggedFigureBoundsY = draggedFigureBounds.y + draggedFigureBounds.height/2;
-
- pointList.addPoint(a);
- //pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-
- if (data[0] == 0) // insert between 2 items
- {
- int x = a.x + (draggedFigureBounds.x - a.x)/2;
- pointList.addPoint(new Point(x, a.y));
- pointList.addPoint(new Point(x, draggedFigureBoundsY));
- pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
- }
- else // insert at first or last position
- {
- pointList.addPoint(new Point(a.x, draggedFigureBoundsY));
- pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
- }
- }
- return pointList;
- }
-
-
- // This method supports the preview connection line function related to drag and drop
- //
- protected Point getConnectionPoint(GraphicalEditPart parentEditPart, GraphicalEditPart childRefEditPart, int[] data)
- {
- Point point = null;
- List childList = parentEditPart.getChildren();
-
- if (parentEditPart.getFigure() instanceof IConnectedEditPartFigure && childList.size() > 0)
- {
- point = new Point();
-
- GraphicalEditPart prev = null;
- GraphicalEditPart next = null;
-
- for (Iterator i = childList.iterator(); i.hasNext(); )
- {
- Object o = i.next();
- if (o instanceof GraphicalEditPart)
- {
- GraphicalEditPart childEditPart = (GraphicalEditPart)o;
- if (childEditPart.getFigure() instanceof IConnectedEditPartFigure)
- {
- if (childEditPart == childRefEditPart)
- {
- next = childEditPart;
- break;
- }
- prev = childEditPart;
- }
- }
- }
-
-
- if (next != null && prev != null)
- {
- int ya = getConnectedEditPartConnectionBounds(prev).getCenter().y;
- int yb = getConnectedEditPartConnectionBounds(next).getCenter().y;
- point.y = ya + (yb - ya)/2;
- data[0] = 0;
- }
- else if (prev != null) // add it last
- {
- point.y = getConnectedEditPartConnectionBounds(prev).getCenter().y;
- data[0] = 1;
- }
- else if (next != null) // add it first!
- {
- point.y = getConnectedEditPartConnectionBounds(next).getCenter().y;
- data[0] = -1;
- }
-
- if (next != null || prev != null)
- {
- GraphicalEditPart child = prev != null ? prev : next;
- int startOfChildBox = getConnectedEditPartConnectionBounds(child).x;
- Rectangle r = getConnectedEditPartConnectionBounds(parentEditPart);
- int x1 = r.x + r.width;
- point.x = x1 + (startOfChildBox - x1) / 3;
- }
- }
- return point;
- }
-
- protected Rectangle getConnectedEditPartConnectionBounds(GraphicalEditPart editPart)
- {
- return ((IConnectedEditPartFigure)editPart.getFigure()).getConnectionFigure().getBounds();
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerFigure.java
deleted file mode 100644
index d7a77ac..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerFigure.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.RectangleFigure;
-
-public class ContainerFigure extends RectangleFigure implements IExpandable
-{
- protected boolean isOutlined = false;
- protected boolean isExpanded = true;
-
- public ContainerFigure()
- {
- setLayoutManager(new ContainerLayout());
- setFill(false);
- }
-
- public void doLayout()
- {
- layout();
- setValid(true);
- }
-
- public ContainerLayout getContainerLayout()
- {
- return (ContainerLayout)getLayoutManager();
- }
-
- public void setOutlined(boolean isOutlined)
- {
- this.isOutlined = isOutlined;
- }
-
- protected void outlineShape(Graphics graphics)
- {
- if (isOutlined)
- {
- super.outlineShape(graphics);
- }
- }
-
- public boolean isExpanded()
- {
- return isExpanded;
- }
-
- public void setExpanded(boolean isExpanded)
- {
- this.isExpanded = isExpanded;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/FillLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/FillLayout.java
deleted file mode 100644
index 9f3de7c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/FillLayout.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-public class FillLayout extends AbstractLayout
-{
- protected boolean isHorizontal = false;
- protected int spacing = 0;
- public Dimension min;
-
- public FillLayout(){}
-
- public FillLayout(int spacing)
- {
- this.spacing = spacing;
- }
-
- public void setHorizontal(boolean isHorizontal)
- {
- this.isHorizontal = isHorizontal;
- }
-
- /**
- * Calculates and returns the preferred size of the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- *
- * @param figure Container figure for which preferred size is required.
- * @return The preferred size of the input figure.
- */
-
- protected Dimension calculatePreferredSize(IFigure figure, int width, int height)
- {
- Dimension d = calculatePreferredClientAreaSize(figure);
- d.expand(figure.getInsets().getWidth(),
- figure.getInsets().getHeight());
- d.union(getBorderPreferredSize(figure));
- return d;
- }
-
- protected Dimension calculatePreferredClientAreaSize(IFigure figure)
- {
- Dimension d = new Dimension();
- List children = figure.getChildren();
-
-
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- Dimension childSize = child.getPreferredSize();
-
- if (isHorizontal)
- {
- d.width += childSize.width;
- d.height = Math.max(childSize.height, d.height);
- }
- else
- {
- d.height += childSize.height;
- d.width = Math.max(childSize.width, d.width);
- }
- }
-
-
- int childrenSize = children.size();
- if (childrenSize > 0)
- {
- if (isHorizontal)
- {
- d.width += spacing * (childrenSize - 1);
- }
- else
- {
- d.height += spacing * (childrenSize - 1);
- }
- }
-
- if (min != null)
- {
- d.width = Math.max(d.width, min.width);
- d.height = Math.max(d.height, min.height);
- }
- return d;
- }
-
- /*
- * Returns the minimum size required by the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- */
- public Dimension getMinimumSize(IFigure figure, int width, int height)
- {
- Dimension d = new Dimension();
- List children = figure.getChildren();
- IFigure child;
-
- for (int i=0; i < children.size(); i++)
- {
- child = (IFigure)children.get(i);
- d.union(child.getMinimumSize());
- }
- d.expand(figure.getInsets().getWidth(),
- figure.getInsets().getHeight());
- return d;
- }
-
- public Dimension getPreferredSize(IFigure figure, int width, int height)
- {
- return calculatePreferredSize(figure, width, height);
- }
-
- /*
- * Lays out the children on top of each other with
- * their sizes equal to that of the available
- * paintable area of the input container figure.
- */
- public void layout(IFigure figure)
- {
- Dimension preferredSize = calculatePreferredClientAreaSize(figure);
- Rectangle r = figure.getClientArea().getCopy();
- List children = figure.getChildren();
-
- int nChildren = children.size();
- int extraHorizontalSpace = r.width - preferredSize.width;
-
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- Dimension preferredChildSize = child.getPreferredSize();
-
- if (isHorizontal)
- {
- int w = preferredChildSize.width + (extraHorizontalSpace / nChildren);
- child.setBounds(new Rectangle(r.x, r.y, w, Math.max(preferredSize.height, r.height)));
- r.x += w + spacing;
- }
- else
- {
- child.setBounds(new Rectangle(r.x, r.y, Math.max(preferredSize.width, r.width), preferredChildSize.height));
- r.y += preferredChildSize.height + spacing;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedEditPartFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedEditPartFigure.java
deleted file mode 100644
index 4c778d7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedEditPartFigure.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-
-public interface IConnectedEditPartFigure extends IConnectedFigure
-{
- public static final int UP_CONNECTION = 1;
- public static final int DOWN_CONNECTION = 2;
- public static final int LEFT_CONNECTION = 3;
- public static final int RIGHT_CONNECTION = 4;
-
- public IFigure getSelectionFigure();
- public IFigure getConnectionFigure();
- public List getConnectedFigures(int type);
- public int getConnectionType();
- public void addConnectedFigure(IConnectedEditPartFigure figure);
- public void removeConnectedFigure(IConnectedEditPartFigure figure);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedFigure.java
deleted file mode 100644
index 4a6d7de..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedFigure.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import org.eclipse.draw2d.IFigure;
-
-public interface IConnectedFigure extends IFigure
-{
- public IFigure getConnectionFigure();
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IExpandable.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IExpandable.java
deleted file mode 100644
index 161581b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IExpandable.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import org.eclipse.draw2d.IFigure;
-
-public interface IExpandable extends IFigure
-{
- boolean isExpanded();
- void setExpanded(boolean isExpanded);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/SpacingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/SpacingFigure.java
deleted file mode 100644
index e245d69..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/SpacingFigure.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.gef.util.figures;
-
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-
-public class SpacingFigure extends RectangleFigure
-{
- public SpacingFigure()
- {
- setFill(false);
- setPreferredSize(new Dimension(0, 0));
- }
-
- //protected void outlineShape(Graphics graphics)
- //{
- //}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/BaseGraphicalViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/BaseGraphicalViewer.java
deleted file mode 100644
index 9f1bbec..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/BaseGraphicalViewer.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import java.util.Iterator;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.StackLayout;
-import org.eclipse.gef.DefaultEditDomain;
-import org.eclipse.gef.EditDomain;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.KeyHandler;
-import org.eclipse.gef.LayerConstants;
-import org.eclipse.gef.editparts.ScalableRootEditPart;
-import org.eclipse.gef.tools.SelectionTool;
-import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDMenuListener;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.ConnectionRenderingFigure;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.IConnectionRenderingViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenterLayout;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-
-/**
- * @author ernest
- *
- * To change this generated comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public abstract class BaseGraphicalViewer extends ScrollingGraphicalViewer implements IConnectionRenderingViewer
-{
- protected FigureCanvasKeyboardHandler figureCanvasKeyboardHandler;
-
- protected EditDomain editDomain;
-
- protected boolean isInputEnabled = true;
-
- protected boolean isSelectionEnabled = true;
-
- protected ISelectionProvider menuSelectionProvider;
-
- protected GraphContextMenuProvider menuProvider;
-
- protected XSDEditor editor;
-
- protected XSDConcreteComponent input;
-
- protected ConnectionRenderingFigure connectionRenderingFigure;
-
- public BaseGraphicalViewer(XSDEditor editor, ISelectionProvider selectionProvider)
- {
- super();
- this.editor = editor;
- menuSelectionProvider = selectionProvider;
- }
-
- public ConnectionRenderingFigure getConnectionRenderingFigure()
- {
- return connectionRenderingFigure;
- }
-
- public void setInputEnabled(boolean enabled)
- {
- isInputEnabled = enabled;
- }
-
- public void setSelectionEnabled(boolean enabled)
- {
- isSelectionEnabled = enabled;
- }
-
- public XSDMenuListener getMenuListener()
- {
- return menuProvider.getMenuListener();
- }
-
- protected static Color white = null;
- protected void hookControl()
- {
- super.hookControl();
-
- if (white == null)
- {
- white = new Color(getControl().getDisplay(), 255, 255, 255);
- }
- getControl().setBackground(white);
-
- editDomain = new DefaultEditDomain(null);
- ((DefaultEditDomain)editDomain).setDefaultTool(new SelectionTool());
- editDomain.loadDefaultTool();
- editDomain.addViewer(this);
-
- //jvh - gef port - moved this from below so it is available when adding context menu below
- menuProvider = new GraphContextMenuProvider(this, menuSelectionProvider);
- setContextMenu(menuProvider);
-
- // add context menu to the graph
- MenuManager manager = new MenuManager();
- manager.addMenuListener(getMenuListener()); //jvh - gef port
- manager.setRemoveAllWhenShown(true);
- Menu menu = manager.createContextMenu(getControl());
- getControl().setMenu(menu);
-
- // enable popupMenus extension
- //BUG 68938 eclipse bug fixed. Bug 112955 - Filter out menu contributions.
- editor.getEditorSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.graph", manager, menuSelectionProvider, false);
-
-// KeyAdapter keyListener = new KeyAdapter()
-// {
-// /**
-// * @see org.eclipse.swt.events.KeyAdapter#keyReleased(KeyEvent)
-// */
-// public void keyReleased(KeyEvent e)
-// {
-// if (e.character == SWT.DEL)
-// {
-// getMenuListener().getDeleteAction().run();
-// }
-// }
-// };
-
- setKeyHandler(new XSDGraphicalViewerKeyHandler(this).setParent(new KeyHandler()));
-
-// getControl().addKeyListener(keyListener);
-
- figureCanvasKeyboardHandler = new FigureCanvasKeyboardHandler(this);
- getFigureCanvas().addKeyListener(figureCanvasKeyboardHandler);
-
- getRootEditPart().activate();
-
- ScalableRootEditPart graphicalRootEditPart = (ScalableRootEditPart)getRootEditPart();
-
- // set the layout for the primary layer so that the children are always centered
- //
- graphicalRootEditPart.getLayer(LayerConstants.PRIMARY_LAYER).setLayoutManager(new CenterLayout());
-
- // add the ConnectionRenderingFigure which is responsible for drawing all of the lines in the view
- //
- IFigure figure = graphicalRootEditPart.getLayer(LayerConstants.HANDLE_LAYER);
- figure.setLayoutManager(new StackLayout());
- connectionRenderingFigure = new ConnectionRenderingFigure(graphicalRootEditPart.getLayer(LayerConstants.PRIMARY_LAYER));
- figure.add(connectionRenderingFigure);
-
- figure.validate();
- }
-
- public XSDConcreteComponent getInput()
- {
- return input;
- }
-
- protected EditPart getEditPart(EditPart parent, Object object)
- {
- EditPart result = null;
- for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
- {
- EditPart editPart = (EditPart)i.next();
- if (editPart.getModel() == object)
- {
- result = editPart;
- break;
- }
- }
-
- if (result == null)
- {
- for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
- {
- EditPart editPart = getEditPart((EditPart)i.next(), object);
- if (editPart != null)
- {
- result = editPart;
- break;
- }
- }
- }
-
- return result;
- }
-
- public abstract void setInput(XSDConcreteComponent comp);
-
- public abstract void setSelection(XSDConcreteComponent comp);
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/FigureCanvasKeyboardHandler.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/FigureCanvasKeyboardHandler.java
deleted file mode 100644
index 012e15e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/FigureCanvasKeyboardHandler.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import org.eclipse.draw2d.FigureCanvas;
-import org.eclipse.draw2d.RangeModel;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.CategoryEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-
-public class FigureCanvasKeyboardHandler extends KeyAdapter
-{
- public static final int H_SCROLL_INCREMENT = 5;
- public static final int V_SCROLL_INCREMENT = 30;
-
- BaseGraphicalViewer viewer;
-
- /**
- * Constructor for FigureCanvasKeyboardHandler.
- */
- public FigureCanvasKeyboardHandler(BaseGraphicalViewer viewer)
- {
- super();
- this.viewer = viewer;
- }
-
- public void keyPressed(KeyEvent e)
- {
- Widget w = e.widget;
- if (w instanceof FigureCanvas)
- {
- processKey(e.keyCode, (FigureCanvas)w);
- update();
- }
- }
-
- private void processKey(int keyCode, FigureCanvas figureCanvas)
- {
- switch (keyCode)
- {
- case SWT.ARROW_DOWN :
- scrollVertical(figureCanvas, false);
- break;
- case SWT.ARROW_UP :
- scrollVertical(figureCanvas, true);
- break;
- case SWT.ARROW_LEFT :
- scrollHorizontal(figureCanvas, true);
- break;
- case SWT.ARROW_RIGHT :
- scrollHorizontal(figureCanvas, false);
- break;
- case SWT.PAGE_UP :
- scrollPage(figureCanvas, true);
- break;
- case SWT.PAGE_DOWN :
- scrollPage(figureCanvas, false);
- break;
- }
- }
-
- private int verifyScrollBarOffset(RangeModel model, int value)
- {
- value = Math.max(model.getMinimum(), value);
- return Math.min(model.getMaximum() - model.getExtent(), value);
- }
-
- private void scrollVertical(FigureCanvas figureCanvas, boolean up)
- {
- Point location = figureCanvas.getViewport().getViewLocation();
- int vOffset = up ? -V_SCROLL_INCREMENT : V_SCROLL_INCREMENT;
- int x = verifyScrollBarOffset(figureCanvas.getViewport().getHorizontalRangeModel(), location.x);
- int y = verifyScrollBarOffset(figureCanvas.getViewport().getVerticalRangeModel(), location.y + vOffset);
- figureCanvas.scrollSmoothTo(x, y);
- }
-
- private void scrollHorizontal(FigureCanvas figureCanvas, boolean left)
- {
- Point location = figureCanvas.getViewport().getViewLocation();
- int hOffset = left ? -H_SCROLL_INCREMENT : H_SCROLL_INCREMENT;
- int x = verifyScrollBarOffset(figureCanvas.getViewport().getHorizontalRangeModel(), location.x + hOffset);
- int y = verifyScrollBarOffset(figureCanvas.getViewport().getVerticalRangeModel(), location.y);
- figureCanvas.scrollSmoothTo(x, y);
- }
-
- private void scrollPage(FigureCanvas figureCanvas, boolean up)
- {
- Rectangle clientArea = figureCanvas.getClientArea();
- int increment = up ? -clientArea.height : clientArea.height;
- Point location = figureCanvas.getViewport().getViewLocation();
- int x = verifyScrollBarOffset(figureCanvas.getViewport().getHorizontalRangeModel(), location.x);
- int y = verifyScrollBarOffset(figureCanvas.getViewport().getVerticalRangeModel(), location.y + increment);
- figureCanvas.scrollSmoothTo(x, y);
- }
-
- private void update()
- {
- StructuredSelection s = (StructuredSelection)viewer.getSelection();
- Object newSelectedEditPart = s.getFirstElement();
-
- if (newSelectedEditPart instanceof TopLevelComponentEditPart)
- {
- TopLevelComponentEditPart topLevel = (TopLevelComponentEditPart) newSelectedEditPart;
- CategoryEditPart categoryEP = (CategoryEditPart) topLevel.getParent();
- categoryEP.scrollTo(topLevel);
- viewer.reveal((TopLevelComponentEditPart)newSelectedEditPart);
- }
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphContextMenuProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphContextMenuProvider.java
deleted file mode 100644
index dc539e2..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphContextMenuProvider.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import org.eclipse.gef.ContextMenuProvider;
-import org.eclipse.gef.EditPartViewer;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.XSDMenuListener;
-
-
-public class GraphContextMenuProvider extends ContextMenuProvider
-{
-
- XSDMenuListener xsdMenuListener;
-
- /**
- * Constructor for GraphContextMenuProvider.
- * @param selectionProvider
- * @param editor
- */
- public GraphContextMenuProvider(
- EditPartViewer viewer,
- ISelectionProvider selectionProvider)
- {
- super(viewer);
- this.viewer = viewer;
- xsdMenuListener = new XSDMenuListener(selectionProvider);
- xsdMenuListener.setSourceContext(viewer);
- }
-
- public XSDMenuListener getMenuListener()
- {
- return xsdMenuListener;
- }
-
-
- /**
- * @see org.eclipse.gef.ui.parts.ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager, org.eclipse.gef.EditPartViewer)
- */
- public void buildContextMenu(IMenuManager arg0)
- {
- xsdMenuListener.menuAboutToShow(arg0);
- }
-
- protected EditPartViewer viewer;
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphicsConstants.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphicsConstants.java
deleted file mode 100644
index 691996d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphicsConstants.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * A collection of color-related constants.
- */
-public interface GraphicsConstants
-{
- public final static Display display = Display.getDefault();
- public final static Color categoryBorderColor = new Color(null, 118, 134, 164);
- public final static Color elementBorderColor = new Color(null, 138, 154, 184);
- public final static Color elementBackgroundColor = new Color(null, 236, 242, 252);
- public final static Color elementLabelColor = new Color(null, 80, 96, 144);
- public final static Color readOnlyBorderColor = new Color(null, 164, 164, 164);
-
- public final static Color readOnlyBackgroundColor = ColorConstants.white;
-
- public final static Font smallFont = new Font(Display.getCurrent(), "Small Fonts", 6, SWT.NONE);
- public final static Font medium = new Font(Display.getCurrent(), "Tahoma", 8, SWT.NONE);
- public final static Font mediumBoldFont = new Font(Display.getCurrent(), "Tahoma", 8, SWT.BOLD);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/LinkedGraphViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/LinkedGraphViewer.java
deleted file mode 100644
index 73e21aa..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/LinkedGraphViewer.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import java.util.Iterator;
-
-import org.eclipse.gef.EditPart;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.w3c.dom.Element;
-
-
-
-public class LinkedGraphViewer
-{
-
- protected ISelectionProvider menuSelectionProvider;
- protected XSDEditor editor;
- protected BaseGraphicalViewer majorViewer, minorViewer;
-
- /**
- *
- */
- public LinkedGraphViewer(XSDEditor editor, ISelectionProvider selectionProvider)
- {
- menuSelectionProvider = selectionProvider;
- this.editor = editor;
- }
-
- public void setMajorViewer(BaseGraphicalViewer majorViewer)
- {
- this.majorViewer = majorViewer;
- }
-
- public void setMinorViewer(BaseGraphicalViewer minorViewer)
- {
- this.minorViewer = minorViewer;
- }
-
- protected Composite control;
- protected SashForm sashForm;
-
- public Control createControl(Composite parent)
- {
- //control = new Composite(parent, SWT.DEFAULT);
-
- control = sashForm = new SashForm(parent, SWT.VERTICAL | SWT.BORDER);
- sashForm.setLayoutData(ViewUtility.createFill());
-
- majorViewer.createControl(sashForm);
- minorViewer.createControl(sashForm);
-// control.setLayout(new GridLayout());
-// control.setLayoutData(ViewUtility.createFill());
- return control;
- }
-
- public void addSelectionChangedListener(ISelectionChangedListener selectionListener)
- {
- if (majorViewer != null)
- {
- majorViewer.addSelectionChangedListener(selectionListener);
- majorViewer.addSelectionChangedListener(majorViewerListener);
- }
- if (minorViewer != null)
- {
- minorViewer.addSelectionChangedListener(selectionListener);
- }
- }
-
- /**
- * @return Composite
- */
- public Composite getControl()
- {
- return control;
- }
-
- /**
- *
- */
- protected XSDConcreteComponent getInput()
- {
- return majorViewer.getInput();
- }
-
- /**
- * @param schema
- */
- protected void setInput(XSDConcreteComponent input)
- {
- majorViewer.setInput(input);
- minorViewer.setInput(input);
- }
-
- /**
- * @param component
- */
- public void setSelection(XSDConcreteComponent component)
- {
- majorViewer.setSelection(component);
- }
-
- protected MajorViewerSelectionChangedListener majorViewerListener = new MajorViewerSelectionChangedListener();
-
- private class MajorViewerSelectionChangedListener implements ISelectionChangedListener
- {
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
- */
- public void selectionChanged(SelectionChangedEvent event)
- {
- ISelection editPartSelection = event.getSelection();
- if (editPartSelection instanceof IStructuredSelection)
- {
- for (Iterator i = ((IStructuredSelection)editPartSelection).iterator(); i.hasNext(); )
- {
- EditPart editPart = (EditPart)i.next();
- if (editPart != null)
- {
- Object model = editPart.getModel();
- if (model instanceof XSDConcreteComponent)
- {
- Element element = ((XSDConcreteComponent)model).getElement();
-
- // this test ensures that we don't attempt to select an element for an external schema
- //
- if (element instanceof IDOMNode)
- {
- // now update the minor viewer based on the selected component in the major viewer
- minorViewer.setInput((XSDConcreteComponent)model);
- minorViewer.setSelection((XSDConcreteComponent)model);
- }
- }
- }
- }
- }
- }
-
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/PrintGraphAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/PrintGraphAction.java
deleted file mode 100644
index 53df913..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/PrintGraphAction.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.printing.PrintDialog;
-import org.eclipse.swt.printing.Printer;
-import org.eclipse.swt.printing.PrinterData;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-
-
-public class PrintGraphAction extends Action
-{
- protected XSDComponentViewer componentViewer;
-
- public PrintGraphAction(XSDComponentViewer componentViewer)
- {
- super("Print");
- this.componentViewer = componentViewer;
- }
-
- public void run()
- {
- try
- {
- PrintDialog dialog = new PrintDialog(Display.getCurrent().getActiveShell());
- PrinterData data = dialog.open();
- Printer printer = new Printer(data);
-
- Control control = componentViewer.getControl();
- Display display = Display.getCurrent();
- Image graphImage = new Image(display, control.getSize().x, control.getSize().y);
- GC graphGC = new GC(control);
- graphGC.copyArea(graphImage, 0, 0);
-
- ImageData graphImageData = graphImage.getImageData();
- graphImageData.transparentPixel = -1;
-
- Point screenDPI = display.getDPI();
- Point printerDPI = printer.getDPI();
- int scaleFactor = printerDPI.x / screenDPI.x;
- Rectangle trim = printer.computeTrim(0, 0, 0, 0);
- if (printer.startJob("Print XML Schema Graph"))
- {
- GC gc = new GC(printer);
- if (printer.startPage())
- {
- gc.drawImage(
- graphImage,
- 0,
- 0,
- graphImageData.width,
- graphImageData.height,
- -trim.x,
- -trim.y,
- scaleFactor * graphImageData.width,
- scaleFactor * graphImageData.height);
- printer.endPage();
- }
- printer.endJob();
- }
- printer.dispose();
- graphGC.dispose();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDComponentViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDComponentViewer.java
deleted file mode 100644
index a8a0525..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDComponentViewer.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ComponentViewerRootEditPart;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class XSDComponentViewer extends BaseGraphicalViewer
-{
- protected ComponentViewerRootEditPart componentViewerRootEditPart;
- public XSDComponentViewer(XSDEditor editor, ISelectionProvider menuSelectionProvider)
- {
- super(editor, menuSelectionProvider);
- }
-
- public void setInput(XSDConcreteComponent component)
- {
- if (isInputEnabled)
- {
- input = null;
-
- if (component instanceof XSDElementDeclaration ||
- component instanceof XSDSchema ||
- component instanceof XSDModelGroup ||
- component instanceof XSDModelGroupDefinition ||
- component instanceof XSDComplexTypeDefinition)
- {
- input = component;
- }
-
- componentViewerRootEditPart.setInput(input);
- if (!(input instanceof XSDSchema))
- {
- editor.getGraphViewer().backButton.setEnabled(true);
- }
- }
- }
-
- public void setSelection(XSDConcreteComponent component)
- {
- if (isSelectionEnabled)
- {
- //System.out.println("XSDComponentViewer.setSelection(" + component + ")");
- List editPartList = new ArrayList();
- if (component instanceof XSDElementDeclaration ||
- component instanceof XSDSchema ||
- component instanceof XSDModelGroup ||
- component instanceof XSDModelGroupDefinition ||
- component instanceof XSDComplexTypeDefinition)
- {
- if (component != null)
- {
- EditPart editPart = getEditPart(componentViewerRootEditPart, component);
- if (editPart != null)
- {
- // TODO ... take a look at this to figure our why a newly added component
- // seems to have the wrong bounds at this point... is this a layout issue?
- // As a temp hack I'm ignoring the selection of component with bounds (x, y) == (0, 0)
- // Perhaps a delayed selection is required?
- Rectangle bounds = ((GraphicalEditPart)editPart).getFigure().getBounds();
- if (bounds.x > 0 || bounds.y > 0)
- {
- editPartList.add(editPart);
- }
- }
- }
- }
- setSelection(new StructuredSelection(editPartList));
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#hookControl()
- */
- protected void hookControl()
- {
- super.hookControl();
- componentViewerRootEditPart = new ComponentViewerRootEditPart();
- setContents(componentViewerRootEditPart);
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphUtil.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphUtil.java
deleted file mode 100644
index f66c279..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphUtil.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.w3c.dom.Element;
-
-
-public class XSDGraphUtil
-{
- public static boolean isEditable(Object model)
- {
- boolean result = false;
- if (model instanceof XSDConcreteComponent)
- {
- Element element = ((XSDConcreteComponent)model).getElement();
- // this test ensures that we don't attempt to select an element for an external schema
- //
- if (element instanceof IDOMNode)
- {
- result = true;
- }
- }
- return result;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphViewer.java
deleted file mode 100644
index 95bcd15..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphViewer.java
+++ /dev/null
@@ -1,460 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.gef.EditPart;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.custom.ViewForm;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.XSDSelectionManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.xsd.XSDAttributeGroupContent;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-public class XSDGraphViewer implements ISelectionChangedListener
-{
- protected PageBook pageBook;
- protected Control componentViewerControl;
- protected Control inheritanceViewerControl;
- protected Control subGroupsViewerControl;
- protected XSDComponentViewer componentViewer;
- protected XSDInheritanceViewer inheritanceViewer;
- protected XSDSubstitutionGroupsViewer subGroupsViewer;
- protected XSDSelectionManager xsdSelectionManager;
- protected XSDSchema schema;
- protected InternalSelectionProvider internalSelectionProvider = new InternalSelectionProvider();
- protected XSDEditor editor;
- protected PrintGraphAction printGraphAction;
- protected SashForm sashForm;
- protected ToolItem backButton;
-
- public XSDGraphViewer(XSDEditor editor)
- {
- super();
- this.editor = editor;
- }
-
- public void setSchema(XSDSchema schema)
- {
- this.schema = schema;
- }
- ToolBar graphToolBar; // the toolbar at the top of the graph view
- ToolItem toolItem; // the view tool item
- ViewForm form; // view form for holding all the views
- Composite frameBar; // The composite that contains the toolbar
- Composite c; // temporary blank page. Clean this up when all views completed
- LinkedGraphViewer linkInheritanceViewer;
-
- protected void createInheritanceViewer(Composite parent)
- {
- linkInheritanceViewer = new LinkedGraphViewer(editor, internalSelectionProvider);
- BaseGraphicalViewer graphViewer = new XSDInheritanceViewer(editor, internalSelectionProvider);
- linkInheritanceViewer.setMajorViewer(graphViewer);
- graphViewer = new XSDComponentViewer(editor, editor.getSelectionManager());
- linkInheritanceViewer.setMinorViewer(graphViewer);
- linkInheritanceViewer.createControl(parent);
- }
- LinkedGraphViewer linkSubstitutionGroupViewer;
-
- protected void createSubstitutionGroupViewer(Composite parent)
- {
- linkSubstitutionGroupViewer = new LinkedGraphViewer(editor, internalSelectionProvider);
- BaseGraphicalViewer graphViewer = new XSDSubstitutionGroupsViewer(editor, internalSelectionProvider);
- linkSubstitutionGroupViewer.setMajorViewer(graphViewer);
- graphViewer = new XSDComponentViewer(editor, internalSelectionProvider);
- linkSubstitutionGroupViewer.setMinorViewer(graphViewer);
- linkSubstitutionGroupViewer.createControl(parent);
- }
- static private Color dividerColor;
-
- public Control createControl(Composite parent)
- {
- pageBook = new PageBook(parent, 0);
-
- componentViewer = new XSDComponentViewer(editor, editor.getSelectionManager());
- form = new ViewForm(pageBook, SWT.NONE);
- frameBar = new Composite(form, SWT.NONE);
- org.eclipse.swt.layout.GridLayout frameLayout = new org.eclipse.swt.layout.GridLayout();
- frameLayout.marginWidth = 0;
- frameLayout.marginHeight = 0;
- frameBar.setLayout(frameLayout);
- graphToolBar = new ToolBar(frameBar, SWT.FLAT);
- graphToolBar.addTraverseListener(new TraverseListener()
- {
- public void keyTraversed(TraverseEvent e)
- {
- if (e.detail == SWT.TRAVERSE_MNEMONIC)
- e.doit = false;
- }
- });
- backButton = new ToolItem(graphToolBar, SWT.PUSH);
- backButton.setImage(XSDEditorPlugin.getXSDImage("icons/back.gif")); //$NON-NLS-1$
- backButton.setToolTipText(XSDEditorPlugin.getXSDString("_UI_HOVER_BACK_TO_SCHEMA_VIEW")); //$NON-NLS-1$
- backButton.setEnabled(false);
- backButton.addSelectionListener(new SelectionAdapter()
- {
- public void widgetSelected(SelectionEvent e)
- {
- editor.getGraphViewer().setInput(editor.getXSDSchema());
- editor.getSelectionManager().setSelection(new StructuredSelection(editor.getXSDSchema()));
- }
- });
- form.setTopLeft(frameBar);
- componentViewerControl = componentViewer.createControl(form);
- c = ViewUtility.createComposite(form, 1);
- form.setContent(componentViewerControl);
- form.setData("layout ratio", new Float(0.65));
- if (dividerColor == null)
- {
- dividerColor = new Color(componentViewerControl.getDisplay(), 143, 141, 138);
- }
- pageBook.showPage(form);
- componentViewer.addSelectionChangedListener(internalSelectionProvider);
- printGraphAction = new PrintGraphAction(componentViewer);
- return pageBook;
- }
-
- public Action getPrintGraphAction()
- {
- return printGraphAction;
- }
-
- public void updateDesignLayout(int newLayout)
- {
- sashForm.setOrientation(newLayout);
- sashForm.layout();
- }
-
- public SashForm getSashForm()
- {
- return sashForm;
- }
-
- public void enableDesignView(boolean enable)
- {
- }
-
- public XSDComponentViewer getComponentViewer()
- {
- return componentViewer;
- }
-
- public void setBackButtonEnabled(boolean state)
- {
- backButton.setEnabled(state);
- }
-
- public void setInput(Object object)
- {
- if (object instanceof XSDConcreteComponent)
- {
- XSDConcreteComponent xsdComp = (XSDConcreteComponent) object;
- if (xsdComp instanceof XSDSchema)
- {
- setBackButtonEnabled(false);
- }
- else
- {
- setBackButtonEnabled(true);
- }
- componentViewer.setInput(xsdComp);
- componentViewer.setSelection(xsdComp);
- }
- }
-
- protected boolean isDeleted(XSDConcreteComponent component)
- {
- boolean result = false;
- if (component != null && component.getElement() != null)
- {
- result = component.getElement().getParentNode() == null;
- }
- return result;
- }
-
- public void setSelectionManager(XSDSelectionManager newSelectionManager)
- {
- // disconnect from old one
- if (xsdSelectionManager != null)
- {
- xsdSelectionManager.removeSelectionChangedListener(this);
- internalSelectionProvider.removeSelectionChangedListener(xsdSelectionManager);
- }
- xsdSelectionManager = newSelectionManager;
- // connect to new one
- if (xsdSelectionManager != null)
- {
- xsdSelectionManager.addSelectionChangedListener(this);
- internalSelectionProvider.addSelectionChangedListener(xsdSelectionManager);
- }
- }
-
- // this method is called by the SelectionManager to notify the graph view
- // that the editor selection has changed
- //
- public void selectionChanged(SelectionChangedEvent event)
- {
- // here we check the selection source to ensure that this selection came
- // from a different view (not from the graph view)
- if (event.getSource() != getComponentViewer())
- {
- handleSelection(event, true);
- }
- }
-
- protected XSDConcreteComponent getTopLevelComponent(XSDConcreteComponent component)
- {
- XSDConcreteComponent prev = component;
- XSDConcreteComponent container = component;
- while ( container != null && !(container instanceof XSDSchema))
- {
- prev = container;
- container = container.getContainer();
- }
- return container != null ? prev : null;
- }
-
- // TODO.. we need to clean this method up and add comments to clarify what's going on
- //
- protected void handleSelection(SelectionChangedEvent event, boolean isSelectionRequired)
- {
- StructuredSelection s = (StructuredSelection)event.getSelection();
- Object obj = s.getFirstElement();
- if (obj instanceof XSDConcreteComponent)
- {
- XSDConcreteComponent selectedComponent = (XSDConcreteComponent)obj;
- Object currentInput = getComponentViewer().getInput();
-
- // in this case we're looking at a top level view
- // so if the selection is a 'non-top-level' component we need to do a set input
- XSDSchema topLevelSchema = null;
- if (currentInput instanceof XSDSchema)
- {
- if (selectedComponent instanceof XSDSchema ||
- selectedComponent.getContainer() instanceof XSDSchema)
- {
- topLevelSchema = (XSDSchema)currentInput;
- }
- }
- if (selectedComponent instanceof XSDSchemaDirective ||
- selectedComponent instanceof XSDNotationDeclaration)
- {
- topLevelSchema = selectedComponent.getSchema();
- }
- else if (selectedComponent instanceof XSDAttributeGroupContent ||
- selectedComponent instanceof XSDWildcard)
- {
- if (selectedComponent.getContainer() instanceof XSDAttributeGroupDefinition)
- {
- topLevelSchema = selectedComponent.getSchema();
- }
- }
- else if (selectedComponent instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)selectedComponent;
- EditPart editPart = componentViewer.getEditPart(componentViewer.getRootEditPart(), st);
- if (editPart == null)
- {
- if (st.getContainer() == editor.getXSDSchema())
- {
- topLevelSchema = selectedComponent.getSchema();
- }
- }
- }
-
- if (topLevelSchema != null)
- {
- setInput(topLevelSchema);
- // TODO... this is not 'quite' right
- // it should be possible to view in
- }
- else
- {
- EditPart editPart = getComponentViewer().getEditPart(getComponentViewer().getRootEditPart(), obj);
- if (editPart == null)
- {
- XSDConcreteComponent topLevelComponent = getTopLevelComponent(selectedComponent);
- if (topLevelComponent != null)
- {
- setInput(topLevelComponent);
- }
- }
- }
- // now we handle the selection
- //
- if (isSelectionRequired)
- {
- EditPart editPart = getComponentViewer().getRootEditPart();
- EditPart newSelectedEditPart = getComponentViewer().getEditPart(editPart, obj);
- if (newSelectedEditPart != null)
- {
- if (newSelectedEditPart instanceof TopLevelComponentEditPart)
- {
- ((TopLevelComponentEditPart)newSelectedEditPart).setScroll(true);
- }
- getComponentViewer().setSelection(new StructuredSelection(newSelectedEditPart));
- }
- }
- }
- else if (obj instanceof CategoryAdapter)
- {
- setInput(((CategoryAdapter)obj).getXSDSchema());
- }
- }
-
- protected Element getElementNode(Node node)
- {
- while (!(node instanceof Element))
- {
- if (node instanceof Attr)
- {
- node = ((Attr) node).getOwnerElement();
- }
- else if (node instanceof Text)
- {
- Node sibling = node.getNextSibling();
- if (sibling == null)
- {
- break;
- }
- node = sibling;
- }
- else
- {
- Node parent = node.getParentNode();
- if (parent == null)
- {
- break;
- }
- node = node.getParentNode();
- }
- }
- return node instanceof Element ? (Element) node : null;
- }
-
-
-
- // This class listens to the graph view and converts edit part selection
- // events
- // into XSD component selection events that can be 'fired' to the
- // selectionManager
- //
- class InternalSelectionProvider implements ISelectionProvider, ISelectionChangedListener
- {
- protected List listenerList = new ArrayList();
- protected ISelection selection = new StructuredSelection();
-
- public void addSelectionChangedListener(ISelectionChangedListener listener)
- {
- listenerList.add(listener);
- }
-
- public void removeSelectionChangedListener(ISelectionChangedListener listener)
- {
- listenerList.remove(listener);
- }
-
- public ISelection getSelection()
- {
- return selection;
- }
-
- protected void notifyListeners(SelectionChangedEvent event)
- {
- for (Iterator i = listenerList.iterator(); i.hasNext();)
- {
- ISelectionChangedListener listener = (ISelectionChangedListener) i.next();
- listener.selectionChanged(event);
- }
- }
-
- public StructuredSelection convertSelectionFromEditPartToModel(ISelection editPartSelection)
- {
- List selectedModelObjectList = new ArrayList();
- if (editPartSelection instanceof IStructuredSelection)
- {
- for (Iterator i = ((IStructuredSelection) editPartSelection).iterator(); i.hasNext();)
- {
- Object obj = i.next();
- Object model = null;
- if (obj instanceof EditPart)
- {
- EditPart editPart = (EditPart) obj;
- model = editPart.getModel();
- // Convert category to XSDSchema
- // if (editPart instanceof CategoryEditPart)
- // {
- // model = ((Category)((CategoryEditPart)editPart).getModel()).getXSDSchema();
- // }
- }
- else if (obj instanceof XSDConcreteComponent)
- {
- //cs .. not sure why would we'd ever hit this case?
- model = obj;
- }
- if (model != null)//&& model instanceof XSDConcreteComponent)
- {
- selectedModelObjectList.add(model);
- }
- }
- }
- return new StructuredSelection(selectedModelObjectList);
- }
-
- public void setSelection(ISelection selection)
- {
- this.selection = selection;
- }
-
- // This method gets called when an edit part in the graph view is selected
- //
- public void selectionChanged(SelectionChangedEvent event)
- {
- ISelection newSelection = convertSelectionFromEditPartToModel(event.getSelection());
- this.selection = newSelection;
- SelectionChangedEvent newEvent = new SelectionChangedEvent(getComponentViewer(), newSelection);
- notifyListeners(newEvent);
- }
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphicalViewerKeyHandler.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphicalViewerKeyHandler.java
deleted file mode 100644
index b6c8026..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphicalViewerKeyHandler.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.PositionConstants;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.ConnectionEditPart;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.GraphicalViewer;
-import org.eclipse.gef.KeyHandler;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ExpandableGraphNodeEditPart;
-
-
-public class XSDGraphicalViewerKeyHandler extends KeyHandler
-{
- public XSDGraphicalViewerKeyHandler(GraphicalViewer viewer)
- {
- this.viewer = viewer;
- }
-
- private WeakReference cachedNode;
- int counter;
- private GraphicalViewer viewer;
-
- private boolean acceptConnection(KeyEvent event)
- {
- return event.character == '/'
- || event.character == '?'
- || event.character == '\\'
- || event.character == '|';
- }
- private boolean acceptIntoContainer(KeyEvent event)
- {
- return (((event.stateMask & SWT.ALT) != 0)
- && (event.keyCode == SWT.ARROW_RIGHT)) || (event.keyCode == SWT.ARROW_RIGHT);
-// return (event.keyCode == SWT.ARROW_RIGHT);
- }
- private boolean acceptLeaveConnection(KeyEvent event)
- {
- int key = event.keyCode;
- if (getFocus() instanceof ConnectionEditPart)
- if ((key == SWT.ARROW_UP)
- || (key == SWT.ARROW_RIGHT)
- || (key == SWT.ARROW_DOWN)
- || (key == SWT.ARROW_LEFT))
- return true;
- return false;
- }
- private boolean acceptLeaveContents(KeyEvent event)
- {
- int key = event.keyCode;
- return getFocus() == getViewer().getContents()
- && ((key == SWT.ARROW_UP)
- || (key == SWT.ARROW_RIGHT)
- || (key == SWT.ARROW_DOWN)
- || (key == SWT.ARROW_LEFT));
- }
- private boolean acceptOutOf(KeyEvent event)
- {
- return (((event.stateMask & SWT.ALT) != 0) && (event.keyCode == SWT.ARROW_LEFT)) || (event.keyCode == SWT.ARROW_LEFT);
-// return (event.keyCode == SWT.ARROW_LEFT);
- }
- private ConnectionEditPart findConnection(
- GraphicalEditPart node,
- ConnectionEditPart current,
- boolean forward)
- {
- List connections = new ArrayList(node.getSourceConnections());
- connections.addAll(node.getTargetConnections());
- if (connections.isEmpty())
- return null;
- if (forward)
- counter++;
- else
- counter--;
- while (counter < 0)
- counter += connections.size();
- counter %= connections.size();
- return (ConnectionEditPart) connections.get(counter % connections.size());
- }
- /*
- * pStart is a point in absolute coordinates.
- */
- private GraphicalEditPart findSibling(
- List siblings,
- Point pStart,
- int direction,
- EditPart exclude)
- {
- GraphicalEditPart epCurrent;
- GraphicalEditPart epFinal = null;
- IFigure figure;
- Point pCurrent;
- int distance = Integer.MAX_VALUE;
- Iterator iter = siblings.iterator();
- while (iter.hasNext())
- {
- epCurrent = (GraphicalEditPart) iter.next();
- if (epCurrent == exclude)
- continue;
- figure = epCurrent.getFigure();
- pCurrent = getInterestingPoint(figure);
- figure.translateToAbsolute(pCurrent);
- if (pStart.getPosition(pCurrent) != direction)
- continue;
- int d = pCurrent.getDistanceOrthogonal(pStart);
- if (d < distance)
- {
- distance = d;
- epFinal = epCurrent;
- }
- }
- return epFinal;
- }
- Point getInterestingPoint(IFigure figure)
- {
-// return figure.getBounds().getCenter();
- return figure.getBounds().getTopLeft();
- }
- /**
- * Returns the cached node. It is possible that the node is not longer in the viewer but has
- * not been garbage collected yet.
- */
- private GraphicalEditPart getCachedNode()
- {
- if (cachedNode == null)
- return null;
- if (cachedNode.isEnqueued())
- return null;
- return (GraphicalEditPart) cachedNode.get();
- }
- GraphicalEditPart getFocus()
- {
- return (GraphicalEditPart) getViewer().getFocusEditPart();
- }
- List getNavigationSiblings()
- {
- return getFocus().getParent().getChildren();
- }
- protected GraphicalViewer getViewer()
- {
- return viewer;
- }
- public boolean keyPressed(KeyEvent event)
- {
- if (event.character == ' ')
- {
- processSelect(event);
- return true;
- }
- else if (acceptIntoContainer(event))
- {
- navigateIntoContainer(event);
- return true;
- }
- else if (acceptOutOf(event))
- {
- navigateOut(event);
- return true;
- }
- else if (acceptConnection(event))
- {
- navigateConnections(event);
- return true;
- }
- else if (acceptLeaveConnection(event))
- {
- navigateOutOfConnection(event);
- return true;
- }
- else if (acceptLeaveContents(event))
- {
- navigateIntoContainer(event);
- return true;
- }
- switch (event.keyCode)
- {
- case SWT.ARROW_LEFT :
- return navigateNextSibling(event, PositionConstants.WEST);
- case SWT.ARROW_RIGHT :
- return navigateNextSibling(event, PositionConstants.EAST);
- case SWT.ARROW_UP :
- return navigateNextSibling(event, PositionConstants.NORTH);
- case SWT.ARROW_DOWN :
- return navigateNextSibling(event, PositionConstants.SOUTH);
- case SWT.HOME :
- return navigateJumpSibling(event, PositionConstants.WEST);
- case SWT.END :
- return navigateJumpSibling(event, PositionConstants.EAST);
- case SWT.PAGE_DOWN :
- return navigateJumpSibling(event, PositionConstants.SOUTH);
- case SWT.PAGE_UP :
- return navigateJumpSibling(event, PositionConstants.NORTH);
- }
- return super.keyPressed(event);
- }
- private void navigateConnections(KeyEvent event)
- {
- GraphicalEditPart focus = getFocus();
- ConnectionEditPart current = null;
- GraphicalEditPart node = getCachedNode();
- if (focus instanceof ConnectionEditPart)
- {
- current = (ConnectionEditPart) focus;
- if (node == null
- || (node != current.getSource() && node != current.getTarget()))
- {
- node = (GraphicalEditPart) current.getSource();
- counter = 0;
- }
- }
- else
- {
- node = focus;
- }
- setCachedNode(node);
- boolean forward = event.character == '/' || event.character == '?';
- ConnectionEditPart next = findConnection(node, current, forward);
- navigateTo(next, event);
- }
- private void navigateIntoContainer(KeyEvent event)
- {
- GraphicalEditPart focus = getFocus();
- List childList = focus.getChildren();
-
- if (focus instanceof ExpandableGraphNodeEditPart)
- {
- if (!((ExpandableGraphNodeEditPart)focus).isExpanded())
- {
- ((ExpandableGraphNodeEditPart)focus).doPerformExpandOrCollapse();
- }
- }
-
- Point tl = focus.getContentPane().getBounds().getTopLeft();
- int minimum = Integer.MAX_VALUE;
- int current;
- GraphicalEditPart closestPart = null;
- for (int i = 0; i < childList.size(); i++)
- {
- GraphicalEditPart ged = (GraphicalEditPart) childList.get(i);
- Rectangle childBounds = ged.getFigure().getBounds();
- current = (childBounds.x - tl.x) + (childBounds.y - tl.y);
- if (current < minimum)
- {
- minimum = current;
- closestPart = ged;
- }
- }
- if (closestPart != null)
- navigateTo(closestPart, event);
- }
- private boolean navigateJumpSibling(KeyEvent event, int direction)
- {
- return false;
- }
- private boolean navigateNextSibling(KeyEvent event, int direction)
- {
- GraphicalEditPart epStart = getFocus();
- IFigure figure = epStart.getFigure();
- Point pStart = getInterestingPoint(figure);
- figure.translateToAbsolute(pStart);
- EditPart next =
- findSibling(getNavigationSiblings(), pStart, direction, epStart);
- if (next == null)
- return false;
- navigateTo(next, event);
- return true;
- }
- private void navigateOut(KeyEvent event)
- {
- if (getFocus() == null
- || getFocus() == getViewer().getContents()
- || getFocus().getParent() == getViewer().getContents())
- return;
-
- EditPart parent = getFocus().getParent();
- if (((event.stateMask & SWT.ALT) != 0) && (event.keyCode == SWT.ARROW_LEFT))
- {
- if ((parent != null) && (parent instanceof ExpandableGraphNodeEditPart))
- {
- if (((ExpandableGraphNodeEditPart)parent).isExpanded())
- {
- ((ExpandableGraphNodeEditPart)parent).doPerformExpandOrCollapse();
- }
- }
- }
- navigateTo(parent, event);
-// navigateTo(getFocus().getParent(), event);
- }
- private void navigateOutOfConnection(KeyEvent event)
- {
- GraphicalEditPart cached = getCachedNode();
- ConnectionEditPart conn = (ConnectionEditPart) getFocus();
- if (cached != null
- && (cached == conn.getSource() || cached == conn.getTarget()))
- navigateTo(cached, event);
- else
- navigateTo(conn.getSource(), event);
- }
- void navigateTo(EditPart part, KeyEvent event)
- {
- if (part == null)
- return;
- if ((event.stateMask & SWT.SHIFT) != 0)
- {
- getViewer().appendSelection(part);
- getViewer().setFocus(part);
- }
- else if ((event.stateMask & SWT.CONTROL) != 0)
- getViewer().setFocus(part);
- else
- getViewer().select(part);
- }
- private void processSelect(KeyEvent event)
- {
- EditPart part = getViewer().getFocusEditPart();
- if ((event.stateMask & SWT.CONTROL) != 0
- && part.getSelected() != EditPart.SELECTED_NONE)
- {
- getViewer().deselect(part);
- }
- else
- {
- getViewer().appendSelection(part);
- }
- getViewer().setFocus(part);
- }
- private void setCachedNode(GraphicalEditPart node)
- {
- if (node == null)
- cachedNode = null;
- else
- cachedNode = new WeakReference(node);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDInheritanceViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDInheritanceViewer.java
deleted file mode 100644
index de95c0c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDInheritanceViewer.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.SubstitutionGroupViewerRootEditPart;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class XSDInheritanceViewer extends BaseGraphicalViewer
-{
- protected SubstitutionGroupViewerRootEditPart inheritanceViewerRootEditPart;
- public XSDInheritanceViewer(XSDEditor editor, ISelectionProvider menuSelectionProvider)
- {
- super(editor, menuSelectionProvider);
- }
-
- public void setInput(XSDConcreteComponent component)
- {
- if (isInputEnabled)
- {
- input = null;
-
- if (component instanceof XSDSchema ||
- component instanceof XSDComplexTypeDefinition)
- {
- input = component;
- }
-
- inheritanceViewerRootEditPart.setInput(input);
- }
- }
-
- public void setSelection(XSDConcreteComponent component)
- {
- if (isSelectionEnabled)
- {
- //System.out.println("XSDComponentViewer.setSelection(" + component + ")");
- List editPartList = new ArrayList();
- if (component instanceof XSDElementDeclaration ||
- component instanceof XSDSchema ||
- component instanceof XSDModelGroup ||
- component instanceof XSDModelGroupDefinition ||
- component instanceof XSDComplexTypeDefinition)
- {
- if (component != null)
- {
- EditPart editPart = getEditPart(inheritanceViewerRootEditPart, component);
- if (editPart != null)
- {
- // TODO ... take a look at this to figure our why a newly added component
- // seems to have the wrong bounds at this point... is this a layout issue?
- // As a temp hack I'm ignoring the selection of component with bounds (x, y) == (0, 0)
- // Perhaps a delayed selection is required?
- Rectangle bounds = ((GraphicalEditPart)editPart).getFigure().getBounds();
- if (bounds.x > 0 || bounds.y > 0)
- {
- editPartList.add(editPart);
- }
- }
- }
- }
- setSelection(new StructuredSelection(editPartList));
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#hookControl()
- */
- protected void hookControl()
- {
- super.hookControl();
- inheritanceViewerRootEditPart = new SubstitutionGroupViewerRootEditPart();
- setContents(inheritanceViewerRootEditPart);
- }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupChildUtility.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupChildUtility.java
deleted file mode 100644
index 9fa84bd..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupChildUtility.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.xsd.XSDElementDeclaration;
-
-/**
- * @author ernest
- *
- * To change this generated comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class XSDSubstitutionGroupChildUtility
-{
-
- /**
- * @param declaration
- * @return List
- */
- public static List getModelChildren(XSDElementDeclaration declaration)
- {
- ArrayList children = new ArrayList();
- List substitutionGroup = declaration.getSubstitutionGroup();
- for (int i = 0, size = substitutionGroup.size(); i < size; i++)
- {
- XSDElementDeclaration element = (XSDElementDeclaration) substitutionGroup.get(i);
- if (declaration.equals(element.getSubstitutionGroupAffiliation()))
- {
- children.add(element);
- }
- }
- return children;
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupsViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupsViewer.java
deleted file mode 100644
index cd3074f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupsViewer.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.SubstitutionGroupViewerRootEditPart;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class XSDSubstitutionGroupsViewer extends BaseGraphicalViewer
-{
- protected SubstitutionGroupViewerRootEditPart subGroupViewerRootEditPart;
- public XSDSubstitutionGroupsViewer(XSDEditor editor, ISelectionProvider menuSelectionProvider)
- {
- super(editor, menuSelectionProvider);
- }
-
- public void setInput(XSDConcreteComponent component)
- {
- if (isInputEnabled)
- {
- input = null;
-
- if (component instanceof XSDElementDeclaration ||
- component instanceof XSDSchema)
- {
- input = component;
- }
-
- subGroupViewerRootEditPart.setInput(input);
- }
- }
-
- public void setSelection(XSDConcreteComponent component)
- {
- if (isSelectionEnabled)
- {
- //System.out.println("XSDComponentViewer.setSelection(" + component + ")");
- List editPartList = new ArrayList();
- if (component instanceof XSDElementDeclaration ||
- component instanceof XSDSchema ||
- component instanceof XSDModelGroup ||
- component instanceof XSDModelGroupDefinition ||
- component instanceof XSDComplexTypeDefinition)
- {
- if (component != null)
- {
- EditPart editPart = getEditPart(subGroupViewerRootEditPart, component);
- if (editPart != null)
- {
- // TODO ... take a look at this to figure our why a newly added component
- // seems to have the wrong bounds at this point... is this a layout issue?
- // As a temp hack I'm ignoring the selection of component with bounds (x, y) == (0, 0)
- // Perhaps a delayed selection is required?
- Rectangle bounds = ((GraphicalEditPart)editPart).getFigure().getBounds();
- if (bounds.x > 0 || bounds.y > 0)
- {
- editPartList.add(editPart);
- }
- }
- }
- }
- setSelection(new StructuredSelection(editPartList));
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#hookControl()
- */
- protected void hookControl()
- {
- super.hookControl();
- subGroupViewerRootEditPart = new SubstitutionGroupViewerRootEditPart();
- setContents(subGroupViewerRootEditPart);
- }
-
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/BaseEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/BaseEditPart.java
deleted file mode 100644
index f98da1a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/BaseEditPart.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.model.ModelAdapterListener;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-
-
-public abstract class BaseEditPart extends AbstractGraphicalEditPart implements ModelAdapterListener, GraphicsConstants, IFeedbackHandler
-{
- protected boolean isSelected = false;
- /**
- * Activates the <code>EditPart</code> by setting the
- * appropriate flags, and activating its children.
- * activation signals to the EditPart that is should start observing
- * it's model, and that is should support editing at this time.
- * An EditPart will have a parent prior to activiation.
- * @see #deactivate()
- */
- public void activate()
- {
- super.activate();
- XSDModelAdapterFactory.addModelAdapterListener(getModel(), this);
- }
- /**
- * Apart from the deactivation done in super, the source
- * and target connections are deactivated, and the visual
- * part of the this is removed.
- *
- * @see #activate()
- */
- public void deactivate()
- {
- XSDModelAdapterFactory.removeModelAdapterListener(getModel(), this);
- super.deactivate();
- }
-
- protected void createEditPolicies()
- {
- }
-
- protected EditPart createChild(Object model)
- {
- return XSDEditPartFactory.getInstance().createEditPart(this, model);
- }
-
- public void propertyChanged(Object object, String property)
- {
- refresh();
- }
-
- //public BaseGraphicalViewer getBaseGraphicalViewer()
- //{
- // return (BaseGraphicalViewer)getViewer();
- //}
-
- public IFigure getSelectionFigure()
- {
- return getFigure();
- }
-
-
- public void addFeedback()
- {
- isSelected = true;
- refreshVisuals();
- }
-
- public void removeFeedback()
- {
- isSelected = false;
- refreshVisuals();
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/CategoryEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/CategoryEditPart.java
deleted file mode 100644
index afffaad..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/CategoryEditPart.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.ScrollPane;
-import org.eclipse.draw2d.Viewport;
-import org.eclipse.draw2d.ViewportLayout;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-
-
-public class CategoryEditPart extends BaseEditPart
-{
- protected ScrollPane scrollpane;
- protected Label label;
- protected ContainerFigure outerPane, r;
- protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-
- public int getType()
- {
- return ((Category)getModel()).getGroupType();
- }
-
- protected IFigure createFigure()
- {
- outerPane = new ContainerFigure();
- outerPane.setBorder(new RoundedLineBorder(1, 6));
- outerPane.setForegroundColor(categoryBorderColor);
-
- r = new ContainerFigure();
- r.setOutline(false);
- r.setMinimumSize(new Dimension(0, 0));
- r.setFill(true);
- r.setBackgroundColor(GraphicsConstants.elementBackgroundColor);
- outerPane.add(r);
-
- int minHeight = 250;
- switch (getType())
- {
- case Category.DIRECTIVES :
- case Category.NOTATIONS :
- {
- minHeight = 50;
- break;
- }
- case Category.ATTRIBUTES :
- case Category.GROUPS :
- {
- minHeight = 100;
- break;
- }
- }
-
- final int theMinHeight = minHeight;
- FillLayout outerLayout = new FillLayout()
- {
- protected Dimension calculatePreferredSize(IFigure parent, int width, int height)
- {
- Dimension d = super.calculatePreferredSize(parent, width, height);
- d.union(new Dimension(100, theMinHeight));
- return d;
- }
- };
- //outerLayout.setHorizontal(false);
- outerPane.setLayoutManager(outerLayout);
-
-
- label = new Label();
- label.setForegroundColor(ColorConstants.black);
- label.setBorder(new MarginBorder(2, 4, 2, 4));
- r.add(label); //Holder);
-
- RectangleFigure line = new RectangleFigure();
- line.setPreferredSize(20, 1);
- outerPane.add(line);
-
-
- scrollpane = new ScrollPane();
- scrollpane.setForegroundColor(ColorConstants.black);
- scrollpane.setVerticalScrollBarVisibility(ScrollPane.AUTOMATIC); //ScrollPane.ALWAYS);
- outerPane.add(scrollpane);
-
- ContainerFigure pane = new ContainerFigure();
- pane.setBorder(new MarginBorder(5, 8, 5, 8));
- ContainerLayout layout = new ContainerLayout();
- layout.setHorizontal(false);
- layout.setSpacing(0);
- pane.setLayoutManager(layout);
-
- Viewport viewport = new Viewport();
- viewport.setContentsTracksHeight(true);
- ViewportLayout viewportLayout = new ViewportLayout()
- {
- protected Dimension calculatePreferredSize(IFigure parent, int width, int height)
- {
- Dimension d = super.calculatePreferredSize(parent, width, height);
- d.height = Math.min(d.height, theMinHeight - 25); //getViewer().getControl().getBounds().height);
- return d;
- }
- };
- viewport.setLayoutManager(viewportLayout);
-
- scrollpane.setViewport(viewport);
- scrollpane.setContents(pane);
-
- return outerPane;
- }
-
- protected List getModelChildren()
- {
- return ((Category)getModel()).getChildren();
- }
-
- public void refreshVisuals()
- {
- outerPane.setBorder(new RoundedLineBorder(isSelected ? ColorConstants.black : categoryBorderColor, isSelected ? 1 : 1, 6));
- outerPane.repaint();
-// Uncomment this for coloured titles
-// r.setBackgroundColor(isSelected ? ColorConstants.blue : GraphicsConstants.elementBackgroundColor);
-// label.setForegroundColor(isSelected ? ColorConstants.white : ColorConstants.black);
-// r.repaint();
-// outerPane.setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
-
- Category category = (Category)getModel();
- // temp hack --- added empty space to make the min width of groups bigger
- label.setText(" " + category.getName() + " ");
- }
-
- public ScrollPane getScrollPane()
- {
- return scrollpane;
- }
-
- public IFigure getContentPane()
- {
- return scrollpane.getContents();
- }
-
- public void scrollTo(AbstractGraphicalEditPart topLevel)
- {
- Rectangle topLevelBounds = topLevel.getFigure().getBounds();
- Rectangle categoryBounds = getFigure().getBounds();
- int scrollValue = scrollpane.getVerticalScrollBar().getValue();
- int location = topLevelBounds.y + scrollValue - categoryBounds.y;
- scrollpane.scrollVerticalTo(location - categoryBounds.height/2);
- }
-
- protected EditPart createChild(Object model)
- {
- EditPart editPart = new TopLevelComponentEditPart();
- editPart.setModel(model);
- editPart.setParent(this);
- return editPart;
- }
-
- protected void createEditPolicies()
- {
- selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeDefinitionEditPart.java
deleted file mode 100644
index 620cdc5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeDefinitionEditPart.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenteredIconFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-
-
-
-public class ComplexTypeDefinitionEditPart extends GraphNodeEditPart
-{
- protected ContainerFigure contentFigure;
- protected Label label;
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
- protected CenteredIconFigure centeredIconFigure;
- protected RectangleFigure preceedingSpace;
- protected ContainerFigure contentPane;
-
- public XSDComplexTypeDefinition getXSDComplexTypeDefinition()
- {
- return (XSDComplexTypeDefinition)getModel();
- }
-
- protected boolean isConnectedEditPart()
- {
- return false;
- }
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- GraphNodeFigure figure = new GraphNodeFigure();
-
- figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
- figure.getOutlinedArea().setFill(true);
- figure.getOutlinedArea().setLayoutManager(new FillLayout(true));
-
- figure.getInnerContentArea().getContainerLayout().setHorizontal(true);
-
- preceedingSpace = new RectangleFigure();
- preceedingSpace.setVisible(false);
- figure.getInnerContentArea().add(preceedingSpace, 0);
-
- contentPane = new ContainerFigure();
- contentPane.getContainerLayout().setHorizontal(false);
- contentPane.getContainerLayout().setSpacing(5);
- contentPane.setBorder(new MarginBorder(5, 5, 5, 5));
- figure.getInnerContentArea().add(contentPane);
-
- label = new Label();
- label.setBorder(new MarginBorder(0, 5, 5, 5));
- figure.getIconArea().add(label);
- label.setFont(mediumBoldFont);
-
- figure.getInnerContentArea().getContainerLayout().setSpacing(5);
- figure.getInnerContentArea().setBorder(new MarginBorder(5, 5, 5, 5));
-
- return figure;
- }
-
- protected EditPart createChild(Object model)
- {
- EditPart editPart = null;
- if (model == getModel())
- {
- editPart = new ComplexTypeInheritedContentEditPart();
- editPart.setModel(model);
- editPart.setParent(this);
- }
- else
- {
- editPart = super.createChild(model);
- }
- return editPart;
- }
-
- protected List getModelChildren()
- {
- List list = new ArrayList();
-
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)getModel();
-
- if (ct.getDerivationMethod().getName().equals("extension"))
- {
- list.add(getModel());
- }
-
- list.addAll(XSDChildUtility.getModelChildren(getModel()));
- return list;
- }
-
- public IFigure getContentPane()
- {
- return contentPane;
- }
-
- protected void refreshVisuals()
- {
- XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)getModel();
-
- String name = ctd.getName();
- if (name == null)
- {
- try
- {
- if (label != null)
- {
- graphNodeFigure.getIconArea().remove(label);
- }
- label = null;
- }
- catch (Exception e)
- {
- }
- }
- else
- {
- if (label == null)
- {
- label = new Label();
- label.setBorder(new MarginBorder(0, 5, 5, 5));
- ((GraphNodeFigure)getFigure()).getIconArea().add(label);
- label.setFont(mediumBoldFont);
- }
- graphNodeFigure.getIconArea().add(label);
- label.setText(name);
- }
-
- // provides some room if we need to draw lines for the inherited
- boolean includesInheritedContent = getModelChildren().contains(getModel());
- preceedingSpace.setPreferredSize(includesInheritedContent ? new Dimension(10, 1) : new Dimension(0, 0));
-
- if (XSDGraphUtil.isEditable(getModel()))
- {
- graphNodeFigure.setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
- if (label != null)
- label.setForegroundColor(elementBorderColor);
- }
- else
- {
- graphNodeFigure.setForegroundColor(isSelected ? ColorConstants.black : readOnlyBorderColor);
- if (label != null)
- label.setForegroundColor(readOnlyBorderColor);
- }
- }
-
- protected void performDirectEdit()
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDComplexTypeDefinition)getModel());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
-
-
- protected void createEditPolicies()
- {
- super.createEditPolicies();
- installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
- }
-
-
- public void performRequest(Request request)
- {
- if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
- request.getType() == RequestConstants.REQ_OPEN)
- {
- if (XSDGraphUtil.isEditable(getModel()))
- {
- LocationRequest locationRequest = (LocationRequest)request;
- Point p = locationRequest.getLocation();
-
- if (label != null && hitTest(label, p))
- {
- performDirectEdit();
- }
- }
- }
- }
-
- public void doEditName()
- {
- performDirectEdit();
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeInheritedContentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeInheritedContentEditPart.java
deleted file mode 100644
index 0295265..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeInheritedContentEditPart.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-// This is a dashed box that displays the inherited content of a complex type
-//
-public class ComplexTypeInheritedContentEditPart extends BaseEditPart
-{
- protected Label label;
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
- protected boolean isParentExpanded;
-
- public ComplexTypeInheritedContentEditPart()
- {
- super();
- }
-
- public XSDComplexTypeDefinition getXSDComplexTypeDefinition()
- {
- return (XSDComplexTypeDefinition)getModel();
- }
-
- protected IFigure createFigure()
- {
- ContainerFigure figure = new ContainerFigure();
- figure.getContainerLayout().setHorizontal(false);
- figure.getContainerLayout().setBorder(5);
- figure.getContainerLayout().setSpacing(5);
- figure.setBorder(new RoundedLineBorder(ColorConstants.gray, 1, 6, Graphics.LINE_DASH));
- return figure;
- }
-
- protected List getModelChildren()
- {
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)getModel();
-
- List list = new ArrayList();
-
- if (ct.getDerivationMethod().getName().equals("extension") && !isParentExpanded)
- {
- XSDTypeDefinition type = ct.getBaseTypeDefinition();
- Iterator iter = XSDChildUtility.getModelChildren(type).iterator();
- boolean cont = true;
- while (cont)
- {
- while (iter.hasNext())
- {
- list.add(0, iter.next());
- }
-
- if (type instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)type;
- type = ctd.getBaseTypeDefinition();
-
- // defect 264957 - workbench hangs when modifying complex content
- // Since we don't filter out the current complexType from
- // the combobox, we can potentially have an endless loop
- if (ctd == type)
- {
- cont = false;
- break;
- }
-
- if (ctd.getDerivationMethod().getName().equals("extension"))
- {
- iter = XSDChildUtility.getModelChildren(type).iterator();
- }
- else
- {
- cont = false;
- }
- }
- else
- {
- cont = false;
- }
- }
- }
- return list;
- }
-
- protected void refreshVisuals()
- {
- List children = getModelChildren();
- figure.setVisible(children.size() > 0);
- // todo set preferredSize to 0 ?
- }
-
- protected void performDirectEdit()
- {
- // Why are we allowing direct editing when the label is null?
- // Should remove the policy
- if (label != null)
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDComplexTypeDefinition)getModel());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
- }
-
-
- protected void createEditPolicies()
- {
- super.createEditPolicies();
- installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
- }
-
-
- public void performRequest(Request request)
- {
- if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
- {
- if (XSDGraphUtil.isEditable(getModel()))
- {
- performDirectEdit();
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComponentViewerRootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComponentViewerRootEditPart.java
deleted file mode 100644
index fa8d191..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComponentViewerRootEditPart.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Panel;
-import org.eclipse.gef.EditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerLayout;
-
-
-
-public class ComponentViewerRootEditPart extends BaseEditPart
-{
- protected final static String MESSAGE_PLACE_HOLDER = "MESSAGE_PLACE_HOLDER";
- protected Object input;
-
- public void setInput(Object input)
- {
- this.input = input;
- refreshChildren();
- }
-
- protected IFigure createFigure()
- {
- Panel panel = new Panel();
- ContainerLayout layout = new ContainerLayout();
- layout.setBorder(60);
- panel.setLayoutManager(layout);
- return panel;
- }
-
-
- protected List getModelChildren()
- {
- List list = new ArrayList();
- if (input != null)
- {
- list.add(input);
- }
- else
- {
- list.add(MESSAGE_PLACE_HOLDER);
- }
- return list;
- }
-
- protected EditPart createChild(Object model)
- {
- EditPart editPart = null;
- if (model == MESSAGE_PLACE_HOLDER)
- {
- editPart = new MessageEditPart();
- editPart.setModel(model);
- }
- else
- {
- editPart = super.createChild(model);
- }
- return editPart;
- }
-
- protected void createEditPolicies()
- {
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ElementDeclarationEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ElementDeclarationEditPart.java
deleted file mode 100644
index 249c88b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ElementDeclarationEditPart.java
+++ /dev/null
@@ -1,460 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.LineBorder;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.SpacingFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDSubstitutionGroupChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDSubstitutionGroupsViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComboBoxCellEditorManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.w3c.dom.Element;
-
-
-
-public class ElementDeclarationEditPart extends ExpandableGraphNodeEditPart
-{
- public Label label;
- protected Label contentIconLabel;
- protected Label typeValueLabel;
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
- protected boolean isContentIconLabelSelected = false;
-
- protected final static String ELEMENT_TYPE_PLACE_HOLDER = "ELEMENT_TYPE_PLACE_HOLDER";
-
- public XSDParticle getXSDParticle()
- {
- Object o = getXSDElementDeclaration().getContainer();
- return (o instanceof XSDParticle) ? (XSDParticle)o : null;
- }
-
- public XSDElementDeclaration getXSDElementDeclaration()
- {
- return (XSDElementDeclaration)getModel();
- }
-
- protected boolean isDefaultExpanded()
- {
- // hack to expand up to its content. The previous test didn't appear to work
- int depth = 0;
- for (EditPart part = this; part != null; part = part.getParent())
- {
- depth++;
- }
- return depth <= 3;
- }
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();
-
- figure.getOutlinedArea().setFill(true);
- figure.getOutlinedArea().setLayoutManager(new FillLayout());
-
- label = new Label();
- figure.getIconArea().add(label);
- label.setFont(mediumBoldFont);
-
- SpacingFigure spacingFigure = new SpacingFigure();
- figure.getIconArea().add(spacingFigure);
-
- contentIconLabel = new Label();
- //contentIcon.setBorder(new MarginBorder(2, 2, 2, 10));
- figure.getIconArea().add(contentIconLabel);
-
- // A sneaky null check.... getViewer() does a getRoot(), but getRoot() might be null
- // same with getParent()
- if (getParent() != null && getRoot() != null && getViewer() instanceof XSDSubstitutionGroupsViewer)
- {
- figure.getOuterContentArea().getContainerLayout().setSpacing(5);
- }
- else
- {
- RectangleFigure line = new RectangleFigure();
- line.setPreferredSize(20, 1);
- figure.getOutlinedArea().add(line, 1);
-
- figure.getInnerContentArea().setLayoutManager(new FillLayout(2));
- figure.getInnerContentArea().setBorder(new MarginBorder(2,2,2,1));
-
- ContainerFigure labelGroup = new ContainerFigure();
- Label typeLabel = new Label("type");
- labelGroup.add(typeLabel);
- labelGroup.setBorder(new MarginBorder(0, 4, 0, 4));
-
- Label equalsLabel = new Label(" = ");
- labelGroup.add(equalsLabel);
-
- typeValueLabel = new Label();
- labelGroup.add(typeValueLabel);
- figure.getOutlinedArea().add(labelGroup, 2);
- }
- return figure;
- }
-
- protected ExpandableGraphNodeFigure getExpandableGraphNodeFigure()
- {
- return (ExpandableGraphNodeFigure)graphNodeFigure;
- }
-
- protected List getModelChildren()
- {
- XSDTypeDefinition typeDef = getXSDElementDeclaration().getTypeDefinition();
-
- // Special case simple type. Need to add it to the list as well
- List list = new ArrayList();
- if (typeDef instanceof XSDSimpleTypeDefinition)
- {
- list.add((XSDSimpleTypeDefinition)typeDef);
- if (getExpandableGraphNodeFigure().isExpanded())
- {
- list.addAll(getModelChildrenHelper());
- }
- return list;
- }
- return getExpandableGraphNodeFigure().isExpanded() ? getModelChildrenHelper() : Collections.EMPTY_LIST;
- }
-
- protected List getModelChildrenHelper()
- {
- if (getViewer() instanceof XSDSubstitutionGroupsViewer)
- {
- return XSDSubstitutionGroupChildUtility.getModelChildren(getXSDElementDeclaration().getResolvedElementDeclaration());
- }
- else
- {
- return XSDChildUtility.getModelChildren(getXSDElementDeclaration().getResolvedElementDeclaration());
- }
- }
-
- protected void refreshContentIcon()
- {
- String iconName = null;
- XSDTypeDefinition td = getXSDElementDeclaration().getResolvedElementDeclaration().getTypeDefinition();
-
- if (td instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition complexTypeDefinition = (XSDComplexTypeDefinition)td;
- if (complexTypeDefinition.getAttributeUses().size() > 0)
- {
- iconName = "icons/XSDAttribute.gif";
- }
- }
- Image image = iconName != null ? XSDEditorPlugin.getXSDImage(iconName) : null;
- contentIconLabel.setIcon(image);
- }
-
- protected void refreshVisuals()
- {
- String text = getXSDElementDeclaration().isElementDeclarationReference() ?
- getXSDElementDeclaration().getResolvedElementDeclaration().getQName(getXSDElementDeclaration().getSchema()) :
- getXSDElementDeclaration().getName();
-
- label.setText(text);
-
- ContainerFigure rectangle = graphNodeFigure.getOutlinedArea();
- if (XSDGraphUtil.isEditable(getXSDElementDeclaration()))
- {
- rectangle.setBorder(new LineBorder(isSelected ? ColorConstants.black : elementBorderColor, 2));
- rectangle.setBackgroundColor(elementBackgroundColor);
- rectangle.setForegroundColor(elementBorderColor);
-
- graphNodeFigure.getInnerContentArea().setForegroundColor(ColorConstants.black);
- if (XSDGraphUtil.isEditable(getXSDElementDeclaration().getResolvedElementDeclaration()))
- {
- // give label 'editable' colour
- graphNodeFigure.getInnerContentArea().setForegroundColor(elementLabelColor);
- }
- else
- {
- // give label 'read only' colour
- graphNodeFigure.getInnerContentArea().setForegroundColor(elementBorderColor);
- }
- label.setBackgroundColor(elementBackgroundColor);
- label.setForegroundColor(elementLabelColor);
- }
- else
- {
- rectangle.setBorder(new LineBorder(isSelected ? ColorConstants.black : readOnlyBorderColor, 2));
- rectangle.setBackgroundColor(readOnlyBackgroundColor);
- rectangle.setForegroundColor(readOnlyBorderColor);
- graphNodeFigure.getInnerContentArea().setForegroundColor(readOnlyBorderColor);
- label.setBackgroundColor(readOnlyBackgroundColor);
- }
-
- if (getXSDElementDeclaration().isElementDeclarationReference())
- {
- label.setIcon(XSDEditorPlugin.getXSDImage("icons/GraphViewElementRef.gif"));
- label.setBorder(new MarginBorder(0, 0, 0, 4));
- }
- else
- {
- label.setIcon(null);
- label.setBorder(new MarginBorder(0, 6, 0, 4));
- }
-
- if (getXSDParticle() != null)
- {
- refreshOccurenceLabel(getXSDParticle().getMinOccurs(), getXSDParticle().getMaxOccurs());
- }
-
-
- if (typeValueLabel != null)
- {
- XSDElementDeclaration ed = getXSDElementDeclaration();
- if (ed.getElement() != null)
- {
- String type = ed.getElement().getAttribute("type");
- if (type == null)
- {
- type = "";
- }
- if (!getXSDElementDeclaration().isElementDeclarationReference())
- {
- typeValueLabel.setText(type.equals("") ? "<anonymous>" : type);
- }
- else // if it is a ref, we show the resolved type
- {
- String resolvedType = "";
- if (ed.getResolvedElementDeclaration() != null)
- {
- if (ed.getResolvedElementDeclaration().getTypeDefinition() != null)
- {
- resolvedType = ed.getResolvedElementDeclaration().getTypeDefinition().getQName(ed.getSchema());
-
- // if null, it has an anonymous type that has no resolved type
- if (resolvedType == null)
- {
- resolvedType = "<anonymous>";
- }
- }
- }
- typeValueLabel.setText(resolvedType);
- }
- }
- }
- refreshContentIcon();
- }
-
-
- public void performRequest(Request request)
- {
- if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
- request.getType() == RequestConstants.REQ_OPEN)
- {
- if (XSDGraphUtil.isEditable(getXSDElementDeclaration()))
- {
- if (request instanceof LocationRequest)
- {
- LocationRequest locationRequest = (LocationRequest)request;
- Point p = locationRequest.getLocation();
- isContentIconLabelSelected = false;
-
- if (hitTest(label, p))
- {
- performDirectEditForLabel();
- }
- else if (hitTest(typeValueLabel, p))
- {
- performDirectEditForTypeValueLabel();
- }
- }
- }
- }
- }
-
- private void performDirectEditForTypeValueLabel()
- {
- if (!getXSDElementDeclaration().isElementDeclarationReference())
- {
-// TypeReferenceDirectEditManager manager = new TypeReferenceDirectEditManager(this, getXSDElementDeclaration(), typeValueLabel);
-// simpleDirectEditPolicy.setDelegate(manager);
-// manager.show();
-//TODO remove TypeReferenceDirectEditManager since it is not used any longer
-
- Shell shell = Display.getCurrent().getActiveShell();
- IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
- IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
- IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
- IFile currentIFile = ((IFileEditorInput)editorPart.getEditorInput()).getFile();
-
- XSDSchema schema = getXSDElementDeclaration().getSchema();
-
- XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
- XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
- provider.setDialog(dialog);
-
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- if (dialog.open() == Window.OK) {
- Element element = getXSDElementDeclaration().getElement();
- XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
- helper.setType(element, "type", dialog.getSelection());
- }
-
-
- }
- // just ignore type edit for element ref's
- }
-
-
- private void performDirectEditForLabel()
- {
- if (getXSDElementDeclaration().isElementDeclarationReference())
- {
- ComboBoxCellEditorManager manager = new ComboBoxCellEditorManager(this, label)
- {
- protected List computeComboContent()
- {
- XSDSchema schema = getXSDElementDeclaration().getSchema();
- List globalElementNameList = new ArrayList();
- if (schema != null)
- {
- TypesHelper typesHelper = new TypesHelper(schema);
- globalElementNameList = typesHelper.getGlobalElements();
- }
- return globalElementNameList;
- }
-
- public void performModify(String value)
- {
- getXSDElementDeclaration().getElement().setAttribute("ref", value);
- }
- };
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
- else
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDElementDeclaration());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
- }
-
-
- protected void createEditPolicies()
- {
- super.createEditPolicies();
- installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
- }
-
-
- public void activate()
- {
- super.activate();
- if (getXSDParticle() != null)
- {
- XSDModelAdapterFactory.addModelAdapterListener(getXSDParticle(), this);
- }
- }
- /**
- * Apart from the deactivation done in super, the source
- * and target connections are deactivated, and the visual
- * part of the this is removed.
- *
- * @see #activate()
- */
- public void deactivate()
- {
- if (getXSDParticle() != null)
- {
- XSDModelAdapterFactory.removeModelAdapterListener(getXSDParticle(), this);
- }
- super.deactivate();
- }
-
- public boolean isContentIconLabelSelected()
- {
- return isContentIconLabelSelected;
- }
-
- protected void addChildVisual(EditPart childEditPart, int index)
- {
- IFigure child = ((GraphicalEditPart)childEditPart).getFigure();
- if (childEditPart instanceof SimpleTypeDefinitionEditPart)
- {
- graphNodeFigure.getIconArea().add(child, index+ 1);
- SpacingFigure spacingFigure = new SpacingFigure();
- graphNodeFigure.getIconArea().add(spacingFigure, index+1);
- }
- else
- {
- getContentPane().add(child, index);
- }
- }
-
- protected void removeChildVisual(EditPart childEditPart)
- {
- IFigure child = ((GraphicalEditPart)childEditPart).getFigure();
- if (childEditPart instanceof SimpleTypeDefinitionEditPart)
- {
- graphNodeFigure.getIconArea().remove(child);
- }
- else
- {
- super.removeChildVisual(childEditPart);
- }
- }
-
- public void doEditName()
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDElementDeclaration());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ExpandableGraphNodeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ExpandableGraphNodeEditPart.java
deleted file mode 100644
index 1ad4057..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ExpandableGraphNodeEditPart.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ActionEvent;
-import org.eclipse.draw2d.ActionListener;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.LayoutManager;
-import org.eclipse.draw2d.MouseEvent;
-import org.eclipse.draw2d.MouseListener;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-
-
-
-public abstract class ExpandableGraphNodeEditPart extends RepeatableGraphNodeEditPart implements MouseListener, ActionListener
-{
- protected boolean needToPerformDefaultExpansion = true;
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- return new ExpandableGraphNodeFigure();
- }
-
- protected void addGraphNodeFigureListeners()
- {
- getExpandableGraphNodeFigure().getInteractor().addMouseListener(this);
- }
-
- protected ExpandableGraphNodeFigure getExpandableGraphNodeFigure()
- {
- return (ExpandableGraphNodeFigure)graphNodeFigure;
- }
-
- public IFigure getContentPane()
- {
- return getExpandableGraphNodeFigure().getOuterContentArea();
- }
-
- protected boolean isDefaultExpanded()
- {
- return false;
- }
-
- protected boolean hasChildren()
- {
- return getModelChildrenHelper().size() > 0;
- }
-
- protected abstract List getModelChildrenHelper();
-
-
- protected List getModelChildren()
- {
- return getExpandableGraphNodeFigure().isExpanded() ? getModelChildrenHelper() : Collections.EMPTY_LIST;
- }
-
- protected void refreshChildren()
- {
- if (needToPerformDefaultExpansion && isDefaultExpanded())
- {
- needToPerformDefaultExpansion = false;
- performExpandOrCollapseHelper();
-
- super.refreshChildren();
-
- EditPart root = getRoot();
- if (root instanceof AbstractGraphicalEditPart)
- {
- getContentPane().setVisible(true);
-
- IFigure rootFigure = ((AbstractGraphicalEditPart)root).getFigure();
- invalidateAll(rootFigure);
- rootFigure.validate();
- rootFigure.repaint();
- }
- getExpandableGraphNodeFigure().getInteractor().repaint();
- }
- else
- {
- super.refreshChildren();
- }
- getExpandableGraphNodeFigure().getInteractor().setVisible(hasChildren());
- }
-
-
- protected void performExpandOrCollapseHelper()
- {
- boolean isButtonExpanded = !getExpandableGraphNodeFigure().isExpanded();
- getExpandableGraphNodeFigure().setExpanded(isButtonExpanded);
- }
-
- public void doPerformExpandOrCollapse()
- {
- performExpandOrCollapse();
- }
-
- public boolean isExpanded()
- {
- return getExpandableGraphNodeFigure().isExpanded();
- }
-
- protected void performExpandOrCollapse()
- {
- performExpandOrCollapseHelper();
-
- boolean isButtonExpanded = getExpandableGraphNodeFigure().isExpanded();
-
- refreshChildren();
-
- EditPart root = getRoot();
- if (root instanceof AbstractGraphicalEditPart)
- {
- getContentPane().setVisible(isButtonExpanded);
-
- IFigure rootFigure = ((AbstractGraphicalEditPart)root).getFigure();
- invalidateAll(rootFigure);
- rootFigure.validate();
- rootFigure.repaint();
- }
- getExpandableGraphNodeFigure().getInteractor().repaint();
- }
-
-
- protected void refreshOccurenceLabel(int min, int max)
- {
- super.refreshOccurenceLabel(min, max);
-
- // TODO: revisit the 'hack' to understand why we need to do this
- // in order to get the view to layout propetly
- //
- IFigure thisFigure = getFigure();
- invalidateAll(thisFigure);
- thisFigure.validate();
- thisFigure.repaint();
- }
-
- protected void invalidateAll(IFigure figure)
- {
- figure.invalidate();
- LayoutManager manager = figure.getLayoutManager();
- if (manager != null)
- {
- manager.invalidate();
- }
- for (Iterator i = figure.getChildren().iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- invalidateAll(child);
- }
- }
-
-
- // implements MouseListener
- //
- public void mouseDoubleClicked(MouseEvent me)
- {
- }
-
- public void mousePressed(MouseEvent me)
- {
- me.consume();
- needToPerformDefaultExpansion = false;
- performExpandOrCollapse();
- }
-
- public void mouseReleased(MouseEvent me)
- {
- }
-
- public void actionPerformed(ActionEvent event)
- {
- performExpandOrCollapse();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/GraphNodeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/GraphNodeEditPart.java
deleted file mode 100644
index ce6ad0a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/GraphNodeEditPart.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.DragTracker;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.ConnectedEditPartFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.GraphNodeDragTracker;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-
-
-
-public abstract class GraphNodeEditPart extends BaseEditPart
-{
- protected GraphNodeFigure graphNodeFigure;
- protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-
- protected boolean isConnectedEditPart()
- {
- return true;
- }
-
- protected IFigure createFigure()
- {
- IFigure result = graphNodeFigure = createGraphNodeFigure();
- addGraphNodeFigureListeners();
-
- if (isConnectedEditPart())
- {
- ConnectedEditPartFigure connectedEditPartFigure = createConnectedEditPartFigure();
- connectedEditPartFigure.add(graphNodeFigure);
- result = connectedEditPartFigure;
- }
- return result;
- }
-
- protected ConnectedEditPartFigure createConnectedEditPartFigure()
- {
- ConnectedEditPartFigure connectedEditPartFigure = new ConnectedEditPartFigure(this)
- {
- public IFigure getSelectionFigure()
- {
- return graphNodeFigure.getOutlinedArea();
- }
-
- public IFigure getConnectionFigure()
- {
- return graphNodeFigure.getConnectionFigure();
- }
- };
- return connectedEditPartFigure;
- }
-
- protected abstract GraphNodeFigure createGraphNodeFigure();
-
- protected void addGraphNodeFigureListeners()
- {
- }
-
- public IFigure getSelectionFigure()
- {
- return graphNodeFigure.getOutlinedArea();
- }
-
- public Rectangle getConnectionRectangle()
- {
- return graphNodeFigure.getConnectionRectangle();
- }
-
- protected void createEditPolicies()
- {
- //installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new NonResizableEditPolicy());
- selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);
- }
-
- public DragTracker getDragTracker(Request request)
- {
- return new GraphNodeDragTracker((EditPart)this);
- }
-
- protected EditPart getApplicableEditPart(EditPart editPart, Point p)
- {
- while (true)
- {
- EditPart parent = null;
- if (editPart instanceof GraphNodeEditPart)
- {
- IFigure f = ((GraphNodeEditPart)editPart).getSelectionFigure();
- if (!hitTest(f, p))
- {
- parent = editPart.getParent();
- }
- }
-
- if (parent != null)
- {
- editPart = parent;
- }
- else
- {
- break;
- }
- }
- return editPart;
- }
-
- public EditPart getTargetEditPart(Request request)
- {
- EditPart editPart = null;
- if (request.getType() == REQ_SELECTION)
- {
- if (request instanceof LocationRequest)
- {
- LocationRequest locationRequest = (LocationRequest)request;
- Point p = locationRequest.getLocation();
- editPart = getApplicableEditPart(this, p);
- }
- }
- return (editPart != null) ? editPart : super.getTargetEditPart(request);
- }
-
- public boolean hitTest(IFigure target, Point location)
- {
- Rectangle b = target.getBounds().getCopy();
- target.translateToAbsolute(b);
- return b.contains(location);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/MessageEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/MessageEditPart.java
deleted file mode 100644
index bbb7f92..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/MessageEditPart.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-
-
-
-public class MessageEditPart extends BaseEditPart
-{
- public MessageEditPart()
- {
- }
-
- protected IFigure createFigure()
- {
- Label label = new Label(XSDEditorPlugin.getXSDString("_UI_GRAPH_VIEW_NOT_AVAILABLE"));
- return label;
- }
-
- protected List getModelChildren()
- {
- return Collections.EMPTY_LIST;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupDefinitionEditPart.java
deleted file mode 100644
index af5804a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupDefinitionEditPart.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComboBoxCellEditorManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RepeatableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class ModelGroupDefinitionEditPart extends RepeatableGraphNodeEditPart
-{
- protected Label label;
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-
- public XSDModelGroupDefinition getXSDModelGroupDefinition()
- {
- return (XSDModelGroupDefinition)getModel();
- }
-
- protected boolean isConnectedEditPart()
- {
- return false;
- }
-
- public XSDParticle getXSDParticle()
- {
- Object o = getXSDModelGroupDefinition().getContainer();
- return (o instanceof XSDParticle) ? (XSDParticle)o : null;
- }
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- RepeatableGraphNodeFigure figure = new RepeatableGraphNodeFigure();
- figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
- figure.getInnerContentArea().setBorder(new MarginBorder(10, 0, 10, 0));
-
- label = new Label();
- label.setFont(mediumBoldFont);
- figure.getIconArea().add(label);
-
-
- return figure;
- }
-
- public IFigure getContentPane()
- {
- return graphNodeFigure.getInnerContentArea();
- }
-
- protected List getModelChildren()
- {
- return XSDChildUtility.getModelChildren(getModel());
- }
-
- protected void createEditPolicies()
- {
- super.createEditPolicies();
- installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
- }
-
- protected void refreshVisuals()
- {
- super.refreshVisuals();
-
- if (getXSDModelGroupDefinition().isModelGroupDefinitionReference())
- {
- label.setText(getXSDModelGroupDefinition().getResolvedModelGroupDefinition().getQName());
- label.setIcon(XSDEditorPlugin.getXSDImage("icons/GraphViewElementRef.gif"));
- label.setBorder(new MarginBorder(0, 0, 0, 4));
-
- // todo update occurence label
- //
- }
- else
- {
- label.setText(getXSDModelGroupDefinition().getName());
- label.setIcon(null);
- label.setBorder(new MarginBorder(0, 6, 0, 4));
- }
-
- if (XSDGraphUtil.isEditable(getModel()))
- {
- graphNodeFigure.getOutlinedArea().setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
- label.setForegroundColor(elementLabelColor);
- }
- else
- {
- graphNodeFigure.getOutlinedArea().setForegroundColor(readOnlyBackgroundColor);
- label.setForegroundColor(readOnlyBackgroundColor);
- }
-
- refreshOccurenceLabel(getXSDParticle());
- }
-
-
- protected void performDirectEdit()
- {
- if (getXSDModelGroupDefinition().isModelGroupDefinitionReference())
- {
- ComboBoxCellEditorManager manager = new ComboBoxCellEditorManager(this, label)
- {
- protected List computeComboContent()
- {
- XSDSchema schema = getXSDModelGroupDefinition().getSchema();
- List nameList = new ArrayList();
- if (schema != null)
- {
- TypesHelper typesHelper = new TypesHelper(schema);
- nameList = typesHelper.getModelGroups();
- }
- return nameList;
- }
-
- public void performModify(String value)
- {
- Display.getCurrent().asyncExec(new DelayedModelGroupRenameAction(getXSDModelGroupDefinition(), value));
- }
- };
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
- else
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDModelGroupDefinition());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
- }
-
-
- protected class DelayedModelGroupRenameAction implements Runnable
- {
- XSDModelGroupDefinition modelGroupDefinition;
- String value;
-
- DelayedModelGroupRenameAction(XSDModelGroupDefinition modelGroupDefinition, String value)
- {
- this.modelGroupDefinition = modelGroupDefinition;
- this.value = value;
- }
-
- public void run()
- {
- modelGroupDefinition.getElement().setAttribute("ref", value);
- }
- }
-
-
- public void performRequest(Request request)
- {
- if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
- {
- if (XSDGraphUtil.isEditable(getModel()))
- {
- performDirectEdit();
- }
- }
- }
-
- // TODO... I added this as a quick fix to makesure the title gets redrawn when the groupRef is changed
- // we should probably fix the ModelListenerUtil to fire both call both 'change' methods for the ref property
- //public void modelChildrenChanged()
- //{
- // super.modelChildrenChanged();
- // refreshVisuals();
- //}
-
- public void doEditName()
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDModelGroupDefinition());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupEditPart.java
deleted file mode 100644
index b793eba..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupEditPart.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.DragAndDropEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenteredIconFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-
-
-
-public class ModelGroupEditPart extends ExpandableGraphNodeEditPart
-{
- protected CenteredIconFigure centeredIconFigure;
-
- protected static Color editableBackgroundColor = null;
- protected static Color editableForegroundColor = null;
- protected static Color nonEditableForegroundColor = null;
-
- public XSDParticle getXSDParticle()
- {
- Object o = getXSDModelGroup().getContainer();
- return (o instanceof XSDParticle) ? (XSDParticle)o : null;
- }
-
- public XSDModelGroup getXSDModelGroup()
- {
- return (XSDModelGroup)getModel();
- }
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();
-
- centeredIconFigure = new CenteredIconFigure();
- centeredIconFigure.setPreferredSize(new Dimension(32, 20));
- //centeredIconFigure.setBackgroundColor(new Color(Display.getCurrent(), 255, 0, 0));
- figure.getIconArea().add(centeredIconFigure);
- //figure.getIconArea().setLayout(new CenterLayout());
-
- ContainerFigure outlinedArea = figure.getOutlinedArea();
- outlinedArea.setBorder(new RoundedLineBorder(1, 10));
- //outlinedArea.setPreferredSize(new Dimension(32, 20));
-
- // set layout so that children are aligned vertically with some spacing
- //
- figure.getOuterContentArea().getContainerLayout().setHorizontal(false);
- figure.getOuterContentArea().getContainerLayout().setSpacing(10);
-
- return figure;
- }
-
- protected List getModelChildrenHelper()
- {
- return XSDChildUtility.getModelChildren(getXSDModelGroup());
- }
-
- protected void refreshVisuals()
- {
- String iconName = "icons/XSDSequence.gif";
- switch (getXSDModelGroup().getCompositor().getValue())
- {
- case XSDCompositor.ALL : { iconName = "icons/XSDAll.gif"; break; }
- case XSDCompositor.CHOICE : { iconName = "icons/XSDChoice.gif"; break; }
- case XSDCompositor.SEQUENCE : { iconName = "icons/XSDSequence.gif"; break; }
- }
- centeredIconFigure.image = XSDEditorPlugin.getXSDImage(iconName);
- centeredIconFigure.repaint();
-
-
- ContainerFigure outlinedArea = graphNodeFigure.getOutlinedArea() ;
- if (XSDGraphUtil.isEditable(getXSDModelGroup()))
- {
- if (editableForegroundColor == null)
- editableForegroundColor = new Color(Display.getCurrent(), 120, 152, 184);
-
- if (editableBackgroundColor == null)
- editableBackgroundColor = new Color(Display.getCurrent(), 232, 240, 248);
-
- outlinedArea.setForegroundColor(isSelected ? ColorConstants.black : editableForegroundColor);
- outlinedArea.setBackgroundColor(editableBackgroundColor);
- }
- else
- {
- if (nonEditableForegroundColor == null)
- nonEditableForegroundColor = new Color(Display.getCurrent(), 164, 164, 164);
-
- outlinedArea.setForegroundColor(isSelected ? ColorConstants.black : nonEditableForegroundColor);
- outlinedArea.setBackgroundColor(ColorConstants.white);
- }
-
- refreshOccurenceLabel(getXSDParticle());
- }
-
- protected boolean isChildLayoutHorizontal()
- {
- return false;
- }
-
- protected boolean isDefaultExpanded()
- {
- return isPossibleCycle() ? false : true;
- }
-
- // This test ensures that we don't end up with an infinite default expansion (e.g. when a group contains a cyclic group ref)
- // TODO... we probably need some more extensible 'OO' way of computing this information
- protected boolean isPossibleCycle()
- {
- boolean result = false;
- if (getParent() instanceof ModelGroupDefinitionEditPart)
- {
- ModelGroupDefinitionEditPart group = (ModelGroupDefinitionEditPart)getParent();
- for (EditPart parent = group.getParent(); parent != null; parent = parent.getParent())
- {
- if (parent.getModel() instanceof ElementDeclarationEditPart)
- {
- break;
- }
- else
- {
- if (parent.getModel() == group.getModel())
- {
- result = true;
- break;
- }
- }
- }
- }
- return result;
- }
-
- protected void createEditPolicies()
- {
- super.createEditPolicies();
- installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new DragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
- }
-
- public void activate()
- {
- super.activate();
- if (getXSDParticle() != null)
- {
- XSDModelAdapterFactory.addModelAdapterListener(getXSDParticle(), this);
- }
- }
- /**
- * Apart from the deactivation done in super, the source
- * and target connections are deactivated, and the visual
- * part of the this is removed.
- *
- * @see #activate()
- */
- public void deactivate()
- {
- if (getXSDParticle() != null)
- {
- XSDModelAdapterFactory.removeModelAdapterListener(getXSDParticle(), this);
- }
- super.deactivate();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RepeatableGraphNodeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RepeatableGraphNodeEditPart.java
deleted file mode 100644
index 6fdf7d6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RepeatableGraphNodeEditPart.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.DragAndDropEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RepeatableGraphNodeFigure;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-
-
-
-public class RepeatableGraphNodeEditPart extends GraphNodeEditPart
-{
- protected RepeatableGraphNodeFigure getRepeatableGraphNodeFigure()
- {
- return (RepeatableGraphNodeFigure)graphNodeFigure;
- }
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- return new RepeatableGraphNodeFigure();
- }
-
- protected void refreshOccurenceLabel(XSDParticle particle)
- {
- if (particle != null)
- {
- refreshOccurenceLabel(particle.getMinOccurs(), particle.getMaxOccurs());
- }
- }
-
- protected void refreshOccurenceLabel(int min, int max)
- {
- if (min == 1 && max == 1)
- {
- getRepeatableGraphNodeFigure().getOccurenceLabel().setText("");
- }
- else
- {
- String maxString = max == -1 ? "*" : "" + max;
- getRepeatableGraphNodeFigure().getOccurenceLabel().setText(min + ".." + maxString);
- }
- getRepeatableGraphNodeFigure().getOccurenceLabel().repaint();
- }
-
- protected void createEditPolicies()
- {
- super.createEditPolicies();
-
- if (getModel() instanceof XSDElementDeclaration) {
- Object parent = ((XSDElementDeclaration) getModel()).eContainer();
-
- if (!(parent instanceof XSDSchema)) {
- installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new DragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
- }
- }
- else {
- installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new DragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootComplexTypeDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootComplexTypeDefinitionEditPart.java
deleted file mode 100644
index 853a2df..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootComplexTypeDefinitionEditPart.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDInheritanceViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-
-
-
-public class RootComplexTypeDefinitionEditPart extends ExpandableGraphNodeEditPart
-{
- public Label label;
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();
- figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
- figure.getOutlinedArea().setLayoutManager(new FillLayout());
- figure.getOutlinedArea().setFill(true);
-
- if (getViewer() instanceof XSDInheritanceViewer)
- {
- figure.getOuterContentArea().getContainerLayout().setSpacing(10);
- }
-
- label = new Label();
- label.setFont(mediumBoldFont);
- label.setBorder(new MarginBorder(5, 8, 5, 8));
- figure.getIconArea().add(label);
-
- return figure;
- }
-
-
- protected void refreshVisuals()
- {
- super.refreshVisuals();
-
- XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)getModel();
- label.setText(ctd.getName() != null ? ctd.getName(): "");
-
- if (XSDGraphUtil.isEditable(ctd))
- {
- figure.setForegroundColor(elementBorderColor);
- label.setForegroundColor(elementBorderColor);
- }
- else
- {
- figure.setForegroundColor(readOnlyBorderColor);
- label.setForegroundColor(readOnlyBorderColor);
- }
- }
-
-
- protected List getModelChildrenHelper()
- {
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)getModel();
- if (getViewer() instanceof XSDInheritanceViewer)
- {
- return XSDChildUtility.getImmediateDerivedTypes(ct);
- }
- else
- {
- return XSDChildUtility.getModelChildren(getModel());
- }
- }
-
-
- protected void createEditPolicies()
- {
- SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);
- installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
- }
-
-
- protected void performDirectEdit()
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDComplexTypeDefinition)getModel());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
-
-
- public void performRequest(Request request)
- {
- if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
- {
- if (XSDGraphUtil.isEditable(getModel()))
- {
- performDirectEdit();
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootModelGroupDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootModelGroupDefinitionEditPart.java
deleted file mode 100644
index 35f4486..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootModelGroupDefinitionEditPart.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-
-
-public class RootModelGroupDefinitionEditPart extends ExpandableGraphNodeEditPart
-{
- public Label label;
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();
- figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
- figure.getOutlinedArea().setLayoutManager(new FillLayout());
- figure.getOutlinedArea().setFill(true);
-
- label = new Label();
- label.setFont(mediumBoldFont);
- label.setBorder(new MarginBorder(5, 8, 5, 8));
- figure.getIconArea().add(label);
-
- return figure;
- }
-
- protected void refreshVisuals()
- {
- super.refreshVisuals();
-
- XSDModelGroupDefinition mgd = (XSDModelGroupDefinition)getModel();
- String name = mgd.getResolvedModelGroupDefinition().getName();
- label.setText(name);
-
- if (XSDGraphUtil.isEditable(getModel()))
- {
- figure.setForegroundColor(elementBorderColor);
- label.setForegroundColor(elementBorderColor);
- }
- else
- {
- figure.setForegroundColor(readOnlyBorderColor);
- label.setForegroundColor(readOnlyBorderColor);
- }
- }
-
- protected List getModelChildrenHelper()
- {
- return XSDChildUtility.getModelChildren(getModel());
- }
-
-
- protected void createEditPolicies()
- {
- SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);
- installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
- }
-
-
- protected void performDirectEdit()
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, ((XSDModelGroupDefinition)getModel()).getResolvedModelGroupDefinition());
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
-
-
- public void performRequest(Request request)
- {
- if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
- {
- if (XSDGraphUtil.isEditable(getModel()))
- {
- performDirectEdit();
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaDirectiveEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaDirectiveEditPart.java
deleted file mode 100644
index c0697d5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaDirectiveEditPart.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenteredIconFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDSchemaDirective;
-
-
-public class SchemaDirectiveEditPart extends BaseEditPart
-{
- protected CenteredIconFigure centeredIconFigure;
- protected Label label;
- /**
- * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
- */
- protected IFigure createFigure()
- {
-
- ContainerFigure figure = new ContainerFigure();
-
- figure.setLayoutManager(new FillLayout());
- figure.setBorder(new RoundedLineBorder(1, 8));
-
- ContainerFigure fig = new ContainerFigure();
- fig.setLayoutManager(new FillLayout());
- fig.setBorder(new MarginBorder(10, 0, 10, 0));
- figure.add(fig);
-
-
- label = new Label();
- label.setBorder(new MarginBorder(4, 2, 2, 10));
- fig.add(label);
-
- return figure;
- }
-
- public void refreshVisuals()
- {
- XSDSchemaDirective directive = (XSDSchemaDirective)getModel();
- String schemaLocation = directive.getSchemaLocation();
- if (schemaLocation == null) schemaLocation = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
- if (schemaLocation.equals("")) schemaLocation = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
- label.setText(" " + directive.getElement().getLocalName() + " " + schemaLocation);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaEditPart.java
deleted file mode 100644
index ad1f64b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaEditPart.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.gef.EditPart;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDSchema;
-
-public class SchemaEditPart extends BaseEditPart
-{
- protected ContainerFigure containerFigure;
- protected Label label;
-
- //protected ContainerFigure childExpansionContainer;
- public IFigure getContentPane()
- {
- return containerFigure;
- }
-
- protected IFigure createFigure()
- {
- ContainerFigure outer = new ContainerFigure();
- outer.setBorder(new RoundedLineBorder(1, 6));
- outer.setForegroundColor(categoryBorderColor);
- FillLayout fillLayout = new FillLayout(4);
- outer.setLayoutManager(fillLayout);
- //outer.getContainerLayout().setHorizontal(false);
-
- ContainerFigure r = new ContainerFigure();
- r.setOutline(false);
- r.setMinimumSize(new Dimension(0, 0));
- r.setFill(true);
- r.setBackgroundColor(GraphicsConstants.elementBackgroundColor);
- outer.add(r);
-
- final int theMinHeight = 200;
- FillLayout outerLayout = new FillLayout()
- {
- protected Dimension calculatePreferredSize(IFigure parent, int width, int height)
- {
- Dimension d = super.calculatePreferredSize(parent, width, height);
- d.union(new Dimension(100, theMinHeight));
- return d;
- }
- };
- outerLayout.setHorizontal(false);
- outer.setLayoutManager(outerLayout);
-
- label = new Label();
- label.setForegroundColor(ColorConstants.black);
- label.setBorder(new MarginBorder(2, 4, 2, 4));
- r.add(label);
-
- RectangleFigure line = new RectangleFigure();
- line.setPreferredSize(20, 1);
- outer.add(line);
-
- containerFigure = new ContainerFigure();
- //containerFigure.setBackgroundColor(ColorConstants.red);
- containerFigure.setBorder(new MarginBorder(4, 4, 4, 4));
- fillLayout = new FillLayout(4);
- containerFigure.setLayoutManager(fillLayout);
- //containerFigure.setLayoutManager(new FillLayout(false));
- /*
- * FlowLayout layout1 = new FlowLayout(false); layout1.setMajorSpacing(0);
- * layout1.setMinorSpacing(0); layout1.setStretchMinorAxis(true);
- * containerFigure.setLayoutManager(layout1);
- */
- outer.add(containerFigure);
- //childExpansionContainer = new ContainerFigure();
- //childExpansionContainer.getContainerLayout().setHorizontal(false);
- //childExpansionContainer.setOutlined(true);
- return outer;
- }
-
- protected List getModelChildren()
- {
- List list = new ArrayList();
- list.add(CategoryRowEditPart.DIRECTIVES_AND_NOTATIONS);
- list.add(CategoryRowEditPart.ELEMENTS_AND_TYPES);
- list.add(CategoryRowEditPart.MODEL_GROUPS_AND_ATTRIBUTES);
- return list;
- }
-
- protected EditPart createChild(Object model)
- {
- CategoryRowEditPart result = new CategoryRowEditPart();
- result.setModel(model);
- result.setParent(this);
- result.setSchema((XSDSchema)getModel());
- return result;
- }
-
-
- protected void refreshVisuals()
- {
- super.refreshVisuals();
- String targetNamespaceValue = ((XSDSchema)getModel()).getTargetNamespace();
- if (targetNamespaceValue == null || targetNamespaceValue.length() == 0)
- {
- targetNamespaceValue = XSDEditorPlugin.getXSDString("_UI_GRAPH_XSDSCHEMA_NO_NAMESPACE");
- }
- label.setText(XSDEditorPlugin.getXSDString("_UI_GRAPH_XSDSCHEMA") + " : " + targetNamespaceValue);
- }
-}
-
-class CategoryRowEditPart extends BaseEditPart
-{
- public static final int[] ELEMENTS_AND_TYPES = {Category.ELEMENTS, Category.TYPES };
- public static final int[] DIRECTIVES_AND_NOTATIONS = {Category.DIRECTIVES, Category.NOTATIONS };
- public static final int[] MODEL_GROUPS_AND_ATTRIBUTES = {Category.GROUPS, Category.ATTRIBUTES};//, Category.COMPLEX_TYPES };
-
- protected XSDSchema schema;
- protected Figure contentPane;
-
- protected IFigure createFigure()
- {
- ContainerFigure containerFigure = new ContainerFigure();
- //containerFigure.setBackgroundColor(ColorConstants.red);
- containerFigure.setFill(true);
- containerFigure.setBorder(new MarginBorder(4, 4, 4, 4));
- org.eclipse.wst.xsd.ui.internal.gef.util.figures.FillLayout fillLayout = new org.eclipse.wst.xsd.ui.internal.gef.util.figures.FillLayout(4);
- fillLayout.setHorizontal(true);
- containerFigure.setLayoutManager(fillLayout);
- //containerFigure.setLayoutManager(new FillLayout(4));
- return containerFigure;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#getContentPane()
- */
- public IFigure getContentPane()
- {
- return super.getContentPane();
- }
-
- public XSDSchema getSchema()
- {
- return schema;
- }
-
- public void setSchema(XSDSchema schema)
- {
- this.schema = schema;
- }
-
-
- protected List getModelChildren()
- {
- List categoryList = (List) XSDModelAdapterFactory.getAdapter(schema).getProperty(schema, "groups");
- return filterCategoryList(categoryList);
- }
-
- protected List filterCategoryList(List list)
- {
- List result = new ArrayList();
- int[] categoryTypes = (int[])getModel();
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- Category category = (Category)i.next();
- if (isMatching(categoryTypes, category))
- {
- result.add(category);
- }
- }
- return result;
- }
-
- private boolean isMatching(int[] categoryTypes, Category category)
- {
- boolean result = false;
- for (int i = 0; i < categoryTypes.length; i++)
- {
- if (categoryTypes[i] == category.getGroupType())
- {
- result = true;
- break;
- }
- }
- return result;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SimpleTypeDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SimpleTypeDefinitionEditPart.java
deleted file mode 100644
index df1afad..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SimpleTypeDefinitionEditPart.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.ImageFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-
-public class SimpleTypeDefinitionEditPart extends BaseEditPart
-{
- protected Label label;
- protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-
- ImageFigure figure;
- Image image;
-
- protected IFigure createFigure()
- {
- String iconName = "icons/XSDSimpleTypeForEditPart.gif";
- image = XSDEditorPlugin.getXSDImage(iconName);
-
- figure = new ImageFigure(image);
- return figure;
- }
-
- protected void refreshVisuals()
- {
- if (isSelected)
- {
- image = XSDEditorPlugin.getXSDImage("icons/XSDSimpleTypeForEditPart.gif");
- }
- else
- {
- image = XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
- }
- figure.setImage(image);
- figure.repaint();
- }
-
- protected boolean isConnectedEditPart()
- {
- return false;
- }
-
- public void deactivate()
- {
- super.deactivate();
- image = null; // where do we dispose the image?
- }
-
-
- protected void createEditPolicies()
- {
- selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SubstitutionGroupViewerRootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SubstitutionGroupViewerRootEditPart.java
deleted file mode 100644
index 3899e8e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SubstitutionGroupViewerRootEditPart.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Panel;
-import org.eclipse.gef.EditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerLayout;
-
-
-
-public class SubstitutionGroupViewerRootEditPart extends BaseEditPart
-{
- protected final static String MESSAGE_PLACE_HOLDER = "MESSAGE_PLACE_HOLDER";
- protected Object input;
-
- public void setInput(Object input)
- {
- this.input = input;
- refreshChildren();
- }
-
- protected IFigure createFigure()
- {
- Panel panel = new Panel();
- ContainerLayout layout = new ContainerLayout();
- layout.setBorder(60);
- panel.setLayoutManager(layout);
- return panel;
- }
-
-
- protected List getModelChildren()
- {
- List list = new ArrayList();
- if (input != null)
- {
- list.add(input);
- }
- else
- {
- list.add(MESSAGE_PLACE_HOLDER);
- }
- return list;
- }
-
- protected EditPart createChild(Object model)
- {
- EditPart editPart = null;
- if (model == MESSAGE_PLACE_HOLDER)
- {
- editPart = new MessageEditPart();
- editPart.setModel(model);
- }
- else
- {
- editPart = super.createChild(model);
- }
- return editPart;
- }
-
- protected void createEditPolicies()
- {
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TopLevelComponentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TopLevelComponentEditPart.java
deleted file mode 100644
index 04b686a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TopLevelComponentEditPart.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.gef.editpolicies.SelectionEditPolicy;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.gef.ui.parts.AbstractEditPartViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.gef.util.editparts.AbstractComponentViewerRootEditPart;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDComponentViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.model.ModelAdapter;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-public class TopLevelComponentEditPart extends BaseEditPart implements IFeedbackHandler
-{
- protected Label label;
- //protected Label arrowLabel;
- protected ContainerFigure labelHolder = new ContainerFigure();
- protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
- protected boolean isReadOnly;
- protected boolean isSelected;
- protected Font font;
-
- protected IFigure createFigure()
- {
- ContainerFigure typeGroup = new ContainerFigure();
- typeGroup.getContainerLayout().setHorizontal(true);
-
- //arrowLabel = new Label();
- //arrowLabel.setIcon(XSDEditorPlugin.getPlugin().getImage("icons/forward.gif"));
- //typeGroup.add(arrowLabel);
-
- labelHolder = new ContainerFigure();
- FillLayout fillLayout = new FillLayout();
- labelHolder.setLayoutManager(fillLayout);
- labelHolder.setFill(true);
- typeGroup.add(labelHolder);
-
- label = new Label();
- label.setBorder(new MarginBorder(0, 2, 2, 1));
- label.setForegroundColor(ColorConstants.black);
- labelHolder.add(label);
-
- try
- {
- // evil hack to provide underlines
- Object model = getModel();
-
- boolean isLinux = java.io.File.separator.equals("/");
- if (model instanceof XSDComplexTypeDefinition ||
- model instanceof XSDElementDeclaration ||
- model instanceof XSDModelGroupDefinition)
- {
- if (!isLinux)
- {
- FontData oldData = GraphicsConstants.medium.getFontData()[0];
- FontData fontData = new FontData(oldData.getName(), oldData.getHeight(), SWT.NONE);
-
- // TODO... clean this awful code up... we seem to be leaking here too
- // we can't call this directly since the methods are OS dependant
- // fontData.data.lfUnderline = 1
- // so instead we use reflection
- Object data = fontData.getClass().getField("data").get(fontData);
-// System.out.println("data" + data.getClass());
- data.getClass().getField("lfUnderline").setByte(data, (byte)1);
- font = new Font(Display.getCurrent(), fontData);
- label.setFont(font);
- }
- }
- }
- catch (Exception e)
- {
-
- }
-
- return typeGroup;
- }
-
- public void deactivate()
- {
- super.deactivate();
- if (font != null)
- {
- font.dispose();
- font = null;
- }
- }
-
- public void refreshVisuals()
- {
- ModelAdapter adapter = XSDModelAdapterFactory.getAdapter(getModel());
- if (adapter != null)
- {
- // isReadOnly = Boolean.TRUE.equals(adapter.getProperty(getModel(), "isReadOnly"));
- isReadOnly = !XSDGraphUtil.isEditable(getModel());
- label.setForegroundColor(computeLabelColor());
- label.setText((String)adapter.getProperty(getModel(), ModelAdapter.LABEL_PROPERTY));
- Image image = (Image)adapter.getProperty(getModel(), ModelAdapter.IMAGE_PROPERTY);
- if (image != null) label.setIcon(image);
- //arrowLabel.setVisible(Boolean.TRUE.equals(adapter.getProperty(getModel(), "drillDown")));
- }
- else
- {
- label.setText(XSDEditorPlugin.getXSDString("_UI_GRAPH_UNKNOWN_OBJECT") + getModel().getClass().getName());
- //arrowLabel.setVisible(false);
- }
-
- if (reselect)
- {
- getViewer().select(this);
- setReselect(false);
- }
- }
-
-
- public XSDNamedComponent getXSDNamedComponent()
- {
- return (XSDNamedComponent) getModel();
- }
-
- public List getModelChildren()
- {
- return Collections.EMPTY_LIST;
- }
-
- protected void createEditPolicies()
- {
- //installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new NonResizableEditPolicy());
- //selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
- //installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);
-
- SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);
-
- SelectionEditPolicy feedBackSelectionEditPolicy = new SelectionEditPolicy()
- {
- protected void hideSelection()
- {
- EditPart editPart = getHost();
- if (editPart instanceof IFeedbackHandler)
- {
- ((IFeedbackHandler)editPart).removeFeedback();
- }
- }
-
- protected void showSelection()
- {
- EditPart editPart = getHost();
- if (editPart instanceof IFeedbackHandler)
- {
- ((IFeedbackHandler)editPart).addFeedback();
- }
- }
- };
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, feedBackSelectionEditPolicy);
-
- installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
- }
-
- public Color computeLabelColor()
- {
- Color color = ColorConstants.black;
- if (isSelected)
- {
- color = ColorConstants.white;
- }
- else if (isReadOnly)
- {
- color = ColorConstants.gray;
- }
- return color;
- }
-
-
- public void addFeedback()
- {
- isSelected = true;
-
- labelHolder.setBackgroundColor(ColorConstants.black);
- label.setForegroundColor(computeLabelColor());
- labelHolder.setFill(true);
-
- if (doScroll)
- {
- CategoryEditPart categoryEP = (CategoryEditPart)getParent();
- categoryEP.scrollTo(this);
- setScroll(false);
- }
- }
-
- private boolean doScroll = false;
- public void setScroll(boolean doScroll)
- {
- this.doScroll = doScroll;
- }
-
- public void removeFeedback()
- {
- isSelected = false;
- labelHolder.setBackgroundColor(null);
- label.setForegroundColor(computeLabelColor());
- labelHolder.setFill(false);
- }
-
- public void performRequest(Request request)
- {
- if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
- request.getType() == RequestConstants.REQ_OPEN)
- {
-
- Object model = getModel();
- if (model instanceof XSDComplexTypeDefinition ||
- model instanceof XSDElementDeclaration ||
- model instanceof XSDModelGroupDefinition)
- {
- if (request instanceof LocationRequest)
- {
- LocationRequest locationRequest = (LocationRequest)request;
- Point p = locationRequest.getLocation();
-
- if (hitTest(labelHolder, p))
- {
- performDrillDownAction();
- }
- }
- }
- }
- }
-
- public boolean hitTest(IFigure target, Point location)
- {
- Rectangle b = target.getBounds().getCopy();
- target.translateToAbsolute(b);
- return b.contains(location);
- }
-
- protected void performDrillDownAction()
- {
- Runnable runnable = new Runnable()
- {
- public void run()
- {
- //((XSDComponentViewer)getViewer()).setInput((XSDConcreteComponent)getModel());
-
- EditPart editPart = ((AbstractEditPartViewer)getViewer()).getRootEditPart().getContents();
- if (editPart instanceof AbstractComponentViewerRootEditPart)
- {
- AbstractComponentViewerRootEditPart rootEditPart = (AbstractComponentViewerRootEditPart)editPart;
- rootEditPart.setInput((XSDConcreteComponent)getModel());
- }
- else if (editPart instanceof BaseEditPart)
- {
- ((XSDComponentViewer)getViewer()).setInput((XSDConcreteComponent)getModel());
- }
- }
- };
- Display.getCurrent().asyncExec(runnable);
- }
-
- public void doEditName()
- {
- removeFeedback();
- Object object = getModel();
- if (object instanceof XSDNamedComponent)
- {
- ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDNamedComponent)object);
- simpleDirectEditPolicy.setDelegate(manager);
- manager.show();
- }
- }
-
-
- static boolean reselect = false;
-
- public void setReselect(boolean state)
- {
- reselect = state;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TypeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TypeEditPart.java
deleted file mode 100644
index 37a83e1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TypeEditPart.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-public class TypeEditPart extends BaseEditPart
-{
- protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-
- protected IFigure createFigure()
- {
- ContainerFigure typeGroup = new ContainerFigure();
-// typeGroup.setBorder(new SimpleRaisedBorder(1));
-// typeGroup.setBorder(new LineBorder(1));
-// typeGroup.setBorder(new RoundedLineBorder(1,5));
-
- Label typeLabel = new Label("type");
- typeLabel.setBorder(new MarginBorder(0,2,2,1));
- typeGroup.add(typeLabel);
-
- return typeGroup;
- }
-
- protected void refreshVisuals()
- {
- super.refreshVisuals();
- }
-
- public XSDTypeDefinition getXSDTypeDefinition()
- {
- return (XSDTypeDefinition)getModel();
- }
-
-
- public List getModelChildren()
- {
- return Collections.EMPTY_LIST;
- }
-
- protected void createEditPolicies()
- {
- SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
- installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);
- }
-
-
- public void performRequest(Request request)
- {
- super.performRequest(request);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/WildcardEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/WildcardEditPart.java
deleted file mode 100644
index 53a86a1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/WildcardEditPart.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.LineBorder;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RepeatableGraphNodeFigure;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDWildcard;
-
-
-public class WildcardEditPart extends RepeatableGraphNodeEditPart
-{
- protected Label label;
-
-
- public XSDParticle getXSDParticle()
- {
- Object o = getXSDWildcard().getContainer();
- return (o instanceof XSDParticle) ? (XSDParticle)o : null;
- }
-
-
- public XSDWildcard getXSDWildcard()
- {
- return (XSDWildcard)getModel();
- }
-
-
- protected GraphNodeFigure createGraphNodeFigure()
- {
- RepeatableGraphNodeFigure figure = new RepeatableGraphNodeFigure();
- figure.setConnected(true);
- figure.getOutlinedArea().setFill(true);
-
- label = new Label();
- label.setText(XSDEditorPlugin.getXSDString("_UI_ANY_ELEMENT"));
- label.setBorder(new MarginBorder(0, 6, 0, 4));
- label.setFont(mediumBoldFont);
-
- figure.getIconArea().add(label);
-
- return figure;
- }
-
-
- protected void refreshVisuals()
- {
- ContainerFigure rectangle = graphNodeFigure.getOutlinedArea();
- if (XSDGraphUtil.isEditable(getModel()))
- {
- rectangle.setBorder(new LineBorder(2));
- rectangle.setBackgroundColor(elementBackgroundColor);
- rectangle.setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
-
- label.setBackgroundColor(elementBackgroundColor);
- label.setForegroundColor(elementLabelColor);
- }
- else
- {
- rectangle.setBorder(new LineBorder(readOnlyBorderColor, 2));
- rectangle.setBackgroundColor(readOnlyBackgroundColor);
- rectangle.setForegroundColor(isSelected ? ColorConstants.black : readOnlyBorderColor);
-
- label.setBackgroundColor(readOnlyBackgroundColor);
- label.setForegroundColor(readOnlyBorderColor);
- }
-
- refreshOccurenceLabel(getXSDParticle());
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/XSDEditPartFactory.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/XSDEditPartFactory.java
deleted file mode 100644
index 5d6ed1e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/XSDEditPartFactory.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editparts;
-
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPartFactory;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDInheritanceViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-
-
-public class XSDEditPartFactory implements EditPartFactory
-{
- protected static XSDEditPartFactory instance;
-
- public static XSDEditPartFactory getInstance()
- {
- if (instance == null)
- {
- instance = new XSDEditPartFactory();
- }
- return instance;
- }
-
- public EditPart createEditPart(EditPart parent, Object model)
- {
- EditPart editPart = null;
-
- if (model instanceof Category)
- {
- editPart = new CategoryEditPart();
- }
- else if (model instanceof XSDElementDeclaration)
- {
- editPart = new ElementDeclarationEditPart();
- }
- else if (model instanceof XSDComplexTypeDefinition)
- {
- if (parent.getViewer() instanceof XSDInheritanceViewer)
- {
- editPart = new RootComplexTypeDefinitionEditPart();
- }
- else
- {
- if (parent instanceof CategoryEditPart)
- editPart = new RootComplexTypeDefinitionEditPart();
- else
- editPart = new ComplexTypeDefinitionEditPart();
- }
- }
- else if (model instanceof XSDModelGroup)
- {
- editPart = new ModelGroupEditPart();
- }
- else if (model instanceof XSDModelGroupDefinition)
- {
- if (parent instanceof CategoryEditPart)
- editPart = new RootModelGroupDefinitionEditPart();
- else
- editPart = new ModelGroupDefinitionEditPart();
- }
- else if (model instanceof XSDSchema)
- {
- editPart = new SchemaEditPart();
- }
- else if (model instanceof XSDWildcard)
- {
- editPart = new WildcardEditPart();
- }
- else if (model instanceof XSDSimpleTypeDefinition)
- {
- editPart = new SimpleTypeDefinitionEditPart();
- }
-
- if (editPart != null)
- {
- editPart.setModel(model);
- editPart.setParent(parent);
- }
- else
- {
-// System.out.println("can't create editPart for " + model);
-// Thread.dumpStack();
- }
- return editPart;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComboBoxCellEditorManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComboBoxCellEditorManager.java
deleted file mode 100644
index a7b2329..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComboBoxCellEditorManager.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.tools.CellEditorLocator;
-import org.eclipse.gef.tools.DirectEditManager;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-
-public abstract class ComboBoxCellEditorManager extends DirectEditManager implements DirectEditPolicyDelegate
-{
- protected Label label;
-
- public ComboBoxCellEditorManager(GraphicalEditPart source, Label label)
- {
- super(source, ComboBoxCellEditor.class, new InternalCellEditorLocator(label));
- this.label = label;
- }
-
- protected void initCellEditor()
- {
- String initialLabelText = label.getText();
-
- CCombo combo = (CCombo)getCellEditor().getControl();
- combo.setFont(label.getFont());
- combo.setForeground(label.getForegroundColor());
- combo.setBackground(label.getBackgroundColor());
- /*
- combo.addKeyListener(new KeyAdapter() {
- // hook key pressed - see PR 14201
- public void keyPressed(KeyEvent keyEvent) {
- if (keyEvent.character == 'z') {
- getCellEditor().applyEditorValue();
- }
- }
- });
-*/
- ICellEditorListener cellEditorListener = new ICellEditorListener()
- {
- public void cancelEditor()
- {
-// System.out.println("cancelEditor");
- }
- public void applyEditorValue()
- {
-// System.out.println("applyEditorValue");
- }
- public void editorValueChanged(boolean old, boolean newState)
- {
-// System.out.println("editorValueChanged");
- }
- };
- getCellEditor().addListener(cellEditorListener);
-
- String[] item = combo.getItems();
- for (int i = 0; i < item.length; i++)
- {
- if (item[i].equals(initialLabelText))
- {
- getCellEditor().setValue(new Integer(i));
- break;
- }
- }
- }
-
- // hack... for some reason the ComboBoxCellEditor does't fire an editorValueChanged to set the dirty flag
- // unless we overide this method to return true, the manager is not notified of changes made in the cell editor
- protected boolean isDirty()
- {
- return true;
- }
-
- protected CellEditor createCellEditorOn(Composite composite)
- {
- boolean isLabelTextInList = false;
- List list = computeComboContent();
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- String string = (String)i.next();
- if (string.equals(label.getText()))
- {
- isLabelTextInList = true;
- break;
- }
- }
-
- if (!isLabelTextInList)
- {
- list.add(label.getText());
- }
-
- List sortedList = computeSortedList(list);
- String[] stringArray = new String[sortedList.size()];
- for (int i = 0; i < stringArray.length; i++)
- {
- stringArray[i] = (String)sortedList.get(i);
- }
- return new ComboBoxCellEditor(composite, stringArray);
- }
-
- protected List computeSortedList(List list)
- {
- return list;
- }
-
- protected abstract List computeComboContent();
-
- protected abstract void performModify(String value);
-
- public static class InternalCellEditorLocator implements CellEditorLocator
- {
- protected Label label;
-
- public InternalCellEditorLocator(Label label)
- {
- this.label = label;
- }
-
- public void relocate(CellEditor celleditor)
- {
- CCombo combo = (CCombo)celleditor.getControl();
- Point pref = combo.computeSize(-1, -1);
- Rectangle rect = label.getTextBounds().getCopy();
- label.translateToAbsolute(rect);
- combo.setBounds(rect.x-4, rect.y-1, pref.x+1, pref.y+1);
- }
- }
-
- // implements DirectEditPolicyDelegate
- //
- public void performEdit(CellEditor cellEditor)
- {
- CCombo combo = (CCombo)getCellEditor().getControl();
- int index = combo.getSelectionIndex();
- if (index != -1)
- {
- performModify(combo.getItem(index));
- }
- else
- {
- String typedValue = combo.getText();
- if (combo.indexOf(typedValue) != -1)
- {
- performModify(typedValue);
- }
- else
- {
- String closeMatch = getCloseMatch(typedValue, combo.getItems());
- if (closeMatch != null)
- {
- performModify(closeMatch);
- }
- else
- {
- Display.getCurrent().beep();
- }
- }
- }
- }
-
- protected String getCloseMatch(String value, String[] items)
- {
- int matchIndex = -1;
-
- for (int i = 0; i < items.length; i++)
- {
- String item = items[i];
- String a = getLocalName(value);
- String b = getLocalName(item);
- if (a.equalsIgnoreCase(b))
- {
- matchIndex = i;
- break;
- }
- }
- return matchIndex != -1 ? items[matchIndex] : null;
- }
-
- protected String getLocalName(String string)
- {
- int index = string.indexOf(":");
- return (index != -1) ? string.substring(index + 1) : string;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComponentNameDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComponentNameDirectEditManager.java
deleted file mode 100644
index 03c23e6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComponentNameDirectEditManager.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-
-public class ComponentNameDirectEditManager extends TextCellEditorManager
-{
- protected XSDNamedComponent component;
- protected static GraphicalEditPart mySource;
-
- public ComponentNameDirectEditManager(GraphicalEditPart source, Label label, XSDNamedComponent component)
- {
- super(source, label);
- this.component = component;
- mySource = source;
- }
-
- public void performModify(final String value)
- {
- if (value.length() > 0)
- {
- DelayedRenameRunnable runnable = new DelayedRenameRunnable(component, value);
- Display.getCurrent().asyncExec(runnable);
- }
- }
-
- protected static class DelayedRenameRunnable implements Runnable
- {
- protected XSDNamedComponent component;
- protected String name;
-
- public DelayedRenameRunnable(XSDNamedComponent component, String name)
- {
- this.component = component;
- this.name = name;
- }
-
- public void run()
- {
- //TODO cs : revisit
- /*
- XSDSwitch xsdSwitch = new XSDSwitch()
- {
- public Object caseXSDTypeDefinition(XSDTypeDefinition object)
- {
- new GlobalSimpleOrComplexTypeRenamer(object, name).visitSchema(object.getSchema());
- return null;
- }
-
- public Object caseXSDElementDeclaration(XSDElementDeclaration object)
- {
- if (object.isGlobal())
- {
- new GlobalElementRenamer(object, name).visitSchema(object.getSchema());
- }
- return null;
- }
-
- public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
- {
- new GlobalGroupRenamer(object, name).visitSchema(object.getSchema());
- return null;
- }
- };
- xsdSwitch.doSwitch(component);*/
- component.setName(name);
- if (mySource instanceof TopLevelComponentEditPart)
- {
- ((TopLevelComponentEditPart)mySource).setReselect(true);
- }
- }
- }
-
- protected void bringDown()
- {
- super.bringDown();
- if (mySource != null)
- {
- if (mySource instanceof TopLevelComponentEditPart)
- {
- ((TopLevelComponentEditPart)mySource).setReselect(true);
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropCommand.java
deleted file mode 100644
index aa7a60d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropCommand.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.FigureCanvas;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPartViewer;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
-import org.eclipse.wst.xsd.ui.internal.actions.MoveAction;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.IConnectionRenderingViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ComplexTypeDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.GraphNodeEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupEditPart;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-
-public class DragAndDropCommand extends Command //AbstractCommand
-{
- protected EditPartViewer viewer;
- protected ChangeBoundsRequest request;
- protected GraphNodeEditPart childRefEditPart;
- public GraphNodeEditPart parentEditPart;
- public Point location;
- protected MoveAction action;
- protected boolean canExecute;
-
- public DragAndDropCommand(EditPartViewer viewer, ChangeBoundsRequest request)
- {
- this.viewer = viewer;
- this.request = request;
-
- location = request.getLocation();
- EditPart target = viewer.findObjectAt(location);
- if (viewer instanceof ScrollingGraphicalViewer)
- {
- ScrollingGraphicalViewer sgv = (ScrollingGraphicalViewer)viewer;
- Point p = ((FigureCanvas)sgv.getControl()).getViewport().getViewLocation();
- location.y += p.y;
- location.x += p.x;
- }
-
- List list = request.getEditParts();
- if (list.size() > 0)
- {
- parentEditPart = getParentEditPart(target);
- if (parentEditPart != null)
- {
- for (Iterator i = parentEditPart.getChildren().iterator(); i.hasNext(); )
- {
- EditPart child = (EditPart)i.next();
- if (child instanceof GraphNodeEditPart)
- {
- GraphNodeEditPart childGraphNodeEditPart = (GraphNodeEditPart)child;
- Rectangle rectangle = childGraphNodeEditPart.getSelectionFigure().getBounds();
-
- if (location.y < rectangle.getCenter().y)
- {
- childRefEditPart = childGraphNodeEditPart;
- break;
- }
- }
- }
-
- List editPartsList = request.getEditParts();
- List concreteComponentList = new ArrayList(editPartsList.size());
- for (Iterator i = editPartsList.iterator(); i.hasNext(); )
- {
- EditPart editPart = (EditPart)i.next();
- concreteComponentList.add((XSDConcreteComponent)editPart.getModel());
- }
- XSDConcreteComponent refComponent = childRefEditPart != null ? (XSDConcreteComponent)childRefEditPart.getModel() : null;
-
- action = new MoveAction((XSDConcreteComponent)parentEditPart.getModel(), concreteComponentList, refComponent);
- canExecute = action.canMove();
- }
- }
- }
-
- protected GraphNodeEditPart getParentEditPart(EditPart target)
- {
- GraphNodeEditPart result = null;
- while (target != null)
- {
- if (target instanceof ModelGroupEditPart)
- {
- result = (GraphNodeEditPart)target;
- break;
- }
- else if (target instanceof ComplexTypeDefinitionEditPart ||
- target instanceof ModelGroupDefinitionEditPart)
- {
- List list = target.getChildren();
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- Object child = i.next();
- if (child instanceof ModelGroupEditPart)
- {
- result = (GraphNodeEditPart)child;
- break;
- }
- }
- if (result != null)
- {
- break;
- }
- }
- target = target.getParent();
- }
- return result;
- }
-
- public void execute()
- {
- if (canExecute)
- {
- action.run();
- }
- }
-
- public void redo()
- {
-
- }
-
- public void undo()
- {
- }
-
- public boolean canExecute()
- {
- return canExecute;
- }
-
- public PointList getConnectionPoints(Rectangle draggedFigureBounds)
- {
- PointList pointList = null;
- if (parentEditPart != null && childRefEditPart != null && viewer instanceof IConnectionRenderingViewer)
- {
- pointList = ((IConnectionRenderingViewer)viewer).getConnectionRenderingFigure().getConnectionPoints(parentEditPart, childRefEditPart, draggedFigureBounds);
- }
- return pointList != null ? pointList : new PointList();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropEditPolicy.java
deleted file mode 100644
index 18468c8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropEditPolicy.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import org.eclipse.gef.EditPartViewer;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-
-public class DragAndDropEditPolicy extends org.eclipse.gef.editpolicies.GraphicalEditPolicy
-{
- protected EditPartViewer viewer;
- protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-
- public DragAndDropEditPolicy(EditPartViewer viewer, SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy)
- {
- this.viewer = viewer;
- this.selectionHandlesEditPolicy = selectionHandlesEditPolicy;
- }
-
- public boolean understandsRequest(Request req)
- {
- return true;
- }
-
- static int count2 = 0;
- boolean theCommandResult = true;
-
- public org.eclipse.gef.commands.Command getCommand(Request request)
- {
- // this block is commented out to disable move for now
- DragAndDropCommand command = null;
- if (request instanceof ChangeBoundsRequest)
- {
- command = new DragAndDropCommand(viewer, (ChangeBoundsRequest)request);
- selectionHandlesEditPolicy.setDragAndDropCommand(command);
- }
- return command;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/GraphNodeDragTracker.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/GraphNodeDragTracker.java
deleted file mode 100644
index 58fbaac..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/GraphNodeDragTracker.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.tools.DragEditPartsTracker;
-
-
-public class GraphNodeDragTracker extends DragEditPartsTracker
-{
- protected EditPart editPart;
-
- public GraphNodeDragTracker(EditPart editPart)
- {
- super(editPart);
- this.editPart = editPart;
- }
-
- protected Command getCommand()
- {
- Request request = getTargetRequest();
- return editPart.getCommand(request);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SelectionHandlesEditPolicyImpl.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SelectionHandlesEditPolicyImpl.java
deleted file mode 100644
index d09b53a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SelectionHandlesEditPolicyImpl.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.FigureUtilities;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Polyline;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy;
-import org.eclipse.gef.handles.MoveHandle;
-import org.eclipse.gef.handles.MoveHandleLocator;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.BaseEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.IFeedbackHandler;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.BogusLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-
-
-
-
-
-public class SelectionHandlesEditPolicyImpl extends SelectionHandlesEditPolicy
-{
- protected IFigure feedback;
- protected Rectangle originalLocation;
- protected DragAndDropCommand dragAndDropCommand;
-
- protected List createSelectionHandles()
- {
- List list = new ArrayList();
- EditPart editPart = getHost();
-
- if (editPart instanceof GraphicalEditPart)
- {
- GraphicalEditPart graphicalEditPart = (GraphicalEditPart)editPart;
- IFigure figure = (graphicalEditPart instanceof BaseEditPart) ?
- ((BaseEditPart)graphicalEditPart).getSelectionFigure() :
- graphicalEditPart.getFigure();
-
- Cursor cursorFigure = figure.getCursor();
- MoveHandleLocator loc = new MoveHandleLocator(figure);
- MoveHandle moveHandle = new MoveHandle(graphicalEditPart, loc);
- moveHandle.setCursor(cursorFigure);
- list.add(moveHandle);
- }
-
- return list;
- }
-
-
- public boolean understandsRequest(Request request)
- {
- boolean result = false;
-
- if (REQ_MOVE.equals(request.getType()))
- {
- result = false; // return false to disable move for now
- }
- else
- {
- result = super.understandsRequest(request);
- }
- return result;
- }
-
-
- public org.eclipse.gef.commands.Command getCommand(Request request)
- {
- return null;
- }
-
- public void setDragAndDropCommand(DragAndDropCommand dragAndDropCommand)
- {
- this.dragAndDropCommand = dragAndDropCommand;
- }
-
- protected org.eclipse.gef.commands.Command getMoveCommand(ChangeBoundsRequest request)
- {
- ChangeBoundsRequest req = new ChangeBoundsRequest(REQ_MOVE_CHILDREN);
- req.setEditParts(getHost());
-
- req.setMoveDelta(request.getMoveDelta());
- req.setSizeDelta(request.getSizeDelta());
- req.setLocation(request.getLocation());
-
- return getHost().getParent().getCommand(req);
- }
-
- public void showSourceFeedback(Request request)
- {
- if (REQ_MOVE.equals(request.getType()) ||
- REQ_ADD.equals(request.getType()))
- showChangeBoundsFeedback((ChangeBoundsRequest)request);
- }
-
- protected void showChangeBoundsFeedback(ChangeBoundsRequest request)
- {
- IFigure p = getDragSourceFeedbackFigure();
- Rectangle r = originalLocation.getTranslated(request.getMoveDelta());
- Dimension resize = request.getSizeDelta();
- r.width += resize.width;
- r.height+= resize.height;
-
- ((GraphicalEditPart)getHost()).getFigure().translateToAbsolute(r);
- p.translateToRelative(r);
-
- Rectangle pBounds = r.getCopy();
-
- if (dragAndDropCommand != null && dragAndDropCommand.canExecute())
- {
- int size = request.getEditParts().size();
- if (size > 0 && request.getEditParts().get(size - 1) == getHost())
- {
- PointList pointList = dragAndDropCommand.getConnectionPoints(r);
- if (pointList != null && pointList.size() > 0)
- {
- polyLine.setPoints(pointList);
-
- Point firstPoint = pointList.getFirstPoint();
- if (firstPoint != null)
- {
- pBounds = pBounds.getUnion(new Rectangle(firstPoint.x, firstPoint.y, 1, 1));
- }
- }
- }
- }
- p.setBounds(pBounds);
- ghostShape.setBounds(r);
- p.validate();
- }
-
-
-
-
- protected IFigure getDragSourceFeedbackFigure()
- {
- EditPart editPart = getHost();
- if (feedback == null && editPart instanceof BaseEditPart)
- {
- BaseEditPart baseEditPart = (BaseEditPart)editPart;
- originalLocation = new Rectangle(baseEditPart.getSelectionFigure().getBounds());
- feedback = createDragSourceFeedbackFigure(baseEditPart.getSelectionFigure());
- }
- return feedback;
- }
-
- Polyline polyLine;
- RectangleFigure ghostShape;
-
- protected IFigure createDragSourceFeedbackFigure(IFigure draggedFigure)
- {
- // Use a ghost rectangle for feedback
- ContainerFigure panel = new ContainerFigure();
- panel.setLayoutManager(new BogusLayout());//new FreeformLayout());
-
- ghostShape = new RectangleFigure();
- FigureUtilities.makeGhostShape(ghostShape);
- ghostShape.setLineStyle(Graphics.LINE_DASHDOT);
- ghostShape.setForegroundColor(ColorConstants.white);
-
- Rectangle r = draggedFigure.getBounds();
- panel.setOpaque(false);
- panel.add(ghostShape);
-
- polyLine = new Polyline();
- //polyLine.setLineStyle(Graphics.LINE_DASHDOT);
- polyLine.setLineWidth(3);
- panel.add(polyLine);
-
- panel.setBounds(r);
- ghostShape.setBounds(r);
-
- addFeedback(panel);
-
- return panel;
- }
-
- public void deactivate()
- {
- if (feedback != null)
- {
- removeFeedback(feedback);
- feedback = null;
- }
- hideFocus();
- super.deactivate();
- }
-
- /**
- * Erase feedback indicating that the receiver object is
- * being dragged. This method is called when a drag is
- * completed or cancelled on the receiver object.
- * @param dragTracker org.eclipse.gef.tools.DragTracker The drag tracker of the tool performing the drag.
- */
- protected void eraseChangeBoundsFeedback(ChangeBoundsRequest request)
- {
- if (feedback != null)
- {
- removeFeedback(feedback);
- }
- feedback = null;
- originalLocation = null;
- }
-
- /**
- * Erase feedback indicating that the receiver object is
- * being dragged. This method is called when a drag is
- * completed or cancelled on the receiver object.
- * @param dragTracker org.eclipse.gef.tools.DragTracker The drag tracker of the tool performing the drag.
- */
- public void eraseSourceFeedback(Request request)
- {
- if (REQ_MOVE.equals(request.getType()) || REQ_ADD.equals(request.getType()))
- {
- eraseChangeBoundsFeedback((ChangeBoundsRequest)request);
- }
- }
-
- protected void hideSelection()
- {
- EditPart editPart = getHost();
- if (editPart instanceof IFeedbackHandler)
- {
- ((IFeedbackHandler)editPart).removeFeedback();
- }
- }
-
- protected void showSelection()
- {
- EditPart editPart = getHost();
- if (editPart instanceof IFeedbackHandler)
- {
- ((IFeedbackHandler)editPart).addFeedback();
- }
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TextCellEditorManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TextCellEditorManager.java
deleted file mode 100644
index 6409937..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TextCellEditorManager.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.tools.CellEditorLocator;
-import org.eclipse.gef.tools.DirectEditManager;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Text;
-
-public abstract class TextCellEditorManager extends DirectEditManager implements DirectEditPolicyDelegate
-{
- protected Label label;
-
- public TextCellEditorManager(GraphicalEditPart source, Label label)
- {
- super(source, TextCellEditor.class, new InternalCellEditorLocator(label));
- this.label = label;
- }
-
- protected void initCellEditor()
- {
- String initialLabelText = label.getText();
- getCellEditor().setValue(initialLabelText);
- Text text = (Text)getCellEditor().getControl();
- text.setFont(label.getFont());
- text.setForeground(label.getForegroundColor());
- text.setBackground(label.getBackgroundColor());
- text.selectAll();
- }
-
- protected abstract void performModify(String value);
-
- public static class InternalCellEditorLocator implements CellEditorLocator
- {
- protected Label label;
-
- public InternalCellEditorLocator(Label label)
- {
- this.label = label;
- }
-
- public void relocate(CellEditor celleditor)
- {
- Text text = (Text)celleditor.getControl();
- Point sel = text.getSelection();
- Point pref = text.computeSize(-1, -1);
- Rectangle rect = label.getTextBounds().getCopy();
- label.translateToAbsolute(rect);
- text.setBounds(rect.x-4, rect.y-1, pref.x+1, pref.y+1);
- text.setSelection(0);
- text.setSelection(sel);
- }
- }
-
- // implements DirectEditPolicyDelegate
- //
- public void performEdit(CellEditor cellEditor)
- {
- performModify((String)cellEditor.getValue());
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TypeReferenceDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TypeReferenceDirectEditManager.java
deleted file mode 100644
index c62d1e9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TypeReferenceDirectEditManager.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.editpolicies;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.EditPart;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.BaseEditPart;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-
-
-
-public class TypeReferenceDirectEditManager extends ComboBoxCellEditorManager
-{
- protected BaseEditPart editPart;
- protected XSDElementDeclaration ed;
-
-
- public TypeReferenceDirectEditManager(BaseEditPart source, XSDElementDeclaration ed, Label label)
- {
- super(source, label);
- editPart = source;
- this.ed = ed;
- }
-
- protected List computeComboContent()
- {
- XSDSchema schema = ed.getSchema();
- List typeNameList = new ArrayList();
- if (schema != null)
- {
- TypesHelper typesHelper = new TypesHelper(schema);
- typeNameList.addAll(typesHelper.getUserSimpleTypeNamesList());
- typeNameList.addAll(typesHelper.getUserComplexTypeNamesList());
- typeNameList.addAll(typesHelper.getBuiltInTypeNamesList());
- }
- return typeNameList;
- }
-
- public void performModify(String value)
- {
- // we need to perform an asyncExec here since the 'host' editpart may be removed
- // as a side effect of performing the action
- DelayedRenameRunnable runnable = new DelayedRenameRunnable(editPart, ed, value);
- Display.getCurrent().asyncExec(runnable);
- }
-
-
- protected List computeSortedList(List list)
- {
- return TypesHelper.sortList(list);
- }
-
- protected static class DelayedRenameRunnable implements Runnable
- {
- protected BaseEditPart editPart;
- protected EditPart editPartParent;
- protected XSDElementDeclaration ed;
- protected String name;
-
- public DelayedRenameRunnable(BaseEditPart editPart, XSDElementDeclaration ed, String name)
- {
- this.editPart = editPart;
- editPartParent = editPart.getParent();
- this.ed = ed;
- this.name = name;
- }
-
- public void run()
- {
- //BaseGraphicalViewer viewer = editPart.getBaseGraphicalViewer();
- //viewer.setInputEnabled(false);
- //viewer.setSelectionEnabled(false);
- if (name.equals("<anonymous>"))
- {
- try
- {
- ed.getResolvedElementDeclaration().getElement().removeAttribute("type");
- }
- catch (Exception e)
- {
- }
- }
- else
- {
- if (ed.getResolvedElementDeclaration().getAnonymousTypeDefinition() != null) // isSetAnonymousTypeDefinition())
- {
- if (!(name.equals("<anonymous>")))
- {
- ed.getResolvedElementDeclaration().getElement().setAttribute("type", name);
- XSDDOMHelper.updateElementToNotAnonymous(ed.getResolvedElementDeclaration().getElement());
-// ed.getResolvedElementDeclaration().setAnonymousTypeDefinition(null);
- return;
- }
- }
- ed.getResolvedElementDeclaration().getElement().setAttribute("type", name);
- }
- //viewer.setInputEnabled(true);
- //viewer.setSelectionEnabled(true);
- //viewer.setSelection(new StructuredSelection(editPartParent));
- }
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/BogusLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/BogusLayout.java
deleted file mode 100644
index cfa8c75..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/BogusLayout.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-
-
-/**
- * Figures using the StackLayout as their layout manager have
- * their children placed on top of one another. Order of
- * placement is determined by the order in which the children
- * were added, first child added placed on the bottom.
- */
-public class BogusLayout
- extends AbstractLayout
-{
-
-protected int spacing;
-
-public BogusLayout(){}
-
-protected Dimension calculatePreferredSize(IFigure figure, int w, int h)
-{
- Dimension d = new Dimension();
- return d;
-}
-
-/*
- * Returns the minimum size required by the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- */
-/*jvh - final
-public Dimension getMinimumSize(IFigure figure){
- return new Dimension();
-}
-
-public Dimension getPreferredSize(IFigure figure){
- return new Dimension();
-} */
-
-/*
- * Lays out the children on top of each other with
- * their sizes equal to that of the available
- * paintable area of the input container figure.
- */
-public void layout(IFigure figure){
-
-}
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenterLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenterLayout.java
deleted file mode 100644
index a0087ab..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenterLayout.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-/**
- * Figures using the StackLayout as their layout manager have
- * their children placed on top of one another. Order of
- * placement is determined by the order in which the children
- * were added, first child added placed on the bottom.
- */
-public class CenterLayout
- extends AbstractLayout
-{
-
-protected int spacing;
-
-public CenterLayout(){}
-public CenterLayout(int spacing){ this.spacing = spacing; }
-
-/**
- * Calculates and returns the preferred size of the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- *
- * @param figure Container figure for which preferred size is required.
- * @return The preferred size of the input figure.
- */
-protected Dimension calculatePreferredSize(IFigure figure, int w, int h){
- Dimension d = calculatePreferredClientAreaSize(figure);
- /*d.expand(figure.getInsets().getWidth(),
- figure.getInsets().getHeight()); */
- d.expand(w,
- h);
- d.union(getBorderPreferredSize(figure));
- return d;
-}
-
-protected Dimension calculatePreferredClientAreaSize(IFigure figure){
- Dimension d = new Dimension();
- List children = figure.getChildren();
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- Dimension childSize = child.getPreferredSize();
- d.height += childSize.height;
- d.width = Math.max(childSize.width, d.width);
- }
- int childrenSize = children.size();
- if (childrenSize > 0)
- {
- d.height += spacing * children.size() - 1;
- }
- return d;
-}
-
-/*
- * Returns the minimum size required by the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- */
-public Dimension getMinimumSize(IFigure figure, int wHint, int hHint){
- Dimension d = new Dimension();
- List children = figure.getChildren();
- IFigure child;
- for (int i=0; i < children.size(); i++){
- child = (IFigure)children.get(i);
- d.union(child.getMinimumSize());
- }
- d.expand(figure.getInsets().getWidth(),
- figure.getInsets().getHeight());
- return d;
-}
-
-public Dimension getPreferredSize(IFigure figure, int wHint, int hHint){
- return calculatePreferredSize(figure, wHint, hHint);
-}
-
-
-/*
- * Lays out the children on top of each other with
- * their sizes equal to that of the available
- * paintable area of the input container figure.
- */
-public void layout(IFigure figure){
- Rectangle r = figure.getClientArea();
- List children = figure.getChildren();
-
- Dimension preferredClientAreaSize = calculatePreferredClientAreaSize(figure);
- int x = r.x + (r.width - preferredClientAreaSize.width) / 2;
- int y = r.y + (r.height - preferredClientAreaSize.height) / 2;
-
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- Dimension childSize = child.getPreferredSize();
- child.setBounds(new Rectangle(x, y, childSize.width, childSize.height));
- y += childSize.height + spacing;
- }
-}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenteredIconFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenteredIconFigure.java
deleted file mode 100644
index 3426bb0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenteredIconFigure.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.swt.graphics.Image;
-
-
-public class CenteredIconFigure extends ContainerFigure
-{
- public Image image;
-
- public CenteredIconFigure()
- {
- super();
- setFill(true);
- }
-
- protected void fillShape(Graphics g)
- {
- super.fillShape(g);
- if (image != null)
- {
- Rectangle r = getBounds();
- Dimension imageSize = new Dimension(16, 16);
- g.drawImage(image, r.x + (r.width - imageSize.width)/2, r.y + (r.height - imageSize.height)/2);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ConnectionFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ConnectionFigure.java
deleted file mode 100644
index aaa05f1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ConnectionFigure.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.GraphNodeEditPart;
-
-
-
-public class ConnectionFigure extends RectangleFigure
-{
- protected boolean isOutlined = true;
- protected IFigure xsdFigure;
-
- public ConnectionFigure(IFigure xsdFigure)
- {
- setOpaque(false);
- this.xsdFigure = xsdFigure;
- //setFocusTraversable(false);
- //setEnabled(false);
- }
-
- protected boolean isMouseEventTarget()
- {
- return false;
- }
-
- public boolean containsPoint(int x, int y){return false;}
-
- protected void fillShape(Graphics graphics)
- {
- graphics.setForegroundColor(ColorConstants.black);
- drawLines(graphics, xsdFigure);
- }
-
- protected void drawLines(Graphics graphics, IFigure figure)
- {
- if (figure instanceof GraphNodeFigure)
- {
- GraphNodeFigure graphNodeFigure = (GraphNodeFigure)figure;
- if (graphNodeFigure.isConnected() && graphNodeFigure.isExpanded())
- {
- List childList = graphNodeFigure.getChildGraphNodeFigures();
- if (childList.size() > 0)
- {
- Rectangle r = graphNodeFigure.getConnectionRectangle();
-
- int x1 = r.x + r.width;
- int y1 = r.y + r.height/2;
-
- int startOfChildBox = ((GraphNodeFigure)childList.get(0)).getConnectionRectangle().x;
-
- int x2 = x1 + (startOfChildBox - x1) / 3;
- int y2 = y1;
-
- if (childList.size() > 1)
- {
- graphics.drawLine(x1, y1, x2, y2);
-
- int minY = Integer.MAX_VALUE;
- int maxY = -1;
-
- for (Iterator i = childList.iterator(); i.hasNext(); )
- {
- GraphNodeFigure childGraphNodeFigure = (GraphNodeFigure)i.next();
- Rectangle childConnectionRectangle = childGraphNodeFigure.getConnectionRectangle();
- int y = childConnectionRectangle.y + childConnectionRectangle.height / 2;
-
- minY = Math.min(minY, y);
- maxY = Math.max(maxY, y);
- graphics.drawLine(x2, y, childConnectionRectangle.x, y);
- }
- graphics.drawLine(x2, minY, x2, maxY);
- }
- else
- {
- graphics.drawLine(x1, y1, startOfChildBox, y2);
- }
- }
- }
- }
-
- //boolean visitChildren = true;
- List children = figure.getChildren();
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- drawLines(graphics, child);
- }
- }
-
-
- // This method supports the preview connection line function related to drag and drop
- //
- public PointList getConnectionPoints(GraphNodeEditPart parentEditPart, GraphNodeEditPart childRefEditPart, Rectangle draggedFigureBounds)
- {
- PointList pointList = new PointList();
- int[] data = new int[1];
- Point a = getConnectionPoint(parentEditPart, childRefEditPart, data);
- if (a != null)
- {
- int draggedFigureBoundsY = draggedFigureBounds.y + draggedFigureBounds.height/2;
-
- pointList.addPoint(a);
- //pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-
- if (data[0] == 0) // insert between 2 items
- {
- int x = a.x + (draggedFigureBounds.x - a.x)/2;
- pointList.addPoint(new Point(x, a.y));
- pointList.addPoint(new Point(x, draggedFigureBoundsY));
- pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
- }
- else // insert at first or last position
- {
- pointList.addPoint(new Point(a.x, draggedFigureBoundsY));
- pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
- }
- }
- return pointList;
- }
-
-
- // This method supports the preview connection line function related to drag and drop
- //
- protected Point getConnectionPoint(GraphNodeEditPart parentEditPart, GraphNodeEditPart childRefEditPart, int[] data)
- {
- Point point = null;
- List childList = parentEditPart.getChildren();
-
- //TreeNodeIconFigure icon = ((TreeNodeFigure)parent.getFigure()).treeNodeIconFigure;
-
- if (childList.size() > 0)
- {
- point = new Point();
-
- GraphNodeEditPart prev = null;
- GraphNodeEditPart next = null;
-
- for (Iterator i = childList.iterator(); i.hasNext(); )
- {
- Object o = i.next();
- if (o instanceof GraphNodeEditPart)
- {
- GraphNodeEditPart childEditPart = (GraphNodeEditPart)o;
- if (childEditPart == childRefEditPart)
- {
- next = childEditPart;
- break;
- }
- prev = childEditPart;
- }
- }
-
- if (next != null && prev != null)
- {
- int ya = prev.getConnectionRectangle().getCenter().y;
- int yb = next.getConnectionRectangle().getCenter().y;
- point.y = ya + (yb - ya)/2;
- data[0] = 0;
- }
- else if (prev != null) // add it last
- {
- point.y = prev.getConnectionRectangle().getCenter().y;
- data[0] = 1;
- }
- else if (next != null) // add it first!
- {
- point.y = next.getConnectionRectangle().getCenter().y;
- data[0] = -1;
- }
-
- if (next != null || prev != null)
- {
- GraphNodeEditPart child = prev != null ? prev : next;
- int startOfChildBox = child.getConnectionRectangle().x;
- Rectangle r = parentEditPart.getConnectionRectangle();
- int x1 = r.x + r.width;
- point.x = x1 + (startOfChildBox - x1) / 3;
- }
- }
- return point;
- }
-
-
- protected void outlineShape(Graphics graphics)
- {
- if (isOutlined)
- {
- super.outlineShape(graphics);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerFigure.java
deleted file mode 100644
index 8594005..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerFigure.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.LayoutManager;
-import org.eclipse.draw2d.RectangleFigure;
-
-public class ContainerFigure extends RectangleFigure
-{
- protected boolean isOutlined = false;
-
- public ContainerFigure()
- {
- setLayoutManager(new ContainerLayout());
- setFill(false);
- }
-
- public void doLayout()
- {
- layout();
- setValid(true);
- }
-
- public ContainerLayout getContainerLayout()
- {
- return (ContainerLayout)getLayoutManager();
- }
-
- public void setOutlined(boolean isOutlined)
- {
- this.isOutlined = isOutlined;
- }
-
- protected void outlineShape(Graphics graphics)
- {
- if (isOutlined)
- {
- super.outlineShape(graphics);
- }
- }
-
-
- public void validate()
- {
- if (isValid())
- {
- return;
- }
- super.validate();
- postLayout();
- }
-
-
- protected void postLayout()
- {
- LayoutManager layoutManager = getLayoutManager();
- if (layoutManager instanceof PostLayoutManager)
- {
- ((PostLayoutManager)layoutManager).postLayout(this);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerLayout.java
deleted file mode 100644
index a30b6b8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerLayout.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.SpacingFigure;
-
-public class ContainerLayout extends AbstractLayout implements PostLayoutManager
-{
- protected boolean isHorizontal;
- protected int spacing = 0;
- protected int border = 0;
-
- public ContainerLayout()
- {
- this(true, 0);
- }
-
- public ContainerLayout(boolean isHorizontal, int spacing)
- {
- this.isHorizontal = isHorizontal;
- this.spacing = spacing;
- }
-
- public void setHorizontal(boolean isHorizontal)
- {
- this.isHorizontal = isHorizontal;
- }
-
- public void setSpacing(int spacing)
- {
- this.spacing = spacing;
- }
-
- public void setBorder(int border)
- {
- this.border = border;
- }
-
- /**
- * Calculates and returns the preferred size of the container
- * given as input.
- *
- * @param figure Figure whose preferred size is required.
- * @return The preferred size of the passed Figure.
- */
- protected Dimension calculatePreferredSize(IFigure parent, int w, int h)
- {
- Dimension preferred = null;
-
- // Here we ensure that an unexpanded container is given a size of (0,0)
- //
- if (parent instanceof GraphNodeContainerFigure)
- {
- GraphNodeContainerFigure graphNodeContainerFigure = (GraphNodeContainerFigure)parent;
- if (!graphNodeContainerFigure.isExpanded())
- {
- preferred = new Dimension();
- }
- }
-
- if (preferred == null)
- {
- preferred = new Dimension();
- List children = parent.getChildren();
-
- for (int i=0; i < children.size(); i++)
- {
- IFigure child = (IFigure)children.get(i);
-
- Dimension childSize = child.getPreferredSize();
- /*
- if (child instanceof Interactor)
- {
- childSize.width = 9;
- childSize.height = 9;
- }*/
-
- if (isHorizontal)
- {
- preferred.width += childSize.width;
- preferred.height = Math.max(preferred.height, childSize.height);
- }
- else
- {
- preferred.height += childSize.height;
- preferred.width = Math.max(preferred.width, childSize.width);
- }
- }
-
- int childrenSize = children.size();
- if (childrenSize > 1)
- {
- if (isHorizontal)
- {
- preferred.width += spacing * (childrenSize - 1);
- }
- else
- {
- preferred.height += spacing * (childrenSize - 1);
- }
- }
-
- preferred.width += border * 2;
- preferred.height += border * 2;
- preferred.width += parent.getInsets().getWidth();
- preferred.height += parent.getInsets().getHeight();
- }
- return preferred;
- }
-
-
- protected int alignFigure(IFigure parent, IFigure child)
- {
- int y = -1;
- return y;
- }
-
- public void layout(IFigure parent)
- {
- List children = parent.getChildren();
- Dimension preferred = new Dimension();
-
- int rx = 0;
- for (int i=0; i < children.size(); i++)
- {
- IFigure child = (IFigure)children.get(i);
- Dimension childSize = child.getPreferredSize();
- if (isHorizontal)
- {
- preferred.height = Math.max(preferred.height, childSize.height);
- rx += childSize.width;
- }
- else
- {
- preferred.width = Math.max(preferred.width, childSize.width);
- }
- }
-
- if (isHorizontal)
- {
- preferred.height += border*2;
- preferred.width += border;
- }
- else
- {
- preferred.width += border*2;
- preferred.height += border;
- }
-
- int childrenSize = children.size();
- for (int i=0; i < childrenSize; i++)
- {
- IFigure child = (IFigure)children.get(i);
- Dimension childSize = child.getPreferredSize();
-
- if (isHorizontal)
- {
- int y = alignFigure(parent, child);
-
-
- if (y == -1)
- {
- y = (preferred.height - childSize.height) / 2;
- }
-
- Rectangle rectangle = new Rectangle(preferred.width, y, childSize.width, childSize.height);
- rectangle.translate(parent.getClientArea().getLocation());
-
- child.setBounds(rectangle);
- preferred.width += childSize.width;
- preferred.width += spacing;
-
- if (child instanceof SpacingFigure)
- {
- int availableHorizontalSpace = parent.getClientArea().width - rx;
- preferred.width += availableHorizontalSpace;
- }
- }
- else
- {
- Rectangle rectangle = new Rectangle(0, preferred.height, childSize.width, childSize.height);
- rectangle.translate(parent.getClientArea().getLocation());
- child.setBounds(rectangle);
- preferred.height += childSize.height;
- preferred.height += spacing;
- }
- }
- }
-
- public void postLayout(IFigure figure)
- {
- // This method attempts to align a 'FloatableFigure' (e.g. an Element node)
- // with any content that it is connected to. This way a chain of connected figures
- // will be vertically aligned (e.g. element -> modelgroup -> element). Any visible clipping of the
- // figures in the graph is probably a result of a bug in this code that results in a 'FloatableFigure' being
- // repositioned beyond the bounds of its parent.
- //
- for (Iterator i = figure.getChildren().iterator(); i.hasNext();)
- {
- IFigure child = (IFigure)i.next();
- if (child instanceof FloatableFigure)
- {
- FloatableFigure floatableFigure = (FloatableFigure)child;
- GraphNodeFigure graphNodeFigure = floatableFigure.getGraphNodeFigure();
- if (graphNodeFigure.isExpanded() && graphNodeFigure.getChildGraphNodeFigures().size() == 1)
- {
- GraphNodeFigure alignedChild = (GraphNodeFigure)graphNodeFigure.getChildGraphNodeFigures().get(0);
- Rectangle alignedChildBounds = alignedChild.getConnectionRectangle();
- Rectangle childBounds = child.getBounds();
-
- int l = childBounds.y + childBounds.height/2;
- int r = alignedChildBounds.y + alignedChildBounds.height/2;
- int delta = r - l;
-
- fixUp(child, delta);
- }
- }
- }
- }
-
- protected void fixUp(IFigure figure, int delta)
- {
- Rectangle bounds = figure.getBounds();
- bounds.y += delta;
- figure.setBounds(bounds);
-
- for (Iterator i = figure.getChildren().iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- fixUp(child, delta);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ExpandableGraphNodeFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ExpandableGraphNodeFigure.java
deleted file mode 100644
index e339103..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ExpandableGraphNodeFigure.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-// ------------------------------------------------------------
-// | ExpandableGraphNodeFigure |
-// | |
-// | ---------------------------------- --------------- |
-// | | verticalGroup | | | |
-// | | | | | |
-// | | ----------------------------- | | | |
-// | | | horizontalGroup | | | | |
-// | | | | | | | |
-// | | | --------------------- | | | | |
-// | | | | outlinedArea | | | | | |
-// | | | | ----------------- | | | | outer | |
-// | | | | | iconArea | | | | | Content | |
-// | | | | ----------------- | [+] | | | Area | |
-// | | | | ----------------- | | | | | |
-// | | | | | innerContent | | | | | | |
-// | | | | ----------------- | | | | | |
-// | | | --------------------- | | | | |
-// | | ----------------------------- | | | |
-// | | | | | |
-// | | ------------------ | | | |
-// | | | occurenceArea | | | | |
-// | | ------------------ | | | |
-// | ---------------------------------- --------------- |
-// ------------------------------------------------------------
-
-public class ExpandableGraphNodeFigure extends RepeatableGraphNodeFigure
-{
- protected ContainerFigure horizontalGroup;
- protected Interactor interactor;
- protected ContainerFigure outerContentArea;
-
- public boolean isExpanded()
- {
- return interactor.isExpanded();
- }
-
- public void setExpanded(boolean isExpanded)
- {
- interactor.setExpanded(isExpanded);
- }
-
- public ExpandableGraphNodeFigure()
- {
- super();
- isConnected = true;
- }
-
- protected void createFigure()
- {
- createPreceedingSpace(this);
- createVerticalGroup(this);
- createHorizontalGroup(verticalGroup);
- createOutlinedArea(horizontalGroup);
- createInteractor(horizontalGroup);
- createOccurenceArea(verticalGroup);
- createOuterContentArea(this);
- }
-
- protected void createVerticalGroup(IFigure parent)
- {
- verticalGroup = new FloatableFigure(this);
- verticalGroup.getContainerLayout().setHorizontal(false);
- parent.add(verticalGroup);
- }
-
- protected void createHorizontalGroup(IFigure parent)
- {
- horizontalGroup = new ContainerFigure();
- parent.add(horizontalGroup);
- }
-
- protected void createInteractor(IFigure parent)
- {
- interactor = new Interactor();
- interactor.setForegroundColor(ColorConstants.black);
- interactor.setBackgroundColor(ColorConstants.white);
- parent.add(interactor);
- }
-
- protected void createOuterContentArea(IFigure parent)
- {
- // create a small space between the interactor and the contentArea
- //
- RectangleFigure space = new RectangleFigure();
- space.setVisible(false);
- space.setPreferredSize(new Dimension(5, 10));
- parent.add(space);
-
- outerContentArea = new GraphNodeContainerFigure(this);
- outerContentArea.getContainerLayout().setHorizontal(false);
- parent.add(outerContentArea);
- }
-
- public Interactor getInteractor()
- {
- return interactor;
- }
-
- public ContainerFigure getOuterContentArea()
- {
- return outerContentArea;
- }
-
- public IFigure getConnectionFigure()
- {
- return horizontalGroup;
- }
-
- public Rectangle getConnectionRectangle()
- {
- return horizontalGroup.getBounds();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FillLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FillLayout.java
deleted file mode 100644
index 221c147..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FillLayout.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-/**
- * Figures using the StackLayout as their layout manager have
- * their children placed on top of one another. Order of
- * placement is determined by the order in which the children
- * were added, first child added placed on the bottom.
- */
-public class FillLayout extends AbstractLayout
-{
-
-protected boolean isHorizontal = false;
-protected int spacing = 0;
-public Dimension min;
-
-public FillLayout(){}
-public FillLayout(boolean dummy){}
-
-public FillLayout(int spacing)
-{
- this.spacing = spacing;
-}
-
-public void setHorizontal(boolean isHorizontal)
-{
- this.isHorizontal = isHorizontal;
-}
-
-/**
- * Calculates and returns the preferred size of the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- *
- * @param figure Container figure for which preferred size is required.
- * @return The preferred size of the input figure.
- */
-protected Dimension calculatePreferredSize(IFigure figure, int w, int h)
-{
- Dimension d = calculatePreferredClientAreaSize(figure);
- d.expand(figure.getInsets().getWidth(),
- figure.getInsets().getHeight());
- //d.union(getBorderPreferredSize(figure));
- return d;
-}
-
-protected Dimension calculatePreferredClientAreaSize(IFigure figure)
-{
- Dimension d = new Dimension();
- List children = figure.getChildren();
-
-
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- Dimension childSize = child.getPreferredSize();
-
- if (isHorizontal)
- {
- d.width += childSize.width;
- d.height = Math.max(childSize.height, d.height);
- }
- else
- {
- d.height += childSize.height;
- d.width = Math.max(childSize.width, d.width);
- }
- }
-
-
- int childrenSize = children.size();
- if (childrenSize > 0)
- {
- if (isHorizontal)
- d.width += spacing * (childrenSize - 1);
- else
- d.height += spacing * (childrenSize - 1);
- }
-
- if (min != null)
- {
- d.width = Math.max(d.width, min.width);
- d.height = Math.max(d.height, min.height);
- }
- return d;
-}
-
-/*
- * Returns the minimum size required by the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- */
-public Dimension getMinimumSize(IFigure figure, int w, int h)
-{
- Dimension d = new Dimension();
- List children = figure.getChildren();
- IFigure child;
- for (int i=0; i < children.size(); i++){
- child = (IFigure)children.get(i);
- d.union(child.getMinimumSize());
- }
- d.expand(figure.getInsets().getWidth(),
- figure.getInsets().getHeight());
- return d;
-}
-
-public Dimension getPreferredSize(IFigure figure, int w, int h)
-{
- return calculatePreferredSize(figure, w, h);
-}
-
-/*
- * Lays out the children on top of each other with
- * their sizes equal to that of the available
- * paintable area of the input container figure.
- */
-public void layout(IFigure figure){
-
- Dimension preferredSize = calculatePreferredClientAreaSize(figure);
- Rectangle r = figure.getClientArea().getCopy();
-
- List children = figure.getChildren();
-
- for (Iterator i = children.iterator(); i.hasNext(); )
- {
- IFigure child = (IFigure)i.next();
- Dimension childSize = child.getPreferredSize();
-
- if (isHorizontal)
- {
- child.setBounds(new Rectangle(r.x, r.y, childSize.width, Math.max(preferredSize.height, r.height)));
- r.x += childSize.width + spacing;
- }
- else
- {
- child.setBounds(new Rectangle(r.x, r.y, Math.max(preferredSize.width, r.width), childSize.height));
- r.y += childSize.height + spacing;
- }
- }
-}
-}
-
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FloatableFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FloatableFigure.java
deleted file mode 100644
index c224145..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FloatableFigure.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-
-
-public class FloatableFigure extends ContainerFigure
-{
- public GraphNodeFigure graphNodeFigure;
-
- public FloatableFigure(GraphNodeFigure graphNodeFigure)
- {
- super();
- this.graphNodeFigure = graphNodeFigure;
- }
-
- public GraphNodeFigure getGraphNodeFigure()
- {
- return graphNodeFigure;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeContainerFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeContainerFigure.java
deleted file mode 100644
index c06a655..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeContainerFigure.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-
-
-public class GraphNodeContainerFigure extends ContainerFigure
-{
- public ExpandableGraphNodeFigure expandableGraphNodeFigure;
-
- public GraphNodeContainerFigure(ExpandableGraphNodeFigure expandableGraphNodeFigure)
- {
- super();
- this.expandableGraphNodeFigure = expandableGraphNodeFigure;
- }
-
- public boolean isExpanded()
- {
- return expandableGraphNodeFigure.isExpanded();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeFigure.java
deleted file mode 100644
index 3d9706d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeFigure.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-// ------------------------------
-// | GraphNodeFigure |
-// | |
-// | ------------------------- |
-// | | vertical group | |
-// | | --------------------- | |
-// | | | outlined area | | |
-// | | | ----------------- | | |
-// | | | | icon area | | | |
-// | | | ----------------- | | |
-// | | | ----------------- | | |
-// | | | | inner content | | | |
-// | | | ----------------- | | |
-// | | --------------------- | |
-// | ------------------------- |
-// ------------------------------
-
-public class GraphNodeFigure extends ContainerFigure
-{
- protected ContainerFigure verticalGroup;
- protected ContainerFigure outlinedArea;
- protected ContainerFigure iconArea;
- protected ContainerFigure innerContentArea;
-
- protected boolean isConnected;
- protected boolean isIsolated;
-
- protected List childGraphNodeFigures = new ArrayList();
- protected GraphNodeFigure parentGraphNodeFigure;
-
- public GraphNodeFigure()
- {
- isIsolated = false;
- createFigure();
- }
-
- public boolean isExpanded()
- {
- return true;
- }
-
- public boolean isConnected()
- {
- return isConnected;
- }
-
- public void setConnected(boolean isConnected)
- {
- this.isConnected = isConnected;
- }
-
- public void setIsIsolated(boolean isIsolated)
- {
- this.isIsolated = isIsolated;
- }
-
- public boolean getIsIsolated()
- {
- return isIsolated;
- }
-
- protected void createFigure()
- {
- createVerticalGroup(this);
- createOutlinedArea(verticalGroup);
- }
-
- protected void createVerticalGroup(IFigure parent)
- {
- verticalGroup = new ContainerFigure();
- verticalGroup.getContainerLayout().setHorizontal(false);
- parent.add(verticalGroup);
- }
-
- protected void createOutlinedArea(IFigure parent)
- {
- outlinedArea = new ContainerFigure();
- outlinedArea.getContainerLayout().setHorizontal(false);
- parent.add(outlinedArea);
-
- iconArea = new ContainerFigure();
- outlinedArea.add(iconArea);
-
- innerContentArea = new ContainerFigure();
- innerContentArea.getContainerLayout().setHorizontal(false);
- outlinedArea.add(innerContentArea);
- }
-
- public ContainerFigure getIconArea()
- {
- return iconArea;
- }
-
- public ContainerFigure getOutlinedArea()
- {
- return outlinedArea;
- }
-
- public ContainerFigure getInnerContentArea()
- {
- return innerContentArea;
- }
-
- public IFigure getConnectionFigure()
- {
- return outlinedArea;
- }
-
- public Rectangle getConnectionRectangle()
- {
- return outlinedArea.getBounds();
- }
-
- public List getChildGraphNodeFigures()
- {
- return childGraphNodeFigures;
- }
-
- public void addNotify()
- {
- super.addNotify();
- if (isConnected())
- {
- parentGraphNodeFigure = computeParentGraphNodeFigure(this);
- if (parentGraphNodeFigure != null)
- {
- parentGraphNodeFigure.getChildGraphNodeFigures().add(this);
- }
- }
- }
-
- public void removeNotify()
- {
- super.removeNotify();
- if (parentGraphNodeFigure != null)
- {
- parentGraphNodeFigure.getChildGraphNodeFigures().remove(this);
- }
- }
-
- public GraphNodeFigure getParentGraphNodeFigure()
- {
- return parentGraphNodeFigure;
- }
-
- public GraphNodeFigure computeParentGraphNodeFigure(IFigure figure)
- {
- GraphNodeFigure result = null;
- IFigure parent = figure != null ? figure.getParent() : null;
- while (parent != null)
- {
- if (parent instanceof GraphNodeFigure)
- {
- GraphNodeFigure parentGraphNodeFigure = (GraphNodeFigure)parent;
- if (parentGraphNodeFigure.isConnected())
- {
- result = (GraphNodeFigure)parent;
- break;
- }
- }
- parent = parent.getParent();
- }
- return result;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/Interactor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/Interactor.java
deleted file mode 100644
index 7a64b8f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/Interactor.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-/**
- * Interactor the +/- control commonly found in trees
- */
-public class Interactor extends RectangleFigure
-{
- protected boolean isExpanded;
-
- public Interactor()
- {
- super();
- setPreferredSize(new Dimension(9, 9));
- }
-
- public void setExpanded(boolean isExpanded)
- {
- this.isExpanded = isExpanded;
- }
-
- public boolean isExpanded()
- {
- return isExpanded;
- }
-
- protected void fillShape(Graphics g)
- {
- super.fillShape(g);
- Rectangle r = getBounds();
- int mx = r.x + r.width / 2;
- int my = r.y + r.height / 2;
- int s = 2;
- g.drawLine(r.x + s, my, r.x + r.width - s - 1, my);
- if (!isExpanded)
- {
- g.drawLine(mx, r.y + s, mx, r.y + r.height - s -1);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/LabelFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/LabelFigure.java
deleted file mode 100644
index 04c82b8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/LabelFigure.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.FigureUtilities;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-public class LabelFigure extends Figure
-{
- protected String text = "";
- protected boolean isShowEmptyLabel = true;
- protected int left = 4;
- protected int right = 4;
- protected int textHeight;
- protected int textWidth;
-
- public LabelFigure()
- {
- setPreferredSize(new Dimension());
- }
-
- protected void setLeft(int left)
- {
- this.left = left;
- }
-
- protected void setRight(int right)
- {
- this.right = right;
- }
-
- public void setShowEmptyLabel(boolean isShowEmptyLabel)
- {
- this.isShowEmptyLabel = isShowEmptyLabel;
- }
-
-
- public void setText(String s)
- {
- if (s == null)
- s = "";
-
- if (!text.equals(s))
- {
- text = s;
- if (text.length() > 0 || isShowEmptyLabel)
- {
- textHeight = FigureUtilities.getFontMetrics(getFont()).getHeight();
- textWidth = FigureUtilities.getTextWidth(text, getFont());
- textWidth = Math.max(textWidth, FigureUtilities.getTextWidth("abcdefg", getFont()));
- setPreferredSize(new Dimension(textWidth + left + right, textHeight));
- }
- else
- {
- setPreferredSize(new Dimension());
- }
- }
- //revalidate();
- //repaint();
- }
-
-
-
- protected void paintFigure(Graphics graphics)
- //protected void fillShape(Graphics graphics)
- {
- super.paintFigure(graphics);
- //super.fillShape(graphics);
- if (text.length() > 0)
- {
- Rectangle r = getBounds();
- graphics.setForegroundColor(getForegroundColor());
- graphics.drawString(text, left + r.x, r.y);// + (r.width - textWidth)/2, r.y + (r.height - textHeight)/2);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RepeatableGraphNodeFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RepeatableGraphNodeFigure.java
deleted file mode 100644
index fd8d249..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RepeatableGraphNodeFigure.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.figures;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-
-
-
-
-// ------------------------------
-// | RepeatableGraphNodeFigure |
-// | |
-// | ------------------------- |
-// | | vertical group | |
-// | | --------------------- | |
-// | | | outlined area | | |
-// | | | ----------------- | | |
-// | | | | icon area | | | |
-// | | | ----------------- | | |
-// | | | ----------------- | | |
-// | | | | inner content | | | |
-// | | | ----------------- | | |
-// | | --------------------- | |
-// | | | |
-// | | ------------------ | |
-// | | | occurence area | | |
-// | | ------------------ | |
-// | ------------------------- |
-// ------------------------------
-
-public class RepeatableGraphNodeFigure extends GraphNodeFigure
-{
- protected ContainerFigure occurenceArea;
- protected LabelFigure occurenceLabel;
-
- public RepeatableGraphNodeFigure()
- {
- super();
- }
-
- protected void createFigure()
- {
- createPreceedingSpace(this);
- createVerticalGroup(this);
- createOutlinedArea(verticalGroup);
- createOccurenceArea(verticalGroup);
- }
-
- protected void createOccurenceArea(IFigure parent)
- {
- occurenceArea = new ContainerFigure();
- occurenceLabel = new LabelFigure();
- occurenceLabel.setForegroundColor(ColorConstants.black);
- occurenceLabel.setShowEmptyLabel(false);
- occurenceLabel.setFont(GraphicsConstants.medium);
- occurenceArea.add(occurenceLabel);
- parent.add(occurenceArea);
- }
-
- protected void createPreceedingSpace(IFigure parent)
- {
- // create a small space
- RectangleFigure space = new RectangleFigure();
- space.setVisible(false);
- space.setPreferredSize(new Dimension(10, 10));
- parent.add(space);
- }
-
- public LabelFigure getOccurenceLabel()
- {
- return occurenceLabel;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/Category.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/Category.java
deleted file mode 100644
index 31aa07b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/Category.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.model;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-public class Category implements ModelAdapter
-{
- public final static int ATTRIBUTES = 1;
- public final static int ELEMENTS = 2;
- public final static int TYPES = 3;
- public final static int GROUPS = 5;
- public final static int DIRECTIVES = 6;
- public final static int NOTATIONS = 7;
- public final static int ATTRIBUTE_GROUPS = 8;
- public final static int IDENTITY_CONSTRAINTS = 9;
- public final static int ANNOTATIONS = 10;
-
-
- protected XSDSchema schema;
- protected int groupType;
-
- //public void modelNameChanged();
- public Category(XSDSchema schema, int groupType)
- {
- this.schema = schema;
- this.groupType = groupType;
- }
-
- public int getGroupType()
- {
- return groupType;
- }
-
- public XSDSchema getXSDSchema()
- {
- return schema;
- }
-
- public String getName()
- {
- String name = "";
- switch (groupType)
- {
- case ATTRIBUTES : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_ATTRIBUTES"); break; }
- case NOTATIONS : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_NOTATIONS"); break; }
- case ELEMENTS : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_ELEMENTS"); break; }
- case TYPES : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_TYPES"); break; }
- case GROUPS : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_GROUPS"); break; }
- case DIRECTIVES : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_DIRECTIVES"); break; }
- }
- return name;
- }
-
- public List getChildren()
- {
- List list = Collections.EMPTY_LIST;
- switch (groupType)
- {
- case ATTRIBUTES : { list = getAttributeList(); break; }
- case NOTATIONS : { list = getNotations(); break; }
- case ELEMENTS : { list = getGlobalElements(); break; }
- case TYPES : { list = getTypes(); break; }
- case GROUPS : { list = getGroups(); break; }
- case DIRECTIVES : { list = getDirectives(); break; }
- }
- return list;
- }
-
- private boolean isSameNamespace(String ns1, String ns2)
- {
- if (ns1 == null) ns1 = "";
- if (ns2 == null) ns2 = "";
-
- if (ns1.equals(ns2))
- {
- return true;
- }
- return false;
- }
-
- protected List getGlobalElements()
- {
- List elements = schema.getElementDeclarations();
- List list = new ArrayList();
- for (Iterator i = elements.iterator(); i.hasNext(); )
- {
- XSDElementDeclaration elem = (XSDElementDeclaration)i.next();
- if (isSameNamespace(elem.getTargetNamespace(),schema.getTargetNamespace()))
- {
- list.add(elem);
- }
- }
- return list;
- }
-
- protected List getTypes()
- {
- List allTypes = schema.getTypeDefinitions();
- List list = new ArrayList();
- for (Iterator i = allTypes.iterator(); i.hasNext(); )
- {
- XSDTypeDefinition td = (XSDTypeDefinition)i.next();
- if (td instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)td;
- if (isSameNamespace(ct.getTargetNamespace(),schema.getTargetNamespace()))
- {
- list.add(ct);
- }
- }
- }
-
-// List simpleTypes = schema.getTypeDefinitions();
- for (Iterator i = allTypes.iterator(); i.hasNext(); )
- {
- XSDTypeDefinition td = (XSDTypeDefinition)i.next();
- if (td instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)td;
- if (isSameNamespace(st.getTargetNamespace(),schema.getTargetNamespace()))
- {
- list.add(st);
- }
- }
- }
- return list;
- }
-
- protected List getGroups()
- {
- List groups = schema.getModelGroupDefinitions();
- List list = new ArrayList();
- for (Iterator i = groups.iterator(); i.hasNext(); )
- {
- XSDModelGroupDefinition group = (XSDModelGroupDefinition)i.next();
- if (isSameNamespace(group.getTargetNamespace(),schema.getTargetNamespace()))
- {
- list.add(group);
- }
- }
- return list;
- }
-
- protected List getDirectives()
- {
- List list = new ArrayList();
- for (Iterator i = schema.getContents().iterator(); i.hasNext(); )
- {
- Object o = i.next();
- if (o instanceof XSDSchemaDirective)
- {
- list.add(o);
- }
- }
- return list;
- }
-
- protected List getAttributeList()
- {
- List attributesList = new ArrayList();
- for (Iterator iter = schema.getAttributeDeclarations().iterator(); iter.hasNext(); )
- {
- Object o = iter.next();
- if (o instanceof XSDAttributeDeclaration)
- {
- XSDAttributeDeclaration attr = (XSDAttributeDeclaration)o;
- if (attr != null)
- {
- if (attr.getTargetNamespace() != null)
- {
- if (!(attr.getTargetNamespace().equals("http://www.w3.org/2001/XMLSchema-instance")))
- {
- if (isSameNamespace(attr.getTargetNamespace(), schema.getTargetNamespace()))
- {
- attributesList.add(attr);
- }
- }
- }
- else
- {
- if (isSameNamespace(attr.getTargetNamespace(),schema.getTargetNamespace()))
- {
- attributesList.add(attr);
- }
- }
- }
- }
- }
- return attributesList;
- }
-
- protected List getNotations()
- {
- List notations = schema.getNotationDeclarations();
- List list = new ArrayList();
- for (Iterator i = notations.iterator(); i.hasNext(); )
- {
- XSDNotationDeclaration notation = (XSDNotationDeclaration)i.next();
- if (isSameNamespace(notation.getTargetNamespace(),schema.getTargetNamespace()))
- {
- list.add(notation);
- }
- }
- return list;
- }
-
- //
- protected List listenerList = new ArrayList();
-
- public void addListener(ModelAdapterListener l)
- {
- listenerList.add(l);
- }
-
- public void removeListener(ModelAdapterListener l)
- {
- listenerList.remove(l);
- }
-
- public Object getProperty(Object modelObject, String propertyName)
- {
- return null;
- }
-
- public void firePropertyChanged(Object modelObject, String propertyName)
- {
- List newList = new ArrayList();
- newList.addAll(listenerList);
- for (Iterator i = newList.iterator(); i.hasNext(); )
- {
- ModelAdapterListener l = (ModelAdapterListener)i.next();
- try
- {
- l.propertyChanged(modelObject, propertyName);
- }
- catch (Exception e)
- {
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapter.java
deleted file mode 100644
index 3066987..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.model;
-
-
-
-public interface ModelAdapter
-{
- public static final String CHILDREN_PROPERTY = "CHILDREN_PROPERTY";
- public static final String LABEL_PROPERTY = "LABEL_PROPERTY";
- public static final String IMAGE_PROPERTY = "IMAGE_PROPERTY";
- public static final String DETAIL_PROPERTY = "DETAIL_PROPERTY";
-
- public void addListener(ModelAdapterListener l);
- public void removeListener(ModelAdapterListener l);
- public Object getProperty(Object modelObject, String propertyName);
- public void firePropertyChanged(Object modelObject, String propertyName);
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/XSDModelAdapterFactory.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/XSDModelAdapterFactory.java
deleted file mode 100644
index 98f051a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/XSDModelAdapterFactory.java
+++ /dev/null
@@ -1,559 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.graph.model;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAbstractAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDSwitch;
-
-
-
-
-public class XSDModelAdapterFactory
-{
- protected static XSDModelAdapterFactory instance;
- protected static XSDAdapterFactoryImpl xsdAdapterFactoryImpl = new XSDAdapterFactoryImpl();
-
- public static XSDModelAdapterFactory getInstance()
- {
- if (instance == null)
- {
- instance = new XSDModelAdapterFactory();
- }
- return instance;
- }
-
-
- public static ModelAdapter getAdapter(Object o)
- {
- ModelAdapter result = null;
- if (o instanceof Notifier)
- {
- Notifier target = (Notifier)o;
- Adapter adapter = xsdAdapterFactoryImpl.adapt(target);
- if (adapter instanceof XSDObjectAdapter)
- {
- result = (XSDObjectAdapter)adapter;
- }
- }
- else if (o instanceof ModelAdapter)
- {
- result = (ModelAdapter)o;
- }
- return result;
- }
-
-
- public static XSDObjectAdapter getExisitingAdapter(Object xsdObject)
- {
- XSDObjectAdapter result = null;
- if (xsdObject instanceof Notifier)
- {
- Notifier target = (Notifier)xsdObject;
- Adapter adapter = EcoreUtil.getExistingAdapter(target,xsdAdapterFactoryImpl);
- if (adapter instanceof XSDObjectAdapter)
- {
- result = (XSDObjectAdapter)adapter;
- }
- }
- return result;
- }
-
- //
- //
- //
- public static class XSDAdapterFactoryImpl extends AdapterFactoryImpl
- {
- public Adapter createAdapter(Notifier target)
- {
- XSDSwitch xsdSwitch = new XSDSwitch()
- {
- public Object caseXSDElementDeclaration(XSDElementDeclaration object)
- {
- return new XSDElementDeclarationAdapter(object);
- }
-
- public Object caseXSDParticle(XSDParticle object)
- {
- return new XSDParticleAdapter(object);
- }
-
- public Object caseXSDSchema(XSDSchema object)
- {
- return new XSDSchemaAdapter(object);
- }
-
- public Object defaultCase(EObject object)
- {
- return new XSDObjectAdapter();
- }
- };
- Object o = xsdSwitch.doSwitch((EObject)target);
-
- Adapter result = null;
- if (o instanceof Adapter)
- {
- result = (Adapter)o;
- }
- else
- {
-// System.out.println("did not create adapter for target : " + target);
-// Thread.dumpStack();
- }
- return result;
- }
-
-
- public Adapter adapt(Notifier target)
- {
- return adapt(target, this);
- }
- }
-
-
-
- //
- //
- //
- protected static class XSDObjectAdapter extends AdapterImpl implements ModelAdapter
- {
- protected List listenerList = new ArrayList();
- protected boolean isUpdating = false;
-
- public boolean isAdapterForType(Object type)
- {
- return type == xsdAdapterFactoryImpl;
- }
-
- public void addListener(ModelAdapterListener l)
- {
- listenerList.add(l);
- }
-
- public void removeListener(ModelAdapterListener l)
- {
- listenerList.remove(l);
- }
-
- public Object getProperty(Object modelObject, String propertyName)
- {
- Object result = null;
- if (ModelAdapter.LABEL_PROPERTY.equals(propertyName))
- {
- result = "";
- // TODO... move this logic into each adapter
- //
- if (modelObject instanceof XSDNamedComponent)
- {
- result = ((XSDNamedComponent)modelObject).getName();
- }
- else if (modelObject instanceof XSDSchemaDirective)
- {
- result = ((XSDSchemaDirective)modelObject).getSchemaLocation();
- if (result == null) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
- if (result.equals("")) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
- return result;
- }
- }
- else if ("drillDown".equals(propertyName))
- {
- // TODO... move this logic into each adapter
- //
- List list = XSDChildUtility.getModelChildren(modelObject);
- result = list.size() > 0 ? Boolean.TRUE : Boolean.FALSE;
- }
- else if (ModelAdapter.IMAGE_PROPERTY.equals(propertyName))
- {
- // result = XSDEditorPlugin.getDefault().getImage("icons/XSDElement.gif");
- XSDModelAdapterFactoryImpl factory = XSDModelAdapterFactoryImpl.getInstance();
- Adapter adapter = factory.createAdapter((Notifier)modelObject);
- result = ((XSDAbstractAdapter)adapter).getImage(modelObject);
- }
- return result;
- }
-
- public void firePropertyChanged(Object modelObject, String propertyName)
- {
- List newList = new ArrayList();
- newList.addAll(listenerList);
- for (Iterator i = newList.iterator(); i.hasNext(); )
- {
- ModelAdapterListener l = (ModelAdapterListener)i.next();
- try
- {
- l.propertyChanged(modelObject, propertyName);
- }
- catch (Exception e)
- {
- }
- }
- }
-
- public void notifyChanged(Notification msg)
- {
- firePropertyChanged(msg.getNotifier(), null);
- }
- }
-
- protected static class XSDParticleAdapter extends XSDObjectAdapter implements ModelAdapterListener
- {
- protected XSDParticle particle;
-
- public XSDParticleAdapter(XSDParticle particle)
- {
- this.particle = particle;
- }
-
- public void notifyChanged(Notification msg)
- {
- XSDParticle xsdParticle = (XSDParticle)msg.getNotifier();
- XSDParticleContent xsdParticleContent = xsdParticle.getContent();
- XSDModelAdapterFactoryImpl factory = XSDModelAdapterFactoryImpl.getInstance();
- if (xsdParticleContent != null)
- {
- if (xsdParticleContent instanceof XSDElementDeclaration)
- {
- firePropertyChanged((XSDElementDeclaration)xsdParticleContent, null);
- factory.fireNotifyChanged(msg);
- }
- else if (xsdParticleContent instanceof XSDModelGroup)
- {
- firePropertyChanged((XSDModelGroup)xsdParticleContent, null);
- factory.fireNotifyChanged(msg);
- }
- else if (xsdParticleContent instanceof XSDWildcard)
- {
- firePropertyChanged((XSDWildcard)xsdParticleContent, null);
- factory.fireNotifyChanged(msg);
- }
- }
- }
-
-
- public void propertyChanged(Object object, String property)
- {
- firePropertyChanged(object, property);
- }
- }
-
- //
- //
- //
- protected static class XSDElementDeclarationAdapter extends XSDObjectAdapter implements ModelAdapterListener
- {
- protected XSDElementDeclaration ed;
- protected XSDTypeDefinition typeDefinition;
-
- public XSDElementDeclarationAdapter(XSDElementDeclaration ed)
- {
- this.ed = ed;
- updateTypeDefinition();
- }
-
- protected void updateTypeDefinition()
- {
- XSDTypeDefinition td = ed.getTypeDefinition();
- td = (td instanceof XSDComplexTypeDefinition) ? td : null;
- if (td != typeDefinition)
- {
- if (typeDefinition != null)
- {
- XSDObjectAdapter adapter = (XSDObjectAdapter)xsdAdapterFactoryImpl.adapt(typeDefinition);
- adapter.removeListener(this);
- }
- typeDefinition = td;
- if (typeDefinition != null)
- {
- XSDObjectAdapter adapter = (XSDObjectAdapter)xsdAdapterFactoryImpl.adapt(typeDefinition);
- adapter.addListener(this);
- }
- }
- }
-
-
- public void notifyChanged(Notification msg)
- {
- updateTypeDefinition();
- firePropertyChanged(msg.getNotifier(), null);
- }
-
-
- public void propertyChanged(Object object, String property)
- {
- // here we propagate typeDefinition changes to our listeners
- firePropertyChanged(object, property);
- }
- }
-
-
- //
- //
- protected static class XSDSchemaAdapter extends XSDObjectAdapter
- {
- protected XSDSchema schema;
- protected List groups;
-
- public XSDSchemaAdapter(XSDSchema schema)
- {
- this.schema = schema;
- groups = new ArrayList();
- groups.add(new Category(schema, Category.DIRECTIVES));
- groups.add(new Category(schema, Category.ATTRIBUTES));
- //groups.add(new Category(schema, Category.ATTRIBUTE_GROUPS));
- groups.add(new Category(schema, Category.ELEMENTS));
- groups.add(new Category(schema, Category.TYPES));
- //groups.add(new Category(schema, Category.SIMPLE_TYPES));
- groups.add(new Category(schema, Category.GROUPS));
- }
-
- public void notifyChanged(Notification msg)
- {
- super.notifyChanged(msg);
- for (Iterator i = groups.iterator(); i.hasNext(); )
- {
- ModelAdapter group = (ModelAdapter)i.next();
- group.firePropertyChanged(group, null);
- }
- }
-
- public Object getProperty(Object modelObject, String propertyName)
- {
- Object result = null;
- if ("groups".equals(propertyName))
- {
- /*
- List list = new ArrayList();
- for (Iterator i = groups.iterator(); i.hasNext(); )
- {
- Category group = (Category)i.next();
- if (group.getChildren().size() > 0)
- {
- list.add(group);
- }
- }
- result = list;*/
- result = groups;
- }
- if (result == null)
- {
- result = super.getProperty(modelObject, propertyName);
- }
- return result;
- }
- }
-
-
- public static void addModelAdapterListener(Object modelObject, ModelAdapterListener listener)
- {
- ModelAdapter modelAdapter = getModelAdapter(modelObject);
- if (modelAdapter != null)
- {
- modelAdapter.addListener(listener);
- }
- }
-
-
- public static void removeModelAdapterListener(Object modelObject, ModelAdapterListener listener)
- {
- ModelAdapter modelAdapter = getModelAdapter(modelObject);
- if (modelAdapter != null)
- {
- modelAdapter.removeListener(listener);
- }
- }
-
- protected static ModelAdapter getModelAdapter(Object modelObject)
- {
- ModelAdapter modelAdapter = null;
- if (modelObject instanceof Notifier)
- {
- modelAdapter = (ModelAdapter)xsdAdapterFactoryImpl.adapt((Notifier)modelObject);
- }
- else if (modelObject instanceof ModelAdapter)
- {
- modelAdapter = (ModelAdapter)modelObject;
- }
- return modelAdapter;
- }
-}
-
-
-
-// --------------------------------------------------------------------------------------------
-// todo... revist this stuff
-// --------------------------------------------------------------------------------------------
-
- /*
- public static void handleTypeChange(XSDTypeDefinition td, XSDSchema schema, int change)
- {
- try
- {
- TypeFindingSchemaVisitor visitor = new TypeFindingSchemaVisitor(schema, td, change == Notification.ADD);
- List list = visitor.findElementsUsingType(schema);
-
- if (change == Notification.REMOVE)
- {
- visitor.removeMatchingReferences();
- }
- else if (change == Notification.ADD)
- {
- visitor.setMatchingReferences();
- }
- else
- {
- visitor.cleanUpTypeMismatches();
- }
-
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- Object o = i.next();
- XSDObjectAdapter adapter = getExisitingAdapter(o);
- if (adapter != null)
- {
- adapter.fireChildrenChangedNotification();
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
-
- protected static class TypeFindingSchemaVisitor extends org.eclipse.wst.xsd.utility.XSDVisitor
- {
- protected XSDTypeDefinition td;
- protected List list = new ArrayList();
- protected XSDSchema schema;
- protected boolean matchByName;
-
- public TypeFindingSchemaVisitor(XSDSchema schema, XSDTypeDefinition td, boolean matchByName)
- {
- this.td = td;
- this.schema = schema;
- this.matchByName = matchByName;
- }
-
- public void visitElementDeclaration(XSDElementDeclaration ed)
- {
- if (ed.getTypeDefinition() == td)
- {
- list.add(ed);
- }
- else if (matchByName)
- {
- String[] name = getDOMName(ed);
- if (name[0].equals(td.getTargetNamespace()) && name[1].equals(td.getName()))
- {
- list.add(ed);
- }
- }
- }
-
- public List findElementsUsingType(XSDSchema schema)
- {
- if (td != null)
- {
- visitSchema(schema);
- }
- return list;
- }
-
- public List getMatchingTypeList()
- {
- return list;
- }
-
- public String[] getDOMName(XSDElementDeclaration ed)
- {
- String[] result = new String[2];
- org.w3c.dom.Element domElement = ed.getElement();
- String typeName = domElement.getAttribute("type");
- if (typeName != null && !typeName.endsWith(td.getName()))
- {
- int index = typeName.indexOf(":");
- String prefix = index == -1 ? "" : typeName.substring(0, index);
- result[0] = (String)schema.getQNamePrefixToNamespaceMap().get(prefix);
- if (result[0] == null) result[0] = "";
- if (result[1] == null) result[1] = "";
- result[1] = index == -1 ? typeName : typeName.substring(index + 1);
- }
- else
- {
- result[0] = "";
- result[1] = "";
- }
- return result;
- }
-
-
- public void cleanUpTypeMismatches()
- {
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- XSDElementDeclaration ed = (XSDElementDeclaration)i.next();
- XSDTypeDefinition candidateTd = ed.getTypeDefinition();
- if (candidateTd != null && candidateTd.getName() != null)
- {
- String[] result = getDOMName(ed);
- ed.setTypeDefinition((XSDTypeDefinition)schema.resolveComplexTypeDefinition(result[0], result[1]));
- }
- }
- }
-
- public void removeMatchingReferences()
- {
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- XSDElementDeclaration ed = (XSDElementDeclaration)i.next();
- String[] result = getDOMName(ed);
- if (ed.getElement() != null)
- {
- // NOTE ... this forces the model to reset the ed's XSDTypeDefinition without causing the
- // DOM element's 'type' attribute to be set to null
- ed.elementAttributesChanged(ed.getElement());
- }
- }
- }
-
- public void setMatchingReferences()
- {
- for (Iterator i = list.iterator(); i.hasNext(); )
- {
- XSDElementDeclaration ed = (XSDElementDeclaration)i.next();
- ed.setTypeDefinition(td);
- }
- }
- } */
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroupRef.gif
deleted file mode 100644
index 3621342..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroupRef.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyAttributePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyAttributePropertySource.java
deleted file mode 100644
index 0f4e7e7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyAttributePropertySource.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class AnyAttributePropertySource extends BasePropertySource implements IPropertySource
-{
- private String[] namespaceComboValues = {
- "",
- "##any",
- "##other",
- "##targetNamespace",
- "##local"
- };
-
- private String[] processContentsComboValues = {
- "",
- XSDEditorPlugin.getXSDString("_UI_COMBO_LAX"),
- XSDEditorPlugin.getXSDString("_UI_COMBO_SKIP"),
- XSDEditorPlugin.getXSDString("_UI_COMBO_STRICT")
- };
- public AnyAttributePropertySource()
- {
- }
-
- public AnyAttributePropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
-
- public AnyAttributePropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
-
- XSDComboBoxPropertyDescriptor namespaceDescriptor = new XSDComboBoxPropertyDescriptor(
- XSDConstants.NAMESPACE_ATTRIBUTE,
- XSDConstants.NAMESPACE_ATTRIBUTE,
- namespaceComboValues);
- list.add(namespaceDescriptor);
-
- XSDComboBoxPropertyDescriptor processContentsDescriptor = new XSDComboBoxPropertyDescriptor(
- XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
- XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
- processContentsComboValues);
- list.add(processContentsDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- return "";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- if (((String) id).equals(XSDConstants.NAMESPACE_ATTRIBUTE))
- {
- String namespace = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_NAMESPACE_CHANGE"), element);
- if (namespace != null && namespace.length() > 0)
- {
- element.setAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, namespace);
- }
- else
- {
- element.removeAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.PROCESSCONTENTS_ATTRIBUTE))
- {
- String processContents = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PROCESSCONTENTS_CHANGE"), element);
- if (processContents != null && processContents.length() > 0)
- {
- element.setAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE, processContents);
- }
- else
- {
- element.removeAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE);
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyContentPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyContentPropertyDescriptor.java
deleted file mode 100644
index 7904053..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyContentPropertyDescriptor.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class AnyContentPropertyDescriptor extends PropertyDescriptor
-{
- Element element;
- /**
- * @param id
- * @param displayName
- */
- public AnyContentPropertyDescriptor(Object id, String displayName, Element element)
- {
- super(id, displayName);
- this.element = element;
- }
-
- public CellEditor createPropertyEditor(Composite parent)
- {
- CellEditor editor = new AnyContentDialogCellEditor(parent);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
-
- public class AnyContentDialogCellEditor extends DialogCellEditor {
-
- /**
- * Creates a new Font dialog cell editor parented under the given control.
- * The cell editor value is <code>null</code> initially, and has no
- * validator.
- *
- * @param parent the parent control
- */
- protected AnyContentDialogCellEditor(Composite parent) {
- super(parent);
- }
-
- /**
- * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
- */
- protected Object openDialogBox(Control cellEditorWindow)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
- AnyContentDialog dialog = new AnyContentDialog(shell);
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- String value = (String)getValue();
-
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- return dialog.getComment();
- }
- return value;
- }
-
- }
-
- public class AnyContentDialog extends org.eclipse.jface.dialogs.Dialog
- {
- protected Text commentField;
- protected Button okButton, cancelButton;
- private String comment;
-
- public AnyContentDialog(Shell shell)
- {
- super(shell);
- }
-
- protected void configureShell(Shell shell)
- {
- super.configureShell(shell);
- }
-
- protected void buttonPressed(int buttonId)
- {
- if (buttonId == Dialog.OK)
- {
- comment = commentField.getText();
- }
- super.buttonPressed(buttonId);
- }
-
- public String getComment() { return comment; }
-
- //
- // Create the controls
- //
- public Control createDialogArea(Composite parent)
- {
- Composite client = (Composite)super.createDialogArea(parent);
- getShell().setText(element.getLocalName());
-
- commentField = ViewUtility.createMultiTextField(client, 400, 200, true);
-
- WorkbenchHelp.setHelp(commentField, XSDEditorContextIds.XSDE_ANNOTATION_COMMENT);
- commentField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_COMMENT")); //$NON-NLS-1$
-
- String initialString = (String)getInitialContent();
- commentField.setText(initialString);
- return client;
- }
-
- private Object getInitialContent()
- {
- Object result = null;
- if (element.hasChildNodes())
- {
- // if the element is Text
- Node node = element.getFirstChild();
- if (node instanceof CharacterData)
- {
- result = ((CharacterData)node).getData();
- }
- }
- else
- {
- result = ""; //$NON-NLS-1$
- }
- return result;
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyElementPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyElementPropertySource.java
deleted file mode 100644
index 1b2e12b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyElementPropertySource.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class AnyElementPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
-
- private String[] namespaceComboValues = {
- "",
- "##any",
- "##other",
- "##targetNamespace",
- "##local"
- };
-
- private String[] processContentsComboValues = {
- "",
- XSDEditorPlugin.getXSDString("_UI_COMBO_LAX"),
- XSDEditorPlugin.getXSDString("_UI_COMBO_SKIP"),
- XSDEditorPlugin.getXSDString("_UI_COMBO_STRICT")
- };
-
- /**
- *
- */
- public AnyElementPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public AnyElementPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public AnyElementPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
-
- XSDComboBoxPropertyDescriptor namespaceDescriptor = new XSDComboBoxPropertyDescriptor(
- XSDConstants.NAMESPACE_ATTRIBUTE,
- XSDConstants.NAMESPACE_ATTRIBUTE,
- namespaceComboValues);
- list.add(namespaceDescriptor);
-
- XSDComboBoxPropertyDescriptor processContentsDescriptor = new XSDComboBoxPropertyDescriptor(
- XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
- XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
- processContentsComboValues);
- list.add(processContentsDescriptor);
-
-// These are moved to the tabbed properties general section
-// PropertyDescriptor minOccursDescriptor =
-// new TextPropertyDescriptor(
-// XSDConstants.MINOCCURS_ATTRIBUTE,
-// XSDConstants.MINOCCURS_ATTRIBUTE);
-// list.add(minOccursDescriptor);
-// PropertyDescriptor maxOccursDescriptor =
-// new TextPropertyDescriptor(
-// XSDConstants.MAXOCCURS_ATTRIBUTE,
-// XSDConstants.MAXOCCURS_ATTRIBUTE);
-// list.add(maxOccursDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = "";
- }
- return result;
-
-// if (((String) id).equals(XSDConstants.NAMESPACE_ATTRIBUTE))
-// {
-// }
-// else if (((String) id).equals(XSDConstants.PROCESSCONTENTS_ATTRIBUTE))
-// {
-// }
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- if (((String) id).equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
- {
- String max = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
- if (max.length() > 0)
- {
- element.setAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE, max);
- }
- else
- {
- element.removeAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.MINOCCURS_ATTRIBUTE))
- {
- String min = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);
- if (min.length() > 0)
- {
- element.setAttribute(XSDConstants.MINOCCURS_ATTRIBUTE, min);
- }
- else
- {
- element.removeAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.NAMESPACE_ATTRIBUTE))
- {
- String namespace = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_NAMESPACE_CHANGE"), element);
- if (namespace.length() > 0)
- {
- element.setAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, namespace);
- }
- else
- {
- element.removeAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.PROCESSCONTENTS_ATTRIBUTE))
- {
- String processContents = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PROCESSCONTENTS_CHANGE"), element);
- if (processContents.length() > 0)
- {
- element.setAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE, processContents);
- }
- else
- {
- element.removeAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE);
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AppInfoPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AppInfoPropertySource.java
deleted file mode 100644
index b99c768..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AppInfoPropertySource.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Node;
-
-public class AppInfoPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- public static String CONTENT = "Content";
-
- /**
- *
- */
- public AppInfoPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public AppInfoPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public AppInfoPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- PropertyDescriptor sourceDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.SOURCE_ATTRIBUTE,
- XSDConstants.SOURCE_ATTRIBUTE);
- list.add(sourceDescriptor);
- AnyContentPropertyDescriptor contentDescriptor =
- new AnyContentPropertyDescriptor(
- CONTENT,
- CONTENT,
- element);
- list.add(contentDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- if (((String) id).equals(CONTENT))
- {
- try
- {
- if (element.hasChildNodes())
- {
- // if the element is Text
- Node node = element.getFirstChild();
- if (node instanceof CharacterData)
- {
- return ((CharacterData)node).getData();
- }
- }
- else
- {
- return "";
- }
- }
- catch (Exception e)
- {
-
- }
-
- }
- else
- {
- result = element.getAttribute((String) id);
- }
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- if (((String)id).equals(XSDConstants.SOURCE_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SOURCE_ATTRIBUTE_CHANGE"), element);
- if (((String)value).length() > 0)
- {
- element.setAttribute(XSDConstants.SOURCE_ATTRIBUTE, (String)value);
- }
- else
- {
- element.removeAttribute(XSDConstants.SOURCE_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String)id).equals(CONTENT))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMMENT_CHANGE"), element);
- try
- {
- if (element.hasChildNodes())
- {
- // if the element is Text
- Node node = element.getFirstChild();
- if (node instanceof CharacterData)
- {
- ((CharacterData)node).setData((String)value);
- }
- }
- else
- {
- if (((String)value).length() > 0)
- {
- Node childNode = element.getOwnerDocument().createTextNode((String)value);
- element.appendChild(childNode);
- }
- }
- endRecording(element);
- }
- catch (Exception e)
- {
-
- }
- }
- else // shouldn't be here
- {
- element.setAttribute((String) id, (String) value);
- }
- }
- else if (value instanceof Integer)
- {
- }
- }
- else
- {
- element.removeAttribute((String) id);
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributeGroupRefPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributeGroupRefPropertySource.java
deleted file mode 100644
index 74ca702..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributeGroupRefPropertySource.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class AttributeGroupRefPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String[] refComboValues = { "" };
- /**
- *
- */
- public AttributeGroupRefPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public AttributeGroupRefPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public AttributeGroupRefPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
-
- public void setInput(Element element)
- {
- this.element = element;
- TypesHelper helper = new TypesHelper(xsdSchema);
- java.util.List items = helper.getGlobalAttributes();
-
- if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
- {
- items = helper.getGlobalAttributes();
-// WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_DESIGN_VIEW);
-// WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_NAME);
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
- {
- items = helper.getGlobalAttributeGroups();
-// WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_DESIGN_VIEW);
-// WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_NAME);
- }
- int size = items.size() + 1;
- refComboValues = new String[size];
- refComboValues[0] = "";
- if (items != null)
- {
- for (int i = 0; i < items.size(); i++)
- {
- refComboValues[i + 1] = (String) items.get(i);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- XSDComboBoxPropertyDescriptor refDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.REF_ATTRIBUTE,
- XSDConstants.REF_ATTRIBUTE,
- refComboValues);
- list.add(refDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = "";
- }
-// if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
-// {
-// }
- return result;
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_REF_CHANGE"), element);
- element.setAttribute(XSDConstants.REF_ATTRIBUTE, (String) value);
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributePropertySource.java
deleted file mode 100644
index b6413fe..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributePropertySource.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-public class AttributePropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String[] useComboValues =
- {
- "", //$NON-NLS-1$
- "prohibited", // XSDEditorPlugin.getXSDString("_UI_COMBO_BOX_PROHIBITED"), //$NON-NLS-1$
- "optional", // XSDEditorPlugin.getXSDString("_UI_COMBO_BOX_OPTIONAL"), //$NON-NLS-1$
- "required" // XSDEditorPlugin.getXSDString("_UI_COMBO_BOX_REQUIRED") //$NON-NLS-1$
- };
-
- protected String formComboValues[] =
- {
- "", //$NON-NLS-1$
- XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"), //$NON-NLS-1$
- XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED") //$NON-NLS-1$
- };
-
-
- /**
- *
- */
- public AttributePropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public AttributePropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public AttributePropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- PropertyDescriptor nameDescriptor = new TextPropertyDescriptor(XSDConstants.NAME_ATTRIBUTE, XSDConstants.NAME_ATTRIBUTE);
- list.add(nameDescriptor);
-// nameDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_GENERAL"));
- TypesPropertyDescriptor typeDescriptor = new TypesPropertyDescriptor(
- XSDConstants.TYPE_ATTRIBUTE,
- XSDConstants.TYPE_ATTRIBUTE,
- element, xsdSchema);
- list.add(typeDescriptor);
-// typeDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_GENERAL"));
-
- Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
- Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
- String str;
- if (fixedAttr != null)
- {
- str = XSDConstants.FIXED_ATTRIBUTE;
- }
- else if (defaultAttr != null)
- {
- str = XSDConstants.DEFAULT_ATTRIBUTE;
- }
- else
- {
- str = XSDConstants.FIXED_ATTRIBUTE + "/" + XSDConstants.DEFAULT_ATTRIBUTE; //$NON-NLS-1$
- }
-
- FixedOrDefaultTextPropertyDescriptor fixedOrDefaultDescriptor =
- new FixedOrDefaultTextPropertyDescriptor(
- str,
- str,
- element);
- list.add(fixedOrDefaultDescriptor);
-// fixedOrDefaultDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_OTHER"));
-
- Object parentNode = element.getParentNode();
- if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- }
- else
- {
- XSDComboBoxPropertyDescriptor useDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.USE_ATTRIBUTE,
- XSDConstants.USE_ATTRIBUTE,
- useComboValues);
- list.add(useDescriptor);
-// useDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_OTHER"));
- XSDComboBoxPropertyDescriptor formDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.FORM_ATTRIBUTE,
- XSDConstants.FORM_ATTRIBUTE,
- formComboValues);
- list.add(formDescriptor);
-// formDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_OTHER"));
- }
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = ""; //$NON-NLS-1$
- }
- if (((String) id).equals(XSDConstants.TYPE_ATTRIBUTE))
- {
- if (result.equals("")) //$NON-NLS-1$
- {
- if (checkForAnonymousType(element))
- {
- return "**anonymous**"; //$NON-NLS-1$
- }
- else
- {
- return XSDEditorPlugin.getXSDString("_UI_NO_TYPE"); //$NON-NLS-1$
- }
- }
- else
- {
- return result;
- }
- }
- return result;
- }
- return ""; //$NON-NLS-1$
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = ""; //$NON-NLS-1$
- }
- if (value instanceof String)
- {
- if (((String) id).equals(XSDConstants.TYPE_ATTRIBUTE))
- {
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-// element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, (String)value);
-// updateElementToNotAnonymous(element);
-// endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.NAME_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_NAME_CHANGE"), element); //$NON-NLS-1$
- // now rename any references to this element
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDAttributeDeclaration && comp.getRootContainer().equals(xsdSchema))
- {
- XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)comp;
- xsdAttributeDeclaration.setName((String)value);
- //TODO : cs revisit
- //GlobalAttributeRenamer renamer = new GlobalAttributeRenamer(xsdAttributeDeclaration, (String)value);
- //renamer.visitSchema(xsdSchema);
- }
- }
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, (String)value);
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.FIXED_ATTRIBUTE) || ((String) id).equals(XSDConstants.DEFAULT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_VALUE_CHANGE"), element); //$NON-NLS-1$
- if (((String)value).equals("")) //$NON-NLS-1$
- {
- element.removeAttribute((String)id);
- }
- else
- {
- element.setAttribute((String) id, (String) value);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.USE_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_USE_CHANGE"), element); //$NON-NLS-1$
- if (((String)value).equals("")) //$NON-NLS-1$
- {
- element.removeAttribute(XSDConstants.USE_ATTRIBUTE);
- }
- else
- {
- element.setAttribute((String) id, (String)value);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.FORM_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_FORM_CHANGE"), element); //$NON-NLS-1$
- if (((String)value).equals("")) //$NON-NLS-1$
- {
- element.removeAttribute(XSDConstants.FORM_ATTRIBUTE);
- }
- else
- {
- element.setAttribute(XSDConstants.FORM_ATTRIBUTE, (String)value);
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- boolean checkForAnonymousType(Element element)
- {
- NodeList list = element.getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (list.getLength() > 0)
- {
- return true;
- }
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributesTable.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributesTable.java
deleted file mode 100644
index cfed172..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributesTable.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-//import com.ibm.icu.text.Collator;
-//import java.util.Comparator;
-//import java.util.List;
-//
-//import org.eclipse.jface.viewers.CellEditor;
-//import org.eclipse.jface.viewers.ColumnPixelData;
-//import org.eclipse.jface.viewers.ICellModifier;
-//import org.eclipse.jface.viewers.ILabelProvider;
-//import org.eclipse.jface.viewers.IStructuredContentProvider;
-//import org.eclipse.jface.viewers.ITableLabelProvider;
-//import org.eclipse.jface.viewers.LabelProvider;
-//import org.eclipse.jface.viewers.TableLayout;
-//import org.eclipse.jface.viewers.TableViewer;
-//import org.eclipse.jface.viewers.TextCellEditor;
-//import org.eclipse.jface.viewers.Viewer;
-//import org.eclipse.swt.SWT;
-//import org.eclipse.swt.events.MouseAdapter;
-//import org.eclipse.swt.events.MouseEvent;
-//import org.eclipse.swt.graphics.Image;
-//import org.eclipse.swt.widgets.Composite;
-//import org.eclipse.swt.widgets.Control;
-//import org.eclipse.swt.widgets.Table;
-//import org.eclipse.swt.widgets.TableColumn;
-//import org.eclipse.swt.widgets.TableItem;
-//import org.eclipse.ui.IEditorPart;
-//import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
-//import org.eclipse.ui.views.properties.IPropertyDescriptor;
-//import org.eclipse.ui.views.properties.IPropertySource;
-//import org.w3c.dom.Element;
-
-public class AttributesTable // extends TableViewer implements ICellModifier
-{
-// protected static final String PROPERTY = "property"; //$NON-NLS-1$
-// protected static final String VALUE = "value"; //$NON-NLS-1$
-//
-// protected IEditorPart editorPart;
-// protected String[] columnProperties = {PROPERTY, VALUE};
-// protected PropertyTableProvider tableProvider = new PropertyTableProvider(this);
-// protected CellEditor cellEditor;
-// //protected StringComboBoxCellEditor comboCellEditor;
-// protected IPropertySource propertySource;
-//
-// public AttributesTable(IEditorPart editorPart, Composite parent)
-// {
-// super(new Table(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.FLAT | SWT.H_SCROLL | SWT.V_SCROLL));
-// this.editorPart = editorPart;
-// getTable().setLinesVisible(true);
-// getTable().setHeaderVisible(true);
-//
-// setContentProvider(tableProvider);
-// setLabelProvider(tableProvider);
-// setColumnProperties(columnProperties);
-//
-// for (int i = 0; i < columnProperties.length; i++)
-// {
-// TableColumn column = new TableColumn(getTable(), SWT.NONE, i);
-// column.setText(columnProperties[i]);
-// column.setAlignment(SWT.LEFT);
-// }
-//
-//// TableLayout layout = new TableLayout();
-//// ColumnWeightData data = new ColumnWeightData(40, 40, true);
-//// layout.addColumnData(data);
-////
-//// ColumnWeightData data2 = new ColumnWeightData(80, 80, true);
-//// layout.addColumnData(data2);
-//
-// TableLayout layout = new TableLayout();
-// layout.addColumnData(new ColumnPixelData(130,true));
-// layout.addColumnData(new ColumnPixelData(130,true));
-// getTable().setLayout(layout);
-//
-//
-// cellEditor = new TextCellEditor(getTable());
-// resetCellEditors();
-//
-// setCellModifier(this);
-// }
-//
-// public void setPropertySource(IPropertySource propertySource)
-// {
-// this.propertySource = propertySource;
-// }
-//
-// /* (non-Javadoc)
-// * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
-// */
-// public boolean canModify(Object element, String property)
-// {
-// return property.equals(VALUE);
-// }
-//
-// /* (non-Javadoc)
-// * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
-// */
-// public Object getValue(Object element, String property)
-// {
-// int column = 0;
-// if (property.equals(columnProperties[0]))
-// {
-// column = 0;
-// }
-// else if (property.equals(columnProperties[1]))
-// {
-// column = 1;
-// }
-// return tableProvider.getColumnValue(element, column);
-// }
-//
-// /* (non-Javadoc)
-// * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
-// */
-// public void modify(Object element, String property, Object value)
-// {
-// TableItem item = (TableItem)element;
-// IPropertyDescriptor propertyDescriptor = (IPropertyDescriptor)item.getData();
-//
-// // if the new value is the same as the old value, the user has only clicked
-// // on the cell in the course of 'browsing' ... so don't edit the value
-// Object oldValue = getValue(propertyDescriptor, property);
-// if (value != null && !value.equals(oldValue))
-// {
-// // we assume the value is empty that the attribute should be removed
-// // todo... we probably need to look at this in more detail
-// if (value instanceof String && ((String)value).length() == 0)
-// {
-// value = null;
-// }
-// propertySource.setPropertyValue(propertyDescriptor.getId(), value);
-// }
-// }
-//
-//
-// protected void hookControl(Control control) {
-// // we need to hook up our own mouse listener first
-// // so that we can update the cellEditors before
-// // the 'internal' listener tries to get hold of them
-// Table tableControl = (Table)control;
-// tableControl.addMouseListener(new MouseAdapter() {
-// public void mouseDown(MouseEvent e) {
-// System.out.println("Mouse down");
-// updateCellEditors();
-// }
-// });
-// super.hookControl(control);
-// }
-//
-// protected void updateCellEditors()
-// {
-// CellEditor[] cellEditors = new CellEditor[2];
-// cellEditors[0] = cellEditor;
-// cellEditors[1] = cellEditor;
-//
-// Element element = (Element)getInput();
-//
-// IPropertyDescriptor[] propertyDescriptors = propertySource.getPropertyDescriptors();
-// int index = getTable().getSelectionIndex();
-// if (index >= 0 && index < propertyDescriptors.length)
-// {
-// CellEditor[] oldCellEditors = getCellEditors();
-// CellEditor oldCellEditor = (oldCellEditors.length > 1) ? oldCellEditors[1] : null;
-// if (oldCellEditor != null && oldCellEditor != cellEditor)
-// {
-// oldCellEditor.deactivate();
-// oldCellEditor.dispose();
-// }
-// cellEditors[1] = propertyDescriptors[index].createPropertyEditor(getTable());
-// }
-// setCellEditors(cellEditors);
-//
-//// IPropertyDescriptor[] propertyDescriptors = propertySource.getPropertyDescriptors();
-////
-//// int index = getTable().getSelectionIndex();
-//// //cellEditor.dispose();
-////
-//// if (index >= 0 && index < propertyDescriptors.length)
-//// {
-//// cellEditor = propertyDescriptors[index].createPropertyEditor(getTable());
-//// Control control = cellEditor.getControl();
-//// if (control == null) {
-//// cellEditor.deactivate();
-//// cellEditor = null;
-//// return;
-//// }
-//// setCellEditors(new CellEditor[] {null, cellEditor});
-//// cellEditor.activate();
-//// cellEditor.setFocus();
-//// }
-// }
-//
-//
-// public String[] getStringArray(List list)
-// {
-// String[] result = new String[list.size()];
-// for (int i = 0; i < result.length; i++)
-// {
-// result[i] = (String)list.get(i);
-// }
-// return result;
-// }
-//
-// protected void resetCellEditors()
-// {
-// CellEditor[] cellEditors = new CellEditor[2];
-// cellEditors[0] = null;
-// cellEditors[1] = cellEditor;
-// setCellEditors(cellEditors);
-// }
-//
-//
-// class PropertyTableProvider extends LabelProvider implements ITableLabelProvider, IStructuredContentProvider
-// {
-// protected TableViewer viewer;
-//
-// PropertyTableProvider(TableViewer viewer)
-// {
-// this.viewer = viewer;
-// }
-//
-// public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-// {
-//// resetCellEditors();
-//// if (newInput instanceof XMLElement)
-//// {
-//// propertySource = new ExtensiblePropertySource(editorPart, (XMLElement)newInput);
-//// }
-//// if (newInput instanceof Element)
-//// {
-//// if (XSDDOMHelper.inputEquals(newInput, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-//// {
-//// propertySource = new ElementPropertySource((Element)newInput, viewer);
-//// }
-//// else
-//// {
-//// propertySource = new ReadOnlyPropertySource(editorPart, (Element)newInput);
-//// }
-//// }
-//// else
-//// {
-//// propertySource = null;
-//// }
-// }
-//
-// public Image getColumnImage(Object element, int columnIndex)
-// {
-// return null;
-// }
-//
-// public Object getColumnValue(Object o, int columnIndex)
-// {
-// IPropertyDescriptor propertyDescriptor = (IPropertyDescriptor)o;
-// if (columnIndex == 0)
-// {
-// return propertyDescriptor.getId();
-// }
-// else
-// {
-// return propertySource.getPropertyValue(propertyDescriptor.getId());
-// }
-// }
-//
-// public String getColumnText(Object o, int columnIndex)
-// {
-// IPropertyDescriptor propertyDescriptor = (IPropertyDescriptor)o;
-// // (columnIndex == 1 && propertyDescriptor instanceof XSDComboBoxPropertyDescriptor)
-// if ((columnIndex == 1 && propertyDescriptor instanceof OptionsComboBoxPropertyDescriptor) ||
-// (columnIndex == 1 && propertyDescriptor instanceof ComboBoxPropertyDescriptor))
-// {
-// ILabelProvider lp = propertyDescriptor.getLabelProvider();
-// if (lp != null)
-// {
-// return lp.getText(propertyDescriptor.getId());
-// }
-// }
-//
-// Object id = propertyDescriptor.getId();
-// String attribute = "";
-// if (id != null && attribute instanceof String)
-// {
-// attribute = (String)id;
-// }
-// Object value = propertySource.getPropertyValue(attribute);
-// String attributeValue = "";
-// if (value != null)
-// {
-// attributeValue = (String)value;
-// }
-//
-// return (columnIndex == 0) ? attribute : attributeValue;
-//
-//// return (columnIndex == 0) ? propertyDescriptor.getId().toString() : propertySource.getPropertyValue(propertyDescriptor.getId()).toString();
-// }
-//
-// public Object[] getElements(Object o)
-// {
-// Object[] result = propertySource.getPropertyDescriptors();
-// // For some strange reson the ViewerSorter doesn't seem to be working for this table
-// // As a workaround we sort them in this method before returning them to the viewer
-//// if (result.length > 0)
-//// {
-//// Arrays.sort(result, new InternalComparator());
-//// }
-// return result;
-// }
-// }
-//
-// class InternalComparator implements Comparator
-// {
-// public int compare(Object e1, Object e2)
-// {
-// IPropertyDescriptor p1 = (IPropertyDescriptor)e1;
-// IPropertyDescriptor p2 = (IPropertyDescriptor)e2;
-// String p1Name = p1.getDisplayName();
-// String p2Name = p2.getDisplayName();
-// return Collator.getInstance().compare(p1.getDisplayName(), p2.getDisplayName());
-// }
-// }
-//
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/BasePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/BasePropertySource.java
deleted file mode 100644
index dbea691..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/BasePropertySource.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.NameValidator;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public abstract class BasePropertySource implements IPropertySource
-{
- protected Element element;
- protected Viewer viewer;
- protected IPropertyDescriptor[] propertyDescriptors;
- protected XSDSchema xsdSchema;
- protected String [] trueFalseComboValues = {
- "",
- "false",
- "true"
- };
-
- public BasePropertySource()
- {
-
- }
-
- public DocumentImpl getDocument(Element element)
- {
- return (DocumentImpl) element.getOwnerDocument();
- }
-
- public void beginRecording(String description, Element element)
- {
- getDocument(element).getModel().beginRecording(this, description);
- }
-
- public void endRecording(Element element)
- {
- DocumentImpl doc = (DocumentImpl) getDocument(element);
-
- doc.getModel().endRecording(this);
- }
-
-
- public BasePropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- this.viewer = viewer;
- this.xsdSchema = xsdSchema;
- }
-
- public BasePropertySource(XSDSchema xsdSchema)
- {
- this.xsdSchema = xsdSchema;
- }
-
- public void setViewer(Viewer viewer)
- {
- this.viewer = viewer;
- }
-
- public void setInput(Element element)
- {
- this.element = element;
- }
-
- protected XSDDOMHelper domHelper = new XSDDOMHelper();
- /**
- * Gets the domHelper.
- * @return Returns a XSDDomHelper
- */
- public XSDDOMHelper getDomHelper()
- {
- return domHelper;
- }
-
- protected boolean hasElementChildren(Node parentNode)
- {
- boolean hasChildrenElements = false;
- if (parentNode != null && parentNode.hasChildNodes())
- {
- NodeList nodes = parentNode.getChildNodes();
- for (int i = 0; i < nodes.getLength(); i++)
- {
- if (nodes.item(i) instanceof Element)
- {
- hasChildrenElements = true;
- break;
- }
- }
- }
- return hasChildrenElements;
- }
-
- protected boolean validateName(String name)
- {
- return NameValidator.isValid(name);
- }
-
- // TODO
- protected boolean validateLanguage(String lang)
- {
- return true;
- }
-
- // TODO
- protected boolean validatePrefix(String prefix)
- {
- return true;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ComplexTypePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ComplexTypePropertySource.java
deleted file mode 100644
index aa358e6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ComplexTypePropertySource.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.SetBaseTypeAction;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ComplexTypePropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String DERIVED_BY_ID = "derived by"; // XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY"); //$NON-NLS-1$
- private String BASE_TYPE_ID = "base type"; // XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE"); //$NON-NLS-1$
-
- private String[] blockOrFinalComboValues =
- {
- "", //$NON-NLS-1$
- "#all", //$NON-NLS-1$
- "extension", //$NON-NLS-1$
- "restriction" //$NON-NLS-1$
- };
-
- /**
- *
- */
- public ComplexTypePropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public ComplexTypePropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public ComplexTypePropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-
- XSDComboBoxPropertyDescriptor abstractDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.ABSTRACT_ATTRIBUTE,
- XSDConstants.ABSTRACT_ATTRIBUTE,
- trueFalseComboValues);
- list.add(abstractDescriptor);
-
- XSDComboBoxPropertyDescriptor mixedDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.MIXED_ATTRIBUTE,
- XSDConstants.MIXED_ATTRIBUTE,
- trueFalseComboValues);
- list.add(mixedDescriptor);
-
- XSDComboBoxPropertyDescriptor blockDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.BLOCK_ATTRIBUTE,
- XSDConstants.BLOCK_ATTRIBUTE,
- blockOrFinalComboValues);
- list.add(blockDescriptor);
- XSDComboBoxPropertyDescriptor finalDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.FINAL_ATTRIBUTE,
- XSDConstants.FINAL_ATTRIBUTE,
- blockOrFinalComboValues);
- list.add(finalDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
-
- public void setInput(Element element)
- {
- this.element = element;
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- String attributeName = (String)id;
- result = element.getAttribute((String) id);
- Element contentModelElement = getDomHelper().getContentModelFromParent(element);
- String baseType = getDomHelper().getBaseType(contentModelElement);
-
- if (result == null)
- {
- result = ""; //$NON-NLS-1$
- }
-
- if (attributeName.equals(DERIVED_BY_ID))
- {
- return getDomHelper().getDerivedByName(contentModelElement);
- }
- else if (attributeName.equals(BASE_TYPE_ID))
- {
- if (baseType != null)
- {
- return baseType;
- }
- else
- {
- return ""; //$NON-NLS-1$
- }
- }
- else if (attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
- {
- String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
-
- boolean isAnonymousType = checkForAnonymousType(element);
- if (isAnonymousType)
- {
- return "**anonymous**"; //$NON-NLS-1$
- }
- else
- {
- return name;
- }
- }
-
- return result;
-// if (((String) id).equals(XSDConstants.ABSTRACT_ATTRIBUTE)
-// || ((String) id).equals(XSDConstants.MIXED_ATTRIBUTE))
-// {
-// }
-// else if (((String) id).equals(XSDConstants.BLOCK_ATTRIBUTE))
-// {
-// }
-// else if (((String) id).equals(XSDConstants.FINAL_ATTRIBUTE))
-// {
-// }
- }
- return ""; //$NON-NLS-1$
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = ""; //$NON-NLS-1$
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- String attributeName = (String)id;
-
- if (attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_NAME_CHANGE"), element); //$NON-NLS-1$
- if (newValue.length() > 0)
- {
- // now rename any references to this type
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDComplexTypeDefinition && comp.getContainer().equals(xsdSchema))
- {
-// XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)comp;
-// ct.setName(newValue);
- //TODO : cs revisit
- //GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, newValue);
- //renamer.visitSchema(xsdSchema);
- }
- }
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- }
- else
- {
- element.removeAttribute(XSDConstants.NAME_ATTRIBUTE);
- }
- endRecording(element);
- }
- }
- else if (attributeName.equals(DERIVED_BY_ID))
- {
- Element contentModelElement = getDomHelper().getContentModelFromParent(element);
- String baseType = getDomHelper().getBaseType(contentModelElement);
- beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"), element); //$NON-NLS-1$
- getDomHelper().changeDerivedByType(contentModelElement, newValue, baseType);
- endRecording(element);
- }
- else if (attributeName.equals(BASE_TYPE_ID))
- {
- String derivedBy = getDomHelper().getDerivedByName(element);
-
- SetBaseTypeAction setBaseTypeAction = new SetBaseTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE")); //$NON-NLS-1$
- setBaseTypeAction.setXSDSchema(xsdSchema);
- setBaseTypeAction.setComplexTypeElement(element);
- setBaseTypeAction.setType(newValue);
- setBaseTypeAction.setDerivedBy(derivedBy);
- setBaseTypeAction.performAction();
-
-// handleBaseTypeComboChange(newValue);
-
- }
- else
- {
- if (attributeName.equals(XSDConstants.ABSTRACT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_ABSTRACT_CHANGE"), element); //$NON-NLS-1$
- }
- else if (attributeName.equals(XSDConstants.MIXED_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_MIXED_CHANGE"), element); //$NON-NLS-1$
- }
- else if (attributeName.equals(XSDConstants.BLOCK_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_BLOCK_CHANGE"), element); //$NON-NLS-1$
- }
- else if (attributeName.equals(XSDConstants.FINAL_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_FINAL_CHANGE"), element); //$NON-NLS-1$
- }
-
- if (newValue.length() > 0)
- {
- element.setAttribute((String) id, (String)value);
- }
- else
- {
- element.removeAttribute((String) id);
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- boolean checkForAnonymousType(Element element)
- {
- Object parentElement = (Object)element.getParentNode();
- boolean isAnonymous = false;
- if (parentElement != null)
- {
- if (XSDDOMHelper.inputEquals(parentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- isAnonymous = true;
- }
- }
- return isAnonymous;
- }
-
-
-// private void handleBaseTypeComboChange(String newType)
-// {
-// String tempChoice = newType;
-// TypesHelper helper = new TypesHelper(xsdSchema);
-// if (helper.getBuiltInTypeNamesList().contains(tempChoice) ||
-// helper.getUserSimpleTypeNamesList().contains(tempChoice))
-// {
-// derivedByCombo.setText(XSDConstants.EXTENSION_ELEMENT_TAG);
-// derivedByCombo.setEnabled(false);
-// }
-// else if (helper.getUserComplexTypeNamesList().contains(tempChoice))
-// {
-// Element contentModelElement = getDomHelper().getContentModelFromParent(element);
-// String derivedByString = getDomHelper().getDerivedByName(contentModelElement);
-// derivedByCombo.setText(derivedByString);
-// derivedByCombo.setEnabled(true);
-// }
-// else
-// {
-// derivedByCombo.setText("");
-// derivedByCombo.setEnabled(false);
-// }
-// }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DocumentationPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DocumentationPropertySource.java
deleted file mode 100644
index 0dfda24..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DocumentationPropertySource.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Node;
-
-
-public class DocumentationPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- public static String CONTENT = "Content";
-
- /**
- *
- */
- public DocumentationPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public DocumentationPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
-
- }
- /**
- * @param xsdSchema
- */
- public DocumentationPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- PropertyDescriptor languageDescriptor =
- new TextPropertyDescriptor(
- "xml:lang",
- "xml:lang"
- );
- list.add(languageDescriptor);
- PropertyDescriptor sourceDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.SOURCE_ATTRIBUTE,
- XSDConstants.SOURCE_ATTRIBUTE);
- list.add(sourceDescriptor);
- AnyContentPropertyDescriptor contentDescriptor =
- new AnyContentPropertyDescriptor(
- CONTENT,
- CONTENT,
- element);
- list.add(contentDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- if (((String) id).equals(CONTENT))
- {
- try
- {
- if (element.hasChildNodes())
- {
- // if the element is Text
- Node node = element.getFirstChild();
- if (node instanceof CharacterData)
- {
- return ((CharacterData)node).getData();
- }
- }
- else
- {
- return "";
- }
- }
- catch (Exception e)
- {
-
- }
-
- }
- else
- {
- result = element.getAttribute((String) id);
- }
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- String newValue = (String)value;
- if (((String)id).equals("xml:lang"))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_LANG_CHANGE"), element);
- if (newValue.length() > 0)
- {
- if (validateLanguage(newValue))
- {
- element.setAttribute("xml:lang", newValue);
- }
- }
- else
- {
- // clearErrorMessage();
- element.removeAttribute("xml:lang");
- }
- endRecording(element);
- }
- else if (((String)id).equals(XSDConstants.SOURCE_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_SOURCE_CHANGE"), element);
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.SOURCE_ATTRIBUTE, newValue);
- }
- else
- {
- element.removeAttribute(XSDConstants.SOURCE_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String)id).equals(CONTENT))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_COMMENT_CHANGE"), element);
- try
- {
- if (element.hasChildNodes())
- {
- // if the element is Text
- Node node = element.getFirstChild();
- if (node instanceof CharacterData)
- {
- ((CharacterData)node).setData(newValue);
- }
- }
- else
- {
- if (newValue.length() > 0)
- {
- Node childNode = element.getOwnerDocument().createTextNode(newValue);
- element.appendChild(childNode);
- }
- }
- endRecording(element);
- }
- catch (Exception e)
- {
-
- }
- }
- else // shouldn't be here
- {
- element.setAttribute((String) id, newValue);
- }
- }
- else if (value instanceof Integer)
- {
- }
- }
- else
- {
- element.removeAttribute((String) id);
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DynamicCellEditor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DynamicCellEditor.java
deleted file mode 100644
index b09526a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DynamicCellEditor.java
+++ /dev/null
@@ -1,1174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.ACC;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleControlAdapter;
-import org.eclipse.swt.accessibility.AccessibleControlEvent;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.accessibility.AccessibleTextAdapter;
-import org.eclipse.swt.accessibility.AccessibleTextEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TypedListener;
-
-public class DynamicCellEditor extends Composite
-{
- Text text;
- List list;
- int maxItemCount = 5;
- Shell popup;
- Button arrow;
- boolean hasFocus;
-
- public DynamicCellEditor(Composite parent, int style) {
- super (parent, checkStyle (style));
-
- style = getStyle();
-
- int textStyle = SWT.SINGLE;
- if ((style & SWT.READ_ONLY) != 0) textStyle |= SWT.READ_ONLY;
- if ((style & SWT.FLAT) != 0) textStyle |= SWT.FLAT;
- text = new Text (this, textStyle);
-
- popup = new Shell (getShell (), SWT.NO_TRIM);
-
- int listStyle = SWT.SINGLE | SWT.V_SCROLL;
- if ((style & SWT.FLAT) != 0) listStyle |= SWT.FLAT;
- if ((style & SWT.RIGHT_TO_LEFT) != 0) listStyle |= SWT.RIGHT_TO_LEFT;
- if ((style & SWT.LEFT_TO_RIGHT) != 0) listStyle |= SWT.LEFT_TO_RIGHT;
- list = new List (popup, listStyle);
-
- int arrowStyle = SWT.ARROW | SWT.DOWN;
- if ((style & SWT.FLAT) != 0) arrowStyle |= SWT.FLAT;
- arrow = new Button (this, arrowStyle);
-
- Listener listener = new Listener () {
- public void handleEvent (Event event) {
- if (popup == event.widget) {
- popupEvent (event);
- return;
- }
- if (text == event.widget) {
- textEvent (event);
- return;
- }
- if (list == event.widget) {
- listEvent (event);
- return;
- }
- if (arrow == event.widget) {
- arrowEvent (event);
- return;
- }
- if (DynamicCellEditor.this == event.widget) {
- comboEvent (event);
- return;
- }
-
- }
- };
-
- int [] comboEvents = {SWT.Dispose, SWT.Move, SWT.Resize};
- for (int i=0; i<comboEvents.length; i++) this.addListener (comboEvents [i], listener);
-
- int [] popupEvents = {SWT.Close, SWT.Paint, SWT.Deactivate};
- for (int i=0; i<popupEvents.length; i++) popup.addListener (popupEvents [i], listener);
-
- int [] textEvents = {SWT.KeyDown, SWT.KeyUp, SWT.Modify, SWT.MouseDown, SWT.MouseUp, SWT.Traverse, SWT.FocusIn, SWT.FocusOut};
- for (int i=0; i<textEvents.length; i++) text.addListener (textEvents [i], listener);
-
- int [] listEvents = {SWT.MouseUp, SWT.Selection, SWT.Traverse, SWT.KeyDown, SWT.KeyUp, SWT.FocusIn, SWT.FocusOut};
- for (int i=0; i<listEvents.length; i++) list.addListener (listEvents [i], listener);
-
- int [] arrowEvents = {SWT.Selection, SWT.FocusIn, SWT.FocusOut};
- for (int i=0; i<arrowEvents.length; i++) arrow.addListener (arrowEvents [i], listener);
-
- initAccessible();
-}
-static int checkStyle (int style) {
- int mask = SWT.BORDER | SWT.READ_ONLY | SWT.FLAT | SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
- return style & mask;
-}
-/**
-* Adds an item.
-* <p>
-* The item is placed at the end of the list.
-* Indexing is zero based.
-*
-* @param string the new item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when the string is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_ADDED)
-* when the item cannot be added
-*/
-public void add (String string) {
- checkWidget();
- if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- list.add (string);
-}
-/**
-* Adds an item at an index.
-* <p>
-* The item is placed at an index in the list.
-* Indexing is zero based.
-*
-* This operation will fail when the index is
-* out of range.
-*
-* @param string the new item
-* @param index the index for the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when the string is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_ADDED)
-* when the item cannot be added
-*/
-public void add (String string, int index) {
- checkWidget();
- if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- list.add (string, index);
-}
-/**
-* Adds the listener to receive events.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when listener is null
-*/
-public void addModifyListener (ModifyListener listener) {;
- checkWidget();
- if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- TypedListener typedListener = new TypedListener (listener);
- addListener (SWT.Modify, typedListener);
-}
-/**
-* Adds the listener to receive events.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when listener is null
-*/
-public void addSelectionListener(SelectionListener listener) {
- checkWidget();
- if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- TypedListener typedListener = new TypedListener (listener);
- addListener (SWT.Selection,typedListener);
- addListener (SWT.DefaultSelection,typedListener);
-}
-void arrowEvent (Event event) {
- switch (event.type) {
- case SWT.FocusIn: {
- if (hasFocus) return;
- hasFocus = true;
- if (getEditable ()) text.selectAll ();
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusIn, e);
- break;
- }
- case SWT.FocusOut: {
- event.display.asyncExec(new Runnable() {
- public void run() {
- if (DynamicCellEditor.this.isDisposed()) return;
- Control focusControl = getDisplay().getFocusControl();
- if (focusControl == list || focusControl == text) return;
- hasFocus = false;
- Event e = new Event();
- notifyListeners(SWT.FocusOut, e);
- }
- });
- break;
- }
- case SWT.Selection: {
- dropDown (!isDropped ());
- break;
- }
- }
-}
-/**
-* Clears the current selection.
-* <p>
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public void clearSelection () {
- checkWidget();
- text.clearSelection ();
- list.deselectAll ();
-}
-void comboEvent (Event event) {
- switch (event.type) {
- case SWT.Dispose:
- if (popup != null && !popup.isDisposed ()) popup.dispose ();
- popup = null;
- text = null;
- list = null;
- arrow = null;
- break;
- case SWT.Move:
- dropDown(false);
- break;
- case SWT.Resize:
- internalLayout();
- break;
- }
-}
-
-public Point computeSize (int wHint, int hHint, boolean changed) {
- checkWidget();
- int width = 0, height = 0;
- Point textSize = text.computeSize (wHint, SWT.DEFAULT, changed);
- Point arrowSize = arrow.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
- Point listSize = list.computeSize (wHint, SWT.DEFAULT, changed);
- int borderWidth = getBorderWidth();
-
- height = Math.max (hHint, Math.max(textSize.y, arrowSize.y) + 2*borderWidth);
- width = Math.max (wHint, Math.max(textSize.x + arrowSize.x + 2*borderWidth, listSize.x + 2) );
- return new Point (width, height);
-}
-/**
-* Deselects an item.
-* <p>
-* If the item at an index is selected, it is
-* deselected. If the item at an index is not
-* selected, it remains deselected. Indices
-* that are out of range are ignored. Indexing
-* is zero based.
-*
-* @param index the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public void deselect (int index) {
- checkWidget();
- list.deselect (index);
-}
-/**
-* Deselects all items.
-* <p>
-*
-* If an item is selected, it is deselected.
-* If an item is not selected, it remains unselected.
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public void deselectAll () {
- checkWidget();
- list.deselectAll ();
-}
-void dropDown (boolean drop) {
- if (drop == isDropped ()) return;
- if (!drop) {
- popup.setVisible (false);
- text.setFocus();
- return;
- }
-
- int index = list.getSelectionIndex ();
- if (index != -1) list.setTopIndex (index);
- Display display = getDisplay ();
- Rectangle listRect = list.getBounds ();
- Rectangle parentRect = display.map (getParent (), null, getBounds());
- Point comboSize = getSize ();
- Rectangle displayRect = getMonitor().getClientArea();
- int width = Math.max (comboSize.x, listRect.width + 2);
- int height = listRect.height + 2;
- int x = parentRect.x;
- int y = parentRect.y + comboSize.y;
- if (y + height > displayRect.y + displayRect.height) y = parentRect.y - height;
- popup.setBounds (x, y, width, height);
- popup.setVisible (true);
- list.setFocus();
-}
-public Control [] getChildren () {
- checkWidget();
- return new Control [0];
-}
-boolean getEditable () {
- return text.getEditable ();
-}
-/**
-* Gets an item at an index.
-* <p>
-* Indexing is zero based.
-*
-* This operation will fail when the index is out
-* of range or an item could not be queried from
-* the OS.
-*
-* @param index the index of the item
-* @return the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_ITEM)
-* when the operation fails
-*/
-public String getItem (int index) {
- checkWidget();
- return list.getItem (index);
-}
-/**
-* Gets the number of items.
-* <p>
-* This operation will fail if the number of
-* items could not be queried from the OS.
-*
-* @return the number of items in the widget
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_COUNT)
-* when the operation fails
-*/
-public int getItemCount () {
- checkWidget();
- return list.getItemCount ();
-}
-/**
-* Gets the height of one item.
-* <p>
-* This operation will fail if the height of
-* one item could not be queried from the OS.
-*
-* @return the height of one item in the widget
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_ITEM_HEIGHT)
-* when the operation fails
-*/
-public int getItemHeight () {
- checkWidget();
- return list.getItemHeight ();
-}
-/**
-* Gets the items.
-* <p>
-* This operation will fail if the items cannot
-* be queried from the OS.
-*
-* @return the items in the widget
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_ITEM)
-* when the operation fails
-*/
-public String [] getItems () {
- checkWidget();
- return list.getItems ();
-}
-/**
-* Gets the selection.
-* <p>
-* @return a point representing the selection start and end
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public Point getSelection () {
- checkWidget();
- return text.getSelection ();
-}
-/**
-* Gets the index of the selected item.
-* <p>
-* Indexing is zero based.
-* If no item is selected -1 is returned.
-*
-* @return the index of the selected item.
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public int getSelectionIndex () {
- checkWidget();
- return list.getSelectionIndex ();
-}
-/**
-* Gets the widget text.
-* <p>
-* If the widget has no text, an empty string is returned.
-*
-* @return the widget text
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public String getText () {
- checkWidget();
- return text.getText ();
-}
-/**
-* Gets the height of the combo's text field.
-* <p>
-* The operation will fail if the height cannot
-* be queried from the OS.
-
-* @return the height of the combo's text field.
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_ERROR_CANNOT_GET_ITEM_HEIGHT)
-* when the operation fails
-*/
-public int getTextHeight () {
- checkWidget();
- return text.getLineHeight();
-}
-/**
-* Gets the text limit.
-* <p>
-* @return the text limit
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public int getTextLimit () {
- checkWidget();
- return text.getTextLimit ();
-}
-/**
-* Gets the index of an item.
-* <p>
-* The list is searched starting at 0 until an
-* item is found that is equal to the search item.
-* If no item is found, -1 is returned. Indexing
-* is zero based.
-*
-* @param string the search item
-* @return the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when string is null
-*/
-public int indexOf (String string) {
- checkWidget();
- if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- return list.indexOf (string);
-}
-/**
-* Gets the index of an item.
-* <p>
-* The widget is searched starting at start including
-* the end position until an item is found that
-* is equal to the search itenm. If no item is
-* found, -1 is returned. Indexing is zero based.
-*
-* @param string the search item
-* @param index the starting position
-* @return the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when string is null
-*/
-public int indexOf (String string, int start) {
- checkWidget();
- if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- return list.indexOf (string, start);
-}
-
-void initAccessible() {
- getAccessible().addAccessibleListener(new AccessibleAdapter() {
- public void getHelp(AccessibleEvent e) {
- e.result = getToolTipText();
- }
- });
-
- getAccessible().addAccessibleTextListener(new AccessibleTextAdapter() {
- public void getCaretOffset(AccessibleTextEvent e) {
- e.offset = text.getCaretPosition();
- }
- });
-
- getAccessible().addAccessibleControlListener(new AccessibleControlAdapter() {
- public void getChildAtPoint(AccessibleControlEvent e) {
- Point testPoint = toControl(new Point(e.x, e.y));
- if (getBounds().contains(testPoint)) {
- e.childID = ACC.CHILDID_SELF;
- }
- }
-
- public void getLocation(AccessibleControlEvent e) {
- Rectangle location = getBounds();
- Point pt = toDisplay(new Point(location.x, location.y));
- e.x = pt.x;
- e.y = pt.y;
- e.width = location.width;
- e.height = location.height;
- }
-
- public void getChildCount(AccessibleControlEvent e) {
- e.detail = 0;
- }
-
- public void getRole(AccessibleControlEvent e) {
- e.detail = ACC.ROLE_COMBOBOX;
- }
-
- public void getState(AccessibleControlEvent e) {
- e.detail = ACC.STATE_NORMAL;
- }
-
- public void getValue(AccessibleControlEvent e) {
- e.result = getText();
- }
- });
-}
-boolean isDropped () {
- return popup.getVisible ();
-}
-public boolean isFocusControl () {
- checkWidget();
- if (text.isFocusControl() || arrow.isFocusControl() || list.isFocusControl() || popup.isFocusControl()) {
- return true;
- } else {
- return super.isFocusControl();
- }
-}
-
-//public boolean isListVisible()
-//{
-// checkWidget();
-// return list.isVisible();
-//}
-
-void internalLayout () {
- if (isDropped ()) dropDown (false);
-
- Rectangle rect = getClientArea();
- int width = rect.width;
- int height = rect.height;
- Point arrowSize = arrow.computeSize(SWT.DEFAULT, height);
- text.setBounds (0, 0, width - arrowSize.x, height);
- arrow.setBounds (width - arrowSize.x, 0, arrowSize.x, arrowSize.y);
-
- Point size = getSize();
- int itemCount = list.getItemCount();
- itemCount = (itemCount == 0) ? maxItemCount : Math.min(maxItemCount, itemCount);
- int itemHeight = list.getItemHeight () * itemCount;
- Point listSize = list.computeSize (SWT.DEFAULT, itemHeight);
- list.setBounds (1, 1, Math.max (size.x - 2, listSize.x), listSize.y);
-}
-void listEvent (Event event) {
- switch (event.type) {
- case SWT.FocusIn: {
- if (hasFocus) return;
- hasFocus = true;
- if (getEditable ()) text.selectAll ();
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusIn, e);
- break;
- }
- case SWT.FocusOut: {
- event.display.asyncExec(new Runnable() {
- public void run() {
- if (DynamicCellEditor.this.isDisposed()) return;
- Control focusControl = getDisplay().getFocusControl();
- if (focusControl == text || focusControl == arrow || focusControl == list) return;
- hasFocus = false;
- Event e = new Event();
- notifyListeners(SWT.FocusOut, e);
- }
- });
- break;
- }
- case SWT.MouseUp: {
- if (event.button != 1) return;
- dropDown (false);
- break;
- }
- case SWT.Selection: {
- int index = list.getSelectionIndex ();
- if (index == -1) return;
- text.setText (list.getItem (index));
- text.selectAll ();
- list.setSelection(index);
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- e.doit = event.doit;
- notifyListeners(SWT.Selection, e);
- event.doit = e.doit;
- break;
- }
- case SWT.Traverse: {
- switch (event.detail) {
- case SWT.TRAVERSE_TAB_NEXT:
- case SWT.TRAVERSE_RETURN:
- case SWT.TRAVERSE_ESCAPE:
- case SWT.TRAVERSE_ARROW_PREVIOUS:
- case SWT.TRAVERSE_ARROW_NEXT:
- event.doit = false;
- break;
- }
- Event e = new Event();
- e.time = event.time;
- e.detail = event.detail;
- e.doit = event.doit;
- e.keyCode = event.keyCode;
- notifyListeners(SWT.Traverse, e);
- event.doit = e.doit;
- break;
- }
- case SWT.KeyUp: {
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyUp, e);
- break;
- }
- case SWT.KeyDown: {
- if (event.character == SWT.ESC) {
- // escape key cancels popup list
- dropDown (false);
- }
- if (event.character == SWT.CR || event.character == '\t') {
- // Enter and Tab cause default selection
- dropDown (false);
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.DefaultSelection, e);
- }
- //At this point the widget may have been disposed.
- // If so, do not continue.
- if (isDisposed()) break;
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyDown, e);
- break;
-
- }
- }
-}
-void popupEvent(Event event) {
- switch (event.type) {
- case SWT.Paint:
- // draw black rectangle around list
- Rectangle listRect = list.getBounds();
- Color black = getDisplay().getSystemColor(SWT.COLOR_BLACK);
- event.gc.setForeground(black);
- event.gc.drawRectangle(0, 0, listRect.width + 1, listRect.height + 1);
- break;
- case SWT.Close:
- event.doit = false;
- dropDown (false);
- break;
- case SWT.Deactivate:
- dropDown (false);
- break;
- }
-}
-public void redraw () {
- super.redraw();
- text.redraw();
- arrow.redraw();
- if (popup.isVisible()) list.redraw();
-}
-public void redraw (int x, int y, int width, int height, boolean all) {
- super.redraw(x, y, width, height, true);
-}
-
-/**
-* Removes an item at an index.
-* <p>
-* Indexing is zero based.
-*
-* This operation will fail when the index is out
-* of range or an item could not be removed from
-* the OS.
-*
-* @param index the index of the item
-* @return the selection state
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_REMOVED)
-* when the operation fails
-*/
-public void remove (int index) {
- checkWidget();
- list.remove (index);
-}
-/**
-* Removes a range of items.
-* <p>
-* Indexing is zero based. The range of items
-* is from the start index up to and including
-* the end index.
-*
-* This operation will fail when the index is out
-* of range or an item could not be removed from
-* the OS.
-*
-* @param start the start of the range
-* @param end the end of the range
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_REMOVED)
-* when the operation fails
-*/
-public void remove (int start, int end) {
- checkWidget();
- list.remove (start, end);
-}
-/**
-* Removes an item.
-* <p>
-* This operation will fail when the item
-* could not be removed from the OS.
-*
-* @param string the search item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when string is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_REMOVED)
-* when the operation fails
-*/
-public void remove (String string) {
- checkWidget();
- if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- list.remove (string);
-}
-/**
-* Removes all items.
-* <p>
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public void removeAll () {
- checkWidget();
- text.setText (""); //$NON-NLS-1$
- list.removeAll ();
-}
-/**
-* Removes the listener.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when listener is null
-*/
-public void removeModifyListener (ModifyListener listener) {
- checkWidget();
- if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- removeListener(SWT.Modify, listener);
-}
-/**
-* Removes the listener.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when listener is null
-*/
-public void removeSelectionListener (SelectionListener listener) {
- checkWidget();
- if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- removeListener(SWT.Selection, listener);
- removeListener(SWT.DefaultSelection,listener);
-}
-/**
-* Selects an item.
-* <p>
-* If the item at an index is not selected, it is
-* selected. Indices that are out of
-* range are ignored. Indexing is zero based.
-*
-* @param index the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-*/
-public void select (int index) {
- checkWidget();
- if (index == -1) {
- list.deselectAll ();
- text.setText (""); //$NON-NLS-1$
- return;
- }
- if (0 <= index && index < list.getItemCount()) {
- if (index != getSelectionIndex()) {
- text.setText (list.getItem (index));
- text.selectAll ();
- list.select (index);
- list.showSelection ();
- }
- }
-}
-public void setBackground (Color color) {
- super.setBackground(color);
- if (text != null) text.setBackground(color);
- if (list != null) list.setBackground(color);
- if (arrow != null) arrow.setBackground(color);
-}
-public boolean setFocus () {
- checkWidget();
- return text.setFocus ();
-}
-public void setFont (Font font) {
- super.setFont (font);
- text.setFont (font);
- list.setFont (font);
- internalLayout ();
-}
-public void setForeground (Color color) {
- super.setForeground(color);
- if (text != null) text.setForeground(color);
- if (list != null) list.setForeground(color);
- if (arrow != null) arrow.setForeground(color);
-}
-/**
-* Sets the text of an item; indexing is zero based.
-*
-* This operation will fail when the index is out
-* of range or an item could not be changed in
-* the OS.
-*
-* @param index the index for the item
-* @param string the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when items is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_MODIFIED)
-* when the operation fails
-*/
-public void setItem (int index, String string) {
- checkWidget();
- if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- list.setItem (index, string);
-}
-/**
-* Sets all items.
-*
-* @param items the array of items
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when items is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_ADDED)
-* when the operation fails
-*/
-public void setItems (String [] items) {
- checkWidget();
- if (items == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- int style = getStyle();
- if ((style & SWT.READ_ONLY) != 0) text.setText (""); //$NON-NLS-1$
- list.setItems (items);
-}
-/**
-* Sets the new selection.
-*
-* @param selection point representing the start and the end of the new selection
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when selection is null
-*/
-public void setSelection (Point selection) {
- checkWidget();
- if (selection == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- text.setSelection (selection.x, selection.y);
-}
-
-/**
-* Sets the widget text.
-*
-* @param string the widget text
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-* when string is null
-*/
-public void setText (String string) {
- checkWidget();
- if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
- int index = list.indexOf (string);
- if (index == -1) {
- list.deselectAll ();
- text.setText (string);
- return;
- }
- text.setText (string);
- text.selectAll ();
- list.setSelection (index);
- list.showSelection ();
-}
-/**
-* Sets the text limit.
-*
-* @param limit new text limit
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-* when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-* when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_BE_ZERO)
-* when limit is 0
-*/
-public void setTextLimit (int limit) {
- checkWidget();
- text.setTextLimit (limit);
-}
-
-public void setToolTipText (String string) {
- checkWidget();
- super.setToolTipText(string);
- arrow.setToolTipText (string);
- text.setToolTipText (string);
-}
-
-public void setVisible (boolean visible) {
- super.setVisible(visible);
- if (!visible) popup.setVisible(false);
-}
-
-void textEvent (Event event) {
- switch (event.type) {
- case SWT.FocusIn: {
- if (hasFocus) return;
- hasFocus = true;
- if (getEditable ()) text.selectAll ();
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.FocusIn, e);
- break;
- }
- case SWT.FocusOut: {
- event.display.asyncExec(new Runnable() {
- public void run() {
- if (DynamicCellEditor.this.isDisposed()) return;
- Control focusControl = getDisplay().getFocusControl();
- if (focusControl == list || focusControl == arrow) return;
- hasFocus = false;
- Event e = new Event();
- notifyListeners(SWT.FocusOut, e);
- }
- });
- break;
- }
- case SWT.KeyDown: {
-
- if (event.character == SWT.ESC) { // escape key cancels popup list
- dropDown (false);
- }
- if (event.character == SWT.CR) {
- dropDown (false);
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.DefaultSelection, e);
- }
- //At this point the widget may have been disposed.
- // If so, do not continue.
- if (isDisposed()) break;
-
- if (event.keyCode == SWT.ARROW_UP || event.keyCode == SWT.ARROW_DOWN) {
- int oldIndex = getSelectionIndex ();
- if (event.keyCode == SWT.ARROW_UP) {
- select (Math.max (oldIndex - 1, 0));
- } else {
- select (Math.min (oldIndex + 1, getItemCount () - 1));
- }
-
- if (oldIndex != getSelectionIndex ()) {
- Event e = new Event();
- e.time = event.time;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.Selection, e);
- }
- //At this point the widget may have been disposed.
- // If so, do not continue.
- if (isDisposed()) break;
- }
-
- // Further work : Need to add support for incremental search in
- // pop up list as characters typed in text widget
-
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyDown, e);
- break;
- }
- case SWT.KeyUp: {
- Event e = new Event();
- e.time = event.time;
- e.character = event.character;
- e.keyCode = event.keyCode;
- e.stateMask = event.stateMask;
- notifyListeners(SWT.KeyUp, e);
- break;
- }
- case SWT.Modify: {
- list.deselectAll ();
- Event e = new Event();
- e.time = event.time;
- notifyListeners(SWT.Modify, e);
- break;
- }
- case SWT.MouseDown: {
- if (event.button != 1) return;
- if (text.getEditable ()) return;
- boolean dropped = isDropped ();
- text.selectAll ();
- if (!dropped) setFocus ();
- dropDown (!dropped);
- break;
- }
- case SWT.MouseUp: {
- if (event.button != 1) return;
- if (text.getEditable ()) return;
- text.selectAll ();
- break;
- }
- case SWT.Traverse: {
- switch (event.detail) {
- case SWT.TRAVERSE_RETURN:
- case SWT.TRAVERSE_ARROW_PREVIOUS:
- case SWT.TRAVERSE_ARROW_NEXT:
- // The enter causes default selection and
- // the arrow keys are used to manipulate the list contents so
- // do not use them for traversal.
- event.doit = false;
- break;
- }
-
- Event e = new Event();
- e.time = event.time;
- e.detail = event.detail;
- e.doit = event.doit;
- e.keyCode = event.keyCode;
- notifyListeners(SWT.Traverse, e);
- event.doit = e.doit;
- break;
- }
- }
-}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ElementPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ElementPropertySource.java
deleted file mode 100644
index 9f21082..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ElementPropertySource.java
+++ /dev/null
@@ -1,543 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class ElementPropertySource extends BasePropertySource implements IPropertySource
-{
- private String[] blockComboValues =
- { "", "#all", "extension", "restriction", "substitution" };
- private String[] finalComboValues =
- { "", "#all", "extension", "restriction" };
- private String[] substitutionGroupComboValues = { "" };
- private String[] formComboValues =
- {
- "",
- XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"),
- XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED")
- };
-
- public ElementPropertySource()
- {
- super();
- }
-
- public ElementPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
-
- public ElementPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
-
- public void setInput(Element element)
- {
- this.element = element;
- TypesHelper helper = new TypesHelper(xsdSchema);
- List globals = helper.getGlobalElements();
- int size = globals.size() + 1;
- substitutionGroupComboValues = new String[size];
- substitutionGroupComboValues[0] = "";
- if (globals != null)
- {
- for (int k = 0; k < globals.size(); k++)
- {
- substitutionGroupComboValues[k + 1] = (String) globals.get(k);
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
-// return element.getNodeName();
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- Object parentNode = element.getParentNode();
- boolean isGlobalElement = XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false);
-
- List list = new ArrayList();
- // Create a descriptor and set a category
-// These have been moved to the general tab
-// PropertyDescriptor nameDescriptor =
-// new TextPropertyDescriptor(
-// XSDConstants.NAME_ATTRIBUTE,
-// XSDConstants.NAME_ATTRIBUTE);
-// list.add(nameDescriptor);
-// TypesPropertyDescriptor typeDescriptor = new TypesPropertyDescriptor(
-// XSDConstants.TYPE_ATTRIBUTE,
-// XSDConstants.TYPE_ATTRIBUTE,
-// element, xsdSchema);
-// list.add(typeDescriptor);
- if (isGlobalElement)
- {
- XSDComboBoxPropertyDescriptor abstractDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.ABSTRACT_ATTRIBUTE,
- XSDConstants.ABSTRACT_ATTRIBUTE,
- trueFalseComboValues);
- list.add(abstractDescriptor);
- }
- if (!isGlobalElement)
- {
- PropertyDescriptor minOccursDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.MINOCCURS_ATTRIBUTE,
- XSDConstants.MINOCCURS_ATTRIBUTE);
- list.add(minOccursDescriptor);
-
- PropertyDescriptor maxOccursDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.MAXOCCURS_ATTRIBUTE,
- XSDConstants.MAXOCCURS_ATTRIBUTE);
- list.add(maxOccursDescriptor);
- }
- XSDComboBoxPropertyDescriptor nillableDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.NILLABLE_ATTRIBUTE,
- XSDConstants.NILLABLE_ATTRIBUTE,
- trueFalseComboValues);
- list.add(nillableDescriptor);
- XSDComboBoxPropertyDescriptor blockDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.BLOCK_ATTRIBUTE,
- XSDConstants.BLOCK_ATTRIBUTE,
- blockComboValues);
- list.add(blockDescriptor);
- if (isGlobalElement)
- {
- XSDComboBoxPropertyDescriptor finalDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.FINAL_ATTRIBUTE,
- XSDConstants.FINAL_ATTRIBUTE,
- finalComboValues);
- list.add(finalDescriptor);
- XSDComboBoxPropertyDescriptor substitutionGroupDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE,
- XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE,
- substitutionGroupComboValues);
- list.add(substitutionGroupDescriptor);
- }
- if (!isGlobalElement)
- {
- XSDComboBoxPropertyDescriptor formDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.FORM_ATTRIBUTE,
- XSDConstants.FORM_ATTRIBUTE,
- formComboValues);
- list.add(formDescriptor);
- }
-
- Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
- Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
- String str;
- if (fixedAttr != null)
- {
- str = XSDConstants.FIXED_ATTRIBUTE;
- }
- else if (defaultAttr != null)
- {
- str = XSDConstants.DEFAULT_ATTRIBUTE;
- }
- else
- {
- str = XSDConstants.FIXED_ATTRIBUTE + "/" + XSDConstants.DEFAULT_ATTRIBUTE;
- }
-
- FixedOrDefaultTextPropertyDescriptor fixedOrDefaultDescriptor =
- new FixedOrDefaultTextPropertyDescriptor(
- str,
- str,
- element);
- list.add(fixedOrDefaultDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- // return propertyDescriptors;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- String attributeName = (String)id;
- result = element.getAttribute(attributeName);
- if (result == null)
- {
- result = "";
- }
- if (attributeName.equals(XSDConstants.TYPE_ATTRIBUTE))
- {
- boolean isAnonymous = checkForAnonymousType(element);
- if (isAnonymous)
- {
- return "**anonymous**";
- }
- if (result.equals(""))
- {
- result = XSDEditorPlugin.getXSDString("_UI_NO_TYPE");
- }
- return result;
- }
- else if (attributeName.equals(XSDConstants.MAXOCCURS_ATTRIBUTE)
- || attributeName.equals(XSDConstants.MINOCCURS_ATTRIBUTE)
- || attributeName.equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE)
- || attributeName.equals(XSDConstants.FORM_ATTRIBUTE)
- || attributeName.equals(XSDConstants.ABSTRACT_ATTRIBUTE)
- || attributeName.equals(XSDConstants.NILLABLE_ATTRIBUTE)
- || attributeName.equals(XSDConstants.BLOCK_ATTRIBUTE)
- || attributeName.equals(XSDConstants.FINAL_ATTRIBUTE)
- || attributeName.equals(XSDConstants.FIXED_ATTRIBUTE)
- || attributeName.equals(XSDConstants.DEFAULT_ATTRIBUTE)
- || attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
- {
- return result;
- }
- }
- return "";
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object,
- * java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- String attributeName = (String)id;
-
- if (attributeName.equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.MINOCCURS_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_SUBSTITUTIONGROUP_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.FORM_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_FORM_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.ABSTRACT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_ABSTRACT_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.NILLABLE_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_NILLABLE_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.BLOCK_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_BLOCK_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.FINAL_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_FINAL_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.FIXED_ATTRIBUTE) || attributeName.equals(XSDConstants.DEFAULT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_VALUE_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_NAME_CHANGE"), element);
- // now rename any references to this element
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-
- // TODO cs : revisit
- //if (comp != null && comp instanceof XSDElementDeclaration && comp.getContainer().equals(xsdSchema))
- //{
- //GlobalElementRenamer renamer = new GlobalElementRenamer((XSDNamedComponent)comp, newValue);
- //renamer.visitSchema(xsdSchema);
- //}
- }
- }
- }
- else if (attributeName.equals(XSDConstants.TYPE_ATTRIBUTE))
- {
- // put logic in descriptor/cell editor
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
- }
-
- if (newValue.length() > 0)
- {
- element.setAttribute((String) id, (String) value);
- }
- else
- {
- if (!attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
- {
- element.removeAttribute((String) id);
- }
- }
- endRecording(element);
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- boolean checkForAnonymousType(Element element)
- {
- /* Using Ed's model to check
- boolean isAnonymous = false;
-
- XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
- if (component instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
- isAnonymous = xsdElem.isSetAnonymousTypeDefinition();
- }
- return isAnonymous;
- */
-
- boolean isAnonymous = false;
-
- Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- return true;
- }
- aNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- isAnonymous = true;
- }
- return isAnonymous;
- }
-
-
-// void updateElementToAnonymous(Element element, String xsdType)
-// {
-// String prefix = element.getPrefix();
-// prefix = (prefix == null) ? "" : (prefix + ":");
-//
-// updateElementToNotAnonymous(element);
-// boolean hasChildrenElements = hasElementChildren(element);
-//
-// Element childNode = null;
-// if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-// {
-// childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-// }
-// else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
-// {
-// childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-// }
-//
-// element.appendChild(childNode);
-// formatChild(childNode, hasChildrenElements);
-//
-//
-// /* Using Ed's model to do the above
-// XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-// if (component instanceof XSDElementDeclaration)
-// {
-// XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-// XSDFactoryImpl factory = new XSDFactoryImpl();
-// XSDComplexTypeDefinition complex = factory.createXSDComplexTypeDefinition();
-// XSDSimpleTypeDefinition simple = factory.createXSDSimpleTypeDefinition();
-//
-// Node child = element.getFirstChild();
-// if (XSDDOMHelper.inputEquals(child, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false) ||
-// XSDDOMHelper.inputEquals(child, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-// {
-// element.removeChild(child);
-// }
-//
-// FormatProcessor formatProcessor = new FormatProcessor();
-// if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-// {
-// xsdElem.setAnonymousTypeDefinition(complex);
-// Element elem = complex.getElement();
-// formatProcessor.formatWithSiblingIndent((XMLNode)elem);
-// }
-// else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
-// {
-// xsdElem.setAnonymousTypeDefinition(simple);
-// Element elem = simple.getElement();
-// formatProcessor.formatWithSiblingIndent((XMLNode)elem);
-// }
-// }
-// component.updateElement();
-// */
-// }
-//
-// boolean isSTAnonymous(Element element)
-// {
-// Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-// if (aNode != null)
-// {
-// if (XSDDOMHelper.inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-// {
-// return true;
-// }
-// }
-// return false;
-// }
-//
-// boolean isCTAnonymous(Element element)
-// {
-// Node aNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-// if (aNode != null)
-// {
-// if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-// {
-// return true;
-// }
-// }
-// return false;
-// }
-//
-// XSDTypeDefinition getAnonymousTypeDefinition(Element element)
-// {
-// Node typeDefinitionNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-// if (typeDefinitionNode == null)
-// {
-// typeDefinitionNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-// }
-// if (typeDefinitionNode != null)
-// {
-// XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(typeDefinitionNode);
-// if (component instanceof XSDTypeDefinition)
-// {
-// return (XSDTypeDefinition)component;
-// }
-// }
-// return null;
-//
-// /* XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-// if (component instanceof XSDElementDeclaration)
-// {
-// XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-//
-// return xsdElem.getAnonymousTypeDefinition();
-// }
-// return null;
-// */
-// }
-//
-// void updateElementToNotAnonymous(Element element)
-// {
-// NodeList children = element.getChildNodes();
-// if (children != null)
-// {
-// for (int i = 0; i < children.getLength(); i++)
-// {
-// Node node = (Node)children.item(i);
-// if (node instanceof Element)
-// {
-// if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG) ||
-// node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-// {
-// XSDDOMHelper.removeNodeAndWhitespace(node);
-// i=0;
-// }
-// }
-// }
-// }
-// /* XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-// if (component instanceof XSDElementDeclaration)
-// {
-// XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-// if (xsdElem.isSetAnonymousTypeDefinition())
-// {
-// xsdElem.unsetAnonymousTypeDefinition();
-// xsdElem.setAnonymousTypeDefinition(null);
-// }
-// }
-// component.updateElement();
-// */
-// }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/EnumerationPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/EnumerationPropertySource.java
deleted file mode 100644
index 31b7d35..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/EnumerationPropertySource.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class EnumerationPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public EnumerationPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public EnumerationPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public EnumerationPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- PropertyDescriptor nameDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.VALUE_ATTRIBUTE,
- XSDConstants.VALUE_ATTRIBUTE);
- list.add(nameDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), element);
- element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, (String)value);
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/FixedOrDefaultTextPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/FixedOrDefaultTextPropertyDescriptor.java
deleted file mode 100644
index 1cdced0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/FixedOrDefaultTextPropertyDescriptor.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-
-
-public class FixedOrDefaultTextPropertyDescriptor extends PropertyDescriptor
-{
- protected static String choice = "";
- Element element;
- /**
- * @param id
- * @param displayName
- */
- public FixedOrDefaultTextPropertyDescriptor(Object id, String displayName, Element element)
- {
- super(id, displayName);
- this.element = element;
- }
-
- public CellEditor createPropertyEditor(Composite parent)
- {
- CellEditor editor = new FixedOrDefaultTextCellEditor(parent);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
-
-// public void setChoice(String newChoice)
-// {
-// choice = newChoice;
-// }
-
- public Object getId()
- {
- Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
- Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
- if (fixedAttr != null)
- {
- choice = "fixed";
- }
- else if (defaultAttr != null) // what if both attributes were specified? Use default...
- {
- choice = "default";
- }
- else
- {
- choice = "";
- }
-
- if (choice.equals("fixed"))
- {
- return "fixed";
- }
- else if (choice.equals("default"))
- {
- return "default";
- }
- else
- {
- return super.getId();
- }
- }
-
- public String getDisplayName()
- {
- Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
- Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
- if (fixedAttr != null)
- {
- choice = "fixed";
- }
- else if (defaultAttr != null) // what if both attributes were specified? Use default...
- {
- choice = "default";
- }
- else
- {
- choice = "fixed/default";
- }
-
- if (choice.equals("fixed"))
- {
- return "fixed";
- }
- else if (choice.equals("default"))
- {
- return "default";
- }
- else
- {
- return super.getDisplayName();
- }
- }
-
- class FixedOrDefaultTextCellEditor extends DialogCellEditor
- {
- public FixedOrDefaultTextCellEditor(Composite parent)
- {
- super(parent);
- }
-
- protected Object openDialogBox(Control cellEditorWindow)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
- FixedOrDefaultDialog dialog = new FixedOrDefaultDialog(shell);
-
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- dialog.getValue();
- fireApplyEditorValue();
- }
- deactivate();
- return null;
- }
- }
-
- class FixedOrDefaultDialog extends Dialog implements SelectionListener
- {
- private int FIXED = 0;
- private int DEFAULT = 1;
- private int type;
- protected Button fixedButton, defaultButton;
- protected Text valueField;
- protected String valueString = "";
-
- public FixedOrDefaultDialog(Shell shell)
- {
- super(shell);
- }
-
- protected void configureShell(Shell shell)
- {
- super.configureShell(shell);
- }
-
- protected void buttonPressed(int buttonId)
- {
- if (buttonId == Dialog.OK)
- {
- valueString = valueField.getText();
- applyEditorValueAndDeactivate();
- }
- super.buttonPressed(buttonId);
- }
-
- public String getValue() { return valueString; }
- public String getType() { return type == FIXED? "fixed" : "default"; }
-
- //
- // Create the controls
- //
- public Control createDialogArea(Composite parent)
- {
- Composite client = (Composite)super.createDialogArea(parent);
- getShell().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_FIXEDORDEFAULT_VALUE"));
-
- GridLayout gl = new GridLayout(1, true);
-// gl.marginHeight = 0;
-// gl.marginWidth = 0;
-// gl.horizontalSpacing = 0;
-// gl.verticalSpacing = 0;
- client.setLayout(gl);
-
- GridData gd = new GridData();
- gd.grabExcessHorizontalSpace = true;
- gd.grabExcessVerticalSpace = true;
- gd.horizontalAlignment = GridData.FILL;
- gd.verticalAlignment = GridData.FILL;
- gd.horizontalIndent = 0;
- client.setLayoutData(gd);
-
-// isTextReadOnly = false;
-
- fixedButton = ViewUtility.createRadioButton(client, XSDEditorPlugin.getXSDString("_UI_FIXED"));
-// WorkbenchHelp.setHelp(fixedButton, XSDEditorContextIds.XSDE_ELEMENT_FIXED);
-
- defaultButton = ViewUtility.createRadioButton(client, XSDEditorPlugin.getXSDString("_UI_DEFAULT"));
-// WorkbenchHelp.setHelp(defaultButton, XSDEditorContextIds.XSDE_ELEMENT_DEFAULT);
-
- valueField = ViewUtility.createTextField(client, 30);
-
-// WorkbenchHelp.setHelp(valueField, XSDEditorContextIds.XSDE_ELEMENT_VALUE);
-// valueField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_VALUE"));
-
- WorkbenchHelp.setHelp(fixedButton, XSDEditorContextIds.XSDE_ATTRIBUTE_FIXED);
- WorkbenchHelp.setHelp(defaultButton, XSDEditorContextIds.XSDE_ATTRIBUTE_DEFAULT);
- // WorkbenchHelp.setHelp(valueField, XSDEditorContextIds.XSDE_ATTRIBUTE_VALUE);
-
- Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
- Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
-
- if (fixedAttr != null)
- {
- fixedButton.setSelection(true);
- defaultButton.setSelection(false);
- choice = "fixed";
- type = FIXED;
- valueField.setText(element.getAttribute("fixed"));
- valueField.setFocus();
- valueField.selectAll();
- }
- if (defaultAttr != null) // what if both attributes were specified? Use default...
- {
- fixedButton.setSelection(false);
- defaultButton.setSelection(true);
- choice = "default";
- type = DEFAULT;
- valueField.setText(element.getAttribute("default"));
- valueField.setFocus();
- valueField.selectAll();
- }
-
- fixedButton.addSelectionListener(this);
- defaultButton.addSelectionListener(this);
- return client;
- }
-
- void applyEditorValueAndDeactivate()
- {
- String value = valueField.getText();
- if (value != null && value.length() > 0)
- {
- choice = type == FIXED? "fixed" : "default";
- }
- if (value != null && value.length() > 0)
- {
- if (choice.equals("fixed"))
- {
- element.removeAttribute(XSDConstants.DEFAULT_ATTRIBUTE);
- element.setAttribute(XSDConstants.FIXED_ATTRIBUTE, value);
- }
- else if (choice.equals("default"))
- {
- element.removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
- element.setAttribute(XSDConstants.DEFAULT_ATTRIBUTE, value);
- }
- }
- if (value.equals(""))
- {
- choice = "";
- element.removeAttribute(XSDConstants.DEFAULT_ATTRIBUTE);
- element.removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
- }
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == fixedButton && fixedButton.getSelection())
- {
- type = FIXED;
- choice = "fixed";
- }
- else if (e.widget == defaultButton && defaultButton.getSelection())
- {
- type = DEFAULT;
- choice = "default";
- }
- }
-
- public void widgetDefaultSelected(SelectionEvent e)
- {
- }
-
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/GroupRefPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/GroupRefPropertySource.java
deleted file mode 100644
index ffe87ae..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/GroupRefPropertySource.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class GroupRefPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String[] refComboValues = { "" };
- /**
- *
- */
- public GroupRefPropertySource()
- {
- super();
- }
-
-// public void setReferenceComboContextHelp(String contextId)
-// {
-// WorkbenchHelp.setHelp(refCombo, contextId);
-// }
-
- /**
- * @param viewer
- * @param xsdSchema
- */
- public GroupRefPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public GroupRefPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
-
- public void setInput(Element element)
- {
- this.element = element;
- TypesHelper helper = new TypesHelper(xsdSchema);
- java.util.List items = helper.getGlobalElements();
- if (XSDDOMHelper.inputEquals(element, XSDConstants.GROUP_ELEMENT_TAG, true))
- {
- items = helper.getModelGroups();
- // Need tooltip for Group Ref
-// minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-// WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_GROUP_REF_MINIMUM);
-// maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-// WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_GROUP_REF_MAXIMUM);
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
- {
- items = helper.getGlobalElements();
-// minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-// WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MINIMUM);
-// maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-// WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MAXIMUM);
- }
-
- int size = items.size() + 1;
- refComboValues = new String[size];
- refComboValues[0] = "";
- if (items != null)
- {
- for (int i = 0; i < items.size(); i++)
- {
- refComboValues[i + 1] = (String) items.get(i);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- XSDComboBoxPropertyDescriptor refDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.REF_ATTRIBUTE,
- XSDConstants.REF_ATTRIBUTE,
- refComboValues);
- list.add(refDescriptor);
-
- PropertyDescriptor minOccursDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.MINOCCURS_ATTRIBUTE,
- XSDConstants.MINOCCURS_ATTRIBUTE);
- list.add(minOccursDescriptor);
- PropertyDescriptor maxOccursDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.MAXOCCURS_ATTRIBUTE,
- XSDConstants.MAXOCCURS_ATTRIBUTE);
- list.add(maxOccursDescriptor);
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = "";
- }
- return result;
-
-// if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
-// {
-// return result;
-// }
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- if (((String) id).equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
- {
- String max = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
- if (max.length() > 0)
- {
- element.setAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE, max);
- }
- else
- {
- element.removeAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.MINOCCURS_ATTRIBUTE))
- {
- String min = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);
- if (min.length() > 0)
- {
- element.setAttribute(XSDConstants.MINOCCURS_ATTRIBUTE, min);
- }
- else
- {
- element.removeAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_REF_CHANGE"), element);
- element.setAttribute((String) id, newValue);
- endRecording(element);
- }
- }
-// Runnable delayedUpdate = new Runnable()
-// {
-// public void run()
-// {
- if (viewer != null)
- viewer.refresh();
-// }
-// };
-// Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ImportPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ImportPropertySource.java
deleted file mode 100644
index 6172f69..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ImportPropertySource.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class ImportPropertySource
- extends SchemaDirectiveHelperPropertySource
- implements IPropertySource
-{
- boolean isSetNamespace = false;
- /**
- * @param viewer
- * @param xsdSchema
- */
- public ImportPropertySource(Viewer viewer, XSDSchema xsdSchema, IFile currentIFile)
- {
- super(viewer, xsdSchema, false);
- this.currentIFile = currentIFile;
-// WorkbenchHelp.setHelp(controlsContainer, XSDEditorContextIds.XSDE_IMPORT_DESIGN_VIEW);
-//WorkbenchHelp.setHelp(selectButton, XSDEditorContextIds.XSDE_INCLUDE_HELPER_SELECT);
-//WorkbenchHelp.setHelp(prefixField, XSDEditorContextIds.XSDE_IMPORT_PREFIX);
- }
- /**
- * @param xsdSchema
- */
- public ImportPropertySource(XSDSchema xsdSchema, IFile currentIFile)
- {
- super(xsdSchema, false);
- this.currentIFile = currentIFile;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-
- SchemaLocationPropertyDescriptor schemaLocationDescriptor =
- new SchemaLocationPropertyDescriptor(
- XSDConstants.SCHEMALOCATION_ATTRIBUTE,
- XSDConstants.SCHEMALOCATION_ATTRIBUTE
- );
- schemaLocationDescriptor.setHelpContextIds(XSDEditorContextIds.XSDE_INCLUDE_HELPER_SELECT);
- list.add(schemaLocationDescriptor);
-
- if (isSetNamespace)
- {
- PropertyDescriptor prefixDescriptor =
- new TextPropertyDescriptor(
- "Prefix",
- "Prefix");
- prefixDescriptor.setHelpContextIds(XSDEditorContextIds.XSDE_IMPORT_PREFIX);
- list.add(prefixDescriptor);
- }
- else
- {
- PropertyDescriptor prefixDescriptor =
- new PropertyDescriptor(
- "Prefix",
- "Prefix");
- prefixDescriptor.setHelpContextIds(XSDEditorContextIds.XSDE_IMPORT_PREFIX);
- list.add(prefixDescriptor);
- }
-
- PropertyDescriptor namespaceDescriptor =
- new PropertyDescriptor(
- XSDConstants.NAMESPACE_ATTRIBUTE,
- XSDConstants.NAMESPACE_ATTRIBUTE);
- list.add(namespaceDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- String attributeName = (String)id;
- if (result == null)
- {
- result = "";
- }
-
- if (attributeName.equals("Prefix"))
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE), false);
- if (aPrefix != null && aPrefix.length() > 0)
- {
- return aPrefix;
- }
- return "";
- }
- else
- {
- return result;
- }
- }
- return "";
-
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- TypesHelper typesHelper = new TypesHelper(xsdSchema);
- String namespace = element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
- String oldPrefixValue = typesHelper.getPrefix(namespace, false);
-
- String schemaLocation = element.getAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE);
- if (((String) id).equals("Prefix"))
- {
- if (validatePrefix(newValue) && schemaLocation.length() > 0)
- {
- Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
- if (map.containsKey(newValue))
- {
-// setErrorMessage(XSDEditorPlugin.getXSDString("_ERROR_LABEL_PREFIX_EXISTS"));
- }
- else
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PREFIX_CHANGE"), element);
- map.remove(oldPrefixValue);
- map.put(newValue, namespace);
- XSDSchemaHelper.updateElement(xsdSchema);
-
- endRecording(element);
- }
- }
- }
- else if (((String) id).equals(XSDConstants.SCHEMALOCATION_ATTRIBUTE))
- {
- updateExternalModel((String)value, selectedIFile, selectedNamespace, selectedXSDSchema);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- public void setInput(Element element)
- {
- this.element = element;
- String namespace = element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
- if (namespace != null && namespace.trim().length() > 0)
- {
- isSetNamespace = true;
- }
-
- }
-
- protected void updateExternalModel(String newLocation, IFile newFile, String namespace, XSDSchema externalSchema)
- {
- if (xsdSchema == null) // in case we have a bad schema
- {
- return;
- }
- Element importElement = element;
- if (namespace == null)
- {
- namespace = "";
- }
-
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp instanceof XSDImport)
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_IMPORT_CHANGE"), importElement);
- java.util.Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
- // Referential integrity on old import
- // How can we be sure that if the newlocation is the same as the oldlocation
- // the file hasn't changed
-
- XSDSchema referencedSchema = ((XSDSchemaDirective)comp).getResolvedSchema();
- if (referencedSchema != null)
- {
- XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
- cleanHelper.visitSchema(xsdSchema);
- }
-
- Element schemaElement = xsdSchema.getElement();
-
- // update the xmlns in the schema element first, and then update the import element next
- // so that the last change will be in the import element. This keeps the selection
- // on the import element
- TypesHelper helper = new TypesHelper(externalSchema);
- String prefix = helper.getPrefix(namespace, false);
-
- boolean prefixAlreadyExists = false;
- if (map.containsKey(prefix))
- {
- prefixAlreadyExists = true;
- }
-
- if (prefix == null || (prefix !=null && prefix.length() == 0) || prefixAlreadyExists)
- {
- prefix = "pref";
-
- int prefixExtension = 1;
- while (map.containsKey(prefix) && prefixExtension < 100)
- {
- prefix = prefix + String.valueOf(prefixExtension);
- prefixExtension++;
- }
- }
-
- if (namespace.length() > 0)
- {
- // if ns already in map, use its corresponding prefix
- if (map.containsValue(namespace))
- {
- TypesHelper typesHelper = new TypesHelper(xsdSchema);
- prefix = typesHelper.getPrefix(namespace, false);
- }
- else // otherwise add to the map
- {
- schemaElement.setAttribute("xmlns:"+prefix, namespace);
- }
- }
-
- // Now update the import element's attributes
- importElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, newLocation);
-
- if (!namespace.equals(""))
- {
- importElement.setAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, namespace);
- }
- else
- {
- importElement.removeAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
- }
-
- endRecording(importElement);
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/IncludePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/IncludePropertySource.java
deleted file mode 100644
index d1e9e12..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/IncludePropertySource.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class IncludePropertySource
- extends SchemaDirectiveHelperPropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public IncludePropertySource(IFile currentIFile)
- {
- super(true);
- this.currentIFile = currentIFile;
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public IncludePropertySource(Viewer viewer, XSDSchema xsdSchema, IFile currentIFile)
- {
- super(viewer, xsdSchema, true);
- this.currentIFile = currentIFile;
- }
- /**
- * @param xsdSchema
- */
- public IncludePropertySource(XSDSchema xsdSchema, IFile currentIFile)
- {
- super(xsdSchema, true);
- this.currentIFile = currentIFile;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-
- SchemaLocationPropertyDescriptor schemaLocationDescriptor =
- new SchemaLocationPropertyDescriptor(
- XSDConstants.SCHEMALOCATION_ATTRIBUTE,
- XSDConstants.SCHEMALOCATION_ATTRIBUTE);
-
- list.add(schemaLocationDescriptor);
-
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- if (((String) id).equals(XSDConstants.SCHEMALOCATION_ATTRIBUTE))
- {
- //element.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, (String)value);
- updateExternalModel((String)value, selectedIFile, selectedNamespace, selectedXSDSchema);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
- }
-
- protected void updateExternalModel(String newLocation, IFile newFile, String namespace, XSDSchema externalSchema)
- {
- Element includeElement = element;
-
- String existingSchemaLocation = includeElement.getAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE);
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_INCLUDE_CHANGE"), includeElement);
- includeElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, newLocation);
-
- // If there is no existing schemaLocation, then just set it
- if (existingSchemaLocation == null)
- {
- return;
- }
-
- XSDConcreteComponent includeComponent = xsdSchema.getCorrespondingComponent(includeElement);
- if (includeComponent instanceof XSDInclude)
- {
- XSDInclude include = (XSDInclude) includeComponent;
-
- XSDSchema referencedSchema = include.getResolvedSchema();
- if (referencedSchema != null)
- {
- XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
- cleanHelper.visitSchema(xsdSchema);
-
- xsdSchema.update();
- include.updateElement();
- }
-
- }
- endRecording(includeElement);
- }
-
-
-// Redefine's version
-// protected void updateExternalModel(IFile newFile, String namespace, XSDSchema externalSchema)
-// {
-// Element redefineElement = (Element) getNode();
-//
-// redefineElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationField.getText());
-//
-// String existingSchemaLocation = redefineElement.getAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE);
-//
-// // If there is no existing schemaLocation, then just set it and return
-// if (existingSchemaLocation == null)
-// {
-// return;
-// }
-//
-// XSDConcreteComponent redefineComponent = getXSDSchema().getCorrespondingComponent(redefineElement);
-// if (redefineComponent instanceof XSDRedefine)
-// {
-// XSDRedefine redefine = (XSDRedefine) redefineComponent;
-// XSDExternalFileCleanup cleanup = new XSDExternalFileCleanup(redefine.getIncorporatedSchema());
-//
-// cleanup.visitSchema(getXSDSchema());
-// if (getEditor() != null)
-// {
-//// DisplayErrorInTaskList task = new DisplayErrorInTaskList(getEditor().getEditorIDocument(), getEditor().getFileResource(), cleanup.getMessages());
-//// task.run();
-//
-// // Workaround to reset included elements in XSD model
-// getEditor().reparseSchema();
-// getEditor().getGraphViewer().setSchema(getXSDSchema());
-// }
-// }
-//
-// /* since we are reparsing, we don't need this
-//
-// Iterator contents = getXSDSchema().getContents().iterator();
-// while (contents.hasNext())
-// {
-// XSDSchemaContent content = (XSDSchemaContent)contents.next();
-// if (content instanceof XSDSchemaDirective)
-// {
-// XSDSchemaDirective directive = (XSDSchemaDirective)content;
-//
-// if (directive.getSchemaLocation().equals(oldSchemaLocation) && directive instanceof XSDRedefine)
-// {
-// directive.unsetSchemaLocation();
-// directive.setSchemaLocation(locationField.getText());
-// directive.unsetResolvedSchema();
-// redefineElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationField.getText());
-// getXSDSchema().updateDocument();
-// XSDSchemaHelper.updateElement(directive);
-//// directive.updateElement();
-// break;
-// }
-// }
-// }
-// */
-// }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/KeyrefPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/KeyrefPropertySource.java
deleted file mode 100644
index f4fcab1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/KeyrefPropertySource.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class KeyrefPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String[] refComboValues = { "" };
- /**
- *
- */
- public KeyrefPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public KeyrefPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public KeyrefPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
-
- public void setInput(Element element)
- {
- this.element = element;
- java.util.List items = new ArrayList();
-
-
- if (xsdSchema != null)
- {
- Iterator iter = xsdSchema.getIdentityConstraintDefinitions().iterator();
- String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
- while (iter.hasNext())
- {
- XSDIdentityConstraintDefinition constraint = (XSDIdentityConstraintDefinition)iter.next();
- if (name != null && !name.equals(""))
- {
- if (constraint.getName() != null)
- {
- if (!name.equals(constraint.getQName(xsdSchema)))
- {
- items.add(constraint.getQName(xsdSchema));
- }
- }
- }
- else
- {
- if (constraint.getName() != null)
- {
- items.add(constraint.getQName(xsdSchema));
- }
- }
- }
- }
-
- int size = items.size() + 1;
- refComboValues = new String[size];
- refComboValues[0] = "";
- if (items != null)
- {
- for (int i = 0; i < items.size(); i++)
- {
- refComboValues[i + 1] = (String) items.get(i);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-// This property is moved to the General Tab
-// PropertyDescriptor nameDescriptor =
-// new TextPropertyDescriptor(
-// XSDConstants.NAME_ATTRIBUTE,
-// XSDConstants.NAME_ATTRIBUTE);
-// list.add(nameDescriptor);
-
- XSDComboBoxPropertyDescriptor refDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.REFER_ATTRIBUTE,
- XSDConstants.REFER_ATTRIBUTE,
- refComboValues);
- list.add(refDescriptor);
-
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
-
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = "";
- }
- return result;
-// if (((String) id).equals(XSDConstants.REFER_ATTRIBUTE))
-// {
-// return result;
-// }
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- if (((String) id).equals(XSDConstants.NAME_ATTRIBUTE))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_KEYREF_NAME_CHANGE"), element);
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- endRecording(element);
- }
- }
- else if (((String) id).equals(XSDConstants.REFER_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_KEYREF_REFER_CHANGE"), element);
- element.setAttribute((String) id, newValue);
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ModelGroupPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ModelGroupPropertySource.java
deleted file mode 100644
index 728e613..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ModelGroupPropertySource.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class ModelGroupPropertySource // all or sequence or choice
- extends BasePropertySource
- implements IPropertySource
-{
- private String[] modelGroupComboValues = { "sequence", "choice", "all" };
- /**
- *
- */
- public ModelGroupPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public ModelGroupPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public ModelGroupPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
-
- XSDComboBoxPropertyDescriptor modelGroupDescriptor =
- new XSDComboBoxPropertyDescriptor(
- "model group",
- "model group",
- modelGroupComboValues);
- list.add(modelGroupDescriptor);
-
- PropertyDescriptor minOccursDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.MINOCCURS_ATTRIBUTE,
- XSDConstants.MINOCCURS_ATTRIBUTE);
- list.add(minOccursDescriptor);
- PropertyDescriptor maxOccursDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.MAXOCCURS_ATTRIBUTE,
- XSDConstants.MAXOCCURS_ATTRIBUTE);
- list.add(maxOccursDescriptor);
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- String attributeName = (String)id;
- if (result == null)
- {
- result = "";
- }
- if (attributeName.equals("model group"))
- {
- result = element.getLocalName();
- return result;
- }
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- String property = (String)id;
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- if (property.equals("model group"))
- {
- Element parent = (Element)element.getParentNode();
- String prefix = element.getPrefix();
- prefix = prefix == null ? "" : prefix + ":";
- beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_SCOPE_CHANGE"), parent);
- changeContentModel(parent, newValue);
- endRecording(parent);
- XSDDOMHelper domHelper = new XSDDOMHelper();
- setInput(domHelper.getContentModelFromParent(parent));
- }
- else if (property.equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
- {
- String max = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
- if (max.length() > 0)
- {
- element.setAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE, max);
- }
- else
- {
- element.removeAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
- }
- endRecording(element);
- }
- else if (((String) id).equals(XSDConstants.MINOCCURS_ATTRIBUTE))
- {
- String min = (String)value;
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);
- if (min.length() > 0)
- {
- element.setAttribute(XSDConstants.MINOCCURS_ATTRIBUTE, min);
- }
- else
- {
- element.removeAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
- }
- endRecording(element);
- }
- }
-
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- public void setInput(Element element)
- {
- super.setInput(element);
-
- if (element != null)
- {
- boolean parentIsSequence = false;
- boolean parentIsChoice = false;
-
- Object parent = element.getParentNode();
-
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SEQUENCE_ELEMENT_TAG, false))
- {
- parentIsSequence = true;
- }
- else if (XSDDOMHelper.inputEquals(parent, XSDConstants.CHOICE_ELEMENT_TAG, false))
- {
- parentIsChoice = true;
- }
-
- if (parentIsChoice || parentIsSequence)
- {
- modelGroupComboValues = new String[2];
- modelGroupComboValues[0] = XSDConstants.SEQUENCE_ELEMENT_TAG;
- modelGroupComboValues[1] = XSDConstants.CHOICE_ELEMENT_TAG;
- }
- else
- {
- modelGroupComboValues = new String[3];
- modelGroupComboValues[0] = XSDConstants.SEQUENCE_ELEMENT_TAG;
- modelGroupComboValues[1] = XSDConstants.CHOICE_ELEMENT_TAG;
- modelGroupComboValues[2] = XSDConstants.ALL_ELEMENT_TAG;
- }
- }
- }
-
- private void changeContentModel(Element parent, String contentModel)
- {
- Document doc = parent.getOwnerDocument();
- XSDDOMHelper domHelper = new XSDDOMHelper();
-
- String prefix = parent.getPrefix();
- prefix = prefix == null ? "" : prefix + ":";
-
- Element contentModelElement = domHelper.getContentModelFromParent(parent);
-
- if (contentModelElement.getLocalName().equals(contentModel))
- {
- return; // it's already the content model
- }
-
- Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
-
- if (contentModelElement.hasChildNodes())
- {
- NodeList nodes = contentModelElement.getChildNodes();
- // use clones so we don't have a refresh problem
- for (int i = 0; i < nodes.getLength(); i++)
- {
- Node node = nodes.item(i);
- newNode.appendChild(node.cloneNode(true));
- }
- }
- parent.replaceChild(newNode, contentModelElement);
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NamePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NamePropertySource.java
deleted file mode 100644
index 9c31405..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NamePropertySource.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class NamePropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public NamePropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public NamePropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public NamePropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
-
-// From attribute group
-// WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_DESIGN_VIEW);
-// WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_NAME);
-
-// From unique
-// WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_UNIQUE_BASE_NAME);
-
-// From key
-// WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_UNIQUE_BASE_NAME);
-
-// From group
-// WorkbenchHelp.setHelp(controlsContainer, XSDEditorContextIds.XSDE_GROUP_DESIGN_VIEW);
-// WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_GROUP_NAME);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- PropertyDescriptor nameDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.NAME_ATTRIBUTE,
- XSDConstants.NAME_ATTRIBUTE);
- list.add(nameDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- String newValue = (String)value;
- if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_NAME_CHANGE"), element);
-
- // now rename any references to this element
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-
- // TODO cs : revisit
- //if (comp != null && comp instanceof XSDAttributeGroupDefinition && comp.getContainer().equals(xsdSchema))
- //{
- // GlobalAttributeGroupRenamer renamer = new GlobalAttributeGroupRenamer((XSDNamedComponent)comp, (String)value);
- // renamer.visitSchema(xsdSchema);
- //}
- }
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, (String)value);
- endRecording(element);
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.UNIQUE_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_UNIQUE_NAME_CHANGE"), element);
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- }
- else
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
- }
- endRecording(element);
- }
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.KEY_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_KEY_NAME_CHANGE"), element);
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- }
- else
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
- }
- endRecording(element);
- }
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.GROUP_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_NAME_CHANGE"), element);
- // now rename any references to this element
- if (xsdSchema != null)
- {
- // TODO cs : revisit
- //XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- //if (comp != null && comp instanceof XSDModelGroupDefinition && comp.getContainer().equals(xsdSchema))
- //{
- // GlobalGroupRenamer renamer = new GlobalGroupRenamer((XSDNamedComponent)comp, newValue);
- // renamer.visitSchema(xsdSchema);
- //}
- }
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- endRecording(element);
- }
-
- }
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NotationPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NotationPropertySource.java
deleted file mode 100644
index 829e192..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NotationPropertySource.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class NotationPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public NotationPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public NotationPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public NotationPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-// Removed for tabbed properties
-// PropertyDescriptor nameDescriptor =
-// new TextPropertyDescriptor(
-// XSDConstants.NAME_ATTRIBUTE,
-// XSDConstants.NAME_ATTRIBUTE);
-// list.add(nameDescriptor);
-
- PropertyDescriptor publicDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.PUBLIC_ATTRIBUTE,
- XSDConstants.PUBLIC_ATTRIBUTE);
- list.add(publicDescriptor);
-
- PropertyDescriptor systemDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.SYSTEM_ATTRIBUTE,
- XSDConstants.SYSTEM_ATTRIBUTE);
- list.add(systemDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
-
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- if (((String)id).equals(XSDConstants.NAME_ATTRIBUTE))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_NOTATION_NAME_CHANGE"), element);
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- }
- else
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
- }
- endRecording(element);
- }
- }
- else if (((String)id).equals(XSDConstants.PUBLIC_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_NOTATION_PUBLIC_CHANGE"), element);
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.PUBLIC_ATTRIBUTE, newValue);
- }
- else
- {
- element.setAttribute(XSDConstants.PUBLIC_ATTRIBUTE, "");
- }
- endRecording(element);
- }
- else if (((String)id).equals(XSDConstants.SYSTEM_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_NOTATION_SYSTEM_CHANGE"), element);
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.SYSTEM_ATTRIBUTE, newValue);
- }
- else
- {
- element.removeAttribute(XSDConstants.SYSTEM_ATTRIBUTE);
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/OptionsTextCellEditor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/OptionsTextCellEditor.java
deleted file mode 100644
index d61142e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/OptionsTextCellEditor.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-
-
-public abstract class OptionsTextCellEditor extends CellEditor implements SelectionListener, KeyListener
-{
- private Composite fEditor;
- protected Text fText;
- protected boolean isTextReadOnly;
- Button moreButton;
- Shell dialog;
-
- protected Object fValue;
- int selection;
- Object typeObject;
-
- private class ComboCellLayout extends Layout
- {
- public void layout(Composite editor, boolean force)
- {
- Rectangle bounds= editor.getClientArea();
- Point size= moreButton.computeSize(SWT.DEFAULT, bounds.height, force);
- fText.setBounds(0, 0, bounds.width - size.x, bounds.height);
- moreButton.setBounds(bounds.width - size.x, 0, size.x, size.y);
- }
-
- public Point computeSize(Composite editor, int wHint, int hHint, boolean force)
- {
- if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT)
- {
- return new Point(wHint, hHint);
- }
- Point size= fText.computeSize(SWT.DEFAULT, SWT.DEFAULT, force);
-// size.x += moreButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, force).x;
- return size;
- }
- }
-
-/**
- * Creates a new combo box cell editor with the given choices.
- */
- public OptionsTextCellEditor(Composite parent)
- {
- super(parent);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.CellEditor#createControl(org.eclipse.swt.widgets.Composite)
- */
- protected Control createControl(Composite parent)
- {
- fEditor = ViewUtility.createComposite(parent, 2);
- fEditor.setLayout(new ComboCellLayout());
-
- if (isTextReadOnly)
- {
- fText = new Text(fEditor, SWT.LEFT | SWT.READ_ONLY);
- }
- else
- {
- fText = new Text(fEditor, SWT.LEFT);
- }
-// fText.setEnabled(false);
-
- fText.setBackground(parent.getBackground());
- fText.setText("");
- fText.addKeyListener(this);
- fText.addFocusListener(new FocusAdapter()
- {
- public void focusLost(FocusEvent e)
- {
- if (!moreButton.isFocusControl())
- {
- OptionsTextCellEditor.this.focusLost();
- }
- }
- });
-
- moreButton = ViewUtility.createPushButton(fEditor, "...");
- moreButton.addSelectionListener(new SelectionAdapter()
- {
- public void widgetSelected(SelectionEvent e)
- {
- // System.out.println("More Button Clicked");
- openDialog();
- }
- });
- moreButton.addKeyListener(this);
- moreButton.addFocusListener(new FocusAdapter() {
- public void focusLost(FocusEvent e) {
- if (!fText.isFocusControl() && (dialog==null ||
- dialog.isDisposed() ||
- (dialog!=null && !dialog.isFocusControl())))
- {
- // System.out.println("MoreButton focusLost");
- OptionsTextCellEditor.this.focusLost();
- }
- }
- });
-
-
- setValueValid(true);
-
- return fEditor;
- }
-
- public void activate()
- {
- // System.out.println("Cell editor activated");
- fText.setText(fValue == null ? "" : fValue.toString());
- }
-
- protected void focusLost() {
- // System.out.println("CELLEDITOR FOCUS LOST");
- if (isActivated()) {
- applyEditorValueAndDeactivate();
- }
- }
-
- void applyEditorValueAndDeactivate() {
- // must set the selection before getting value
-// if (dialog != null && !dialog.isDisposed())
-// {
-// dialog.close();
-// dialog.dispose();
-// }
- fireApplyEditorValue();
- deactivate();
- }
-
- public void keyPressed(KeyEvent e)
- {
- if (e.character == SWT.ESC)
- { // Escape character
- fireCancelEditor();
- }
- else if ((e.character == SWT.CR) || (e.character == SWT.LF))
- { // Return key
- applyEditorValueAndDeactivate();
- }
- }
-
- public void keyReleased(KeyEvent e)
- {
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.CellEditor#doGetValue()
- * Returns the cell editor's value.
- */
- protected Object doGetValue()
- {
- return fValue;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.CellEditor#doSetFocus()
- * Set the focus to the cell editor's UI representation.
- */
- protected void doSetFocus()
- {
-// fButton.setFocus();
-// System.out.println("doSetFocus() " + moreButton.setFocus());
- fText.setFocus();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.CellEditor#doSetValue(java.lang.Object)
- * Sets the value of the cell editor to the given value.
- */
- protected void doSetValue(Object value)
- {
- fValue = value;
- }
-
- protected Point getButtonAbsoluteLocation()
- {
- Rectangle buttonBounds = moreButton.getBounds();
- int x = buttonBounds.x;
- int y = buttonBounds.y;
- Control c = moreButton;
- while (c != null)
- {
- c = c.getParent();
- if (c == null)
- break;
- x += c.getBounds().x;
- y += c.getBounds().y;
- }
- x += buttonBounds.width + 5;
- y += buttonBounds.height;
- Point p = new Point(x,y);
- return p;
- }
-
- protected void cancel()
- {
- dialog.close();
- dialog.dispose();
- }
-
- protected abstract void openDialog();
-
- public void widgetSelected(SelectionEvent e)
- {
- }
- public void widgetDefaultSelected(SelectionEvent e)
- {
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/PatternPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/PatternPropertySource.java
deleted file mode 100644
index c437e4c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/PatternPropertySource.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class PatternPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public PatternPropertySource()
- {
- super();
-// expressionField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_PATTERN"));
-// WorkbenchHelp.setHelp(expressionField, XSDEditorContextIds.XSDE_PATTERN_VALUE);
-// WorkbenchHelp.setHelp(activateWizardButton, XSDEditorContextIds.XSDE_PATTERN_REGULAR);
-// activateWizardButton.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_REGEX_WIZARD_BUTTON"));
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public PatternPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public PatternPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-
- PatternTextPropertyDescriptor patternDescriptor =
- new PatternTextPropertyDescriptor(
- XSDConstants.VALUE_ATTRIBUTE,
- XSDConstants.VALUE_ATTRIBUTE);
- list.add(patternDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- if (((String) id).equals(XSDConstants.VALUE_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), element);
- element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, (String)value);
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- public class PatternTextPropertyDescriptor extends PropertyDescriptor
- {
- /**
- * @param id
- * @param displayName
- */
- public PatternTextPropertyDescriptor(Object id, String displayName)
- {
- super(id, displayName);
- }
-
- public CellEditor createPropertyEditor(Composite parent)
- {
- // CellEditor editor = new PatternTextCellEditor(parent);
- CellEditor editor = new PatternDialogCellEditor(parent);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
- }
-
- public class PatternDialogCellEditor extends DialogCellEditor {
-
- /**
- * Creates a new Font dialog cell editor parented under the given control.
- * The cell editor value is <code>null</code> initially, and has no
- * validator.
- *
- * @param parent the parent control
- */
- protected PatternDialogCellEditor(Composite parent) {
- super(parent);
- }
-
- /**
- * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
- */
- protected Object openDialogBox(Control cellEditorWindow)
- {
- String initialValue = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
- if (initialValue == null)
- {
- initialValue = "";
- }
- RegexWizard wizard = new RegexWizard(initialValue);
- Shell shell = Display.getCurrent().getActiveShell();
- WizardDialog wizardDialog = new WizardDialog(shell, wizard);
- wizardDialog.create();
-
- String value = (String)getValue();
-
- int result = wizardDialog.open();
-
- if (result == Window.OK)
- {
- return wizard.getPattern();
- }
- return value;
- }
-
- }
-
-// class PatternTextCellEditor extends OptionsTextCellEditor
-// {
-// protected Button fixedButton, defaultButton;
-//
-// public PatternTextCellEditor(Composite parent)
-// {
-// super(parent);
-// }
-//
-// protected Control createControl(Composite parent)
-// {
-// isTextReadOnly = false;
-// return super.createControl(parent);
-// }
-//
-// protected void openDialog()
-// {
-// RegexWizard wizard = new RegexWizard(element.getAttribute(XSDConstants.VALUE_ATTRIBUTE));
-// Shell shell = Display.getCurrent().getActiveShell();
-// WizardDialog wizardDialog = new WizardDialog(shell, wizard);
-// wizardDialog.create();
-//
-// dialog = wizardDialog.getShell();
-// Display display = dialog.getDisplay();
-// dialog.addShellListener(new ShellAdapter()
-// {
-// public void shellDeactivated(ShellEvent e)
-// {
-// cancel();
-// }
-// });
-//
-// int result = wizardDialog.open();
-//
-// if (result == Window.OK)
-// {
-// fText.setText(wizard.getPattern());
-// applyEditorValueAndDeactivate();
-// }
-//
-// }
-//
-// protected void cancel()
-// {
-// super.cancel();
-// }
-//
-// void applyEditorValueAndDeactivate()
-// {
-// String value = fText.getText();
-// doSetValue(value);
-// fireApplyEditorValue();
-// deactivate();
-// }
-//
-// protected Object doGetValue()
-// {
-// fValue = fText.getText();
-// return fText.getText();
-// }
-//
-// }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ReadOnlyPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ReadOnlyPropertySource.java
deleted file mode 100644
index 46ca063..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ReadOnlyPropertySource.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-
-public class ReadOnlyPropertySource implements IPropertySource
-{
- protected Element element;
-
- public ReadOnlyPropertySource(IEditorPart editPart, Element element)
- {
- this.element = element;
- }
-
- public Object getEditableValue()
- {
- return null;
- }
-
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- NamedNodeMap map = element.getAttributes();
- int mapLength = map.getLength();
- for (int i = 0; i < mapLength; i++)
- {
- Attr attr = (Attr) map.item(i);
- list.add(new PropertyDescriptor(attr.getName(), attr.getName()));
- }
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
-
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- }
- return result != null ? result : "";
- }
-
- public boolean isPropertySet(Object id)
- {
- return false;
- }
-
- public void resetPropertyValue(Object id)
- {
- }
-
- public void setPropertyValue(Object id, Object value)
- {
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaDirectiveHelperPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaDirectiveHelperPropertySource.java
deleted file mode 100644
index 43780f8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaDirectiveHelperPropertySource.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.navigator.ResourceNavigator;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.common.ui.internal.viewers.ResourceFilter;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.wizards.XSDSelectIncludeFileWizard;
-import org.eclipse.xsd.XSDSchema;
-
-public abstract class SchemaDirectiveHelperPropertySource
- extends BasePropertySource
-{
- protected IFile currentIFile;
-
- IFile selectedIFile;
- String selectedNamespace;
- XSDSchema selectedXSDSchema;
- boolean isInclude;
- /**
- *
- */
- public SchemaDirectiveHelperPropertySource(boolean isInclude)
- {
- super();
- this.isInclude = isInclude;
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public SchemaDirectiveHelperPropertySource(
- Viewer viewer,
- XSDSchema xsdSchema,
- boolean isInclude)
- {
- super(viewer, xsdSchema);
- this.isInclude = isInclude;
- }
- /**
- * @param xsdSchema
- */
- public SchemaDirectiveHelperPropertySource(XSDSchema xsdSchema, boolean isInclude)
- {
- super(xsdSchema);
- this.isInclude = isInclude;
- }
-
-
- public class SchemaLocationPropertyDescriptor extends PropertyDescriptor
- {
- /**
- * @param id
- * @param displayName
- */
- public SchemaLocationPropertyDescriptor(Object id, String displayName)
- {
- super(id, displayName);
- }
-
- public CellEditor createPropertyEditor(Composite parent)
- {
- CellEditor editor = new SchemaLocationDialogCellEditor(parent);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
- }
-
- public class SchemaLocationDialogCellEditor extends DialogCellEditor {
-
- /**
- * Creates a new Font dialog cell editor parented under the given control.
- * The cell editor value is <code>null</code> initially, and has no
- * validator.
- *
- * @param parent the parent control
- */
- protected SchemaLocationDialogCellEditor(Composite parent) {
- super(parent);
- }
-
- /**
- * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
- */
- protected Object openDialogBox(Control cellEditorWindow)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
-// oldSchemaLocation = locationField.getText().trim();
-// IFile currentIFile = ((IFileEditorInput)getIEditorPart().getEditorInput()).getFile();
- ViewerFilter filter = new ResourceFilter(new String[] { ".xsd" },
- new IFile[] { currentIFile },
- null);
-//
-
- IViewPart viewParts[] = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViews();
- ResourceNavigator resourceNav = null;
- for (int i = 0; i < viewParts.length; i++)
- {
- if (viewParts[i] instanceof ResourceNavigator)
- {
- resourceNav = (ResourceNavigator) viewParts[i];
- break;
- }
- }
- IStructuredSelection selection = StructuredSelection.EMPTY;
- if (resourceNav != null)
- {
- selection = (IStructuredSelection)resourceNav.getViewSite().getSelectionProvider().getSelection();
- }
-
- XSDSelectIncludeFileWizard fileSelectWizard =
- new XSDSelectIncludeFileWizard(xsdSchema, isInclude,
- XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_SCHEMA"),
- XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_DESC"),
- filter,
- selection);
-
- WizardDialog wizardDialog = new WizardDialog(shell, fileSelectWizard);
- wizardDialog.create();
- wizardDialog.setBlockOnOpen(true);
- int result = wizardDialog.open();
-
-
- String value = (String)getValue();
- // System.out.println("VALUE IS *** = " + value);
- if (result == Window.OK)
- {
- selectedIFile = fileSelectWizard.getResultFile();
- String schemaFileString = value;
- if (selectedIFile != null)
- {
- schemaFileString = URIHelper.getRelativeURI(selectedIFile.getLocation(), currentIFile.getLocation());
- }
- else
- {
- schemaFileString = fileSelectWizard.getURL();
- }
-
-// updateExternalModel(selectedIFile, fileSelectWizard.getNamespace(), fileSelectWizard.getExternalSchema());
- selectedNamespace = fileSelectWizard.getNamespace();
- selectedXSDSchema = fileSelectWizard.getExternalSchema();
-
- return schemaFileString;
- }
- return value;
- }
- }
-
- public IFile getSelectedIFile()
- {
- return selectedIFile;
- }
-
- public String getSelectedNamespace()
- {
- return selectedNamespace;
- }
-
- public XSDSchema getSelectedXSDSchema()
- {
- return selectedXSDSchema;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaPropertySource.java
deleted file mode 100644
index 0ae4888..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaPropertySource.java
+++ /dev/null
@@ -1,519 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.TargetNamespaceChangeHandler;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class SchemaPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String oldPrefix = "";
- private String oldNamespace = "";
-
- private String[] attributeFormDefaultComboValues =
- {
- "",
- XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"),
- XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED")
- };
-
- private String[] elementFormDefaultComboValues =
- {
- "",
- XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"),
- XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED")
- };
-
- private String[] blockDefaultComboValues =
- {
- "",
- "#all",
- "extension",
- "restriction",
- "substitution"
- };
-
- private String[] finalDefaultComboValues =
- {
- "",
- "#all",
- "extension",
- "restriction"
- };
-
- /**
- *
- */
- public SchemaPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public SchemaPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public SchemaPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-// These have been moved to the General tab
-// PropertyDescriptor prefixDescriptor =
-// new TextPropertyDescriptor(
-// "prefix",
-// "prefix");
-// list.add(prefixDescriptor);
-// prefixDescriptor.setCategory("Namespace");
-//
-// PropertyDescriptor targetNamespaceDescriptor =
-// new TextPropertyDescriptor(
-// XSDConstants.TARGETNAMESPACE_ATTRIBUTE,
-// XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
-// list.add(targetNamespaceDescriptor);
-// targetNamespaceDescriptor.setCategory("Namespace");
-
- PropertyDescriptor versionDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.VERSION_ATTRIBUTE,
- XSDConstants.VERSION_ATTRIBUTE);
-// versionDescriptor.setDescription("Version attribute"); // XSDEditorPlugin.getXSDString("_UI_TOOLTIP_VERSION"));
- list.add(versionDescriptor);
- PropertyDescriptor xmlLangDescriptor =
- new TextPropertyDescriptor(
- "xml:lang",
- "xml:lang");
- list.add(xmlLangDescriptor);
-
- XSDComboBoxPropertyDescriptor attributeFormDefaultDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE,
- XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE,
- attributeFormDefaultComboValues);
- list.add(attributeFormDefaultDescriptor);
-
-
- XSDComboBoxPropertyDescriptor elementFormDefaultDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE,
- XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE,
- elementFormDefaultComboValues);
- list.add(elementFormDefaultDescriptor);
-
- XSDComboBoxPropertyDescriptor blockDefaultDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.BLOCKDEFAULT_ATTRIBUTE,
- XSDConstants.BLOCKDEFAULT_ATTRIBUTE,
- blockDefaultComboValues);
- list.add(blockDefaultDescriptor);
- XSDComboBoxPropertyDescriptor finalDefaultDescriptor =
- new XSDComboBoxPropertyDescriptor(
- XSDConstants.FINALDEFAULT_ATTRIBUTE,
- XSDConstants.FINALDEFAULT_ATTRIBUTE,
- finalDefaultComboValues);
- list.add(finalDefaultDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- // return propertyDescriptors;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- String attributeName = (String)id;
- if (result == null)
- {
- result = "";
- }
-
- if (attributeName.equals("prefix"))
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
- // System.out.println("schema targetNS is " + xsdSchema.getTargetNamespace());
- if (aPrefix != null && aPrefix.length() > 0)
- {
- return aPrefix;
- }
- return "";
- }
- else
- {
- return result;
- }
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String newValue = (String)value;
- String attributeName = (String)id;
- if (attributeName.equals("prefix"))
- {
- updatePrefix(newValue);
- }
- else if (attributeName.equals(XSDConstants.TARGETNAMESPACE_ATTRIBUTE))
- {
- updateTargetNamespace(newValue);
- }
- else if (attributeName.equals("xml:lang"))
- {
- validateLanguage(newValue);
- // return; // we will accept the value even though it does not conform
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_LANG_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.VERSION_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_VERSION_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_ATTRIBUTEFORMDEFAULT_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_ELEMENTFORMDEFAULT_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.BLOCKDEFAULT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_BLOCKDEFAULT_CHANGE"), element);
- }
- else if (attributeName.equals(XSDConstants.FINALDEFAULT_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_FINALDEFAULT_CHANGE"), element);
- }
-
- if (!attributeName.equals("prefix") && !attributeName.equals(XSDConstants.TARGETNAMESPACE_ATTRIBUTE))
- {
- if (newValue.equals(""))
- {
- element.removeAttribute(attributeName);
- }
- else
- {
- element.setAttribute(attributeName, newValue);
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- public void setInput(Element element)
- {
- super.setInput(element);
-
- oldNamespace = "";
- oldPrefix = "";
-
- if (element!= null)
- {
- String targetNamespace = element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
- oldNamespace = targetNamespace;
-
- TypesHelper helper = new TypesHelper(xsdSchema);
- String aPrefix = helper.getPrefix(targetNamespace, false);
- if (aPrefix != null && aPrefix.length() > 0)
- {
- oldPrefix = aPrefix;
- }
- }
- }
-
-
- private void updatePrefix(String newPrefix)
- {
- updateNamespaceInfo(newPrefix, oldNamespace);
- }
-
- private void updateTargetNamespace(String newTargetNamespace)
- {
- updateNamespaceInfo(oldPrefix, newTargetNamespace);
- }
-
- private void updateNamespaceInfo(String newPrefix, String newTargetNamespace)
- {
-// System.out.println("\nold Prefix is " + oldPrefix);
-// System.out.println("old NS is " + oldNamespace);
-// System.out.println("new Prefix is " + newPrefix);
-// System.out.println("new NS is " + newTargetNamespace);
-
- DocumentImpl doc = (DocumentImpl)element.getOwnerDocument();
-
- String modelTargetNamespace = xsdSchema.getTargetNamespace();
-// System.out.println("Model TargetNS is " + modelTargetNamespace);
- if (modelTargetNamespace == null)
- {
- modelTargetNamespace = "";
- }
-
- String targetNamespace = newTargetNamespace.trim();
- String prefix = newPrefix.trim();
-
- if (!validatePrefix(prefix) || !validateTargetNamespace(targetNamespace))
- {
- return;
- }
-
- if (prefix.length() > 0 && targetNamespace.length() == 0)
- {
- // can't have blank targetnamespace and yet specify a prefix
- return;
- }
-
- doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_LABEL_TARGETNAMESPACE_CHANGE"));
- String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
- Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
-// For debugging
-// System.out.println("1. SW Map is " + map.values());
-// System.out.println("1. SW Map keys are " + map.keySet());
-
- // Check if prefix is blank
- // if it is, then make sure we have a prefix
- // for schema for schema
- if (prefix.length() == 0)
- {
- // if prefix for schema for schema is blank
- // then set it to value specified in preference
- // and update ALL nodes with this prefix
- if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
- {
- // get preference prefix
- xsdForXSDPrefix = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
- // get a unique prefix by checking what's in the map
-
- xsdForXSDPrefix = getUniqueSchemaForSchemaPrefix(xsdForXSDPrefix, map);
- element.setAttribute("xmlns:" + xsdForXSDPrefix, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
-
- updateAllNodes(element, xsdForXSDPrefix);
-
- // remove the old xmlns attribute for the schema for schema
- if (element.getAttribute("xmlns") != null &&
- element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
- {
- element.removeAttribute("xmlns");
- }
- }
- }
-
- if (targetNamespace.length() > 0 ||
- (targetNamespace.length() == 0 && prefix.length() == 0))
- {
- // clean up the old prefix for this schema
- if (oldPrefix != null && oldPrefix.length() > 0)
- {
- element.removeAttribute("xmlns:"+oldPrefix);
-// element.setAttribute("xmlns:" + prefix, targetNamespace);
-// java.util.Map prefixToNameSpaceMap = xsdSchema.getQNamePrefixToNamespaceMap();
-// prefixToNameSpaceMap.remove(oldPrefix);
- }
- else // if no prefix
- {
- if (element.getAttribute("xmlns") != null)
- {
- if (!element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
- {
- element.removeAttribute("xmlns");
- }
- }
- }
- }
-
- if (targetNamespace.length() > 0)
- {
- if (!modelTargetNamespace.equals(targetNamespace))
- {
- element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, targetNamespace);
- }
- // now set the new xmlns:prefix attribute
- if (prefix.length() > 0)
- {
- element.setAttribute("xmlns:" + prefix, targetNamespace);
- }
- else
- {
- element.setAttribute("xmlns", targetNamespace);
- }
- // set the targetNamespace attribute
- }
- else // else targetNamespace is blank
- {
- if (prefix.length() == 0)
- {
- element.removeAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
- }
- }
-
-// System.out.println("1.5 SW Map is " + map.values());
-// System.out.println("1.5 SW Map keys are " + map.keySet());
-
- // do our own referential integrity
- TargetNamespaceChangeHandler targetNamespaceChangeHandler = new TargetNamespaceChangeHandler(xsdSchema, oldNamespace, targetNamespace);
- targetNamespaceChangeHandler.resolve();
-
- oldPrefix = prefix;
- oldNamespace = targetNamespace;
-
- XSDSchemaHelper.updateElement(xsdSchema);
-
- doc.getModel().endRecording(this);
-
-// For debugging
- map = xsdSchema.getQNamePrefixToNamespaceMap();
-// System.out.println("2. SW Map is " + map.values());
-// System.out.println("2. SW Map keys are " + map.keySet());
- }
-
-
- private String getUniqueSchemaForSchemaPrefix(String xsdForXSDPrefix, Map map)
- {
- if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
- {
- xsdForXSDPrefix = "xsd";
- }
- // ensure prefix is unique
- int prefixExtension = 1;
- while (map.containsKey(xsdForXSDPrefix) && prefixExtension < 100)
- {
- xsdForXSDPrefix = xsdForXSDPrefix + String.valueOf(prefixExtension);
- prefixExtension++;
- }
- return xsdForXSDPrefix;
- }
-
- private void updateAllNodes(Element element, String prefix)
- {
- element.setPrefix(prefix);
- NodeList list = element.getChildNodes();
- if (list != null)
- {
- for (int i=0; i < list.getLength(); i++)
- {
- Node child = list.item(i);
- if (child != null && child instanceof Element)
- {
- child.setPrefix(prefix);
- if (child.hasChildNodes())
- {
- updateAllNodes((Element)child, prefix);
- }
- }
- }
- }
- }
-
- protected boolean validateTargetNamespace(String ns)
- {
- // will allow blank namespace !!
- if (ns.equals(""))
- {
- return true;
- }
-
- String errorMessage = null;
- try
- {
- URI testURI = new URI(ns);
- testURI.isAbsolute();
- }
- catch (URISyntaxException e)
- {
- errorMessage = XSDEditorPlugin.getXSDString("_WARN_INVALID_TARGET_NAMESPACE");
- }
-
- if (errorMessage == null || errorMessage.length() == 0)
- {
- return true;
- }
- return false;
- }
-
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertyDescriptor.java
deleted file mode 100644
index 1948146..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertyDescriptor.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.xsd.ui.internal.properties.section.SimpleContentBaseTypeOptionsDialog;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-
-public class SimpleContentPropertyDescriptor extends TypesPropertyDescriptor
-{
- public SimpleContentPropertyDescriptor(Object id, String displayName, Element element, XSDSchema xsdSchema)
- {
- super(id, displayName, element, xsdSchema);
- }
-
- public CellEditor createPropertyEditor(Composite parent)
- {
- // CellEditor editor = new SimpleContentBaseTypeOptionsTextCellEditor(parent);
- CellEditor editor = new SimpleContentBaseTypeDialogCellEditor(parent);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
-
- public class SimpleContentBaseTypeDialogCellEditor extends TypesDialogCellEditor
- {
-
- /**
- * Creates a new Font dialog cell editor parented under the given control.
- * The cell editor value is <code>null</code> initially, and has no
- * validator.
- *
- * @param parent the parent control
- */
- protected SimpleContentBaseTypeDialogCellEditor(Composite parent)
- {
- super(parent);
- }
-
- protected Object openDialogBox(Control cellEditorWindow)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
- // SimpleContentBaseTypeOptionsDialog dialog = new SimpleContentBaseTypeOptionsDialog(shell);
- SimpleContentBaseTypeOptionsDialog dialog = new SimpleContentBaseTypeOptionsDialog(shell, element, property, xsdSchema);
-
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- String value = (String)getValue();
-
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- value = dialog.getType();
- return value;
- }
- deactivate();
- return value;
- }
- }
-
-// class SimpleContentBaseTypeOptionsDialog extends TypesDialog
-// {
-// public SimpleContentBaseTypeOptionsDialog(Shell shell)
-// {
-// super(shell);
-// showAnonymous = false;
-// }
-//
-//// protected void ok()
-//// {
-//// TableItem[] items = table.getItems();
-//// selection = table.getSelectionIndex();
-//// if (items != null && items.length > 0 && selection >= 0)
-//// {
-//// typeObject = items[selection].getData();
-//// }
-//// System.out.println("typeObject is " + typeObject);
-////
-//// doSetValue(typeObject);
-//// applyEditorValueAndDeactivate();
-//// dialog.close();
-//// }
-//
-// public void handleSetInput()
-// {
-// XSDDOMHelper domHelper = new XSDDOMHelper();
-// typeSection.getSimpleType().setSelection(false);
-// typeSection.getUserSimpleType().setSelection(false);
-// typeSection.getUserComplexType().setSelection(false);
-// showAnonymous = false;
-// if (element != null)
-// {
-// String derivedBy = domHelper.getDerivedByName(element);
-// String baseType = domHelper.getBaseType(element);
-// boolean derivedByRestriction = true;
-//
-// if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-// {
-// typeSection.getSimpleType().setEnabled(false);
-// typeSection.getUserSimpleType().setEnabled(false);
-// typeSection.getUserComplexType().setSelection(true);
-//
-// previousType = 3;
-// }
-// else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-// {
-// typeSection.getSimpleType().setEnabled(false);
-// typeSection.getUserSimpleType().setEnabled(false);
-//
-// if (derivedBy.equals("restriction"))
-// {
-// typeSection.getSimpleType().setEnabled(false);
-// typeSection.getUserSimpleType().setEnabled(false);
-// typeSection.getUserComplexType().setEnabled(true);
-// }
-// else if (derivedBy.equals("extension"))
-// {
-// derivedByRestriction = false;
-// typeSection.getSimpleType().setEnabled(true);
-// typeSection.getUserSimpleType().setEnabled(true);
-// typeSection.getUserComplexType().setEnabled(true);
-// }
-// }
-//
-// if (derivedBy != null)
-// {
-// if (baseType != null && !baseType.equals(""))
-// {
-// Element parent = (Element)element.getParentNode();
-// XSDConcreteComponent component = null;
-// if (parent != null)
-// {
-// component = xsdSchema.getCorrespondingComponent(parent);
-// }
-// XSDTypeDefinition baseTypeDefinition = null;
-// if (component instanceof XSDComplexTypeDefinition)
-// {
-// XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)component;
-// baseTypeDefinition = complexType.getBaseTypeDefinition();
-// }
-//
-// if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(baseType) && !derivedByRestriction)
-// {
-// typeSection.getSimpleType().setSelection(true);
-// populateBuiltInType();
-// int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(baseType);
-// table.setSelection(i);
-// previousType = 1;
-// }
-// else if (baseTypeDefinition instanceof XSDSimpleTypeDefinition && !derivedByRestriction)
-// {
-// typeSection.getUserSimpleType().setSelection(true);
-// populateUserSimpleType();
-// int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(baseType);
-// if (showAnonymous)
-// {
-// table.setSelection(i + 1);
-// }
-// else
-// {
-// table.setSelection(i);
-// }
-// previousType = 2;
-// }
-// else if (baseTypeDefinition instanceof XSDComplexTypeDefinition)
-// {
-// typeSection.getUserComplexType().setSelection(true);
-// populateUserComplexType();
-// int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(baseType);
-// if (showAnonymous)
-// {
-// table.setSelection(i + 1);
-// }
-// else
-// {
-// table.setSelection(i);
-// }
-// previousType = 3;
-// }
-// }
-// else
-// {
-// typeSection.getUserComplexType().setSelection(true);
-// populateUserComplexType();
-// table.setSelection(0);
-// }
-// }
-//
-// }
-// }
-// }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertySource.java
deleted file mode 100644
index 9df52c1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertySource.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class SimpleContentPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String DERIVED_BY_ID = "derived by"; // XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY"); //$NON-NLS-1$
- private String BASE_TYPE_ID = "base"; // XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE"); //$NON-NLS-1$
-
- private String derivedByChoicesComboValues[] =
- {
- "", //$NON-NLS-1$
- XSDConstants.RESTRICTION_ELEMENT_TAG,
- XSDConstants.EXTENSION_ELEMENT_TAG
- };
-
- /**
- *
- */
- public SimpleContentPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public SimpleContentPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public SimpleContentPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-
- SimpleContentPropertyDescriptor typeDescriptor = new SimpleContentPropertyDescriptor(
- BASE_TYPE_ID,
- BASE_TYPE_ID,
- element, xsdSchema);
- list.add(typeDescriptor);
- XSDComboBoxPropertyDescriptor derivedByDescriptor =
- new XSDComboBoxPropertyDescriptor(
- DERIVED_BY_ID,
- DERIVED_BY_ID,
- derivedByChoicesComboValues);
- list.add(derivedByDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- if (id instanceof String)
- {
- if (((String) id).equals(DERIVED_BY_ID))
- {
- String derivedBy = getDomHelper().getDerivedByName(element);
- if (derivedBy == null)
- {
- derivedBy = ""; //$NON-NLS-1$
- }
- return derivedBy;
- }
- else if (((String) id).equals(BASE_TYPE_ID))
- {
- String baseType = getDomHelper().getBaseType(element);
- if (baseType == null)
- {
- baseType = ""; //$NON-NLS-1$
- }
- return baseType;
- }
- }
- return ""; //$NON-NLS-1$
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- String origBaseType = getDomHelper().getBaseType(element);
- String derivedBy = getDomHelper().getDerivedByName(element);
-
- if (((String) id).equals(BASE_TYPE_ID))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element); //$NON-NLS-1$
- getDomHelper().setDerivedByBaseType(element, derivedBy, (String)value);
- endRecording(element);
- }
- else if (((String) id).equals(DERIVED_BY_ID))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"), element); //$NON-NLS-1$
- String newDerivedBy = (String)value;
- if (newDerivedBy.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
- {
- String prefix = element.getPrefix();
- String anyType = prefix == null? "anyType" : prefix + ":anyType"; //$NON-NLS-1$ $NON-NLS-2$
- getDomHelper().changeDerivedByType(element, (String)value, anyType);
- }
- else
- {
- Element derivedByElem = getDomHelper().getDerivedByElement(element);
- if (checkForAnonymousType(derivedByElem))
- {
-// KCPort
-// ArrayList message = new ArrayList();
-// ErrorMessage aTask = new ErrorMessage();
-// Node aNode = getDomHelper().getChildNode(derivedByElem, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-////////////// shall we remove the node and its children??
-//// getDomHelper().removeNodeAndWhitespace(aNode);
-//////////////
-//// if (aNode instanceof Element)
-//// {
-//// Element st = (Element)aNode;
-//// if (st instanceof NodeImpl)
-//// {
-//// aTask.setNode((NodeImpl)st);
-//// }
-//// }
-// if (derivedByElem instanceof NodeImpl)
-// {
-// aTask.setModelObject(derivedByElem);
-// }
-// aTask.setLocalizedMessage(XSDEditorPlugin.getXSDString("_ERROR_REMOVE_LOCAL_SIMPLETYPE"));
-// message.add(aTask);
-// if (getEditor() != null)
-// {
-// getEditor().createTasksInTaskList(message);
-// }
- }
- getDomHelper().changeDerivedByType(element, (String)value, origBaseType);
- }
-
-
- endRecording(element);
-// setInput(element);
- }
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
- }
-
- boolean checkForAnonymousType(Element element)
- {
- boolean isAnonymous = false;
-
- Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- return true;
- }
- return isAnonymous;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleRestrictPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleRestrictPropertySource.java
deleted file mode 100644
index 49124a9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleRestrictPropertySource.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDFacet;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.impl.XSDFactoryImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class SimpleRestrictPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private String [] whiteSpaceComboChoices = { "", "preserve", "replace", "collapse" };
- /**
- *
- */
- public SimpleRestrictPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public SimpleRestrictPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public SimpleRestrictPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
-
- SimpleContentPropertyDescriptor typeDescriptor = new SimpleContentPropertyDescriptor(
- XSDConstants.BASE_ATTRIBUTE,
- XSDConstants.BASE_ATTRIBUTE,
- (Element)element.getParentNode(), xsdSchema); // get the parent node!
- list.add(typeDescriptor);
-
- Iterator facets = xsdSimpleType.getValidFacets().iterator();
-
- while(facets.hasNext())
- {
- String aValidFacet = (String)facets.next();
- if (!(aValidFacet.equals(XSDConstants.PATTERN_ELEMENT_TAG) || aValidFacet.equals(XSDConstants.ENUMERATION_ELEMENT_TAG)))
- {
- if (aValidFacet.equals(XSDConstants.WHITESPACE_ELEMENT_TAG))
- {
- XSDComboBoxPropertyDescriptor whitespaceDescriptor = new XSDComboBoxPropertyDescriptor(
- aValidFacet, aValidFacet, whiteSpaceComboChoices);
- list.add(whitespaceDescriptor);
- }
- else
- {
- list.add(new TextPropertyDescriptor(aValidFacet, aValidFacet));
- }
- }
- }
-
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- if (((String) id).equals(XSDConstants.BASE_ATTRIBUTE))
- {
- String baseType = element.getAttribute(XSDConstants.BASE_ATTRIBUTE);
- if (baseType == null)
- {
- baseType = "";
- }
- return baseType;
- }
- else
- {
- String aFacet = (String)id;
- Iterator facets = xsdSimpleType.getFacets().iterator();
-
- while(facets.hasNext())
- {
- XSDFacet aValidFacet = (XSDFacet)facets.next();
- if (aValidFacet.getFacetName().equals(aFacet))
- {
- result = aValidFacet.getLexicalValue();
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- }
- }
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- String newValue = (String)value;
-
- if (((String) id).equals(XSDConstants.BASE_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-
- Element parent = (Element)element.getParentNode();
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
-// updateElementToNotAnonymous(element);
- }
- getDomHelper().setSimpleContentType(element, newValue);
- endRecording(element);
- }
- else
- {
- Element simpleTypeElement = xsdSimpleType.getElement();
- XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
- Element derivedByElement = xsdDOMHelper.getDerivedByElement(simpleTypeElement);
- beginRecording(XSDEditorPlugin.getXSDString("_UI_FACET_CHANGE"), simpleTypeElement);
- String prefix = simpleTypeElement.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
-
- String aFacet = (String)id;
- XSDFactoryImpl factory = new XSDFactoryImpl();
-
- Element childNodeElement = null;
- DOMAttribute valueAttr = null;
- XSDFacet facet = null;
- if (aFacet.equals(XSDConstants.TOTALDIGITS_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getTotalDigitsFacet();
- }
- else if (aFacet.equals(XSDConstants.FRACTIONDIGITS_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getFractionDigitsFacet();
- }
- else if (aFacet.equals(XSDConstants.WHITESPACE_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getWhiteSpaceFacet();
- }
- else if (aFacet.equals(XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getMaxExclusiveFacet();
- }
- else if (aFacet.equals(XSDConstants.MAXINCLUSIVE_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getMaxInclusiveFacet();
- }
- else if (aFacet.equals(XSDConstants.MINEXCLUSIVE_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getMinExclusiveFacet();
- }
- else if (aFacet.equals(XSDConstants.MININCLUSIVE_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getMinInclusiveFacet();
- }
- else if (aFacet.equals(XSDConstants.LENGTH_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getLengthFacet();
- }
- else if (aFacet.equals(XSDConstants.MAXLENGTH_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getMaxLengthFacet();
- }
- else if (aFacet.equals(XSDConstants.MINLENGTH_ELEMENT_TAG))
- {
- facet = xsdSimpleType.getMinLengthFacet();
- }
-
- if (facet != null)
- {
- facet.setLexicalValue(newValue);
- }
- else
- {
- facet = (XSDFacet)factory.createXSDTotalDigitsFacet();
- childNodeElement = (derivedByElement.getOwnerDocument()).createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + aFacet);
- valueAttr = new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, "");
- childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());
- valueAttr.setValue(newValue);
- childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());
- element.appendChild(childNodeElement);
- //formatChild(childNodeElement, hasChildrenElements);
- }
- XSDSchemaHelper.updateElement(xsdSimpleType);
- if (facet != null)
- {
- XSDSchemaHelper.updateElement(facet);
- }
- }
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
- protected boolean isAnonymous;
- protected XSDSimpleTypeDefinition xsdSimpleType;
-
- public void setInput(Element element)
- {
- this.element = element;
- if (xsdSchema == null)
- {
- return;
- }
-
- isAnonymous = checkForAnonymousType(element);
-
- if (XSDDOMHelper.inputEquals(element, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
- {
- Element parent = (Element)element.getParentNode();
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- XSDConcreteComponent component = null;
- if (parent != null)
- {
- component = xsdSchema.getCorrespondingComponent(parent);
- }
- if (component instanceof XSDSimpleTypeDefinition)
- {
- xsdSimpleType = (XSDSimpleTypeDefinition)component;
- }
- }
-
- XSDConcreteComponent xsdConcreteComponent = null;
- if (element.getParentNode() != null)
- {
- xsdConcreteComponent = xsdSchema.getCorrespondingComponent(element.getParentNode());
- }
-
- if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
- {
- xsdSimpleType = (XSDSimpleTypeDefinition)xsdConcreteComponent;
- }
- }
- }
-
- boolean checkForAnonymousType(Element element)
- {
- boolean isAnonymous = false;
-
- Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- return true;
- }
- return isAnonymous;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeListPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeListPropertySource.java
deleted file mode 100644
index 17c4bef..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeListPropertySource.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class SimpleTypeListPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public SimpleTypeListPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public SimpleTypeListPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public SimpleTypeListPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- TypesPropertyDescriptor typeDescriptor = new TypesPropertyDescriptor(
- XSDConstants.ITEMTYPE_ATTRIBUTE,
- XSDConstants.ITEMTYPE_ATTRIBUTE,
- element, xsdSchema);
-
- typeDescriptor.setLabelProvider(new LabelProvider()
- {
- public String getText(Object element)
- {
- return (String) element;
- }
- });
- list.add(typeDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- if (((String) id).equals(XSDConstants.ITEMTYPE_ATTRIBUTE))
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = "**anonymous**"; //$NON-NLS-1$
- }
- return result;
- }
- }
- return ""; //$NON-NLS-1$
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- if (((String) id).equals(XSDConstants.ITEMTYPE_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE_CHANGE"), element); //$NON-NLS-1$
- element.setAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, (String)value);
- endRecording(element);
- }
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypePropertySource.java
deleted file mode 100644
index 12d5da9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypePropertySource.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-public class SimpleTypePropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- private boolean isAnonymous = false;
- /**
- *
- */
- public SimpleTypePropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public SimpleTypePropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public SimpleTypePropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- Node parent = element.getParentNode();
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parent, XSDConstants.ELEMENT_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parent, XSDConstants.UNION_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parent, XSDConstants.LIST_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- isAnonymous = true;
- }
-
- List list = new ArrayList();
- if (!isAnonymous)
- {
- // Create a descriptor and set a category
- PropertyDescriptor nameDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.NAME_ATTRIBUTE,
- XSDConstants.NAME_ATTRIBUTE);
- list.add(nameDescriptor);
- }
- else
- {
- PropertyDescriptor readOnly = new PropertyDescriptor(XSDConstants.NAME_ATTRIBUTE, XSDConstants.NAME_ATTRIBUTE);
- list.add(readOnly);
- }
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- if (isAnonymous)
- {
- result = "**anonymous**";
- }
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = "";
- }
- if (value instanceof String)
- {
- String name = (String)value;
- if (validateName(name))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SIMPLETYPE_NAME_CHANGE"), element);
- if (name != null && name.length() > 0)
- {
- // now rename any references to this type
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDSimpleTypeDefinition && comp.getContainer().equals(xsdSchema))
- {
-// ((XSDNamedComponent)comp).setName(name);
- // TODO CS : revisit
- //GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, name);
- //renamer.visitSchema(xsdSchema);
- }
- }
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, name);
- }
- else
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeUnionPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeUnionPropertySource.java
deleted file mode 100644
index d66b32c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeUnionPropertySource.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class SimpleTypeUnionPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public SimpleTypeUnionPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public SimpleTypeUnionPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
- }
- /**
- * @param xsdSchema
- */
- public SimpleTypeUnionPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- SimpleUnionMemberTypesPropertyDescriptor typeDescriptor = new SimpleUnionMemberTypesPropertyDescriptor(
- XSDConstants.MEMBERTYPES_ATTRIBUTE,
- XSDConstants.MEMBERTYPES_ATTRIBUTE);
-
- typeDescriptor.setLabelProvider(new LabelProvider()
- {
- public String getText(Object element)
- {
- return (String) element;
- }
- });
- list.add(typeDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- if (((String) id).equals(XSDConstants.MEMBERTYPES_ATTRIBUTE))
- {
- result = element.getAttribute((String) id);
- if (result == null)
- {
- result = ""; //$NON-NLS-1$
- }
- return result;
- }
- }
- return ""; //$NON-NLS-1$
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value == null)
- {
- value = ""; //$NON-NLS-1$
- }
-
- if (value instanceof String)
- {
- String newValue = (String)value;
- if (((String) id).equals(XSDConstants.MEMBERTYPES_ATTRIBUTE))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"), element); //$NON-NLS-1$
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, (String)value);
- }
- else
- {
- element.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- }
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-
-
- public class SimpleUnionMemberTypesPropertyDescriptor extends PropertyDescriptor
- {
- /**
- * @param id
- * @param displayName
- */
- public SimpleUnionMemberTypesPropertyDescriptor(Object id, String displayName)
- {
- super(id, displayName);
- }
-
- public CellEditor createPropertyEditor(Composite parent)
- {
- CellEditor editor = new SimpleTypeUnionMemberTypesDialogCellEditor(parent);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
- }
-
- public class SimpleTypeUnionMemberTypesDialogCellEditor extends DialogCellEditor {
-
- /**
- * Creates a new Font dialog cell editor parented under the given control.
- * The cell editor value is <code>null</code> initially, and has no
- * validator.
- *
- * @param parent the parent control
- */
- protected SimpleTypeUnionMemberTypesDialogCellEditor(Composite parent) {
- super(parent);
- }
-
- /**
- * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
- */
- protected Object openDialogBox(Control cellEditorWindow)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
- SimpleContentUniontMemberTypesDialog dialog = new SimpleContentUniontMemberTypesDialog(shell);
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- String value = (String)getValue();
-
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- return dialog.getResult();
- }
- return value;
- }
-
- }
-
- public class SimpleContentUniontMemberTypesDialog extends org.eclipse.jface.dialogs.Dialog implements SelectionListener
- {
- Table table;
- TypeSection typeSection;
- Button addButton, removeButton;
- org.eclipse.swt.widgets.List memberTypesList;
-
- private String result;
-
- public SimpleContentUniontMemberTypesDialog(Shell shell)
- {
- super(shell);
- }
-
- protected void configureShell(Shell shell)
- {
- super.configureShell(shell);
- }
-
- protected void buttonPressed(int buttonId)
- {
- if (buttonId == Dialog.OK)
- {
- StringBuffer sb = new StringBuffer();
- int length = memberTypesList.getItemCount();
- for (int i=0 ; i < length; i++)
- {
- sb.append(memberTypesList.getItem(i));
- if (i < length - 1)
- {
- sb.append(" "); //$NON-NLS-1$
- }
- }
- result = sb.toString();
- }
- super.buttonPressed(buttonId);
- }
-
- public String getResult() { return result; }
-
- //
- // Create the controls
- //
- public Control createDialogArea(Composite parent)
- {
- Composite client = (Composite)super.createDialogArea(parent);
- getShell().setText("Union " + XSDConstants.MEMBERTYPES_ATTRIBUTE); //$NON-NLS-1$
-
- Label instructions = new Label(client, SWT.LEFT | SWT.WRAP);
- instructions.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_SELECT_MEMBERTYPES")); //$NON-NLS-1$
-
- Composite columnsComposite = new Composite(client, SWT.NONE);
- GridLayout ccGL = new GridLayout();
- ccGL.verticalSpacing = 0;
- ccGL.horizontalSpacing = 0;
- ccGL.marginHeight = 0;
- ccGL.marginWidth = 0;
- ccGL.makeColumnsEqualWidth = true;
- ccGL.numColumns = 3;
- columnsComposite.setLayout(ccGL);
-
- GridData ccGD = new GridData();
- ccGD.grabExcessHorizontalSpace = true;
- ccGD.horizontalAlignment = GridData.FILL;
- columnsComposite.setLayoutData(ccGD);
-
- typeSection = new TypeSection(columnsComposite);
- typeSection.setShowUserComplexType(false);
-
- typeSection.createClient(columnsComposite);
- typeSection.getSimpleType().setSelection(false);
- typeSection.getSimpleType().addSelectionListener(this);
- typeSection.getUserSimpleType().addSelectionListener(this);
-
- ViewUtility.createHorizontalFiller(columnsComposite, 1);
-
- Label memberListLabel = new Label(columnsComposite, SWT.LEFT);
- memberListLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_VALUE")); //$NON-NLS-1$
-
- Composite dataComposite = new Composite(client, SWT.NONE);
- GridLayout dcGL = new GridLayout();
- dcGL.verticalSpacing = 0;
- dcGL.marginHeight = 0;
- dcGL.marginWidth = 0;
- dcGL.numColumns = 3;
- dataComposite.setLayout(dcGL);
-
- GridData dcGD = new GridData();
- dcGD.grabExcessHorizontalSpace = true;
- dcGD.grabExcessVerticalSpace = true;
- dataComposite.setLayoutData(dcGD);
-
- table = new Table(dataComposite,
- SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- table.setHeaderVisible(false);
- table.setLinesVisible(true);
- GridData gd2 = new GridData();
- gd2.grabExcessHorizontalSpace = true;
- gd2.grabExcessVerticalSpace = true;
- gd2.horizontalAlignment = GridData.FILL;
- gd2.verticalAlignment = GridData.FILL;
- gd2.heightHint = 200;
- gd2.widthHint = 200;
- table.setLayoutData(gd2);
-
- // Fill table
- handleSetInput();
- table.getItemCount();
-
- TableColumn tc = new TableColumn(table, SWT.LEFT);
-// tc.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
- //tc.setText("Available types:");
- tc.setWidth(200);
- tc.setResizable(true);
-
- Composite buttonComposite = new Composite(dataComposite, SWT.NONE);
- GridLayout bcGL = new GridLayout();
- bcGL.numColumns = 1;
- buttonComposite.setLayout(bcGL);
- addButton = new Button(buttonComposite, SWT.PUSH);
- addButton.setText(">"); //$NON-NLS-1$
- addButton.addSelectionListener(this);
- removeButton = new Button(buttonComposite, SWT.PUSH);
- removeButton.setText("<"); //$NON-NLS-1$
- removeButton.addSelectionListener(this);
-
- Composite listComposite = new Composite(dataComposite, SWT.NONE);
- GridLayout mtGL = new GridLayout();
- mtGL.numColumns = 1;
- mtGL.marginHeight = 0;
- mtGL.marginWidth = 0;
- mtGL.horizontalSpacing = 0;
- mtGL.verticalSpacing = 0;
- listComposite.setLayout(mtGL);
-
- GridData mtGD = new GridData();
- mtGD.grabExcessHorizontalSpace = true;
- mtGD.grabExcessVerticalSpace = true;
- mtGD.verticalAlignment = GridData.FILL;
- mtGD.horizontalAlignment = GridData.FILL;
- listComposite.setLayoutData(mtGD);
-
- memberTypesList = new org.eclipse.swt.widgets.List(listComposite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- GridData mtlGD = new GridData();
- mtlGD.grabExcessHorizontalSpace = true;
- mtlGD.grabExcessVerticalSpace = true;
- mtlGD.verticalAlignment = GridData.FILL;
- mtlGD.horizontalAlignment = GridData.FILL;
- mtlGD.heightHint = 200;
- mtlGD.widthHint = 200;
- memberTypesList.setLayoutData(mtlGD);
-
- initializeMemberListContent();
- return client;
- }
-
- private void initializeMemberListContent()
- {
- String result = element.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- if (result == null)
- {
- return;
- }
- StringTokenizer token = new StringTokenizer(result);
- while (token.hasMoreTokens())
- {
- memberTypesList.add(token.nextToken());
- }
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
- {
- populateBuiltInType();
- }
- else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
- {
- populateUserSimpleType(false);
- }
- else if (e.widget == addButton)
- {
- TableItem[] items = table.getItems();
- int selection = table.getSelectionIndex();
- if (items != null && items.length > 0 && selection >= 0)
- {
- String typeToAdd = items[selection].getData().toString();
- if (memberTypesList.indexOf(typeToAdd) < 0)
- {
- memberTypesList.add(items[selection].getData().toString());
- }
- }
- }
- else if (e.widget == removeButton)
- {
- String[] typesToRemove = memberTypesList.getSelection();
- for (int i=0; i < typesToRemove.length; i++)
- {
- memberTypesList.remove(typesToRemove[i]);
- }
- }
- }
-
- public void widgetDefaultSelected(SelectionEvent e)
- {
- }
-
- public void handleSetInput()
- {
- populateBuiltInType();
- }
-
- public void populateBuiltInType()
- {
- table.removeAll();
- List items = getBuiltInTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif")); //$NON-NLS-1$
- item.setData(items.get(i));
- }
- }
-
- public void populateUserSimpleType(boolean showAnonymous)
- {
- table.removeAll();
- if (showAnonymous)
- {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**"); //$NON-NLS-1$
- anonymousItem.setData("**anonymous**"); //$NON-NLS-1$
- }
- List items = getUserSimpleTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif")); //$NON-NLS-1$
- item.setData(items.get(i));
- }
- }
-
- public java.util.List getBuiltInTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getBuiltInTypeNamesList();
- }
-
- public java.util.List getUserSimpleTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getUserSimpleTypeNamesList();
- }
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/TypesPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/TypesPropertyDescriptor.java
deleted file mode 100644
index 961be94..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/TypesPropertyDescriptor.java
+++ /dev/null
@@ -1,1144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.List;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class TypesPropertyDescriptor extends PropertyDescriptor
-{
- Element element;
- XSDSchema xsdSchema;
- String property;
- /**
- * @param id
- * @param displayName
- */
- public TypesPropertyDescriptor(Object id, String displayName, Element element, XSDSchema xsdSchema)
- {
- super(id, displayName);
- this.property = (String)id;
- this.element = element;
- this.xsdSchema = xsdSchema;
- }
-
- boolean showComplexTypes = true;
-
- public CellEditor createPropertyEditor(Composite parent)
- {
- if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- showComplexTypes = true;
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(element, XSDConstants.LIST_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- showComplexTypes = false;
- }
- // CellEditor editor = new TypesOptionsTextCellEditor(parent);
- CellEditor editor = new TypesDialogCellEditor(parent);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
-
-
- public class TypesDialogCellEditor extends DialogCellEditor
- {
-
- /**
- * Creates a new Font dialog cell editor parented under the given control.
- * The cell editor value is <code>null</code> initially, and has no
- * validator.
- *
- * @param parent the parent control
- */
- protected TypesDialogCellEditor(Composite parent)
- {
- super(parent);
- }
-
- protected Object openDialogBox(Control cellEditorWindow)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
- TypesDialog dialog = new TypesDialog(shell);
-
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- String value = (String)getValue();
-
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- value = dialog.getType();
- doSetValue(value);
- fireApplyEditorValue();
- }
- deactivate();
- return null;
- }
- }
-
- public class TypesDialog extends org.eclipse.jface.dialogs.Dialog implements SelectionListener
- {
- String type;
- Object typeObject;
- Table table;
-
- TypeSection typeSection;
- boolean showAnonymous = true;
- String previousStringType = "";
- boolean isAnonymous;
- int previousType;
-
-
- public TypesDialog(Shell shell)
- {
- super(shell);
- }
-
- protected void configureShell(Shell shell)
- {
- super.configureShell(shell);
- }
-
- protected void buttonPressed(int buttonId)
- {
- if (buttonId == Dialog.OK)
- {
- type = table.getItem(table.getSelectionIndex()).getText();
- ok();
- }
- super.buttonPressed(buttonId);
- }
-
- public Object getTypeObject() { return typeObject; }
- public String getType() { return type; }
-
- //
- // Create the controls
- //
- public Control createDialogArea(Composite parent)
- {
- Composite client = (Composite)super.createDialogArea(parent);
- getShell().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_AVAILABLE_TYPES"));
-
- typeObject = null;
-
- GridLayout gl = new GridLayout(1, true);
- client.setLayout(gl);
-
- GridData gd = new GridData();
- gd.grabExcessHorizontalSpace = true;
- gd.grabExcessVerticalSpace = true;
- gd.horizontalAlignment = GridData.FILL;
- gd.verticalAlignment = GridData.FILL;
- gd.horizontalIndent = 0;
- client.setLayoutData(gd);
-
- typeSection = new TypeSection(client);
- typeSection.setShowUserComplexType(showComplexTypes);
-
- typeSection.createClient(client);
- typeSection.getSimpleType().setSelection(false);
- typeSection.getSimpleType().addSelectionListener(this);
- typeSection.getUserSimpleType().addSelectionListener(this);
- if (showComplexTypes)
- {
- typeSection.getUserComplexType().addSelectionListener(this);
- }
-
- table = new Table(client,
- SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
- table.setHeaderVisible(false);
- table.setLinesVisible(true);
-
- GridData gd2 = new GridData();
- gd2.grabExcessHorizontalSpace = true;
- gd2.grabExcessVerticalSpace = true;
- gd2.horizontalAlignment = GridData.FILL;
- gd2.heightHint = 200;
- table.setLayoutData(gd2);
-
- TableColumn tableColumn = new TableColumn(table, SWT.LEFT);
-// tableColumn.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
- tableColumn.setResizable(true);
- tableColumn.setWidth(200);
-
-
- // Fill table and select input type
- handleSetInput();
-
- return client;
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
- {
- populateBuiltInType();
- }
- else if (e.widget == typeSection.getUserComplexType() && typeSection.getUserComplexType().getSelection())
- {
- populateUserComplexType();
- }
- else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
- {
- populateUserSimpleType();
- }
-
- }
-
- public void widgetDefaultSelected(SelectionEvent e)
- {
- }
-
- protected void ok()
- {
- TableItem[] items = table.getItems();
- int selection = table.getSelectionIndex();
- if (items != null && items.length > 0 && selection >= 0)
- {
- typeObject = items[selection].getData();
- }
-// System.out.println("typeObject is " + typeObject);
-
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-// doSetValue(typeObject);
-// applyEditorValueAndDeactivate();
-// dialog.close();
-
- if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- if (typeObject.equals("**anonymous**"))
- {
- if (typeSection.getUserSimpleType().getSelection())
- {
- if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(
- element,
- XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- }
- else
- {
- if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- }
- // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
- element.removeAttribute(property);
- }
- else
- {
- updateElementToNotAnonymous(element);
- //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
- element.setAttribute(property, typeObject.toString());
- }
- }
-// endRecording(element);
-
- //implement dispose();
-// table.removeAll();
-// table.dispose();
- }
-
-
- public void handleSetInput()
- {
- table.removeAll();
- isAnonymous = checkForAnonymousType(element);
- // Attr attr = element.getAttributeNode(XSDConstants.TYPE_ATTRIBUTE);
- Attr attr = element.getAttributeNode(property);
- if (attr != null)
- {
- String value = attr.getValue();
- if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getSimpleType().setSelection(true);
- populateBuiltInType();
- int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(value);
- table.setSelection(i);
- previousType = 1;
- }
- else if (typeSection.getUserSimpleTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(value);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 2;
- }
- else if (typeSection.getUserComplexTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(value);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 3;
- }
- else // if it is type="" for an empty list of simple types
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- previousType = 2;
- }
- }
- else
- {
- if (isAnonymous)
- {
- if (isSTAnonymous(element))
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- previousType = 2;
- }
- else
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- previousType = 3;
- }
- table.setSelection(0); // anonymous
- // typeSection.getTypeList().setText("**anonymous**");
- }
- else
- {
- typeSection.getSimpleType().setSelection(true);
- populateBuiltInType();
- table.setSelection(0);
-
- // typeSection.getTypeList().setEnabled(true);
- // typeSection.getSimpleType().setSelection(true);
- // typeSection.populateBuiltInType(xsdSchema);
- // typeSection.getTypeList().setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE"));
- previousType = 1;
- }
- }
- if (table.getSelection() != null && table.getSelection().length > 0)
- {
- previousStringType = (table.getSelection()[0]).getText();
- }
- }
-
- public void populateBuiltInType()
- {
- table.removeAll();
- List items = getBuiltInTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- public void populateUserComplexType()
- {
- table.removeAll();
- if (showAnonymous)
- {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- List items = getUserComplexTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
-// System.out.println("item " + i + " is " + item);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
- item.setData(items.get(i));
- }
- }
-
- public void populateUserSimpleType()
- {
- table.removeAll();
- if (showAnonymous)
- {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- List items = getUserSimpleTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- boolean checkForAnonymousType(Element element)
- {
- /*
- * Using Ed's model to check boolean isAnonymous = false;
- *
- * XSDConcreteComponent component =
- * getXSDSchema().getCorrespondingComponent(element); if (component
- * instanceof XSDElementDeclaration) { XSDElementDeclaration xsdElem =
- * (XSDElementDeclaration)component; isAnonymous =
- * xsdElem.isSetAnonymousTypeDefinition(); } return isAnonymous;
- */
- XSDDOMHelper helper = new XSDDOMHelper();
- boolean isAnonymous = false;
- Node aNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- return true;
- }
- aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- isAnonymous = true;
- }
- return isAnonymous;
- }
-
- void updateElementToAnonymous(Element element, String xsdType)
- {
- String prefix = element.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- updateElementToNotAnonymous(element);
- Element childNode = null;
- if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
- {
- childNode = element.getOwnerDocument().createElementNS(
- XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
- prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
- {
- childNode =
- element.getOwnerDocument().createElementNS(
- XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
- prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- element.appendChild(childNode);
- }
-
- boolean isSTAnonymous(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node aNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- if (XSDDOMHelper
- .inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- return true;
- }
- }
- return false;
- }
-
- boolean isCTAnonymous(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- {
- return true;
- }
- }
- return false;
- }
-
- XSDTypeDefinition getAnonymousTypeDefinition(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node typeDefinitionNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (typeDefinitionNode == null)
- {
- typeDefinitionNode =
- helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- if (typeDefinitionNode != null)
- {
- XSDConcreteComponent component =
- xsdSchema.getCorrespondingComponent(typeDefinitionNode);
- if (component instanceof XSDTypeDefinition)
- {
- return (XSDTypeDefinition) component;
- }
- }
- return null;
- }
-
- void updateElementToNotAnonymous(Element element)
- {
- if (element != null)
- {
- NodeList children = element.getChildNodes();
- if (children != null)
- {
- for (int i = 0; i < children.getLength(); i++)
- {
- Node node = (Node) children.item(i);
- if (node instanceof Element)
- {
- if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG)
- || node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
- {
- XSDDOMHelper.removeNodeAndWhitespace(node);
- i = 0;
- }
- }
- }
- }
- }
- }
-
- public java.util.List getBuiltInTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getBuiltInTypeNamesList();
- }
-
- public java.util.List getUserSimpleTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getUserSimpleTypeNamesList();
- }
-
- public java.util.List getUserComplexTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getUserComplexTypeNamesList();
- }
-
- protected boolean hasElementChildren(Node parentNode)
- {
- boolean hasChildrenElements = false;
- if (parentNode != null && parentNode.hasChildNodes())
- {
- NodeList nodes = parentNode.getChildNodes();
- for (int i = 0; i < nodes.getLength(); i++)
- {
- if (nodes.item(i) instanceof Element)
- {
- hasChildrenElements = true;
- break;
- }
- }
- }
- return hasChildrenElements;
- }
-
- }
-
-
-
-
-
-
-
-
- class TypesOptionsTextCellEditor extends OptionsTextCellEditor
- {
- boolean showAnonymous = true;
-
- public TypesOptionsTextCellEditor(Composite parent)
- {
- super(parent);
- }
-
- protected Control createControl(Composite parent)
- {
- isTextReadOnly = true;
- return super.createControl(parent);
- }
-
- Table table;
- TypeSection typeSection;
-
- protected void openDialog()
- {
- typeObject = null;
- dialog = new Shell(XSDEditorPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.MODELESS);
- Display display = dialog.getDisplay();
- GridLayout gl = new GridLayout(1, true);
- gl.marginHeight = 0;
- gl.marginWidth = 0;
- gl.horizontalSpacing = 0;
- gl.verticalSpacing = 0;
- dialog.setLayout(gl);
- GridData gd = new GridData();
- gd.grabExcessHorizontalSpace = true;
- gd.grabExcessVerticalSpace = true;
- gd.horizontalAlignment = GridData.FILL;
- gd.verticalAlignment = GridData.FILL;
- gd.horizontalIndent = 0;
- dialog.setLayoutData(gd);
-
-
-
- typeSection = new TypeSection(dialog);
- typeSection.setShowUserComplexType(showComplexTypes);
-
- typeSection.createClient(dialog);
- typeSection.getSimpleType().setSelection(false);
- typeSection.getSimpleType().addSelectionListener(this);
- typeSection.getUserSimpleType().addSelectionListener(this);
- if (showComplexTypes)
- {
- typeSection.getUserComplexType().addSelectionListener(this);
- }
-
- table = new Table(dialog,
- SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
- table.setHeaderVisible(false);
- table.setLinesVisible(true);
- GridData gd2 = new GridData();
- gd2.grabExcessHorizontalSpace = true;
- gd2.grabExcessVerticalSpace = true;
- gd2.horizontalAlignment = GridData.FILL;
- gd2.verticalAlignment = GridData.FILL;
- table.setLayoutData(gd2);
-
- // Fill table and select input type
- handleSetInput();
-
- TableColumn tc = new TableColumn(table, SWT.LEFT);
- tc.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
- tc.setResizable(false);
-
- int MAX_ITEMS = 23;
- Rectangle tableBounds = table.getBounds();
- tableBounds.height = Math.min(tableBounds.height, table.getItemHeight()*MAX_ITEMS);
- table.setBounds(tableBounds);
- dialog.pack();
-
- dialog.addShellListener(new ShellAdapter()
- {
- public void shellDeactivated(ShellEvent e)
- {
- cancel();
- }
- });
-
- Rectangle dialogBounds = dialog.getBounds();
- Point buttonLocation = getButtonAbsoluteLocation();
- dialogBounds.x = buttonLocation.x;
- dialogBounds.y = buttonLocation.y;
-
- if (dialogBounds.height > 200)
- {
- dialogBounds.height = 200;
- }
- if (dialogBounds.height < 100)
- {
- dialogBounds.height = 200;
- }
- if (dialogBounds.width > 200)
- {
- dialogBounds.width = typeSection.getUserComplexType().getBounds().width + 30;
- }
- dialog.setBounds(dialogBounds);
- tc.setWidth(dialogBounds.width);
-
- table.addKeyListener(new KeyAdapter()
- {
- public void keyPressed(KeyEvent e)
- {
- char character = e.character;
- if (character == SWT.CR || character == SWT.LF)
- ok();
- else if (character == SWT.ESC)
- cancel();
- }
- });
-
- table.addMouseListener(new MouseAdapter()
- {
- public void mouseDoubleClick(MouseEvent e)
- {
- ok();
- }
- public void mouseDown(MouseEvent e)
- {
- ok();
- }
- });
-
- try
- {
- dialog.open();
- table.setFocus();
- table.showSelection();
-
- while (!dialog.isDisposed())
- {
- if (!display.readAndDispatch())
- {
- display.sleep();
- }
- }
- }
- finally
- {
- if (!dialog.isDisposed())
- cancel();
- }
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
- {
- populateBuiltInType();
- }
- else if (e.widget == typeSection.getUserComplexType() && typeSection.getUserComplexType().getSelection())
- {
- populateUserComplexType();
- }
- else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
- {
- populateUserSimpleType();
- }
- }
-
- protected void cancel()
- {
- super.cancel();
- table.dispose();
- }
-
- protected void ok()
- {
- TableItem[] items = table.getItems();
- selection = table.getSelectionIndex();
- if (items != null && items.length > 0 && selection >= 0)
- {
- typeObject = items[selection].getData();
- }
-// System.out.println("typeObject is " + typeObject);
-
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
- doSetValue(typeObject);
- applyEditorValueAndDeactivate();
- dialog.close();
-
- if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- if (typeObject.equals("**anonymous**"))
- {
- if (typeSection.getUserSimpleType().getSelection())
- {
- if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(
- element,
- XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- }
- else
- {
- if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- }
- // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
- element.removeAttribute(property);
- }
- else
- {
- updateElementToNotAnonymous(element);
- //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
- element.setAttribute(property, typeObject.toString());
- }
- }
-// endRecording(element);
-
- //implement dispose();
- table.removeAll();
- table.dispose();
- }
-
- String previousStringType = "";
- boolean isAnonymous;
- int previousType;
-
- public void handleSetInput()
- {
- table.removeAll();
- isAnonymous = checkForAnonymousType(element);
- // Attr attr = element.getAttributeNode(XSDConstants.TYPE_ATTRIBUTE);
- Attr attr = element.getAttributeNode(property);
- if (attr != null)
- {
- String value = attr.getValue();
- if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getSimpleType().setSelection(true);
- populateBuiltInType();
- int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(value);
- table.setSelection(i);
- previousType = 1;
- }
- else if (typeSection.getUserSimpleTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(value);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 2;
- }
- else if (typeSection.getUserComplexTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(value);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 3;
- }
- else // if it is type="" for an empty list of simple types
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- previousType = 2;
- }
- }
- else
- {
- if (isAnonymous)
- {
- if (isSTAnonymous(element))
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- previousType = 2;
- }
- else
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- previousType = 3;
- }
- table.setSelection(0); // anonymous
- // typeSection.getTypeList().setText("**anonymous**");
- }
- else
- {
- typeSection.getSimpleType().setSelection(true);
- populateBuiltInType();
- table.setSelection(0);
-
- // typeSection.getTypeList().setEnabled(true);
- // typeSection.getSimpleType().setSelection(true);
- // typeSection.populateBuiltInType(xsdSchema);
- // typeSection.getTypeList().setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE"));
- previousType = 1;
- }
- }
- if (table.getSelection() != null && table.getSelection().length > 0)
- {
- previousStringType = (table.getSelection()[0]).getText();
- }
- }
-
- public void populateBuiltInType()
- {
- table.removeAll();
- List items = getBuiltInTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- public void populateUserComplexType()
- {
- table.removeAll();
- if (showAnonymous)
- {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- List items = getUserComplexTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
-// System.out.println("item " + i + " is " + item);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
- item.setData(items.get(i));
- }
- }
-
- public void populateUserSimpleType()
- {
- table.removeAll();
- if (showAnonymous)
- {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- List items = getUserSimpleTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- boolean checkForAnonymousType(Element element)
- {
- /*
- * Using Ed's model to check boolean isAnonymous = false;
- *
- * XSDConcreteComponent component =
- * getXSDSchema().getCorrespondingComponent(element); if (component
- * instanceof XSDElementDeclaration) { XSDElementDeclaration xsdElem =
- * (XSDElementDeclaration)component; isAnonymous =
- * xsdElem.isSetAnonymousTypeDefinition(); } return isAnonymous;
- */
- XSDDOMHelper helper = new XSDDOMHelper();
- boolean isAnonymous = false;
- Node aNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- return true;
- }
- aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- isAnonymous = true;
- }
- return isAnonymous;
- }
-
- void updateElementToAnonymous(Element element, String xsdType)
- {
- String prefix = element.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- updateElementToNotAnonymous(element);
- Element childNode = null;
- if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
- {
- childNode = element.getOwnerDocument().createElementNS(
- XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
- prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
- {
- childNode =
- element.getOwnerDocument().createElementNS(
- XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
- prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- element.appendChild(childNode);
- }
-
- boolean isSTAnonymous(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node aNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- if (XSDDOMHelper
- .inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- return true;
- }
- }
- return false;
- }
-
- boolean isCTAnonymous(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- {
- return true;
- }
- }
- return false;
- }
-
- XSDTypeDefinition getAnonymousTypeDefinition(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node typeDefinitionNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (typeDefinitionNode == null)
- {
- typeDefinitionNode =
- helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- if (typeDefinitionNode != null)
- {
- XSDConcreteComponent component =
- xsdSchema.getCorrespondingComponent(typeDefinitionNode);
- if (component instanceof XSDTypeDefinition)
- {
- return (XSDTypeDefinition) component;
- }
- }
- return null;
- }
-
- void updateElementToNotAnonymous(Element element)
- {
- NodeList children = element.getChildNodes();
- if (children != null)
- {
- for (int i = 0; i < children.getLength(); i++)
- {
- Node node = (Node) children.item(i);
- if (node instanceof Element)
- {
- if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG)
- || node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
- {
- XSDDOMHelper.removeNodeAndWhitespace(node);
- i = 0;
- }
- }
- }
- }
- }
-
- public java.util.List getBuiltInTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getBuiltInTypeNamesList();
- }
-
- public java.util.List getUserSimpleTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getUserSimpleTypeNamesList();
- }
-
- public java.util.List getUserComplexTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getUserComplexTypeNamesList();
- }
-
- protected boolean hasElementChildren(Node parentNode)
- {
- boolean hasChildrenElements = false;
- if (parentNode != null && parentNode.hasChildNodes())
- {
- NodeList nodes = parentNode.getChildNodes();
- for (int i = 0; i < nodes.getLength(); i++)
- {
- if (nodes.item(i) instanceof Element)
- {
- hasChildrenElements = true;
- break;
- }
- }
- }
- return hasChildrenElements;
- }
-
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XPathPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XPathPropertySource.java
deleted file mode 100644
index 829dc16..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XPathPropertySource.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class XPathPropertySource
- extends BasePropertySource
- implements IPropertySource
-{
- /**
- *
- */
- public XPathPropertySource()
- {
- super();
- }
- /**
- * @param viewer
- * @param xsdSchema
- */
- public XPathPropertySource(Viewer viewer, XSDSchema xsdSchema)
- {
- super(viewer, xsdSchema);
-// From Field
-// WorkbenchHelp.setHelp(comp, XSDEditorContextIds.XSDE_UNIQUE_BASE_FIELDS_GROUP);
-// fieldField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_FIELD_TEXT"));
-// WorkbenchHelp.setHelp(fieldField, XSDEditorContextIds.XSDE_UNIQUE_BASE_SOURCE);
-
-// From Selector
-// WorkbenchHelp.setHelp(comp, XSDEditorContextIds.XSDE_UNIQUE_BASE_SELECTOR_GROUP);
-// WorkbenchHelp.setHelp(selectorField, XSDEditorContextIds.XSDE_UNIQUE_BASE_SELECTOR);
-// selectorField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_SELECTOR_TEXT"));
-
- }
- /**
- * @param xsdSchema
- */
- public XPathPropertySource(XSDSchema xsdSchema)
- {
- super(xsdSchema);
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
- */
- public Object getEditableValue()
- {
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
- */
- public IPropertyDescriptor[] getPropertyDescriptors()
- {
- List list = new ArrayList();
- // Create a descriptor and set a category
- PropertyDescriptor xpathDescriptor =
- new TextPropertyDescriptor(
- XSDConstants.XPATH_ATTRIBUTE,
- XSDConstants.XPATH_ATTRIBUTE);
- list.add(xpathDescriptor);
-
- IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
- list.toArray(result);
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
- */
- public Object getPropertyValue(Object id)
- {
- Object result = null;
- if (id instanceof String)
- {
- result = element.getAttribute((String) id);
- }
- if (result == null)
- {
- result = "";
- }
- return result;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
- */
- public boolean isPropertySet(Object id)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
- */
- public void resetPropertyValue(Object id)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
- */
- public void setPropertyValue(Object id, Object value)
- {
- if (value != null)
- {
- if (value instanceof String)
- {
- if (XSDDOMHelper.inputEquals(element, XSDConstants.FIELD_ELEMENT_TAG, false))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_FIELD_XPATH_CHANGE"), element);
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.SELECTOR_ELEMENT_TAG, false))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SELECTOR_XPATH_CHANGE"), element);
- }
-
- element.setAttribute(XSDConstants.XPATH_ATTRIBUTE, (String)value);
- endRecording(element);
- }
- }
- Runnable delayedUpdate = new Runnable()
- {
- public void run()
- {
- if (viewer != null)
- viewer.refresh();
- }
- };
- Display.getCurrent().asyncExec(delayedUpdate);
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDComboBoxPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDComboBoxPropertyDescriptor.java
deleted file mode 100644
index 1bcfb2d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDComboBoxPropertyDescriptor.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import java.text.MessageFormat;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.PopupList;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-
-public class XSDComboBoxPropertyDescriptor extends PropertyDescriptor
-{
- private String[] values;
-
- public XSDComboBoxPropertyDescriptor(Object id, String displayName, String[] valuesArray) {
- super(id, displayName);
- values = valuesArray;
- }
- /**
- * The <code>ComboBoxPropertyDescriptor</code> implementation of this
- * <code>IPropertyDescriptor</code> method creates and returns a new
- * <code>ComboBoxCellEditor</code>.
- * <p>
- * The editor is configured with the current validator if there is one.
- * </p>
- */
- public CellEditor createPropertyEditor(Composite parent) {
- CellEditor editor = new XSDComboBoxCellEditor(parent, values);
- //CellEditor editor = new StringComboBoxCellEditor(parent, values);
- if (getValidator() != null)
- editor.setValidator(getValidator());
- return editor;
- }
-
- public class XSDComboBoxCellEditor extends CellEditor
- {
- DynamicCellEditor comboBox;
-
- private String fSelection;
- protected String[] fItems;
- protected Object fValue;
- int selection;
- Object typeObject;
-
- public void createItems(String[] items)
- {
- fItems = items;
- }
-
- public String[] getComboBoxItems()
- {
- return fItems;
- }
-
- /**
- * Creates a new combo box cell editor with the given choices.
- */
- public XSDComboBoxCellEditor(Composite parent, String[] items)
- {
- super(parent);
- fSelection = "";
- setItems(items);
-// fText.setText("");
- }
-
- public void activate() {
- if (doGetValue() != null)
- {
-// int i = ((Integer)doGetValue()).intValue();
-// if (i >= 0)
-// {
-// comboBox.setText(fItems[i]);
-// }
- comboBox.setText((String)fValue);
- }
- }
-
- public void deactivate() {
- super.deactivate();
- }
-
- public void setItems(String[] items) {
- Assert.isNotNull(items);
- this.fItems = items;
- populateComboBoxItems();
- }
-
- private void populateComboBoxItems() {
- if (comboBox != null && fItems != null) {
- comboBox.removeAll();
- for (int i = 0; i < fItems.length; i++)
- comboBox.add(fItems[i], i);
-
- setValueValid(true);
- selection = 0;
- }
- }
-
- /**
- * Creates the actual UI representation.
- */
-
- protected Control createControl(Composite parent)
- {
- comboBox = new DynamicCellEditor(parent, SWT.READ_ONLY |SWT.NONE | SWT.NO_TRIM);
- comboBox.addKeyListener(new KeyAdapter() {
- // hook key pressed - see PR 14201
- public void keyPressed(KeyEvent e) {
-// System.out.println("Key e " + e);
- keyReleaseOccured(e);
- }
- });
-
- comboBox.addSelectionListener(new SelectionAdapter() {
- public void widgetDefaultSelected(SelectionEvent event) {
- }
-
- public void widgetSelected(SelectionEvent event) {
-// System.out.println("combo selected");
- selection = comboBox.getSelectionIndex();
- if (!comboBox.isDropped()) // allows user to traverse list using keyboard without applying value
- applyEditorValueAndDeactivate();
- }
- });
-
- comboBox.addTraverseListener(new TraverseListener() {
- public void keyTraversed(TraverseEvent e) {
-// System.out.println("TRAVERSE e " + e);
- if (e.detail == SWT.TRAVERSE_ESCAPE || e.detail == SWT.TRAVERSE_RETURN) {
- e.doit = false;
- }
- }
- });
-
-
- comboBox.addFocusListener(new FocusAdapter() {
- public void focusLost(FocusEvent e) {
- XSDComboBoxCellEditor.this.focusLost();
- }
- public void focusGained(FocusEvent e) {
-// System.out.println("focusGained");
- }
- });
- setValueValid(true);
- return comboBox;
- }
-
- protected void focusLost() {
-// System.out.println("CELLEDITOR FOCUS LOST");
- if (isActivated()) {
- applyEditorValueAndDeactivate();
- }
- }
-
- protected void keyReleaseOccured(KeyEvent keyEvent) {
- if (keyEvent.character == '\u001b') { // Escape character
- comboBox.setText(""); // clear text
- fireCancelEditor();
- } else if (keyEvent.character == '\r') { // Return key
- //fireApplyEditorValue();
- applyEditorValueAndDeactivate();
- deactivate();
- }
- }
-
- void applyEditorValueAndDeactivate() {
- // must set the selection before getting value
- selection = comboBox.getSelectionIndex();
- if (selection < 0)
- {
- deactivate();
- return;
- }
- // Object newValue = new Integer(selection);
- Object newValue = fItems[selection];
- markDirty();
- boolean isValid = isCorrect(newValue);
- setValueValid(isValid);
- if (!isValid) {
- // try to insert the current value into the error message.
- setErrorMessage(
- MessageFormat.format(getErrorMessage(), new Object[] {fItems[selection]}));
- }
- doSetValue(newValue);
- fireApplyEditorValue();
- deactivate();
- }
-
- protected Object doGetValue() {
- return fValue;
- // otherwise limits to set of valid values
-// Object index = super.doGetValue();
-// int selection = -1;
-// if (index instanceof Integer)
-// selection = ((Integer) index).intValue();
-// if (selection >= 0)
-// return fItems[selection];
-// else if (getControl() instanceof CCombo) {
-// // retrieve the actual text as the list of valid items doesn't contain the value
-// return ((CCombo) getControl()).getText();
-// }
-// return null;
- }
- private boolean fSettingValue = false;
- protected void doSetValue(Object value) {
- if (fSettingValue)
- return;
- fSettingValue = true;
- if (value instanceof Integer) {
- //super.doSetValue(value);
- fValue = value;
- }
- else {
- String stringValue = value.toString();
- int selection = -1;
- for (int i = 0; i < fItems.length; i++)
- if (fItems[i].equals(stringValue))
- selection = i;
- if (selection >= 0)
- //super.doSetValue(new Integer(selection));
- fValue = stringValue;
- else {
- // super.doSetValue(new Integer(-1));
- // fValue = new Integer(-1);
- fValue = stringValue;
- if (getControl() instanceof CCombo && !stringValue.equals(((CCombo) getControl()).getText())) {
- // update the Text widget
- ((CCombo) getControl()).setText(stringValue);
- }
- }
- }
- fSettingValue = false;
- }
-
- /**
- * Returns the cell editor's value.
- */
-// protected Object doGetValue()
-// {
-// return fValue;
-// }
-
- /**
- * Set the focus to the cell editor's UI representation.
- */
- protected void doSetFocus()
- {
-// fButton.setFocus();
-// System.out.println("doSetFocus() " + moreButton.setFocus());
- comboBox.setFocus();
- }
-
- /**
- * Sets the value of the cell editor to the given value.
- */
-// protected void doSetValue(Object value)
-// {
-// fValue = value;
-// }
-
- protected void fillPopupList(PopupList list)
- {
- String[] labels= new String[fItems.length];
- for (int i= 0; i < labels.length; i++)
- {
- String item= fItems[i];
- labels[i]= item;
-// System.out.println(fItems[i]);
- if (fSelection == null && fValue != null && fValue.equals(item))
- {
- fSelection = item;
- }
- }
-
- list.setItems(labels);
- if (fSelection != null)
- {
-// fText.setText(fSelection);
- list.select(fSelection);
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDPropertySourceProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDPropertySourceProvider.java
deleted file mode 100644
index 78e790b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDPropertySourceProvider.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties;
-
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.IPropertySourceProvider;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class XSDPropertySourceProvider implements IPropertySourceProvider
-{
- XSDSchema xsdSchema;
- /**
- *
- * @todo Generated comment
- */
- public XSDPropertySourceProvider()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.views.properties.IPropertySourceProvider#getPropertySource(java.lang.Object)
- */
- public IPropertySource getPropertySource(Object object)
- {
- if (object == null) return null;
-
- if (object instanceof XSDConcreteComponent)
- {
- XSDConcreteComponent component = (XSDConcreteComponent)object;
-
- xsdSchema = component.getSchema();
-
- if (component instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)component;
- if (elementDeclaration.isElementDeclarationReference())
- {
- component = elementDeclaration.getResolvedElementDeclaration();
- }
- }
-
- Element input = component.getElement();
-
- BasePropertySource bps = (BasePropertySource)getXSDPropertySource(input);
- if (bps == null) return null;
-
- bps.setInput(input);
- return bps;
- }
- return null;
- }
-
- boolean showParent = false;
-
- public IPropertySource getXSDPropertySource(Object object)
- {
- Element input = (Element)object;
-
- showParent = false;
-
- if (inputEquals(input, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- return new ElementPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ELEMENT_ELEMENT_TAG, true))
- {
- return new GroupRefPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
- inputEquals(input, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
- inputEquals(input, XSDConstants.ALL_ELEMENT_TAG, false))
- {
- return new ModelGroupPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- return new AttributePropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
- {
- return new AttributeGroupRefPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
- {
- return new NamePropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
- {
- return new AttributeGroupRefPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.NOTATION_ELEMENT_TAG, false))
- {
- return new NotationPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- return new SimpleTypePropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.GROUP_ELEMENT_TAG, false))
- {
- return new NamePropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.GROUP_ELEMENT_TAG, true))
- {
- return new GroupRefPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.SCHEMA_ELEMENT_TAG, false))
- {
- return new SchemaPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- {
- return new ComplexTypePropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.DOCUMENTATION_ELEMENT_TAG, false))
- {
- return new DocumentationPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.APPINFO_ELEMENT_TAG, false))
- {
- return new AppInfoPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- if (input != null && input instanceof Element)
- {
- Element parent = (Element)input;
- XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
- Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
- if (derivedByNode != null)
- {
- if (inputEquals(derivedByNode, XSDConstants.RESTRICTION_ELEMENT_TAG, false) ||
- inputEquals(derivedByNode, XSDConstants.EXTENSION_ELEMENT_TAG, false))
- {
- return new SimpleContentPropertySource(xsdSchema);
- }
- }
- else
- {
- return null;
- }
- }
- }
- else if (inputEquals(input, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- if (input != null && input instanceof Element)
- {
- Element parent = (Element)input;
- XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
- Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
- if (derivedByNode != null)
- {
- return new SimpleContentPropertySource(xsdSchema);
- }
- else
- {
- return null;
- }
- }
- }
- else if (inputEquals(input, XSDConstants.LIST_ELEMENT_TAG, false))
- {
- return new SimpleTypeListPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- return new SimpleTypeUnionPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
- {
- return createRestrictWindow(input, xsdSchema);
- }
- else if (XSDDOMHelper.isFacet(input))
- {
- if (input != null && input instanceof Element)
- {
- Node parent = ((Element)input).getParentNode();
- if (inputEquals(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
- {
- return createRestrictWindow(input, xsdSchema);
- }
- }
- }
- else if (inputEquals(input, XSDConstants.EXTENSION_ELEMENT_TAG, false))
- {
- if (input != null && input instanceof Element)
- {
- Node parent = ((Element)input).getParentNode();
- if (inputEquals(parent, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false)
- || inputEquals(parent, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- showParent = true;
- return new SimpleContentPropertySource(xsdSchema);
- }
- }
- }
- else if (inputEquals(input, XSDConstants.PATTERN_ELEMENT_TAG, false))
- {
- return new PatternPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ENUMERATION_ELEMENT_TAG, false))
- {
- return new EnumerationPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ANY_ELEMENT_TAG, false))
- {
- return new AnyElementPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
- {
- return new AnyAttributePropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.UNIQUE_ELEMENT_TAG, false))
- {
- return new NamePropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.KEYREF_ELEMENT_TAG, false))
- {
- return new KeyrefPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.SELECTOR_ELEMENT_TAG, false))
- {
- return new XPathPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.FIELD_ELEMENT_TAG, false))
- {
- return new XPathPropertySource(xsdSchema);
- }
- else if (inputEquals(input, XSDConstants.KEY_ELEMENT_TAG, false))
- {
- return new NamePropertySource(xsdSchema);
- }
- else
- {
- return null;
- }
- return null;
- }
-
- protected IPropertySource createRestrictWindow(Object input, XSDSchema xsdSchema)
- {
- // special case where SimpleType restriction is different than SimpleContent restriction
-
- if (input != null && input instanceof Element)
- {
- Node parent = ((Element)input).getParentNode();
- if (inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- return new SimpleRestrictPropertySource(xsdSchema);
- }
- else if (inputEquals(parent, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- return new SimpleRestrictPropertySource(xsdSchema);
- }
- else if (inputEquals(parent, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- showParent = true;
- return new SimpleContentPropertySource(xsdSchema);
- }
- }
- return null;
- }
-
-
- protected boolean inputEquals(Object input, String tagname, boolean isRef)
- {
- return XSDDOMHelper.inputEquals(input, tagname, isRef);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSection.java
deleted file mode 100644
index d96ec4b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSection.java
+++ /dev/null
@@ -1,494 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.part.EditorActionBarContributor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.NameValidator;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-//import org.apache.xerces.util.XMLChar;
-
-public class AbstractSection implements ISection, IPropertyChangeListener, Listener, SelectionListener
-{
- private TabbedPropertySheetWidgetFactory factory;
- protected IWorkbenchPart part;
- protected ISelection selection;
- protected Object input;
- protected boolean doRefresh = true;
- XSDSchema xsdSchema;
- protected boolean isReadOnly = false;
- private IStatusLineManager statusLine;
- protected Composite composite;
- protected int rightMarginSpace;
- protected int tableMinimumWidth = 50;
-
- /**
- *
- */
- public AbstractSection()
- {
- super();
- }
-
- public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage)
- {
- createControls(parent, tabbedPropertySheetPage.getWidgetFactory());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory aFactory)
- {
- this.factory = aFactory;
- GC gc = new GC(parent);
- Point extent = gc.textExtent(" ... ");
- rightMarginSpace = extent.x;
- gc.dispose();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#setInput(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public void setInput(IWorkbenchPart part, ISelection selection)
- {
- Assert.isTrue(selection instanceof IStructuredSelection);
- this.part = part;
- this.selection = selection;
- Object input = ((IStructuredSelection)selection).getFirstElement();
- this.input = input;
-
- if (input instanceof XSDConcreteComponent)
- {
- xsdSchema = ((XSDConcreteComponent)input).getSchema();
-
- Element element = ((XSDConcreteComponent)input).getElement();
- if (element instanceof IDOMNode)
- {
- isReadOnly = false;
- }
- else
- {
- isReadOnly = true;
- }
- }
- statusLine = getStatusLine();
- clearErrorMessage();
-
-// refresh();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#aboutToBeShown()
- */
- public void aboutToBeShown()
- {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#aboutToBeHidden()
- */
- public void aboutToBeHidden()
- {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#dispose()
- */
- public void dispose()
- {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#getMinimumHeight()
- */
- public int getMinimumHeight()
- {
- return SWT.DEFAULT;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#refresh()
- */
- public void refresh()
- {
- }
-
- public Object getInput()
- {
- if (input instanceof Element)
- {
- input = xsdSchema.getCorrespondingComponent((Element)input);
- }
- return input;
- }
-
- public XSDSchema getSchema()
- {
- return xsdSchema;
- }
-
- /**
- * Get the widget factory.
- * @return the widget factory.
- */
- public TabbedPropertySheetWidgetFactory getWidgetFactory() {
- return factory;
- }
-
- public void propertyChange(PropertyChangeEvent event)
- {
- refresh();
- }
-
-
- public void doWidgetDefaultSelected(SelectionEvent e)
- {}
-
- public void doWidgetSelected(SelectionEvent e)
- {}
-
- /**
- * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(SelectionEvent)
- */
- public void widgetDefaultSelected(SelectionEvent e)
- {
- if (isListenerEnabled() &&
- getInput() != null &&
- !isInDoHandle &&
- !isReadOnly)
- {
- isInDoHandle = true;
- doWidgetDefaultSelected(e);
- isInDoHandle = false;
- }
-
- }
-
- /**
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e)
- {
- if (isListenerEnabled() &&
- getInput() != null &&
- !isInDoHandle &&
- !isReadOnly)
- {
- isInDoHandle = true;
- doWidgetSelected(e);
- isInDoHandle = false;
- }
-
- }
-
- boolean listenerEnabled = true;
- /**
- * Get the value of listenerEnabled.
- * @return value of listenerEnabled.
- */
- public boolean isListenerEnabled()
- {
- return listenerEnabled;
- }
-
- /**
- * Set the value of listenerEnabled.
- * @param v Value to assign to listenerEnabled.
- */
- public void setListenerEnabled(boolean v)
- {
- this.listenerEnabled = v;
- }
-
- public void handleEvent(Event event)
- {
- if (isListenerEnabled() && !isInDoHandle && !isReadOnly)
- {
- isInDoHandle = true;
- startDelayedEvent(event);
- isInDoHandle = false;
- } // end of if ()
- }
-
- public void doHandleEvent(Event event)
- {
-
- }
-
- protected DelayedEvent delayedTask;
-
- protected void startDelayedEvent(Event e)
- {
- if (delayedTask == null ||
- delayedTask.getEvent() == null)
- {
- delayedTask = new DelayedEvent();
- delayedTask.setEvent(e);
- Display.getDefault().timerExec(500,delayedTask);
- }
- else
- {
- Event delayedEvent = delayedTask.getEvent();
-
- if (e.widget == delayedEvent.widget &&
- e.type == delayedEvent.type)
- {
- // same event, just different data, delay new event
- delayedTask.setEvent(null);
- }
- delayedTask = new DelayedEvent();
- delayedTask.setEvent(e);
- Display.getDefault().timerExec(500,delayedTask);
- }
- }
-
- class DelayedEvent implements Runnable
- {
- protected Event event;
-
- /*
- * @see Runnable#run()
- */
- public void run()
- {
- if (event != null)
- {
- isInDoHandle = true;
- doHandleEvent(event);
- isInDoHandle = false;
- event = null;
- }
- }
-
- /**
- * Gets the event.
- * @return Returns a Event
- */
- public Event getEvent()
- {
- return event;
- }
-
- /**
- * Sets the event.
- * @param event The event to set
- */
- public void setEvent(Event event)
- {
- this.event = event;
- }
-
- }
-
- boolean isInDoHandle;
- /**
- * Get the value of isInDoHandle.
- * @return value of isInDoHandle.
- */
- public boolean isInDoHandle()
- {
- return isInDoHandle;
- }
-
-
- protected IEditorPart getActiveEditor()
- {
- IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
- IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
- IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
-// IEditorPart editorPart = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
-
- return editorPart;
- }
-
- static protected IStatusLineManager getStatusLineManager(IEditorPart editorPart)
- {
- IStatusLineManager result = null;
- try
- {
- EditorActionBarContributor contributor = (EditorActionBarContributor)editorPart.getEditorSite().getActionBarContributor();
- result = contributor.getActionBars().getStatusLineManager();
- }
- catch (Exception e)
- {
- }
- return result;
- }
-
- protected XSDDOMHelper domHelper = new XSDDOMHelper();
- /**
- * Gets the domHelper.
- * @return Returns a XSDDomHelper
- */
- public XSDDOMHelper getDomHelper()
- {
- return domHelper;
- }
-
- public DocumentImpl getDocument(Element element)
- {
- return (DocumentImpl) element.getOwnerDocument();
- }
-
- public void beginRecording(String description, Element element)
- {
- getDocument(element).getModel().beginRecording(this, description);
- }
-
- public void endRecording(Element element)
- {
- DocumentImpl doc = (DocumentImpl) getDocument(element);
-
- doc.getModel().endRecording(this);
- }
-
- protected boolean validateName(String name)
- {
- try
- {
- return NameValidator.isValid(name);
- }
- catch (Exception e)
- {
- return false;
- }
- }
-
- // TODO
- protected boolean validateLanguage(String lang)
- {
- return true;
- }
-
- protected boolean validatePrefix(String prefix)
- {
- return true;//XMLChar.isValidNCName(prefix);
- }
-
-
- protected Action getNewElementAction(String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateElementAction action = new CreateElementAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- action.setXSDSchema(getSchema());
- action.setSelectionProvider(null);
- return action;
- }
-
- public void setErrorMessage(String message)
- {
- if (statusLine != null)
- {
- statusLine.setErrorMessage(message);
- statusLine.update(true);
- }
- }
-
- public void clearErrorMessage()
- {
- if (statusLine != null)
- {
- statusLine.setErrorMessage(null);
- statusLine.update(false);
- }
- }
-
- EditorActionBarContributor contributor;
- protected IStatusLineManager getStatusLine()
- {
-// IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
-// IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
- IEditorPart editorPart = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
-
- if (statusLine == null)
- {
- try
- {
- contributor = (EditorActionBarContributor)editorPart.getEditorSite().getActionBarContributor();
- statusLine = contributor.getActionBars().getStatusLineManager();
- }
- catch (Exception e)
- {
- }
- }
- return statusLine;
- }
-
- /**
- * Get the standard label width when labels for sections line up on the left
- * hand side of the composite. We line up to a fixed position, but if a
- * string is wider than the fixed position, then we use that widest string.
- *
- * @param parent
- * The parent composite used to create a GC.
- * @param labels
- * The list of labels.
- * @return the standard label width.
- */
- protected int getStandardLabelWidth(Composite parent, String[] labels) {
- int standardLabelWidth = 100; // STANDARD_LABEL_WIDTH;
- GC gc = new GC(parent);
- int indent = gc.textExtent("XXX").x; //$NON-NLS-1$
- for (int i = 0; i < labels.length; i++) {
- int width = gc.textExtent(labels[i]).x;
- if (width + indent > standardLabelWidth) {
- standardLabelWidth = width + indent;
- }
- }
- gc.dispose();
- return standardLabelWidth;
- }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSection.java
deleted file mode 100644
index e756ea7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSection.java
+++ /dev/null
@@ -1,592 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFacet;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.XSDXPathDefinition;
-import org.eclipse.xsd.impl.XSDFactoryImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class AnnotationSection extends AbstractSection
-{
- DocumentationWorkbookPage documentationPage;
- AppInfoWorkbookPage appInfoPage;
- XSDWorkbook workbook;
- XSDFactory factory;
-
- /**
- *
- */
- public AnnotationSection()
- {
- super();
- factory = new XSDFactoryImpl();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
-
- workbook = new XSDWorkbook(parent, SWT.BOTTOM | SWT.FLAT);
-
- documentationPage = new DocumentationWorkbookPage(workbook);
- appInfoPage = new AppInfoWorkbookPage(workbook);
-
- documentationPage.activate();
- appInfoPage.activate();
- workbook.setSelectedPage(documentationPage);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (doRefresh)
- {
- if (documentationPage.getDocumentationText().isFocusControl() || appInfoPage.getAppInfoText().isFocusControl())
- {
- return;
- }
-
- if (isReadOnly)
- {
- documentationPage.setEnabled(false);
- appInfoPage.setEnabled(false);
- }
- else
- {
- documentationPage.setEnabled(true);
- appInfoPage.setEnabled(true);
- }
- setListenerEnabled(false);
- Object input = getInput();
- if (input != null)
- {
- XSDAnnotation xsdAnnotation = getInputXSDAnnotation(false);
- setInitialText(xsdAnnotation);
- }
- setListenerEnabled(true);
- }
- }
-
-
- public void doHandleEvent(Event event)
- {
- Object input = getInput();
- if (input != null)
- {
- XSDAnnotation xsdAnnotation = getInputXSDAnnotation(true);
-
- if (event.widget == documentationPage.getDocumentationText())
- {
- documentationPage.doHandleEvent(xsdAnnotation);
- }
- else if (event.widget == appInfoPage.getAppInfoText())
- {
- appInfoPage.doHandleEvent(xsdAnnotation);
- }
- }
-
- }
-
- protected XSDAnnotation getInputXSDAnnotation(boolean createIfNotExist)
- {
- XSDAnnotation xsdAnnotation = null;
-
- if (input instanceof XSDAttributeDeclaration)
- {
- XSDAttributeDeclaration xsdComp = (XSDAttributeDeclaration)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDAttributeGroupDefinition)
- {
- XSDAttributeGroupDefinition xsdComp = (XSDAttributeGroupDefinition)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdComp = (XSDElementDeclaration)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDNotationDeclaration)
- {
- XSDNotationDeclaration xsdComp =(XSDNotationDeclaration)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDXPathDefinition)
- {
- XSDXPathDefinition xsdComp = (XSDXPathDefinition)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDModelGroup)
- {
- XSDModelGroup xsdComp = (XSDModelGroup)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDModelGroupDefinition)
- {
- XSDModelGroupDefinition xsdComp = (XSDModelGroupDefinition)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDIdentityConstraintDefinition)
- {
- XSDIdentityConstraintDefinition xsdComp = (XSDIdentityConstraintDefinition)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDWildcard)
- {
- XSDWildcard xsdComp = (XSDWildcard)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDSchema)
- {
- XSDSchema xsdComp = (XSDSchema)input;
- List list = xsdComp.getAnnotations();
- if (list.size() > 0)
- {
- xsdAnnotation = (XSDAnnotation)list.get(0);
- }
- else
- {
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- if (xsdComp.getContents() != null)
- {
- xsdComp.getContents().add(0, xsdAnnotation);
- }
- }
- }
- return xsdAnnotation;
- }
- else if (input instanceof XSDFacet)
- {
- XSDFacet xsdComp = (XSDFacet)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDTypeDefinition)
- {
- XSDTypeDefinition xsdComp = (XSDTypeDefinition)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDInclude)
- {
- XSDInclude xsdComp = (XSDInclude)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDImport)
- {
- XSDImport xsdComp = (XSDImport)input;
- xsdAnnotation = xsdComp.getAnnotation();
- if (createIfNotExist && xsdAnnotation == null)
- {
- xsdAnnotation = factory.createXSDAnnotation();
- xsdComp.setAnnotation(xsdAnnotation);
- }
- }
- else if (input instanceof XSDRedefine)
- {
- XSDRedefine xsdComp = (XSDRedefine)input;
- List list = xsdComp.getAnnotations();
- if (list.size() > 0)
- {
- xsdAnnotation = (XSDAnnotation)list.get(0);
- }
- else
- {
- if (createIfNotExist && xsdAnnotation == null)
- {
-// ?
- }
- }
- return xsdAnnotation;
- }
- else if (input instanceof XSDAnnotation)
- {
- xsdAnnotation = (XSDAnnotation)input;
- }
-
- if (createIfNotExist)
- {
- formatAnnotation(xsdAnnotation);
- }
-
- return xsdAnnotation;
- }
-
- private void formatAnnotation(XSDAnnotation annotation)
- {
- Element element = annotation.getElement();
- XSDDOMHelper.formatChild(element);
- }
-
-
- public boolean shouldUseExtraSpace()
- {
- return true;
- }
-
- public void dispose()
- {
- factory = null;
- }
-
- private void setInitialText(XSDAnnotation an)
- {
- if (documentationPage != null)
- {
- documentationPage.setText(""); //$NON-NLS-1$
- }
- if (appInfoPage != null)
- {
- appInfoPage.setText(""); //$NON-NLS-1$
- }
-
- if (an != null)
- {
- Element element = an.getElement();
- try
- {
- if (element.hasChildNodes())
- {
- // if the element is Text
- Element docElement = (Element)domHelper.getChildNode(element, XSDConstants.DOCUMENTATION_ELEMENT_TAG);
- if (docElement != null)
- {
- Node node = docElement.getFirstChild();
- if (node instanceof CharacterData)
- {
- documentationPage.setText( ((CharacterData)node).getData());
- }
- }
-
- Element appInfoElement = (Element)domHelper.getChildNode(element, XSDConstants.APPINFO_ELEMENT_TAG);
- if (appInfoElement != null)
- {
- Node node = appInfoElement.getFirstChild();
- if (node instanceof CharacterData)
- {
- appInfoPage.setText( ((CharacterData)node).getData());
- }
- }
-
- }
- }
- catch (Exception e)
- {
-
- }
- }
- }
-
-
- class DocumentationWorkbookPage extends XSDWorkbookPage
- {
- Text documentationText;
- Composite page1;
-
- public DocumentationWorkbookPage(XSDWorkbook workbook)
- {
- super(workbook);
- this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_DOCUMENTATION"));
- }
-
- public void setText(String value)
- {
- documentationText.setText(value);
- }
-
- public void setEnabled(boolean state)
- {
- page1.setEnabled(state);
- }
-
- public String getText()
- {
- return documentationText.getText();
- }
-
- public Text getDocumentationText()
- {
- return documentationText;
- }
-
- public Control createControl (Composite parent)
- {
- page1 = getWidgetFactory().createFlatFormComposite(parent);
- documentationText = getWidgetFactory().createText(page1, "", SWT.V_SCROLL | SWT.H_SCROLL); //$NON-NLS-1$
- documentationText.addListener(SWT.Modify, AnnotationSection.this);
-
- FormData data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(0, 0);
- data.bottom = new FormAttachment(100, 0);
- documentationText.setLayoutData(data);
-
- return page1;
- }
-
- public void doHandleEvent(XSDAnnotation xsdAnnotation)
- {
- if (xsdAnnotation != null)
- {
- Element element = xsdAnnotation.getElement();
- List documentationList = xsdAnnotation.getUserInformation();
- Element documentationElement = null;
- if (documentationList.size() > 0)
- {
- documentationElement = (Element)documentationList.get(0);
- }
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_COMMENT_CHANGE"), element); //$NON-NLS-1$
-
- if (documentationElement == null)
- {
- documentationElement = xsdAnnotation.createUserInformation(null);
- element.appendChild(documentationElement);
- XSDDOMHelper.formatChild(documentationElement);
- // Defect in model....I create it but the model object doesn't appear to be updated
- // Notice that it is fine for appinfo
- xsdAnnotation.updateElement();
- xsdAnnotation.setElement(element);
- }
-
- String newValue = documentationText.getText();
- if (documentationElement != null)
- {
- try
- {
- if (documentationElement.hasChildNodes())
- {
- // if the element is Text
- Node node = documentationElement.getFirstChild();
- if (node instanceof CharacterData)
- {
- ((CharacterData)node).setData(newValue);
- }
- }
- else
- {
- if (newValue.length() > 0)
- {
- Node childNode = documentationElement.getOwnerDocument().createTextNode(newValue);
- documentationElement.appendChild(childNode);
- }
- }
- }
- catch (Exception e)
- {
-
- }
- }
- endRecording(element);
- }
- }
- }
-
- class AppInfoWorkbookPage extends XSDWorkbookPage
- {
- Text appInfoText;
- Composite page2;
-
- public AppInfoWorkbookPage(XSDWorkbook workbook)
- {
- super(workbook);
- this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_APP_INFO"));
- }
-
- public void setText(String value)
- {
- appInfoText.setText(value);
- }
-
- public String getText()
- {
- return appInfoText.getText();
- }
-
- public Text getAppInfoText()
- {
- return appInfoText;
- }
-
- public void setEnabled(boolean state)
- {
- page2.setEnabled(state);
- }
-
- public Control createControl (Composite parent)
- {
- page2 = getWidgetFactory().createFlatFormComposite(parent);
- appInfoText = getWidgetFactory().createText(page2, "", SWT.V_SCROLL | SWT.H_SCROLL); //$NON-NLS-1$
- appInfoText.addListener(SWT.Modify, AnnotationSection.this);
-
- FormData data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(100, 0);
- //data.top = new FormAttachment(documentationText, +ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 0);
- data.bottom = new FormAttachment(100, 0);
- appInfoText.setLayoutData(data);
-
- return page2;
- }
-
- public void doHandleEvent(XSDAnnotation xsdAnnotation)
- {
- if (xsdAnnotation != null)
- {
- Element element = xsdAnnotation.getElement();
- List appInfoList = xsdAnnotation.getApplicationInformation();
-
- Element appInfoElement = null;
- if (appInfoList.size() > 0)
- {
- appInfoElement = (Element)appInfoList.get(0);
- }
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMMENT_CHANGE"), element); //$NON-NLS-1$
- if (appInfoElement == null)
- {
- appInfoElement = xsdAnnotation.createApplicationInformation(null);
- element.appendChild(appInfoElement);
- XSDDOMHelper.formatChild(appInfoElement);
- }
-
- String newValue = appInfoText.getText();
- if (appInfoElement != null)
- {
- try
- {
- if (appInfoElement.hasChildNodes())
- {
- // if the element is Text
- Node node = appInfoElement.getFirstChild();
- if (node instanceof CharacterData)
- {
- ((CharacterData)node).setData(newValue);
- }
- }
- else
- {
- if (newValue.length() > 0)
- {
- Node childNode = appInfoElement.getOwnerDocument().createTextNode(newValue);
- appInfoElement.appendChild(childNode);
- }
- }
- }
- catch (Exception e)
- {
-
- }
- endRecording(element);
- }
- }
- }
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSectionDescriptor.java
deleted file mode 100644
index 93bd523..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSectionDescriptor.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFacet;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.XSDXPathDefinition;
-
-public class AnnotationSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public AnnotationSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.annotation";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDAnnotation.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new AnnotationSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.documentation";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDAttributeDeclaration ||
- object instanceof XSDAttributeGroupDefinition ||
- object instanceof XSDElementDeclaration ||
- object instanceof XSDNotationDeclaration ||
- object instanceof XSDXPathDefinition ||
- object instanceof XSDModelGroup ||
- object instanceof XSDModelGroupDefinition ||
- object instanceof XSDIdentityConstraintDefinition ||
- object instanceof XSDWildcard ||
- object instanceof XSDSchema ||
- object instanceof XSDFacet ||
- object instanceof XSDTypeDefinition ||
- object instanceof XSDAnnotation ||
- object instanceof XSDSchemaDirective)
- {
- return true;
- }
- }
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewContentProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewContentProvider.java
deleted file mode 100644
index b5ffe41..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewContentProvider.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAbstractAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAdapterFactoryLabelProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupContent;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-
-public class AttributesViewContentProvider implements ITreeContentProvider, ITableLabelProvider, ILabelProvider, INotifyChangedListener
-{
- IEditorPart editorPart;
-
- static XSDModelAdapterFactoryImpl xsdModelAdapterFactory = XSDModelAdapterFactoryImpl.getInstance();
- static XSDAdapterFactoryLabelProvider adapterFactoryLabelProvider = new XSDAdapterFactoryLabelProvider(xsdModelAdapterFactory); // XSDTextEditor.getLabelProvider();
-
- XSDAbstractAdapter elementAdapter;
- XSDAbstractAdapter ctAdapter;
- XSDComplexTypeDefinition ct;
-
- /**
- *
- */
- public AttributesViewContentProvider()
- {
- super();
-// if (xsdModelAdapterFactory instanceof IChangeNotifier)
-// {
-// ((IChangeNotifier)xsdModelAdapterFactory).addListener(this);
-// }
-
- }
-
- Viewer attributesViewer;
- public AttributesViewContentProvider(IEditorPart editorPart, Viewer viewer)
- {
- super();
- this.editorPart = editorPart;
- this.attributesViewer = viewer;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
- */
- public Object[] getChildren(Object inputElement)
- {
- List list = new ArrayList();
- ct = null;
- if (inputElement instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElement = (XSDElementDeclaration)inputElement;
-
- if (elementAdapter != null)
- {
- elementAdapter.removeListener((INotifyChangedListener)this);
- }
- elementAdapter = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(xsdElement, xsdModelAdapterFactory);
- elementAdapter.addListener((INotifyChangedListener)this);
-
- if (xsdElement.getAnonymousTypeDefinition() instanceof XSDComplexTypeDefinition)
- {
- ct = (XSDComplexTypeDefinition)xsdElement.getAnonymousTypeDefinition();
- }
- else
- {
- XSDTypeDefinition xsdType = xsdElement.getTypeDefinition();
- if (xsdType instanceof XSDComplexTypeDefinition)
- {
- ct = (XSDComplexTypeDefinition)xsdType;
- }
- }
- }
- else if (inputElement instanceof XSDComplexTypeDefinition)
- {
- ct = (XSDComplexTypeDefinition)inputElement;
- }
-
- if (ct != null)
- {
- if (ctAdapter != null)
- {
- ctAdapter.removeListener((INotifyChangedListener)this);
- }
- ctAdapter = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(ct, xsdModelAdapterFactory);
- ctAdapter.addListener((INotifyChangedListener)this);
-
- XSDWildcard wildcard = ct.getAttributeWildcardContent();
- if (wildcard != null)
- {
- list.add(wildcard);
- }
-
- Iterator i = ct.getAttributeContents().iterator();
- while (i.hasNext())
- {
- XSDAttributeGroupContent attributeGroupContent = (XSDAttributeGroupContent)i.next();
- if (attributeGroupContent instanceof XSDAttributeGroupDefinition)
- {
- XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition)attributeGroupContent;
- XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(attributeGroupDefinition, xsdModelAdapterFactory);
- a.removeListener((INotifyChangedListener)this);
- a.addListener((INotifyChangedListener)this);
- list.add(attributeGroupDefinition);
- }
- else if (attributeGroupContent instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)attributeGroupContent;
-
- XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
-
- boolean isRef = XSDDOMHelper.isAttributeRef(ct.getElement(), attribute.getQName(), attribute.getTargetNamespace());
-
- if (isRef)
- {
- XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(attributeUse, xsdModelAdapterFactory);
- a.removeListener((INotifyChangedListener)this);
- a.addListener((INotifyChangedListener)this);
- list.add(attributeUse);
- }
- else
- {
- XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(attribute, xsdModelAdapterFactory);
- a.removeListener((INotifyChangedListener)this);
- a.addListener((INotifyChangedListener)this);
- list.add(attribute);
- }
- }
- }
- }
- return list.toArray();
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
- */
- public Object getParent(Object element)
- {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
- */
- public boolean hasChildren(Object element)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
- */
- public Image getColumnImage(Object element, int columnIndex)
- {
- if (element instanceof XSDConcreteComponent)
- {
- return adapterFactoryLabelProvider.getImage((XSDConcreteComponent)element);
- }
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
- */
- public String getColumnText(Object element, int columnIndex)
- {
- if (element instanceof XSDConcreteComponent)
- {
- XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt((XSDConcreteComponent)element, xsdModelAdapterFactory);
- return a.getText((XSDConcreteComponent)element);
- }
- return "";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
- */
- public Image getImage(Object element)
- {
- if (element instanceof XSDConcreteComponent)
- {
- return adapterFactoryLabelProvider.getImage((XSDConcreteComponent)element);
- }
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
- */
- public String getText(Object element)
- {
- if (element instanceof XSDConcreteComponent)
- {
- XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt((XSDConcreteComponent)element, xsdModelAdapterFactory);
- return a.getText((XSDConcreteComponent)element);
- }
- return "";
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
- */
- public Object[] getElements(Object inputElement)
- {
- return getChildren(inputElement);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
- */
- public void dispose()
- {
- if (elementAdapter != null)
- {
- elementAdapter.removeListener(this);
- }
- if (ctAdapter != null)
- {
- ctAdapter.removeListener((INotifyChangedListener)this);
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
- */
- Viewer viewer;
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
-// System.out.println("input changed " + oldInput + "\n" + newInput);
- this.viewer = viewer;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
- */
- public void addListener(ILabelProviderListener listener)
- {
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
- */
- public boolean isLabelProperty(Object element, String property)
- {
- return false;
- }
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
- */
- public void removeListener(ILabelProviderListener listener)
- {
- }
-
- public void notifyChanged(Notification notification)
- {
- if (attributesViewer != null && !attributesViewer.getControl().isDisposed())
- {
- if (attributesViewer instanceof StructuredViewer)
- {
- attributesViewer.refresh();
- }
- }
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSection.java
deleted file mode 100644
index 0c830ff..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSection.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.views.properties.PropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.XSDMenuListener;
-import org.eclipse.wst.xsd.ui.internal.actions.AddAttributeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateAttributeAndRequired;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.actions.DeleteAction;
-import org.eclipse.wst.xsd.ui.internal.properties.XSDPropertySourceProvider;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class AttributesViewSection extends AbstractSection implements ISelectionChangedListener
-{
- AttributeTableTreeViewer viewer;
- AttributesPropertySheetPage propertySheetPage;
-
- /**
- *
- */
- public AttributesViewSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory) {
- super.createControls(parent, factory);
-
- composite = getWidgetFactory().createFlatFormComposite(parent);
- SashForm sashForm = new SashForm(composite, SWT.HORIZONTAL);
-
- FormData data = new FormData();
- data.top = new FormAttachment(0, 0);
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(100, 0);
- data.bottom = new FormAttachment(100, 0);
- sashForm.setLayoutData(data);
-
- viewer = new AttributeTableTreeViewer(sashForm);
- propertySheetPage = new AttributesPropertySheetPage();
- propertySheetPage.createControl(sashForm);
-
- AttributesViewContentProvider provider = new AttributesViewContentProvider(getActiveEditor(), viewer);
- viewer.setContentProvider(provider);
-
- viewer.setLabelProvider(provider);
- viewer.addSelectionChangedListener(this);
-
- propertySheetPage.setPropertySourceProvider(new XSDPropertySourceProvider());
- }
-
- public void setInput(IWorkbenchPart part, ISelection selection)
- {
- super.setInput(part, selection);
- if (input instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)input;
- if (elementDeclaration.isElementDeclarationReference())
- {
- input = elementDeclaration.getResolvedElementDeclaration();
-
- isReadOnly = (!(elementDeclaration.getResolvedElementDeclaration().getRootContainer() == xsdSchema));
- }
- }
- }
-
- public void selectionChanged(SelectionChangedEvent event)
- {
- propertySheetPage.selectionChanged(part, event.getSelection());
- }
-
- public void selectionChanged(IWorkbenchPart part, ISelection selection)
- {
- }
-
- public void aboutToBeShown()
- {
- refresh();
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- setListenerEnabled(false);
- if (viewer != null)
- {
- viewer.setInput(getInput());
- viewer.refresh();
- }
- setListenerEnabled(true);
- }
-
- public void dispose()
- {
-// if (propertySheetPage != null)
-// {
-// propertySheetPage.dispose();
-// propertySheetPage = null;
-// }
-// if (viewer != null)
-// {
-// viewer = null;
-// }
- }
-
- public boolean shouldUseExtraSpace()
- {
- return true;
- }
-
-
- class AttributeTableTreeViewer extends TreeViewer // ExtendedTableTreeViewer
- {
- public AttributeTableTreeViewer(Composite c)
- {
- super(c);
-
- MenuManager menuManager = new MenuManager("#popup");//$NON-NLS-1$
- menuManager.setRemoveAllWhenShown(true);
- Menu menu = menuManager.createContextMenu(getTree());
- getTree().setMenu(menu);
-
- XSDAttributeMenuListener menuListener = new XSDAttributeMenuListener(this);
- menuManager.addMenuListener(menuListener);
-
- }
-
- public class XSDAttributeMenuListener extends XSDMenuListener
- {
- public XSDAttributeMenuListener(TreeViewer viewer)
- {
- super(viewer);
- selectionProvider = viewer;
-
- deleteAction = new DeleteAction(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE"), AttributesViewSection.this.getActiveEditor(), getXSDSchema());
- deleteAction.setSelectionProvider(selectionProvider);
- selectionProvider.addSelectionChangedListener(deleteAction);
- }
-
- protected XSDSchema getXSDSchema()
- {
- return xsdSchema;
-// return getSchema();
-// XSDConcreteComponent xsdInput = (XSDConcreteComponent)AttributesViewSection.this.getInput();
-// return xsdInput.getSchema();
- }
-
- protected Object getSelectedElement()
- {
- XSDComponent xsdInput = (XSDComponent)AttributesViewSection.this.getInput();
-
- if (xsdInput instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElement = (XSDElementDeclaration)xsdInput;
- XSDTypeDefinition xsdType = xsdElement.getType();
- if (xsdType instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)xsdType;
- return ct;
- }
- return xsdElement;
- }
- else if (xsdInput instanceof XSDComplexTypeDefinition)
- {
- return xsdInput;
- }
-
- return null;
- }
-
- public void menuAboutToShow(IMenuManager manager)
- {
- updateXSDSchema();
- if (xsdSchema == null)
- {
- return;
- }
-
- Object selectedElementObj = getSelectedElement();
-
- Element selectedElement = null;
-
- if (selectedElementObj instanceof XSDComplexTypeDefinition)
- {
- selectedElement = ((XSDComplexTypeDefinition)selectedElementObj).getElement();
- }
-
- addContextItems(manager, selectedElement, null);
-
- if (!selectionProvider.getSelection().isEmpty())
- {
- // Add context menu items for selected element
-// addContextItems(manager, selectedElement, null);
-
- manager.add(new Separator());
- if (deleteAction != null)
- {
- deleteAction.setXSDSchema(getXSDSchema());
- manager.add(deleteAction);
- }
- }
- }
-
- protected void addContextItems(IMenuManager manager, Element parent, Node relativeNode)
- {
- ArrayList attributes = null;
- if (XSDDOMHelper.inputEquals(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- { //
- boolean complexOrSimpleContentExists = false;
- boolean anyAttributeExists = false;
- Element contentNode = null;
- Node anyAttributeNode = null;
- NodeList children = parent.getChildNodes();
-
- for (int i=0; i < children.getLength(); i++)
- {
- Node child = children.item(i);
- if (child != null && child instanceof Element)
- {
- if (XSDDOMHelper.inputEquals((Element)child, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals((Element)child, XSDConstants.ALL_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals((Element)child, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals((Element)child, XSDConstants.GROUP_ELEMENT_TAG, true) ||
- XSDDOMHelper.inputEquals((Element)child, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals((Element)child, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- contentNode = (Element)child;
-
- if (XSDDOMHelper.inputEquals((Element)child, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals((Element)child, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- complexOrSimpleContentExists = true;
- }
- }
- else if (XSDDOMHelper.inputEquals((Element)child, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
- {
- anyAttributeExists = true;
- anyAttributeNode = child;
- }
- }
- }
-
- if (anyAttributeExists)
- {
- if (!complexOrSimpleContentExists)
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE,
- getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
- attributes = null;
-// ARE ATTRIBUTE GROUPS ALLOWED ?
-// addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, "_UI_ACTION_ADD_ATTRIBUTE_GROUP", attributes, parent, anyAttributeNode);
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
- }
- }
- else
- {
- if (!complexOrSimpleContentExists)
- {
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE,
- getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
- attributes = null;
- addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
- }
- else
- {
- // new model based add attribute action
- XSDComplexTypeDefinition xsdCT = (XSDComplexTypeDefinition)getXSDSchema().getCorrespondingComponent(parent);
- manager.add(new AddAttributeAction(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), xsdCT));
-
- Element derivedByElement = domHelper.getDerivedByElement(contentNode);
- if (derivedByElement != null)
- {
- attributes = null;
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), derivedByElement, derivedByElement.getLastChild());
- addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), derivedByElement, derivedByElement.getLastChild());
- attributes = null;
- addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, derivedByElement, derivedByElement.getLastChild());
- }
- }
- }
- }
- else if (parent == null) {
- XSDElementDeclaration ed = (XSDElementDeclaration)input;
-
- // Add Attribute
- attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE,
- getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
- attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
- manager.add(new CreateAttributeAndRequired(XSDConstants.ATTRIBUTE_ELEMENT_TAG,
- XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"),
- attributes,
- getXSDSchema(),
- selectionProvider,
- ed));
-
- // Add Attribute Reference
- attributes = null;
- attributes = new ArrayList();
- String ref = getFirstGlobalElementTagName(XSDConstants.ATTRIBUTE_ELEMENT_TAG);
- attributes.add(new DOMAttribute(XSDConstants.REF_ATTRIBUTE, ref));
-
- Action action = new CreateAttributeAndRequired(XSDConstants.ATTRIBUTE_ELEMENT_TAG,
- XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"),
- attributes,
- getXSDSchema(),
- selectionProvider,
- ed);
- manager.add(action);
- action.setEnabled(ref != null);
-
- // Add Attribute Group Reference
- attributes = null;
- attributes = new ArrayList();
- ref = getFirstGlobalElementTagName(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG);
- attributes.add(new DOMAttribute(XSDConstants.REF_ATTRIBUTE, ref));
-
- action = new CreateAttributeAndRequired(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG,
- XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"),
- attributes,
- getXSDSchema(),
- selectionProvider,
- ed);
-
- manager.add(action);
- action.setEnabled(ref != null);
-
- // Add Any Attribute
- attributes = null;
- if (getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false) == null)
- {
- action = new CreateAttributeAndRequired(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG,
- XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"),
- attributes,
- getXSDSchema(),
- selectionProvider,
- ed);
- manager.add(action);
- }
- }
- }
- }
- }
-
- class AttributesPropertySheetPage extends PropertySheetPage implements INotifyChangedListener
- {
- public AttributesPropertySheetPage()
- {
- super();
- }
-
- public void notifyChanged(Notification notification)
- {
- System.out.println("Notification");
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSectionDescriptor.java
deleted file mode 100644
index 2156ff9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSectionDescriptor.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-
-public class AttributesViewSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public AttributesViewSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.attributes";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDElementDeclaration.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new AttributesViewSection();
- }
-
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDElementDeclaration)
- {
-// Remove this to fix bug 3870 Element references should have the same properties as elements
-// XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)object;
-// if (elementDeclaration.isElementDeclarationReference())
-// {
-// return false;
-// }
- return true;
- }
- else if (object instanceof XSDComplexTypeDefinition)
- {
- return true;
- }
- }
- return false;
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.attributes";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getAfterSection()
- */
- public String getAfterSection()
- {
- return "";
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSection.java
deleted file mode 100644
index e5e9ca8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSection.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.SetBaseTypeAction;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ComplexTypeSection extends AbstractSection
-{
- private String derivedByChoicesComboValues[] =
- {
- "",
- XSDConstants.RESTRICTION_ELEMENT_TAG,
- XSDConstants.EXTENSION_ELEMENT_TAG
- };
-
- /**
- *
- */
- public ComplexTypeSection()
- {
- super();
- }
-
- Text baseTypeCombo;
- CCombo derivedByCombo;
- Button button;
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- String textBaseType = XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON");
- String textDerivedType = XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY");
- GC gc = new GC(parent);
- int xoffset = Math.max(100, gc.textExtent(textBaseType).x + 20); // adds 20 due to borders
- xoffset = Math.max(xoffset, gc.textExtent(textDerivedType).x + 20); // adds 20 due to borders
- gc.dispose();
-
- baseTypeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
- CLabel baseTypeLabel = getWidgetFactory().createCLabel(composite, textBaseType); //$NON-NLS-1$
-
- button = getWidgetFactory().createButton(composite, "", SWT.PUSH);
- button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
- baseTypeCombo.setEditable(false);
- baseTypeCombo.addListener(SWT.Modify, this);
-
- data = new FormData();
- data.left = new FormAttachment(0, xoffset);
- data.right = new FormAttachment(button, 0);
- baseTypeCombo.setLayoutData(data);
-
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(baseTypeCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(button, 0, SWT.CENTER);
- baseTypeLabel.setLayoutData(data);
-
- button.addSelectionListener(this);
- data = new FormData();
- data.left = new FormAttachment(100, -rightMarginSpace + 2);
- data.right = new FormAttachment(100,0);
- data.top = new FormAttachment(baseTypeCombo, 0, SWT.CENTER);
- button.setLayoutData(data);
-
- derivedByCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- data = new FormData();
- data.left = new FormAttachment(0, xoffset);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(baseTypeCombo, +ITabbedPropertyConstants.VSPACE);
- derivedByCombo.setLayoutData(data);
- derivedByCombo.setItems(derivedByChoicesComboValues);
- derivedByCombo.addSelectionListener(this);
-
- CLabel derivedByLabel = getWidgetFactory().createCLabel(composite, textDerivedType); //$NON-NLS-1$
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(derivedByCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(derivedByCombo, 0, SWT.CENTER);
- derivedByLabel.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- setListenerEnabled(false);
-
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
-
- Object input = getInput();
- baseTypeCombo.setText(""); //$NON-NLS-1$
-
- if (input instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)input;
- Element element = complexType.getElement();
- Element contentModelElement = getDomHelper().getContentModelFromParent(element);
- String baseType = getDomHelper().getBaseType(contentModelElement);
-
- derivedByCombo.setText(getDomHelper().getDerivedByName(contentModelElement));
-
- if (baseType != null)
- {
- baseTypeCombo.setText(baseType);
- }
- }
-
- setListenerEnabled(true);
- }
-
- /**
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e)
- {
- XSDComplexTypeDefinition xsdComplexType = (XSDComplexTypeDefinition)getInput();
- Element ctElement = xsdComplexType.getElement();
- if (e.widget == button)
- {
- Shell shell = Display.getCurrent().getActiveShell();
- Element element = null;
- if (xsdComplexType.getContent() != null)
- {
- element = ((XSDComplexTypeDefinition)getInput()).getContent().getElement();
- }
-
-// SimpleContentBaseTypeOptionsDialog dialog = new SimpleContentBaseTypeOptionsDialog(shell, element, BASE_TYPE_ID, ((XSDConcreteComponent)getInput()).getSchema());
-// dialog.setBlockOnOpen(true);
-// dialog.create();
-// int result = dialog.open();
-
- IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-
- Object input = getInput();
- XSDSchema schema = null;
- if (input instanceof XSDConcreteComponent) {
- schema = ((XSDConcreteComponent) input).getSchema();
- }
-
- XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
- XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
- provider.setDialog(dialog);
- dialog.setBlockOnOpen(true);
- dialog.create();
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- XMLComponentSpecification spec = dialog.getSelection();
- XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
- helper.addImportIfNecessary(element, spec);
-
- String typeString = helper.getPrefixedTypeName(spec);
- String derivedBy = getDomHelper().getDerivedByName(element);
- SetBaseTypeAction setBaseTypeAction = new SetBaseTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE")); //$NON-NLS-1$
- setBaseTypeAction.setXSDSchema(xsdSchema);
- setBaseTypeAction.setComplexTypeElement(ctElement);
- setBaseTypeAction.setType(typeString);
- setBaseTypeAction.setDerivedBy(derivedBy);
- setBaseTypeAction.performAction();
-
- }
-
-// refresh();
- }
- else if (e.widget == derivedByCombo)
- {
- Element contentModelElement = getDomHelper().getContentModelFromParent(ctElement);
- String baseType = getDomHelper().getBaseType(contentModelElement);
- beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"), ctElement); //$NON-NLS-1$
- if (contentModelElement != null)
- {
- getDomHelper().changeDerivedByType(contentModelElement, derivedByCombo.getText(), baseType);
- }
- endRecording(ctElement);
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSectionDescriptor.java
deleted file mode 100644
index 56979a7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSectionDescriptor.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-
-public class ComplexTypeSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public ComplexTypeSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDComplexTypeDefinition.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new ComplexTypeSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDComplexTypeDefinition)
- {
- return true;
- }
- }
- return false;
- }
-
- public String getAfterSection()
- {
- return "org.eclipse.wst.xsdeditor.section.name";
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSection.java
deleted file mode 100644
index 266fb24..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSection.java
+++ /dev/null
@@ -1,424 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.AddEnumsAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDEnumerationFacet;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class EnumerationsSection extends AbstractSection
-{
- private EnumerationsTableViewer enumerationsTable;
- private Button addButton;
- private Button addManyButton;
- private Button deleteButton;
-
- /**
- *
- */
- public EnumerationsSection()
- {
- super();
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
- Element element = st.getElement();
- if (e.widget == addButton || e.widget == addManyButton)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
-
- int variety = st.getVariety().getValue();
- Node varietyElement = null;
- if (variety == XSDVariety.ATOMIC)
- {
- varietyElement = helper.getChildNode(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
- }
- else if (variety == XSDVariety.UNION)
- {
- varietyElement = helper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
- }
- else if (variety == XSDVariety.LIST)
- {
- varietyElement = helper.getChildNode(element, XSDConstants.LIST_ELEMENT_TAG);
- }
-
- if (varietyElement != null)
- {
- if (e.widget == addButton)
- {
- java.util.List attributes = new ArrayList();
-
- List enumList = st.getEnumerationFacets();
- StringBuffer newName = new StringBuffer("value1"); //$NON-NLS-1$
- int suffix = 1;
- for (Iterator i = enumList.iterator(); i.hasNext(); )
- {
- XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)i.next();
- String value = enumFacet.getLexicalValue();
- if (value != null)
- {
- if (value.equals(newName.toString()))
- {
- suffix++;
- newName = new StringBuffer("value" + String.valueOf(suffix)); //$NON-NLS-1$
- }
- }
- }
- attributes.add(new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newName.toString()));
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), element); //$NON-NLS-1$
- Action action = getNewElementAction(XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), attributes, (Element)varietyElement, null);
- action.run();
- st.setElement(element);
-
- endRecording(element);
- enumerationsTable.refresh();
- int newItemIndex = enumerationsTable.getTable().getItemCount() - 1;
- enumerationsTable.editElement(enumerationsTable.getElementAt(newItemIndex), 0);
- attributes = null;
- }
- else if (e.widget == addManyButton)
- {
- AddEnumsAction action = new AddEnumsAction(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUMS")); //$NON-NLS-1$
- action.setElementTag(XSDConstants.ENUMERATION_ELEMENT_TAG);
- action.setAttributes(null);
- action.setParentNode((Element)varietyElement);
- action.setRelativeNode(null);
- action.setDescription(XSDEditorPlugin.getXSDString("_UI_ENUMERATIONS_DIALOG_TITLE")); //$NON-NLS-1$
- action.run();
- st.setElement(element);
- enumerationsTable.refresh();
- }
- }
- }
- else if (e.widget == deleteButton)
- {
- StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
- if (selection != null)
- {
- Iterator i = selection.iterator();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_ENUMERATION"), element); //$NON-NLS-1$
- while (i.hasNext())
- {
- Object obj = i.next();
- if (obj != null)
- {
- if (obj instanceof XSDEnumerationFacet)
- {
- XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)obj;
-
- // I have to update using DOM
- XSDDOMHelper.removeNodeAndWhitespace(enumFacet.getElement());
-
- }
- }
- }
- enumerationsTable.refresh();
- st.setElement(element);
- endRecording(element);
- }
- }
- else if (e.widget == enumerationsTable.getTable())
- {
- StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
- if (selection.getFirstElement() != null)
- {
- deleteButton.setEnabled(true);
- }
- else
- {
- deleteButton.setEnabled(false);
- }
- }
-
- }
-
- public void widgetDefaultSelected(SelectionEvent e)
- {
-
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
-
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- enumerationsTable = new EnumerationsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
- enumerationsTable.setInput(getInput());
- Table table = enumerationsTable.getTable();
- table.addSelectionListener(this);
-
- addButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL"), SWT.PUSH); //$NON-NLS-1$
- addManyButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL") + "...", SWT.PUSH); //$NON-NLS-1$
- deleteButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), SWT.PUSH); //$NON-NLS-1$
-
- FormData data2 = new FormData();
- data2.top = new FormAttachment(0, 0);
- data2.left = new FormAttachment(100, -100);
- data2.right = new FormAttachment(100, 0);
-// data2.width = 50;
- addButton.setLayoutData(data2);
- addButton.addSelectionListener(this);
-
- data = new FormData();
- data.left = new FormAttachment(addButton, 0, SWT.LEFT);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(addButton, 0);
- addManyButton.setLayoutData(data);
- addManyButton.addSelectionListener(this);
-
- data = new FormData();
- data.left = new FormAttachment(addButton, 0, SWT.LEFT);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(addManyButton, 0);
- deleteButton.setLayoutData(data);
- deleteButton.setEnabled(false);
- deleteButton.addSelectionListener(this);
-
- data = new FormData();
- data.top = new FormAttachment(0, 0);
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(addButton, 0);
- data.bottom = new FormAttachment(100, 0);
- data.width = tableMinimumWidth;
- table.setLayoutData(data);
- table.addListener(SWT.Resize, this);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- Object input = getInput();
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-
- Iterator validFacets = st.getValidFacets().iterator();
-
- boolean isApplicable = false;
- while (validFacets.hasNext())
- {
- String aValidFacet = (String)validFacets.next();
- if (aValidFacet.equals(XSDConstants.ENUMERATION_ELEMENT_TAG))
- {
- isApplicable = true;
- }
- }
-
- if (isApplicable)
- {
- addButton.setEnabled(true);
- addManyButton.setEnabled(true);
- }
- else
- {
- addButton.setEnabled(false);
- addManyButton.setEnabled(false);
- }
- enumerationsTable.setInput(input);
- }
-
- public void handleEvent(Event event)
- {
- Table table = enumerationsTable.getTable();
- if (event.type == SWT.Resize && event.widget == table)
- {
- TableColumn tableColumn = table.getColumn(0);
- tableColumn.setWidth(table.getSize().x);
- }
- }
-
- public void dispose()
- {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return true;
- }
-
-
- class EnumerationsTableViewer extends NavigableTableViewer implements ICellModifier
- {
- protected String[] columnProperties = {XSDConstants.ENUMERATION_ELEMENT_TAG};
-
- protected CellEditor[] cellEditors;
-
- Table table;
-
- public EnumerationsTableViewer(Table table)
- {
- super(table);
- table = getTable();
-
- table.setLinesVisible(true);
-
- setContentProvider(new EnumerationsTableContentProvider());
- setLabelProvider(new EnumerationsTableLabelProvider());
- setColumnProperties(columnProperties);
-
- setCellModifier(this);
-
- TableColumn column = new TableColumn(table, SWT.NONE, 0);
- column.setText(columnProperties[0]);
- column.setAlignment(SWT.LEFT);
- column.setResizable(true);
-
- cellEditors = new CellEditor[1];
-
- TableLayout layout = new TableLayout();
- ColumnWeightData data = new ColumnWeightData(100);
-
- layout.addColumnData(data);
- cellEditors[0] = new TextCellEditor(table);
-
- getTable().setLayout(layout);
- setCellEditors(cellEditors);
- }
-
- public boolean canModify(Object element, String property)
- {
- return true;
- }
-
- public void modify(Object element, String property, Object value)
- {
- if (element instanceof TableItem && (value != null))
- {
- TableItem item = (TableItem)element;
-
- Element simpleTypeElement = ((XSDSimpleTypeDefinition)getInput()).getElement();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), simpleTypeElement); //$NON-NLS-1$
-
- XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)item.getData();
- enumFacet.setLexicalValue((String)value);
- item.setData(enumFacet);
- item.setText((String)value);
- endRecording(simpleTypeElement);
- }
- }
-
- public Object getValue(Object element, String property)
- {
- if (element instanceof XSDEnumerationFacet)
- {
- XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)element;
- String value = enumFacet.getLexicalValue();
- if (value == null) value = ""; //$NON-NLS-1$
- return value;
- }
- return ""; //$NON-NLS-1$
- }
-
- }
-
- class EnumerationsTableContentProvider implements IStructuredContentProvider
- {
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
- }
-
- public java.lang.Object[] getElements(java.lang.Object inputElement)
- {
- java.util.List list = new ArrayList();
- if (inputElement instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)inputElement;
- return st.getEnumerationFacets().toArray();
- }
- return list.toArray();
- }
-
- public void dispose()
- {
- }
- }
-
- class EnumerationsTableLabelProvider extends LabelProvider implements ITableLabelProvider
- {
- public EnumerationsTableLabelProvider()
- {
-
- }
-
- public Image getColumnImage(Object element, int columnIndex)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
- }
-
- public String getColumnText(Object element, int columnIndex)
- {
- if (element instanceof XSDEnumerationFacet)
- {
- XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)element;
- String value = enumFacet.getLexicalValue();
- if (value == null) value = "";
- return value;
- }
- return "";
- }
-
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSectionDescriptor.java
deleted file mode 100644
index 0af99b0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSectionDescriptor.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-
-public class EnumerationsSectionDescriptor extends AbstractSectionDescriptor
-{
-
- /**
- *
- */
- public EnumerationsSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.enumerations";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDSimpleTypeDefinition.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new EnumerationsSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.enumerations";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDSimpleTypeDefinition)
- {
- return true;
- // return false; // turn off this tab
- }
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetViewer.java
deleted file mode 100644
index 1c3faab..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetViewer.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackAdapter;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.properties.XSDComboBoxPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConstrainingFacet;
-import org.eclipse.xsd.XSDMaxExclusiveFacet;
-import org.eclipse.xsd.XSDMaxFacet;
-import org.eclipse.xsd.XSDMaxInclusiveFacet;
-import org.eclipse.xsd.XSDMinExclusiveFacet;
-import org.eclipse.xsd.XSDMinFacet;
-import org.eclipse.xsd.XSDMinInclusiveFacet;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.impl.XSDFactoryImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class FacetViewer extends NavigableTableViewer implements ICellModifier
-{
- public static final String FACET_NAME = XSDEditorPlugin.getXSDString("_UI_FACET_NAME"); // "Name";
- public static final String FACET_VALUE = XSDEditorPlugin.getXSDString("_UI_FACET_VALUE"); // "Value";
- public static final String FACET_OTHER = XSDEditorPlugin.getXSDString("_UI_FACET_FIXED"); // "Fixed";
-
- protected FacetsTableLabelProvider facetsTableLabelProvider = new FacetsTableLabelProvider();
- protected FacetsTableContentProvider facetsTableContentProvider = new FacetsTableContentProvider();
- protected String[] columnProperties = {FACET_NAME, FACET_VALUE, FACET_OTHER};
- protected CellEditor[] cellEditors; // these cellEditors are used when non-whitespace facet is selected
- protected CellEditor[] altCellEditors; // these cellEditors are used when whitespace facet is selected
-
- protected String [] whiteSpaceValues = new String[] {"", "preserve", "replace", "collapse" };
- protected String [] trueFalseValues = new String [] {"", "false", "true" };
- protected FacetsSection facetsSection;
- /**
- * @param parent
- */
- public FacetViewer(Composite parent, FacetsSection facetsSection)
- {
- super(new Table(parent, SWT.FULL_SELECTION | SWT.SINGLE));
- this.facetsSection = facetsSection;
-
- getTable().setLinesVisible(true);
- getTable().setHeaderVisible(true);
-
- addSelectionChangedListener(new SelectionChangedListener());
- getTable().addMouseTrackListener(new MyMouseTrackListener());
-
- setContentProvider(facetsTableContentProvider);
- setLabelProvider(facetsTableLabelProvider);
- setColumnProperties(columnProperties);
-
- setCellModifier(this);
-
- for (int i = 0; i < 3; i++)
- {
- TableColumn column = new TableColumn(getTable(), SWT.NONE, i);
- column.setText(columnProperties[i]);
- column.setAlignment(SWT.LEFT);
- column.setResizable(true);
- }
-
- cellEditors = new CellEditor[3];
- altCellEditors = new CellEditor[3];
-
- TableLayout layout = new TableLayout();
- ColumnWeightData data = new ColumnWeightData(60, 120, true);
- layout.addColumnData(data);
- cellEditors[0] = null;
-
- ColumnWeightData data2 = new ColumnWeightData(120, 100, true);
- layout.addColumnData(data2);
-
- cellEditors[1] = new TextCellEditor(getTable());
- XSDComboBoxPropertyDescriptor pd = new XSDComboBoxPropertyDescriptor("combo", "whitespace", whiteSpaceValues);
- altCellEditors[1] = pd.createPropertyEditor(getTable());
-
- ColumnWeightData data3 = new ColumnWeightData(60, 80, true);
- layout.addColumnData(data3);
-
- XSDComboBoxPropertyDescriptor pd2 = new XSDComboBoxPropertyDescriptor("combo", "other", trueFalseValues);
- cellEditors[2] = pd2.createPropertyEditor(getTable());
- altCellEditors[2] = pd2.createPropertyEditor(getTable());
-
- getTable().setLayout(layout);
- setCellEditors(cellEditors);
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
- */
- public boolean canModify(Object element, String property)
- {
- return property.equals(FACET_VALUE) || property.equals(FACET_OTHER);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
- */
- public Object getValue(Object element, String property)
- {
- int column = 0;
- if (property.equals(columnProperties[0]))
- {
- column = 0;
- }
- else if (property.equals(columnProperties[1]))
- {
- column = 1;
- }
- else if (property.equals(columnProperties[2]))
- {
- column = 2;
- }
-
- return facetsTableLabelProvider.getColumnText(element, column);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
- */
- public void modify(Object element, String property, Object value)
- {
- XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition)getInput();
- TableItem item = (TableItem)element;
- if (item != null)
- {
- Object o = item.getData();
- if (o != null)
- {
- if (o instanceof String)
- {
- String facet = (String)o;
-
- Element simpleTypeElement = xsdSimpleType.getElement();
- XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
- Element derivedByElement = xsdDOMHelper.getDerivedByElement(simpleTypeElement);
-
- facetsSection.beginRecording(XSDEditorPlugin.getXSDString("_UI_FACET_CHANGE"), simpleTypeElement);
-
- String prefix = simpleTypeElement.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
-
- Element childNodeElement = null;
- DOMAttribute valueAttr = null;
-
- XSDConstrainingFacet targetFacet = getXSDConstrainingFacet(facet);
-
- String newValue = "";
- if (value != null && value instanceof String)
- {
- newValue = (String)value;
- }
-
- if (property.equals(columnProperties[1]))
- {
- if (targetFacet == null && newValue.length() > 0)
- {
- targetFacet = createFacet(facet);
- childNodeElement = (derivedByElement.getOwnerDocument()).createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + facet);
- valueAttr = new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newValue);
- childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());
- // add and format child
- derivedByElement.appendChild(childNodeElement);
- targetFacet.setElement(childNodeElement);
- XSDDOMHelper.formatChild(childNodeElement);
-
-// XSDSchemaHelper.updateElement(xsdSimpleType);
- }
- if (targetFacet == null)
- {
- facetsSection.endRecording(simpleTypeElement);
- return;
- }
-
- if (newValue.length() > 0)
- {
- targetFacet.setLexicalValue(newValue);
-
- if (targetFacet instanceof XSDMaxFacet || targetFacet instanceof XSDMinFacet)
- {
- if (targetFacet instanceof XSDMaxFacet)
- {
- if (targetFacet instanceof XSDMaxExclusiveFacet)
- {
- XSDMaxInclusiveFacet xsdMaxInclusiveFacet = xsdSimpleType.getMaxInclusiveFacet();
- if (xsdMaxInclusiveFacet != null)
- {
- Element xsdMaxInclusiveFacetElement = xsdMaxInclusiveFacet.getElement();
- XSDDOMHelper.removeNodeAndWhitespace(xsdMaxInclusiveFacetElement);
- }
- }
- else if (targetFacet instanceof XSDMaxInclusiveFacet)
- {
- XSDMaxExclusiveFacet xsdMaxExclusiveFacet = xsdSimpleType.getMaxExclusiveFacet();
- if (xsdMaxExclusiveFacet != null)
- {
- Element xsdMaxExclusiveFacetElement = xsdMaxExclusiveFacet.getElement();
- XSDDOMHelper.removeNodeAndWhitespace(xsdMaxExclusiveFacetElement);
- }
- }
- }
- else if (targetFacet instanceof XSDMinFacet)
- {
- if (targetFacet instanceof XSDMinExclusiveFacet)
- {
- XSDMinInclusiveFacet xsdMinInclusiveFacet = xsdSimpleType.getMinInclusiveFacet();
- if (xsdMinInclusiveFacet != null)
- {
- Element xsdMinInclusiveFacetElement = xsdMinInclusiveFacet.getElement();
- XSDDOMHelper.removeNodeAndWhitespace(xsdMinInclusiveFacetElement);
- }
- }
- else if (targetFacet instanceof XSDMinInclusiveFacet)
- {
- XSDMinExclusiveFacet xsdMinExclusiveFacet = xsdSimpleType.getMinExclusiveFacet();
- if (xsdMinExclusiveFacet != null)
- {
- Element xsdMinExclusiveFacetElement = xsdMinExclusiveFacet.getElement();
- XSDDOMHelper.removeNodeAndWhitespace(xsdMinExclusiveFacetElement);
- }
- }
- }
- }
- }
- else // newValue.length == 0
- {
- Element targetFacetElement = targetFacet.getElement();
- XSDDOMHelper.removeNodeAndWhitespace(targetFacetElement);
- }
- }
- else if (property.equals(columnProperties[2]))
- {
- if (targetFacet != null)
- {
- if (newValue.length() > 0)
- {
- targetFacet.getElement().setAttribute(XSDConstants.FIXED_ATTRIBUTE, newValue);
- }
- else
- {
- targetFacet.getElement().removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
- }
- }
- }
- xsdSimpleType.setElement(simpleTypeElement);
- //xsdSimpleType.updateElement();
- facetsSection.endRecording(simpleTypeElement);
- refresh();
- }
- }
- }
- }
-
-
- private XSDConstrainingFacet getXSDConstrainingFacet(String facetString)
- {
- XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition)getInput();
- List list = xsdSimpleType.getFacetContents();
- if (list == null)
- {
- return null;
- }
- Iterator iter = list.iterator();
- XSDConstrainingFacet targetFacet = null;
-
- while (iter.hasNext())
- {
- XSDConstrainingFacet xsdConstrainingFacet = (XSDConstrainingFacet)iter.next();
- if (xsdConstrainingFacet.getFacetName().equals(facetString))
- {
- targetFacet = xsdConstrainingFacet;
- break;
- }
- }
- return targetFacet;
- }
-
- private XSDConstrainingFacet createFacet(String facet)
- {
- XSDFactoryImpl factory = new XSDFactoryImpl();
- XSDConstrainingFacet xsdFacet = null;
- if (facet.equals("length")) { xsdFacet = factory.createXSDLengthFacet(); }
- else if (facet.equals("minLength")) { xsdFacet = factory.createXSDMinLengthFacet(); }
- else if (facet.equals("maxLength")) { xsdFacet = factory.createXSDMaxLengthFacet(); }
-
- else if (facet.equals("minInclusive")) { xsdFacet = factory.createXSDMinInclusiveFacet(); }
- else if (facet.equals("minExclusive")) { xsdFacet = factory.createXSDMinExclusiveFacet(); }
-
- else if (facet.equals("maxInclusive")) { xsdFacet = factory.createXSDMaxInclusiveFacet(); }
- else if (facet.equals("maxExclusive")) { xsdFacet = factory.createXSDMaxExclusiveFacet(); }
-
- else if (facet.equals("totalDigits")) { xsdFacet = factory.createXSDTotalDigitsFacet(); }
- else if (facet.equals("fractionDigits")) { xsdFacet = factory.createXSDFractionDigitsFacet(); }
-
- else if (facet.equals("whiteSpace")) { xsdFacet = factory.createXSDWhiteSpaceFacet(); }
-
- return xsdFacet;
- }
-
- /**
- * Get the tooltip for the facet
- */
- public String getToolTip(String facet)
- {
- String key = "";
- if (facet.equals("length")) { key = "_UI_TOOLTIP_LENGTH"; }
- else if (facet.equals("minLength")) { key = "_UI_TOOLTIP_MIN_LEN"; }
- else if (facet.equals("maxLength")) { key = "_UI_TOOLTIP_MAX_LEN"; }
-
- else if (facet.equals("minInclusive")) { key = "_UI_TOOLTIP_MIN_INCLUSIVE"; }
- else if (facet.equals("minExclusive")) { key = "_UI_TOOLTIP_MIN_EXCLUSIVE"; }
-
- else if (facet.equals("maxInclusive")) { key = "_UI_TOOLTIP_MAX_INCLUSIVE"; }
- else if (facet.equals("maxExclusive")) { key = "_UI_TOOLTIP_MAX_EXCLUSIVE"; }
-
- else if (facet.equals("totalDigits")) { key = "_UI_TOOLTIP_TOTAL_DIGITS"; }
- else if (facet.equals("fractionDigits")) { key = "_UI_TOOLTIP_FRACTION_DIGITS"; }
-
- else if (facet.equals("whiteSpace")) { key = "_UI_TOOLTIP_WHITE_SPACE"; }
-
- return (key != null) ? XSDEditorPlugin.getXSDString(key) : "";
- }
-
- /**
- * This listener detects which row is selected and add a tool tip for that row
- */
- public class MyMouseTrackListener extends MouseTrackAdapter
- {
- public void mouseHover(MouseEvent e)
- {
- TableItem item = getTable().getItem(new Point(e.x, e.y));
- if (item != null)
- {
- Object o = item.getData();
- if (o != null)
- {
- String facetName = (String)o;
- getTable().setToolTipText(getToolTip(facetName));
- }
- }
- }
- }
-
- /**
- * Based on the selection, detects if it is a white space or not, and add the
- * corresponding cell editors
- */
- public class SelectionChangedListener implements ISelectionChangedListener
- {
- public void selectionChanged(SelectionChangedEvent event)
- {
- Object o = WindowUtility.getSelection(event.getSelection());
- if (o != null)
- {
- String facet = (String)o;
- if (facet.equals("whiteSpace"))
- {
- setCellEditors(altCellEditors);
- }
- else
- {
- setCellEditors(cellEditors);
- }
- }
- }
- }
-
-
- class FacetsTableContentProvider implements IStructuredContentProvider
- {
- protected String facet;
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
- }
-
- public java.lang.Object[] getElements(java.lang.Object inputElement)
- {
- Vector v = new Vector();
- XSDSimpleTypeDefinition inputXSDSimpleType = (XSDSimpleTypeDefinition)inputElement;
- XSDSimpleTypeDefinition base = inputXSDSimpleType.getBaseTypeDefinition();
-
- if (base != null)
- {
- Iterator validFacets = base.getValidFacets().iterator();
- while (validFacets.hasNext())
- {
- String aValidFacet = (String)validFacets.next();
- if (!(aValidFacet.equals("pattern") || aValidFacet.equals("enumeration")))
- {
- v.add(aValidFacet);
- }
- }
- }
- return v.toArray();
- }
-
- public void dispose()
- {
- }
- }
-
- class FacetsTableLabelProvider extends LabelProvider implements ITableLabelProvider
- {
- public Image getColumnImage(Object element, int columnIndex)
- {
- return null;
- }
-
- public String getColumnText(Object element, int columnIndex)
- {
- if (element instanceof String)
- {
- String value = null;
- XSDConstrainingFacet targetFacet = getXSDConstrainingFacet((String)element);
- switch (columnIndex)
- {
- case 0:
- {
- value = (String)element;
- break;
- }
- case 1:
- {
- if (targetFacet == null)
- {
- value = "";
- }
- else
- {
- value = targetFacet.getLexicalValue();
- }
-
- break;
- }
- case 2:
- {
- if (targetFacet == null)
- {
- value = "";
- }
- else
- {
- Element elem = targetFacet.getElement();
- value = elem.getAttribute(XSDConstants.FIXED_ATTRIBUTE);
- if (value == null) value = "";
- }
- }
- }
- return value;
- }
- return "";
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSection.java
deleted file mode 100644
index 55d9587..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSection.java
+++ /dev/null
@@ -1,802 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
-import org.eclipse.xsd.XSDPatternFacet;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class FacetsSection extends AbstractSection
-{
- IWorkbenchPart part;
- ISelection selection;
- FacetViewer facetViewer;
-
- XSDWorkbook workbook;
- FacetsWorkbookPage facetsWorkbookPage;
-// If you want to add the enumerations tab to this facets tab
-// EnumsWorkbookPage enumsWorkbookPage;
- PatternsWorkbookPage patternsWorkbookPage;
-
- /**
- *
- */
- public FacetsSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
-
- workbook = new XSDWorkbook(parent, SWT.BOTTOM | SWT.FLAT);
-
- facetsWorkbookPage = new FacetsWorkbookPage(workbook, this);
-// enumsWorkbookPage = new EnumsWorkbookPage(workbook);
- patternsWorkbookPage = new PatternsWorkbookPage(workbook);
- facetsWorkbookPage.activate();
-// enumsWorkbookPage.activate();
- patternsWorkbookPage.activate();
- workbook.setSelectedPage(facetsWorkbookPage);
- }
-
- public void selectionChanged(IWorkbenchPart part, ISelection selection)
- {
- this.part = part;
- this.selection = selection;
- }
-
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- Object input = getInput();
-
- if (isReadOnly)
- {
- facetViewer.getControl().getParent().setEnabled(false);
- }
- else
- {
- facetViewer.getControl().getParent().setEnabled(true);
- }
-
- if (facetViewer != null)
- {
- facetViewer.setInput(input);
- }
-
-// if (enumsWorkbookPage != null)
-// {
-// enumsWorkbookPage.setInput(input);
-// }
-
- if (patternsWorkbookPage != null)
- {
- patternsWorkbookPage.setInput(input);
- }
- }
-
- public void dispose()
- {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return true;
- }
-
-
- /* General Facets Page */
-
- class FacetsWorkbookPage extends XSDWorkbookPage
- {
- FacetsSection facetsSection;
- Composite page1;
-
- public FacetsWorkbookPage(XSDWorkbook workbook, FacetsSection facetsSection)
- {
- super(workbook);
- this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_FACETS")); //$NON-NLS-1$
- this.facetsSection = facetsSection;
- }
-
- public Control createControl (Composite parent)
- {
- page1 = getWidgetFactory().createFlatFormComposite(parent);
-
- FormData data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(0, 0);
- data.bottom = new FormAttachment(100, 0);
-
- facetViewer = new FacetViewer(page1, facetsSection);
- facetViewer.setInput(getInput());
- facetViewer.getControl().setLayoutData(data);
-
- return page1;
- }
- }
-
- /* Enumerations Page */
-
-// class EnumsWorkbookPage extends XSDWorkbookPage implements SelectionListener
-// {
-// EnumerationsTableViewer enumerationsTable;
-// Button addButton;
-// Button deleteButton;
-//
-// public EnumsWorkbookPage(XSDWorkbook workbook)
-// {
-// super(workbook);
-// this.getTabItem().setText("Enumerations");
-// }
-//
-// public Control createControl (Composite parent)
-// {
-// Composite composite = getWidgetFactory().createFlatFormComposite(parent);
-// FormData data;
-//
-// addButton = getWidgetFactory().createButton(composite, "Add", SWT.PUSH);
-// deleteButton = getWidgetFactory().createButton(composite, "Delete", SWT.PUSH);
-// enumerationsTable = new EnumerationsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
-//
-// enumerationsTable.setInput(getInput());
-// Table table = enumerationsTable.getTable();
-// table.addSelectionListener(this);
-//
-// data = new FormData();
-// data.left = new FormAttachment(deleteButton, 0, SWT.LEFT);
-// data.right = new FormAttachment(100, 0);
-// data.top = new FormAttachment(0, 0);
-// data.bottom = new FormAttachment(deleteButton, 0); //-ITabbedPropertyConstants.VSPACE);
-// addButton.setLayoutData(data);
-// addButton.addSelectionListener(this);
-//
-// data = new FormData();
-// data.left = new FormAttachment(table, +ITabbedPropertyConstants.HSPACE);
-// data.right = new FormAttachment(100, 0);
-// data.top = new FormAttachment(addButton, 0);
-//// data.bottom = new FormAttachment(deleteButton, +ITabbedPropertyConstants.VSPACE);
-// deleteButton.setLayoutData(data);
-// deleteButton.setEnabled(false);
-// deleteButton.addSelectionListener(this);
-//
-// data = new FormData();
-// data.left = new FormAttachment(0, 0);
-// data.right = new FormAttachment(85, 0);
-// data.top = new FormAttachment(0, 0);
-// data.bottom = new FormAttachment(100, 0);
-// table.setLayoutData(data);
-//
-// return composite;
-// }
-//
-// public void setInput(Object input)
-// {
-// enumerationsTable.setInput(input);
-// }
-//
-// public void widgetSelected(SelectionEvent e)
-// {
-// XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-// Element element = st.getElement();
-// if (e.widget == addButton)
-// {
-// XSDDOMHelper helper = new XSDDOMHelper();
-//
-// int variety = st.getVariety().getValue();
-// Node varietyElement = null;
-// if (variety == XSDVariety.ATOMIC)
-// {
-// varietyElement = helper.getChildNode(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
-// }
-// else if (variety == XSDVariety.UNION)
-// {
-// varietyElement = helper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
-// }
-// else if (variety == XSDVariety.LIST)
-// {
-// varietyElement = helper.getChildNode(element, XSDConstants.LIST_ELEMENT_TAG);
-// }
-//
-// if (varietyElement != null)
-// {
-// java.util.List attributes = new ArrayList();
-// attributes.add(new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, ""));
-// beginRecording("Add Enumeration", element);
-// Action action = getNewElementAction(XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), attributes, (Element)varietyElement, null);
-// action.run();
-// st.setElement(element);
-//
-// endRecording(element);
-// enumerationsTable.refresh();
-// attributes = null;
-// }
-// }
-// else if (e.widget == deleteButton)
-// {
-// StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
-// if (selection != null)
-// {
-// Iterator i = selection.iterator();
-// beginRecording("Delete Enumeration", element);
-// while (i.hasNext())
-// {
-// Object obj = i.next();
-// if (obj != null)
-// {
-// if (obj instanceof XSDEnumerationFacet)
-// {
-// XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)obj;
-//
-// // I have to update using DOM
-// XSDDOMHelper.removeNodeAndWhitespace(enumFacet.getElement());
-//
-// }
-// }
-// }
-// enumerationsTable.refresh();
-// st.setElement(element);
-// endRecording(element);
-// }
-// }
-// else if (e.widget == enumerationsTable.getTable())
-// {
-// StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
-// if (selection.getFirstElement() != null)
-// {
-// deleteButton.setEnabled(true);
-// }
-// else
-// {
-// deleteButton.setEnabled(false);
-// }
-// }
-//
-// }
-//
-// public void widgetDefaultSelected(SelectionEvent e)
-// {
-//
-// }
-// }
-//
-// class EnumerationsTableViewer extends NavigableTableViewer implements ICellModifier
-// {
-// protected String[] columnProperties = {"Enumeration"};
-//
-// protected CellEditor[] cellEditors;
-//
-// Table table;
-//
-// public EnumerationsTableViewer(Table table)
-// {
-// super(table);
-// table = getTable();
-//
-// table.setLinesVisible(true);
-//
-// setContentProvider(new EnumerationsTableContentProvider());
-// setLabelProvider(new EnumerationsTableLabelProvider());
-// setColumnProperties(columnProperties);
-//
-// setCellModifier(this);
-//
-// TableColumn column = new TableColumn(table, SWT.NONE, 0);
-// column.setText(columnProperties[0]);
-// column.setAlignment(SWT.LEFT);
-//
-// cellEditors = new CellEditor[1];
-//
-// TableLayout layout = new TableLayout();
-// ColumnWeightData data = new ColumnWeightData(100);
-// layout.addColumnData(data);
-// cellEditors[0] = new TextCellEditor(table);
-//
-// getTable().setLayout(layout);
-// setCellEditors(cellEditors);
-// }
-//
-// public boolean canModify(Object element, String property)
-// {
-// return true;
-// }
-//
-// public void modify(Object element, String property, Object value)
-// {
-// if (element instanceof TableItem && (value != null))
-// {
-// TableItem item = (TableItem)element;
-//
-// Element simpleTypeElement = ((XSDSimpleTypeDefinition)getInput()).getElement();
-// FacetsSection.this.beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), simpleTypeElement);
-//
-// XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)item.getData();
-// enumFacet.setLexicalValue((String)value);
-// item.setData(enumFacet);
-// item.setText((String)value);
-// FacetsSection.this.endRecording(simpleTypeElement);
-// }
-// }
-//
-// public Object getValue(Object element, String property)
-// {
-// if (element instanceof XSDEnumerationFacet)
-// {
-// XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)element;
-// String value = enumFacet.getLexicalValue();
-// if (value == null) value = "";
-// return value;
-// }
-// return "";
-// }
-//
-// }
-//
-// class EnumerationsTableContentProvider implements IStructuredContentProvider
-// {
-// public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-// {
-// }
-//
-// public java.lang.Object[] getElements(java.lang.Object inputElement)
-// {
-// java.util.List list = new ArrayList();
-// if (inputElement instanceof XSDSimpleTypeDefinition)
-// {
-// XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)inputElement;
-// return st.getEnumerationFacets().toArray();
-// }
-// return list.toArray();
-// }
-//
-// public void dispose()
-// {
-// }
-// }
-//
-// class EnumerationsTableLabelProvider extends LabelProvider implements ITableLabelProvider
-// {
-// public EnumerationsTableLabelProvider()
-// {
-//
-// }
-//
-// public Image getColumnImage(Object element, int columnIndex)
-// {
-// return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
-// }
-//
-// public String getColumnText(Object element, int columnIndex)
-// {
-// if (element instanceof XSDEnumerationFacet)
-// {
-// XSDEnumerationFacet enum = (XSDEnumerationFacet)element;
-// String value = enum.getLexicalValue();
-// if (value == null) value = "";
-// return value;
-// }
-// return "";
-// }
-//
-// }
-
- /* Patterns Page */
-
- class PatternsWorkbookPage extends XSDWorkbookPage implements SelectionListener, Listener
- {
- PatternsTableViewer patternsTable;
- Button addButton;
- Button deleteButton;
- Button editButton;
- Composite composite;
-
- public PatternsWorkbookPage(XSDWorkbook workbook)
- {
- super(workbook);
- this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_PATTERNS")); //$NON-NLS-1$
- }
-
- public Control createControl (Composite parent)
- {
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- patternsTable = new PatternsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
- patternsTable.setInput(getInput());
- Table table = patternsTable.getTable();
- table.addSelectionListener(this);
-
- addButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_ADD"), SWT.PUSH); //$NON-NLS-1$
- editButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_EDIT"), SWT.PUSH); //$NON-NLS-1$
- deleteButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), SWT.PUSH); //$NON-NLS-1$
-
- data = new FormData();
- data.left = new FormAttachment(100, -100);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(0, 0);
- addButton.setLayoutData(data);
- addButton.addSelectionListener(this);
-
- data = new FormData();
- data.left = new FormAttachment(addButton, 0, SWT.LEFT);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(addButton, 0);
- editButton.setLayoutData(data);
- editButton.setEnabled(false);
- editButton.addSelectionListener(this);
-
- data = new FormData();
- data.left = new FormAttachment(addButton, 0, SWT.LEFT);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(editButton, 0);
- deleteButton.setLayoutData(data);
- deleteButton.setEnabled(false);
- deleteButton.addSelectionListener(this);
-
- data = new FormData();
- data.top = new FormAttachment(0, 0);
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(addButton, 0);
- data.bottom = new FormAttachment(100, 0);
- data.width = tableMinimumWidth;
- table.setLayoutData(data);
- table.addListener(SWT.Resize, this);
-
- return composite;
- }
-
- public void handleEvent(Event event)
- {
- Table table = patternsTable.getTable();
- if (event.type == SWT.Resize && event.widget == table)
- {
- TableColumn tableColumn = table.getColumn(0);
- tableColumn.setWidth(table.getSize().x);
- }
- }
-
-
- public void setInput(Object input)
- {
- patternsTable.setInput(input);
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
- Element element = st.getElement();
-
- if (e.widget == addButton)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
-
- int variety = st.getVariety().getValue();
- Node varietyElement = null;
- if (variety == XSDVariety.ATOMIC)
- {
- varietyElement = helper.getChildNode(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
- }
- else if (variety == XSDVariety.UNION)
- {
- varietyElement = helper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
- }
- else if (variety == XSDVariety.LIST)
- {
- varietyElement = helper.getChildNode(element, XSDConstants.LIST_ELEMENT_TAG);
- }
-
- if (varietyElement != null)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
- String initialValue = ""; //$NON-NLS-1$
- RegexWizard wizard = new RegexWizard(initialValue);
-
- WizardDialog wizardDialog = new WizardDialog(shell, wizard);
- wizardDialog.setBlockOnOpen(true);
- wizardDialog.create();
-
- int result = wizardDialog.open();
-
- if (result == Window.OK)
- {
- String newPattern = wizard.getPattern();
-
- java.util.List attributes = new ArrayList();
- attributes.add(new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern));
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_PATTERN"), element); //$NON-NLS-1$
- Action action = getNewElementAction(XSDConstants.PATTERN_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_PATTERN"), attributes, (Element)varietyElement, null); //$NON-NLS-1$
- action.run();
- st.setElement(element);
- endRecording(element);
- patternsTable.refresh();
- attributes = null;
- }
- }
- }
- else if (e.widget == deleteButton)
- {
- StructuredSelection selection = (StructuredSelection)patternsTable.getSelection();
- if (selection != null)
- {
- Iterator i = selection.iterator();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), element); // Reword ?
- while (i.hasNext())
- {
- Object obj = i.next();
- if (obj != null)
- {
- if (obj instanceof XSDPatternFacet)
- {
- XSDPatternFacet patternFacet = (XSDPatternFacet)obj;
-
- // I have to update using DOM
- XSDDOMHelper.removeNodeAndWhitespace(patternFacet.getElement());
- }
- }
- }
- st.setElement(element);
- endRecording(element);
- patternsTable.refresh();
- if (patternsTable.getTable().getItemCount() == 0)
- {
- editButton.setEnabled(false);
- deleteButton.setEnabled(false);
- }
- }
- }
- else if (e.widget == editButton)
- {
- StructuredSelection selection = (StructuredSelection)patternsTable.getSelection();
- if (selection != null)
- {
- Object obj = selection.getFirstElement();
- if (obj instanceof XSDPatternFacet)
- {
- XSDPatternFacet pattern = (XSDPatternFacet)obj;
- String initialValue = pattern.getLexicalValue();
- if (initialValue == null)
- {
- initialValue = ""; //$NON-NLS-1$
- }
-
- Shell shell = Display.getCurrent().getActiveShell();
-
- RegexWizard wizard = new RegexWizard(initialValue);
-
- WizardDialog wizardDialog = new WizardDialog(shell, wizard);
- wizardDialog.setBlockOnOpen(true);
- wizardDialog.create();
-
- int result = wizardDialog.open();
-
- if (result == Window.OK)
- {
- String newPattern = wizard.getPattern();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), element); //$NON-NLS-1$
- element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern);
- pattern.setLexicalValue(newPattern);
- endRecording(element);
- patternsTable.refresh();
- }
- }
- }
- }
- else if (e.widget == patternsTable.getTable())
- {
- StructuredSelection selection = (StructuredSelection)patternsTable.getSelection();
- if (selection.getFirstElement() != null)
- {
- editButton.setEnabled(true);
- deleteButton.setEnabled(true);
- }
- else
- {
- editButton.setEnabled(false);
- deleteButton.setEnabled(false);
- }
- }
-
- }
-
- public void widgetDefaultSelected(SelectionEvent e)
- {
-
- }
- }
-
-
- class PatternsTableViewer extends NavigableTableViewer implements ICellModifier
- {
- protected String[] columnProperties = {"Pattern"};
-
- protected CellEditor[] cellEditors;
-
- Table table;
-
- public PatternsTableViewer(Table table)
- {
- super(table);
- table = getTable();
-
- table.setLinesVisible(true);
-
- setContentProvider(new PatternsTableContentProvider());
- setLabelProvider(new PatternsTableLabelProvider());
- setColumnProperties(columnProperties);
-
- setCellModifier(this);
-
- TableColumn column = new TableColumn(table, SWT.NONE, 0);
- column.setText(columnProperties[0]);
- column.setAlignment(SWT.LEFT);
- column.setResizable(true);
-
- cellEditors = new CellEditor[1];
-
- TableLayout layout = new TableLayout();
- ColumnWeightData data = new ColumnWeightData(100);
- layout.addColumnData(data);
- cellEditors[0] = new TextCellEditor(table);
-
- getTable().setLayout(layout);
- setCellEditors(cellEditors);
- }
-
- public boolean canModify(Object element, String property)
- {
- return true;
- }
-
- public void modify(Object element, String property, Object value)
- {
- if (element instanceof TableItem && (value != null))
- {
- TableItem item = (TableItem)element;
-
- Element simpleTypeElement = ((XSDSimpleTypeDefinition)getInput()).getElement();
- FacetsSection.this.beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), simpleTypeElement); //$NON-NLS-1$
-
- XSDPatternFacet patternFacet = (XSDPatternFacet)item.getData();
- patternFacet.setLexicalValue((String)value);
-
- item.setData(patternFacet);
- item.setText((String)value);
- FacetsSection.this.endRecording(simpleTypeElement);
- }
- }
-
- public Object getValue(Object element, String property)
- {
- if (element instanceof XSDPatternFacet)
- {
- XSDPatternFacet patternFacet = (XSDPatternFacet)element;
- String value = patternFacet.getLexicalValue();
- if (value == null) value = ""; //$NON-NLS-1$
- return value;
- }
- return ""; //$NON-NLS-1$
- }
-
- }
-
- class PatternsTableContentProvider implements IStructuredContentProvider
- {
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
- }
-
- public java.lang.Object[] getElements(java.lang.Object inputElement)
- {
- java.util.List list = new ArrayList();
- if (inputElement instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)inputElement;
- return st.getPatternFacets().toArray();
- }
- return list.toArray();
- }
-
- public void dispose()
- {
- }
- }
-
- class PatternsTableLabelProvider extends LabelProvider implements ITableLabelProvider
- {
- public PatternsTableLabelProvider()
- {
-
- }
-
- public Image getColumnImage(Object element, int columnIndex)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDSimplePattern.gif"); //$NON-NLS-1$
- }
-
- public String getColumnText(Object element, int columnIndex)
- {
- if (element instanceof XSDPatternFacet)
- {
- XSDPatternFacet pattern = (XSDPatternFacet)element;
- String value = pattern.getLexicalValue();
- if (value == null) value = ""; //$NON-NLS-1$
- return value;
- }
- return ""; //$NON-NLS-1$
- }
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSectionDescriptor.java
deleted file mode 100644
index c188f7c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSectionDescriptor.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-
-public class FacetsSectionDescriptor extends AbstractSectionDescriptor
-{
-
- /**
- *
- */
- public FacetsSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.facets";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDSimpleTypeDefinition.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new FacetsSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.facets";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDSimpleTypeDefinition)
- {
- return true;
- }
- }
- return false;
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSection.java
deleted file mode 100644
index 36b5918..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSection.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class MinMaxSection extends AbstractSection
-{
- CCombo minCombo;
- CCombo maxCombo;
-
- /**
- *
- */
- public MinMaxSection()
- {
- super();
- }
-
-
- public void doHandleEvent(Event event)
- {
- if (event.widget == minCombo)
- {
- updateMinAttribute();
- }
- else if (event.widget == maxCombo)
- {
- updateMaxAttribute();
- }
- }
-
- public void doWidgetSelected(SelectionEvent e)
- {
- if (e.widget == minCombo)
- {
- updateMinAttribute();
- }
- else if (e.widget == maxCombo)
- {
- updateMaxAttribute();
- }
- }
-
- private void updateMinAttribute()
- {
- XSDParticle particle = null;
- Object input = getInput();
-
- if (input instanceof XSDParticleContent)
- {
- particle = getAssociatedParticle((XSDParticleContent)input);
- }
- if (particle != null)
- {
- Element element = particle.getElement();
- String newValue = ""; //$NON-NLS-1$
-
- newValue = minCombo.getText();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element); //$NON-NLS-1$
- if (newValue.length()==0)
- {
- particle.unsetMinOccurs();
- }
- try
- {
- if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
- {
- particle.setMinOccurs(XSDParticle.UNBOUNDED);
- }
- else
- {
- int val = Integer.parseInt(newValue);
- particle.setMinOccurs(val);
- }
- }
- catch (NumberFormatException e)
- {
-
- }
- finally
- {
- endRecording(element);
- }
- }
- }
-
- private void updateMaxAttribute()
- {
- XSDParticle particle = null;
- Object input = getInput();
-
- if (input instanceof XSDParticleContent)
- {
- particle = getAssociatedParticle((XSDParticleContent)input);
- }
- if (particle != null)
- {
- Element element = particle.getElement();
- String newValue = "";
- newValue = maxCombo.getText();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element); //$NON-NLS-1$
- if (newValue.length()==0)
- {
- particle.unsetMaxOccurs();
- }
- try
- {
- if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
- {
- particle.setMaxOccurs(XSDParticle.UNBOUNDED);
- }
- else
- {
- int val = Integer.parseInt(newValue);
- particle.setMaxOccurs(val);
- }
- }
- catch (NumberFormatException e)
- {
-
- }
- finally
- {
- endRecording(element);
- }
- }
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
-
- public void createControls(Composite parent,TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- minCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 0);
- minCombo.setLayoutData(data);
- minCombo.add("0"); //$NON-NLS-1$
- minCombo.add("1"); //$NON-NLS-1$
- minCombo.addListener(SWT.Modify, this);
- minCombo.addSelectionListener(this);
-
- CLabel minLabel = getWidgetFactory().createCLabel(composite, XSDConstants.MINOCCURS_ATTRIBUTE + ":");
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(minCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(minCombo, 0, SWT.CENTER);
- minLabel.setLayoutData(data);
-
- maxCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(minCombo, +ITabbedPropertyConstants.VSPACE);
- maxCombo.setLayoutData(data);
- maxCombo.add("0"); //$NON-NLS-1$
- maxCombo.add("1"); //$NON-NLS-1$
- maxCombo.add("unbounded"); //$NON-NLS-1$
- maxCombo.addListener(SWT.Modify, this);
- maxCombo.addSelectionListener(this);
-
- CLabel maxLabel = getWidgetFactory().createCLabel(composite, XSDConstants.MAXOCCURS_ATTRIBUTE + ":");
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(maxCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(maxCombo, 0, SWT.CENTER);
- maxLabel.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (doRefresh)
- {
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
-
- setListenerEnabled(false);
- boolean refreshMinText = true;
- boolean refreshMaxText = true;
- if (minCombo.isFocusControl())
- {
- refreshMinText = false;
- }
- if (maxCombo.isFocusControl())
- {
- refreshMaxText = false;
- }
- if (refreshMinText)
- {
- minCombo.setText(""); //$NON-NLS-1$
- }
- if (refreshMaxText)
- {
- maxCombo.setText(""); //$NON-NLS-1$
- }
- Object input = getInput();
- if (input != null)
- {
- if (input instanceof XSDParticleContent)
- {
- XSDParticle particle = getAssociatedParticle((XSDParticleContent)input);
- if (particle != null)
- {
- // minText.setText(String.valueOf(particle.getMinOccurs()));
- // maxText.setText(String.valueOf(particle.getMaxOccurs()));
- Element element = particle.getElement();
- if (element != null)
- {
- String min = element.getAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
- String max = element.getAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
- if (min != null && refreshMinText)
- {
- minCombo.setText(min);
- }
- if (max != null && refreshMaxText)
- {
- maxCombo.setText(max);
- }
- }
- }
- }
- }
- setListenerEnabled(true);
- }
- }
-
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
- private XSDParticle getAssociatedParticle(XSDParticleContent particleContent)
- {
- XSDConcreteComponent xsdComp = particleContent.getContainer();
- if (xsdComp instanceof XSDParticle)
- {
- return (XSDParticle)xsdComp;
- }
- return null;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSectionDescriptor.java
deleted file mode 100644
index b82b234..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSectionDescriptor.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDWildcard;
-
-public class MinMaxSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public MinMaxSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.minmax";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDElementDeclaration.class);
- list.add(XSDModelGroup.class);
- list.add(XSDWildcard.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new MinMaxSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
-// if (object instanceof XSDElementDeclaration)
-// {
-// Element element = ((XSDElementDeclaration)object).getElement();
-// Object parentNode = element.getParentNode();
-// // minOccurs and maxOccurs apply to non-global elements
-// boolean isGlobalElement = XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false);
-// return !isGlobalElement;
-// }
-// if (object instanceof XSDParticle)
-// {
-// XSDParticle particle = (XSDParticle)object;
-// Element element = particle.getElement();
-// if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-// {
-// return true;
-// }
-// else if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-// {
-// return false;
-// }
-// else
-// {
-// return true;
-// }
-// }
- if (object instanceof XSDModelGroup)
- {
- return true;
- }
- else if (object instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)object;
- if (xsdElementDeclaration.isGlobal())
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- else if (object instanceof XSDWildcard)
- {
- XSDWildcard wildcard = (XSDWildcard)object;
- if (wildcard.getContainer() instanceof XSDComplexTypeDefinition ||
- wildcard.getContainer() instanceof XSDAttributeGroupDefinition)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- }
- return false;
- }
-
- public String getAfterSection()
- {
- return "org.eclipse.wst.wsdleditor.section.reference";
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSection.java
deleted file mode 100644
index bfc6f8a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSection.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDModelGroup;
-import org.w3c.dom.Element;
-
-public class ModelGroupSection extends AbstractSection
-{
- CCombo modelGroupCombo;
- private String[] modelGroupComboValues = { "sequence", "choice", "all" }; //$NON-NLS-1$
-
- /**
- *
- */
- public ModelGroupSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- modelGroupCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 0);
- modelGroupCombo.setLayoutData(data);
- modelGroupCombo.addSelectionListener(this);
- modelGroupCombo.setItems(modelGroupComboValues);
-
- CLabel cLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_KIND")); //$NON-NLS-1$
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(modelGroupCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(modelGroupCombo, 0, SWT.CENTER);
- cLabel.setLayoutData(data);
-
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- setListenerEnabled(false);
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- Object input = getInput();
- if (input != null)
- {
- if (input instanceof XSDModelGroup)
- {
- XSDModelGroup particle = (XSDModelGroup)input;
- String modelType = particle.getCompositor().getName();
- modelGroupCombo.setText(modelType);
- }
- }
- setListenerEnabled(true);
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == modelGroupCombo)
- {
- Object input = getInput();
- if (input instanceof XSDModelGroup)
- {
- XSDModelGroup particle = (XSDModelGroup)input;
-
- Element element = particle.getElement();
- Element parent = (Element)element.getParentNode();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_SCOPE_CHANGE"), parent); //$NON-NLS-1$
-// changeContentModel(parent, modelGroupCombo.getText());
- particle.setCompositor(XSDCompositor.get(modelGroupCombo.getText()));
- endRecording(parent);
- refresh();
- }
- }
- }
-
-// private void changeContentModel(Element parent, String contentModel)
-// {
-// Document doc = parent.getOwnerDocument();
-// XSDDOMHelper domHelper = getDomHelper();
-//
-// String prefix = parent.getPrefix();
-// prefix = prefix == null ? "" : prefix + ":";
-//
-// Element contentModelElement = domHelper.getContentModelFromParent(parent);
-//
-// if (contentModelElement.getLocalName().equals(contentModel))
-// {
-// return; // it's already the content model
-// }
-//
-// Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
-//
-// if (contentModelElement.hasChildNodes())
-// {
-// NodeList nodes = contentModelElement.getChildNodes();
-// // use clones so we don't have a refresh problem
-// for (int i = 0; i < nodes.getLength(); i++)
-// {
-// Node node = nodes.item(i);
-// newNode.appendChild(node.cloneNode(true));
-// }
-// }
-// parent.replaceChild(newNode, contentModelElement);
-// }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSectionDescriptor.java
deleted file mode 100644
index 2f91552..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSectionDescriptor.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDModelGroup;
-
-public class ModelGroupSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public ModelGroupSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.modelgroup";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDModelGroup.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new ModelGroupSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDModelGroup)
- {
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSection.java
deleted file mode 100644
index 28c9abf..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSection.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDComponent;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NameSection extends AbstractSection
-{
- /**
- *
- */
- public NameSection()
- {
- super();
- }
-
- Text nameText;
-
-
- public void doHandleEvent(Event event)
- {
- if (event.widget == nameText)
- {
- Object input = getInput();
- String newValue = nameText.getText();
- if (input instanceof XSDNamedComponent)
- {
- XSDNamedComponent namedComponent = (XSDNamedComponent)input;
- if (newValue.length() > 0)
- {
- namedComponent.setName(newValue);
- doReferentialIntegrityCheck(namedComponent, newValue);
- }
- else
- {
- // TODO: Show error message
- }
- }
-// else if (input instanceof XSDParticle)
-// {
-// XSDParticle xsdParticle = (XSDParticle)input;
-// if (newValue.length() > 0)
-// {
-// doReferentialIntegrityCheck(xsdParticle, newValue);
-// }
-// else
-// {
-// // TODO: Show error message
-// }
-// }
- else if (input instanceof XSDAttributeDeclaration)
- {
- XSDAttributeDeclaration attribute = (XSDAttributeDeclaration)input;
- if (newValue.length() > 0)
- {
- doReferentialIntegrityCheck(attribute, newValue);
- attribute.setName(newValue);
- }
- else
- {
- // TODO: Show error message
- }
- }
- else if (input instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)input;
- XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
- if (newValue.length() > 0)
- {
- doReferentialIntegrityCheck(attribute, newValue);
- attribute.setName(newValue);
- attributeUse.setAttributeDeclaration(attribute);
- }
- else
- {
- // TODO: Show error message
- }
- }
- }
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- // data.right = new FormAttachment(95, 0);
- data.right = new FormAttachment(100, -rightMarginSpace -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 0);
- nameText.setLayoutData(data);
- nameText.addListener(SWT.Modify, this);
-
- CLabel nameLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_NAME")); //$NON-NLS-1$
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(nameText, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(nameText, 0, SWT.CENTER);
- nameLabel.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (nameText.isFocusControl())
- {
- return;
- }
- setListenerEnabled(false);
- nameText.setEditable(true);
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- Object input = getInput();
- nameText.setText(""); //$NON-NLS-1$
- if (input != null)
- {
- if (input instanceof XSDComplexTypeDefinition || input instanceof XSDSimpleTypeDefinition)
- {
- XSDTypeDefinition type = (XSDTypeDefinition)input;
-
- Element element = type.getElement();
- String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
- if (name == null) name = "";
-
- boolean isAnonymousType = checkForAnonymousType(element);
- if (isAnonymousType)
- {
- nameText.setText("**anonymous**"); //$NON-NLS-1$
- nameText.setEditable(false);
- }
- else
- {
- nameText.setText(name);
- nameText.setEditable(true);
- }
- }
- else if (input instanceof XSDNamedComponent)
- {
- XSDNamedComponent namedComponent = (XSDNamedComponent)input;
- String name = namedComponent.getName();
- if (name != null)
- {
- nameText.setText(name);
- }
- }
- else if (input instanceof XSDAttributeDeclaration)
- {
- XSDAttributeDeclaration attribute = (XSDAttributeDeclaration)input;
- //String name = attribute.getName();
- Element element = attribute.getElement();
- String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
- if (name != null)
- {
- nameText.setText(name);
- }
- }
- else if (input instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)input;
- XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
- String name = attribute.getName();
- if (name != null)
- {
- nameText.setText(name);
- }
- }
-// else if (input instanceof Element)
-// {
-// String name = ((Element)input).getAttribute(XSDConstants.NAME_ATTRIBUTE);
-// if (name == null) name = "";
-// nameText.setText(name);
-// }
- }
- setListenerEnabled(true);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
- private void doReferentialIntegrityCheck(XSDComponent xsdComponent, String newValue)
- {
- }
-/*
- Element element = xsdComponent.getElement();
- if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_NAME_CHANGE"), element); //$NON-NLS-1$
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- if (xsdComponent instanceof XSDNamedComponent)
- {
- ((XSDNamedComponent)xsdComponent).setName(newValue);
- }
-
- // now rename any references to this element
-
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDElementDeclaration && comp.getContainer().equals(xsdSchema))
- {
- GlobalElementRenamer renamer = new GlobalElementRenamer((XSDNamedComponent)comp, newValue);
- renamer.visitSchema(xsdSchema);
- }
- }
- endRecording(element);
- }
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_NAME_CHANGE"), element); //$NON-NLS-1$
- if (newValue.length() > 0)
- {
- // now rename any references to this type
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDComplexTypeDefinition && comp.getContainer().equals(xsdSchema))
- {
- GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, newValue);
- renamer.visitSchema(xsdSchema);
- }
- }
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- ((XSDNamedComponent)xsdComponent).setName(newValue);
- }
- else
- {
- element.removeAttribute(XSDConstants.NAME_ATTRIBUTE);
- }
- endRecording(element);
- }
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_SIMPLETYPE_NAME_CHANGE"), element);
- if (validateName(newValue))
- {
- // now rename any references to this type
- if (newValue.length() > 0)
- {
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDSimpleTypeDefinition && comp.getContainer().equals(xsdSchema))
- {
- GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, newValue);
- renamer.visitSchema(xsdSchema);
- }
- }
-// element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- }
- else
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
- }
- }
- endRecording(element);
-
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_NAME_CHANGE"), element); //$NON-NLS-1$
- // now rename any references to this element
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDAttributeDeclaration && comp.getContainer().equals(xsdSchema))
- {
- GlobalAttributeRenamer renamer = new GlobalAttributeRenamer((XSDNamedComponent)comp, newValue);
- renamer.visitSchema(xsdSchema);
- }
- }
- // element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- endRecording(element);
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_NAME_CHANGE"), element); //$NON-NLS-1$
- ((XSDNamedComponent)xsdComponent).setName(newValue);
- // now rename any references to this element
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDAttributeGroupDefinition && comp.getContainer().equals(xsdSchema))
- {
- GlobalAttributeGroupRenamer renamer = new GlobalAttributeGroupRenamer((XSDNamedComponent)comp, newValue);
- renamer.visitSchema(xsdSchema);
- }
- }
- endRecording(element);
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.UNIQUE_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_UNIQUE_NAME_CHANGE"), element); //$NON-NLS-1$
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- }
- else
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, ""); //$NON-NLS-1$
- }
- endRecording(element);
- }
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.KEY_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_KEY_NAME_CHANGE"), element); //$NON-NLS-1$
- if (newValue.length() > 0)
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- }
- else
- {
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, ""); //$NON-NLS-1$
- }
- endRecording(element);
- }
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.GROUP_ELEMENT_TAG, false))
- {
- if (validateName(newValue))
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_NAME_CHANGE"), element); //$NON-NLS-1$
- // now rename any references to this element
- if (xsdSchema != null)
- {
- XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
- if (comp != null && comp instanceof XSDModelGroupDefinition && comp.getContainer().equals(xsdSchema))
- {
- GlobalGroupRenamer renamer = new GlobalGroupRenamer((XSDNamedComponent)comp, newValue);
- renamer.visitSchema(xsdSchema);
- }
- }
- element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
- endRecording(element);
- }
-
- }
-
-
-
- }*/
-
- boolean checkForAnonymousType(Element element)
- {
- Object parentElement = (Object)element.getParentNode();
- boolean isAnonymous = false;
- if (parentElement != null)
- {
- if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- isAnonymous = true;
- }
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- if (XSDDOMHelper.inputEquals(parentElement, XSDConstants.RESTRICTION_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parentElement, XSDConstants.UNION_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parentElement, XSDConstants.LIST_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(parentElement, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- isAnonymous = true;
- }
- }
- }
- return isAnonymous;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSectionDescriptor.java
deleted file mode 100644
index e4349ea..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSectionDescriptor.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NameSectionDescriptor extends AbstractSectionDescriptor implements ISectionDescriptor
-{
- /**
- *
- */
- public NameSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.name";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDNamedComponent.class);
- list.add(XSDAttributeUse.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new NameSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDNamedComponent)
- {
- XSDNamedComponent namedComponent = (XSDNamedComponent)object;
- Element element = namedComponent.getElement();
-
- if (inputEquals(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) ||
- inputEquals(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- return false;
- }
-
- // don't want to show editable name section for ref's
- // need to show ref section with a combobox
-
- if (namedComponent instanceof XSDElementDeclaration)
- {
- if (((XSDElementDeclaration)namedComponent).isElementDeclarationReference())
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- else if (namedComponent instanceof XSDAttributeDeclaration)
- {
- if (((XSDAttributeDeclaration)namedComponent).isAttributeDeclarationReference())
- {
- return false;
- }
- else
- {
- return true;
- }
- }
-
- if (element != null)
- {
- if (inputEquals(element, element.getLocalName(), true))
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- }
-// else if (object instanceof XSDParticle)
-// {
-// XSDParticle particle = (XSDParticle)object;
-// Element element = particle.getElement();
-// if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-// {
-// return true;
-// }
-// else if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-// {
-// return false;
-// }
-// else
-// {
-// return false;
-// }
-// }
- else if (object instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)object;
- Element element = attributeUse.getElement();
- if (inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- }
-
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationDescriptor.java
deleted file mode 100644
index f86fe2d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationDescriptor.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDImport;
-
-public class NamespaceAndSchemaLocationDescriptor extends AbstractSectionDescriptor
-{
- NamespaceAndSchemaLocationSection namespaceAndSchemaLocationSection;
- /**
- *
- */
- public NamespaceAndSchemaLocationDescriptor()
- {
- super();
- namespaceAndSchemaLocationSection = new NamespaceAndSchemaLocationSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.namespaceAndSchemaLocationSection";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDConcreteComponent.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return namespaceAndSchemaLocationSection;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
-
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDImport) {
- return true;
- }
- }
-
- return false;
- }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationSection.java
deleted file mode 100644
index 7d4d06f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationSection.java
+++ /dev/null
@@ -1,360 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.Map;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.internal.viewers.ResourceFilter;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.wst.xsd.ui.internal.wizards.XSDSelectIncludeFileWizard;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.impl.XSDImportImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NamespaceAndSchemaLocationSection extends CommonDirectivesSection
-{
- Text namespaceText, prefixText;
- protected String oldPrefixValue;
-
- public NamespaceAndSchemaLocationSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- Composite composite = getWidgetFactory().createFlatFormComposite(parent);
-
- CLabel namespaceLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_NAMESPACE")); //$NON-NLS-1$
- namespaceText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
- namespaceText.setEditable(false);
-
- FormData data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(namespaceText, +ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(namespaceText, 0, SWT.CENTER);
- namespaceLabel.setLayoutData(data);
-
- data = new FormData();
- data.left = new FormAttachment(0, 110);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 0);
- namespaceText.setLayoutData(data);
-
- CLabel prefixLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_PREFIX")); //$NON-NLS-1$
- prefixText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
- prefixText.setEditable(true);
- prefixText.addListener(SWT.Modify, this);
-
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(prefixText, 0);
- data.top = new FormAttachment(prefixText, 0, SWT.CENTER);
- prefixLabel.setLayoutData(data);
-
- data = new FormData();
- data.left = new FormAttachment(0, 110);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(namespaceText, +ITabbedPropertyConstants.VSPACE);
- prefixText.setLayoutData(data);
-
- // Create Schema Location Label
- CLabel schemaLocationLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_LOCATION")); //$NON-NLS-1$
- schemaLocationText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
-
- // Create Wizard Button
- wizardButton = getWidgetFactory().createButton(composite, "", SWT.NONE); //$NON-NLS-1$
- wizardButton.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
- FormData buttonFormData = new FormData();
- buttonFormData.left = new FormAttachment(100, -rightMarginSpace + 2);
- buttonFormData.right = new FormAttachment(100, 0);
- buttonFormData.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
- wizardButton.setLayoutData(buttonFormData);
- wizardButton.addSelectionListener(this);
-
- // Create Schema Location Text
- schemaLocationText.setEditable(true);
- FormData schemaLocationData = new FormData();
- schemaLocationData.left = new FormAttachment(0, 110);
- schemaLocationData.right = new FormAttachment(wizardButton, 0);
- schemaLocationData.top = new FormAttachment(prefixText, +ITabbedPropertyConstants.VSPACE);
- schemaLocationText.setLayoutData(schemaLocationData);
- schemaLocationText.addListener(SWT.Modify, this);
-
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(schemaLocationText, 0);
- data.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
- schemaLocationLabel.setLayoutData(data);
-
- // error text
- errorText = new StyledText(composite, SWT.FLAT);
- errorText.setEditable(false);
- errorText.setEnabled(false);
- errorText.setText("");
-
- data = new FormData();
- data.left = new FormAttachment(schemaLocationText, 0, SWT.LEFT);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(schemaLocationText, 0);
- errorText.setLayoutData(data);
- }
-
- public void widgetSelected(SelectionEvent event)
- {
- if (event.widget == wizardButton)
- {
- setListenerEnabled(false);
- Shell shell = Display.getCurrent().getActiveShell();
-
- IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
- ViewerFilter filter = new ResourceFilter(new String[] { ".xsd" }, //$NON-NLS-1$
- new IFile[] { currentIFile },
- null);
-
- XSDSelectIncludeFileWizard fileSelectWizard =
- new XSDSelectIncludeFileWizard(xsdSchema,
- false,
- XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_SCHEMA"), //$NON-NLS-1$
- XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_DESC"), //$NON-NLS-1$
- filter,
- (IStructuredSelection) selection);
-
- WizardDialog wizardDialog = new WizardDialog(shell, fileSelectWizard);
- wizardDialog.create();
- wizardDialog.setBlockOnOpen(true);
- int result = wizardDialog.open();
-
- String value = schemaLocationText.getText();
- prefixText.removeListener(SWT.Modify, this);
- if (result == Window.OK)
- {
- errorText.setText("");
- IFile selectedIFile = fileSelectWizard.getResultFile();
- String schemaFileString = value;
- if (selectedIFile != null)
- {
- schemaFileString = URIHelper.getRelativeURI(selectedIFile.getLocation(), currentIFile.getLocation());
- }
- else
- {
- schemaFileString = fileSelectWizard.getURL();
- }
-
- String namespace = fileSelectWizard.getNamespace();
- if (namespace == null) namespace = "";
-
- XSDSchema externalSchema = fileSelectWizard.getExternalSchema();
- handleSchemaLocationChange(schemaFileString, namespace, externalSchema);
- }
- setListenerEnabled(true);
- prefixText.addListener(SWT.Modify, this);
- }
- }
-
- protected void handleSchemaLocationChange(String schemaFileString, String namespace, XSDSchema externalSchema)
- {
- XSDConcreteComponent comp = (XSDConcreteComponent)getInput();
- if (comp instanceof XSDImport)
- {
- XSDImport xsdImport = (XSDImport)comp;
- Element importElement = comp.getElement();
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_IMPORT_CHANGE"), importElement);
-
- xsdImport.setNamespace(namespace);
- xsdImport.setSchemaLocation(schemaFileString);
- xsdImport.setResolvedSchema(externalSchema);
-
- java.util.Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
-// System.out.println("changed Import Map is " + map.values());
-// System.out.println("changed import Map keys are " + map.keySet());
-
- // Referential integrity on old import
- // How can we be sure that if the newlocation is the same as the oldlocation
- // the file hasn't changed
-
- XSDSchema referencedSchema = xsdImport.getResolvedSchema();
- if (referencedSchema != null)
- {
- XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
- cleanHelper.visitSchema(xsdSchema);
- }
-
- Element schemaElement = getSchema().getElement();
-
- // update the xmlns in the schema element first, and then update the import element next
- // so that the last change will be in the import element. This keeps the selection
- // on the import element
- TypesHelper helper = new TypesHelper(externalSchema);
- String prefix = helper.getPrefix(namespace, false);
-
- if (map.containsKey(prefix))
- {
- prefix = null;
- }
-
- if (prefix == null || (prefix !=null && prefix.length() == 0))
- {
- StringBuffer newPrefix = new StringBuffer("pref"); //$NON-NLS-1$
- int prefixExtension = 1;
- while (map.containsKey(newPrefix.toString()) && prefixExtension < 100)
- {
- newPrefix = new StringBuffer("pref" + String.valueOf(prefixExtension));
- prefixExtension++;
- }
- prefix = newPrefix.toString();
- }
-
- if (namespace.length() > 0)
- {
- // if ns already in map, use its corresponding prefix
- if (map.containsValue(namespace))
- {
- TypesHelper typesHelper = new TypesHelper(xsdSchema);
- prefix = typesHelper.getPrefix(namespace, false);
- }
- else // otherwise add to the map
- {
- schemaElement.setAttribute("xmlns:"+prefix, namespace);
- }
- prefixText.setText(prefix);
- }
- else
- {
- prefixText.setText("");
- namespaceText.setText("");
- }
-
- endRecording(importElement);
-
-// System.out.println("changed Import Map is " + map.values());
-// System.out.println("changed import Map keys are " + map.keySet());
-
- }
- refresh();
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (doRefresh)
- {
- errorText.setText("");
- setListenerEnabled(false);
-
- Element element = null;
- if (input instanceof XSDImport) {
- element = ((XSDImportImpl) input).getElement();
-
- String namespace = element.getAttribute("namespace"); //$NON-NLS-1$
- String schemaLocation = element.getAttribute("schemaLocation"); //$NON-NLS-1$
-
- TypesHelper helper = new TypesHelper(xsdSchema);
- String prefix = helper.getPrefix(element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE), false);
-
- if (namespace == null) {
- namespace = ""; //$NON-NLS-1$
- }
- if (prefix == null) {
- prefix = ""; //$NON-NLS-1$
- }
- if (schemaLocation == null) {
- schemaLocation = ""; //$NON-NLS-1$
- }
-
- namespaceText.setText(namespace);
- prefixText.setText(prefix);
- schemaLocationText.setText(schemaLocation);
- oldPrefixValue = prefixText.getText();
- }
-
- setListenerEnabled(true);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return true;
- }
-
- public void doHandleEvent(Event event)
- {
- super.doHandleEvent(event);
- if (event.type == SWT.Modify)
- {
- if (event.widget == prefixText)
- {
- if (validatePrefix(prefixText.getText()) && schemaLocationText.getText().trim().length() > 0)
- {
- Element element = ((XSDConcreteComponent)getInput()).getElement();
- Map map = getSchema().getQNamePrefixToNamespaceMap();
-
- if (map.containsKey(prefixText.getText()))
- {
- setErrorMessage(XSDEditorPlugin.getXSDString("_ERROR_LABEL_PREFIX_EXISTS"));
- }
- else
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PREFIX_CHANGE"), element);
-
- Element schemaElement = getSchema().getElement();
- schemaElement.removeAttribute("xmlns:"+oldPrefixValue);
- schemaElement.setAttribute("xmlns:" + prefixText.getText(), namespaceText.getText());
- XSDSchemaHelper.updateElement(getSchema());
-
- clearErrorMessage();
- oldPrefixValue = prefixText.getText();
- endRecording(element);
-
-// System.out.println("Map is " + map.values());
-// System.out.println("Map keys are " + map.keySet());
- }
- }
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSection.java
deleted file mode 100644
index f32b09c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSection.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.Iterator;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDProcessContents;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NamespaceProcessContentsSection extends AbstractSection
-{
- CCombo namespaceCombo;
- CCombo processContentsCombo;
-
- private String[] namespaceComboValues = {
- "", //$NON-NLS-1$
- "##any", //$NON-NLS-1$
- "##other", //$NON-NLS-1$
- "##targetNamespace", //$NON-NLS-1$
- "##local" //$NON-NLS-1$
- };
-
- /**
- *
- */
- public NamespaceProcessContentsSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent,TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- Composite composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
-
- namespaceCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 0);
- namespaceCombo.setLayoutData(data);
-// Iterator list = XSDNamespaceConstraintCategory.VALUES.iterator();
-// while (list.hasNext())
-// {
-// namespaceCombo.add(((XSDNamespaceConstraintCategory)list.next()).getName());
-// }
- namespaceCombo.setItems(namespaceComboValues);
- namespaceCombo.addSelectionListener(this);
-
- CLabel namespaceLabel = getWidgetFactory().createCLabel(composite, XSDConstants.NAMESPACE_ATTRIBUTE);
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(namespaceCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(namespaceCombo, 0, SWT.CENTER);
- namespaceLabel.setLayoutData(data);
-
- processContentsCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(namespaceCombo, +ITabbedPropertyConstants.VSPACE);
- processContentsCombo.setLayoutData(data);
- Iterator list = XSDProcessContents.VALUES.iterator();
- processContentsCombo.add(""); //$NON-NLS-1$
- while (list.hasNext())
- {
- processContentsCombo.add(((XSDProcessContents)list.next()).getName());
- }
- processContentsCombo.addSelectionListener(this);
-
- CLabel processContentsLabel = getWidgetFactory().createCLabel(composite, XSDConstants.PROCESSCONTENTS_ATTRIBUTE);
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(processContentsCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(processContentsCombo, 0, SWT.CENTER);
- processContentsLabel.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
-// namespaceCombo.removeSelectionListener(this);
-// processContentsCombo.removeSelectionListener(this);
- namespaceCombo.setText(""); //$NON-NLS-1$
- processContentsCombo.setText(""); //$NON-NLS-1$
- Object input = getInput();
- if (input != null)
- {
- if (input instanceof XSDWildcard)
- {
- XSDWildcard wildcard = (XSDWildcard)input;
- if (wildcard.isSetLexicalNamespaceConstraint())
- {
- namespaceCombo.setText(wildcard.getStringLexicalNamespaceConstraint());
- }
- else
- {
- namespaceCombo.setText("");
- }
- if (wildcard.isSetProcessContents())
- {
- XSDProcessContents pc = wildcard.getProcessContents();
- processContentsCombo.setText(pc.getName());
- }
- }
- }
- }
-
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- XSDConcreteComponent concreteComponent = (XSDConcreteComponent)getInput();
- Element element = concreteComponent.getElement();
- if (concreteComponent instanceof XSDWildcard)
- {
- XSDWildcard wildcard = (XSDWildcard)concreteComponent;
- if (e.widget == namespaceCombo)
- {
- String newValue = namespaceCombo.getText();
- boolean removeAttribute = false;
- if (newValue.length() == 0)
- {
- removeAttribute = true;
- }
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_NAMESPACE_CHANGE"), element); //$NON-NLS-1$
- if (removeAttribute)
- {
- wildcard.unsetLexicalNamespaceConstraint();
- }
- else
- {
- wildcard.setStringLexicalNamespaceConstraint(newValue);
- }
- endRecording(element);
- }
- else if (e.widget == processContentsCombo)
- {
- String newValue = processContentsCombo.getText();
- boolean removeAttribute = false;
- if (newValue.length() == 0)
- {
- removeAttribute = true;
- }
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PROCESSCONTENTS_CHANGE"), element); //$NON-NLS-1$
- if (removeAttribute)
- {
- wildcard.unsetProcessContents();
- }
- else
- {
- wildcard.setProcessContents(XSDProcessContents.get(processContentsCombo.getItem(processContentsCombo.getSelectionIndex())));
- }
- endRecording(element);
- }
- }
- refresh();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSectionDescriptor.java
deleted file mode 100644
index 87608c9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSectionDescriptor.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDWildcard;
-
-public class NamespaceProcessContentsSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public NamespaceProcessContentsSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.namespaceprocesscontents";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDWildcard.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new NamespaceProcessContentsSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDWildcard)
- {
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSection.java
deleted file mode 100644
index 468106e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSection.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Map;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.XSDEditNamespacesAction;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.TargetNamespaceChangeHandler;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class NamespaceSection extends AbstractSection
-{
- IWorkbenchPart part;
- Text prefixText;
- Text targetNamespaceText;
- Button editButton;
- StyledText errorText;
- Color red;
-
- /**
- *
- */
- public NamespaceSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- Composite composite = getWidgetFactory().createFlatFormComposite(parent);
-
- // Create Prefix Label
- CLabel prefixLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_PREFIX")); //$NON-NLS-1$
-
- int leftCoordinate = getStandardLabelWidth(composite,
- new String[] {XSDEditorPlugin.getXSDString("_UI_LABEL_TARGET_NAME_SPACE"), XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_PREFIX")});
-
- // Create Prefix Text
- prefixText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
- FormData prefixTextData = new FormData();
- // prefixTextData.left = new FormAttachment(0, 115);
- prefixTextData.left = new FormAttachment(0, leftCoordinate);
- prefixTextData.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- prefixText.setLayoutData(prefixTextData);
- prefixText.addListener(SWT.Modify, this);
-
- FormData data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(prefixText, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(prefixText, 0, SWT.CENTER);
- prefixLabel.setLayoutData(data);
-
- // Create TargetNamespace Label
- CLabel targetNamespaceLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_TARGET_NAME_SPACE")); //$NON-NLS-1$
-
- // Create TargetNamespace Text
- targetNamespaceText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
-
- FormData tnsLabelData = new FormData();
- tnsLabelData.left = new FormAttachment(0, 0);
- tnsLabelData.right = new FormAttachment(targetNamespaceText, -ITabbedPropertyConstants.HSPACE);
- tnsLabelData.top = new FormAttachment(targetNamespaceText, 0, SWT.CENTER);
- targetNamespaceLabel.setLayoutData(tnsLabelData);
-
- FormData tnsTextData = new FormData();
- // tnsTextData.left = new FormAttachment(0, 115);
- tnsTextData.left = new FormAttachment(0, leftCoordinate);
- tnsTextData.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- tnsTextData.top = new FormAttachment(prefixText, +ITabbedPropertyConstants.VSPACE);
- targetNamespaceText.setLayoutData(tnsTextData);
- targetNamespaceText.addListener(SWT.Modify, this);
-
- // Advanced Button
- editButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_SECTION_ADVANCED_ATTRIBUTES") + "...", SWT.PUSH);
-
- FormData buttonFormData = new FormData();
- buttonFormData.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- buttonFormData.top = new FormAttachment(targetNamespaceText, +ITabbedPropertyConstants.VSPACE);
- editButton.setLayoutData(buttonFormData);
- editButton.addSelectionListener(this);
-
- // error text
- errorText = new StyledText(composite, SWT.FLAT);
- errorText.setEditable(false);
- errorText.setEnabled(false);
- errorText.setText("");
-
- data = new FormData();
- data.left = new FormAttachment(targetNamespaceText, 0, SWT.LEFT);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(editButton, 0);
- errorText.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (doRefresh)
- {
- // hack...open bug against properties
- if (prefixText.isDisposed() || targetNamespaceText.isDisposed())
- {
- return;
- }
- if (prefixText.isFocusControl() || targetNamespaceText.isFocusControl())
- {
- return;
- }
-
- setListenerEnabled(false);
-
- Element element = xsdSchema.getElement();
-
- if (element != null)
- {
- // Handle prefixText
- TypesHelper helper = new TypesHelper(xsdSchema);
- String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
-
- if (aPrefix != null && aPrefix.length() > 0)
- {
- prefixText.setText(aPrefix);
- }
- else
- {
- prefixText.setText(""); //$NON-NLS-1$
- }
-
- // Handle TargetNamespaceText
- String tns = element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
- if (tns != null && tns.length() > 0)
- {
- targetNamespaceText.setText(tns);
- }
- else
- {
- targetNamespaceText.setText(""); //$NON-NLS-1$
- }
- errorText.setText("");
- }
- setListenerEnabled(true);
- }
- }
-
- public void doHandleEvent(Event event)
- {
- errorText.setText("");
- String prefixValue = prefixText.getText();
- String tnsValue = targetNamespaceText.getText();
- if (tnsValue.trim().length() == 0)
- {
- if (prefixValue.trim().length() > 0)
- {
- errorText.setText(XSDEditorPlugin.getXSDString("_ERROR_TARGET_NAMESPACE_AND_PREFIX"));
- int length = errorText.getText().length();
- red = new Color(null, 255, 0, 0);
- StyleRange style = new StyleRange(0, length, red, targetNamespaceText.getBackground());
- errorText.setStyleRange(style);
- return;
- }
- }
-
- if (event.widget == prefixText)
- {
- updateNamespaceInfo(prefixValue, tnsValue);
- }
- else if (event.widget == targetNamespaceText)
- {
- updateNamespaceInfo(prefixValue, tnsValue);
- }
- }
-
- public void doWidgetSelected(SelectionEvent e) {
- if (e.widget == editButton) {
- XSDEditNamespacesAction nsAction = new XSDEditNamespacesAction(XSDEditorPlugin.getXSDString("_UI_ACTION_EDIT_NAMESPACES"), xsdSchema.getElement(), null, xsdSchema); //$NON-NLS-1$
- nsAction.run();
- refresh();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return true;
- }
-
- private void updateNamespaceInfo(String newPrefix, String newTargetNamespace)
- {
- Element element = xsdSchema.getElement();
- DocumentImpl doc = (DocumentImpl)element.getOwnerDocument();
-
- String modelTargetNamespace = xsdSchema.getTargetNamespace();
- String oldNamespace = xsdSchema.getTargetNamespace();
-
- TypesHelper helper = new TypesHelper(xsdSchema);
- String oldPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
-
- if (modelTargetNamespace == null)
- {
- modelTargetNamespace = ""; //$NON-NLS-1$
- }
-
- String targetNamespace = newTargetNamespace.trim();
- String prefix = newPrefix.trim();
-
- if (!validatePrefix(prefix) || !validateTargetNamespace(targetNamespace))
- {
- return;
- }
-
- if (prefix.length() > 0 && targetNamespace.length() == 0)
- {
- // can't have blank targetnamespace and yet specify a prefix
- return;
- }
-
- doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_TARGETNAMESPACE_CHANGE")); //$NON-NLS-1$
- String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
- Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
-// For debugging
-// System.out.println("1. SW Map is " + map.values());
-// System.out.println("1. SW Map keys are " + map.keySet());
-
- // Check if prefix is blank
- // if it is, then make sure we have a prefix
- // for schema for schema
- if (prefix.length() == 0)
- {
- // if prefix for schema for schema is blank
- // then set it to value specified in preference
- // and update ALL nodes with this prefix
- if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
- {
- // get preference prefix
- xsdForXSDPrefix = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
- // get a unique prefix by checking what's in the map
-
- xsdForXSDPrefix = getUniqueSchemaForSchemaPrefix(xsdForXSDPrefix, map);
- element.setAttribute("xmlns:" + xsdForXSDPrefix, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001); //$NON-NLS-1$
-
- updateAllNodes(element, xsdForXSDPrefix);
-
- // remove the old xmlns attribute for the schema for schema
- if (element.getAttribute("xmlns") != null && //$NON-NLS-1$
- element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
- {
- element.removeAttribute("xmlns"); //$NON-NLS-1$
- }
- }
- }
-
- if (targetNamespace.length() > 0 ||
- (targetNamespace.length() == 0 && prefix.length() == 0))
- {
- // clean up the old prefix for this schema
- if (oldPrefix != null && oldPrefix.length() > 0)
- {
- element.removeAttribute("xmlns:"+oldPrefix); //$NON-NLS-1$
-// element.setAttribute("xmlns:" + prefix, targetNamespace);
-// java.util.Map prefixToNameSpaceMap = xsdSchema.getQNamePrefixToNamespaceMap();
-// prefixToNameSpaceMap.remove(oldPrefix);
- }
- else // if no prefix
- {
- if (element.getAttribute("xmlns") != null) //$NON-NLS-1$
- {
- if (!element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
- {
- element.removeAttribute("xmlns"); //$NON-NLS-1$
- }
- }
- }
- }
-
- if (targetNamespace.length() > 0)
- {
- if (!modelTargetNamespace.equals(targetNamespace))
- {
- element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, targetNamespace);
- }
- // now set the new xmlns:prefix attribute
- if (prefix.length() > 0)
- {
- element.setAttribute("xmlns:" + prefix, targetNamespace); //$NON-NLS-1$
- }
- else
- {
- element.setAttribute("xmlns", targetNamespace); //$NON-NLS-1$
- }
- // set the targetNamespace attribute
- }
- else // else targetNamespace is blank
- {
- if (prefix.length() == 0)
- {
- element.removeAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
- }
- }
-
-// System.out.println("1.5 SW Map is " + map.values());
-// System.out.println("1.5 SW Map keys are " + map.keySet());
-
- // do our own referential integrity
- TargetNamespaceChangeHandler targetNamespaceChangeHandler = new TargetNamespaceChangeHandler(xsdSchema, oldNamespace, targetNamespace);
- targetNamespaceChangeHandler.resolve();
-
- XSDSchemaHelper.updateElement(xsdSchema);
-
- doc.getModel().endRecording(this);
-
-// For debugging
-// map = xsdSchema.getQNamePrefixToNamespaceMap();
-// System.out.println("2. SW Map is " + map.values());
-// System.out.println("2. SW Map keys are " + map.keySet());
- }
-
- private String getUniqueSchemaForSchemaPrefix(String xsdForXSDPrefix, Map map)
- {
- if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
- {
- xsdForXSDPrefix = "xsd"; //$NON-NLS-1$
- }
- // ensure prefix is unique
- int prefixExtension = 1;
- while (map.containsKey(xsdForXSDPrefix) && prefixExtension < 100)
- {
- xsdForXSDPrefix = xsdForXSDPrefix + String.valueOf(prefixExtension);
- prefixExtension++;
- }
- return xsdForXSDPrefix;
- }
-
- private void updateAllNodes(Element element, String prefix)
- {
- element.setPrefix(prefix);
- NodeList list = element.getChildNodes();
- if (list != null)
- {
- for (int i=0; i < list.getLength(); i++)
- {
- Node child = list.item(i);
- if (child != null && child instanceof Element)
- {
- child.setPrefix(prefix);
- if (child.hasChildNodes())
- {
- updateAllNodes((Element)child, prefix);
- }
- }
- }
- }
- }
-
- private boolean validateTargetNamespace(String ns)
- {
- // will allow blank namespace !!
- if (ns.equals(""))
- {
- return true;
- }
-
- String errorMessage = null;
- try
- {
- URI testURI = new URI(ns);
- testURI.isAbsolute();
- }
- catch (URISyntaxException e)
- {
- errorMessage = XSDEditorPlugin.getXSDString("_WARN_INVALID_TARGET_NAMESPACE"); //$NON-NLS-1$
- }
-
- if (errorMessage == null || errorMessage.length() == 0)
- {
- return true;
- }
- return false;
- }
-
- public void dispose()
- {
- super.dispose();
- if (red != null)
- {
- red.dispose();
- red = null;
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSectionDescriptor.java
deleted file mode 100644
index 69f2d15..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSectionDescriptor.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.impl.XSDSchemaImpl;
-
-public class NamespaceSectionDescriptor extends AbstractSectionDescriptor
-{
- NamespaceSection namespaceSection;
- /**
- *
- */
- public NamespaceSectionDescriptor()
- {
- super();
- namespaceSection = new NamespaceSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.namespaceSection";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDConcreteComponent.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return namespaceSection;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDSchemaImpl) {
- return true;
- }
- }
-
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSection.java
deleted file mode 100644
index 2b934bc..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSection.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.views.properties.PropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.properties.XSDPropertySourceProvider;
-import org.eclipse.xsd.XSDElementDeclaration;
-
-public class OtherAttributesSection extends AbstractSection
-{
- PropertySheetPage propertySheetPage;
-
- /**
- *
- */
- public OtherAttributesSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(0, 0);
- data.bottom = new FormAttachment(100, 0);
-
- propertySheetPage = new PropertySheetPage();
- propertySheetPage.createControl(composite);
- propertySheetPage.setPropertySourceProvider(new XSDPropertySourceProvider());
- propertySheetPage.getControl().setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (doRefresh)
- {
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- }
- propertySheetPage.refresh();
- }
-
- public void dispose()
- {
- super.dispose();
- if (propertySheetPage != null)
- {
- propertySheetPage.dispose();
- propertySheetPage = null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return true;
- }
-
- public void setInput(IWorkbenchPart part, ISelection selection)
- {
- super.setInput(part, selection);
- if (input instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)input;
- if (elementDeclaration.isElementDeclarationReference())
- {
- input = elementDeclaration.getResolvedElementDeclaration();
-
- isReadOnly = (!(elementDeclaration.getResolvedElementDeclaration().getRootContainer() == xsdSchema));
- }
- }
- // update property sheet because of new input change
- propertySheetPage.selectionChanged(part, selection);
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSectionDescriptor.java
deleted file mode 100644
index ce3808b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSectionDescriptor.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDEnumerationFacet;
-import org.eclipse.xsd.XSDIdentityConstraintCategory;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDPatternFacet;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-public class OtherAttributesSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public OtherAttributesSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.otherattributes";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDConcreteComponent.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new OtherAttributesSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.other";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDConcreteComponent)
- {
- if (object instanceof XSDAttributeGroupDefinition ||
- object instanceof XSDAttributeUse ||
- object instanceof XSDAttributeDeclaration ||
- object instanceof XSDEnumerationFacet ||
- object instanceof XSDPatternFacet ||
- object instanceof XSDSimpleTypeDefinition ||
- object instanceof XSDAnnotation ||
- object instanceof XSDWildcard ||
- object instanceof XSDSchemaDirective)
- {
- return false;
- }
- else if (object instanceof XSDModelGroup)
- {
- return false;
- }
- else if (object instanceof XSDElementDeclaration)
- {
-// Remove this to fix bug 3870 Element references should have the same properties as elements
-// if (((XSDElementDeclaration)object).isElementDeclarationReference())
-// {
-// return false;
-// }
- return true;
- }
- else if (object instanceof XSDModelGroupDefinition)
- {
- if (((XSDModelGroupDefinition)object).isModelGroupDefinitionReference())
- {
- return false;
- }
- return false;
- }
- else if (object instanceof XSDIdentityConstraintDefinition)
- {
- XSDIdentityConstraintDefinition constraint = (XSDIdentityConstraintDefinition)object;
- XSDIdentityConstraintCategory category = constraint.getIdentityConstraintCategory();
- if (category.getValue() == XSDIdentityConstraintCategory.KEYREF)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- return true;
- }
- }
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSection.java
deleted file mode 100644
index 9a0255c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSection.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
-import org.eclipse.xsd.XSDPatternFacet;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class PatternSection extends AbstractSection
-{
- /**
- *
- */
- public PatternSection()
- {
- super();
- }
-
- Text patternText;
- Button button;
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
-
- super.createControls(parent, factory);
- Composite composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- patternText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
- CLabel nameLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_VALUE") + ":"); //$NON-NLS-1$
- button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
- button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-
- patternText.addListener(SWT.Modify, this);
-
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(patternText, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(button, 0, SWT.CENTER);
- nameLabel.setLayoutData(data);
-
- button.addSelectionListener(this);
- data = new FormData();
- data.left = new FormAttachment(100, -rightMarginSpace + 2);
- data.right = new FormAttachment(100,0);
- data.top = new FormAttachment(patternText, 0, SWT.CENTER);
- button.setLayoutData(data);
-
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(button, 0);
- patternText.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- setListenerEnabled(false);
- Object input = getInput();
- patternText.setText(""); //$NON-NLS-1$
- if (input != null)
- {
- Element element = null;
- if (input instanceof XSDPatternFacet)
- {
- element = ((XSDPatternFacet)input).getElement();
- }
- if (element != null)
- {
- String result = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
- if (result != null)
- {
- patternText.setText(result);
- }
- }
- }
- setListenerEnabled(true);
- }
-
- /**
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == button)
- {
- Shell shell = Display.getCurrent().getActiveShell();
- Element element = ((XSDPatternFacet)getInput()).getElement();
-
- String initialValue = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
- if (initialValue == null)
- {
- initialValue = ""; //$NON-NLS-1$
- }
- RegexWizard wizard = new RegexWizard(initialValue);
-
- WizardDialog wizardDialog = new WizardDialog(shell, wizard);
- wizardDialog.setBlockOnOpen(true);
- wizardDialog.create();
-
- int result = wizardDialog.open();
-
- if (result == Window.OK)
- {
- String newPattern = wizard.getPattern();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), element); //$NON-NLS-1$
- element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern);
- ((XSDPatternFacet)getInput()).setLexicalValue(newPattern);
- endRecording(element);
- }
-
- refresh();
- }
- }
-
- public void doHandleEvent(Event event)
- {
- if (event.widget == patternText)
- {
- XSDPatternFacet pattern = (XSDPatternFacet)getInput();
-
- String newValue = patternText.getText();
- if (newValue.length() > 0)
- {
- pattern.setLexicalValue(newValue);
- }
- }
-
- }
-
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSectionDescriptor.java
deleted file mode 100644
index 68219c7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSectionDescriptor.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDPatternFacet;
-
-public class PatternSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public PatternSectionDescriptor()
- {
- super();
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.pattern";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDPatternFacet.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new PatternSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDPatternFacet)
- {
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSection.java
deleted file mode 100644
index 574d548..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSection.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ReferenceSection extends AbstractSection
-{
- protected CCombo componentNameCombo;
- Button button;
- IEditorPart editorPart;
- CLabel refLabel;
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- componentNameCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- componentNameCombo.addSelectionListener(this);
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 1);
- componentNameCombo.setLayoutData(data);
-
- refLabel = getWidgetFactory().createCLabel(composite, XSDConstants.REF_ATTRIBUTE + ":"); //$NON-NLS-1$
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(componentNameCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(componentNameCombo, 0, SWT.CENTER);
- refLabel.setLayoutData(data);
- }
-
- public void setInput(IWorkbenchPart part, ISelection selection)
- {
- super.setInput(part, selection);
-
- Object obj = getInput();
- TypesHelper helper = new TypesHelper(xsdSchema);
- List items = new ArrayList();
- if (obj instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)obj;
- if (elementDeclaration.isElementDeclarationReference())
- {
- items = helper.getGlobalElements();
-// minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-// WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MINIMUM);
-// maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-// WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MAXIMUM);
- }
- }
- else if (obj instanceof XSDAttributeDeclaration)
- {
- items = helper.getGlobalAttributes();
- }
- else if (obj instanceof XSDModelGroupDefinition)
- {
- XSDModelGroupDefinition group = (XSDModelGroupDefinition)obj;
- if (group.isModelGroupDefinitionReference())
- {
- items = helper.getModelGroups();
- // Need tooltip for Group Ref
-// minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-// WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_GROUP_REF_MINIMUM);
-// maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-// WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_GROUP_REF_MAXIMUM);
- }
- }
- else if (obj instanceof XSDNamedComponent)
- {
- XSDNamedComponent namedComponent = (XSDNamedComponent)obj;
- Element element = namedComponent.getElement();
- if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
- {
- items = helper.getGlobalAttributeGroups();
-// WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_DESIGN_VIEW);
-// WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_NAME);
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
- {
- items = helper.getGlobalElements();
-// minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-// WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MINIMUM);
-// maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-// WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MAXIMUM);
- }
- }
- else if (obj instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)obj;
- Element element = attributeUse.getElement();
- if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
- {
- items = helper.getGlobalAttributes();
-// WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_DESIGN_VIEW);
-// WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_NAME);
- }
- }
- items.add(0, "");
- int size = items.size();
- String [] st = new String[size];
- System.arraycopy(items.toArray(), 0, st, 0, size);
- componentNameCombo.setItems(st);
-
- st = null;
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- if (doRefresh)
- {
- setListenerEnabled(false);
- // componentNameCombo.removeListener(SWT.Modify, this);
- Object input = getInput();
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
-
- if (input instanceof XSDNamedComponent)
- {
- XSDNamedComponent namedComponent = (XSDNamedComponent)getInput();
- Element element = namedComponent.getElement();
- if (element != null)
- {
- String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
- if (attrValue == null)
- {
- attrValue = "";
- }
- componentNameCombo.setText(attrValue);
- }
- }
- else if (input instanceof XSDParticleContent)
- {
- XSDParticleContent particle = (XSDParticleContent)input;
- Element element = particle.getElement();
- String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
- if (attrValue == null)
- {
- attrValue = "";
- }
- componentNameCombo.setText(attrValue);
- }
- else if (input instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)getInput();
- Element element = attributeUse.getElement();
- String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
- if (attrValue == null)
- {
- attrValue = "";
- }
- componentNameCombo.setText(attrValue);
- }
-
- setListenerEnabled(true);
- // componentNameCombo.addListener(SWT.Modify, this);
- }
- }
-
-
- public void widgetSelected(SelectionEvent e)
- {
- Object input = getInput();
- if (e.widget == componentNameCombo)
- {
- String newValue = componentNameCombo.getText();
- if (input instanceof XSDNamedComponent)
- {
- XSDNamedComponent namedComponent = (XSDNamedComponent)getInput();
- Element element = namedComponent.getElement();
-
- if (namedComponent instanceof XSDElementDeclaration)
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_REF_CHANGE"), element); //$NON-NLS-1$
- element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
- endRecording(element);
- }
- else if (namedComponent instanceof XSDAttributeDeclaration)
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_REF_CHANGE"), element); //$NON-NLS-1$
- element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
- endRecording(element);
-
- }
- else if (namedComponent instanceof XSDAttributeGroupDefinition)
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_REF_CHANGE"), element); //$NON-NLS-1$
- // element.setAttribute(XSDConstants.REF_ATTRIBUTE, (String) value);
- XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)namedComponent;
- Iterator iter = xsdSchema.getAttributeGroupDefinitions().iterator();
- while (iter.hasNext())
- {
- XSDAttributeGroupDefinition def = (XSDAttributeGroupDefinition)iter.next();
- if (def.getQName(xsdSchema).equals(componentNameCombo.getText()))
- {
- attrGroup.setResolvedAttributeGroupDefinition(def);
- attrGroup.setName(componentNameCombo.getText());
- break;
- }
- }
- endRecording(element);
- }
- else if (namedComponent instanceof XSDModelGroupDefinition)
- {
- beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_REF_CHANGE"), element); //$NON-NLS-1$
- element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
- endRecording(element);
- }
- }
- else if (input instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)getInput();
- Element element = attributeUse.getElement();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_USE_CHANGE"), element); //$NON-NLS-1$
- Iterator iter = xsdSchema.getAttributeDeclarations().iterator();
- while (iter.hasNext())
- {
- XSDAttributeDeclaration attr = (XSDAttributeDeclaration)iter.next();
- if (attr.getQName(xsdSchema).equals(newValue))
- {
- attributeUse.setAttributeDeclaration(attr);
- element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
- break;
- }
- }
-
- endRecording(element);
- }
- }
- }
-
- public void setEditorPart(IEditorPart editorPart)
- {
- this.editorPart = editorPart;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSectionDescriptor.java
deleted file mode 100644
index 8c11abb..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSectionDescriptor.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ReferenceSectionDescriptor extends AbstractSectionDescriptor implements ISectionDescriptor
-{
- ReferenceSection referenceSection;
-
- /**
- *
- */
- public ReferenceSectionDescriptor()
- {
- super();
- this.referenceSection = new ReferenceSection();
- }
-
-
- /**
- *
- */
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.wsdleditor.section.reference";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDNamedComponent.class);
- list.add(XSDElementDeclaration.class);
- list.add(XSDModelGroupDefinition.class);
- list.add(XSDAttributeDeclaration.class);
- list.add(XSDAttributeUse.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return referenceSection;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- if (part != null)
- {
- referenceSection.setEditorPart(part.getSite()
- .getWorkbenchWindow()
- .getActivePage()
- .getActiveEditor());
- }
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDNamedComponent)
- {
- XSDNamedComponent namedComponent = (XSDNamedComponent)object;
- Element element = namedComponent.getElement();
- if (element == null)
- {
- return false;
- }
- if (inputEquals(element, element.getLocalName(), true))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- else if (object instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)object;
- if (elementDeclaration.isElementDeclarationReference())
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- else if (object instanceof XSDAttributeDeclaration)
- {
- XSDAttributeDeclaration attr = (XSDAttributeDeclaration)object;
- if (attr.isAttributeDeclarationReference())
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- else if (object instanceof XSDModelGroupDefinition)
- {
- XSDModelGroupDefinition group = (XSDModelGroupDefinition)object;
- if (group.isModelGroupDefinitionReference())
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- else if (object instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)object;
- Element element = attributeUse.getElement();
- if (inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationDescriptor.java
deleted file mode 100644
index ca2200d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationDescriptor.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDRedefine;
-
-public class SchemaLocationDescriptor extends AbstractSectionDescriptor
-{
- SchemaLocationSection schemaLocationSection;
- /**
- *
- */
- public SchemaLocationDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.schemaLocationSection";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDConcreteComponent.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return schemaLocationSection;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
-
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDInclude || object instanceof XSDRedefine) {
- schemaLocationSection = new SchemaLocationSection();
- return true;
- }
- }
-
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentBaseTypeOptionsDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentBaseTypeOptionsDialog.java
deleted file mode 100644
index 2aa1a50..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentBaseTypeOptionsDialog.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class SimpleContentBaseTypeOptionsDialog extends TypesDialog
-{
- /**
- * @param parentShell
- * @param element
- * @param id
- * @param xsdSchema
- */
- public SimpleContentBaseTypeOptionsDialog(Shell parentShell, Element element, Object id, XSDSchema xsdSchema)
- {
- super(parentShell, element, id, xsdSchema);
- showAnonymous = false;
- }
-
- protected void ok()
- {
- TableItem[] items = table.getItems();
- int selection = table.getSelectionIndex();
- if (items != null && items.length > 0 && selection >= 0)
- {
- typeObject = items[selection].getData();
- }
- }
-
-
- public void handleSetInput()
- {
- XSDDOMHelper domHelper = new XSDDOMHelper();
- typeSection.getSimpleType().setSelection(false);
- typeSection.getUserSimpleType().setSelection(false);
- typeSection.getUserComplexType().setSelection(false);
- showAnonymous = false;
- if (element != null)
- {
- String derivedBy = domHelper.getDerivedByName(element);
- String baseType = domHelper.getBaseType(element);
- boolean derivedByRestriction = true;
-
- if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- typeSection.getSimpleType().setEnabled(false);
- typeSection.getUserSimpleType().setEnabled(false);
- typeSection.getUserComplexType().setSelection(true);
-
- previousType = 3;
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- typeSection.getSimpleType().setEnabled(false);
- typeSection.getUserSimpleType().setEnabled(false);
-
- if (derivedBy.equals("restriction"))
- {
- typeSection.getSimpleType().setEnabled(false);
- typeSection.getUserSimpleType().setEnabled(false);
- typeSection.getUserComplexType().setEnabled(true);
- }
- else if (derivedBy.equals("extension"))
- {
- derivedByRestriction = false;
- typeSection.getSimpleType().setEnabled(true);
- typeSection.getUserSimpleType().setEnabled(true);
- typeSection.getUserComplexType().setEnabled(true);
- }
- }
-
- if (derivedBy != null)
- {
- if (baseType != null && !baseType.equals(""))
- {
- Element parent = (Element)element.getParentNode();
- XSDConcreteComponent component = null;
- if (parent != null)
- {
- component = xsdSchema.getCorrespondingComponent(parent);
- }
- XSDTypeDefinition baseTypeDefinition = null;
- if (component instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)component;
- baseTypeDefinition = complexType.getBaseTypeDefinition();
- }
-
- if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(baseType) && !derivedByRestriction)
- {
- typeSection.getSimpleType().setSelection(true);
- populateBuiltInType();
- int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(baseType);
- table.setSelection(i);
- previousType = 1;
- }
- else if (baseTypeDefinition instanceof XSDSimpleTypeDefinition && !derivedByRestriction)
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(baseType);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 2;
- }
- else if (baseTypeDefinition instanceof XSDComplexTypeDefinition)
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(baseType);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 3;
- }
- }
- else
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- table.setSelection(0);
- }
- }
-
- }
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSection.java
deleted file mode 100644
index c69a73a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSection.java
+++ /dev/null
@@ -1,570 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class SimpleTypeSection extends AbstractSection
-{
- CCombo varietyCombo;
- Text typesText;
- CLabel typesLabel;
- Button button;
-
- /**
- *
- */
- public SimpleTypeSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- varietyCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
- CLabel label = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY")); //$NON-NLS-1$
-
- List list = XSDVariety.VALUES;
- Iterator iter = list.iterator();
- while (iter.hasNext())
- {
- varietyCombo.add(((XSDVariety)iter.next()).getName());
- }
- varietyCombo.addSelectionListener(this);
-
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(0, 0);
- varietyCombo.setLayoutData(data);
-
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(varietyCombo, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(varietyCombo, 0, SWT.CENTER);
- label.setLayoutData(data);
-
- typesText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
- typesLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
- button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
- button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-
- typesText.addListener(SWT.Modify, this);
-
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(button, 0, SWT.CENTER);
- typesText.setLayoutData(data);
-
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(typesText, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(button, 0, SWT.CENTER);
- typesLabel.setLayoutData(data);
-
- button.addSelectionListener(this);
- data = new FormData();
- data.left = new FormAttachment(typesText, 0);
- data.right = new FormAttachment(100,0);
- data.top = new FormAttachment(varietyCombo, +ITabbedPropertyConstants.VSPACE);
- button.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- setListenerEnabled(false);
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- Object input = getInput();
- varietyCombo.setText(""); //$NON-NLS-1$
- typesText.setText(""); //$NON-NLS-1$
- typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
- if (input != null)
- {
- if (input instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-
- Element simpleTypeElement = st.getElement();
- Element element = null;
- String variety = st.getVariety().getName();
-
- int intVariety = st.getVariety().getValue();
-
- if (variety != null)
- {
- varietyCombo.setText(variety);
- if (intVariety == XSDVariety.ATOMIC)
- {
- element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
-// if (element == null)
-// {
-// element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
-// if (element == null) return;
-// }
-
- if (element == null)
- {
- varietyCombo.setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE")); // "Select a simple type variety"); //$NON-NLS-1$
- }
- else
- {
- String result = element.getAttribute(XSDConstants.BASE_ATTRIBUTE);
- if (result == null)
- {
- typesText.setText("**anonymous**"); //$NON-NLS-1$
- }
- else
- {
- typesText.setText(result);
- }
- }
- typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
- }
- else if (intVariety == XSDVariety.LIST)
- {
- element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
- if (element != null)
- {
- String result = element.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
- if (result == null)
- {
- typesText.setText("**anonymous**"); //$NON-NLS-1$
- }
- else
- {
- typesText.setText(result);
- }
- }
- typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
- }
- else if (intVariety == XSDVariety.UNION)
- {
- Element unionElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.UNION_ELEMENT_TAG);
- if (unionElement != null)
- {
- String memberTypes = unionElement.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- if (memberTypes != null)
- {
- typesText.setText(memberTypes);
- }
- }
- typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
- }
- }
- }
- }
- setListenerEnabled(true);
- }
-
- /**
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e)
- {
- Object input = getInput();
- if (e.widget == varietyCombo)
- {
- if (input != null)
- {
- if (input instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
- Element parent = st.getElement();
-
- String variety = varietyCombo.getText();
- if (variety.equals(XSDVariety.ATOMIC_LITERAL.getName()))
- {
- typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
- st.setVariety(XSDVariety.ATOMIC_LITERAL);
- addCreateElementActionIfNotExist(XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), parent, null); //$NON-NLS-1$
- }
- else if (variety.equals(XSDVariety.UNION_LITERAL.getName()))
- {
- typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
- st.setVariety(XSDVariety.UNION_LITERAL);
- addCreateElementActionIfNotExist(XSDConstants.UNION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_UNION"), parent, null); //$NON-NLS-1$
- }
- else if (variety.equals(XSDVariety.LIST_LITERAL.getName()))
- {
- typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
- st.setVariety(XSDVariety.LIST_LITERAL);
- addCreateElementActionIfNotExist(XSDConstants.LIST_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LIST"), parent, null); //$NON-NLS-1$
- }
- }
- }
- }
- else if (e.widget == button)
- {
- Shell shell = Display.getCurrent().getActiveShell();
- Element element = ((XSDConcreteComponent)input).getElement();
- Dialog dialog = null;
- String property = "";
- Element secondaryElement = null;
-
- IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-
- XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, xsdSchema);
- dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
- provider.setDialog((XSDComponentSelectionDialog) dialog);
-
- if (input instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
- Element simpleTypeElement = st.getElement();
- if (st.getVariety() == XSDVariety.LIST_LITERAL)
- {
- Element listElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-// dialog = new TypesDialog(shell, listElement, XSDConstants.ITEMTYPE_ATTRIBUTE, xsdSchema);
-// dialog.showComplexTypes = false;
- provider.showComplexTypes(false);
-
- secondaryElement = listElement;
- property = XSDConstants.ITEMTYPE_ATTRIBUTE;
- }
- else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
- {
- Element derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
- if (derivedByElement == null)
- {
- derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
- if (derivedByElement == null) return;
- }
- if (derivedByElement != null)
- {
-// dialog = new TypesDialog(shell, derivedByElement, XSDConstants.BASE_ATTRIBUTE, xsdSchema);
-// dialog.showComplexTypes = false;
- provider.showComplexTypes(false);
-
- secondaryElement = derivedByElement;
- property = XSDConstants.BASE_ATTRIBUTE;
- }
- else
- {
- return;
- }
- }
- else if (st.getVariety() == XSDVariety.UNION_LITERAL)
- {
- SimpleContentUnionMemberTypesDialog unionDialog = new SimpleContentUnionMemberTypesDialog(shell, st);
- unionDialog.setBlockOnOpen(true);
- unionDialog.create();
-
- int result = unionDialog.open();
- if (result == Window.OK)
- {
- String newValue = unionDialog.getResult();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"), element); //$NON-NLS-1$
- Element unionElement = (Element)domHelper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
- unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
-
- if (newValue.length() > 0)
- {
- unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
- }
- else
- {
- unionElement.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- }
- endRecording(unionElement);
- if (doRefresh)
- {
- refresh();
- }
- }
- return;
- }
- else
- {
-// dialog = new TypesDialog(shell, element, "type", xsdSchema); //$NON-NLS-1$
- property = "type";
- }
- }
- else
- {
-// dialog = new TypesDialog(shell, element, "type", xsdSchema); //$NON-NLS-1$
- property = "type";
- }
- beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element); //$NON-NLS-1$
- dialog.setBlockOnOpen(true);
- dialog.create();
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- if (secondaryElement == null) {
- secondaryElement = element;
- }
- XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, xsdSchema);
- helper.setType(secondaryElement, property, ((XSDComponentSelectionDialog) dialog).getSelection());
-
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
- st.setElement(element);
- updateSimpleTypeFacets();
- }
- endRecording(element);
- }
- if (doRefresh)
- {
- refresh();
- }
- }
-
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
-
- protected boolean addCreateElementActionIfNotExist(String elementTag, String label, Element parent, Node relativeNode)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
- List attributes = new ArrayList();
- String reuseType = null;
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY_CHANGE"), parent); //$NON-NLS-1$
- if (elementTag.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
- {
- Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
- if (listNode != null)
- {
- reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
- XSDDOMHelper.removeNodeAndWhitespace(listNode);
- }
-
- Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
- if (unionNode != null)
- {
- String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- if (memberAttr != null)
- {
- StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
- reuseType = stringTokenizer.nextToken();
- }
- XSDDOMHelper.removeNodeAndWhitespace(unionNode);
- }
-
- if (reuseType == null)
- {
- reuseType = getBuiltInStringQName();
- }
- attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, reuseType));
- st.setItemTypeDefinition(null);
- }
- else if (elementTag.equals(XSDConstants.LIST_ELEMENT_TAG))
- {
- Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
- if (restrictionNode != null)
- {
- reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
- XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
- }
- Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
- if (unionNode != null)
- {
- String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- if (memberAttr != null)
- {
- StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
- reuseType = stringTokenizer.nextToken();
- }
- XSDDOMHelper.removeNodeAndWhitespace(unionNode);
- }
- attributes.add(new DOMAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, reuseType));
- }
- else if (elementTag.equals(XSDConstants.UNION_ELEMENT_TAG))
- {
- Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
- if (listNode != null)
- {
- reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
- XSDDOMHelper.removeNodeAndWhitespace(listNode);
- }
- Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
- if (restrictionNode != null)
- {
- reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
- XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
- }
- attributes.add(new DOMAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, reuseType));
- st.setItemTypeDefinition(null);
- }
-
- if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
- {
- Action action = addCreateElementAction(elementTag,label,attributes,parent,relativeNode);
- action.run();
- }
-
- st.setElement(parent);
-// st.updateElement();
- endRecording(parent);
- return true;
- }
-
- protected Action addCreateElementAction(String elementTag, String label, List attributes, Element parent, Node relativeNode)
- {
- CreateElementAction action = new CreateElementAction(label);
- action.setElementTag(elementTag);
- action.setAttributes(attributes);
- action.setParentNode(parent);
- action.setRelativeNode(relativeNode);
- return action;
- }
-
-
- protected Element getFirstChildNodeIfExists(Node parent, String elementTag, boolean isRef)
- {
- NodeList children = parent.getChildNodes();
- Element targetNode = null;
- for (int i=0; i < children.getLength(); i++)
- {
- Node child = children.item(i);
- if (child != null && child instanceof Element)
- {
- if (XSDDOMHelper.inputEquals((Element)child, elementTag, isRef))
- {
- targetNode = (Element)child;
- break;
- }
- }
- }
- return targetNode;
- }
-
- protected String getBuiltInStringQName()
- {
- String stringName = "string"; //$NON-NLS-1$
-
- if (getSchema() != null)
- {
- String schemaForSchemaPrefix = getSchema().getSchemaForSchemaQNamePrefix();
- if (schemaForSchemaPrefix != null && schemaForSchemaPrefix.length() > 0)
- {
- String prefix = getSchema().getSchemaForSchemaQNamePrefix();
- if (prefix != null && prefix.length() > 0)
- {
- stringName = prefix + ":" + stringName; //$NON-NLS-1$
- }
- }
- }
- return stringName;
- }
-
- private void updateSimpleTypeFacets()
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
- Element simpleTypeElement = st.getElement();
- Element derivedByElement = getDomHelper().getDerivedByElement(simpleTypeElement);
- if (derivedByElement != null)
- {
- List nodesToRemove = new ArrayList();
- NodeList childList = derivedByElement.getChildNodes();
- int length = childList.getLength();
- for (int i = 0; i < length; i++)
- {
- Node child = childList.item(i);
- if (child instanceof Element)
- {
- Element elementChild = (Element)child;
- if (!(elementChild.getLocalName().equals("pattern") || elementChild.getLocalName().equals("enumeration") || //$NON-NLS-1$
- XSDDOMHelper.inputEquals(elementChild, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(elementChild, XSDConstants.ANNOTATION_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true) ||
- XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true) ||
- XSDDOMHelper.inputEquals(elementChild, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false)
- ))
- {
- nodesToRemove.add(child);
- }
- }
- }
- Iterator iter = nodesToRemove.iterator();
- while (iter.hasNext())
- {
- Element facetToRemove = (Element)iter.next();
- String facetName = facetToRemove.getLocalName();
- Iterator it = st.getValidFacets().iterator();
- boolean doRemove = true;
- while (it.hasNext())
- {
- String aValidFacet = (String)it.next();
- if (aValidFacet.equals(facetName))
- {
- doRemove = false;
- break;
- }
- }
- if (doRemove)
- {
- XSDDOMHelper.removeNodeAndWhitespace(facetToRemove);
- }
- }
- }
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSectionDescriptor.java
deleted file mode 100644
index bd02dee..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSectionDescriptor.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-
-public class SimpleTypeSectionDescriptor extends AbstractSectionDescriptor
-{
-
- /**
- *
- */
- public SimpleTypeSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.simpletype";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDSimpleTypeDefinition.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new SimpleTypeSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- public String getAfterSection()
- {
- return "org.eclipse.wst.xsdeditor.section.name";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDSimpleTypeDefinition)
- {
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSection.java
deleted file mode 100644
index a4496dc..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSection.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class SimpleTypeUnionSection extends AbstractSection
-{
- Text memberTypesText;
- Button button;
-
- /**
- *
- */
- public SimpleTypeUnionSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- memberTypesText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
- CLabel label = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
- button = getWidgetFactory().createButton(composite, "...", SWT.PUSH); //$NON-NLS-1$
-
- memberTypesText.addListener(SWT.Modify, this);
-// memberTypesText.addSelectionListener(this);
-
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(95, 0);
- data.top = new FormAttachment(button, 0, SWT.CENTER);
- memberTypesText.setLayoutData(data);
-
-
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(memberTypesText, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(button, 0, SWT.CENTER);
- label.setLayoutData(data);
-
- button.addSelectionListener(this);
- data = new FormData();
- data.left = new FormAttachment(memberTypesText, +ITabbedPropertyConstants.HSPACE);
- data.right = new FormAttachment(100,0);
- // data.top = new FormAttachment(typeCombo, 0, SWT.CENTER);
- data.top = new FormAttachment(0,0);
- button.setLayoutData(data);
-
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- setListenerEnabled(false);
- Object input = getInput();
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- memberTypesText.setText(""); //$NON-NLS-1$
- if (input != null)
- {
- Element element = null;
- if (input instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
- element = st.getElement();
- Element unionElement = (Element)domHelper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
- String memberTypes = unionElement.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- if (memberTypes != null)
- {
- memberTypesText.setText(memberTypes);
- }
-
-// StringBuffer buf = new StringBuffer();
-// if (st.getMemberTypeDefinitions().size() > 0)
-// {
-// for (Iterator i = st.getMemberTypeDefinitions().iterator(); i.hasNext(); )
-// {
-// String name = ((XSDSimpleTypeDefinition)i.next()).getQName(getSchema());
-// if (name != null)
-// {
-// buf.append(name);
-// buf.append(" ");
-// }
-// }
-// }
-// memberTypesText.setText(buf.toString());
- }
- }
- setListenerEnabled(true);
- }
-
- /**
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == button)
- {
- Shell shell = Display.getCurrent().getActiveShell();
-
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
- Element element = st.getElement();
- SimpleContentUnionMemberTypesDialog dialog = new SimpleContentUnionMemberTypesDialog(shell, st);
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- int result = dialog.open();
- if (result == Window.OK)
- {
- String newValue = dialog.getResult();
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"), element); //$NON-NLS-1$
- Element unionElement = (Element)domHelper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
- unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
-
- if (newValue.length() > 0)
- {
- unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
- }
- else
- {
- unionElement.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- }
- endRecording(unionElement);
-
- }
-
- refresh();
- }
- }
-
- public void doHandleEvent(Event event)
- {
- if (event.widget == memberTypesText)
- {
- }
-
- }
-
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSectionDescriptor.java
deleted file mode 100644
index b1338ae..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSectionDescriptor.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public class SimpleTypeUnionSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public SimpleTypeUnionSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.simpletypeunion";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDSimpleTypeDefinition.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new SimpleTypeUnionSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TextChangeHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TextChangeHelper.java
deleted file mode 100644
index 0df6ffa..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TextChangeHelper.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-public abstract class TextChangeHelper implements Listener
-{
- private boolean nonUserChange;
-
- /**
- * Marks the start of a programmatic change to the widget contents.
- * Clients must call startNonUserChange() before directly setting
- * the widget contents to avoid unwanted lifecycle events.
- * @throws IllegalArgumentException if a programmatic change is
- * already in progress.
- */
- public void startNonUserChange() {
- if (nonUserChange)
- throw new IllegalStateException("we already started a non user change");//$NON-NLS-1$
- nonUserChange = true;
- }
-
- /**
- * Clients who call startNonUserChange() should call
- * finishNonUserChange() as soon as possible after the change is done.
- * @throws IllegalArgumentException if no change is in progress.
- */
- public void finishNonUserChange() {
- if (!nonUserChange)
- throw new IllegalStateException("we are not in a non user change");//$NON-NLS-1$
- nonUserChange = false;
- }
-
- /**
- * Returns true if a programmatic change is in progress.
- */
- public boolean isNonUserChange() {
- return nonUserChange;
- }
-
- /**
- * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
- */
- public void handleEvent(Event event) {
- switch (event.type) {
- case SWT.KeyDown :
- if (event.character == SWT.CR)
- textChanged((Control)event.widget);
- break;
- case SWT.FocusOut :
- textChanged((Control)event.widget);
- break;
- }
- }
-
- /**
- * Abstract method notified when a text field has been changed.
- * @param control
- */
- public abstract void textChanged(Control control);
-
- /**
- * Registers this helper with the given control to listen for events
- * which indicate that a change is in progress (or done).
- */
- public void startListeningTo(Control control) {
- control.addListener(SWT.FocusOut, this);
- control.addListener(SWT.Modify, this);
- }
-
- /**
- * Registers this helper with the given control to listen for the
- * Enter key. When Enter is pressed, the change is considered done
- * (this is only appropriate for single-line Text widgets).
- */
- public void startListeningForEnter(Control control) {
- // NOTE: KeyDown rather than KeyUp, because of similar usage in CCombo.
- control.addListener(SWT.KeyDown, this);
- }
-
- /**
- * Unregisters this helper from a control previously passed to
- * startListeningTo() and/or startListeningForEnter().
- */
- public void stopListeningTo(Control control) {
- control.removeListener(SWT.FocusOut, this);
- control.removeListener(SWT.Modify, this);
- control.removeListener(SWT.KeyDown, this);
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesDialog.java
deleted file mode 100644
index 1454b4d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesDialog.java
+++ /dev/null
@@ -1,721 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class TypesDialog extends Dialog implements SelectionListener, Listener
-{
- XSDSchema xsdSchema;
- String property;
-
- /**
- * @param parentShell
- */
- public TypesDialog(Shell parentShell, Element element, Object id, XSDSchema xsdSchema)
- {
- super(parentShell);
- setShellStyle(getShellStyle() | SWT.RESIZE);
- this.element = element;
- this.property = (String)id;
- this.element = element;
- this.xsdSchema = xsdSchema;
-
- if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
- {
- showComplexTypes = true;
- }
- else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(element, XSDConstants.LIST_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- showComplexTypes = false;
- }
- }
-
- String type;
- Object typeObject;
- Text textField;
- Table table;
- TableColumn tableColumn;
- Element element;
-
- boolean showComplexTypes = true;
- TypeSection typeSection;
- boolean showAnonymous = true;
- String previousStringType = "";
- boolean isAnonymous;
- int previousType;
-
- protected void configureShell(Shell shell)
- {
- super.configureShell(shell);
- }
-
- protected void buttonPressed(int buttonId)
- {
- if (buttonId == Dialog.OK)
- {
- type = table.getItem(table.getSelectionIndex()).getText();
- ok();
- }
- super.buttonPressed(buttonId);
- }
-
- public Object getTypeObject() { return typeObject; }
- public String getType() { return type; }
-
- //
- // Create the controls
- //
- public Control createDialogArea(Composite parent)
- {
- Composite client = (Composite)super.createDialogArea(parent);
- getShell().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_AVAILABLE_TYPES"));
-
- typeObject = null;
-
- GridLayout gl = new GridLayout(1, true);
-// gl.marginHeight = 0;
-// gl.marginWidth = 0;
-// gl.horizontalSpacing = 0;
-// gl.verticalSpacing = 0;
- client.setLayout(gl);
-
- GridData gd = new GridData();
- gd.grabExcessHorizontalSpace = true;
- gd.grabExcessVerticalSpace = true;
- gd.horizontalAlignment = GridData.FILL;
- gd.verticalAlignment = GridData.FILL;
- gd.horizontalIndent = 0;
- client.setLayoutData(gd);
-
- typeSection = new TypeSection(client);
- typeSection.setShowUserComplexType(showComplexTypes);
-
- typeSection.createClient(client);
- typeSection.getSimpleType().setSelection(false);
- typeSection.getSimpleType().addSelectionListener(this);
- typeSection.getUserSimpleType().addSelectionListener(this);
- if (showComplexTypes)
- {
- typeSection.getUserComplexType().addSelectionListener(this);
- }
-
- textField = ViewUtility.createTextField(client, 50);
- textField.addListener(SWT.Modify, this);
- ViewUtility.createVerticalFiller(client, 0);
-
- table = new Table(client,
- SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
- table.setHeaderVisible(false);
- table.setLinesVisible(true);
- table.addSelectionListener(this);
-
- GridData gd2 = new GridData();
- gd2.grabExcessHorizontalSpace = true;
- gd2.grabExcessVerticalSpace = true;
- gd2.horizontalAlignment = GridData.FILL;
- gd2.verticalAlignment = GridData.FILL;
- gd2.heightHint = 200;
- table.setLayoutData(gd2);
- table.addListener(SWT.Resize, this);
-
- tableColumn = new TableColumn(table, SWT.LEFT);
-// tableColumn.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
- tableColumn.setResizable(true);
- tableColumn.setWidth(200);
-
- // Fill table and select input type
- handleSetInput();
-
- return client;
- }
-
- public void handleEvent(Event event)
- {
- if (event.type == SWT.Resize && event.widget == table) {
- tableColumn.setWidth(table.getSize().x);
- }
- else if (event.type == SWT.Modify && event.widget == textField) {
- boolean showAll = false;
- String inputString = textField.getText();
-
- if (inputString.equals("")) {
- showAll = true;
- }
- else {
- inputString = insertString("*", ".", inputString);
- inputString = insertString("?", ".", inputString);
- inputString = inputString + ".*";
- }
-
- try {
- if (typeSection.getSimpleType().getSelection())
- {
- if (showAll) {
- populateBuiltInType();
- }
- else {
- populateBuiltInType(inputString);
- }
- }
- else if (typeSection.getUserComplexType().getSelection())
- {
- if (showAll) {
- populateUserComplexType();
- }
- else {
- populateUserComplexType(inputString);
- }
- }
- else if (typeSection.getUserSimpleType().getSelection())
- {
- if (showAll) {
- populateUserSimpleType();
- }
- else {
- populateUserSimpleType(inputString);
- }
- }
- }
- catch (Exception e) {
- // Do nothing
- }
- }
-
- setEnabledState();
- }
-
- private void setEnabledState() {
- if (table.getSelectionIndex() != -1) {
- this.getButton(IDialogConstants.OK_ID).setEnabled(true);
- }
- else {
- this.getButton(IDialogConstants.OK_ID).setEnabled(false);
- }
- }
-
- private String insertString(String target, String newString, String string) {
- StringBuffer stringBuffer = new StringBuffer(string);
-
- int index = stringBuffer.indexOf(target);
- while (index != -1) {
- stringBuffer = stringBuffer.insert(index, newString);
- index = stringBuffer.indexOf(target, index + newString.length() + target.length());
- }
-
- return stringBuffer.toString();
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
- {
- if (textField.getText().equals("")) {
- populateBuiltInType();
- }
- else {
- populateBuiltInType(textField.getText());
- }
- }
- else if (e.widget == typeSection.getUserComplexType() && typeSection.getUserComplexType().getSelection())
- {
- if (textField.getText().equals("")) {
- populateUserComplexType();
- }
- else {
- populateUserComplexType(textField.getText());
- }
- }
- else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
- {
- if (textField.getText().equals("")) {
- populateUserSimpleType();
- }
- else {
- populateUserSimpleType(textField.getText());
- }
- }
- setEnabledState();
- }
-
- public void widgetDefaultSelected(SelectionEvent e)
- {
- }
-
- protected void ok()
- {
- TableItem[] items = table.getItems();
- int selection = table.getSelectionIndex();
- if (items != null && items.length > 0 && selection >= 0)
- {
- typeObject = items[selection].getData();
- }
-// System.out.println("typeObject is " + typeObject);
-
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
-// beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-// doSetValue(typeObject);
-// applyEditorValueAndDeactivate();
-// dialog.close();
-
- if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
- {
- if (typeObject.equals("**anonymous**"))
- {
- if (typeSection.getUserSimpleType().getSelection())
- {
-// if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- }
- }
- else
- {
-// if (!previousStringType.equals("**anonymous**"))
- {
- updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- }
- // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
- element.removeAttribute(property);
- }
- else
- {
- XSDDOMHelper.updateElementToNotAnonymous(element);
- //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
- element.setAttribute(property, typeObject.toString());
- }
- }
-// endRecording(element);
-
- //implement dispose();
-// table.removeAll();
-// table.dispose();
- }
-
-
- public void handleSetInput()
- {
- table.removeAll();
- isAnonymous = checkForAnonymousType(element);
- // Attr attr = element.getAttributeNode(XSDConstants.TYPE_ATTRIBUTE);
- Attr attr = element.getAttributeNode(property);
- if (attr != null)
- {
- String value = attr.getValue();
- if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getSimpleType().setSelection(true);
- populateBuiltInType();
- int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(value);
- table.setSelection(i);
- previousType = 1;
- }
- else if (typeSection.getUserSimpleTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(value);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 2;
- }
- else if (typeSection.getUserComplexTypeNamesList(xsdSchema).contains(value))
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(value);
- if (showAnonymous)
- {
- table.setSelection(i + 1);
- }
- else
- {
- table.setSelection(i);
- }
- previousType = 3;
- }
- else // if it is type="" for an empty list of simple types
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- previousType = 2;
- }
- }
- else
- {
- if (isAnonymous)
- {
- if (isSTAnonymous(element))
- {
- typeSection.getUserSimpleType().setSelection(true);
- populateUserSimpleType();
- previousType = 2;
- }
- else
- {
- typeSection.getUserComplexType().setSelection(true);
- populateUserComplexType();
- previousType = 3;
- }
- table.setSelection(0); // anonymous
- // typeSection.getTypeList().setText("**anonymous**");
- }
- else
- {
- typeSection.getSimpleType().setSelection(true);
- populateBuiltInType();
- table.setSelection(0);
-
- // typeSection.getTypeList().setEnabled(true);
- // typeSection.getSimpleType().setSelection(true);
- // typeSection.populateBuiltInType(xsdSchema);
- // typeSection.getTypeList().setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE"));
- previousType = 1;
- }
- }
- if (table.getSelection() != null && table.getSelection().length > 0)
- {
- previousStringType = (table.getSelection()[0]).getText();
- }
- }
-
- public void populateBuiltInType()
- {
- table.removeAll();
- List items = getBuiltInTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- public void populateBuiltInType(String fragment)
- {
- table.removeAll();
- List items = getBuiltInTypeNamesList();
- fragment = fragment.toLowerCase();
- Pattern regex = Pattern.compile(fragment);
-
- for (int i = 0; i < items.size(); i++)
- {
- String itemString = items.get(i).toString().toLowerCase();
- Matcher m = regex.matcher(itemString);
-
- if (itemString.startsWith(fragment) || m.matches()) {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- table.select(0);
- }
-
- public void populateUserComplexType()
- {
- table.removeAll();
- if (showAnonymous)
- {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- List items = getUserComplexTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
-// System.out.println("item " + i + " is " + item);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
- item.setData(items.get(i));
- }
- }
-
- public void populateUserComplexType(String fragment)
- {
- table.removeAll();
- fragment = fragment.toLowerCase();
- Pattern regex = java.util.regex.Pattern.compile(fragment);
-
- if (showAnonymous)
- {
- Matcher m = regex.matcher("**anonymous**");
- if ("**anonymous**".startsWith(fragment) || m.matches()) {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- }
- List items = getUserComplexTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- String itemString = items.get(i).toString().toLowerCase();
- Matcher m = regex.matcher(itemString);
-
- if (itemString.startsWith(fragment) || m.matches()) {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
- item.setData(items.get(i));
- }
- }
-
- table.select(0);
- }
-
- public void populateUserSimpleType()
- {
- table.removeAll();
- if (showAnonymous)
- {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- List items = getUserSimpleTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- public void populateUserSimpleType(String fragment)
- {
- table.removeAll();
- fragment = fragment.toLowerCase();
- Pattern regex = java.util.regex.Pattern.compile(fragment);
-
- if (showAnonymous)
- {
- Matcher m = regex.matcher("**anonymous**");
- if ("**anonymous**".startsWith(fragment) || m.matches()) {
- TableItem anonymousItem = new TableItem(table, SWT.NONE);
- anonymousItem.setText("**anonymous**");
- anonymousItem.setData("**anonymous**");
- }
- }
- List items = getUserSimpleTypeNamesList();
- for (int i = 0; i < items.size(); i++)
- {
- String itemString = items.get(i).toString().toLowerCase();
- Matcher m = regex.matcher(itemString);
-
- if (itemString.startsWith(fragment) || m.matches()) {
- TableItem item = new TableItem(table, SWT.NONE);
- item.setText(items.get(i).toString());
- item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
- item.setData(items.get(i));
- }
- }
-
- table.select(0);
- }
-
- boolean checkForAnonymousType(Element element)
- {
- /*
- * Using Ed's model to check boolean isAnonymous = false;
- *
- * XSDConcreteComponent component =
- * getXSDSchema().getCorrespondingComponent(element); if (component
- * instanceof XSDElementDeclaration) { XSDElementDeclaration xsdElem =
- * (XSDElementDeclaration)component; isAnonymous =
- * xsdElem.isSetAnonymousTypeDefinition(); } return isAnonymous;
- */
- XSDDOMHelper helper = new XSDDOMHelper();
- boolean isAnonymous = false;
- Node aNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- return true;
- }
- aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- isAnonymous = true;
- }
- return isAnonymous;
- }
-
- void updateElementToAnonymous(Element element, String xsdType)
- {
- String prefix = element.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
- XSDDOMHelper.updateElementToNotAnonymous(element);
- Element childNode = null;
- if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
- {
- childNode = element.getOwnerDocument().createElementNS(
- XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
- prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
- {
- childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-
- Element restrictionNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
- restrictionNode.setAttribute(XSDConstants.BASE_ATTRIBUTE, prefix + "string");
- childNode.appendChild(restrictionNode);
- }
- if (childNode != null)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node annotationNode = helper.getChildNode(element, XSDConstants.ANNOTATION_ELEMENT_TAG);
- if (annotationNode == null)
- {
- Node firstChild = element.getFirstChild();
- element.insertBefore(childNode, firstChild);
- }
- else
- {
- Node nextSibling = annotationNode.getNextSibling();
- element.insertBefore(childNode, nextSibling);
- }
- XSDDOMHelper.formatChild(childNode);
- }
- }
-
- boolean isSTAnonymous(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node aNode = helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- if (XSDDOMHelper.inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
- {
- return true;
- }
- }
- return false;
- }
-
- boolean isCTAnonymous(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
- {
- return true;
- }
- }
- return false;
- }
-
- XSDTypeDefinition getAnonymousTypeDefinition(Element element)
- {
- XSDDOMHelper helper = new XSDDOMHelper();
- Node typeDefinitionNode =
- helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (typeDefinitionNode == null)
- {
- typeDefinitionNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- }
- if (typeDefinitionNode != null)
- {
- XSDConcreteComponent component =
- xsdSchema.getCorrespondingComponent(typeDefinitionNode);
- if (component instanceof XSDTypeDefinition)
- {
- return (XSDTypeDefinition) component;
- }
- }
- return null;
- }
-
- public java.util.List getBuiltInTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getBuiltInTypeNamesList();
- }
-
- public java.util.List getUserSimpleTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getUserSimpleTypeNamesList();
- }
-
- public java.util.List getUserComplexTypeNamesList()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
- return helper.getUserComplexTypeNamesList();
- }
-
- protected boolean hasElementChildren(Node parentNode)
- {
- boolean hasChildrenElements = false;
- if (parentNode != null && parentNode.hasChildNodes())
- {
- NodeList nodes = parentNode.getChildNodes();
- for (int i = 0; i < nodes.getLength(); i++)
- {
- if (nodes.item(i) instanceof Element)
- {
- hasChildrenElements = true;
- break;
- }
- }
- }
- return hasChildrenElements;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSection.java
deleted file mode 100644
index 3381d16..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSection.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class TypesSection extends AbstractSection
-{
- Text typeCombo;
- Button button;
-
- String type;
- Object typeObject;
- CLabel typeLabel;
- Table table;
- TypeSection typeSection;
- boolean showAnonymous = true;
- String previousStringType = "";
- boolean isAnonymous;
- int previousType;
- boolean showComplexTypes = true;
-
- /**
- *
- */
- public TypesSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- composite = getWidgetFactory().createFlatFormComposite(parent);
-
- FormData data;
-
- typeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
- typeCombo.setEditable(false);
- typeCombo.addListener(SWT.Modify, this);
-
- button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
- button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-
- typeLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_TYPE") + ":"); //$NON-NLS-1$
-
- button.addSelectionListener(this);
- FormData data2 = new FormData();
- data2.left = new FormAttachment(100, -rightMarginSpace + 2);
- data2.right = new FormAttachment(100,0);
- data2.top = new FormAttachment(typeCombo, 0, SWT.CENTER);
- button.setLayoutData(data2);
-
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(button, 0);
- typeCombo.setLayoutData(data);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- Object input = getInput();
- if (isReadOnly)
- {
- composite.setEnabled(false);
- }
- else
- {
- composite.setEnabled(true);
- }
- typeCombo.setText(""); //$NON-NLS-1$
- if (input != null)
- {
- Element element = null;
- if (input instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElem = (XSDElementDeclaration)input;
- element = xsdElem.getElement();
- XSDTypeDefinition typeDef = xsdElem.getTypeDefinition();
- boolean isAnonymous = xsdElem.isAbstract();
-
- if (isAnonymous)
- {
- typeCombo.setText("**anonymous**"); //$NON-NLS-1$
- }
- else
- {
- String typeName = ""; //$NON-NLS-1$
- if (typeDef != null)
- {
- typeName = typeDef.getQName(getSchema());
- if (typeName == null)
- {
- typeName = ""; //$NON-NLS-1$
- }
- typeCombo.setText(typeName);
- }
- else
- {
- typeCombo.setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE")); //$NON-NLS-1$
- }
- }
- }
- else if (input instanceof XSDAttributeDeclaration)
- {
- element = ((XSDAttributeDeclaration)input).getElement();
- }
- else if (input instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)input;
- XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
- element = attribute.getElement();
- }
- else if (input instanceof Element)
- {
- element = (Element)input;
- }
-// else if (input instanceof XSDSimpleTypeDefinition)
-// {
-// XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-// Element simpleTypeElement = st.getElement();
-// if (st.getVariety() == XSDVariety.LIST_LITERAL)
-// {
-// element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-// String result = element.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
-// if (result == null)
-// {
-// typeCombo.setText("**anonymous**");
-// }
-// else
-// {
-// typeCombo.setText(result);
-// }
-// typeLabel.setText("Item Type:");
-// }
-// else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
-// {
-// typeLabel.setText("Base Type:");
-// element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
-// if (element == null)
-// {
-// element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
-// if (element == null) return;
-// }
-//
-// String result = element.getAttribute(XSDConstants.BASE_ATTRIBUTE);
-// if (result == null)
-// {
-// typeCombo.setText("");
-// }
-// else
-// {
-// typeCombo.setText(result);
-// }
-// }
-// return;
-// }
-
- typeLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_TYPE") + ":"); //$NON-NLS-1$
- if (element != null)
- {
- boolean isAnonymous = checkForAnonymousType(element);
- String result = element.getAttribute(XSDConstants.TYPE_ATTRIBUTE);
- if (isAnonymous)
- {
- typeCombo.setText("**anonymous**"); //$NON-NLS-1$
- }
- if (result != null && result.equals("")) //$NON-NLS-1$
- {
- typeCombo.setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE")); //$NON-NLS-1$
- }
- else if (result != null)
- {
- typeCombo.setText(result);
- }
-
- }
- }
- }
-
- /**
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
- */
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == button)
- {
-/*
- Shell shell = Display.getCurrent().getActiveShell();
- Object input = getInput();
- Element element = ((XSDConcreteComponent)getInput()).getElement();
- TypesDialog dialog;
-
-// if (input instanceof XSDSimpleTypeDefinition)
-// {
-// XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-// Element simpleTypeElement = st.getElement();
-// if (st.getVariety() == XSDVariety.LIST_LITERAL)
-// {
-// Element listElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-// dialog = new TypesDialog(shell, listElement, XSDConstants.ITEMTYPE_ATTRIBUTE, xsdSchema);
-// dialog.showComplexTypes = false;
-// }
-// else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
-// {
-// Element derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
-// if (derivedByElement == null)
-// {
-// derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
-// if (derivedByElement == null) return;
-// }
-// if (derivedByElement != null)
-// {
-// dialog = new TypesDialog(shell, derivedByElement, XSDConstants.BASE_ATTRIBUTE, xsdSchema);
-// }
-// else
-// {
-// return;
-// }
-// }
-// else
-// {
-// dialog = new TypesDialog(shell, element, "type", xsdSchema);
-// }
-// }
-// else
-// {
- dialog = new TypesDialog(shell, element, "type", xsdSchema); //$NON-NLS-1$
-// }
-
- dialog.setBlockOnOpen(true);
- dialog.create();
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- Object typeObject = dialog.getType();
-// if (input instanceof XSDSimpleTypeDefinition)
-// {
-// XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-// Element simpleTypeElement = st.getElement();
-// Element listElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-//
-// beginRecording("ItemType Change", element);
-// listElement.setAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, (String)typeObject);
-// endRecording(element);
-// }
- }
-*/
- Shell shell = Display.getCurrent().getActiveShell();
- IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-
- Object input = getInput();
- XSDSchema schema = null;
- if (input instanceof XSDConcreteComponent) {
- schema = ((XSDConcreteComponent) input).getSchema();
- }
-
- XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
- XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider); // TODO: Externalize This
- if (input instanceof XSDAttributeDeclaration)
- {
- provider.showComplexTypes(false);
- }
- provider.setDialog(dialog);
-
- dialog.setBlockOnOpen(true);
- dialog.create();
-
- if (dialog.open() == Window.OK) {
- Element element = ((XSDConcreteComponent)getInput()).getElement();
- XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
- helper.setType(element, "type", dialog.getSelection());
- }
-
-// refresh();
- }
- }
-
-
-
- boolean checkForAnonymousType(Element element)
- {
- /* Using Ed's model to check
- boolean isAnonymous = false;
-
- XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
- if (component instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
- isAnonymous = xsdElem.isSetAnonymousTypeDefinition();
- }
- return isAnonymous;
- */
-
- boolean isAnonymous = false;
-
- Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- return true;
- }
- aNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
- if (aNode != null)
- {
- isAnonymous = true;
- }
- return isAnonymous;
- }
-
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSectionDescriptor.java
deleted file mode 100644
index 3e9b8bf..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSectionDescriptor.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class TypesSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public TypesSectionDescriptor()
- {
- super();
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
- */
- public String getId()
- {
- return "org.eclipse.wst.xsdeditor.section.types";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDElementDeclaration.class);
- list.add(XSDAttributeDeclaration.class);
- list.add(XSDAttributeUse.class);
- list.add(XSDSimpleTypeDefinition.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new TypesSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)object;
- if (elementDeclaration.isElementDeclarationReference())
- {
- return false;
- }
- return true;
- }
- else if (object instanceof XSDAttributeDeclaration)
- {
- XSDAttributeDeclaration attr = (XSDAttributeDeclaration)object;
- if (attr.isAttributeDeclarationReference())
- {
- return false;
- }
- return true;
- }
- else if (object instanceof XSDAttributeUse)
- {
- XSDAttributeUse attributeUse = (XSDAttributeUse)object;
- Element element = attributeUse.getElement();
- if (inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSection.java
deleted file mode 100644
index d72ed50..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSection.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDEnumerationFacet;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ValueSection extends AbstractSection
-{
- Text valueText;
- /**
- *
- */
- public ValueSection()
- {
- super();
- }
-
- /**
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
- */
- public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
- {
- super.createControls(parent, factory);
- Composite composite = getWidgetFactory().createFlatFormComposite(parent);
- FormData data;
-
- valueText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
- data = new FormData();
- data.left = new FormAttachment(0, 100);
- data.right = new FormAttachment(100, 0);
- data.top = new FormAttachment(0, 0);
- valueText.setLayoutData(data);
- valueText.addListener(SWT.Modify, this);
-
- CLabel valueLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_VALUE") + ":"); //$NON-NLS-1$
- data = new FormData();
- data.left = new FormAttachment(0, 0);
- data.right = new FormAttachment(valueText, -ITabbedPropertyConstants.HSPACE);
- data.top = new FormAttachment(valueText, 0, SWT.CENTER);
- valueLabel.setLayoutData(data);
-
-// listener.startListeningForEnter(valueText);
-// listener.startListeningTo(valueText);
- }
-
- /*
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
- */
- public void refresh()
- {
- setListenerEnabled(false);
- Object input = getInput();
- valueText.setText(""); //$NON-NLS-1$
- if (input != null)
- {
- if (input instanceof XSDEnumerationFacet)
- {
- XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)input;
- Element element = enumFacet.getElement();
- String value = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
-
- if (value != null)
- {
- valueText.setText(value);
- }
- }
- }
- setListenerEnabled(true);
- }
-
- public void doHandleEvent(Event event)
- {
- if (event.widget == valueText)
- {
- Object input = getInput();
- if (input instanceof XSDEnumerationFacet)
- {
- XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)input;
- Element element = enumFacet.getElement();
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), element); //$NON-NLS-1$
- String value = valueText.getText();
- element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, value);
- endRecording(element);
- }
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
- */
- public boolean shouldUseExtraSpace()
- {
- return false;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSectionDescriptor.java
deleted file mode 100644
index e8f0b48..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSectionDescriptor.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDEnumerationFacet;
-
-public class ValueSectionDescriptor extends AbstractSectionDescriptor
-{
- /**
- *
- */
- public ValueSectionDescriptor()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
- */
- public List getInputTypes()
- {
- List list = new ArrayList();
- list.add(XSDEnumerationFacet.class);
- return list;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
- */
- public ISection getSectionClass()
- {
- return new ValueSection();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
- */
- public String getTargetTab()
- {
- return "org.eclipse.wst.xmlwebservices.general";
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
- */
- public boolean appliesTo(IWorkbenchPart part, ISelection selection)
- {
- Object object = null;
- if (selection instanceof StructuredSelection)
- {
- StructuredSelection structuredSelection = (StructuredSelection)selection;
- object = structuredSelection.getFirstElement();
- if (object instanceof XSDEnumerationFacet)
- {
- return true;
- }
- }
- return false;
- }
-
- public String getAfterSection()
- {
- return "org.eclipse.wst.xsdeditor.section.name";
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/WindowUtility.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/WindowUtility.java
deleted file mode 100644
index 9cc0e4d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/WindowUtility.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.properties.section;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-
-class WindowUtility
-{
- public static Object getSelection(ISelection selection)
- {
- if (selection == null)
- {
- return null;
- } // end of if ()
-
- Object result = null;
- if (selection instanceof IStructuredSelection)
- {
- IStructuredSelection es= (IStructuredSelection)selection;
- Iterator i= es.iterator();
- if (i.hasNext())
- {
- result= i.next();
- }
- }
- return result;
- }
-
- public static List getSelectionList(ISelection selection)
- {
- List result = null;
- if (selection != null)
- {
- if (selection instanceof IStructuredSelection)
- {
- IStructuredSelection es= (IStructuredSelection)selection;
- result = new Vector();
- for (Iterator i= es.iterator(); i.hasNext(); )
- {
- result.add(i.next());
- }
- }
- }
- return result;
- }
-
- public static void openErrorCreatingFile(Shell shell, IResource resource)
- {
- String title = null;
- String briefMessage = null;
- String reason = null;
- String details = null;
-
-// KCPort TODO
-// title = B2BGUIPlugin.getInstance().getString("_UI_ERROR_CREATING_FILE_TITLE");
-// briefMessage = B2BGUIPlugin.getInstance().getString("_UI_ERROR_CREATING_FILE_SHORT_DESC", resource.getName());
-// details = B2BGUIPlugin.getInstance().getString("_UI_ERROR_CREATING_FILE_LONG_DESC", resource.getLocation().toOSString());
-//
-// IResource parent = resource.getParent();
-// if (parent != null)
-// {
-// if (parent.isReadOnly())
-// {
-// reason = B2BGUIPlugin.getInstance().getString("_UI_PARENT_FOLDER_IS_READ_ONLY", parent.getName());
-// }
-// else
-// {
-// // on windows the isReadOnly() = false for read only shared directory... so we give a hint
-// reason = B2BGUIPlugin.getInstance().getString("_UI_UNKNOWN_ERROR_WITH_HINT", parent.getName());
-// }
-// }
-//
-// if (reason == null)
-// {
-// reason = B2BGUIPlugin.getInstance().getString("_UI_UNKNOWN_ERROR");
-// }
-
- openError(shell, title, briefMessage, reason, details);
- }
-
- public static void openError(Shell shell, String title, String briefMessage, String reason, String detailedMessage)
- {
- ErrorDialog.openError(shell, title, briefMessage, createStatus(reason, detailedMessage));
- }
-
- private static IStatus createStatus(String reason, String msg)
- {
-// KCPort TODO
-// String pluginId = B2BGUIPlugin.getInstance().getDescriptor().getUniqueIdentifier();
- String pluginId = "";
- MultiStatus multiStatus = new MultiStatus(pluginId, 0, reason, null);
- Status status = new Status(IStatus.ERROR, pluginId, 0, msg, null);
- multiStatus.add(status);
- return multiStatus;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionDescriptorProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionDescriptorProvider.java
deleted file mode 100644
index 54acd8c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionDescriptorProvider.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptorProvider;
-
-
-public class XSDSectionDescriptorProvider implements ISectionDescriptorProvider
-{
- /**
- *
- */
- public XSDSectionDescriptorProvider()
- {
- super();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptorProvider#getSectionDescriptors()
- */
- public ISectionDescriptor[] getSectionDescriptors()
- {
- ISectionDescriptor[] descriptors = new ISectionDescriptor[18];
- descriptors[0] = new NameSectionDescriptor();
- descriptors[1] = new TypesSectionDescriptor();
- descriptors[2] = new OtherAttributesSectionDescriptor();
- descriptors[3] = new AttributesViewSectionDescriptor();
- descriptors[4] = new ModelGroupSectionDescriptor();
- descriptors[5] = new NamespaceProcessContentsSectionDescriptor();
- descriptors[6] = new ReferenceSectionDescriptor();
- descriptors[7] = new ComplexTypeSectionDescriptor();
- descriptors[8] = new ValueSectionDescriptor();
- descriptors[9] = new PatternSectionDescriptor();
- descriptors[10] = new AnnotationSectionDescriptor();
- descriptors[11] = new SimpleTypeSectionDescriptor();
- descriptors[12] = new FacetsSectionDescriptor();
- descriptors[13] = new EnumerationsSectionDescriptor();
- descriptors[14] = new NamespaceSectionDescriptor();
- descriptors[15] = new SchemaLocationDescriptor();
- descriptors[16] = new NamespaceAndSchemaLocationDescriptor();
- descriptors[17] = new MinMaxSectionDescriptor();
-
-// descriptors[18] = new SimpleTypeUnionSectionDescriptor();
-// descriptors[19] = new FixedDefaultSectionDescriptor();
- return descriptors;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java
deleted file mode 100644
index 77bebed..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.w3c.dom.Element;
-
-
-public class XSDSectionLabelProvider extends LabelProvider
-{
- /**
- *
- */
- public XSDSectionLabelProvider()
- {
- super();
- }
-
- /**
- * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
- */
- public Image getImage(Object object)
- {
- if (object == null || object.equals(StructuredSelection.EMPTY)) {
- return null;
- }
- Image result = null;
- if (object instanceof StructuredSelection)
- {
- Object selected = ((StructuredSelection)object).getFirstElement();
-
- if (selected instanceof XSDConcreteComponent)
- {
- IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
- IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
- IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
- if (editorPart instanceof XSDEditor)
- {
- return ((XSDEditor)editorPart).getLabelProvider().getImage((XSDConcreteComponent)selected);
- }
- }
-
-// selected = typeMapper.remapObject(selected);
-// ModelAdapter modelAdapter = adapterFactory.getAdapter(selected);
-// if (modelAdapter != null)
-// {
-// result = (Image)modelAdapter.getProperty(selected, ModelAdapter.IMAGE_PROPERTY);
-// }
- }
- return result;
- }
-
- /**
- * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
- */
- public String getText(Object object)
- {
- if (object == null || object.equals(StructuredSelection.EMPTY))
- {
- return "No items selected";
- }
-
- String result = null;
-
- boolean isReference = false;
- Object selected = null;
- if (object instanceof StructuredSelection)
- {
- selected = ((StructuredSelection)object).getFirstElement();
-
- if (selected instanceof XSDConcreteComponent)
- {
- if (selected instanceof XSDElementDeclaration)
- {
- XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)selected;
- if (xsdElementDeclaration.isElementDeclarationReference())
- {
- isReference = true;
- }
- }
- else if (selected instanceof XSDAttributeDeclaration)
- {
- if (((XSDAttributeDeclaration)selected).isAttributeDeclarationReference())
- {
- isReference = true;
- }
- }
- else if (selected instanceof XSDModelGroupDefinition)
- {
- if (((XSDModelGroupDefinition)selected).isModelGroupDefinitionReference())
- {
- isReference = true;
- }
- }
- StringBuffer sb = new StringBuffer();
- Element element = ((XSDConcreteComponent)selected).getElement();
- if (element != null)
- {
- sb.append(((XSDConcreteComponent)selected).getElement().getLocalName());
-
- if (isReference)
- {
- sb.append(" ");
- sb.append(XSDEditorPlugin.getXSDString("_UI_PAGE_HEADING_REFERENCE"));
- }
-
- if (!(element instanceof IDOMNode))
- {
- sb.append(" (" + XSDEditorPlugin.getXSDString("_UI_LABEL_READ_ONLY") + ")"); //$NON-NLS-1$
- }
- return sb.toString();
- }
- else
- {
- return "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_READ_ONLY") + ")"; //$NON-NLS-1$
- }
- }
-
-// selected = typeMapper.remapObject(selected);
-//
-// ModelAdapter modelAdapter = adapterFactory.getAdapter(selected);
-// if (modelAdapter != null)
-// {
-// // result = (String)modelAdapter.getProperty(selected, ModelAdapter.LABEL_PROPERTY);
-// result = ((WSDLElement)selected).getElement().getLocalName();
-// }
- if (object instanceof Element)
- {
- return ((Element)object).getLocalName();
- }
- }
- else if (object instanceof TextSelection)
- {
- }
-
-
- return result;
- }
-
- /**
- * Determine if a multiple object selection has been passed to the
- * label provider. If the objects is a IStructuredSelection, see if
- * all the objects in the selection are the same and if so, we want
- * to provide labels for the common selected element.
- * @param objects a single object or a IStructuredSelection.
- * @param multiple first element in the array is true if there is multiple
- * unequal selected elements in a IStructuredSelection.
- * @return the object to get labels for.
- */
- private Object getObject(Object objects, boolean multiple[]) {
- Assert.isNotNull(objects);
- Object object = null;
- return object;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java
deleted file mode 100644
index 97810d0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.xsd.ui.internal.XSDSelectionManager;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-
-public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage
- implements ISelectionChangedListener, INotifyChangedListener
-{
- XSDSchema xsdSchema;
- private XSDSelectionManager selectionManager;
- private XSDModelAdapterFactoryImpl adapterFactory;
- /**
- * @param tabbedPropertySheetPageContributor
- */
- public XSDTabbedPropertySheetPage(ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor)
- {
- super(tabbedPropertySheetPageContributor);
- }
-
- public void init(IPageSite pageSite)
- {
- super.init(pageSite);
- getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
- }
-
- public void setXSDSchema(XSDSchema xsdSchema)
- {
- this.xsdSchema = xsdSchema;
- }
-
- public void setXSDModelAdapterFactory(XSDModelAdapterFactoryImpl adapterFactory) {
- // disconnect from old one
- if (adapterFactory != null) {
- adapterFactory.removeListener(this);
- }
-
- this.adapterFactory = adapterFactory;
-
- // connect to new one
- if (adapterFactory != null) {
- adapterFactory.addListener(this);
- }
- }
-
- public void setSelectionManager(XSDSelectionManager newSelectionManager)
- {
- // disconnect from old one
- if (selectionManager != null)
- {
- selectionManager.removeSelectionChangedListener(this);
- }
-
- selectionManager = newSelectionManager;
-
- // connect to new one
- if (selectionManager != null)
- {
- selectionManager.addSelectionChangedListener(this);
- }
- }
-
- public void selectionChanged(IWorkbenchPart part, ISelection selection)
- {
- // override for category
- if (selection != null)
- {
- if (selection instanceof IStructuredSelection)
- {
- IStructuredSelection structuredSelection = (IStructuredSelection) selection;
- if (structuredSelection.isEmpty())
- {
- return;
- }
- Object obj = structuredSelection.getFirstElement();
- if (obj instanceof Element)
- {
- try
- {
- Object modelObject = xsdSchema.getCorrespondingComponent((Element) obj);
- if (modelObject != null)
- {
- obj = modelObject;
- selection = new StructuredSelection(obj);
- }
- }
- catch (Exception e)
- {
- }
- }
- else if (obj instanceof Text)
- {
- Node parent = ((Text)obj).getParentNode();
- Object modelObject = xsdSchema.getCorrespondingComponent(parent);
- if (modelObject != null)
- {
- obj = modelObject;
- selection = new StructuredSelection(obj);
- }
- }
- else if (obj instanceof CategoryAdapter)
- {
- selection = new StructuredSelection(((CategoryAdapter)obj).getXSDSchema());
- }
- else if (obj instanceof Category)
- {
- selection = new StructuredSelection(((Category)obj).getXSDSchema());
- }
- else if (obj instanceof ProcessingInstruction)
- {
- selection = new StructuredSelection(xsdSchema);
- }
- }
- else if (selection instanceof TextSelection)
- {
- return;
- }
- }
- super.selectionChanged(part, selection);
- }
-
- public void selectionChanged(SelectionChangedEvent event)
- {
- if (!event.getSelection().isEmpty())
- {
- selectionChanged(getSite().getWorkbenchWindow().getActivePage().getActivePart(), event.getSelection());
- //super.selectionChanged(getSite().getWorkbenchWindow().getActivePage().getActivePart(), event.getSelection());
- }
- }
-
- public void dispose()
- {
- if (selectionManager != null)
- {
- selectionManager.removeSelectionChangedListener(this);
- }
- if (adapterFactory != null)
- {
- adapterFactory.removeListener(this);
- }
- getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this);
- super.dispose();
- }
-
- public void notifyChanged(Notification notification)
- {
- if (getCurrentTab() != null)
- {
- refresh();
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbook.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbook.java
deleted file mode 100644
index 9c43704..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbook.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-
-public class XSDWorkbook {
- private CTabFolder tabFolder;
- private CTabItem selectedTab;
-/**
- * Workbook constructor comment.
- */
-public XSDWorkbook(Composite parent, int style) {
- tabFolder = new CTabFolder(parent, style);
-
- tabFolder.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent event) {
- CTabItem newSelectedTab = (CTabItem) event.item;
- if (selectedTab == newSelectedTab) // Do nothing if the selection did not change.
- return;
-
- if (selectedTab != null && (!selectedTab.isDisposed())) {
- XSDWorkbookPage selectedPage = getWorkbookPage(selectedTab);
- if (!selectedPage.deactivate()) {
- // tabFolder.setSelection(new CTabItem[] {selectedTab});
- tabFolder.setSelection(selectedTab);
- return;
- }
- }
-
- selectedTab = newSelectedTab;
- XSDWorkbookPage newSelectedPage = getWorkbookPage(newSelectedTab);
- if (newSelectedPage != null)
- newSelectedPage.activate();
-
- }
- });
-
-}
-public XSDWorkbookPage getSelectedPage() {
-
- int index = tabFolder.getSelectionIndex();
- if (index == -1) // When can this be -1
- return null;
-
- CTabItem selectedItem = tabFolder.getItem(index);
-
- return (XSDWorkbookPage)selectedItem.getData();
-}
-public CTabFolder getTabFolder() {
-
- return tabFolder;
-
-}
-protected XSDWorkbookPage getWorkbookPage(CTabItem item) {
-
- try {
- return (XSDWorkbookPage) item.getData();
- } catch (ClassCastException e) {
- return null;
- }
-}
-public XSDWorkbookPage[] getWorkbookPages() {
-
- CTabItem[] tabItems = tabFolder.getItems();
- int nItems = tabItems.length;
- XSDWorkbookPage[] workbookPages = new XSDWorkbookPage[nItems];
- for (int i = 0; i < nItems; i++)
- workbookPages[i] = getWorkbookPage(tabItems[i]);
- return workbookPages;
-}
-public void setSelectedPage (XSDWorkbookPage workbookPage)
-{
- CTabItem newSelectedTab = workbookPage.getTabItem();
-
- if (selectedTab == newSelectedTab)
- return;
-
- selectedTab = newSelectedTab;
- workbookPage.activate();
- // tabFolder.setSelection(new CTabItem[] {newSelectedTab});
- tabFolder.setSelection(newSelectedTab);
-
-}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbookPage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbookPage.java
deleted file mode 100644
index f865afa..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbookPage.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-public abstract class XSDWorkbookPage {
- public CTabItem tabItem;
-/**
- * WorkbookPage constructor comment.
- */
-public XSDWorkbookPage(XSDWorkbook parent) {
- CTabFolder folder = parent.getTabFolder();
- tabItem = new CTabItem(folder,SWT.NONE);
- tabItem.setData(this);
-}
-public void activate() {
-
- if (tabItem.getControl() == null)
- tabItem.setControl(createControl(tabItem.getParent()));
-
-}
-protected abstract Control createControl (Composite parent);
-public boolean deactivate() {
- return true;
-}
-public void dispose() {
-
- if (tabItem == null)
- return;
-
- CTabItem oldItem = tabItem;
- tabItem = null;
- oldItem.dispose();
-}
-public CTabItem getTabItem() {
- return tabItem;
-}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/CategoryAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/CategoryAdapter.java
deleted file mode 100644
index 3182e9a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/CategoryAdapter.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class CategoryAdapter // extends ItemProvider
- implements ILabelProvider, IChangeNotifier, ITreeContentProvider
-{
-
- protected String text;
-
- /**
- * This is the image returned by {@link #getImage getImage(Object)}.
- */
- protected Image image;
-
- /**
- * This is the parent returned by {@link #getParent getParent(Object)}.
- */
- protected Object parent;
-
- public CategoryAdapter(String label, Image image, Collection children, XSDSchema xsdSchema, int groupType)
- {
-// super(label, image, xsdSchema);
- this.text = label;
- this.image = image;
- this.parent = xsdSchema;
- this.xsdSchema = xsdSchema;
- this.children = children;
- this.groupType = groupType;
- }
-
- public final static int ATTRIBUTES = 1;
- public final static int ELEMENTS = 2;
- public final static int TYPES = 3;
- public final static int GROUPS = 5;
- public final static int DIRECTIVES = 6;
- public final static int NOTATIONS = 7;
- public final static int ATTRIBUTE_GROUPS = 8;
- public final static int IDENTITY_CONSTRAINTS = 9;
- public final static int ANNOTATIONS = 10;
-
- protected int groupType;
- Collection children;
- XSDSchema xsdSchema;
-
- public XSDSchema getXSDSchema()
- {
- return xsdSchema;
- }
-
- public int getGroupType()
- {
- return groupType;
- }
-
-// public boolean hasChildren(Object o)
-// {
-// return !children.isEmpty();
-// }
-
-// public Collection getChildren(Object o)
-// {
-// return children;
-// }
-
- public Image getImage(Object element)
- {
- return image;
- }
-
- public String getText(Object object)
- {
- // return object.toString();
- return text;
- }
-
- public void addListener(ILabelProviderListener listener)
- {
-
- }
-
- public boolean isLabelProperty(Object element, String property)
- {
- return false;
- }
-
- public void removeListener(ILabelProviderListener listener)
- {
-
- }
-
- public void fireNotifyChanged(Notification notification)
- {
-
- }
-
- /**
- * This adds another listener.
- */
- public void addListener(INotifyChangedListener notifyChangedListener)
- {
-
- }
-
- /**
- * This removes a listener.
- */
- public void removeListener(INotifyChangedListener notifyChangedListener)
- {
-
- }
-
- public void dispose()
- {
-
- }
-
- public Object[] getElements(Object inputElement)
- {
- return getChildren(inputElement);
- }
-
- public Object[] getChildren(Object parentElement)
- {
- return children.toArray();
- }
-
- public void setChildren(Collection list)
- {
- children = list;
- }
-
- public Object getParent(Object element)
- {
- return xsdSchema;
- }
-
- public boolean hasChildren(Object element)
- {
- return true;
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
-
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAbstractAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAbstractAdapter.java
deleted file mode 100644
index 8233c5e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAbstractAdapter.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.edit.provider.ChangeNotifier;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-
-public class XSDAbstractAdapter extends AdapterImpl
- implements ITreeContentProvider, ILabelProvider, IChangeNotifier
-{
-
- protected AdapterFactory adapterFactory;
- /**
- *
- */
- public XSDAbstractAdapter(AdapterFactory adapterFactory)
- {
- super();
- this.adapterFactory = adapterFactory;
- }
-
- /**
- * The adapter factory is used as the type key.
- * This returns true, only if this adapter was created by the given factory.
- */
- public boolean isAdapterForType(Object type)
- {
- return type == adapterFactory;
- }
-
- public Image getImage(Object element)
- {
- return null;
- }
-
- public String getText(Object object)
- {
- return object.toString();
- }
-
- public void addListener(ILabelProviderListener listener)
- {
-
- }
-
- public boolean isLabelProperty(Object element, String property)
- {
- return false;
- }
-
- public void removeListener(ILabelProviderListener listener)
- {
-
- }
-
- public Object[] getChildren(Object parentElement)
- {
- List list = new ArrayList();
- return list.toArray();
- }
-
- public boolean hasChildren(Object object)
- {
- return false;
- }
-
- public Object getParent(Object object)
- {
- return null;
- }
-
- public Object[] getElements(Object inputElement)
- {
- return getChildren(inputElement);
- }
-
- public void dispose()
- {
-
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
-
- }
-
- /**
- * This is used to implement {@link IChangeNotifier}.
- */
- protected IChangeNotifier changeNotifier;
-
-
- public void notifyChanged(Notification msg)
- {
- if (msg.getEventType() != Notification.RESOLVE)
- {
- fireNotifyChanged(msg);
- }
- }
-
- /**
- * This calls {@link org.eclipse.emf.edit.provider.INotifyChangedListener#notifyChanged notifyChanged} for each listener.
- */
- public void fireNotifyChanged(Notification notification)
- {
- if (changeNotifier != null)
- {
- changeNotifier.fireNotifyChanged(notification);
- }
-
- if (adapterFactory instanceof IChangeNotifier)
- {
- IChangeNotifier changeNotifier = (IChangeNotifier)adapterFactory;
- changeNotifier.fireNotifyChanged(notification);
- }
- }
-
-
- /**
- * This adds another listener.
- */
- public void addListener(INotifyChangedListener notifyChangedListener)
- {
- if (changeNotifier == null)
- {
- changeNotifier = new ChangeNotifier();
- }
- changeNotifier.addListener(notifyChangedListener);
-
- }
-
- /**
- * This removes a listener.
- */
- public void removeListener(INotifyChangedListener notifyChangedListener)
- {
- if (changeNotifier != null)
- {
- changeNotifier.removeListener(notifyChangedListener);
- }
-
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAdapterFactoryLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAdapterFactoryLabelProvider.java
deleted file mode 100644
index 6cf228e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAdapterFactoryLabelProvider.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.swt.graphics.Image;
-
-public class XSDAdapterFactoryLabelProvider implements ILabelProvider, INotifyChangedListener, ITableLabelProvider {
- protected XSDModelAdapterFactoryImpl adapterFactory;
- protected Collection labelProviderListeners;
-
- /**
- *
- */
- public XSDAdapterFactoryLabelProvider(XSDModelAdapterFactoryImpl adapterFactory) {
- this.adapterFactory = adapterFactory;
- labelProviderListeners = new ArrayList();
- }
-
- /**
- * Return the wrapped AdapterFactory.
- */
- public AdapterFactory getAdapterFactory() {
- return adapterFactory;
- }
-
- /**
- * Set the wrapped AdapterFactory.
- */
- public void setAdapterFactory(XSDModelAdapterFactoryImpl adapterFactory) {
- if (this.adapterFactory instanceof IChangeNotifier) {
- ((IChangeNotifier) this.adapterFactory).removeListener(this);
- }
-
- if (adapterFactory instanceof IChangeNotifier) {
- ((IChangeNotifier) adapterFactory).addListener(this);
- }
-
- this.adapterFactory = adapterFactory;
- }
-
- /**
- * Since we won't ever generate these notifications, we can just ignore
- * this.
- */
- public void addListener(ILabelProviderListener listener) {
- labelProviderListeners.add(listener);
- }
-
- /**
- * Since we won't ever add listeners, we can just ignore this.
- */
- public void removeListener(ILabelProviderListener listener) {
- labelProviderListeners.remove(listener);
- }
-
- /**
- * This discards the content provider and removes this as a listener to
- * the {@link #adapterFactory}.
- */
- public void dispose() {
- if (this.adapterFactory instanceof IChangeNotifier) {
- ((IChangeNotifier) adapterFactory).removeListener(this);
- }
- }
-
- /**
- * This always returns true right now.
- */
- public boolean isLabelProperty(Object object, String id) {
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
- */
- public Image getImage(Object object) {
- ILabelProvider labelProvider = (ILabelProvider) adapterFactory.adapt(object, ILabelProvider.class);
-
- return labelProvider != null ? labelProvider.getImage(object) : null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
- */
- public String getText(Object object) {
- // Get the adapter from the factory.
- //
- ILabelProvider labelProvider = (ILabelProvider) adapterFactory.adapt(object, ILabelProvider.class);
-
- return labelProvider != null ? labelProvider.getText(object) : object == null ? "" : object.toString();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.emf.edit.provider.INotifyChangedListener#notifyChanged(org.eclipse.emf.common.notify.Notification)
- */
- public void notifyChanged(Notification notification) {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
- * int)
- */
- public Image getColumnImage(Object element, int columnIndex) {
- return getImage(element);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
- * int)
- */
- public String getColumnText(Object element, int columnIndex) {
- return getText(element);
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAnnotationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAnnotationAdapter.java
deleted file mode 100644
index b57a4c5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAnnotationAdapter.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class XSDAnnotationAdapter extends XSDAbstractAdapter
-{
- public XSDAnnotationAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object element)
- {
- return XSDEditorPlugin.getPlugin().getImage("icons/XSDAnnotate.gif");
- }
-
- public String getText(Object object)
- {
- XSDAnnotation xsdAnnotation = ((XSDAnnotation)object);
- String result = "";
- List userInformation = xsdAnnotation.getUserInformation();
- if (!userInformation.isEmpty())
- {
- Element element = (Element)userInformation.get(0);
- if (element.hasAttribute(XSDConstants.SOURCE_ATTRIBUTE))
- {
- result = element.getAttribute(XSDConstants.SOURCE_ATTRIBUTE);
- }
- else
- {
- org.w3c.dom.Node text = element.getFirstChild();
- while (text instanceof Element)
- {
- text = ((Element)text).getFirstChild();
- }
- if (text != null && text.getNodeValue() != null)
- {
- result = text.getNodeValue();
- result = result.trim();
- if (result.length() > 50)
- {
- result = result.substring(0, 50) + "...";
- }
- }
- }
- }
-
- return result;
- }
-
- public Object[] getChildren(Object parentElement)
- {
- return null;
- }
-
- public boolean hasChildren(Object object)
- {
- return true;
- }
-
- public Object getParent(Object object)
- {
- XSDAnnotation element = (XSDAnnotation)object;
- return element.getContainer();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeDeclarationAdapter.java
deleted file mode 100644
index 330925f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeDeclarationAdapter.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public class XSDAttributeDeclarationAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDAttributeDeclarationAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object object)
- {
- XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)object);
- XSDAttributeDeclaration resolvedAttributeDeclaration = xsdAttributeDeclaration.getResolvedAttributeDeclaration();
-
- if (resolvedAttributeDeclaration.getContainer() == null)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
- }
- // if (xsdAttributeDeclaration.getResolvedAttributeDeclaration() == xsdAttributeDeclaration)
- if (xsdAttributeDeclaration.isAttributeDeclarationReference())
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDAttributeRef.gif");
- }
- else
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
- }
-
-// return
-// XSDEditorPlugin.getPlugin().getIconImage
-// (resolvedAttributeDeclaration.getContainer() == null ?
-// "full/obj16/XSDAttributeUnresolved" :
-// xsdAttributeDeclaration.getResolvedAttributeDeclaration() == xsdAttributeDeclaration ?
-// "full/obj16/XSDAttributeDeclaration" :
-// "full/obj16/XSDAttributeUse");
- }
-
- public String getText(Object object)
- {
- XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)object);
- XSDAttributeDeclaration resolvedAttributeDeclaration = xsdAttributeDeclaration.getResolvedAttributeDeclaration();
- String name =
- xsdAttributeDeclaration != resolvedAttributeDeclaration ?
- xsdAttributeDeclaration.getQName() :
- xsdAttributeDeclaration.getName();
-
- StringBuffer result = new StringBuffer();
- if (name == null)
- {
- result.append("'absent'");
- }
- else
- {
- result.append(name);
- }
-
- if (resolvedAttributeDeclaration.getAnonymousTypeDefinition() == null && resolvedAttributeDeclaration.getTypeDefinition() != null)
- {
- result.append(" : ");
- result.append(resolvedAttributeDeclaration.getTypeDefinition().getQName(xsdAttributeDeclaration));
- }
-
- return result.toString();
- }
-
- public Object[] getChildren(Object parentElement)
- {
- XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)parentElement;
- List list = new ArrayList();
-
- XSDTypeDefinition type = xsdAttributeDeclaration.getAnonymousTypeDefinition();
- if (type != null)
- {
- list.add(type);
- }
- return list.toArray();
- }
-
- public boolean hasChildren(Object object)
- {
- return true;
- }
-
- public Object getParent(Object object)
- {
- XSDAttributeDeclaration element = (XSDAttributeDeclaration)object;
- return element.getContainer();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeGroupDefinitionAdapter.java
deleted file mode 100644
index a45588e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeGroupDefinitionAdapter.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-
-public class XSDAttributeGroupDefinitionAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDAttributeGroupDefinitionAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object object)
- {
- XSDAttributeGroupDefinition xsdAttributeGroupDefinition = ((XSDAttributeGroupDefinition)object);
-
- if (xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference())
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroupRef.gif");
- }
- else
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroup.gif");
- }
- }
-
- public String getText(Object object)
- {
- XSDAttributeGroupDefinition xsdAttributeGroupDefinition = ((XSDAttributeGroupDefinition)object);
- String result =
- xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference() ?
- xsdAttributeGroupDefinition.getQName() :
- xsdAttributeGroupDefinition.getName();
- return result == null ? "'absent'" : result;
- }
-
- public Object[] getChildren(Object parentElement)
- {
- XSDAttributeGroupDefinition xsdAttributeGroup = (XSDAttributeGroupDefinition)parentElement;
- List list = new ArrayList();
- list.addAll(xsdAttributeGroup.getContents());
-// Iterator i = xsdAttributeGroup.getContents().iterator();
-// while (i.hasNext())
-// {
-// XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent)i.next();
-// if (attrGroupContent instanceof XSDAttributeUse)
-// {
-// list.add(((XSDAttributeUse)attrGroupContent).getAttributeDeclaration());
-// }
-// else
-// {
-// list.add(attrGroupContent);
-// }
-// }
-
- XSDWildcard wildcard = xsdAttributeGroup.getAttributeWildcardContent();
- if (wildcard != null)
- {
- list.add(wildcard);
- }
- return list.toArray();
- }
-
- public boolean hasChildren(Object object)
- {
- return true;
- }
-
- public Object getParent(Object object)
- {
- XSDAttributeGroupDefinition element = (XSDAttributeGroupDefinition)object;
- return element.getContainer();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeUseAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeUseAdapter.java
deleted file mode 100644
index 5c8c127..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeUseAdapter.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-
-public class XSDAttributeUseAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDAttributeUseAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- protected XSDAttributeDeclaration getDelegate(XSDAttributeUse xsdAttributeUse)
- {
- return xsdAttributeUse.getContent();
- }
-
- /**
- * This returns XSDAttributeUse.gif.
- */
- public Image getImage(Object object)
- {
- XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
-
- XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
- if (xsdAttributeDeclaration.isAttributeDeclarationReference())
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDAttributeRef.gif");
- }
- else
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
- }
- //return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDAttributeUse");
-
- }
-
- public String getText(Object object)
- {
- return getText(object, true);
- }
-
- public String getText(Object object, boolean showType)
- {
- XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
- XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
- if (xsdAttributeDeclaration.isAttributeDeclarationReference())
- {
- return xsdAttributeDeclaration.getResolvedAttributeDeclaration().getName();
- }
- StringBuffer result = new StringBuffer();
- if (xsdAttributeDeclaration != null)
- {
- result.append(xsdAttributeDeclaration.getName());
- }
-
- if (xsdAttributeUse.isSetConstraint())
- {
- if (result.length() != 0)
- {
- result.append(" ");
- }
- result.append('<');
- result.append(xsdAttributeUse.getConstraint());
- result.append("=\"");
- result.append(xsdAttributeUse.getLexicalValue());
- result.append("\">");
- }
-
- return result.toString();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDComplexTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDComplexTypeDefinitionAdapter.java
deleted file mode 100644
index 38f7351..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDComplexTypeDefinitionAdapter.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.xsd.XSDComplexTypeContent;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class XSDComplexTypeDefinitionAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDComplexTypeDefinitionAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object object)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
-// XSDComplexTypeDefinition xsdComplexTypeDefinition = ((XSDComplexTypeDefinition)object);
-// return
-// XSDEditorPlugin.getPlugin().getIconImage
-// (xsdComplexTypeDefinition.getContainer() == null ?
-// "full/obj16/XSDComplexTypeDefinitionUnresolved" :
-// "full/obj16/XSDComplexTypeDefinition");
- }
-
- public String getText(Object object)
- {
- return getText(object, true);
- }
-
- public String getText(Object object, boolean showType)
- {
- XSDComplexTypeDefinition xsdComplexTypeDefinition = ((XSDComplexTypeDefinition)object);
-
- StringBuffer result = new StringBuffer();
-
- result.append
- (xsdComplexTypeDefinition.getName() == null ?
- // xsdComplexTypeDefinition.getAliasName() :
- "local type" :
- xsdComplexTypeDefinition.getName());
-
- if (showType)
- {
- XSDTypeDefinition baseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
- if (baseTypeDefinition != null &&
- baseTypeDefinition != xsdComplexTypeDefinition.getContent() &&
- baseTypeDefinition.getName() != null &&
- !XSDConstants.isURType(baseTypeDefinition))
- {
- result.append(" : ");
- result.append(baseTypeDefinition.getQName(xsdComplexTypeDefinition));
- }
- }
-
- return result.toString();
- }
-
- public Object[] getChildren(Object parentElement)
- {
- XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)parentElement;
- List list = new ArrayList();
-
- if (xsdComplexTypeDefinition.getContent() != null)
- {
- XSDComplexTypeContent xsdComplexTypeContent = xsdComplexTypeDefinition.getContent();
- if (xsdComplexTypeContent instanceof XSDParticle)
- {
- list.add(((XSDParticle)xsdComplexTypeContent).getContent());
- }
- }
-
-// if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowInherited())
-// {
-// if (xsdComplexTypeDefinition.getSyntheticParticle() != null)
-// {
-// XSDTypeDefinition type = xsdComplexTypeDefinition.getBaseTypeDefinition();
-// list.addAll(XSDChildUtility.getModelChildren(type));
-// }
-// if (xsdComplexTypeDefinition.getSyntheticWildcard() != null)
-// {
-// list.add(xsdComplexTypeDefinition.getSyntheticWildcard());
-// }
-// }
-
-// List attributes = xsdComplexTypeDefinition.getAttributeContents();
-// if (attributes.size() > 0)
-// {
-// list.addAll(attributes);
-// }
-
-// list = new ArrayList();
- if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowInherited())
- {
- if (xsdComplexTypeDefinition.getDerivationMethod().getName().equals("extension"))
- {
- XSDTypeDefinition type = xsdComplexTypeDefinition.getBaseTypeDefinition();
- Iterator iter = XSDChildUtility.getModelChildren(type).iterator();
- boolean cont = true;
- while (cont)
- {
- while (iter.hasNext())
- {
- list.add(0, iter.next());
- }
-
- if (type instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)type;
- type = ctd.getBaseTypeDefinition();
-
- // defect 264957 - workbench hangs when modifying complex content
- // Since we don't filter out the current complexType from
- // the combobox, we can potentially have an endless loop
- if (ctd == type)
- {
- cont = false;
- break;
- }
-
- if (ctd.getDerivationMethod().getName().equals("extension"))
- {
- iter = XSDChildUtility.getModelChildren(type).iterator();
- }
- else
- {
- cont = false;
- }
- }
- else
- {
- cont = false;
- }
- }
-
- }
-
-
-// list.addAll(XSDChildUtility.getModelChildren(baseType));
- }
-
-// list.addAll(XSDChildUtility.getModelChildren(xsdComplexTypeDefinition));
-
- return list.toArray();
-
- }
-
- public boolean hasChildren(Object object)
- {
- return true;
- }
-
- public Object getParent(Object object)
- {
- XSDComplexTypeDefinition element = (XSDComplexTypeDefinition)object;
- return element.getContainer();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDContentProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDContentProvider.java
deleted file mode 100644
index c00e2ff..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDContentProvider.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDWildcard;
-import org.w3c.dom.Node;
-
-public class XSDContentProvider implements ITreeContentProvider, INotifyChangedListener
-{
- XSDModelAdapterFactoryImpl xsdModelAdapterFactory;
-
- public XSDContentProvider(XSDModelAdapterFactoryImpl xsdModelAdapterFactoryImpl)
- {
- this.xsdModelAdapterFactory = xsdModelAdapterFactoryImpl;
-
- if (xsdModelAdapterFactory instanceof IChangeNotifier)
- {
- ((IChangeNotifier)xsdModelAdapterFactory).addListener(this);
- }
- }
-
- /*
- * @see ITreeContentProvider#getChildren(Object)
- */
- public Object[] getChildren(Object parentElement)
- {
- XSDConcreteComponent xsdComp = null;
- List list = null;
-
- // root/input is structuredmodel
- if (parentElement instanceof IDOMModel) {
- IDOMDocument domDoc = ((IDOMModel) parentElement).getDocument();
- if (domDoc != null) {
- XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
- /*
- * ISSUE: Didn't want to go through initializing
- * schema if it does not already exist, so just
- * attempted to get existing adapter. If doesn't
- * exist, just don't bother working.
- */
- if (modelAdapter != null)
- xsdComp = modelAdapter.getSchema();
- if (xsdComp != null) {
- xsdModelAdapterFactory.adapt(xsdComp, xsdModelAdapterFactory);
-
- list = new ArrayList();
- list.add(xsdComp);
- return list.toArray();
- }
- }
- }
- else if (parentElement instanceof XSDConcreteComponent)
- {
- xsdComp = (XSDConcreteComponent)parentElement;
- list = new ArrayList();
- }
- else if (parentElement instanceof ITreeItemContentProvider)
- {
- return ((ITreeItemContentProvider)parentElement).getChildren(parentElement).toArray();
- }
- else if (parentElement instanceof ITreeContentProvider)
- {
- return ((ITreeContentProvider)parentElement).getChildren(parentElement);
- }
-
- if (xsdComp != null)
- {
- XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(xsdComp, xsdModelAdapterFactory);
-
- if (xsdComp instanceof XSDElementDeclaration || xsdComp instanceof XSDModelGroup || xsdComp instanceof XSDWildcard)
- {
- xsdModelAdapterFactory.adapt(((XSDParticleContent)xsdComp).getContainer(), xsdModelAdapterFactory);
- }
-
- if (a != null)
- {
- Object [] obj = a.getChildren(xsdComp);
- if (obj != null)
- {
- list = Arrays.asList(obj);
- }
- }
- }
-
- list = list != null ? list : Collections.EMPTY_LIST;
- return list.toArray();
- }
-
- /*
- * @see ITreeContentProvider#getParent(Object)
- */
- public Object getParent(Object element)
- {
- if (element instanceof Node)
- {
- return ((Node)element).getParentNode();
- }
- else if (element instanceof XSDConcreteComponent)
- {
- return ((XSDConcreteComponent)element).getContainer();
- }
- return null;
- }
-
- /*
- * @see ITreeContentProvider#hasChildren(Object)
- */
- public boolean hasChildren(Object element)
- {
- Object[] children = getChildren(element);
- return children != null && children.length > 0;
- }
-
- /*
- * @see IStructuredContentProvider#getElements(Object)
- */
- public Object[] getElements(Object inputElement)
- {
- return getChildren(inputElement);
- }
-
- public void notifyChanged(Notification notification)
- {
- if (viewer != null)
- {
- if (viewer instanceof StructuredViewer)
- {
- if (notification.getFeature() instanceof EAttribute)
- {
- ((StructuredViewer)viewer).update(notification.getNotifier(), null);
- }
- else
- {
- ((StructuredViewer)viewer).refresh(notification.getNotifier());
- }
- }
- else
- {
- viewer.refresh();
- }
- }
-
- }
-
- /*
- * @see IContentProvider#dispose()
- */
- public void dispose()
- {
- viewer = null;
- xsdModelAdapterFactory.removeListener(this);
- }
-
- protected Viewer viewer = null;
-
- /*
- * @see IContentProvider#inputChanged(Viewer, Object, Object)
- */
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
- {
- this.viewer = viewer;
- }
-
- /**
- * Gets the xsd schema from document
- *
- * @param document
- * @return XSDSchema or null of one does not exist yet for document
- */
- private XSDSchema getXSDSchema(IDocument document) {
- XSDSchema schema = null;
- IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(document);
- if (model != null) {
- try {
- if (model instanceof IDOMModel) {
- IDOMDocument domDoc = ((IDOMModel) model).getDocument();
- if (domDoc != null) {
- XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
- /*
- * ISSUE: Didn't want to go through initializing
- * schema if it does not already exist, so just
- * attempted to get existing adapter. If doesn't
- * exist, just don't bother working.
- */
- if (modelAdapter != null)
- schema = modelAdapter.getSchema();
- }
- }
- }
- finally {
- model.releaseFromRead();
- }
- }
- return schema;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDElementDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDElementDeclarationAdapter.java
deleted file mode 100644
index f273ccf..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDElementDeclarationAdapter.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDElementDeclarationAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDElementDeclarationAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object element)
- {
- XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)element);
-
- if (!xsdElementDeclaration.isElementDeclarationReference())
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
- }
- else
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDElementRef.gif");
- }
- }
-
- public String getText(Object object)
- {
- XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)object);
- XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
- String name =
- xsdElementDeclaration != resolvedElementDeclaration ?
- xsdElementDeclaration.getQName() :
- xsdElementDeclaration.getName();
-
- StringBuffer result = new StringBuffer();
- if (name == null)
- {
- result.append("'absent'");
- }
- else
- {
- result.append(name);
- }
-
- if (!xsdElementDeclaration.isGlobal())
- {
- Element element = xsdElementDeclaration.getElement();
- boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
- boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-
- if (hasMinOccurs || hasMaxOccurs)
- {
- result.append(" [");
- if (hasMinOccurs)
- {
- int min = ((XSDParticle)xsdElementDeclaration.getContainer()).getMinOccurs();
- if (min == XSDParticle.UNBOUNDED)
- {
- result.append("*");
- }
- else
- {
- result.append(String.valueOf(min));
- }
- }
- else // print default
- {
- int min = ((XSDParticle)xsdElementDeclaration.getContainer()).getMinOccurs();
- result.append(String.valueOf(min));
- }
- if (hasMaxOccurs)
- {
- int max = ((XSDParticle)xsdElementDeclaration.getContainer()).getMaxOccurs();
- result.append("..");
- if (max == XSDParticle.UNBOUNDED)
- {
- result.append("*");
- }
- else
- {
- result.append(String.valueOf(max));
- }
- }
- else // print default
- {
- result.append("..");
- int max = ((XSDParticle)xsdElementDeclaration.getContainer()).getMaxOccurs();
- result.append(String.valueOf(max));
-
- }
- result.append("]");
- }
- }
-
- if (resolvedElementDeclaration.getAnonymousTypeDefinition() == null && resolvedElementDeclaration.getTypeDefinition() != null)
- {
- result.append(" : ");
- result.append(resolvedElementDeclaration.getTypeDefinition().getQName(xsdElementDeclaration));
- }
-
- return result.toString();
- }
-
- public Object[] getChildren(Object parentElement)
- {
- XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)parentElement;
- List list = new ArrayList();
- XSDTypeDefinition type = null;
- if (xsdElementDeclaration.isElementDeclarationReference())
- {
- if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowReferences())
- {
- type = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
- }
- }
- else
- {
- type = xsdElementDeclaration.getAnonymousTypeDefinition();
- if (type == null)
- {
- if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowReferences())
- {
- type = xsdElementDeclaration.getTypeDefinition();
- }
- }
- }
-
- if (type != null && type instanceof XSDComplexTypeDefinition)
- {
- XSDComplexTypeDefinition ctType = (XSDComplexTypeDefinition)type;
- if (ctType != null)
- {
- list.add(ctType);
- }
- }
-
-// if (xsdElementDeclaration.getIdentityConstraintDefinitions() != null)
-// {
-// list.addAll(xsdElementDeclaration.getIdentityConstraintDefinitions());
-// }
-
-// return XSDChildUtility.getModelChildren(xsdElementDeclaration.getResolvedElementDeclaration()).toArray();
- return list.toArray();
-
- }
-
- public boolean hasChildren(Object object)
- {
- return true;
- }
-
- public Object getParent(Object object)
- {
- XSDElementDeclaration element = (XSDElementDeclaration)object;
- return element.getContainer();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelAdapterFactoryImpl.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelAdapterFactoryImpl.java
deleted file mode 100644
index 4b64fce..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelAdapterFactoryImpl.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.edit.provider.ChangeNotifier;
-import org.eclipse.emf.edit.provider.Disposable;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.IDisposable;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDAdapterFactory;
-import org.eclipse.xsd.util.XSDSwitch;
-
-public class XSDModelAdapterFactoryImpl extends XSDAdapterFactory
- implements IChangeNotifier, IDisposable
-{
- static XSDModelAdapterFactoryImpl instance;
-
- public static XSDModelAdapterFactoryImpl getInstance()
- {
- if (instance == null)
- {
- instance = new XSDModelAdapterFactoryImpl();
- }
- return instance;
- }
-
- protected IChangeNotifier changeNotifier = new ChangeNotifier();
-
- protected Disposable disposable = new Disposable();
-
- protected Collection supportedTypes = new ArrayList();
-
- protected boolean showReferences = false;
- protected boolean showInherited = false;
-
- /**
- *
- */
- public XSDModelAdapterFactoryImpl()
- {
- super();
- supportedTypes.add(ILabelProvider.class);
- }
-
- public void setShowReferences(boolean b)
- {
- showReferences = b;
- }
-
- public boolean getShowReferences()
- {
- return showReferences;
- }
-
- public void setShowInherited(boolean b)
- {
- showInherited= b;
- }
-
- public boolean getShowInherited()
- {
- return showInherited;
- }
-
- protected XSDSwitch modelSwitch = new XSDSwitch()
- {
- public Object caseXSDAnnotation(XSDAnnotation object)
- {
- return createXSDAnnotationAdapter();
- }
- public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration object)
- {
- return createXSDAttributeDeclarationAdapter();
- }
- public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition object)
- {
- return createXSDAttributeGroupDefinitionAdapter();
- }
- public Object caseXSDAttributeUse(XSDAttributeUse object)
- {
- return createXSDAttributeUseAdapter();
- }
- public Object caseXSDComplexTypeDefinition(XSDComplexTypeDefinition object)
- {
- return createXSDComplexTypeDefinitionAdapter();
- }
- public Object caseXSDElementDeclaration(XSDElementDeclaration object)
- {
- return createXSDElementDeclarationAdapter();
- }
- public Object caseXSDModelGroup(XSDModelGroup object)
- {
- return createXSDModelGroupAdapter();
- }
- public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
- {
- return createXSDModelGroupDefinitionAdapter();
- }
- public Object caseXSDNotationDeclaration(XSDNotationDeclaration object)
- {
- return createXSDNotationDeclarationAdapter();
- }
- public Object caseXSDParticle(XSDParticle object)
- {
- return createXSDParticleAdapter();
- }
-// public Object caseXSDParticleContent(XSDParticleContent object)
-// {
-// return createXSDParticleContentAdapter();
-// }
- public Object caseXSDSchema(XSDSchema object)
- {
- return createXSDSchemaAdapter();
- }
- public Object caseXSDImport(XSDImport object)
- {
- // return createXSDImportAdapter();
- return createXSDSchemaDirectiveAdapter();
- }
- public Object caseXSDInclude(XSDInclude object)
- {
- // return createXSDIncludeAdapter();
- return createXSDSchemaDirectiveAdapter();
- }
- public Object caseXSDRedefine(XSDRedefine object)
- {
- // return createXSDRedefineAdapter();
- return createXSDSchemaDirectiveAdapter();
- }
- public Object caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition object)
- {
- return createXSDSimpleTypeDefinitionAdapter();
-
- }
- public Object caseXSDWildcard(XSDWildcard object)
- {
- return createXSDWildcardAdapter();
- }
- public Object defaultCase(EObject object)
- {
- return createEObjectAdapter();
- }
- };
-
- public Adapter createAdapter(Notifier target)
- {
- Adapter adapter = null;
- if (target instanceof EObject)
- {
- adapter = (Adapter)modelSwitch.doSwitch((EObject)target);
- }
- return adapter;
- }
-
- /* create adapters */
-
- public Adapter createXSDAnnotationAdapter()
- {
- return new XSDAnnotationAdapter(this);
- }
-
- public Adapter createXSDAttributeDeclarationAdapter()
- {
- return new XSDAttributeDeclarationAdapter(this);
- }
-
- public Adapter createXSDAttributeGroupDefinitionAdapter()
- {
- return new XSDAttributeGroupDefinitionAdapter(this);
- }
-
- public Adapter createXSDAttributeUseAdapter()
- {
- return new XSDAttributeUseAdapter(this);
- }
-
- public Adapter createXSDComplexTypeDefinitionAdapter()
- {
- return new XSDComplexTypeDefinitionAdapter(this);
- }
-
- public Adapter createXSDElementDeclarationAdapter()
- {
- return new XSDElementDeclarationAdapter(this);
- }
-
- public Adapter createXSDModelGroupAdapter()
- {
- return new XSDModelGroupAdapter(this);
- }
-
-
- public Adapter createXSDModelGroupDefinitionAdapter()
- {
- return new XSDModelGroupDefinitionAdapter(this);
- }
-
- public Adapter createXSDNotationDeclarationAdapter()
- {
- return new XSDNotationDeclarationAdapter(this);
- }
-
- public Adapter createXSDWildcardAdapter()
- {
- return new XSDWildcardAdapter(this);
- }
-
- public Adapter createXSDParticleAdapter()
- {
- return new XSDParticleAdapter(this);
- }
-//
-// protected XSDParticleContentAdapter xsdParticleContentAdapter;
-// public Adapter createXSDParticleContentAdapter()
-// {
-// if (xsdParticleContentAdapter == null)
-// {
-// xsdParticleContentAdapter = new XSDParticleContentAdapter(this);
-// }
-// return xsdParticleContentAdapter;
-// }
-
- public Adapter createXSDSchemaAdapter()
- {
- return new XSDSchemaAdapter(this);
- }
-
- public Adapter createXSDSchemaDirectiveAdapter()
- {
- return new XSDSchemaDirectiveAdapter(this);
- }
-
- public Adapter createXSDSimpleTypeDefinitionAdapter()
- {
- return new XSDSimpleTypeDefinitionAdapter(this);
- }
-
- public Adapter createEObjectAdapter()
- {
- return null;
- }
-
- public boolean isFactoryForType(Object type)
- {
- return super.isFactoryForType(type) || supportedTypes.contains(type);
- }
-
- /**
- * This implementation substitutes the factory itself as the key for the adapter.
- */
- public Adapter adapt(Notifier notifier, Object type)
- {
- return super.adapt(notifier, this);
- }
-
- public Object adapt(Object object, Object type)
- {
- // This is a kludge to deal with enumerators, which crash the doSwitch.
- //
- if (object instanceof EObject && ((EObject)object).eClass() == null)
- {
- return null;
- }
-
- if (isFactoryForType(type))
- {
- Object adapter = super.adapt(object, type);
- if (!(type instanceof Class) || (((Class)type).isInstance(adapter)))
- {
- return adapter;
- }
- }
-
- return null;
- }
-
- public Adapter adaptNew(Notifier object, Object type)
- {
- Adapter result = super.adaptNew(object, type);
- disposable.add(result);
- return result;
- }
-
- /**
- * This adds a listener.
- */
- public void addListener(INotifyChangedListener notifyChangedListener)
- {
- changeNotifier.addListener(notifyChangedListener);
- }
-
- /**
- * This removes a listener.
- */
- public void removeListener(INotifyChangedListener notifyChangedListener)
- {
- changeNotifier.removeListener(notifyChangedListener);
- }
-
- /**
- * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
- */
- public void fireNotifyChanged(Notification notification)
- {
- Display display = Display.getDefault();
- if (display != null)
- {
- if (display.getThread() == Thread.currentThread ())
- {
- changeNotifier.fireNotifyChanged(notification);
- }
- }
-
-// if (parentAdapterFactory != null)
-// {
-// parentAdapterFactory.fireNotifyChanged(notification);
-// }
- }
-
- public void dispose()
- {
- instance = null;
- disposable.dispose();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupAdapter.java
deleted file mode 100644
index c8535b6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupAdapter.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDModelGroupAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDModelGroupAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object element)
- {
- XSDModelGroup xsdModelGroup = ((XSDModelGroup)element);
- if (XSDCompositor.CHOICE_LITERAL == xsdModelGroup.getCompositor())
- {
- // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDModelGroupChoice");
- return XSDEditorPlugin.getXSDImage("icons/XSDChoice.gif");
- }
- else if (XSDCompositor.ALL_LITERAL == xsdModelGroup.getCompositor())
- {
- // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDModelGroupAll");
- return XSDEditorPlugin.getXSDImage("icons/XSDAll.gif");
- }
- else
- {
- // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDModelGroupSequence");
- return XSDEditorPlugin.getXSDImage("icons/XSDSequence.gif");
- }
- }
-
- public String getText(Object object)
- {
- XSDModelGroup xsdModelGroup = ((XSDModelGroup)object);
-
- StringBuffer result = new StringBuffer();
- String name = xsdModelGroup.getCompositor().getName();
- if (name != null)
- {
- result.append(name);
- }
-
- Element element = xsdModelGroup.getElement();
-
- if (element != null)
- {
- boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
- boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-
- if (hasMinOccurs || hasMaxOccurs)
- {
- XSDConcreteComponent comp = xsdModelGroup.getContainer();
- boolean isParticle = (comp instanceof XSDParticle);
- if (isParticle)
- {
- result.append(" [");
- }
- if (hasMinOccurs)
- {
- if (isParticle)
- {
- int min = ((XSDParticle)comp).getMinOccurs();
- if (min == XSDParticle.UNBOUNDED)
- {
- result.append("*");
- }
- else
- {
- result.append(String.valueOf(min));
- }
- }
- }
- else // print default
- {
- if (isParticle)
- {
- int min = ((XSDParticle)comp).getMinOccurs();
- result.append(String.valueOf(min));
- }
- }
- if (hasMaxOccurs)
- {
- if (isParticle)
- {
- int max = ((XSDParticle)comp).getMaxOccurs();
- result.append("..");
- if (max == XSDParticle.UNBOUNDED)
- {
- result.append("*");
- }
- else
- {
- result.append(String.valueOf(max));
- }
- }
- }
- else // print default
- {
- if (isParticle)
- {
- result.append("..");
- int max = ((XSDParticle)comp).getMaxOccurs();
- result.append(String.valueOf(max));
- }
- }
- if (isParticle)
- {
- result.append("]");
- }
- }
- }
- return result.toString();
- }
-
- public Object[] getChildren(Object parentElement)
- {
- XSDModelGroup xsdModelGroup = (XSDModelGroup)parentElement;
- List list = new ArrayList();
- // list.addAll(xsdModelGroup.getContents());
- list.addAll(XSDChildUtility.getModelChildren(xsdModelGroup));
- return list.toArray();
- }
-
- public boolean hasChildren(Object object)
- {
- return true;
- }
-
- public Object getParent(Object object)
- {
- XSDModelGroup element = (XSDModelGroup)object;
- return element.getContainer();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupDefinitionAdapter.java
deleted file mode 100644
index 93e551c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupDefinitionAdapter.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-
-
-public class XSDModelGroupDefinitionAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDModelGroupDefinitionAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object object)
- {
- XSDModelGroupDefinition xsdModelGroupDefinition = ((XSDModelGroupDefinition)object);
-
- if (xsdModelGroupDefinition.isModelGroupDefinitionReference())
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDGroupRef.gif");
- }
- else
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDGroup.gif");
- }
- }
-
- public String getText(Object object)
- {
- XSDModelGroupDefinition xsdModelGroupDefinition = ((XSDModelGroupDefinition)object);
- String result =
- xsdModelGroupDefinition.isModelGroupDefinitionReference() ?
- xsdModelGroupDefinition.getQName() :
- xsdModelGroupDefinition.getName();
- return result == null ? "'absent'" : result;
- }
-
- boolean hasChildren = false;
-
- public Object[] getChildren(Object parentElement)
- {
- XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition)parentElement;
- List list = new ArrayList();
- if (xsdModelGroupDefinition.isModelGroupDefinitionReference())
- {
- if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowReferences())
- {
- list.add(xsdModelGroupDefinition.getResolvedModelGroupDefinition().getModelGroup());
- hasChildren = true;
- }
- }
- else
- {
- if (xsdModelGroupDefinition.getModelGroup() != null)
- {
- list.add(xsdModelGroupDefinition.getModelGroup());
- hasChildren = true;
- }
- }
-
- return list.toArray();
-
- }
-
- public boolean hasChildren(Object object)
- {
- return hasChildren;
- }
-
- public Object getParent(Object object)
- {
- XSDModelGroupDefinition element = (XSDModelGroupDefinition)object;
- return element.getContainer();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDNotationDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDNotationDeclarationAdapter.java
deleted file mode 100644
index 3c89274..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDNotationDeclarationAdapter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDNotationDeclaration;
-
-
-public class XSDNotationDeclarationAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDNotationDeclarationAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object object)
- {
- // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDNotationDeclaration");
- return XSDEditorPlugin.getXSDImage("icons/XSDNotation.gif");
- }
-
- public String getText(Object object)
- {
- XSDNotationDeclaration xsdNotationDeclaration = ((XSDNotationDeclaration)object);
- String result = xsdNotationDeclaration.getName();
- return result == null ? "" : result;
- }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDParticleAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDParticleAdapter.java
deleted file mode 100644
index c37e8a7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDParticleAdapter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationWrapper;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.XSDWildcard;
-
-
-public class XSDParticleAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDParticleAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- // hack to notify outline and graph view of minOccurs and maxOccurs changes
- public void notifyChanged(Notification msg)
- {
- XSDParticle xsdParticle = (XSDParticle)msg.getNotifier();
- XSDParticleContent xsdParticleContent = xsdParticle.getContent();
- if (xsdParticleContent != null)
- {
- if (xsdParticleContent instanceof XSDElementDeclaration)
- {
- fireNotifyChanged(new NotificationWrapper((XSDElementDeclaration)xsdParticleContent, msg));
- XSDModelAdapterFactory.getAdapter(xsdParticleContent).firePropertyChanged(xsdParticleContent, null);
- }
- else if (xsdParticleContent instanceof XSDModelGroup)
- {
- fireNotifyChanged(new NotificationWrapper((XSDModelGroup)xsdParticleContent, msg));
- XSDModelAdapterFactory.getAdapter(xsdParticleContent).firePropertyChanged(xsdParticleContent, null);
- }
- else if (xsdParticleContent instanceof XSDWildcard)
- {
- fireNotifyChanged(new NotificationWrapper((XSDWildcard)xsdParticleContent, msg));
- XSDModelAdapterFactory.getAdapter(xsdParticleContent).firePropertyChanged(xsdParticleContent, null);
- }
- }
- // super.notifyChanged(msg);
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaAdapter.java
deleted file mode 100644
index 4836bc7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaAdapter.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.common.notify.impl.NotificationImpl;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDPackage;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-public class XSDSchemaAdapter extends XSDAbstractAdapter {
- protected XSDPackage xsdPackage;
-
- /**
- * @param adapterFactory
- */
- public XSDSchemaAdapter(AdapterFactory adapterFactory) {
- super(adapterFactory);
- xsdPackage = XSDPackage.eINSTANCE;
- }
-
- public Image getImage(Object element) {
- return XSDEditorPlugin.getXSDImage("icons/XSDFile.gif");
- }
-
- public String getText(Object element) {
- XSDSchema xsdSchema = (XSDSchema) element;
- String result = xsdSchema.getSchemaLocation();
- if (result == null) {
- return "";
- }
- else {
- return URI.createURI(result).lastSegment();
- }
- }
-
- List children;
- private CategoryAdapter fDirectivesCategory;
- private CategoryAdapter fElementsCategory;
- private CategoryAdapter fAttributesCategory;
- private CategoryAdapter fAttributeGroupsCategory;
- private CategoryAdapter fTypesCategory;
- private CategoryAdapter fGroupsCategory;
- private CategoryAdapter fNotationsCategory;
-
- /**
- * Create all the category adapters
- *
- * @param xsdSchema
- */
- private void createCategoryAdapters(XSDSchema xsdSchema) {
- List directivesList = getDirectives(xsdSchema);
- List elementsList = getGlobalElements(xsdSchema);
- List attributeGroupList = getAttributeGroupList(xsdSchema);
- List attributesList = getAttributeList(xsdSchema);
- List groups = getGroups(xsdSchema);
- List notations = getNotations(xsdSchema);
- List types = getComplexTypes(xsdSchema);
- types.addAll(getSimpleTypes(xsdSchema));
-
- fDirectivesCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Elements_label"),
- XSDEditorPlugin.getXSDString("_UI_GRAPH_DIRECTIVES"), XSDEditorPlugin.getPlugin().getIconImage("obj16/directivesheader"), directivesList, xsdSchema, CategoryAdapter.DIRECTIVES);
- fElementsCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Elements_label"),
- XSDEditorPlugin.getXSDString("_UI_GRAPH_ELEMENTS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/elementsheader"), elementsList, xsdSchema, CategoryAdapter.ELEMENTS);
- fAttributesCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Attributes_label"),
- XSDEditorPlugin.getXSDString("_UI_GRAPH_ATTRIBUTES"), XSDEditorPlugin.getPlugin().getIconImage("obj16/attributesheader"), attributesList, xsdSchema, CategoryAdapter.ATTRIBUTES);
- fAttributeGroupsCategory = new CategoryAdapter(// XSDEditPlugin.getString("_UI_AttributeGroups_label"),
- XSDEditorPlugin.getXSDString("_UI_GRAPH_ATTRIBUTE_GROUPS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/attributegroupsheader"), attributeGroupList, xsdSchema, CategoryAdapter.ATTRIBUTE_GROUPS);
- fTypesCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Types_label"),
- XSDEditorPlugin.getXSDString("_UI_GRAPH_TYPES"), XSDEditorPlugin.getPlugin().getIconImage("obj16/typesheader"), types, xsdSchema, CategoryAdapter.TYPES);
- fGroupsCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_ModelGroups_label"),
- XSDEditorPlugin.getXSDString("_UI_GRAPH_GROUPS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/groupsheader"), groups, xsdSchema, CategoryAdapter.GROUPS);
- fNotationsCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Notations_label"),
- XSDEditorPlugin.getXSDString("_UI_GRAPH_NOTATIONS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/notationsheader"), notations, xsdSchema, CategoryAdapter.NOTATIONS);
- }
-
- public void setTarget(Notifier newTarget) {
- super.setTarget(newTarget);
-
- XSDSchema xsdSchema = ((XSDSchema) newTarget);
- createCategoryAdapters(xsdSchema);
- }
-
- public Object[] getChildren(Object parentElement) {
- XSDSchema xsdSchema = ((XSDSchema) parentElement);
-
- children = new ArrayList();
-
- // just set categoryadapters' children if category adapters are
- // already created
- if (fDirectivesCategory != null) {
- List directivesList = getDirectives(xsdSchema);
- List elementsList = getGlobalElements(xsdSchema);
- List attributeGroupList = getAttributeGroupList(xsdSchema);
- List attributesList = getAttributeList(xsdSchema);
- List groups = getGroups(xsdSchema);
- List notations = getNotations(xsdSchema);
- List types = getComplexTypes(xsdSchema);
- types.addAll(getSimpleTypes(xsdSchema));
-
- fDirectivesCategory.setChildren(directivesList);
- fElementsCategory.setChildren(elementsList);
- fAttributesCategory.setChildren(attributesList);
- fAttributeGroupsCategory.setChildren(attributeGroupList);
- fTypesCategory.setChildren(types);
- fGroupsCategory.setChildren(groups);
- fNotationsCategory.setChildren(notations);
-
- // children.add
- // (new CategoryAdapter
- // ( //XSDEditPlugin.getString("_UI_IdentityConstraints_label"),
- // "Identity Constraints",
- // XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDIdentityConstraintDefinitionKey"),
- // xsdSchema.getIdentityConstraintDefinitions(), xsdSchema,
- // CategoryAdapter.IDENTITY_CONSTRAINTS));
- // children.add
- // (new CategoryAdapter
- // ( // XSDEditPlugin.getString("_UI_Annotations_label"),
- // "Annotations",
- // XSDEditorPlugin.getPlugin().getIconImage("obj16/annotationsheader"),
- // xsdSchema.getAnnotations(), xsdSchema,
- // CategoryAdapter.ANNOTATIONS));
- }
- else {
- createCategoryAdapters(xsdSchema);
- }
-
- children.add(fDirectivesCategory);
- children.add(fElementsCategory);
- children.add(fAttributesCategory);
- children.add(fAttributeGroupsCategory);
- children.add(fTypesCategory);
- children.add(fGroupsCategory);
- children.add(fNotationsCategory);
-
- return children.toArray();
- }
-
- public boolean hasChildren(Object object) {
- return true;
- }
-
- public Object getParent(Object object) {
- return null;
- }
-
- public void notifyChanged(final Notification msg) {
- class CategoryNotification extends NotificationImpl {
- protected Object category;
-
- public CategoryNotification(Object category) {
- super(msg.getEventType(), msg.getOldValue(), msg.getNewValue(), msg.getPosition());
- this.category = category;
- }
-
- public Object getNotifier() {
- return category;
- }
-
- public Object getFeature() {
- return msg.getFeature();
- }
- }
-
- if (children == null) {
- getChildren(target);
- }
-
- if (msg.getFeature() == xsdPackage.getXSDSchema_Contents()) {
- CategoryAdapter adapter = (CategoryAdapter) children.get(0);
- XSDSchema xsdSchema = adapter.getXSDSchema();
- adapter.setChildren(getDirectives(xsdSchema));
- this.fireNotifyChanged(new CategoryNotification(adapter));
- return;
- }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_ElementDeclarations()) {
- CategoryAdapter adapter = (CategoryAdapter) children.get(1);
- XSDSchema xsdSchema = adapter.getXSDSchema();
- adapter.setChildren(getGlobalElements(xsdSchema));
- this.fireNotifyChanged(new CategoryNotification(adapter));
- return;
- }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_AttributeDeclarations()) {
- CategoryAdapter adapter = (CategoryAdapter) children.get(2);
- XSDSchema xsdSchema = adapter.getXSDSchema();
- adapter.setChildren(getAttributeList(xsdSchema));
- this.fireNotifyChanged(new CategoryNotification(adapter));
- return;
- }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_AttributeGroupDefinitions()) {
- CategoryAdapter adapter = (CategoryAdapter) children.get(3);
- XSDSchema xsdSchema = adapter.getXSDSchema();
- adapter.setChildren(getAttributeGroupList(xsdSchema));
- this.fireNotifyChanged(new CategoryNotification(adapter));
- return;
- }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_TypeDefinitions()) {
- CategoryAdapter adapter = (CategoryAdapter) children.get(4);
- XSDSchema xsdSchema = adapter.getXSDSchema();
- List types = getComplexTypes(xsdSchema);
- types.addAll(getSimpleTypes(xsdSchema));
-
- adapter.setChildren(types);
- this.fireNotifyChanged(new CategoryNotification(adapter));
- return;
- }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_ModelGroupDefinitions()) {
- CategoryAdapter adapter = (CategoryAdapter) children.get(5);
- XSDSchema xsdSchema = adapter.getXSDSchema();
- adapter.setChildren(getGroups(xsdSchema));
- this.fireNotifyChanged(new CategoryNotification(adapter));
- return;
- }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_NotationDeclarations()) {
- CategoryAdapter adapter = (CategoryAdapter) children.get(6);
- XSDSchema xsdSchema = adapter.getXSDSchema();
- adapter.setChildren(getNotations(xsdSchema));
- this.fireNotifyChanged(new CategoryNotification(adapter));
- return;
- }
- // else if (msg.getFeature() ==
- // xsdPackage.getXSDSchema_IdentityConstraintDefinitions())
- // {
- // this.fireNotifyChanged(new CategoryNotification(children.get(7)));
- // return;
- // }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_Annotations()) {
- // this.fireNotifyChanged(new
- // CategoryNotification(children.get(7)));
- return;
- }
- else if (msg.getFeature() == xsdPackage.getXSDSchema_SchemaLocation()) {
- this.fireNotifyChanged(msg);
- return;
- }
-
- super.notifyChanged(msg);
- }
-
- protected List getDirectives(XSDSchema schema) {
- List list = new ArrayList();
- for (Iterator i = schema.getContents().iterator(); i.hasNext();) {
- Object o = i.next();
- if (o instanceof XSDSchemaDirective) {
- list.add(o);
- }
- }
- return list;
- }
-
- protected List getAttributeGroupList(XSDSchema xsdSchema) {
- List attributeGroupList = new ArrayList();
- for (Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator(); i.hasNext();) {
- XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) i.next();
- if (attrGroup.getRootContainer() == xsdSchema) {
- attributeGroupList.add(attrGroup);
- }
- }
- return attributeGroupList;
- }
-
- protected List getAttributeList(XSDSchema xsdSchema) {
- List attributesList = new ArrayList();
- for (Iterator iter = xsdSchema.getAttributeDeclarations().iterator(); iter.hasNext();) {
- Object o = iter.next();
- if (o instanceof XSDAttributeDeclaration) {
- XSDAttributeDeclaration attr = (XSDAttributeDeclaration) o;
- if (attr != null) {
- if (attr.getTargetNamespace() != null) {
- if (!(attr.getTargetNamespace().equals("http://www.w3.org/2001/XMLSchema-instance"))) {
- if (attr.getRootContainer() == xsdSchema) {
- attributesList.add(attr);
- }
- }
- }
- else {
- if (attr.getRootContainer() == xsdSchema) {
- attributesList.add(attr);
- }
- }
- }
- }
- }
- return attributesList;
- }
-
- protected List getGlobalElements(XSDSchema schema) {
- List elements = schema.getElementDeclarations();
- List list = new ArrayList();
- for (Iterator i = elements.iterator(); i.hasNext();) {
- XSDElementDeclaration elem = (XSDElementDeclaration) i.next();
- if (elem.getRootContainer() == schema) {
- list.add(elem);
- }
- }
- return list;
- }
-
- protected List getComplexTypes(XSDSchema schema) {
- List allTypes = schema.getTypeDefinitions();
- List list = new ArrayList();
- for (Iterator i = allTypes.iterator(); i.hasNext();) {
- XSDTypeDefinition td = (XSDTypeDefinition) i.next();
- if (td instanceof XSDComplexTypeDefinition) {
- XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) td;
- if (ct.getRootContainer() == schema) {
- list.add(ct);
- }
- }
- }
- return list;
- }
-
- protected List getSimpleTypes(XSDSchema schema) {
- List allTypes = schema.getTypeDefinitions();
- List list = new ArrayList();
- for (Iterator i = allTypes.iterator(); i.hasNext();) {
- XSDTypeDefinition td = (XSDTypeDefinition) i.next();
- if (td instanceof XSDSimpleTypeDefinition) {
- XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) td;
- if (st.getRootContainer() == schema) {
- list.add(st);
- }
- }
- }
- return list;
- }
-
- protected List getGroups(XSDSchema schema) {
- List groups = schema.getModelGroupDefinitions();
- List list = new ArrayList();
- for (Iterator i = groups.iterator(); i.hasNext();) {
- XSDModelGroupDefinition group = (XSDModelGroupDefinition) i.next();
- if (group.getRootContainer() == schema) {
- list.add(group);
- }
- }
- return list;
- }
-
- protected List getNotations(XSDSchema schema) {
- List notations = schema.getNotationDeclarations();
- List list = new ArrayList();
- for (Iterator i = notations.iterator(); i.hasNext();) {
- XSDNotationDeclaration notation = (XSDNotationDeclaration) i.next();
- if (notation.getRootContainer() == schema) {
- list.add(notation);
- }
- }
- return list;
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaDirectiveAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaDirectiveAdapter.java
deleted file mode 100644
index 47cf912..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaDirectiveAdapter.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchemaDirective;
-
-public class XSDSchemaDirectiveAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDSchemaDirectiveAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
-
- public Image getImage(Object object)
- {
- if (object instanceof XSDImport)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDImport.gif");
- }
- else if (object instanceof XSDInclude)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDInclude.gif");
- }
- else if (object instanceof XSDRedefine)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDRedefine.gif");
- }
- return null;
- }
-
- public String getText(Object object)
- {
- XSDSchemaDirective directive = (XSDSchemaDirective)object;
- String result = directive.getSchemaLocation();
- if (result == null) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
- if (result.equals("")) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED")+ ")";
- return result;
-
-// XSDImport xsdImport = ((XSDImport)object);
-// String result = xsdImport.getSchemaLocation();
-// return result == null ? "" : result;
-
-// XSDInclude xsdInclude = ((XSDInclude)object);
-// String result = xsdInclude.getSchemaLocation();
-// return result == null ? "" : result;
-
-// XSDRedefine xsdRedefine = ((XSDRedefine)object);
-// String result = xsdRedefine.getSchemaLocation();
-// return result == null ? "" : result;
-
-
- }
-
- public Object[] getChildren(Object parentElement)
- {
- List list = new ArrayList();
- if (parentElement instanceof XSDRedefine)
- {
- XSDRedefine redefine = (XSDRedefine)parentElement;
- list = redefine.getContents();
- if (list == null)
- {
- list = new ArrayList();
- }
- }
- return list.toArray();
- }
-
- public boolean hasChildren(Object object)
- {
- return false;
- }
-
- public Object getParent(Object object)
- {
- return null;
-
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSimpleTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSimpleTypeDefinitionAdapter.java
deleted file mode 100644
index 299bd3f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSimpleTypeDefinitionAdapter.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDSimpleTypeDefinitionAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDSimpleTypeDefinitionAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object object)
- {
- XSDSimpleTypeDefinition xsdSimpleTypeDefinition = ((XSDSimpleTypeDefinition)object);
-
- if (xsdSimpleTypeDefinition.getContainer() == null)
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
- }
-
- if (XSDVariety.LIST_LITERAL == xsdSimpleTypeDefinition.getVariety())
- {
- // return XSDEditorPlugin.getXSDImage("icons/XSDSimpleList.gif");
- return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_list_obj");
- }
- else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety())
- {
- //return XSDEditorPlugin.getXSDImage("icons/XSDSimpleUnion.gif");
- return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_union_obj");
- }
- else if (XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
- {
- // return XSDEditorPlugin.getXSDImage("icons/XSDSimpleRestrict.gif");
- Element stElement = xsdSimpleTypeDefinition.getElement();
- XSDDOMHelper domHelper = new XSDDOMHelper();
- if (domHelper.getChildNode(stElement, XSDConstants.RESTRICTION_ELEMENT_TAG) != null)
- {
- return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_restrict_obj");
- }
- return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
- }
- else if (xsdSimpleTypeDefinition.isSetVariety())
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
- }
- else
- {
- return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
- }
-
-// return
-// XSDEditorPlugin.getPlugin().getIconImage
-// (xsdSimpleTypeDefinition.getContainer() == null ?
-// "full/obj16/XSDSimpleTypeDefinitionUnresolved" :
-// XSDVariety.LIST_LITERAL == xsdSimpleTypeDefinition.getVariety() ?
-// "full/obj16/XSDSimpleTypeDefinitionList" :
-// XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety() ?
-// "full/obj16/XSDSimpleTypeDefinitionUnion" :
-// xsdSimpleTypeDefinition.isSetVariety() ?
-// "full/obj16/XSDSimpleTypeDefinitionAtomic" :
-// "full/obj16/XSDSimpleTypeDefinition");
- }
-
- public String getText(Object object)
- {
- return getText(object, true);
- }
-
- public String getText(Object object, boolean showType)
- {
- XSDSimpleTypeDefinition xsdSimpleTypeDefinition = ((XSDSimpleTypeDefinition)object);
-
- StringBuffer result = new StringBuffer();
-
- result.append
- (xsdSimpleTypeDefinition.getName() == null ?
- // xsdSimpleTypeDefinition.getAliasName() :
- "local type" :
- xsdSimpleTypeDefinition.getName());
-
- if (showType)
- {
- XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
- if (baseTypeDefinition != null && XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
- {
- if (baseTypeDefinition.getName() != null &&
- !xsdSimpleTypeDefinition.getContents().contains(baseTypeDefinition) &&
- !XSDConstants.isAnySimpleType(baseTypeDefinition))
- {
- result.append(" : ");
- result.append(baseTypeDefinition.getQName(xsdSimpleTypeDefinition));
- }
- }
- else
- {
- XSDSimpleTypeDefinition itemTypeDefinition = xsdSimpleTypeDefinition.getItemTypeDefinition();
- if (itemTypeDefinition != null)
- {
- if (itemTypeDefinition.getName() != null)
- {
- result.append(" : ");
- result.append(itemTypeDefinition.getQName(xsdSimpleTypeDefinition));
- }
- }
- else
- {
- List memberTypeDefinitions = xsdSimpleTypeDefinition.getMemberTypeDefinitions();
- if (!memberTypeDefinitions.isEmpty())
- {
- boolean first = true;
- for (Iterator members = memberTypeDefinitions.iterator(); members.hasNext(); )
- {
- XSDSimpleTypeDefinition memberTypeDefinition = (XSDSimpleTypeDefinition)members.next();
- if (memberTypeDefinition.getName() != null)
- {
- if (first)
- {
- result.append(" : ");
- first = false;
- }
- else
- {
- result.append(" | ");
- }
- result.append(memberTypeDefinition.getQName(xsdSimpleTypeDefinition));
- }
- else
- {
- break;
- }
- }
- }
- else if (result.length() == 0)
- {
- result.append("'absent'");
- }
- }
- }
- }
-
- return result.toString();
- }
-
- public Object[] getChildren(Object parentElement)
- {
- List list = new ArrayList();
- return list.toArray();
-
- }
-
- public boolean hasChildren(Object object)
- {
- return true;
- }
-
- public Object getParent(Object object)
- {
- XSDSimpleTypeDefinition element = (XSDSimpleTypeDefinition)object;
- return element.getContainer();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDWildcardAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDWildcardAdapter.java
deleted file mode 100644
index b219f6b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDWildcardAdapter.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDWildcardAdapter extends XSDAbstractAdapter
-{
-
- /**
- * @param adapterFactory
- */
- public XSDWildcardAdapter(AdapterFactory adapterFactory)
- {
- super(adapterFactory);
- }
-
- public Image getImage(Object object)
- {
- XSDWildcard xsdWildcard = (XSDWildcard)object;
- return XSDEditorPlugin.getXSDImage
- (xsdWildcard.eContainer() instanceof XSDParticle ?
- "icons/XSDAny.gif" :
- "icons/XSDAnyAttribute.gif");
- }
-
- public String getText(Object object)
- {
- XSDWildcard xsdWildcard = ((XSDWildcard)object);
-
- StringBuffer result = new StringBuffer();
- Element element = xsdWildcard.getElement();
-
- if (element != null)
- {
- result.append(element.getNodeName());
- boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
- boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-
- if (hasMinOccurs || hasMaxOccurs)
- {
- result.append(" ["); //$NON-NLS-1$
- if (hasMinOccurs)
- {
-
- int min = ((XSDParticle)xsdWildcard.getContainer()).getMinOccurs();
- if (min == XSDParticle.UNBOUNDED)
- {
- result.append("*");
- }
- else
- {
- result.append(String.valueOf(min));
- }
- }
- else // print default
- {
- int min = ((XSDParticle)xsdWildcard.getContainer()).getMinOccurs();
- result.append(String.valueOf(min));
- }
- if (hasMaxOccurs)
- {
- int max = ((XSDParticle)xsdWildcard.getContainer()).getMaxOccurs();
- result.append("..");
- if (max == XSDParticle.UNBOUNDED)
- {
- result.append("*");
- }
- else
- {
- result.append(String.valueOf(max));
- }
- }
- else // print default
- {
- result.append("..");
- int max = ((XSDParticle)xsdWildcard.getContainer()).getMaxOccurs();
- result.append(String.valueOf(max));
- }
- result.append("]");
- }
- }
- return result.toString();
-
- }
-
- public boolean hasChildren(Object object)
- {
- return false;
- }
-
- public Object getParent(Object object)
- {
- XSDWildcard xsdWildcard = (XSDWildcard)object;
- return xsdWildcard.getContainer();
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/BaseCleanup.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/BaseCleanup.java
deleted file mode 100644
index 3a3da3b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/BaseCleanup.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.refactor.rename;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-
-public abstract class BaseCleanup extends XSDVisitor
-{
- /**
- * @see org.eclipse.wst.xsd.ui.internal.refactor.XSDVisitor#visitSchema(XSDSchema)
- */
- public void visitSchema(XSDSchema schema)
- {
- super.visitSchema(schema);
-
- // now remove all children that were queued up for removal
-
- for (Iterator iter = childrenToRemove.iterator(); iter.hasNext(); )
- {
- Element domElement = (Element) iter.next();
- XSDDOMHelper.removeNodeAndWhitespace(domElement);
-// domElement.getParentNode().removeChild(domElement);
- }
- }
-
-
- protected ArrayList messages = new ArrayList();
-
- public ArrayList getMessages()
- {
- return messages;
- }
-
-
- protected void addMessage(String msg, XSDConcreteComponent component)
- {
-//// ErrorMessage message = new ErrorMessage();
-//
-// XSDConcreteComponent currComp = component;
-// while (!(currComp instanceof XSDSchemaContent) && currComp.getContainer() != null)
-// {
-// currComp = currComp.getContainer();
-// }
-//
-// Element domElement = currComp.getElement();
-// Node parent = domElement;
-// while (!(parent instanceof NodeImpl) && parent != null)
-// {
-// parent = parent.getParentNode();
-// }
-// if (parent instanceof NodeImpl)
-// {
-// // message.setModelObject(currComp.getElement());
-// message.setTargetObject(currComp.getElement());
-// }
-// message.setLocalizedMessage(msg);
-// ???
-// addMessage(message);
- }
-
-
-// // protected void addMessage(ErrorMessage message)
-// protected void addMessage(Message message)
-// {
-// messages.add(message);
-// }
-
-
- protected ArrayList childrenToRemove = new ArrayList();
-
-
- protected String getNamedComponentName(XSDConcreteComponent concrete)
- {
- String name = null;
- if (concrete instanceof XSDNamedComponent)
- {
- name = ((XSDNamedComponent)concrete).getName();
- }
-
- XSDConcreteComponent comp = concrete;
- while (comp != null && name == null)
- {
- comp = comp.getContainer();
- if (comp instanceof XSDNamedComponent)
- {
- name = ((XSDNamedComponent)comp).getName();
- }
- }
- return name != null ? name : "";
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDExternalFileCleanup.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDExternalFileCleanup.java
deleted file mode 100644
index e96619e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDExternalFileCleanup.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.refactor.rename;
-
-import java.text.MessageFormat;
-import java.util.Iterator;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupContent;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class XSDExternalFileCleanup extends BaseCleanup
-{
- /**
- * Constructor for XSDExternalFileCleanup.
- */
- public XSDExternalFileCleanup(String oldFilename)
- {
- super();
- this.oldFilename = oldFilename;
- }
-
- protected XSDSchema deletedSchema;
- public XSDExternalFileCleanup(XSDSchema deletedSchema)
- {
- this.deletedSchema = deletedSchema;
- }
-
- protected String oldFilename;
-
- /**
- * @see org.eclipse.wst.xsd.ui.internal.refactor.XSDVisitor#visitElementDeclaration(XSDElementDeclaration)
- */
- public void visitElementDeclaration(XSDElementDeclaration element)
- {
- boolean addMessage = true;
- String schemaLocation = element.getSchema().getSchemaLocation();
- if (schemaLocation!= null)
- {
- if (!schemaLocation.equals(schema.getSchemaLocation()))
- {
- addMessage = false;
- }
- }
- if (element.isElementDeclarationReference())
- {
- if (isFromDeletedSchema(element.getResolvedElementDeclaration()))
- {
- if (addMessage)
- {
- // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_ELEMENT_REFERENCE") + " <" + getNamedComponentName(element.getContainer()) + ">";
- String msg = "_INFO_REMOVE_ELEMENT_REFERENCE" + " <" + getNamedComponentName(element.getContainer()) + ">";
- addMessage(msg, element.getContainer());
- }
- childrenToRemove.add(element.getElement());
-// Element domElement = element.getElement();
-// domElement.getParentNode().removeChild(domElement);
- }
- }
- else if (removeType(element))
- {
- String msg = "";
- if (element.isGlobal())
- {
- // String pattern = XSDPlugin.getSchemaString("_INFO_RESET_GLOBAL_ELEMENT");
- String pattern = "_INFO_RESET_GLOBAL_ELEMENT";
- Object args[] = {element.getName()};
- msg = MessageFormat.format(pattern, args);
- }
- else
- {
- // msg = XSDPlugin.getSchemaString("_INFO_RESET_ELEMENT");
- msg = "_INFO_RESET_ELEMENT";
- // msg += "<" + element.getName() + "> " + XSDPlugin.getSchemaString("_UI_TO_TYPE_STRING");
- msg += "<" + element.getName() + "> " + "_UI_TO_TYPE_STRING";
- }
- if (addMessage)
- {
- addMessage(msg, element);
- }
- }
-
-
- super.visitElementDeclaration(element);
- }
-
- protected void resetTypeToString(Element element)
- {
- String prefix = element.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
-
- element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, prefix + "string");
- }
-
- protected boolean removeType(XSDElementDeclaration element)
- {
- if (removeType(element.getTypeDefinition()))
- {
- resetTypeToString(element.getElement());
- return true;
- }
- return false;
- }
-
- protected boolean isFromDeletedSchema(XSDConcreteComponent component)
- {
- if (component == null)
- {
- return false;
- }
- XSDConcreteComponent root = component.getRootContainer();
-
- boolean isFromDeletedSchema = false;
- if (deletedSchema.getContents() != null)
- {
- Iterator contents = deletedSchema.getContents().iterator();
- while (contents.hasNext())
- {
- XSDSchemaContent content = (XSDSchemaContent)contents.next();
- if (content instanceof XSDSchemaDirective)
- {
- XSDSchema aSchema = ((XSDSchemaDirective)content).getResolvedSchema();
- if (root != null && root.equals(aSchema))
- {
- isFromDeletedSchema = true;
- }
- }
- }
- }
- if (root != null && root.equals(deletedSchema))
- {
- isFromDeletedSchema = true;
- }
- return isFromDeletedSchema;
- }
-
- /**
- * Remove the type from the element if it belongs to the external file
- */
- protected boolean removeType(XSDTypeDefinition typeDef)
- {
- if (typeDef == null)
- {
- return false;
- }
- return isFromDeletedSchema(typeDef);
- }
-
- /**
- * @see org.eclipse.wst.xsd.utility.XSDVisitor#visitComplexTypeDefinition(XSDComplexTypeDefinition)
- */
- public void visitComplexTypeDefinition(XSDComplexTypeDefinition type)
- {
- super.visitComplexTypeDefinition(type);
- if (type.getAttributeContents() != null)
- {
- for (Iterator iter = type.getAttributeContents().iterator(); iter.hasNext(); )
- {
- XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) iter.next();
- if (attrGroupContent instanceof XSDAttributeUse)
- {
- XSDAttributeUse attrUse = (XSDAttributeUse) attrGroupContent;
- XSDAttributeDeclaration attrDecl = attrUse.getContent();
-
- // now is this a reference?
- if (attrDecl.isAttributeDeclarationReference())
- {
- if (isFromDeletedSchema(attrDecl.getResolvedAttributeDeclaration()))
- {
- String name = getNamedComponentName(type);
- // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_ATTRIBUTE_REFERENCE") +
- String msg = "_INFO_REMOVE_ATTRIBUTE_REFERENCE" +
- " <" + name + ">";
- addMessage(msg, attrDecl.getContainer());
-
- childrenToRemove.add(attrDecl.getElement());
- }
- }
- // otherwise check the type of the attribute and see if it is from the deleted schema
- else
- {
- if (removeType(attrDecl.getTypeDefinition()))
- {
- // reset the type of the attribute decl to string
- // String msg = XSDPlugin.getSchemaString("_INFO_RESET_ATTRIBUTE") +
- String msg = "_INFO_RESET_ATTRIBUTE" +
- " <" + attrDecl.getName() + "> " +
- // XSDPlugin.getSchemaString("_UI_TO_TYPE_STRING");
- "_UI_TO_TYPE_STRING";
- addMessage(msg, attrDecl);
- resetTypeToString(attrDecl.getElement());
-
- }
- }
- }
- else if (attrGroupContent instanceof XSDAttributeGroupDefinition)
- {
- XSDAttributeGroupDefinition attrGroupDef = (XSDAttributeGroupDefinition) attrGroupContent;
-
- if (isFromDeletedSchema(attrGroupDef.getResolvedAttributeGroupDefinition()))
- {
- // remove the attribute group reference
- String name = getNamedComponentName(type);
- // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_ATTRIBUTE_GROUP_REFERENCE") + " <" + name + ">";
- String msg = "_INFO_REMOVE_ATTRIBUTE_GROUP_REFERENCE" + " <" + name + ">";
-
- addMessage(msg, attrGroupDef.getContainer());
-
- childrenToRemove.add(attrGroupDef.getElement());
- }
- }
- }
- }
-
- // For the complex type with simple content case, see the visitComplexTypeDefinition method
- XSDTypeDefinition base = type.getBaseTypeDefinition();
- if (base instanceof XSDSimpleTypeDefinition)
- {
- XSDSimpleTypeDefinition baseType = (XSDSimpleTypeDefinition)base;
- if (isFromDeletedSchema(baseType))
- {
- // String msg = XSDPlugin.getSchemaString("_INFO_RESET_COMPLEX_TYPE") +
- String msg = "_INFO_RESET_COMPLEX_TYPE" +
- " <" + getNamedComponentName(type) + "> " +
- // XSDPlugin.getSchemaString("_UI_DERIVATION");
- "_UI_DERIVATION";
- addMessage(msg, type);
-
- type.setBaseTypeDefinition(schema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
- }
- }
- }
-
- /**
- * @see org.eclipse.wst.xsd.utility.XSDVisitor#visitModelGroupDefinition(XSDModelGroupDefinition)
- */
- public void visitModelGroupDefinition(XSDModelGroupDefinition modelGroup)
- {
- super.visitModelGroupDefinition(modelGroup);
- if (modelGroup.isModelGroupDefinitionReference())
- {
- if (isFromDeletedSchema(modelGroup.getResolvedModelGroupDefinition()))
- {
- String name = getNamedComponentName(modelGroup);
- // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_GROUP_REFERENCE") + " <" + name + ">";
- String msg = "_INFO_REMOVE_GROUP_REFERENCE" + " <" + name + ">";
- addMessage(msg, modelGroup.getContainer());
- childrenToRemove.add(modelGroup.getElement());
- }
- }
- }
-
- /**
- * @see org.eclipse.wst.xsd.utility.XSDVisitor#visitSimpleTypeDefinition(XSDSimpleTypeDefinition)
- */
- public void visitSimpleTypeDefinition(XSDSimpleTypeDefinition type)
- {
- super.visitSimpleTypeDefinition(type);
- XSDSimpleTypeDefinition baseType = type.getBaseTypeDefinition();
- if (isFromDeletedSchema(baseType))
- {
- // String msg = XSDPlugin.getSchemaString("_INFO_RESET_SIMPLE_TYPE") +
- String msg = "_INFO_RESET_SIMPLE_TYPE" +
- " <" + getNamedComponentName(type) + "> " +
- // XSDPlugin.getSchemaString("_UI_DERIVATION");
- "_UI_DERIVATION";
- addMessage(msg, type);
-
-
- // This will set the simple Type base to string
- // For the complex type with simple content case, see the visitComplexTypeDefinition method
-
- type.getFacetContents().clear();
- type.getFacets().clear();
- type.setBaseTypeDefinition(schema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
- }
- }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
deleted file mode 100644
index 006cfd6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
+++ /dev/null
@@ -1,714 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.impl.XSDImportImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class TypesHelper
-{
- XSDSchema xsdSchema;
- Vector list = new Vector();
-
- public TypesHelper(XSDSchema xsdSchema)
- {
- this.xsdSchema = xsdSchema;
- }
-
- public void updateExternalImportGlobals()
- {
- if (xsdSchema != null)
- {
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext())
- {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDImportImpl)
- {
- XSDImportImpl anImport = (XSDImportImpl) content;
- try
- {
- if (anImport.getSchemaLocation() != null)
- {
- anImport.importSchema();
- }
- }
- catch (Exception e)
- {
-
- }
- }
- }
- }
- }
-
-
- private Vector addExternalImportedGlobalElements(Vector items)
- {
- if (xsdSchema != null)
- {
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext())
- {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDImportImpl)
- {
- XSDImportImpl anImport = (XSDImportImpl) content;
-
- XSDSchema impSchema = anImport.getResolvedSchema();
-
- try
- {
- if (impSchema == null)
- {
- impSchema = anImport.importSchema();
- }
- }
- catch (Exception e)
- {
-
- }
-
- if (impSchema != null)
- {
- Iterator i = impSchema.getElementDeclarations().iterator();
- while (i.hasNext())
- {
- XSDElementDeclaration anElement = (XSDElementDeclaration) i.next();
- if (anElement.getName() != null)
- {
- items.addAll(getPrefixedNames(anElement.getTargetNamespace(), anElement.getName()));
- }
- }
- }
- }
- }
- }
- return items;
- }
-
- private Vector addExternalImportedAttributes(Vector items)
- {
- if (xsdSchema != null)
- {
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext())
- {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDImportImpl)
- {
- XSDImportImpl anImport = (XSDImportImpl) content;
-
- XSDSchema impSchema = anImport.getResolvedSchema();
-
- try
- {
- if (impSchema == null)
- {
- impSchema = anImport.importSchema();
- }
- }
- catch (Exception e)
- {
-
- }
-
- if (impSchema != null)
- {
- Iterator i = impSchema.getAttributeDeclarations().iterator();
- while (i.hasNext())
- {
- XSDAttributeDeclaration attrib = (XSDAttributeDeclaration) i.next();
- if (attrib.getName() != null)
- {
- items.addAll(getPrefixedNames(attrib.getTargetNamespace(), attrib.getName()));
- }
- }
- }
- }
- }
- }
- return items;
- }
-
- private Vector addExternalImportedAttributeGroups(Vector items)
- {
- if (xsdSchema != null)
- {
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext())
- {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDImportImpl)
- {
- XSDImportImpl anImport = (XSDImportImpl) content;
-
- XSDSchema impSchema = anImport.getResolvedSchema();
-
- try
- {
- if (impSchema == null)
- {
- impSchema = anImport.importSchema();
- }
- }
- catch (Exception e)
- {
-
- }
-
- if (impSchema != null)
- {
- Iterator i = impSchema.getAttributeGroupDefinitions().iterator();
- while (i.hasNext())
- {
- XSDAttributeGroupDefinition attrib = (XSDAttributeGroupDefinition) i.next();
- if (attrib.getName() != null)
- {
- items.addAll(getPrefixedNames(attrib.getTargetNamespace(), attrib.getName()));
- }
- }
- }
- }
- }
- }
- return items;
- }
-
- private Vector addExternalImportedGroups(Vector items)
- {
- if (xsdSchema != null)
- {
- Iterator contents = xsdSchema.getContents().iterator();
- while (contents.hasNext())
- {
- XSDSchemaContent content = (XSDSchemaContent) contents.next();
- if (content instanceof XSDImportImpl)
- {
- XSDImportImpl anImport = (XSDImportImpl) content;
-
- XSDSchema impSchema = anImport.getResolvedSchema();
-
- try
- {
- if (impSchema == null)
- {
- impSchema = anImport.importSchema();
- }
- }
- catch (Exception e)
- {
- }
-
- if (impSchema != null)
- {
- Iterator i = impSchema.getModelGroupDefinitions().iterator();
- while (i.hasNext())
- {
- XSDModelGroupDefinition aGroup = (XSDModelGroupDefinition) i.next();
- if (aGroup.getName() != null)
- {
- items.addAll(getPrefixedNames(aGroup.getTargetNamespace(), aGroup.getName()));
- }
- }
- }
- }
- }
- }
- return items;
- }
-
- public java.util.List getBuiltInTypeNamesList()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
- if (xsdForXSDPrefix != null && xsdForXSDPrefix.length() > 0)
- {
- xsdForXSDPrefix = xsdForXSDPrefix + ":";
- }
- else
- {
- xsdForXSDPrefix = "";
- }
-
- for (int i = 0; i < XSDDOMHelper.dataType.length; i++)
- {
- items.add(xsdForXSDPrefix + XSDDOMHelper.dataType[i][0]);
- }
- }
- return items;
- }
-
- public java.util.List getBuiltInTypeNamesList2()
- {
- List result = new ArrayList();
- if (xsdSchema != null)
- {
- List prefixes = getPrefixesForNamespace(xsdSchema.getSchemaForSchemaNamespace());
- for (int i = 0; i < XSDDOMHelper.dataType.length; i++)
- {
- for (Iterator j = prefixes.iterator(); j.hasNext();)
- {
- String prefix = (String) j.next();
- String localName = XSDDOMHelper.dataType[i][0];
- String prefixedName = (prefix != null && prefix.length() > 0) ? prefix + ":" + localName : localName;
- result.add(prefixedName);
- }
- }
- }
- return result;
- }
-
- public java.util.List getUserSimpleTypeNamesList()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- Iterator i = xsdSchema.getTypeDefinitions().iterator();
- while (i.hasNext())
- {
- XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
- if (typeDefinition instanceof XSDSimpleTypeDefinition)
- {
- items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));
- //System.out.println(typeDefinition.getQName(xsdSchema));
- //items.add(typeDefinition.getQName(xsdSchema));
- }
- }
- items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
-
- // items = addExternalImportedUserSimpleTypes(items);
- items = (Vector) sortList(items);
- }
- return items;
- }
-
- public java.util.List getUserComplexTypeNamesList()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- Iterator i = xsdSchema.getTypeDefinitions().iterator();
- while (i.hasNext())
- {
- XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
- if (typeDefinition instanceof XSDComplexTypeDefinition)
- {
- items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));
- }
- }
- items = (Vector) sortList(items);
- }
- return items;
- }
-
- public java.util.List getUserSimpleTypes()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- Iterator i = xsdSchema.getTypeDefinitions().iterator();
- while (i.hasNext())
- {
- XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
- if (typeDefinition instanceof XSDSimpleTypeDefinition)
- {
- items.add(typeDefinition);
- //System.out.println(typeDefinition.getQName(xsdSchema));
- //items.add(typeDefinition.getQName(xsdSchema));
- }
- }
- // We need to add the anyType
-// items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
-
- // items = addExternalImportedUserSimpleTypes(items);
- //items = (Vector) sortList(items);
- }
- return items;
- }
-
- public String getPrefix(String ns, boolean withColon)
- {
- String key = "";
-
- if (xsdSchema != null)
- {
- Map map = xsdSchema.getQNamePrefixToNamespaceMap();
- Iterator iter = map.keySet().iterator();
- while (iter.hasNext())
- {
- Object keyObj = iter.next();
- Object value = map.get(keyObj);
- if (value != null && value.toString().equals(ns))
- {
- if (keyObj != null)
- {
- key = keyObj.toString();
- }
- else
- {
- key = "";
- }
- break;
- }
- }
- if (!key.equals(""))
- {
- if (withColon)
- {
- key = key + ":";
- }
- }
- }
- return key;
- }
-
- public java.util.List getUserComplexTypes()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- Iterator i = xsdSchema.getTypeDefinitions().iterator();
- while (i.hasNext())
- {
- XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
- if (typeDefinition instanceof XSDComplexTypeDefinition)
- {
- items.add(typeDefinition);
- }
- }
- }
- return items;
- }
-
- public java.util.List getGlobalElements()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getElementDeclarations() != null)
- {
- Iterator i = xsdSchema.getElementDeclarations().iterator();
- while (i.hasNext())
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) i.next();
- String name = elementDeclaration.getQName(xsdSchema);
- if (name != null)
- {
- items.add(name);
- }
- }
- }
- // items = addExternalImportedGlobalElements(items);
- items = (Vector) sortList(items);
- }
- return items;
- }
-
- public String getGlobalElement(XSDSchema relativeComponent)
- {
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getElementDeclarations() != null)
- {
- Iterator i = xsdSchema.getElementDeclarations().iterator();
- while (i.hasNext()) // just get the first one
- {
- XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) i.next();
- if (elementDeclaration.getQName(relativeComponent) != null)
- {
- return elementDeclaration.getQName(relativeComponent);
- }
- }
- }
-
- Vector items = new Vector();
- items = addExternalImportedGlobalElements(items);
- if (items != null && items.size() > 0)
- {
- return items.get(0).toString();
- }
- }
- return null; // for disabling menu
- }
-
- public java.util.List getGlobalAttributes()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getAttributeDeclarations() != null)
- {
- Iterator i = xsdSchema.getAttributeDeclarations().iterator();
- while (i.hasNext())
- {
- XSDAttributeDeclaration attributeDeclaration = (XSDAttributeDeclaration) i.next();
- if (attributeDeclaration.getTargetNamespace() == null || (attributeDeclaration.getTargetNamespace() != null && !attributeDeclaration.getTargetNamespace().equals(XSDConstants.SCHEMA_INSTANCE_URI_2001)))
- {
- String name = attributeDeclaration.getQName(xsdSchema);
- if (name != null)
- {
- items.add(name);
- }
- }
- }
- }
- // items = addExternalImportedAttributes(items);
- items = (Vector) sortList(items);
- }
- return items;
- }
-
- public String getGlobalAttribute(XSDSchema relativeComponent)
- {
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getAttributeDeclarations() != null)
- {
- Iterator i = xsdSchema.getAttributeDeclarations().iterator();
- while (i.hasNext()) // just get the first one
- {
- XSDAttributeDeclaration attributeDeclaration = (XSDAttributeDeclaration) i.next();
- // Filter out attributes from the schema namespace
- if (!(attributeDeclaration.getTargetNamespace().equals(XSDConstants.SCHEMA_INSTANCE_URI_2001)))
- {
- if (attributeDeclaration.getQName(relativeComponent) != null)
- {
- return attributeDeclaration.getQName(relativeComponent);
- }
- }
- }
- }
-
- Vector items = new Vector();
- items = addExternalImportedAttributes(items);
- if (items != null && items.size() > 0)
- {
- return items.get(0).toString();
- }
- }
- return null; // for disabling menu
- }
-
- public java.util.List getGlobalAttributeGroups()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getAttributeGroupDefinitions() != null)
- {
- Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator();
- while (i.hasNext())
- {
- XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) i.next();
- String name = attributeGroupDefinition.getQName(xsdSchema);
- if (name != null)
- {
- items.add(name);
- }
- }
- }
- // items = addExternalImportedAttributeGroups(items);
- items = (Vector) sortList(items);
- }
- return items;
- }
-
- public String getGlobalAttributeGroup(XSDSchema relativeComponent)
- {
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getAttributeGroupDefinitions() != null)
- {
- Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator();
- while (i.hasNext()) // just get the first one
- {
- XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) i.next();
- if (attributeGroupDefinition.getQName(relativeComponent) != null)
- {
- return attributeGroupDefinition.getQName(relativeComponent);
- }
- }
- }
-
- Vector items = new Vector();
- items = addExternalImportedAttributeGroups(items);
- if (items != null && items.size() > 0)
- {
- return items.get(0).toString();
- }
- }
- return null; // for disabling menu
- }
-
- public java.util.List getModelGroups()
- {
- Vector items = new Vector();
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getModelGroupDefinitions() != null)
- {
- Iterator i = xsdSchema.getModelGroupDefinitions().iterator();
- while (i.hasNext())
- {
- XSDModelGroupDefinition modelGroupDefinition = (XSDModelGroupDefinition) i.next();
- String name = modelGroupDefinition.getQName(xsdSchema);
- if (name != null)
- {
- items.add(name);
- }
- }
- }
- // items = addExternalImportedGroups(items);
- items = (Vector) sortList(items);
- }
- return items;
- }
-
- public static java.util.List sortList(java.util.List types)
- {
- try
- {
- java.util.Collections.sort(types); // performance? n*log(n)
- }
- catch (Exception e)
- {
-// XSDEditorPlugin.getPlugin().getMsgLogger().write("Sort failed");
- }
- return types;
- }
-
- public String getModelGroup(XSDSchema relativeComponent)
- {
- if (xsdSchema != null)
- {
- updateExternalImportGlobals();
- if (xsdSchema.getModelGroupDefinitions() != null)
- {
- Iterator i = xsdSchema.getModelGroupDefinitions().iterator();
- while (i.hasNext()) // just get the first one
- {
- XSDModelGroupDefinition modelGroupDefinition = (XSDModelGroupDefinition) i.next();
- if (modelGroupDefinition.getQName(relativeComponent) != null)
- {
- return modelGroupDefinition.getQName(relativeComponent);
- }
- }
- }
-
- Vector items = new Vector();
- items = addExternalImportedGroups(items);
- if (items != null && items.size() > 0)
- {
- return items.get(0).toString();
- }
- }
- return null; // for disabling menu
- }
-
- public void updateMapAfterDelete(XSDImport deletedNode)
- {
- String ns = deletedNode.getNamespace();
- if (ns != null)
- {
- String prefix = getPrefix(ns, false);
- if (prefix != null)
- {
- prefix = prefix.trim();
- }
- String xmlnsAttr = (prefix == "") ? "xmlns" : "xmlns:" + prefix;
-
- if (prefix == "")
- {
- prefix = null;
- }
-
- if (xsdSchema != null)
- {
- Map map = xsdSchema.getQNamePrefixToNamespaceMap();
- map.remove(prefix);
- Element schemaElement = xsdSchema.getElement();
- schemaElement.removeAttribute(xmlnsAttr);
- }
- }
- }
-
- public List getPrefixedNames(String namespace, String localName)
- {
- List list = new ArrayList();
- if (namespace == null)
- {
- namespace = "";
- }
- if (xsdSchema != null && localName != null)
- {
- List prefixes = getPrefixesForNamespace(namespace);
- for (Iterator i = prefixes.iterator(); i.hasNext(); )
- {
- String prefix = (String)i.next();
- if (prefix == null) prefix = "";
- String prefixedName = prefix.length() > 0 ? prefix + ":" + localName : localName;
- list.add(prefixedName);
- }
- if (prefixes.size() == 0)
- {
- list.add(localName);
- }
- }
- return list;
- }
-
- protected List getPrefixesForNamespace(String namespace)
- {
- List list = new ArrayList();
- Map map = xsdSchema.getQNamePrefixToNamespaceMap();
- for (Iterator iter = map.keySet().iterator(); iter.hasNext();)
- {
- String prefix = (String) iter.next();
- Object value = map.get(prefix);
- if (value != null && value.toString().equals(namespace))
- {
- list.add(prefix);
- }
- }
- return list;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
deleted file mode 100644
index 3e71a8a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.util;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Text;
-
-public class ViewUtility
-{
- private static Font font;
-
- public static Font getFont()
- {
- if (font == null)
- {
- font = new Font(Display.getCurrent(), "ms sans serif", 8, SWT.NORMAL);
- }
- return font;
- }
-
- public static void setFont(Font newFont)
- {
- font = newFont;
- }
-
- public static void setComposite(Composite comp)
- {
- // deprecated. Remove later
- }
- public static Composite createComposite(Composite parent, int numColumns)
- {
- Composite composite = new Composite(parent, SWT.NONE);
-
- composite.setFont(getFont());
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
-
- GridData data = new GridData();
- data.verticalAlignment = GridData.FILL;
- data.horizontalAlignment = GridData.FILL;
- composite.setLayoutData(data);
- return composite;
- }
-
- public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill)
- {
- if (!horizontalFill)
- {
- createComposite(parent, numColumns);
- }
-
- Composite composite = new Composite(parent, SWT.NONE);
-
- composite.setFont(getFont());
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
-
- GridData data = new GridData();
- data.verticalAlignment = GridData.FILL;
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- composite.setLayoutData(data);
-
- return composite;
- }
-
- public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill, boolean verticalFill)
- {
- if (!horizontalFill && !verticalFill)
- {
- createComposite(parent, numColumns);
- }
-
- Composite composite = new Composite(parent, SWT.NONE);
-
- composite.setFont(getFont());
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- composite.setLayout(layout);
-
- GridData data = new GridData();
- data.verticalAlignment = GridData.FILL;
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.grabExcessVerticalSpace = true;
- composite.setLayoutData(data);
-
- return composite;
- }
-
- public static Label createHorizontalFiller(Composite parent, int horizontalSpan)
- {
- Label label = new Label(parent, SWT.LEFT);
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.horizontalSpan = horizontalSpan;
- label.setLayoutData(data);
- return label;
- }
-
- /**
- * Helper method for creating labels.
- */
- public static Label createLabel(Composite parent, String text)
- {
- Label label = new Label(parent, SWT.LEFT);
- label.setText(text);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- label.setLayoutData(data);
- return label;
- }
-
- public Label createLabel(Composite parent, int style, String text)
- {
- Label label = new Label(parent, style);
-// setColor(label);
- label.setText(text);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- label.setLayoutData(data);
- return label;
- }
-
- public static Label createLabel(Composite parent, String text, int alignment)
- {
- Label label = new Label(parent, SWT.LEFT);
- label.setText(text);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.verticalAlignment = alignment;
- label.setLayoutData(data);
- return label;
- }
-
- /**
- * Helper method for creating buttons.
- */
- public static Button createPushButton(Composite parent, String label)
- {
- Button button = new Button(parent, SWT.PUSH);
- button.setText(label);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- button.setLayoutData(data);
-
- return button;
- }
-
- public static Table createTable(Composite parent)
- {
- Table table = new Table(parent, SWT.SINGLE | SWT.BORDER);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- table.setLayoutData(data);
-
- return table;
- }
-
- /**
- * Create radio button
- */
- public static Button createRadioButton(Composite parent, String label)
- {
- Button button = new Button(parent, SWT.RADIO);
- button.setText(label);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- button.setLayoutData(data);
-
- return button;
- }
-
- /**
- * Helper method for creating check box
- */
- public static Button createCheckBox(Composite parent, String label)
- {
- Button button = new Button(parent, SWT.CHECK);
- button.setText(label);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- button.setLayoutData(data);
- return button;
- }
-
- public static Combo createComboBox(Composite parent)
- {
- return createComboBox(parent, true);
- }
-
- public static Combo createComboBox(Composite parent, boolean isReadOnly)
- {
- int style = isReadOnly == true ? SWT.READ_ONLY : SWT.DROP_DOWN;
-
- Combo combo = new Combo(parent, style);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- combo.setLayoutData(data);
- return combo;
- }
-
- public static List createListBox(Composite parent, int width, boolean isMultiSelect)
- {
- int style = isMultiSelect ? SWT.MULTI : SWT.SINGLE;
- List list = new List(parent, style | SWT.BORDER);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.widthHint = width;
- list.setLayoutData(data);
-
- return list;
- }
-
- public static List createListBox(Composite parent, int style)
- {
- List list = new List(parent, style);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.verticalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.grabExcessVerticalSpace = true;
- list.setLayoutData(data);
-
- return list;
- }
-
- public Text createTextField(Composite parent)
- {
- Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.verticalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- text.setLayoutData(data);
-// text.addKeyListener(keyboardHandler);
- return text;
- }
-
- public static Text createTextField(Composite parent, int width)
- {
- Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.widthHint = width;
- text.setLayoutData(data);
-
- return text;
- }
-
- /**
- * <code>createWrappedMultiTextField</code> creates a wrapped multitext field
- *
- * @param parent a <code>Composite</code> value
- * @param width an <code>int</code> value
- * @param numLines an <code>int</code> value representing number of characters in height
- * @param verticalFill a <code>boolean</code> value
- * @return a <code>Text</code> value
- */
- public static Text createWrappedMultiTextField(Composite parent, int width, int numLines, boolean verticalFill)
- {
- Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- if (verticalFill)
- {
- data.verticalAlignment = GridData.FILL;
- data.grabExcessVerticalSpace = true;
- }
- data.widthHint = width;
- FontData[] fontData = getFont().getFontData();
- // hack for now where on Windows, only 1 fontdata exists
- data.heightHint = numLines * fontData[0].getHeight();
- text.setLayoutData(data);
-
- return text;
- }
-
- public static Text createMultiTextField(Composite parent, int width, int height, boolean verticalFill)
- {
- Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- if (verticalFill)
- {
- data.verticalAlignment = GridData.FILL;
- data.grabExcessVerticalSpace = true;
- }
- data.widthHint = width;
- data.heightHint = height;
- text.setLayoutData(data);
-
- return text;
- }
-
- public static Group createGroup(Composite parent, int numColumns, String text, boolean verticalFill)
- {
- Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
- group.setText(text);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- if (verticalFill)
- {
- data.verticalAlignment = GridData.FILL;
- data.grabExcessVerticalSpace = true;
- }
- group.setLayoutData(data);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- group.setLayout(layout);
- return group;
- }
-
- public static Group createGroup(Composite parent, int numColumns, String text, boolean verticalFill, int alignment)
- {
- Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
- group.setText(text);
-
- GridData data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- data.grabExcessHorizontalSpace = true;
- data.verticalAlignment = alignment;
- if (verticalFill)
- {
- data.verticalAlignment = GridData.FILL;
- data.grabExcessVerticalSpace = true;
- }
- group.setLayoutData(data);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = numColumns;
- group.setLayout(layout);
- return group;
- }
-
- public static Label createVerticalFiller(Composite parent, int verticalSpan)
- {
- Label label = new Label(parent, SWT.LEFT);
- label.setFont(getFont());
-
- GridData data = new GridData();
- data.verticalAlignment = GridData.FILL;
- data.verticalSpan = verticalSpan;
- label.setLayoutData(data);
-
- return label;
- }
-
- /**
- * Creates a grid data object that occupies vertical and horizontal
- * space.
- */
- static public GridData createFill()
- {
- GridData gd= new GridData();
- gd.horizontalAlignment= GridData.FILL;
- gd.grabExcessHorizontalSpace= true;
- gd.verticalAlignment= GridData.FILL;
- gd.grabExcessVerticalSpace= true;
- return gd;
- }
- /**
- * Creates a grid data object that occupies horizontal space.
- */
- static public GridData createHorizontalFill()
- {
- GridData gd= new GridData();
- gd.horizontalAlignment= GridData.FILL;
- gd.grabExcessHorizontalSpace= true;
- return gd;
- }
- /**
- * Creates a grid data object that occupies vertical space.
- */
- static public GridData createVerticalFill()
- {
- GridData gd= new GridData();
- gd.verticalAlignment= GridData.FILL;
- gd.grabExcessVerticalSpace= true;
- return gd;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
deleted file mode 100644
index 8d18a11..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
+++ /dev/null
@@ -1,1136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.util;
-
-import java.util.ArrayList;
-
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-public class XSDDOMHelper
-{
- public static final int LENGTH_FACET = 1;
- public static final int MIN_LENGTH_FACET = 2;
- public static final int MAX_LENGTH_FACET = 3;
- public static final int PATTERN_FACET = 4;
- public static final int ENUM_FACET = 5;
- public static final int WHITE_SPACE_FACET = 6;
-
- public static final int MAX_INCLUSIVE_FACET = 7;
- public static final int MAX_EXCLUSIVE_FACET = 8;
- public static final int MIN_INCLUSIVE_FACET = 9;
- public static final int MIN_EXCLUSIVE_FACET = 10;
-
- public static final int TOTAL_DIGITS_FACET = 11;
- public static final int FRACTION_DIGITS_FACET = 12;
-
- public static final int N_FACETS = 13;
-
- public static String[][] dataType =
- {
- //
- // Table format:
- // Type
- // Length, MinLength, MaxLength, Pattern, Enumeration,whiteSpace
- // MaxInclusive, MaxExclusive, MinInclusive, MinExclusive, TotalDigits, FractionDigits
- //
-
- // 0
- { "anySimpleType",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 1
- { "anyType",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
-
- // 2
- { "anyURI",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 3
- { "base64Binary",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 4
- { "boolean",
- "N", "N", "N", "Y", "N", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 5
- { "byte",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 6
- { "date",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 7
- { "dateTime",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 8
- { "decimal",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
-
- // 9
- { "double",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 10
- { "duration",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 11
- { "ENTITY",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 12
- { "ENTITIES",
- "Y", "Y", "Y", "N", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 13
- { "float",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 14
- { "gDay",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 15
- { "gMonth",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 16
- { "gMonthDay",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 17
- { "gYear",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 18
- { "gYearMonth",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 19
- { "hexBinary",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 20
- { "ID",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 21
- { "IDREF",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 22
- { "IDREFS",
- "Y", "Y", "Y", "N", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 23
- { "int",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 24
- { "integer",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 25
- { "language",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 26
- { "long",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 27
- { "Name",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
-
- // 28
- { "NCName",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 29
- { "negativeInteger",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 30
- { "NMTOKEN",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 31
- { "NMTOKENS",
- "Y", "Y", "Y", "N", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 32
- { "nonNegativeInteger",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 33
- { "nonPositiveInteger",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 34
- { "normalizedString",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
-
- },
-
- // 35
- { "NOTATION",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
-
- },
-
- // 36
- { "positiveInteger",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 37
- { "QName",
- "N", "N", "N", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 38
- { "short",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 39
- { "string",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 40
- { "time",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "N", "N",
- },
-
- // 41
- { "token",
- "Y", "Y", "Y", "Y", "Y", "Y",
- "N", "N", "N", "N", "N", "N",
- },
-
- // 42
- { "unsignedByte",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 43
- { "unsignedInt",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 44
- { "unsignedLong",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- // 45
- { "unsignedShort",
- "N", "N", "N", "Y", "Y", "Y",
- "Y", "Y", "Y", "Y", "Y", "Y",
- },
-
- };
-
- public static String XMLSchemaURI = "http://www.w3.org/2001/XMLSchema";
-
- /**
- * Constructor for XSDDOMHelper.
- */
- public XSDDOMHelper()
- {
- super();
- }
-
- public Node getChildNode(Element parent, String childName)
- {
-/* NodeList nodeList = parent.getElementsByTagNameNS(XMLSchemaURI, childName);
- if (nodeList.getLength() > 0)
- return nodeList.item(0);
- return null;
-*/
- NodeList list = null;
- if (parent != null)
- {
- list = parent.getChildNodes();
- }
-
- if (list != null)
- {
- // Performance issue perhaps?
- for (int i = 0; i < list.getLength(); i++)
- {
- if (list.item(i) instanceof Element)
- {
- if (list.item(i).getLocalName().equals(childName))
- {
- return list.item(i);
- }
- }
- }
- }
- return null;
- }
-
- public static String SIMPLE_TYPE = "Simple";
- public static String USER_SIMPLE_TYPE = "simpleType";
- public static String USER_COMPLEX_TYPE = "complexType";
-/*
- public void setElementType(Element element, String type)
- {
- Document doc = element.getOwnerDocument();
- if (type.equals(SIMPLE_TYPE))
- {
- removeChild(element, USER_SIMPLE_TYPE);
- removeChild(element, USER_COMPLEX_TYPE);
- element.setAttribute("type","xsd:string");
- return;
- }
- else if (type.equals(USER_SIMPLE_TYPE))
- {
- removeChild(element, USER_COMPLEX_TYPE);
- }
- else
- {
- removeChild(element, USER_SIMPLE_TYPE);
- }
- element.removeAttribute("type");
- element.appendChild(doc.createElement("xsd:"+type));
- }
-
- public String getElementType(Element element)
- {
- String tagName = element.getLocalName();
-
- if (tagName.equals(XSDConstants.ELEMENT_ELEMENT_TAG) ||
- tagName.equals(XSDConstants.ATTRIBUTE_ELEMENT_TAG))
- {
- if (element.hasAttribute("type"))
- {
- return SIMPLE_TYPE;
- }
- NodeList nodes = element.getElementsByTagNameNS(XMLSchemaURI, USER_SIMPLE_TYPE);
- if (nodes.getLength() > 0)
- {
- return USER_SIMPLE_TYPE;
- }
- nodes = element.getElementsByTagNameNS(XMLSchemaURI, USER_COMPLEX_TYPE);
- if (nodes.getLength() > 0)
- {
- return USER_COMPLEX_TYPE;
- }
- }
- return "";
- }
-*/
- public void removeDerivedByElement(Element element)
- {
- removeChild(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
- removeChild(element, XSDConstants.EXTENSION_ELEMENT_TAG);
- }
-
- public String getBaseType(Element element) // for SimpleContent and ComplexContent
- {
- Node restrictionChild = getChildNode(element, "restriction");
- Node extensionChild = getChildNode(element, "extension");
- String baseType = "";
- if (restrictionChild != null)
- {
- if (restrictionChild instanceof Element)
- {
- baseType = ((Element)restrictionChild).getAttribute("base");
-// String prefix = element.getPrefix();
-// if (prefix != null && prefix.length() > 0)
-// {
-// baseType = baseType.substring(baseType.indexOf(prefix) + prefix.length() + 1);
-// }
- }
- }
- else if (extensionChild != null) // should be one or the other
- {
- if (extensionChild instanceof Element)
- {
- baseType = ((Element)extensionChild).getAttribute("base");
-// String prefix = element.getPrefix();
-// if (prefix != null && prefix.length() > 0)
-// {
-// baseType = baseType.substring(baseType.indexOf(prefix) + prefix.length() + 1);
-// }
- }
- }
- return baseType;
- }
-
- public void setDerivedByBaseType(Element element, String derivedByType, String type)
- {
- Document doc = element.getOwnerDocument();
-
- Element derivedByElement = getDerivedByElement(element);
- if (derivedByElement != null)
- {
- derivedByElement.setAttribute("base", type);
- }
- else // there really should be one already...base is required.
- {
- Element newElement = doc.createElement(derivedByType);
- newElement.setAttribute("base", type);
- element.appendChild(newElement);
- }
- }
-
- public void changeDerivedByType(Element element, String derivedByType, String type)
- {
- Document doc = element.getOwnerDocument();
-
- String prefix = element.getPrefix();
- prefix = prefix == null ? "" : prefix + ":";
-
- Element derivedByElement = getDerivedByElement(element);
-
- if (derivedByElement != null && derivedByElement.getLocalName().equals(derivedByType))
- {
- return; // it's already the derived by type
- }
- Element newNode;
- if (derivedByType.equals("restriction"))
- {
- newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
- }
- else
- {
- newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.EXTENSION_ELEMENT_TAG);
- }
-
- newNode.setAttribute("base", type);
-
- if (derivedByElement != null)
- {
- if (derivedByElement.hasChildNodes())
- {
- NodeList nodes = derivedByElement.getChildNodes();
- // use clones so we don't have a refresh problem
- for (int i = 0; i < nodes.getLength(); i++)
- {
- Node node = nodes.item(i);
- newNode.appendChild(node.cloneNode(true));
- }
- }
- element.replaceChild(newNode, derivedByElement);
- }
- else
- {
- Element parent = (Element) element.getParentNode(); // get back to complexType
- NodeList nodes = parent.getChildNodes();
- ArrayList nodeSaveList = new ArrayList();
-
- // save children. (nodes turns out to be the same object as parent;
- // deleting them from parent will delete them from nodes.)
- for (int i = 0; i < nodes.getLength(); i++)
- {
- Node node = nodes.item(i);
- nodeSaveList.add(node);
- }
-
- // remove children so we can surround them by complexContent
- for (int i = 0; i < nodeSaveList.size(); i++)
- {
- Node node = (Node) nodeSaveList.get(i);
- parent.removeChild(node);
- }
-
- // build a complexContent element
- Element complexContent = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.COMPLEXCONTENT_ELEMENT_TAG);
- parent.appendChild(complexContent); // insert into complexType
- complexContent.appendChild(newNode); // insert derivation type
- for (int i = 0; i < nodeSaveList.size(); i++) // insert children previously of complexType
- {
- Node node = (Node) nodeSaveList.get(i);
- newNode.appendChild(node.cloneNode(true));
- }
-
- parent.appendChild(complexContent);
- formatChild(complexContent);
- }
- }
-
- public void setSimpleContentType(Element element, String type)
- {
- String contentTypeName = element.getLocalName();
-
- if (contentTypeName.equals(XSDConstants.UNION_ELEMENT_TAG))
- {
- element.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, type);
- }
- else if (contentTypeName.equals(XSDConstants.LIST_ELEMENT_TAG))
- {
- element.setAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, type);
- }
- else if (contentTypeName.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
- {
- element.setAttribute(XSDConstants.BASE_ATTRIBUTE, type);
- }
- }
-
- public void removeSimpleTypeContent(Element element)
- {
- String contentTypeName = element.getLocalName();
- if (contentTypeName.equals(XSDConstants.UNION_ELEMENT_TAG))
- {
- element.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
- }
- else if (contentTypeName.equals(XSDConstants.LIST_ELEMENT_TAG))
- {
- element.removeAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
- }
- else if (contentTypeName.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
- {
- element.removeAttribute(XSDConstants.BASE_ATTRIBUTE);
- }
- }
-
- public String getDerivedByName(Element element)
- {
- Node restrictionChild = getChildNode(element, "restriction");
- Node extensionChild = getChildNode(element, "extension");
- if (restrictionChild != null)
- {
- return "restriction";
- }
- if (extensionChild != null)
- {
- return "extension";
- }
- return "";
- }
-
- /**
- * Get the derived by node given the complexContent or simpleContent node
- */
- public Element getDerivedByElement(Element element)
- {
- Node restrictionChild = getChildNode(element, "restriction");
- Node extensionChild = getChildNode(element, "extension");
- if (restrictionChild != null)
- {
- if (restrictionChild instanceof Element)
- {
- return (Element)restrictionChild;
- }
- }
-
- if (extensionChild != null)
- {
- if (extensionChild instanceof Element)
- {
- return (Element)extensionChild;
- }
- }
- return null;
- }
-
- /**
- * Get the derived by node given the ComplexType node
- * Returns the first one, if say, the INVALID schema has more than one
- */
- public Element getDerivedByElementFromComplexType(Element element)
- {
- NodeList nl = element.getChildNodes();
- int j = 0;
- for (j = 0; j < nl.getLength(); j++)
- {
- Node aNode = nl.item(j);
- if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- break;
- }
- else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- break;
- }
- }
- Element derivedByNode = getDerivedByElement((Element)nl.item(j));
- return derivedByNode;
- }
-
- /**
- * Get the content model given the ComplexType node
- * Returns the first one, if say, the INVALID schema has more than one
- */
- public Element getContentModelFromParent(Element element)
- {
- NodeList nl = element.getChildNodes();
- int j = 0;
- boolean modelExists = false;
- int length = nl.getLength();
- for (j = 0; j < length; j++)
- {
- Node aNode = nl.item(j);
- if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
- {
- modelExists = true;
- break;
- }
- else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- modelExists = true;
- break;
- }
- else if (inputEquals(aNode, XSDConstants.SEQUENCE_ELEMENT_TAG, false))
- {
- modelExists = true;
- break;
- }
- else if (inputEquals(aNode, XSDConstants.CHOICE_ELEMENT_TAG, false))
- {
- modelExists = true;
- break;
- }
- else if (inputEquals(aNode, XSDConstants.ALL_ELEMENT_TAG, false))
- {
- modelExists = true;
- break;
- }
- }
- if (!modelExists)
- {
- return null;
- }
-
- Element derivedByNode = (Element)nl.item(j);
- return derivedByNode;
- }
-
- /**
- *
- */
- public void changeContentModel(Element complexTypeElement, String contentModel, Element sequenceChoiceOrAllElement)
- {
- Document doc = complexTypeElement.getOwnerDocument();
-
- String prefix = complexTypeElement.getPrefix();
- prefix = prefix == null ? "" : prefix + ":";
-
- Element contentModelElement = getContentModelFromParent(complexTypeElement);
-
- if (contentModelElement.getLocalName().equals(contentModel))
- {
- return; // it's already the content model
- }
- Element newNode;
- newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
-
- if (contentModelElement.hasChildNodes())
- {
- NodeList nodes = contentModelElement.getChildNodes();
- // use clones so we don't have a refresh problem
- for (int i = 0; i < nodes.getLength(); i++)
- {
- Node node = nodes.item(i);
- if (node instanceof Element)
- {
- if (node.getLocalName().equals(XSDConstants.ANNOTATION_ELEMENT_TAG))
- {
- if (!(XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.ALL_ELEMENT_TAG, false)))
- {
- newNode.appendChild(node.cloneNode(true));
- }
- }
- else if (node.getLocalName().equals(XSDConstants.RESTRICTION_ELEMENT_TAG) ||
- node.getLocalName().equals(XSDConstants.EXTENSION_ELEMENT_TAG))
- {
- newNode.appendChild(node.cloneNode(true));
- if (sequenceChoiceOrAllElement != null)
- {
- node.appendChild(sequenceChoiceOrAllElement);
- }
- }
- else
- {
- removeNodeAndWhitespace(node);
- }
- }
- else
- {
- newNode.appendChild(node.cloneNode(true));
- }
- }
- }
- complexTypeElement.replaceChild(newNode, contentModelElement);
- }
-
- public Element cloneElement(Element parent, Element sourceNode)
- {
- Document doc = parent.getOwnerDocument();
- String prefix = parent.getPrefix();
- prefix = prefix == null ? "" : prefix + ":";
-
- Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + sourceNode.getLocalName());
-
- if (sourceNode.hasChildNodes())
- {
- NodeList nodes = sourceNode.getChildNodes();
- // use clones so we don't have a refresh problem
- for (int i = 0; i < nodes.getLength(); i++)
- {
- Node node = nodes.item(i);
- newNode.appendChild(node.cloneNode(true));
- }
- }
- return newNode;
-// parent.replaceChild(newNode, sourceNode);
- }
-
- public boolean hasElementChildren(Element parentNode)
- {
- boolean hasChildrenElements = false;
- if (parentNode != null && parentNode.hasChildNodes())
- {
- NodeList nodes = parentNode.getChildNodes();
- for (int i = 0; i < nodes.getLength(); i++)
- {
- if (nodes.item(i) instanceof Element)
- {
- hasChildrenElements = true;
- break;
- }
- }
- }
- return hasChildrenElements;
- }
-
- public void removeChild(Element node, String childName)
- {
- Node child = getChildNode(node,childName);
- if (child != null)
- {
- node.removeChild(child);
- }
- }
-
- public static boolean isFacet(Object obj)
- {
- if (XSDDOMHelper.inputEquals(obj, XSDConstants.LENGTH_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.MINLENGTH_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.MAXLENGTH_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.WHITESPACE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.MAXINCLUSIVE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.MININCLUSIVE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.MINEXCLUSIVE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.TOTALDIGITS_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(obj, XSDConstants.FRACTIONDIGITS_ELEMENT_TAG, false))
- {
- return true;
- }
- return false;
- }
-
- public static void removeNodeAndWhitespace(Node node)
- {
- Node parentNode = node.getParentNode();
-
- Node nextElement = getNextElementNode(node);
- Node previousElement = getPreviousElementNode(node);
-
- Node nextSibling = node.getNextSibling();
- if (nextSibling instanceof Text)
- {
- parentNode.removeChild(nextSibling);
- }
-
- if (parentNode != null)
- {
- parentNode.removeChild(node);
- }
-
- if (nextElement != null)
- {
- formatChild(nextElement);
- }
-
- if (previousElement != null)
- {
- formatChild(previousElement);
- }
- }
-
- public static void formatChild(Node child)
- {
- if (child instanceof IDOMNode)
- {
- IDOMModel model = ((IDOMNode)child).getModel();
- try
- {
- // tell the model that we are about to make a big model change
- model.aboutToChangeModel();
-
- IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
- formatProcessor.formatNode(child);
- }
- finally
- {
- // tell the model that we are done with the big model change
- model.changedModel();
- }
- }
- }
-
- public static Node getLastElementNode(Node parent)
- {
- Node lastChild = parent.getLastChild();
-
- while (!(lastChild instanceof Element) && lastChild != null)
- {
- lastChild = lastChild.getPreviousSibling();
- }
- return lastChild;
- }
-
- public static Node getNextElementNode(Node node)
- {
- Node next = node.getNextSibling();
-
- while (!(next instanceof Element) && next != null)
- {
- next = next.getNextSibling();
- }
- if (next instanceof Text)
- {
- return null;
- }
- return next;
- }
-
- public static Node getPreviousElementNode(Node node)
- {
- Node previous = node.getPreviousSibling();
-
- while (!(previous instanceof Element) && previous != null)
- {
- previous = previous.getPreviousSibling();
- }
- if (previous instanceof Text)
- {
- return null;
- }
- return previous;
- }
-
- public static void moveNode(Node referenceNode, Node nodeToMove, boolean isBefore)
- {
- // this assumes that the referenceNode and node to move have the same parent
- Node parent = referenceNode.getParentNode();
-
- // Get reference nodes next and previous text strings
- String referenceNodeNextString = "";
- String referenceNodePreviousString = "";
- if (referenceNode != null)
- {
- Node referenceNodeNextSibling = referenceNode.getNextSibling();
- Node referenceNodePreviousSibling = referenceNode.getPreviousSibling();
- if (referenceNodeNextSibling instanceof Text)
- {
- referenceNodeNextString = ((Text)referenceNodeNextSibling).getData();
- }
- if (referenceNodePreviousSibling instanceof Text)
- {
- referenceNodePreviousString = ((Text)referenceNodePreviousSibling).getData();
- }
- }
- // Get the dragged node's next and previous text strings
- Node nodeToMoveNextSibling = nodeToMove.getNextSibling();
- Node nodeToMovePreviousSibling = nodeToMove.getPreviousSibling();
- Node nodeToMoveNextText = null;
- String nodeToMoveNextString = "";
- String nodeToMovePreviousString = "";
- if (nodeToMoveNextSibling instanceof Text)
- {
- nodeToMoveNextText = (Text)nodeToMoveNextSibling;
- nodeToMoveNextString = ((Text)nodeToMoveNextSibling).getData();
- }
- if (nodeToMovePreviousSibling instanceof Text)
- {
- nodeToMovePreviousString = ((Text)nodeToMovePreviousSibling).getData();
- }
-
- // Get the last element's next and previous text strings
- Node lastElement = getLastElementNode(parent);
- Node lastElementNextSibling = lastElement.getNextSibling();
- Node lastElementPreviousSibling = lastElement.getPreviousSibling();
- String lastElementNextString = "";
- String lastElementPreviousString = "";
- if (lastElementNextSibling instanceof Text)
- {
- lastElementNextString = ((Text)lastElementNextSibling).getData();
- }
- if (lastElementPreviousSibling instanceof Text)
- {
- lastElementPreviousString = ((Text)lastElementPreviousSibling).getData();
- }
-
- boolean isLastElement = false; // whether the last element is dragged/moved
- if (lastElement == nodeToMove)
- {
- isLastElement = true;
- }
-
- // defect 221056 this test is required or else the node will
- // be removed from the tree and the insert will fail
- if (referenceNode != nodeToMove)
- {
- parent.removeChild(nodeToMove);
- if (referenceNode != null)
- {
- if (!isBefore)
- {
- referenceNode = getNextElementNode(referenceNode);
-// referenceNode = referenceNode.getNextSibling();
- }
- }
-
- if (referenceNode != null)
- {
- insertBefore(nodeToMove, referenceNode);
- }
- else
- {
- parent.appendChild(nodeToMove);
- }
-
- Node newLastElement = getLastElementNode(parent);
- if (referenceNode != null)
- {
- if (referenceNode != newLastElement)
- {
- if (!isLastElement)
- {
- setTextData(referenceNode, nodeToMoveNextString, nodeToMovePreviousString);
- }
- }
- setTextData(nodeToMove, referenceNodeNextString, referenceNodePreviousString);
- }
- // Remove the empty space left by the dragged node
- if (nodeToMoveNextText != null)
- {
- parent.removeChild(nodeToMoveNextText);
- }
- // special case for the last element
- if ((newLastElement == nodeToMove) || isLastElement)
- {
- setTextData(newLastElement, lastElementNextString, lastElementPreviousString);
- }
- }
- }
-
- public static void setTextData(Node target, String nextText, String previousText)
- {
- Node parent = target.getParentNode();
- Node nextSibling = target.getNextSibling();
- Node previousSibling = target.getPreviousSibling();
- if (nextSibling instanceof Text)
- {
- ((Text)nextSibling).setData(nextText);
- }
- if (nextSibling == null || nextSibling instanceof Element)
- {
- Text textNode = parent.getOwnerDocument().createTextNode("");
- textNode.setData(nextText);
- if (nextSibling != null)
- {
- parent.insertBefore(textNode, nextSibling);
- }
- else
- {
- parent.insertBefore(textNode, getNextElementNode(target));
- }
- }
-
- if (previousSibling instanceof Text)
- {
- ((Text)previousSibling).setData(previousText);
- }
- if (previousSibling == null || previousSibling instanceof Element)
- {
- Text textNode = parent.getOwnerDocument().createTextNode("");
- textNode.setData(previousText);
- parent.insertBefore(textNode, target);
- }
- }
-
- public static void insertBefore(Node nodeToInsert, Node referenceNode)
- {
- // this assumes that the referenceNode and node to move have the same parent
- Node parent = referenceNode.getParentNode();
- parent.insertBefore(nodeToInsert, referenceNode);
- }
-
- public static boolean inputEquals(Object input, String tagname, boolean isRef)
- {
- if (input instanceof Element)
- {
- Element element = (Element) input;
- if (element.getLocalName().equals(tagname))
- {
- boolean refPresent = element.hasAttribute("ref");
-
- return refPresent == isRef;
- }
- }
- return false;
- }
-
- public static void updateElementToNotAnonymous(Element element)
- {
- if (element != null)
- {
- NodeList children = element.getChildNodes();
- if (children != null)
- {
- for (int i = 0; i < children.getLength(); i++)
- {
- Node node = (Node)children.item(i);
- if (node instanceof Element)
- {
- if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG) ||
- node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
- {
- XSDDOMHelper.removeNodeAndWhitespace(node);
- i=0;
- }
- }
- }
- }
- }
- }
-
- public static boolean isAttributeRef(Element ct, String attrName, String ns)
- {
- NodeList list = ct.getChildNodes();
- int length = list.getLength();
- for (int i = 0; i < length; i++)
- {
- if (list.item(i) instanceof Element)
- {
- Element aChild = (Element)list.item(i);
- if (aChild.getLocalName().equals(XSDConstants.ATTRIBUTE_ELEMENT_TAG))
- {
- if (aChild.hasAttribute(XSDConstants.REF_ATTRIBUTE))
- {
- String refValue = aChild.getAttribute(XSDConstants.REF_ATTRIBUTE);
- if (refValue.equals(attrName))
- {
- return true;
- }
- }
- }
- }
-
- }
-
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaHelper.java
deleted file mode 100644
index a57e619..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaHelper.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.util;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-// TODO: KC remove this
-
-public class XSDSchemaHelper
-{
- /**
- * Constructor for XSDSchemaHelper.
- */
- public XSDSchemaHelper()
- {
- super();
- }
-
- public static void updateElement(XSDConcreteComponent concreteComp)
- {
- try
- {
- concreteComp.updateElement();
- }
- catch (Exception e)
- {
- for (Iterator containments = concreteComp.eClass().getEAllReferences().iterator(); containments.hasNext(); )
- {
- EReference eReference = (EReference)containments.next();
- if (eReference.isContainment())
- {
- if (eReference.isMany())
- {
- for (Iterator objects = ((Collection)concreteComp.eGet(eReference)).iterator(); objects.hasNext(); )
- {
- XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)objects.next();
- try
- {
- xsdConcreteComponent.updateElement();
- }
- catch (Exception ex) {}
- }
- }
- else
- {
- XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)concreteComp.eGet(eReference);
- if (xsdConcreteComponent != null)
- {
- try
- {
- xsdConcreteComponent.updateElement();
- }
- catch (Exception ex) {}
- }
- }
- }
- }
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/SetBaseTypeDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/SetBaseTypeDialog.java
deleted file mode 100644
index 21c32ab..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/SetBaseTypeDialog.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.widgets;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-
-public class SetBaseTypeDialog extends Dialog implements SelectionListener
-{
- protected Combo baseTypeCombo;
- protected Combo derivedByCombo;
- protected XSDSchema xsdSchema;
- protected Element element; // the complex type element
- private String type = "";
- private String derivedByString = "";
-
- /**
- * Constructor for SetBaseTypeDialog.
- * @param arg0
- */
- public SetBaseTypeDialog(Shell arg0, XSDSchema xsdSchema, Element element)
- {
- super(arg0);
- this.xsdSchema = xsdSchema;
- this.element = element;
- }
-
- protected void configureShell(Shell shell)
- {
- super.configureShell(shell);
- shell.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE"));
- }
-
-
- protected void buttonPressed(int buttonId)
- {
- if (buttonId == Dialog.OK)
- {
- type = baseTypeCombo.getText();
- derivedByString = derivedByCombo.getText();
- }
- super.buttonPressed(buttonId);
- }
-
- public String getBaseType()
- {
- return type;
- }
-
- public String getDerivedBy()
- {
- return derivedByString;
- }
-
- public void setCurrentBaseType(String type)
- {
- this.type = type;
- }
-
- public void setCurrentDerivedBy(String derivedByString)
- {
- this.derivedByString = derivedByString;
- }
-
- //
- // Create the controls
- //
- public Control createDialogArea(Composite parent)
- {
- Composite nameComposite = (Composite)super.createDialogArea(parent);
- GridLayout layout = (GridLayout)nameComposite.getLayout();
- layout.numColumns = 2;
- nameComposite.setLayout(layout);
-
- ViewUtility.createLabel(nameComposite, XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON"));
- baseTypeCombo = ViewUtility.createComboBox(nameComposite, true); // readonly
- baseTypeCombo.addSelectionListener(this);
-
- ViewUtility.createLabel(nameComposite, XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY"));
- derivedByCombo = ViewUtility.createComboBox(nameComposite, true); // readonly
-
- derivedByCombo.add(XSDConstants.EXTENSION_ELEMENT_TAG);
- derivedByCombo.add(XSDConstants.RESTRICTION_ELEMENT_TAG);
- derivedByCombo.setText(derivedByString);
- initializeBaseTypeCombo();
-
- if (type.equals(""))
- {
- derivedByCombo.setText("");
- derivedByCombo.setEnabled(false);
- }
-
- return nameComposite;
- }
-
- private void initializeBaseTypeCombo()
- {
- ArrayList list = new ArrayList();
- TypesHelper helper = new TypesHelper(xsdSchema);
-
- String prefix = helper.getPrefix(xsdSchema.getTargetNamespace(), true);
-
- list.add("");
- list.addAll(helper.getBuiltInTypeNamesList());
- list.addAll(helper.getUserSimpleTypeNamesList());
- list.addAll(helper.getUserComplexTypeNamesList());
-
- // remove the current CT from the list
- list.remove(prefix + element.getAttribute("name"));
-
- baseTypeCombo.removeAll();
- for (int i = 0; i < list.size(); i++)
- {
- baseTypeCombo.add(list.get(i).toString());
- }
- baseTypeCombo.setText(type);
- handleBaseTypeComboChange();
- }
-
- private void handleBaseTypeComboChange()
- {
- String tempChoice = baseTypeCombo.getText();
- TypesHelper helper = new TypesHelper(xsdSchema);
- if (helper.getBuiltInTypeNamesList().contains(tempChoice) ||
- helper.getUserSimpleTypeNamesList().contains(tempChoice))
- {
- derivedByCombo.setText(XSDConstants.EXTENSION_ELEMENT_TAG);
- derivedByCombo.setEnabled(false);
- }
- else if (helper.getUserComplexTypeNamesList().contains(tempChoice))
- {
- derivedByCombo.setEnabled(true);
- }
- else
- {
- derivedByCombo.setText("");
- derivedByCombo.setEnabled(false);
- }
- }
-
- public void widgetSelected(SelectionEvent e)
- {
- if (e.widget == baseTypeCombo)
- {
- handleBaseTypeComboChange();
- }
-
- }
-
- public void widgetDefaultSelected(SelectionEvent e)
- {
-
- }
-}