View Javadoc

1   /*
2    * Copyright (c) 2005, The K-Wf Grid Consortium
3    * Fraunhofer Institute for Computer Architecture and Software Technology
4    * See http://www.kwfgrid.eu and http://www.first.fraunhofer.de for more details.
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 }