root / org.gvsig.legend.heatmap / trunk / org.gvsig.legend.heatmap / org.gvsig.legend.heatmap.swing / org.gvsig.legend.heatmap.swing.impl / src / main / java / org / gvsig / legend / heatmap / swing / impl / DefaultHeatmapLegendEditor.java @ 1847
History | View | Annotate | Download (8.59 KB)
1 |
|
---|---|
2 |
package org.gvsig.legend.heatmap.swing.impl; |
3 |
|
4 |
import java.awt.Color; |
5 |
import javax.swing.ImageIcon; |
6 |
import javax.swing.JFormattedTextField; |
7 |
import javax.swing.JPanel; |
8 |
import javax.swing.event.ChangeEvent; |
9 |
import javax.swing.event.ChangeListener; |
10 |
import org.apache.commons.lang3.StringUtils; |
11 |
import org.gvsig.app.gui.styling.ColorSchemeSelector; |
12 |
import org.gvsig.app.project.documents.view.legend.gui.Features; |
13 |
import org.gvsig.fmap.dal.exception.DataException; |
14 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
15 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
16 |
import org.gvsig.fmap.dal.feature.FeatureType; |
17 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
18 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
19 |
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend; |
20 |
import org.gvsig.legend.heatmap.lib.api.HeatmapLegend; |
21 |
import org.gvsig.legend.heatmap.lib.api.HeatmapLegendLocator; |
22 |
import org.gvsig.legend.heatmap.swing.api.HeatmapLegendEditor; |
23 |
import org.gvsig.tools.ToolsLocator; |
24 |
import org.gvsig.tools.i18n.I18nManager; |
25 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
26 |
import org.gvsig.tools.swing.api.ToolsSwingManager; |
27 |
import org.gvsig.tools.swing.api.ColorChooserController; |
28 |
import org.gvsig.tools.swing.icontheme.IconTheme; |
29 |
|
30 |
|
31 |
public class DefaultHeatmapLegendEditor extends DefaultHeatmapLegendEditorView implements HeatmapLegendEditor { |
32 |
|
33 |
private static final long serialVersionUID = 4307714097793669675L; |
34 |
|
35 |
private HeatmapLegend legend;
|
36 |
private FLayer layer;
|
37 |
private final Class<? extends HeatmapLegend> legendClass; |
38 |
private ColorChooserController hotColorChooser;
|
39 |
private ColorChooserController coldColorChooser;
|
40 |
private ColorSchemeSelector colorSchemaSelector;
|
41 |
|
42 |
public DefaultHeatmapLegendEditor() {
|
43 |
this.legendClass = HeatmapLegendLocator.getHeatmapLegendManager().getLegendClass();
|
44 |
} |
45 |
|
46 |
@Override
|
47 |
public void setData(FLayer layer, ILegend legend) { |
48 |
if( layer == this.layer && legend == this.legend ) { |
49 |
return;
|
50 |
} |
51 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
52 |
this.layer = layer;
|
53 |
if( this.getLegendClass().isInstance(legend) ) { |
54 |
this.legend = (HeatmapLegend) legend;
|
55 |
} else {
|
56 |
this.legend = HeatmapLegendLocator.getHeatmapLegendManager().create();
|
57 |
} |
58 |
this.hotColorChooser = toolsSwingManager.createColorChooserController(txtHotColorLabel, btnHotColor, sldHotColorAlpha);
|
59 |
this.coldColorChooser = toolsSwingManager.createColorChooserController(txtColdColorLabel, btnColdColor, sldColdColorAlpha);
|
60 |
this.colorSchemaSelector = new ColorSchemeSelector(cboColorTable, false); |
61 |
this.rdbUseColorRamp.addChangeListener(new ChangeListener() { |
62 |
@Override
|
63 |
public void stateChanged(ChangeEvent e) { |
64 |
useColorModeChanged(); |
65 |
} |
66 |
}); |
67 |
this.chkUseField.addChangeListener(new ChangeListener() { |
68 |
@Override
|
69 |
public void stateChanged(ChangeEvent e) { |
70 |
useFieldChanged(); |
71 |
} |
72 |
}); |
73 |
this.chkColorTableUseAlpha.addChangeListener(new ChangeListener() { |
74 |
@Override
|
75 |
public void stateChanged(ChangeEvent e) { |
76 |
useAlphaInColorTableChanged(); |
77 |
} |
78 |
}); |
79 |
|
80 |
this.spnDistance.setValue(this.legend.getDistance()); |
81 |
if( this.legend.useRamp() ) { |
82 |
this.rdbUseColorRamp.setSelected(true); |
83 |
} else {
|
84 |
this.rdbUseColorTable.setSelected(true); |
85 |
} |
86 |
if( this.legend.useAlphaInColorTable() ) { |
87 |
this.chkColorTableUseAlpha.setSelected(true); |
88 |
} else {
|
89 |
this.chkColorTableUseAlpha.setSelected(false); |
90 |
} |
91 |
this.sldColorTableColdAlpha.setValue(this.legend.getColorTableColdColorAlpha()); |
92 |
this.sldColorTableHotAlpha.setValue(this.legend.getColorTableHotColorAlpha()); |
93 |
|
94 |
this.chkUseField.setEnabled(false); |
95 |
this.chkUseField.setSelected(false); |
96 |
this.cboFields.setEnabled(false); |
97 |
this.cboFields.removeAllItems();
|
98 |
if( layer instanceof FLyrVect ) { |
99 |
FeatureStore store = ((FLyrVect) layer).getFeatureStore(); |
100 |
if( store != null ) { |
101 |
try {
|
102 |
FeatureType ftype = store.getDefaultFeatureType(); |
103 |
for( FeatureAttributeDescriptor attr : ftype ) {
|
104 |
this.cboFields.addItem(attr.getName());
|
105 |
} |
106 |
if( this.cboFields.getItemCount()>0 ) { |
107 |
this.chkUseField.setEnabled(true); |
108 |
if( !StringUtils.isEmpty(this.legend.getFieldName()) ) { |
109 |
this.chkUseField.setSelected(true); |
110 |
this.cboFields.setSelectedItem(this.legend.getFieldName()); |
111 |
this.cboFields.setEnabled(true); |
112 |
} |
113 |
} |
114 |
} catch (Exception ex) { |
115 |
|
116 |
} |
117 |
} |
118 |
} |
119 |
} |
120 |
|
121 |
private void useColorModeChanged() { |
122 |
if( this.rdbUseColorRamp.isSelected() ) { |
123 |
this.hotColorChooser.setEnabled(true); |
124 |
this.coldColorChooser.setEnabled(true); |
125 |
this.spnNumberOfColors.setEnabled(true); |
126 |
this.cboColorTable.setEnabled(false); |
127 |
this.chkColorTableUseAlpha.setEnabled(false); |
128 |
this.sldColorTableColdAlpha.setEnabled(false); |
129 |
this.sldColorTableHotAlpha.setEnabled(false); |
130 |
Color[] table = this.legend.getSourceColorTable(); |
131 |
this.spnNumberOfColors.setValue(table.length);
|
132 |
this.coldColorChooser.set(table[0]); |
133 |
this.hotColorChooser.set(table[table.length-1]); |
134 |
} else {
|
135 |
this.hotColorChooser.setEnabled(false); |
136 |
this.coldColorChooser.setEnabled(false); |
137 |
this.spnNumberOfColors.setEnabled(false); |
138 |
this.cboColorTable.setEnabled(true); |
139 |
this.chkColorTableUseAlpha.setEnabled(true); |
140 |
this.sldColorTableColdAlpha.setEnabled(true); |
141 |
this.sldColorTableHotAlpha.setEnabled(true); |
142 |
this.colorSchemaSelector.setSelectedColors(this.legend.getSourceColorTable()); |
143 |
} |
144 |
} |
145 |
|
146 |
private void useFieldChanged() { |
147 |
this.cboFields.setEnabled(this.chkUseField.isSelected()); |
148 |
} |
149 |
|
150 |
private void useAlphaInColorTableChanged() { |
151 |
boolean x = this.chkColorTableUseAlpha.isSelected(); |
152 |
this.sldColorTableColdAlpha.setEnabled(x);
|
153 |
this.sldColorTableHotAlpha.setEnabled(x);
|
154 |
} |
155 |
|
156 |
@Override
|
157 |
public ILegend getLegend() {
|
158 |
legend.setDistance((int) spnDistance.getValue());
|
159 |
if( this.rdbUseColorRamp.isSelected() ) { |
160 |
legend.setColorTable( |
161 |
(int) spnNumberOfColors.getValue(),
|
162 |
coldColorChooser.get(), |
163 |
hotColorChooser.get() |
164 |
); |
165 |
} else {
|
166 |
legend.setColorTable( this.colorSchemaSelector.getSelectedColors());
|
167 |
} |
168 |
if( this.chkUseField.isSelected() ) { |
169 |
String fieldName = (String) this.cboFields.getSelectedItem(); |
170 |
if( fieldName != null ) { |
171 |
this.legend.setFieldName(fieldName);
|
172 |
} |
173 |
} |
174 |
this.legend.setColorTableColdColorAlpha(this.sldColorTableColdAlpha.getValue()); |
175 |
this.legend.setColorTableHotColorAlpha(this.sldColorTableHotAlpha.getValue()); |
176 |
this.legend.setUseAlphaInColorTable(this.chkColorTableUseAlpha.isSelected()); |
177 |
|
178 |
return legend;
|
179 |
} |
180 |
|
181 |
@Override
|
182 |
public String getDescription() { |
183 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
184 |
return i18n.getTranslation( "_Heatmap_legend_description"); |
185 |
} |
186 |
|
187 |
@Override
|
188 |
public ImageIcon getIcon() { |
189 |
IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent(); |
190 |
return theme.get("legend-overview-vectorial-heatmap"); |
191 |
} |
192 |
|
193 |
@Override
|
194 |
public Class getParentClass() { |
195 |
return Features.class;
|
196 |
} |
197 |
|
198 |
@Override
|
199 |
public String getTitle() { |
200 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
201 |
return i18n.getTranslation( "_Heatmap_legend"); |
202 |
} |
203 |
|
204 |
@Override
|
205 |
public JPanel getPanel() { |
206 |
return this; |
207 |
} |
208 |
|
209 |
@Override
|
210 |
public Class getLegendClass() { |
211 |
return this.legendClass; |
212 |
} |
213 |
|
214 |
@Override
|
215 |
public boolean isSuitableFor(FLayer layer) { |
216 |
return true; |
217 |
} |
218 |
|
219 |
private int getIntValue(JFormattedTextField text, int defaultValue) { |
220 |
String s = text.getText();
|
221 |
if( StringUtils.isEmpty(s) ) {
|
222 |
return defaultValue;
|
223 |
} |
224 |
int value = defaultValue;
|
225 |
try {
|
226 |
value = Integer.parseInt(s);
|
227 |
} catch(Throwable th) { |
228 |
|
229 |
} |
230 |
return value;
|
231 |
} |
232 |
|
233 |
} |