1 | package geniusweb.domaineditor.panels;
|
---|
2 |
|
---|
3 | import java.awt.BorderLayout;
|
---|
4 | import java.awt.Component;
|
---|
5 |
|
---|
6 | import javax.swing.JComboBox;
|
---|
7 | import javax.swing.JLabel;
|
---|
8 | import javax.swing.JOptionPane;
|
---|
9 | import javax.swing.JPanel;
|
---|
10 |
|
---|
11 | import geniusweb.domaineditor.model.DiscreteValueSetModel;
|
---|
12 | import geniusweb.domaineditor.model.DomainModel;
|
---|
13 | import geniusweb.domaineditor.model.NumberValueSetModel;
|
---|
14 | import geniusweb.domaineditor.model.ValueSetModel;
|
---|
15 | import tudelft.utilities.logging.Reporter;
|
---|
16 | import tudelft.utilities.mvc.model.MapModel;
|
---|
17 | import tudelft.utilities.mvc.model.StringModel;
|
---|
18 | import tudelft.utilities.mvc.panels.CustomMapEditor;
|
---|
19 | import tudelft.utilities.mvc.panels.LabeledPanel;
|
---|
20 | import tudelft.utilities.mvc.panels.StringPanel;
|
---|
21 |
|
---|
22 | /**
|
---|
23 | * The actual editor panel for domains Domains are issues and their possible
|
---|
24 | * values.
|
---|
25 | */
|
---|
26 | @SuppressWarnings("serial")
|
---|
27 | public class DomainEditorPanel extends JPanel {
|
---|
28 |
|
---|
29 | /**
|
---|
30 | * Panel with on the left a set of strings (issues). When user selects an
|
---|
31 | * issue, an editor is opened for the valueset of that issue.
|
---|
32 | *
|
---|
33 | * @param domainmodel the {@link DomainModel} containing the issue and
|
---|
34 | * valuesets.
|
---|
35 | * @param log used when generating new issue values
|
---|
36 | */
|
---|
37 | public DomainEditorPanel(final DomainModel domainmodel, Reporter log) {
|
---|
38 | setLayout(new BorderLayout());
|
---|
39 |
|
---|
40 | add(new LabeledPanel("domain name ",
|
---|
41 | new StringPanel(domainmodel.getName())),
|
---|
42 | BorderLayout.NORTH);
|
---|
43 | add(new IssuesMapEditor(domainmodel.getIssues(), log),
|
---|
44 | BorderLayout.CENTER);
|
---|
45 |
|
---|
46 | }
|
---|
47 | }
|
---|
48 |
|
---|
49 | /**
|
---|
50 | * CustomMapEditor with issues on the left and editor for selected issue on the
|
---|
51 | * right.
|
---|
52 | */
|
---|
53 | @SuppressWarnings("serial")
|
---|
54 | class IssuesMapEditor
|
---|
55 | extends CustomMapEditor<String, StringModel, ValueSetModel> {
|
---|
56 | private final ValueSetEditorFactory vsetfactory = new ValueSetEditorFactory();
|
---|
57 | private Reporter logger;
|
---|
58 | private int n = 1;
|
---|
59 |
|
---|
60 | public IssuesMapEditor(MapModel<StringModel, ValueSetModel> model,
|
---|
61 | Reporter log) {
|
---|
62 | super(model, true);
|
---|
63 | this.logger = log;
|
---|
64 | }
|
---|
65 |
|
---|
66 | @Override
|
---|
67 | public Component getEditor(StringModel key) {
|
---|
68 | if (key == null)
|
---|
69 | return null; // how can this be?
|
---|
70 | ValueSetModel valuesetmodel = getModel().getValue(key);
|
---|
71 | System.out.println("key selected:" + key);
|
---|
72 | System.out.println("model contains key:" + valuesetmodel);
|
---|
73 | return vsetfactory.create(key, valuesetmodel, logger);
|
---|
74 | }
|
---|
75 |
|
---|
76 | @Override
|
---|
77 | public void addEntry() {
|
---|
78 | JPanel panel = new JPanel(new BorderLayout());
|
---|
79 | panel.add(new JLabel("Select issue type"), BorderLayout.NORTH);
|
---|
80 | String[] types = { "discrete", "number" };
|
---|
81 | JComboBox combo = new JComboBox<>(types);
|
---|
82 | panel.add(combo, BorderLayout.CENTER);
|
---|
83 | JOptionPane.showMessageDialog(this, panel);
|
---|
84 | StringModel issuename = new StringModel("issue " + (n++), logger);
|
---|
85 | ValueSetModel valuesetmodel;
|
---|
86 | if (combo.getSelectedItem().equals("discrete"))
|
---|
87 | valuesetmodel = new DiscreteValueSetModel(logger);
|
---|
88 | else
|
---|
89 | valuesetmodel = new NumberValueSetModel(logger);
|
---|
90 | getModel().put(issuename, valuesetmodel);
|
---|
91 |
|
---|
92 | }
|
---|
93 |
|
---|
94 | }
|
---|