Show EObject in Diagram [message #919930] |
Sat, 22 September 2012 14:18 |
Philipp El Messages: 14 Registered: September 2012 |
Junior Member |
|
|
Hi,
i have a problem with showing EOject elements in diagram.
Deleting a View from the diagram i have already solved as followed:
The method call is done in the following code fragment:
ReferencableElement elementToHide = (ReferencableElement)(selectedItem.getData());
...
HelperClass.deleteViewObjectOf(elementToHide);
The following two methods give the Command for deletion:
public static CompoundCommand deleteViewObjectOf (Object element) {
List<Object> singleElementList = new ArrayList<Object>();
singleElementList.add(element);
return deleteViewObjectOf(singleElementList);
}
public static CompoundCommand deleteViewObjectOf (Collection<?> elements) {
if (getEditingDomain() != null) {
Diagram d = ModelUtils.getDiagram(getEditingDomain());
CompoundCommand cc = new CompoundCommand(Messages.Helpers_hide_all_elements);
Hashtable<Object, Object> model hash = new Hashtable<Object, Object>();
for (Object obj : elements) {
modelhash.put(obj, obj);
}
DiagramCommandStack dcs = modeller.getDefaultViewDiagramCommandStack();
org.eclipse.gef.commands.CompoundCommand gefcc = new org.eclipse.gef.commands.CompoundCommand();
for (Object obj : d.getChildren()) {
if (obj instanceof View) {
View v = (View)obj;
v.getElement();
if (model hash.containsKey(v.getElement())) {
org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand dc = new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), v);
gefcc.add(new ICommandProxy(dc));
}
}
}
for (Object obj : d.getEdges()) {
if (obj instanceof View) {
View v = (View)obj;
v.getElement();
if (model hash.containsKey(v.getElement())) {
org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand dc = new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), v);
gefcc.add(new ICommandProxy(dc));
}
}
}
try {
dcs.execute(gefcc);
}
catch(Exception ex) {
ex.printStackTrace();
}
cc.append(new DeleteCommand(getEditingDomain(), elements))
return cc;
}
return null;
}
Deleting View elements works fine as already mentioned.
Now my question: How should i adjust the following method that an EObject or a ReferencableElement can be shown?
public static CompoundCommand deleteViewObjectOf (Collection<?> elements) {
if (getEditingDomain() != null) {
Diagram d = ModelUtils.getDiagram(getEditingDomain());
CompoundCommand cc = new CompoundCommand(Messages.Helpers_hide_all_elements);
Hashtable<Object, Object> model hash = new Hashtable<Object, Object>();
for (Object obj : elements) {
modelhash.put(obj, obj);
}
DiagramCommandStack dcs = modeller.getDefaultViewDiagramCommandStack();
org.eclipse.gef.commands.CompoundCommand gefcc = new org.eclipse.gef.commands.CompoundCommand();
for (Object obj : d.getChildren()) {
if (obj instanceof View) {
View v = (View)obj;
v.getElement();
if (model hash.containsKey(v.getElement())) {
//todo
}
}
}
for (Object obj : d.getEdges()) {
if (obj instanceof View) {
View v = (View)obj;
v.getElement();
if (model hash.containsKey(v.getElement())) {
//todo
}
}
}
try {
dcs.execute(gefcc);
}
catch(Exception ex) {
ex.printStackTrace();
}
//todo
return cc;
}
return null;
}
Thanks and best regards,
Philipp
[Updated on: Sat, 22 September 2012 14:21] Report message to a moderator
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03460 seconds