1
2
3
4
5
6 package net.kwfgrid.gwui.gui;
7
8 import net.kwfgrid.gworkflowdl.protocol.structure.*;
9
10 import org.glassbox.Theme;
11 import org.glassbox.gui.Visible;
12
13 import java.awt.*;
14 import java.util.Vector;
15 import javax.swing.*;
16 import javax.swing.border.TitledBorder;
17 import javax.swing.table.*;
18
19 import org.apache.log4j.Logger;
20
21 public class WorkflowElementEditorContainer extends AbstractWorkflowElementEditor {
22 private AbstractWorkflowElementView[] _members;
23 private JComponent _view;
24 private double[] _weighty;
25
26 public WorkflowElementEditorContainer(ProtocolWorkflow workflow, IStructureObject element, AbstractWorkflowElementView[] members) {
27 super(null, workflow, element);
28 _members = members;
29 _view = null;
30 _weighty = new double[members.length];
31 for (int i=0; i<_weighty.length; i++) {
32 _weighty[i] = 1d / (double)_members.length;
33 }
34 }
35
36 public WorkflowElementEditorContainer(ProtocolWorkflow workflow, IStructureObject element, AbstractWorkflowElementView[] members, double[] weighty) {
37 super(null, workflow, element);
38 _members = members;
39 _view = null;
40 _weighty = weighty;
41 }
42
43 public void setEnabled(boolean enabled) {
44 for (int i=0; i<_members.length; i++)
45 _members[i].setEnabled(enabled);
46 super.setEnabled(enabled);
47 }
48
49 public void setEditable(boolean editable) {
50 for (int i=0; i<_members.length; i++)
51 if (_members[i] instanceof AbstractWorkflowElementEditor)
52 ((AbstractWorkflowElementEditor)_members[i]).setEditable(editable);
53 super.setEditable(editable);
54 }
55
56 public void setPerformingTask(boolean performing) {
57 for (int i=0; i<_members.length; i++)
58 if (_members[i] instanceof AbstractWorkflowElementEditor)
59 ((AbstractWorkflowElementEditor)_members[i]).setPerformingTask(performing);
60 super.setPerformingTask(performing);
61 }
62
63 protected void updateState() {
64 for (int i=0; i<_members.length; i++)
65 _members[i].updateState();
66 }
67
68 protected void updateView() {
69 updateState();
70
71 for (int i=0; i<_members.length; i++)
72 _members[i].updateView();
73
74 _view.invalidate();
75 _view.setSize(_view.getLayout().preferredLayoutSize(_view));
76 _view.doLayout();
77 _view.validate();
78 }
79
80 public void dispose() {
81 for (int i=0; i<_members.length; i++)
82 _members[i].dispose();
83 }
84
85
86 public JComponent getView() {
87 if (_view == null) {
88 _view = new JPanel();
89 _view.setLayout(new GridBagLayout());
90
91 GridBagConstraints c = new GridBagConstraints();
92
93 c.insets = new Insets(0, 0, 0, 0);
94 c.gridx = 0;
95 c.gridy = 0;
96 c.weightx = 1.0;
97 c.fill = GridBagConstraints.BOTH;
98 c.anchor = GridBagConstraints.CENTER;
99 c.gridwidth = GridBagConstraints.REMAINDER;
100
101 for (int i=0; i<_members.length; i++) {
102 c.weighty = _weighty[i];
103 _view.add(_members[i].getView(), c);
104 c.gridy++;
105 c.insets.top = 5;
106 }
107
108 updateView();
109 }
110 return _view;
111 }
112 }