Search in sources :

Example 6 with QuickFormInputNode

use of org.knime.core.quickform.in.QuickFormInputNode 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."));
    }
}
Also used : JPanel(javax.swing.JPanel) FlowLayout(java.awt.FlowLayout) BoxLayout(javax.swing.BoxLayout) ArrayList(java.util.ArrayList) DialogNode(org.knime.core.node.dialog.DialogNode) MetaNodeDialogNode(org.knime.core.node.dialog.MetaNodeDialogNode) BorderLayout(java.awt.BorderLayout) Pair(org.knime.core.util.Pair) JLabel(javax.swing.JLabel) QuickFormInputNode(org.knime.core.quickform.in.QuickFormInputNode) DialogNodeRepresentation(org.knime.core.node.dialog.DialogNodeRepresentation) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) NotConfigurableException(org.knime.core.node.NotConfigurableException) MetaNodeDialogNode(org.knime.core.node.dialog.MetaNodeDialogNode) DialogNodeValue(org.knime.core.node.dialog.DialogNodeValue) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) DialogNodePanel(org.knime.core.node.dialog.DialogNodePanel)

Aggregations

QuickFormInputNode (org.knime.core.quickform.in.QuickFormInputNode)6 LinkedHashMap (java.util.LinkedHashMap)4 Map (java.util.Map)4 AbstractQuickFormConfiguration (org.knime.core.quickform.AbstractQuickFormConfiguration)4 AbstractQuickFormValueInConfiguration (org.knime.core.quickform.AbstractQuickFormValueInConfiguration)4 NodeSettingsWO (org.knime.core.node.NodeSettingsWO)3 DialogNode (org.knime.core.node.dialog.DialogNode)3 DialogNodePanel (org.knime.core.node.dialog.DialogNodePanel)3 DialogNodeValue (org.knime.core.node.dialog.DialogNodeValue)3 MetaNodeDialogNode (org.knime.core.node.dialog.MetaNodeDialogNode)3 InvalidSettingsException (org.knime.core.node.InvalidSettingsException)2 NodeSettingsRO (org.knime.core.node.NodeSettingsRO)2 QuickFormConfigurationPanel (org.knime.core.quickform.QuickFormConfigurationPanel)2 BorderLayout (java.awt.BorderLayout)1 FlowLayout (java.awt.FlowLayout)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 BoxLayout (javax.swing.BoxLayout)1 JLabel (javax.swing.JLabel)1 JPanel (javax.swing.JPanel)1