svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / searchpanel / SelectGeometryPanel.java @ 47564
History | View | Annotate | Download (6.84 KB)
1 |
package org.gvsig.fmap.dal.swing.impl.searchpanel; |
---|---|
2 |
|
3 |
import javax.swing.JComponent; |
4 |
import javax.swing.event.ChangeEvent; |
5 |
import org.apache.commons.lang3.StringUtils; |
6 |
import org.cresques.cts.IProjection; |
7 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
8 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
9 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
10 |
import org.gvsig.fmap.dal.swing.ProjectionPickerController; |
11 |
import static org.gvsig.fmap.dal.swing.impl.searchpanel.SearchConditionFieldController.GEOM_OPERAND_MODE_CLIPBOARD; |
12 |
import static org.gvsig.fmap.dal.swing.impl.searchpanel.SearchConditionFieldController.GEOM_OPERAND_MODE_CONSTANT; |
13 |
import static org.gvsig.fmap.dal.swing.impl.searchpanel.SearchConditionFieldController.GEOM_OPERAND_MODE_LAYER_SELECTION; |
14 |
import org.gvsig.fmap.dal.swing.storesrepository.StoresRepositoryController; |
15 |
import org.gvsig.fmap.geom.Geometry; |
16 |
import org.gvsig.fmap.geom.GeometryUtils; |
17 |
import org.gvsig.tools.dispose.DisposeUtils; |
18 |
import org.gvsig.tools.swing.api.Component; |
19 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
20 |
import org.gvsig.tools.swing.api.ToolsSwingManager; |
21 |
import org.gvsig.tools.swing.api.ToolsSwingUtils; |
22 |
|
23 |
/**
|
24 |
*
|
25 |
* @author jjdelcerro
|
26 |
*/
|
27 |
public class SelectGeometryPanel |
28 |
extends SelectGeometryPanelView
|
29 |
implements Component |
30 |
{ |
31 |
|
32 |
private ProjectionPickerController pickerProjection;
|
33 |
private StoresRepositoryController storesRepositoryController;
|
34 |
|
35 |
public SelectGeometryPanel() {
|
36 |
this.createComponents();
|
37 |
} |
38 |
|
39 |
private void createComponents() { |
40 |
this.initComponents();
|
41 |
} |
42 |
|
43 |
private void initComponents() { |
44 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
45 |
|
46 |
this.translate();
|
47 |
|
48 |
DataSwingManager dataSwingMamager = DALSwingLocator.getDataSwingManager(); |
49 |
|
50 |
this.pickerProjection = dataSwingMamager.createProjectionPickerController(
|
51 |
txtProjection, |
52 |
btnProjection |
53 |
); |
54 |
this.storesRepositoryController = dataSwingMamager.createStoresRepositoryController(treeStores);
|
55 |
|
56 |
this.rdbConstantGeometry.addChangeListener((ChangeEvent e) -> { |
57 |
doUpdateEnableComponents(); |
58 |
}); |
59 |
this.rdbUseGeomsFromClipbard.addChangeListener((ChangeEvent e) -> { |
60 |
doUpdateEnableComponents(); |
61 |
}); |
62 |
this.rdbUseGeomsFromLayerSelection.addChangeListener((ChangeEvent e) -> { |
63 |
doUpdateEnableComponents(); |
64 |
}); |
65 |
this.rdbUseGeomsFromClipbard.setSelected(true); |
66 |
|
67 |
toolsSwingManager.setDefaultPopupMenu(txtGeometry); |
68 |
toolsSwingManager.addClearButton(txtGeometry); |
69 |
|
70 |
doUpdateEnableComponents(); |
71 |
|
72 |
ToolsSwingUtils.ensureRowsCols(this, 24, 80, 50, 100); |
73 |
} |
74 |
|
75 |
private void translate() { |
76 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
77 |
|
78 |
toolsSwingManager.translate(this.rdbConstantGeometry);
|
79 |
toolsSwingManager.translate(this.rdbUseGeomsFromClipbard);
|
80 |
toolsSwingManager.translate(this.rdbUseGeomsFromLayerSelection);
|
81 |
toolsSwingManager.translate(this.lblProjection);
|
82 |
toolsSwingManager.translate(this.chkUseTheGeometryBoundingBox);
|
83 |
} |
84 |
|
85 |
@Override
|
86 |
public JComponent asJComponent() { |
87 |
return this; |
88 |
} |
89 |
|
90 |
public int getMode() { |
91 |
if( this.rdbUseGeomsFromClipbard.isSelected() ) { |
92 |
return GEOM_OPERAND_MODE_CLIPBOARD;
|
93 |
} else if( this.rdbUseGeomsFromLayerSelection.isSelected() ) { |
94 |
return GEOM_OPERAND_MODE_LAYER_SELECTION;
|
95 |
} else if( this.rdbConstantGeometry.isSelected() ) { |
96 |
return GEOM_OPERAND_MODE_CONSTANT;
|
97 |
} |
98 |
return GEOM_OPERAND_MODE_CLIPBOARD;
|
99 |
} |
100 |
|
101 |
public boolean useBox2dInGeometryOperand() { |
102 |
return this.chkUseTheGeometryBoundingBox.isSelected(); |
103 |
} |
104 |
|
105 |
public Geometry getGeometry() {
|
106 |
String s = this.txtGeometry.getText(); |
107 |
if( StringUtils.isBlank(s) ) {
|
108 |
return null; |
109 |
} |
110 |
return GeometryUtils.createFrom(s, this.getProjection()); |
111 |
} |
112 |
|
113 |
public IProjection getProjection() {
|
114 |
return this.pickerProjection.get(); |
115 |
} |
116 |
|
117 |
public String getStoreName() { |
118 |
FeatureStore store = null;
|
119 |
try {
|
120 |
store = this.storesRepositoryController.getSelectedFeatureStore();
|
121 |
if( store == null ) { |
122 |
return null; |
123 |
} |
124 |
return store.getName();
|
125 |
} finally {
|
126 |
DisposeUtils.disposeQuietly(store); |
127 |
} |
128 |
} |
129 |
|
130 |
private void doUpdateEnableComponents() { |
131 |
if( this.rdbUseGeomsFromClipbard.isSelected() ) { |
132 |
this.treeStores.setEnabled(false); |
133 |
this.pickerProjection.setEnabled(false); |
134 |
this.txtGeometry.setEnabled(false); |
135 |
this.chkUseTheGeometryBoundingBox.setEnabled(false); |
136 |
} else if( this.rdbUseGeomsFromLayerSelection.isSelected() ) { |
137 |
this.treeStores.setEnabled(true); |
138 |
this.pickerProjection.setEnabled(false); |
139 |
this.txtGeometry.setEnabled(false); |
140 |
this.chkUseTheGeometryBoundingBox.setEnabled(true); |
141 |
} else if( this.rdbConstantGeometry.isSelected() ) { |
142 |
this.treeStores.setEnabled(false); |
143 |
this.pickerProjection.setEnabled(true); |
144 |
this.txtGeometry.setEnabled(true); |
145 |
this.chkUseTheGeometryBoundingBox.setEnabled(false); |
146 |
} |
147 |
} |
148 |
|
149 |
void setMode(int mode) { |
150 |
switch(mode) {
|
151 |
case GEOM_OPERAND_MODE_LAYER_SELECTION:
|
152 |
this.rdbUseGeomsFromClipbard.setSelected(false); |
153 |
this.rdbUseGeomsFromLayerSelection.setSelected(true); |
154 |
this.rdbConstantGeometry.setSelected(false); |
155 |
break;
|
156 |
case GEOM_OPERAND_MODE_CONSTANT:
|
157 |
this.rdbUseGeomsFromClipbard.setSelected(false); |
158 |
this.rdbUseGeomsFromLayerSelection.setSelected(false); |
159 |
this.rdbConstantGeometry.setSelected(true); |
160 |
break;
|
161 |
case GEOM_OPERAND_MODE_CLIPBOARD:
|
162 |
default:
|
163 |
this.rdbUseGeomsFromClipbard.setSelected(true); |
164 |
this.rdbUseGeomsFromLayerSelection.setSelected(false); |
165 |
this.rdbConstantGeometry.setSelected(false); |
166 |
break;
|
167 |
} |
168 |
doUpdateEnableComponents(); |
169 |
} |
170 |
|
171 |
void setGeometry(Geometry geometry) {
|
172 |
if( geometry == null ) { |
173 |
this.txtGeometry.setText(""); |
174 |
} else {
|
175 |
this.txtGeometry.setText(geometry.convertToWKTQuietly());
|
176 |
} |
177 |
doUpdateEnableComponents(); |
178 |
} |
179 |
|
180 |
void setStoreName(String storeName) { |
181 |
this.storesRepositoryController.setSelectedStore(storeName);
|
182 |
doUpdateEnableComponents(); |
183 |
} |
184 |
|
185 |
void setUseBox2dInGeometryOperand(boolean useBox2d) { |
186 |
this.chkUseTheGeometryBoundingBox.setSelected(useBox2d);
|
187 |
doUpdateEnableComponents(); |
188 |
} |
189 |
} |