1
package org.bentokit.krispi.ui.swing;
3
import java.awt.BorderLayout;
4
import java.awt.Dimension;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
7
import java.util.HashMap;
10
import javax.swing.BoxLayout;
11
import javax.swing.JCheckBox;
12
import javax.swing.JLabel;
13
import javax.swing.JPanel;
14
import javax.swing.JScrollPane;
15
import javax.swing.border.EmptyBorder;
16
import org.bentokit.krispi.Plugin;
17
import org.bentokit.krispi.PluginManager;
19
public class Panel extends JScrollPane {
21
* Generated serialVersionUID - TH 20101111
23
private static final long serialVersionUID = -1143444618485619750L;
25
public Panel(PluginManager manager) {
26
super(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
27
JPanel viewport = new JPanel();
28
viewport.setLayout(new BorderLayout());
29
viewport.add(new PluginListPanel(manager),BorderLayout.NORTH);
30
viewport.add(new JPanel(),BorderLayout.CENTER);
31
this.setViewportView(viewport);
34
class PluginListPanel extends JPanel implements ActionListener {
36
* Generated serialVersionUID - TH 20101115
38
private static final long serialVersionUID = -7886109644252996547L;
40
private PluginManager manager;
41
private Map<JCheckBox,Plugin> checkboxMap;
43
public PluginListPanel(PluginManager manager) {
44
this.manager = manager;
46
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
47
this.setPreferredSize(new Dimension(300,200));
49
checkboxMap = new HashMap<JCheckBox,Plugin>();
51
if (this.manager.getAvailablePlugins().size() <= 0) {
52
JPanel pluginPanel = new JPanel();
53
JPanel textPanel = new JPanel();
55
textPanel.setLayout(new BoxLayout(textPanel,BoxLayout.Y_AXIS));
56
textPanel.add(new JLabel("No plugins available."),BorderLayout.CENTER);
58
pluginPanel.setLayout(new BorderLayout());
59
pluginPanel.add(textPanel,BorderLayout.CENTER);
61
this.add(pluginPanel);
63
for (Plugin plugin : this.manager.getAvailablePlugins()) {
64
JPanel pluginPanel = new JPanel();
65
JPanel textPanel = new JPanel();
66
JPanel checkboxPanel = new JPanel();
67
JCheckBox activeCheckbox = new JCheckBox();
68
activeCheckbox.addActionListener(this);
69
if (plugin.isActive()) activeCheckbox.setSelected(true);
71
textPanel.setLayout(new BoxLayout(textPanel,BoxLayout.Y_AXIS));
72
textPanel.add(new JLabel("<html><b>"+plugin.getName()+"</b></html>"),BorderLayout.CENTER);
73
textPanel.add(new JLabel("<html><i>"+plugin.getDescription()+"</i></html>"),BorderLayout.CENTER);
75
checkboxPanel.add(activeCheckbox);
77
pluginPanel.setLayout(new BorderLayout());
78
pluginPanel.setBorder(new EmptyBorder(5,5,5,5));
79
pluginPanel.add(new JLabel(plugin.getIcon()),BorderLayout.WEST);
80
pluginPanel.add(textPanel,BorderLayout.CENTER);
81
pluginPanel.add(checkboxPanel,BorderLayout.EAST);
83
checkboxMap.put(activeCheckbox,plugin);
84
this.add(pluginPanel);
89
public void actionPerformed(ActionEvent event) {
90
boolean ok = this.manager.setActive(checkboxMap.get(event.getSource()),((JCheckBox)event.getSource()).isSelected());
91
if (!ok) System.err.println("No such plugin.");