use of org.eclipse.scout.rt.client.ui.form.fields.composer.node.EitherOrNode in project scout.rt by eclipse.
the class AbstractComposerField method addAdditionalOrNode.
@Override
public EitherOrNode addAdditionalOrNode(ITreeNode eitherOrNode, boolean negated) {
EitherOrNode node = interceptCreateAdditionalOrNode(eitherOrNode, negated);
if (node != null) {
getTree().addChildNode(eitherOrNode.getChildNodeIndex() + 1, eitherOrNode.getParentNode(), node);
getTree().setNodeExpanded(node, true);
}
return node;
}
use of org.eclipse.scout.rt.client.ui.form.fields.composer.node.EitherOrNode in project scout.rt by eclipse.
the class AbstractComposerField method addEitherNode.
@Override
public EitherOrNode addEitherNode(ITreeNode parentNode, boolean negated) {
EitherOrNode node = interceptCreateEitherNode(parentNode, negated);
if (node != null) {
getTree().addChildNode(parentNode, node);
getTree().setNodeExpanded(node, true);
}
return node;
}
use of org.eclipse.scout.rt.client.ui.form.fields.composer.node.EitherOrNode in project scout.rt by eclipse.
the class ComposerFieldTest method testExportEitherOrNode.
@Test
public void testExportEitherOrNode() throws Exception {
// setup field
ITreeNode parentNode = m_composerField.getTree().getRootNode();
EitherOrNode eitherNode = m_composerField.addEitherNode(parentNode, false);
m_composerField.addAdditionalOrNode(eitherNode, false);
// export
m_composerField.exportFormFieldData(m_fieldData);
// verify export
assertEquals(2, m_fieldData.getRootCount());
//
TreeNodeData eitherNodeData = m_fieldData.getRoots().get(0);
assertTrue(eitherNodeData instanceof ComposerEitherOrNodeData);
assertTrue(((ComposerEitherOrNodeData) eitherNodeData).isBeginOfEitherOr());
assertFalse(((ComposerEitherOrNodeData) eitherNodeData).isNegative());
//
TreeNodeData orNodeData = m_fieldData.getRoots().get(1);
assertTrue(orNodeData instanceof ComposerEitherOrNodeData);
assertFalse(((ComposerEitherOrNodeData) orNodeData).isBeginOfEitherOr());
assertFalse(((ComposerEitherOrNodeData) orNodeData).isNegative());
}
use of org.eclipse.scout.rt.client.ui.form.fields.composer.node.EitherOrNode in project scout.rt by eclipse.
the class AbstractComposerField method execCreateAdditionalOrNode.
/**
* Override this method to decorate or enhance new nodes whenever they are created
*
* @return the new node or null to ignore the add of a new node of this type
* <p>
* Normally overrides call super.{@link #interceptCreateAdditionalOrNode(ITreeNode, boolean)}
*/
@ConfigOperation
@Order(140)
protected EitherOrNode execCreateAdditionalOrNode(ITreeNode eitherOrNode, boolean negated) {
EitherOrNode node = new EitherOrNode(this, false);
node.setNegative(negated);
node.setStatus(ITreeNode.STATUS_INSERTED);
return node;
}
use of org.eclipse.scout.rt.client.ui.form.fields.composer.node.EitherOrNode in project scout.rt by eclipse.
the class AbstractComposerField method loadXMLRec.
private void loadXMLRec(Element x, ITreeNode parent) {
// build tree
for (Element xmlElem : XmlUtility.getChildElements(x)) {
if ("attribute".equals(xmlElem.getTagName())) {
String id = xmlElem.getAttribute("id");
IDataModelAttributeOp op;
Integer aggregationType = 0;
try {
int operator = DataModelConstants.OPERATOR_EQ;
String opAttribName = "op";
if (xmlElem.hasAttribute(opAttribName)) {
operator = Integer.parseInt(xmlElem.getAttribute(opAttribName));
}
op = DataModelAttributeOp.create(operator);
String aggregTypeName = "aggregationType";
if (xmlElem.hasAttribute(aggregTypeName)) {
aggregationType = Integer.parseInt(xmlElem.getAttribute(aggregTypeName));
}
if (aggregationType == 0) {
aggregationType = null;
}
} catch (Exception e) {
LOG.warn("read op", e);
continue;
}
ArrayList<Object> valueList = new ArrayList<Object>();
try {
for (int i = 1; i <= 5; i++) {
String valueName = (i == 1 ? "value" : "value" + i);
if (xmlElem.hasAttribute(valueName)) {
valueList.add(XmlUtility.getObjectAttribute(xmlElem, valueName));
}
}
} catch (Exception e) {
LOG.warn("read value for attribute {}", id, e);
continue;
}
ArrayList<String> displayValueList = new ArrayList<String>();
for (int i = 1; i <= 5; i++) {
String displayValueName = (i == 1 ? "displayValue" : "displayValue" + i);
if (xmlElem.hasAttribute(displayValueName)) {
String val = null;
if (xmlElem.hasAttribute(displayValueName)) {
val = xmlElem.getAttribute(displayValueName);
}
displayValueList.add(val);
}
}
// find definition
AttributePath attPath = DataModelUtility.externalIdToAttributePath(getDataModel(), id);
IDataModelAttribute foundAtt = (attPath != null ? attPath.getAttribute() : null);
if (foundAtt == null) {
LOG.warn("cannot find attribute with id={}", id);
continue;
}
ITreeNode node = addAttributeNode(parent, foundAtt, aggregationType, op, valueList, displayValueList);
if (node != null) {
// add children recursive
loadXMLRec(xmlElem, node);
}
} else if ("entity".equals(xmlElem.getTagName())) {
String id = xmlElem.getAttribute("id");
boolean negated = Boolean.parseBoolean(xmlElem.getAttribute("negated"));
String text = null;
if (xmlElem.hasAttribute("displayValues")) {
text = xmlElem.getAttribute("displayValues");
}
// find definition
EntityPath entityPath = DataModelUtility.externalIdToEntityPath(getDataModel(), id);
IDataModelEntity foundEntity = (entityPath != null ? entityPath.lastElement() : null);
if (foundEntity == null) {
LOG.warn("cannot find entity with id={}", id);
continue;
}
ITreeNode node = addEntityNode(parent, foundEntity, negated, null, text != null ? Collections.singletonList(text) : null);
if (node != null) {
// add children recursive
loadXMLRec(xmlElem, node);
}
} else if ("or".equals(xmlElem.getTagName())) {
boolean beginning = Boolean.parseBoolean(xmlElem.getAttribute("begin"));
boolean negated = Boolean.parseBoolean(xmlElem.getAttribute("negated"));
ITreeNode node = null;
if (beginning) {
node = addEitherNode(parent, negated);
} else {
// find last EitherOrNode
EitherOrNode orNode = null;
for (ITreeNode n : parent.getChildNodes()) {
if (n instanceof EitherOrNode && ((EitherOrNode) n).isEndOfEitherOr()) {
orNode = (EitherOrNode) n;
}
}
if (orNode != null) {
node = addAdditionalOrNode(orNode, negated);
}
}
if (node != null) {
// add children recursive
loadXMLRec(xmlElem, node);
}
}
}
}
Aggregations