|
Re: [EuGENia] Reorder nodes in ECore2GMF.eol [message #519267 is a reply to message #519236] |
Mon, 08 March 2010 10:27 |
Dimitrios Kolovos Messages: 1776 Registered: July 2009 |
Senior Member |
|
|
Hi Ralf,
I've scribbled the following ECore2GMF.eol that does this:
var objectsToolGroup = GmfTool!ToolGroup.all.selectOne(g|g.title="Objects");
objectsToolGroup.reorder(Sequence{"D", "C", "B", "A"});
operation GmfTool!ToolGroup reorder(order : Sequence(String)) {
var reordered = new Sequence;
for (item in order) {
var tool = self.tools.selectOne(t|t.title = item);
if (tool.isDefined()) {
reordered.add(tool);
}
}
self.tools = reordered;
}
for the following exemplar metamodel:
@namespace(uri="reordertools", prefix="reordertools")
package reordertools;
@gmf.diagram(foo="bar")
class Model {
val ModelElement[*] contents;
}
@gmf.node(label="name")
abstract class ModelElement {
attr String name;
}
class A extends ModelElement {
}
class B extends ModelElement {
}
class C extends ModelElement {
}
class D extends ModelElement {
}
If you need to inspect an existing model/built-in metamodel, Exeed and
the EPackage registry view can be very useful:
http://epsilonblog.wordpress.com/2008/07/17/inspecting-emf-m odels-with-exeed/
http://www.eclipse.org/gmt/epsilon/doc/articles/epackage-reg istry-view/
Cheers,
Dimitris
Ralf wrote:
> Moin, moin,
>
> I'm trying to reorder the Tool Nodes in my Eugenia generated
> gmftool-file with ECore2GMF.eol. By now I have no idea how to access the
> child nodes and alter the order of the nodes. The tree example in the
> EpsilonBook shows a children attribute but these lines do not work:
>
> var toolGroupObjects = GmfTool!ToolGroup.all.selectOne(r|r.title =
> 'Objects');
> var fooNode = toolGroupObjects.children.all.selectOne(t|t.title = 'Foo');
>
> How can I access the children of a specific node in the GmfTool tree ?
>
--
Spread the word: http://www.eclipse.org/gmt/epsilon/spreadtheword
Follow Epsilon on Twitter: http://twitter.com/epsilonews
|
|
|
|
Powered by
FUDForum. Page generated in 0.07254 seconds