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

net.maizegenetics.progress.ProgressPanel Maven / Gradle / Ivy

/*
 * ProgressPanel
 */
package net.maizegenetics.progress;

import java.awt.BorderLayout;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import net.maizegenetics.plugindef.Plugin;

/**
 *
 * @author Terry Casstevens
 */
public class ProgressPanel extends JPanel {

    private static ProgressPanel SINGLETON = null;
    private final JPanel myMainPane;
    private final Map myPlugins = new HashMap();
    private final Map myCancelPlugins = new HashMap();

    private ProgressPanel() {

        setLayout(new BorderLayout());

        myMainPane = new JPanel();
        BoxLayout layout = new BoxLayout(myMainPane, BoxLayout.Y_AXIS);
        myMainPane.setLayout(layout);
        myMainPane.setAlignmentX(JPanel.TOP_ALIGNMENT);

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.getViewport().add(myMainPane);

        add(scrollPane, BorderLayout.CENTER);

    }

    public static ProgressPanel getInstance() {
        if (SINGLETON == null) {
            SINGLETON = new ProgressPanel();
        }
        return SINGLETON;
    }

    public void addPipelineSegment(List plugins) {

        if ((plugins == null) || (plugins.size() == 0)) {
            return;
        }

        for (int i = 0; i < plugins.size(); i++) {
            addPlugin(plugins.get(i), true, plugins.get(0));
        }

    }

    public void addPlugin(Plugin plugin) {
        addPlugin(plugin, true, null);
    }

    public void addPlugin(Plugin plugin, boolean cancelButton, Plugin cancelPlugin) {

        Integer level = 0;

        myPlugins.put(plugin, level);

        PluginProgressUnit current = new PluginProgressUnit(plugin, level.intValue(), cancelButton, cancelPlugin);

        if (cancelPlugin != null) {
            myCancelPlugins.put(current, cancelPlugin);
        }

        myMainPane.add(current);

        revalidate();

    }

    public void removeProgressUnit(PluginProgressUnit unit) {
        synchronized (myCancelPlugins) {
            Plugin cancelPlugin = (Plugin) myCancelPlugins.get(unit);
            if (cancelPlugin != null) {
                myCancelPlugins.remove(unit);
            }
            myMainPane.remove(unit);
        }
        revalidate();
        repaint();
    }

    public void cleanProgressUnit(Plugin plugin) {
        synchronized (myCancelPlugins) {
            Iterator itr = myCancelPlugins.entrySet().iterator();
            while (itr.hasNext()) {
                Map.Entry current = (Map.Entry) itr.next();
                Plugin tempPlugin = (Plugin) current.getValue();
                if (tempPlugin == plugin) {
                    itr.remove();
                    myMainPane.remove((PluginProgressUnit) current.getKey());
                }
            }
        }
        revalidate();
        repaint();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy