diff options
author | kmoore | 2008-02-06 19:37:53 +0000 |
---|---|---|
committer | kmoore | 2008-02-06 19:37:53 +0000 |
commit | 78ee64ca79a7dee0709870eead816b70739c4093 (patch) | |
tree | 4bdfea285bae34ea02926c7995589792ecd64c3e /jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context | |
parent | baf6e3ce3fdc095a34d8eccf53a7ae3ef3fcd3ae (diff) | |
download | webtools.dali-78ee64ca79a7dee0709870eead816b70739c4093.tar.gz webtools.dali-78ee64ca79a7dee0709870eead816b70739c4093.tar.xz webtools.dali-78ee64ca79a7dee0709870eead816b70739c4093.zip |
selection text range support, also created IJpaStructureNode interface
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context')
13 files changed, 99 insertions, 60 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IJpaContextNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IJpaContextNode.java index 44d6c71bf9..619ac03975 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IJpaContextNode.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IJpaContextNode.java @@ -11,7 +11,6 @@ package org.eclipse.jpt.core.internal.context.base; import org.eclipse.jpt.core.internal.IJpaNode; -import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.context.orm.EntityMappings; import org.eclipse.jpt.core.internal.context.orm.XmlPersistentType; @@ -28,13 +27,11 @@ public interface IJpaContextNode extends IJpaNode //TODO interface for this XmlPersistentType xmlPersistentType(); - ITextRange selectionTextRange(); /** - * return the context node at the given offset. This context node - * should be a *structural* context node, ie it should be available - * in the structure view + * Return the structure node at the given offset. This node + * will be made available in the structure view */ - IJpaContextNode contextNode(int offset); + IJpaStructureNode structureNode(int offset); } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IJpaStructureNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IJpaStructureNode.java new file mode 100644 index 0000000000..f5ef2b5054 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IJpaStructureNode.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Oracle - initial API and implementation + *******************************************************************************/ +package org.eclipse.jpt.core.internal.context.base; + +import org.eclipse.jpt.core.internal.IJpaNode; +import org.eclipse.jpt.core.internal.ITextRange; + +/** + * Implement this interface for objects that appear in the Structure view + * This is used by IJpaSelection to determine selection in the editor. + * Details pages are also provided for each IJpaStructureNode. + * + * I did not implement IJpaContextNode and I'm not even sure we should implement + * IJpaNode. It is possibly someone could want a structure node that is + * not actually a contextNode in the model. + */ +public interface IJpaStructureNode extends IJpaNode +{ + /** + * Return the text range do be used to select text in the editor + * corresponding to this node. + */ + ITextRange selectionTextRange(); + +} diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentAttribute.java index fc79ea8804..f5c9229996 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentAttribute.java @@ -10,7 +10,7 @@ package org.eclipse.jpt.core.internal.context.base; -public interface IPersistentAttribute extends IJpaContextNode +public interface IPersistentAttribute extends IJpaContextNode, IJpaStructureNode { String getName(); String NAME_PROPERTY = "nameProperty"; diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentType.java index f20708e42f..b2103c183f 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/IPersistentType.java @@ -13,7 +13,7 @@ import java.util.Iterator; import java.util.ListIterator; -public interface IPersistentType extends IJpaContextNode +public interface IPersistentType extends IJpaContextNode, IJpaStructureNode { String getName(); String NAME_PROPERTY = "nameProperty"; diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/JpaContextNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/JpaContextNode.java index f3b01275b4..65f3956dc7 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/JpaContextNode.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/base/JpaContextNode.java @@ -11,9 +11,7 @@ package org.eclipse.jpt.core.internal.context.base; import org.eclipse.jpt.core.internal.IJpaNode; -import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.JpaNode; -import org.eclipse.jpt.core.internal.SimpleTextRange; import org.eclipse.jpt.core.internal.context.orm.EntityMappings; import org.eclipse.jpt.core.internal.context.orm.XmlPersistentType; import org.eclipse.jpt.core.internal.platform.base.IJpaBaseContextFactory; @@ -60,11 +58,7 @@ public abstract class JpaContextNode extends JpaNode return ((IJpaContextNode) parent()).xmlPersistentType(); } - public ITextRange selectionTextRange() { - return new SimpleTextRange(0, 0, 0); - } - - public IJpaContextNode contextNode(int offset) { + public IJpaStructureNode structureNode(int offset) { return null; } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentAttribute.java index ab1a9ed7f4..e798840cdf 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentAttribute.java @@ -195,8 +195,13 @@ public class JavaPersistentAttribute extends JavaContextModel } public ITextRange selectionTextRange(CompilationUnit astRoot) { - return this.persistentAttributeResource.textRange(astRoot); + return this.persistentAttributeResource.nameTextRange(astRoot); + } + + public ITextRange selectionTextRange() { + return selectionTextRange(this.persistentAttributeResource.getMember().astRoot()); } + public void update(JavaPersistentAttributeResource persistentAttributeResource) { this.persistentAttributeResource = persistentAttributeResource; diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentType.java index f4ae666f40..ed2414ce7b 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/java/JavaPersistentType.java @@ -19,6 +19,7 @@ import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.context.base.AccessType; import org.eclipse.jpt.core.internal.context.base.IJpaContextNode; +import org.eclipse.jpt.core.internal.context.base.IJpaStructureNode; import org.eclipse.jpt.core.internal.context.base.IPersistentAttribute; import org.eclipse.jpt.core.internal.context.base.IPersistentType; import org.eclipse.jpt.core.internal.resource.java.Annotation; @@ -229,7 +230,7 @@ public class JavaPersistentType extends JavaContextModel implements IJavaPersist } @Override - public IJpaContextNode contextNode(int offset) { + public IJpaStructureNode structureNode(int offset) { //TODO astRoot, possibly get this instead of rebuilding it CompilationUnit astRoot = this.persistentTypeResource.getMember().astRoot(); if (!this.contains(offset, astRoot)) { @@ -270,9 +271,14 @@ public class JavaPersistentType extends JavaContextModel implements IJavaPersist } public ITextRange selectionTextRange(CompilationUnit astRoot) { - return this.persistentTypeResource.textRange(astRoot); + return this.persistentTypeResource.nameTextRange(astRoot); } - + + public ITextRange selectionTextRange() { + return this.selectionTextRange(this.persistentTypeResource.getMember().astRoot()); + } + + public Iterator<IPersistentType> inheritanceHierarchy() { // using a chain iterator to traverse up the inheritance tree return new ChainIterator<IPersistentType>(this) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappings.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappings.java index 82d8962fcb..f62795fd8b 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappings.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappings.java @@ -13,11 +13,12 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.ListIterator; import org.eclipse.jpt.core.internal.context.base.AccessType; import org.eclipse.jpt.core.internal.context.base.IJpaContextNode; +import org.eclipse.jpt.core.internal.context.base.IJpaStructureNode; import org.eclipse.jpt.core.internal.context.base.ISequenceGenerator; import org.eclipse.jpt.core.internal.context.base.ITableGenerator; import org.eclipse.jpt.core.internal.resource.orm.TypeMapping; -public interface EntityMappings extends IJpaContextNode +public interface EntityMappings extends IJpaContextNode, IJpaStructureNode { String getVersion(); diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappingsImpl.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappingsImpl.java index c4ef14fa78..4c9e6e39b1 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappingsImpl.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/EntityMappingsImpl.java @@ -14,8 +14,9 @@ import java.util.Comparator; import java.util.List; import java.util.ListIterator; import org.eclipse.jpt.core.internal.IMappingKeys; +import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.context.base.AccessType; -import org.eclipse.jpt.core.internal.context.base.IJpaContextNode; +import org.eclipse.jpt.core.internal.context.base.IJpaStructureNode; import org.eclipse.jpt.core.internal.context.base.ISequenceGenerator; import org.eclipse.jpt.core.internal.context.base.ITableGenerator; import org.eclipse.jpt.core.internal.context.base.JpaContextNode; @@ -447,33 +448,15 @@ public class EntityMappingsImpl extends JpaContextNode implements EntityMappings return false; } -// /* @see IJpaContentNode#getId() */ -// public Object getId() { -// return IXmlContentNodes.ENTITY_MAPPINGS_ID; -// } -// -// public IJpaContentNode getContentNode(int offset) { -// for (Iterator i = getTypeMappings().iterator(); i.hasNext();) { -// XmlTypeMapping mapping = (XmlTypeMapping) i.next(); -// if (mapping.getNode().contains(offset)) { -// return mapping.getContentNode(offset); -// } -// } -// return this; -// } -// -// public void javaElementChanged(ElementChangedEvent event) { -// } - @Override - public IJpaContextNode contextNode(int offset) { + public IJpaStructureNode structureNode(int offset) { if (!this.entityMappings.contains(offset)) { return null; } for (XmlPersistentType xmlPersistentType : CollectionTools.iterable(this.xmlPersistentTypes())) { - IJpaContextNode contextNode = xmlPersistentType.contextNode(offset); - if (contextNode != null) { - return contextNode; + IJpaStructureNode structureNode = xmlPersistentType.structureNode(offset); + if (structureNode != null) { + return structureNode; } } return this; @@ -730,5 +713,7 @@ public class EntityMappingsImpl extends JpaContextNode implements EntityMappings return xmlNamedNativeQuery; } - + public ITextRange selectionTextRange() { + return this.entityMappings.selectionTextRange(); + } } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlAttributeMapping.java index 5e007c0387..5e06cec375 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlAttributeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlAttributeMapping.java @@ -9,8 +9,9 @@ ******************************************************************************/ package org.eclipse.jpt.core.internal.context.orm; +import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.context.base.IAttributeMapping; -import org.eclipse.jpt.core.internal.context.base.IJpaContextNode; +import org.eclipse.jpt.core.internal.context.base.IJpaStructureNode; import org.eclipse.jpt.core.internal.context.base.JpaContextNode; import org.eclipse.jpt.core.internal.context.java.IJavaPersistentAttribute; import org.eclipse.jpt.core.internal.context.java.IJavaPersistentType; @@ -139,12 +140,18 @@ public abstract class XmlAttributeMapping<T extends AttributeMapping> extends Jp initializeFromXmlMulitRelationshipMapping(oldMapping); } - public IJpaContextNode contextNode(int offset) { + @Override + public IJpaStructureNode structureNode(int offset) { if (this.attributeMapping.contains(offset)) { return persistentAttribute(); } return null; } + + public ITextRange selectionTextRange() { + return this.attributeMapping.selectionTextRange(); + } + /** * Attributes are a sequence in the orm schema. We must keep diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentAttribute.java index 626ce04e80..e3fb041a3c 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentAttribute.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentAttribute.java @@ -13,8 +13,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.jpt.core.internal.IMappingKeys; +import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.context.base.IAttributeMapping; -import org.eclipse.jpt.core.internal.context.base.IJpaContextNode; +import org.eclipse.jpt.core.internal.context.base.IJpaStructureNode; import org.eclipse.jpt.core.internal.context.base.IPersistentAttribute; import org.eclipse.jpt.core.internal.context.base.JpaContextNode; import org.eclipse.jpt.core.internal.resource.orm.AttributeMapping; @@ -116,10 +117,15 @@ public class XmlPersistentAttribute extends JpaContextNode firePropertyChanged(SPECIFIED_MAPPING_PROPERTY, oldMapping, this.attributeMapping); } - public IJpaContextNode contextNode(int offset) { - return this.attributeMapping.contextNode(offset); + @Override + public IJpaStructureNode structureNode(int offset) { + return this.attributeMapping.structureNode(offset); } + public ITextRange selectionTextRange() { + return this.attributeMapping.selectionTextRange(); + } + public Collection<IXmlAttributeMappingProvider> attributeMappingProviders() { return this.attributeMappingProviders; } diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentType.java index cbdceb896e..aca32d5d3e 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentType.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlPersistentType.java @@ -16,8 +16,9 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; import org.eclipse.jpt.core.internal.IMappingKeys; +import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.context.base.AccessType; -import org.eclipse.jpt.core.internal.context.base.IJpaContextNode; +import org.eclipse.jpt.core.internal.context.base.IJpaStructureNode; import org.eclipse.jpt.core.internal.context.base.IPersistentAttribute; import org.eclipse.jpt.core.internal.context.base.IPersistentType; import org.eclipse.jpt.core.internal.context.base.JpaContextNode; @@ -89,11 +90,6 @@ public class XmlPersistentType extends JpaContextNode implements IPersistentType this.specifiedPersistentAttributes = new ArrayList<XmlPersistentAttribute>(); this.virtualPersistentAttributes = new ArrayList<XmlPersistentAttribute>(); } - -// /* @see IJpaContentNode#getId() */ -// public Object getId() { -// return IXmlContentNodes.PERSISTENT_TYPE_ID; -// } public boolean isFor(String fullyQualifiedTypeName) { String className = getMapping().getClass_(); @@ -776,12 +772,12 @@ public class XmlPersistentType extends JpaContextNode implements IPersistentType } @Override - public IJpaContextNode contextNode(int offset) { - if (this.xmlTypeMapping.contextNode(offset) == null) { + public IJpaStructureNode structureNode(int offset) { + if (this.xmlTypeMapping.structureNode(offset) == null) { return null; } for (XmlPersistentAttribute attribute : CollectionTools.iterable(this.attributes())) { - IJpaContextNode contextNode = attribute.contextNode(offset); + IJpaStructureNode contextNode = attribute.structureNode(offset); if (contextNode != null) { return contextNode; } @@ -789,6 +785,10 @@ public class XmlPersistentType extends JpaContextNode implements IPersistentType return this; } + public ITextRange selectionTextRange() { + return this.xmlTypeMapping.selectionTextRange(); + } + public IPersistentAttribute resolveAttribute(String attributeName) { Iterator<XmlPersistentAttribute> attributes = attributesNamed(attributeName); if (attributes.hasNext()) { diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlTypeMapping.java index 27c66edeb2..2fffb0105f 100644 --- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlTypeMapping.java +++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/orm/XmlTypeMapping.java @@ -10,8 +10,9 @@ package org.eclipse.jpt.core.internal.context.orm; import java.util.Iterator; +import org.eclipse.jpt.core.internal.ITextRange; import org.eclipse.jpt.core.internal.context.base.AccessType; -import org.eclipse.jpt.core.internal.context.base.IJpaContextNode; +import org.eclipse.jpt.core.internal.context.base.IJpaStructureNode; import org.eclipse.jpt.core.internal.context.base.ITypeMapping; import org.eclipse.jpt.core.internal.context.base.JpaContextNode; import org.eclipse.jpt.core.internal.context.java.IJavaPersistentType; @@ -143,12 +144,16 @@ public abstract class XmlTypeMapping<E extends TypeMapping> extends JpaContextNo } @Override - public IJpaContextNode contextNode(int offset) { + public IJpaStructureNode structureNode(int offset) { if (this.typeMapping.contains(offset)) { return persistentType(); } return null; } + + public ITextRange selectionTextRange() { + return this.typeMapping.selectionTextRange(); + } public Table primaryDbTable() { return null; |