~bentokitadmin/flywire/Master

« back to all changes in this revision

Viewing changes to src/org/bentokit/krispi/options/ui/swing/ConfigPanel.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.options.ui.swing;
 
2
 
 
3
import java.util.ArrayList;
 
4
import java.util.Collection;
 
5
import java.awt.Font;
 
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.*;
 
14
 
 
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)));
 
25
 
 
26
 
 
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;
 
32
 
 
33
                for (int i = 0; i < options.size(); i++)
 
34
                    size[1][i] = TableLayout.PREFERRED;
 
35
 
 
36
                TableLayout layout = new TableLayout(size);
 
37
                panel.setLayout(layout);
 
38
                
 
39
                int i = 0;
 
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());
 
54
                            else
 
55
                                throw new UnknownOptionTypeException("option.getClass().getName() is null");
 
56
                        }
 
57
                        else
 
58
                            throw new UnknownOptionTypeException("option.getClass() is null");
 
59
                    }
 
60
                    else
 
61
                        throw new UnknownOptionTypeException("NULL!");       
 
62
                    i++;             
 
63
                }
 
64
                this.add(panel);
 
65
            }
 
66
        }
 
67
    }    
 
68
}