diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/scoping/ConfigScopeProvider.java')
-rw-r--r-- | plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/scoping/ConfigScopeProvider.java | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/scoping/ConfigScopeProvider.java b/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/scoping/ConfigScopeProvider.java index 1d62c848f..b8fdae79b 100644 --- a/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/scoping/ConfigScopeProvider.java +++ b/plugins/org.eclipse.etrice.core.config/src/org/eclipse/etrice/core/scoping/ConfigScopeProvider.java @@ -23,8 +23,8 @@ import org.eclipse.etrice.core.config.PortInstanceConfig; import org.eclipse.etrice.core.config.ProtocolClassConfig; import org.eclipse.etrice.core.config.util.ConfigUtil; import org.eclipse.etrice.core.room.ActorClass; -import org.eclipse.etrice.core.room.ActorContainerClass; import org.eclipse.etrice.core.room.Attribute; +import org.eclipse.etrice.core.room.DataClass; import org.eclipse.etrice.core.room.InterfaceItem; import org.eclipse.etrice.core.room.PortClass; import org.eclipse.etrice.core.room.SubSystemClass; @@ -52,10 +52,10 @@ public class ConfigScopeProvider extends AbstractDeclarativeScopeProvider { .eContainer(); SubSystemClass subsystem = actorConfig.getRoot(); if (subsystem != null) { - ActorContainerClass acc = ConfigUtil.resolve(subsystem, - actorConfig.getPath()); + ActorClass ac = ConfigUtil + .resolve(subsystem, actorConfig.getPath()); for (InterfaceItem item : ConfigUtil.getConfigurableInterfaceItems( - acc, true)) + ac, true)) scopes.add(EObjectDescription.create(item.getName(), item)); } @@ -65,7 +65,9 @@ public class ConfigScopeProvider extends AbstractDeclarativeScopeProvider { public IScope scope_AttrConfig_attribute(AttrConfig ctx, EReference ref) { final List<IEObjectDescription> scopes = new ArrayList<IEObjectDescription>(); - if (ctx.eContainer() instanceof ActorClassConfig) + if (ctx.eContainer() instanceof AttrConfig) + collectAttributes((AttrConfig) ctx.eContainer(), scopes); + else if (ctx.eContainer() instanceof ActorClassConfig) collectAttributes((ActorClassConfig) ctx.eContainer(), scopes); else if (ctx.eContainer() instanceof ActorInstanceConfig) collectAttributes((ActorInstanceConfig) ctx.eContainer(), scopes); @@ -76,6 +78,17 @@ public class ConfigScopeProvider extends AbstractDeclarativeScopeProvider { return new SimpleScope(IScope.NULLSCOPE, scopes); } + private void collectAttributes(AttrConfig config, + List<IEObjectDescription> scopes) { + if (config.getAttribute().getRefType().getType() instanceof DataClass) { + DataClass dc = (DataClass) config.getAttribute().getRefType() + .getType(); + for (Attribute att : RoomHelpers.getAllAttributes(dc)) { + scopes.add(EObjectDescription.create(att.getName(), att)); + } + } + } + private void collectAttributes(ActorClassConfig config, List<IEObjectDescription> scopes) { ActorClass actor = config.getActor(); @@ -90,13 +103,9 @@ public class ConfigScopeProvider extends AbstractDeclarativeScopeProvider { List<IEObjectDescription> scopes) { SubSystemClass subsystem = config.getRoot(); if (subsystem != null) { - ActorContainerClass actor = ConfigUtil.resolve(subsystem, - config.getPath()); - if (actor instanceof ActorClass) { - for (Attribute att : RoomHelpers - .getAllAttributes((ActorClass) actor)) { - scopes.add(EObjectDescription.create(att.getName(), att)); - } + ActorClass actor = ConfigUtil.resolve(subsystem, config.getPath()); + for (Attribute att : RoomHelpers.getAllAttributes(actor)) { + scopes.add(EObjectDescription.create(att.getName(), att)); } } } |