private void createEventListeners()

in shell.gui.plugin/src/main/java/org/apache/felix/shell/gui/plugin/OBRPlugin.java [155:413]


    private void createEventListeners()
    {
        // Create action listeners.
        m_addRepoButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                synchronized (OBRPlugin.this)
                {
                    if (m_repoAdmin == null)
                    {
                        return;
                    }

                    String s = JOptionPane.showInputDialog(
                        OBRPlugin.this, "Enter repository URL:");

                    if (s != null)
                    {
                        try
                        {
                            m_repoAdmin.addRepository(new URL(s));
                        }
                        catch (Exception ex)
                        {
                            ex.printStackTrace();
                        }
                    }

                    // Update the table.
                    initializeRootNode();
                }
            }
        });

        m_removeRepoButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                synchronized (OBRPlugin.this)
                {
                    if (m_repoAdmin == null)
                    {
                        return;
                    }

                    TreePath[] paths = m_bundleTree.getSelectionPaths();
                    for (int i = 0; i < paths.length; i++)
                    {
                        SimpleTreeNode node = (SimpleTreeNode) paths[i].getLastPathComponent();
                        if (node.getObject() instanceof Repository)
                        {
                            m_repoAdmin.removeRepository(
                                ((Repository)
                                    ((SimpleTreeNode)
                                        paths[i].getLastPathComponent()).getObject()).getURL());
                        }
                    }

                    // Update the table.
                    initializeRootNode();
                }
            }
        });

        m_refreshRepoButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                synchronized (OBRPlugin.this)
                {
                    if (m_repoAdmin == null)
                    {
                        return;
                    }

                    TreePath[] paths = m_bundleTree.getSelectionPaths();
                    for (int i = 0; i < paths.length; i++)
                    {
                        SimpleTreeNode node = (SimpleTreeNode) paths[i].getLastPathComponent();
                        if (node.getObject() instanceof Repository)
                        {
                            try
                            {
                                // Adding the repository again causes it to be reparsed.
                                m_repoAdmin.addRepository(
                                    ((Repository) node.getObject()).getURL());
                            } catch (Exception ex)
                            {
                                ex.printStackTrace();
                            }
                        }
                    }

                    // Update the table.
                    initializeRootNode();
                }
            }
        });

        ActionListener al = new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                boolean start = event.getActionCommand().equals(START_BUTTON);

                synchronized (OBRPlugin.this)
                {
                    if (m_repoAdmin == null)
                    {
                        return;
                    }

                    Resolver resolver = m_repoAdmin.resolver();
                    TreePath[] paths = m_bundleTree.getSelectionPaths();
                    for (int i = 0; i < paths.length; i++)
                    {
                        SimpleTreeNode node = (SimpleTreeNode) paths[i].getLastPathComponent();
                        if (node.getObject() instanceof Resource)
                        {
                            resolver.add((Resource) node.getObject());
                        }
                    }

                    if ((resolver.getAddedResources() != null) &&
                        (resolver.getAddedResources().length > 0))
                    {
                        if (resolver.resolve())
                        {
                            m_out.println("Target resource(s):");
                            printUnderline(m_out, 19);
                            Resource[] resources = resolver.getAddedResources();
                            for (int resIdx = 0; (resources != null) && (resIdx < resources.length); resIdx++)
                            {
                                m_out.println("   " + resources[resIdx].getPresentationName()
                                    + " (" + resources[resIdx].getVersion() + ")");
                            }
                            resources = resolver.getRequiredResources();
                            if ((resources != null) && (resources.length > 0))
                            {
                                m_out.println("\nRequired resource(s):");
                                printUnderline(m_out, 21);
                                for (int resIdx = 0; resIdx < resources.length; resIdx++)
                                {
                                    m_out.println("   " + resources[resIdx].getPresentationName()
                                        + " (" + resources[resIdx].getVersion() + ")");
                                }
                            }
                            resources = resolver.getOptionalResources();
                            if ((resources != null) && (resources.length > 0))
                            {
                                m_out.println("\nOptional resource(s):");
                                printUnderline(m_out, 21);
                                for (int resIdx = 0; resIdx < resources.length; resIdx++)
                                {
                                    m_out.println("   " + resources[resIdx].getPresentationName()
                                        + " (" + resources[resIdx].getVersion() + ")");
                                }
                            }

                            try
                            {
                                m_out.print("\nDeploying...");
                                resolver.deploy(start);
                                m_out.println("done.");
                            }
                            catch (IllegalStateException ex)
                            {
                                m_out.println(ex);
                            }
                        }
                        else
                        {
                            Requirement[] reqs = resolver.getUnsatisfiedRequirements();
                            if ((reqs != null) && (reqs.length > 0))
                            {
                                m_out.println("Unsatisfied requirement(s):");
                                printUnderline(m_out, 27);
                                for (int reqIdx = 0; reqIdx < reqs.length; reqIdx++)
                                {
                                    m_out.println("   " + reqs[reqIdx].getFilter());
                                    Resource[] resources = resolver.getResources(reqs[reqIdx]);
                                    for (int resIdx = 0; resIdx < resources.length; resIdx++)
                                    {
                                        m_out.println("      " + resources[resIdx].getPresentationName());
                                    }
                                }
                            }
                            else
                            {
                                m_out.println("Could not resolve targets.");
                            }
                        }

                        m_out.println("");
                    }
                }
            }
        };

        m_deployButton.addActionListener(al);
        m_startButton.addActionListener(al);

        m_infoButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                synchronized (OBRPlugin.this)
                {
                    if (m_repoAdmin == null)
                    {
                        return;
                    }
                    TreePath[] paths = m_bundleTree.getSelectionPaths();
                    for (int i = 0; i < paths.length; i++)
                    {
                        if (i != 0)
                        {
                            m_out.println("");
                        }
                        printInfo(m_out,
                            ((SimpleTreeNode) paths[i].getLastPathComponent()).getObject());
                    }
                    m_out.println("");
                }
            }
        });

        m_clearButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                synchronized (OBRPlugin.this)
                {
                    m_soa.setText("");
                }
            }
        });

        m_bundleTree.addTreeSelectionListener(new TreeSelectionListener() {
            public void valueChanged(TreeSelectionEvent e)
            {
                if (m_repoAdmin == null)
                {
                    return;
                }
                TreePath[] paths = m_bundleTree.getSelectionPaths();
                boolean repoOnly = true;
                if (paths != null)
                {
                    for (int i = 0; repoOnly && (i < paths.length); i++)
                    {
                        SimpleTreeNode node = (SimpleTreeNode) paths[i].getLastPathComponent();
                        if (!(node.getObject() instanceof Repository))
                        {
                            repoOnly = false;
                        }
                    }
                }
                m_removeRepoButton.setEnabled((paths != null) && repoOnly);
                m_refreshRepoButton.setEnabled((paths != null) && repoOnly);
                m_infoButton.setEnabled((paths != null) && (paths.length > 0));
            }
        });
    }