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 |
} |