Statistics
| Revision:

root / org.gvsig.toolbox / trunk / org.gvsig.toolbox / org.gvsig.toolbox.gui / src / main / java / es / unex / sextante / gui / modeler / parameters / TableFieldPanel.java @ 83

History | View | Annotate | Download (5.93 KB)

1
package es.unex.sextante.gui.modeler.parameters;
2

    
3
import info.clearthought.layout.TableLayout;
4
import info.clearthought.layout.TableLayoutConstants;
5

    
6
import java.util.ArrayList;
7

    
8
import javax.swing.ComboBoxModel;
9
import javax.swing.DefaultComboBoxModel;
10
import javax.swing.JComboBox;
11
import javax.swing.JDialog;
12
import javax.swing.JLabel;
13
import javax.swing.JOptionPane;
14

    
15
import es.unex.sextante.additionalInfo.AdditionalInfoTableField;
16
import es.unex.sextante.core.ObjectAndDescription;
17
import es.unex.sextante.core.ParametersSet;
18
import es.unex.sextante.core.Sextante;
19
import es.unex.sextante.exceptions.NullParameterAdditionalInfoException;
20
import es.unex.sextante.gui.modeler.ModelAlgorithm;
21
import es.unex.sextante.gui.modeler.ModelerPanel;
22
import es.unex.sextante.parameters.Parameter;
23
import es.unex.sextante.parameters.ParameterTable;
24
import es.unex.sextante.parameters.ParameterTableField;
25
import es.unex.sextante.parameters.ParameterVectorLayer;
26

    
27
public class TableFieldPanel
28
         extends
29
            ParameterPanel {
30

    
31
   private JLabel    jLabelType;
32
   private JComboBox jComboBoxParent;
33

    
34

    
35
   //private JCheckBox jCheckBoxMandatory;
36

    
37

    
38
   public TableFieldPanel(final JDialog parent,
39
                          final ModelerPanel panel) {
40

    
41
      super(parent, panel);
42

    
43
   }
44

    
45

    
46
   public TableFieldPanel(final ModelerPanel panel) {
47

    
48
      super(panel);
49

    
50
   }
51

    
52

    
53
   @Override
54
   protected void initGUI() {
55

    
56
      super.initGUI();
57

    
58
      super.setTitle(Sextante.getText("modeler_add_par_field"));
59
      
60
      super.setPreferredSize(new java.awt.Dimension(400, 200));      
61
      
62
      try {
63
         final TableLayout thisLayout = new TableLayout(new double[][] {
64
                  { TableLayoutConstants.MINIMUM, 5.0, TableLayoutConstants.FILL },
65
                  { TableLayoutConstants.MINIMUM } });
66
         thisLayout.setHGap(5);
67
         thisLayout.setVGap(5);
68
         jPanelMiddle.setLayout(thisLayout);
69
         jLabelType = new JLabel();
70
         jPanelMiddle.add(jLabelType, "0, 0");
71
         jLabelType.setText(Sextante.getText("Parent_layer_or_table"));
72
         jComboBoxParent = new JComboBox();
73
         jPanelMiddle.add(jComboBoxParent, "2, 0");
74
         /*jCheckBoxMandatory = new JCheckBox(Sextante.getText("Mandatory"));
75
         jPanelMiddle.add(jCheckBoxMandatory, "0, 3, 2, 3");*/
76
      }
77
      catch (final Exception e) {
78
         Sextante.addErrorToLog(e);
79
      }
80

    
81
   }
82

    
83

    
84
   @Override
85
   public void updateOptions() {
86

    
87
      super.updateOptions();
88

    
89
      int i;
90

    
91
      ArrayList layers, tables;
92
      final ParametersSet ps = m_ModelerPanel.getAlgorithm().getParameters();
93

    
94
      layers = ps.getParametersOfType(ParameterVectorLayer.class);
95
      tables = ps.getParametersOfType(ParameterTable.class);
96
      final ObjectAndDescription oad[] = new ObjectAndDescription[layers.size() + tables.size()];
97
      for (i = 0; i < layers.size(); i++) {
98
         final ParameterVectorLayer param = (ParameterVectorLayer) layers.get(i);
99
         oad[i] = new ObjectAndDescription(param.getParameterDescription() + Sextante.getText("[layer]"),
100
                  param.getParameterName());
101
      }
102
      for (i = 0; i < tables.size(); i++) {
103
         final ParameterTable param = (ParameterTable) tables.get(i);
104
         oad[i + layers.size()] = new ObjectAndDescription(param.getParameterDescription() + Sextante.getText("[table]"),
105
                  param.getParameterName());
106
      }
107
      final ComboBoxModel jComboBoxTypeModel = new DefaultComboBoxModel(oad);
108
      jComboBoxParent.setModel(jComboBoxTypeModel);
109

    
110
   }
111

    
112

    
113
   @Override
114
   protected boolean prepareParameter() {
115

    
116
      String sName;
117
      final String sDescription = jTextFieldDescription.getText();
118

    
119
      if (sDescription.length() != 0) {
120
         sName = (String) ((ObjectAndDescription) jComboBoxParent.getSelectedItem()).getObject();
121
         final AdditionalInfoTableField addInfo = new AdditionalInfoTableField(sName, /*jCheckBoxMandatory.isSelected()*/true);
122
         m_Parameter = new ParameterTableField();
123
         m_Parameter.setParameterAdditionalInfo(addInfo);
124
         m_Parameter.setParameterDescription(jTextFieldDescription.getText());
125
         
126
         m_Parameter.setColorR(m_Color.getRed());        
127
         m_Parameter.setColorG(m_Color.getGreen());        
128
         m_Parameter.setColorB(m_Color.getBlue());        
129
         m_Parameter.setColorAlpha(m_Color.getAlpha());         
130
         
131
         return true;
132
      }
133
      else {
134
         JOptionPane.showMessageDialog(null, Sextante.getText("Invalid_description"), Sextante.getText("Warning"),
135
                  JOptionPane.WARNING_MESSAGE);
136
         return false;
137
      }
138

    
139

    
140
   }
141

    
142

    
143
   @Override
144
   public void setParameter(final Parameter param) {
145

    
146
      super.setParameter(param);
147

    
148
      try {
149
         final AdditionalInfoTableField ai = (AdditionalInfoTableField) param.getParameterAdditionalInfo();
150
         final ComboBoxModel model = jComboBoxParent.getModel();
151
         for (int i = 0; i < model.getSize(); i++) {
152
            final ObjectAndDescription item = (ObjectAndDescription) model.getElementAt(i);
153
            final String sName = (String) item.getObject();
154
            if (sName.equals(ai.getParentParameterName())) {
155
               jComboBoxParent.setSelectedIndex(i);
156
               //jCheckBoxMandatory.setSelected(ai.getIsMandatory());
157
               break;
158
            }
159
         }
160

    
161
      }
162
      catch (final NullParameterAdditionalInfoException e) {
163
         e.printStackTrace();
164
      }
165

    
166
   }
167

    
168

    
169
   @Override
170
   public String getParameterDescription() {
171

    
172
      return Sextante.getText("Field");
173

    
174
   }
175

    
176

    
177
   @Override
178
   public boolean parameterCanBeAdded() {
179

    
180
      final ModelAlgorithm alg = m_ModelerPanel.getAlgorithm();
181

    
182
      if (alg != null) {
183
         return alg.requiresIndividualVectorLayers() || alg.requiresTables();
184
      }
185
      else {
186
         return false;
187
      }
188

    
189

    
190
   }
191

    
192
}