use of org.talend.designer.xmlmap.model.emf.xmlmap.InputLoopNodesTable in project tdi-studio-se by Talend.
the class OutputXmlTreeEditPart method notifyChanged.
@Override
public void notifyChanged(Notification notification) {
int type = notification.getEventType();
int featureId = notification.getFeatureID(XmlmapPackage.class);
switch(type) {
case Notification.ADD:
case Notification.REMOVE:
case Notification.REMOVE_MANY:
switch(featureId) {
case XmlmapPackage.OUTPUT_XML_TREE__NODES:
refreshChildren();
break;
case XmlmapPackage.ABSTRACT_IN_OUT_TREE__FILTER_INCOMING_CONNECTIONS:
refreshTargetConnections();
break;
}
break;
case Notification.SET:
switch(featureId) {
case XmlmapPackage.OUTPUT_XML_TREE__NODES:
refreshChildren();
case XmlmapPackage.OUTPUT_XML_TREE__REJECT:
case XmlmapPackage.OUTPUT_XML_TREE__REJECT_INNER_JOIN:
case XmlmapPackage.OUTPUT_XML_TREE__EXPRESSION_FILTER:
case XmlmapPackage.OUTPUT_XML_TREE__MINIMIZED:
case XmlmapPackage.OUTPUT_XML_TREE__ALL_IN_ONE:
case XmlmapPackage.OUTPUT_XML_TREE__ENABLE_EMPTY_ELEMENT:
((OutputXmlTreeFigure) getFigure()).update(featureId);
break;
case XmlmapPackage.TREE_NODE__EXPRESSION:
((OutputXmlTreeFigure) getFigure()).update(XmlmapPackage.TREE_NODE__TYPE);
break;
case XmlmapPackage.ABSTRACT_IN_OUT_TREE__MULTI_LOOPS:
// fix for TDI-20808 , clean aggreage and groups if it's multiloops
OutputXmlTree model = (OutputXmlTree) getModel();
boolean changed = false;
if (model.isMultiLoops()) {
changed = XmlMapUtil.cleanGroup(model.getNodes());
}
if (model.isMultiLoops() && getParent() instanceof XmlMapDataEditPart) {
List childPart = ((XmlMapDataEditPart) getParent()).getChildren();
for (Object o : childPart) {
if (o instanceof InputXmlTreeEditPart) {
InputXmlTree inputTree = (InputXmlTree) ((InputXmlTreeEditPart) o).getModel();
if (inputTree.isMultiLoops() && !inputTree.isLookup()) {
changed = XmlMapUtil.cleanAggregate(model.getNodes()) || changed;
break;
}
}
}
}
if (changed) {
refreshChildren();
}
}
}
// change icon for set loop function button
if (type == Notification.ADD && featureId == XmlmapPackage.OUTPUT_XML_TREE__INPUT_LOOP_NODES_TABLES) {
final InputLoopNodesTable loopNodeTable = (InputLoopNodesTable) notification.getNewValue();
addListenerForInputLoopNodeTable(loopNodeTable);
}
}
Aggregations