use of org.knime.core.node.dialog.DialogNodeRepresentation in project knime-core by knime.
the class MetaNodeDialogPane method setQuickformNodes.
/**
* Set quickform nodes into this dialog; called just before
* {@link #loadSettingsFrom(NodeSettingsRO,
* org.knime.core.data.DataTableSpec[])} is called.
* @param nodes the quickform nodes to show settings for
*/
final void setQuickformNodes(final Map<NodeID, MetaNodeDialogNode> nodes) {
m_nodes.clear();
m_quickFormInputNodePanels.clear();
m_dialogNodePanels.clear();
// remove all quickform components from current panel
m_panel.removeAll();
List<Pair<Integer, Pair<NodeID, MetaNodeDialogNode>>> sortedNodeList = new ArrayList<Pair<Integer, Pair<NodeID, MetaNodeDialogNode>>>();
for (Map.Entry<NodeID, MetaNodeDialogNode> e : nodes.entrySet()) {
// only accept old qf nodes for metanodes
if (!m_usedInSubnode && e.getValue() instanceof QuickFormInputNode) {
AbstractQuickFormConfiguration<? extends AbstractQuickFormValueInConfiguration> config = ((QuickFormInputNode) e.getValue()).getConfiguration();
if (config == null) {
// quickform nodes has no valid configuration
continue;
}
QuickFormConfigurationPanel<? extends AbstractQuickFormValueInConfiguration> quickform = config.createController();
m_nodes.put(e.getKey(), e.getValue());
m_quickFormInputNodePanels.put(e.getKey(), quickform);
Pair<Integer, Pair<NodeID, MetaNodeDialogNode>> weightNodePair = new Pair<Integer, Pair<NodeID, MetaNodeDialogNode>>(config.getWeight(), new Pair<NodeID, MetaNodeDialogNode>(e.getKey(), e.getValue()));
sortedNodeList.add(weightNodePair);
// only accept new qf nodes for subnodes
} else if (m_usedInSubnode && e.getValue() instanceof DialogNode) {
DialogNodeRepresentation<? extends DialogNodeValue> representation = ((DialogNode) e.getValue()).getDialogRepresentation();
if (((DialogNode) e.getValue()).isHideInDialog() || representation == null) {
// no valid representation
continue;
}
try {
DialogNodePanel dialogPanel = representation.createDialogPanel();
m_nodes.put(e.getKey(), e.getValue());
m_dialogNodePanels.put(e.getKey(), dialogPanel);
Pair<Integer, Pair<NodeID, MetaNodeDialogNode>> weightNodePair = new Pair<Integer, Pair<NodeID, MetaNodeDialogNode>>(Integer.MAX_VALUE, new Pair<NodeID, MetaNodeDialogNode>(e.getKey(), e.getValue()));
sortedNodeList.add(weightNodePair);
} catch (Exception ex) {
LOGGER.error("The dialog pane for node " + e.getKey() + " could not be created.", ex);
}
}
}
Collections.sort(sortedNodeList, new Comparator<Pair<Integer, Pair<NodeID, MetaNodeDialogNode>>>() {
/**
* {@inheritDoc}
*/
@Override
public int compare(final Pair<Integer, Pair<NodeID, MetaNodeDialogNode>> o1, final Pair<Integer, Pair<NodeID, MetaNodeDialogNode>> o2) {
return o1.getFirst() - o2.getFirst();
}
});
for (Pair<Integer, Pair<NodeID, MetaNodeDialogNode>> weightNodePair : sortedNodeList) {
NodeID id = weightNodePair.getSecond().getFirst();
MetaNodeDialogNode node = weightNodePair.getSecond().getSecond();
if (node instanceof QuickFormInputNode) {
final QuickFormConfigurationPanel<?> qconfPanel = m_quickFormInputNodePanels.get(id);
JPanel qpanel = new JPanel();
final BoxLayout boxLayout2 = new BoxLayout(qpanel, BoxLayout.Y_AXIS);
qpanel.setLayout(boxLayout2);
qpanel.setBorder(BorderFactory.createTitledBorder((String) null));
JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
p.add(qconfPanel);
qpanel.add(p);
m_panel.add(qpanel);
} else if (node instanceof DialogNode) {
DialogNodePanel<? extends DialogNodeValue> nodePanel = m_dialogNodePanels.get(id);
JPanel dpanel = new JPanel();
final BoxLayout boxLayout2 = new BoxLayout(dpanel, BoxLayout.Y_AXIS);
dpanel.setLayout(boxLayout2);
dpanel.setBorder(BorderFactory.createTitledBorder((String) null));
JPanel p = new JPanel(new BorderLayout());
p.add(nodePanel, BorderLayout.CENTER);
dpanel.add(p);
m_panel.add(dpanel);
}
}
if (m_nodes.isEmpty()) {
m_panel.add(new JLabel("No valid Quickform configurations."));
}
}
use of org.knime.core.node.dialog.DialogNodeRepresentation in project knime-core by knime.
the class SubNodeContainer method getXMLDescription.
/* -------------------- NodeContainer info properties -------------- */
@SuppressWarnings("rawtypes")
/**
* {@inheritDoc}
*/
@Override
public Element getXMLDescription() {
VirtualSubNodeInputNodeModel inNode = getVirtualInNodeModel();
VirtualSubNodeOutputNodeModel outNode = getVirtualOutNodeModel();
String description = inNode.getSubNodeDescription();
String sDescription;
if (StringUtils.isEmpty(description)) {
sDescription = "";
} else {
sDescription = StringUtils.split(description, ".\n")[0];
sDescription = StringUtils.abbreviate(sDescription, 200);
}
String[] inPortNames = inNode.getPortNames();
String[] inPortDescriptions = inNode.getPortDescriptions();
String[] outPortNames = outNode.getPortNames();
String[] outPortDescriptions = outNode.getPortDescriptions();
Map<NodeID, DialogNode> nodes = m_wfm.findNodes(DialogNode.class, false);
List<String> optionNames = new ArrayList<String>();
List<String> optionDescriptions = new ArrayList<String>();
for (DialogNode dialogNode : nodes.values()) {
DialogNodeRepresentation representation = dialogNode.getDialogRepresentation();
if (representation instanceof QuickFormRepresentation) {
optionNames.add(((QuickFormRepresentation) representation).getLabel());
optionDescriptions.add(((QuickFormRepresentation) representation).getDescription());
}
}
try {
// Document
Document doc = NodeDescription.getDocumentBuilderFactory().newDocumentBuilder().getDOMImplementation().createDocument("http://knime.org/node2012", "knimeNode", null);
// knimeNode
Element knimeNode = doc.getDocumentElement();
knimeNode.setAttribute("type", "Unknown");
knimeNode.setAttribute("icon", "subnode.png");
// name
Element name = doc.createElement("name");
knimeNode.appendChild(name);
name.appendChild(doc.createTextNode(getName()));
// shortDescription
Element shortDescription = doc.createElement("shortDescription");
knimeNode.appendChild(shortDescription);
addText(shortDescription, sDescription, NO_DESCRIPTION_SET);
// fullDescription
Element fullDescription = doc.createElement("fullDescription");
knimeNode.appendChild(fullDescription);
// intro
Element intro = doc.createElement("intro");
fullDescription.appendChild(intro);
addText(intro, description, NO_DESCRIPTION_SET + "\nIn order to set a description browse the input node " + "contained in the Wrapped Metanode and change its configuration.");
// option
for (int i = 0; i < optionNames.size(); i++) {
Element option = doc.createElement("option");
fullDescription.appendChild(option);
option.setAttribute("name", optionNames.get(i));
addText(option, optionDescriptions.get(i), "");
}
// ports
Element ports = doc.createElement("ports");
knimeNode.appendChild(ports);
// inPort
for (int i = 0; i < inPortNames.length; i++) {
Element inPort = doc.createElement("inPort");
ports.appendChild(inPort);
inPort.setAttribute("index", "" + i);
inPort.setAttribute("name", inPortNames[i]);
String defaultText = NO_DESCRIPTION_SET;
if (i == 0) {
defaultText += "\nChange this label by browsing the input node contained in the Wrapped Metanode " + "and changing its configuration.";
}
addText(inPort, inPortDescriptions[i], defaultText);
}
// outPort
for (int i = 0; i < outPortNames.length; i++) {
Element outPort = doc.createElement("outPort");
ports.appendChild(outPort);
outPort.setAttribute("index", "" + i);
outPort.setAttribute("name", outPortNames[i]);
String defaultText = NO_DESCRIPTION_SET;
if (i == 0) {
defaultText += "\nChange this label by browsing the output node contained in the Wrapped Metanode " + "and changing its configuration.";
}
addText(outPort, outPortDescriptions[i], defaultText);
}
return new NodeDescription27Proxy(doc).getXMLDescription();
} catch (ParserConfigurationException | DOMException | XmlException e) {
LOGGER.warn("Could not generate Wrapped Metanode description", e);
}
return null;
}
Aggregations