All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.easyb.plugin.ui.swing.EasybNodeRenderer Maven / Gradle / Ivy

The newest version!
package org.easyb.plugin.ui.swing;

import java.awt.*;
import javax.swing.*;
import javax.swing.tree.DefaultTreeCellRenderer;

import org.easyb.plugin.StepResult;

public class EasybNodeRenderer extends DefaultTreeCellRenderer {
    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);

        SwingResultNode node = (SwingResultNode) value;
        StepResult stepResult = (StepResult) node.getUserObject();

        String stepName = capitalizeName(stepResult.getStepType().toString());

        label.setText(stepName + " " + stepResult.getStepName());
        label.setIcon(loadIcon(node));

        return label;
    }

    private String capitalizeName(String word) {
        char[] letters = word.toLowerCase().toCharArray();

        StringBuilder builder = new StringBuilder();
        builder.append(Character.toUpperCase(letters[0]));
        for (int i = 1; i < letters.length; i++) {
            builder.append(letters[i]);
        }

        return builder.toString();
    }

    private static Icon loadIcon(SwingResultNode node) {
        switch (node.getResult().getOutcome()) {
            case FAILURE:
                return new ImageIcon(EasybNodeRenderer.class.getResource("/failure.png"));
            case PENDING:
                return new ImageIcon(EasybNodeRenderer.class.getResource("/pending.png"));
            case SUCCESS:
                return new ImageIcon(EasybNodeRenderer.class.getResource("/success.png"));
            case RUNNING:
                return new ImageIcon(EasybNodeRenderer.class.getResource("/running.png"));
            default:
                throw new RuntimeException("Unrecognized outcome type: " + node.getResult().getOutcome());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy