root / org.gvsig.legend.urbanhorizontalsignage / trunk / org.gvsig.legend.urbanhorizontalsignage.swing / org.gvsig.legend.urbanhorizontalsignage.swing.impl / src / main / java / org / gvsig / legend / urbanhorizontalsignage / swing / impl / DefaultUrbanHorizontalSignageLegendEditor.java @ 5087
History | View | Annotate | Download (9.49 KB)
1 |
|
---|---|
2 |
package org.gvsig.legend.urbanhorizontalsignage.swing.impl; |
3 |
|
4 |
import javax.swing.AbstractButton; |
5 |
import javax.swing.ImageIcon; |
6 |
import javax.swing.JLabel; |
7 |
import javax.swing.JPanel; |
8 |
import javax.swing.SpinnerNumberModel; |
9 |
import org.gvsig.app.project.documents.view.legend.gui.Features; |
10 |
import org.gvsig.fmap.dal.DataTypes; |
11 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
12 |
import org.gvsig.fmap.dal.feature.FeatureType; |
13 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
14 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
15 |
import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController; |
16 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
17 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
18 |
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend; |
19 |
import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLegend; |
20 |
import static org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLegend.DEFAULT_GAP_WIDTH_VALUE; |
21 |
import org.gvsig.legend.urbanhorizontalsignage.lib.api.UrbanHorizontalSignageLocator; |
22 |
import org.gvsig.legend.urbanhorizontalsignage.swing.api.UrbanHorizontalSignageLegendEditor; |
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.icontheme.IconTheme; |
28 |
import org.slf4j.Logger; |
29 |
import org.slf4j.LoggerFactory; |
30 |
|
31 |
|
32 |
public class DefaultUrbanHorizontalSignageLegendEditor extends DefaultUrbanHorizontalSignageLegendEditorView implements UrbanHorizontalSignageLegendEditor { |
33 |
|
34 |
private static final long serialVersionUID = 4307714097793669675L; |
35 |
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultUrbanHorizontalSignageLegendEditor.class); |
36 |
|
37 |
private UrbanHorizontalSignageLegend legend;
|
38 |
private FLayer layer;
|
39 |
private final Class<? extends UrbanHorizontalSignageLegend> legendClass; |
40 |
private AttributeDescriptorPickerController widthFieldController;
|
41 |
private AttributeDescriptorPickerController continuityFieldController;
|
42 |
private AttributeDescriptorPickerController segmentsColorFieldController;
|
43 |
private AttributeDescriptorPickerController paintHolesFieldController;
|
44 |
private AttributeDescriptorPickerController holesColorFieldController;
|
45 |
private AttributeDescriptorPickerController segmentsLengthFieldController;
|
46 |
private AttributeDescriptorPickerController holesLengthFieldController;
|
47 |
private AttributeDescriptorPickerController roundVertexFieldController;
|
48 |
|
49 |
public DefaultUrbanHorizontalSignageLegendEditor() {
|
50 |
this.legendClass = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager().getLegendClass();
|
51 |
initComponents(); |
52 |
} |
53 |
|
54 |
private void initComponents(){ |
55 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
56 |
|
57 |
DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager(); |
58 |
widthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboWidthFields, (t) -> { |
59 |
return t.getDataType().isNumeric();
|
60 |
}); |
61 |
continuityFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboContinuityFields, (t) -> { |
62 |
return t.getDataType().isNumeric();
|
63 |
}); |
64 |
segmentsColorFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboSegmentsColorFields, (t) -> { |
65 |
return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
|
66 |
}); |
67 |
segmentsLengthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboSegmentsLengthFields, (t) -> { |
68 |
return t.getDataType().isNumeric();
|
69 |
}); |
70 |
paintHolesFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboPaintHolesFields, (t) -> { |
71 |
return t.getType() != DataTypes.GEOMETRY;
|
72 |
}); |
73 |
holesColorFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboHolesColorFields, (t) -> { |
74 |
return t.getDataType().isNumeric() || t.getType() == DataTypes.STRING;
|
75 |
}); |
76 |
holesLengthFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboHolesLengthFields, (t) -> { |
77 |
return t.getDataType().isNumeric();
|
78 |
}); |
79 |
roundVertexFieldController = dataSwingManager.createAttributeDescriptorPickerController(cboRoundVertexFields, (t) -> { |
80 |
return t.getType() != DataTypes.GEOMETRY;
|
81 |
}); |
82 |
|
83 |
SpinnerNumberModel spnModel = new SpinnerNumberModel((int)DEFAULT_GAP_WIDTH_VALUE, 0, Integer.MAX_VALUE, 1); |
84 |
spnGapWith.setModel(spnModel); |
85 |
|
86 |
translateAll(); |
87 |
} |
88 |
|
89 |
private void translateAll() { |
90 |
this.translate(this.lblWidthField); |
91 |
this.translate(this.lblContinuityField); |
92 |
this.translate(this.lblSegmentsColorField); |
93 |
this.translate(this.lblSegmentsLengthField); |
94 |
this.translate(this.lblHolesColorField); |
95 |
this.translate(this.lblPaintHolesField); |
96 |
this.translate(this.lblHolesLengthField); |
97 |
this.translate(this.lblRoundVertexField); |
98 |
} |
99 |
|
100 |
private void translate(AbstractButton component) { |
101 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
102 |
component.setText(i18n.getTranslation(component.getText())); |
103 |
} |
104 |
|
105 |
private void translate(JLabel component) { |
106 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
107 |
component.setText(i18n.getTranslation(component.getText())); |
108 |
} |
109 |
|
110 |
@Override
|
111 |
public void setData(FLayer layer, ILegend legend) { |
112 |
if( layer == this.layer && legend == this.legend ) { |
113 |
return;
|
114 |
} |
115 |
this.layer = layer;
|
116 |
if( this.getLegendClass().isInstance(legend) ) { |
117 |
this.legend = (UrbanHorizontalSignageLegend) legend;
|
118 |
} else {
|
119 |
this.legend = UrbanHorizontalSignageLocator.getUrbanHorizontalSignageManager().create();
|
120 |
} |
121 |
|
122 |
if( layer instanceof FLyrVect ) { |
123 |
FeatureStore store = ((FLyrVect) layer).getFeatureStore(); |
124 |
if( store != null ) { |
125 |
try {
|
126 |
FeatureType ftype = store.getDefaultFeatureType(); |
127 |
this.widthFieldController.setFeatureType(ftype);
|
128 |
this.continuityFieldController.setFeatureType(ftype);
|
129 |
this.segmentsColorFieldController.setFeatureType(ftype);
|
130 |
this.segmentsLengthFieldController.setFeatureType(ftype);
|
131 |
this.paintHolesFieldController.setFeatureType(ftype);
|
132 |
this.holesColorFieldController.setFeatureType(ftype);
|
133 |
this.holesLengthFieldController.setFeatureType(ftype);
|
134 |
this.roundVertexFieldController.setFeatureType(ftype);
|
135 |
|
136 |
|
137 |
this.widthFieldController.set(this.legend.getWidthFieldName()); |
138 |
this.continuityFieldController.set(this.legend.getContinuityFieldName()); |
139 |
this.segmentsColorFieldController.set(this.legend.getSegmentsColorFieldName()); |
140 |
this.segmentsLengthFieldController.set(this.legend.getSegmentsLengthFieldName()); |
141 |
this.paintHolesFieldController.set(this.legend.getPaintHolesFieldName()); |
142 |
this.holesColorFieldController.set(this.legend.getHolesColorFieldName()); |
143 |
this.holesLengthFieldController.set(this.legend.getHolesLengthFieldName()); |
144 |
this.roundVertexFieldController.set(this.legend.getRoundVertexFieldName()); |
145 |
|
146 |
this.spnGapWith.getModel().setValue(this.legend.getGapWidth()); |
147 |
|
148 |
} catch (Exception ex) { |
149 |
LOGGER.warn("Can't fill data of legend.", ex);
|
150 |
//FIXME: ?hacemos algo m?s con la excepci?n?
|
151 |
|
152 |
} |
153 |
} |
154 |
} |
155 |
} |
156 |
|
157 |
@Override
|
158 |
public ILegend getLegend() {
|
159 |
this.legend.setWidthFieldName((String) this.widthFieldController.getName()); |
160 |
this.legend.setContinuityFieldName(this.continuityFieldController.getName()); |
161 |
this.legend.setSegmentsColorFieldName(this.segmentsColorFieldController.getName()); |
162 |
this.legend.setSegmentsLengthFieldName(this.segmentsLengthFieldController.getName()); |
163 |
this.legend.setPaintHolesFieldName(this.paintHolesFieldController.getName()); |
164 |
this.legend.setHolesColorFieldName(this.holesColorFieldController.getName()); |
165 |
this.legend.setHolesLengthFieldName(this.holesLengthFieldController.getName()); |
166 |
this.legend.setRoundVertexFieldName(this.roundVertexFieldController.getName()); |
167 |
|
168 |
this.legend.setGapWith((int) spnGapWith.getValue()); |
169 |
|
170 |
return legend;
|
171 |
} |
172 |
|
173 |
@Override
|
174 |
public String getDescription() { |
175 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
176 |
return i18n.getTranslation( "_Urban_horizontal_signage_legend_description"); |
177 |
} |
178 |
|
179 |
@Override
|
180 |
public ImageIcon getIcon() { |
181 |
IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent(); |
182 |
return theme.get("legend-overview-vectorial-urbanhorizontalsignage"); |
183 |
} |
184 |
|
185 |
@Override
|
186 |
public Class getParentClass() { |
187 |
return Features.class;
|
188 |
} |
189 |
|
190 |
@Override
|
191 |
public String getTitle() { |
192 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
193 |
return i18n.getTranslation( "_Urban_horizontal_signage_legend"); |
194 |
} |
195 |
|
196 |
@Override
|
197 |
public JPanel getPanel() { |
198 |
return this; |
199 |
} |
200 |
|
201 |
@Override
|
202 |
public Class getLegendClass() { |
203 |
return this.legendClass; |
204 |
} |
205 |
|
206 |
@Override
|
207 |
public boolean isSuitableFor(FLayer layer) { |
208 |
return true; |
209 |
} |
210 |
|
211 |
} |