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));
}
});
}