1
package org.bentokit.krispi.options.ui.swing;
3
import java.util.ArrayList;
4
import java.util.Collection;
6
import javax.swing.JPanel;
7
import javax.swing.JLabel;
8
import javax.swing.BorderFactory;
9
import javax.swing.border.TitledBorder;
10
import info.clearthought.layout.TableLayout;
11
import org.bentokit.krispi.options.*;
12
import org.bentokit.krispi.options.types.*;
13
import org.bentokit.krispi.options.ui.swing.types.*;
15
public class ConfigPanel extends JPanel {
16
public ConfigPanel(Optionable optionable) throws UnknownOptionTypeException {
17
if (optionable.getSettings() == null) return;
18
for (OptionGroup group : optionable.getSettings()) {
19
Collection<Option<?>> options = group.getOptions();
20
if (options != null) {
21
JPanel panel = new JPanel();
22
panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),group.getDisplayName(),
23
TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION,
24
new Font("Sans Serif",Font.BOLD,12)));
27
double size[][] = new double[2][];
28
size[0] = new double[2]; //Column widths
29
size[1] = new double[options.size()]; //Row heights
30
size[0][0] = TableLayout.PREFERRED;
31
size[0][1] = TableLayout.PREFERRED;
33
for (int i = 0; i < options.size(); i++)
34
size[1][i] = TableLayout.PREFERRED;
36
TableLayout layout = new TableLayout(size);
37
panel.setLayout(layout);
40
for (Option<?> option : options) {
41
panel.add(new JLabel(option.getDisplayName()),"0,"+i);
42
if (option instanceof StringOption)
43
panel.add(new TextFieldPanel((Option<String>)option),"1,"+i);
44
else if (option instanceof BooleanOption)
45
panel.add(new CheckBoxPanel((Option<Boolean>)option),"1,"+i);
46
else if (option instanceof ChoiceOption)
47
panel.add(new RadioPanel((ChoiceOption)option),"1,"+i);
48
else if (option instanceof FileOption)
49
panel.add(new DirectoryPanel((FileOption)option),"1,"+i);
50
else if (option != null) {
51
if (option.getClass() != null) {
52
if (option.getClass().getName() != null)
53
throw new UnknownOptionTypeException(option.getClass().getName());
55
throw new UnknownOptionTypeException("option.getClass().getName() is null");
58
throw new UnknownOptionTypeException("option.getClass() is null");
61
throw new UnknownOptionTypeException("NULL!");