[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.modeling.tmf] Re: ISemanticModelTransformer and virtual nodes.

Drew,

you need to provide getChildren() methods for each parent node for which you want to control the child nodes.

Try this:

protected List<EObject> getChildren(Model model) {
 List<EObject> result = new ArrayList<EObject>();
 VirtualNodeApples apples = new VirtualNodeApples(model);
 VirtualNodeOranges oranges = new VirtualNodeOranges(model);
 result.add(apples);
 result.add(oranges);
 return result;
}

protected List<EObject> getChildren(VirtualNodeApples apples) {
 List<EObject> result = new ArrayList<EObject>();
 EList<Fruit> fruits = apples.getFruits();
 for (Fruit fruit : fruits) {
   if (fruit instanceof Apple) {
     result.add(fruit);
   }
 }
 return result;
}


The VirtualNodeApples and VirtualNodeOranges classes actually are wrappers for the model root class:


public class VirtualNodeApplesOrOranges extends ModelImpl implements Model { private final Model model;

 public VirtualNodeApplesOrOranges(Model model) {
   this.model = model;
 }

 public EList<Adapter> eAdapters() {
   return model.eAdapters();
 }

..
}



public class VirtualNodeApples extends VirtualNodeApplesOrOranges {
 public VirtualNodeEntity(Model model) {
   super(model);
 }
}


Hope this helps, Peter