~bentokitadmin/flywire/Master

« back to all changes in this revision

Viewing changes to src/org/bentokit/krispi/ui/swing/Panel.java

  • Committer: Tudor Holton
  • Date: 2012-08-17 13:38:55 UTC
  • Revision ID: git-v1:603cd01b12b59d165a83176e32da7c3e348bbf7e
Code from svn HEAD.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.bentokit.krispi.ui.swing;
 
2
 
 
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;
 
8
import java.util.Map;
 
9
 
 
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;
 
18
 
 
19
public class Panel extends JScrollPane {
 
20
        /**
 
21
         * Generated serialVersionUID - TH 20101111
 
22
         */
 
23
        private static final long serialVersionUID = -1143444618485619750L;
 
24
 
 
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);
 
32
        }
 
33
        
 
34
        class PluginListPanel extends JPanel implements ActionListener {
 
35
                /**
 
36
                 * Generated serialVersionUID - TH 20101115
 
37
                 */
 
38
                private static final long serialVersionUID = -7886109644252996547L;
 
39
                
 
40
                private PluginManager manager;
 
41
                private Map<JCheckBox,Plugin> checkboxMap;
 
42
 
 
43
                public PluginListPanel(PluginManager manager) {
 
44
                        this.manager = manager;
 
45
 
 
46
                        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
 
47
                        this.setPreferredSize(new Dimension(300,200));
 
48
 
 
49
                        checkboxMap = new HashMap<JCheckBox,Plugin>();
 
50
                        this.removeAll();
 
51
                        if (this.manager.getAvailablePlugins().size() <= 0) {
 
52
                                JPanel pluginPanel = new JPanel();
 
53
                                JPanel textPanel = new JPanel();
 
54
 
 
55
                                textPanel.setLayout(new BoxLayout(textPanel,BoxLayout.Y_AXIS));
 
56
                                textPanel.add(new JLabel("No plugins available."),BorderLayout.CENTER);
 
57
 
 
58
                                pluginPanel.setLayout(new BorderLayout());
 
59
                                pluginPanel.add(textPanel,BorderLayout.CENTER);
 
60
                                
 
61
                                this.add(pluginPanel);                          
 
62
                        } else {
 
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);
 
70
                                        
 
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);
 
74
                                        
 
75
                                        checkboxPanel.add(activeCheckbox);
 
76
                                        
 
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);
 
82
                                        
 
83
                                        checkboxMap.put(activeCheckbox,plugin);
 
84
                                        this.add(pluginPanel);
 
85
                                }
 
86
                        }
 
87
                }
 
88
                
 
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.");
 
92
                }
 
93
        }
 
94
}