Revision 33927

View differences:

tags/v2_0_0_Build_2020/extensions/extDataLocator/src/org/gvsig/datalocator/DataLocatorExtension.java
1
/*
2
 * Created on 22-jun-2005
3
 *
4
 * gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
21
 *
22
 * For more information, contact:
23
 *
24
 *  Generalitat Valenciana
25
 *   Conselleria d'Infraestructures i Transport
26
 *   Av. Blasco Ib??ez, 50
27
 *   46010 VALENCIA
28
 *   SPAIN
29
 *
30
 *      +34 963862235
31
 *   gvsig@gva.es
32
 *      www.gvsig.gva.es
33
 *
34
 *    or
35
 *
36
 *   IVER T.I. S.A
37
 *   Salamanca 50
38
 *   46005 Valencia
39
 *   Spain
40
 *
41
 *   +34 963163400
42
 *   dac@iver.es
43
 */
44
package org.gvsig.datalocator;
45

  
46
import java.util.prefs.Preferences;
47

  
48
import org.gvsig.andami.PluginServices;
49
import org.gvsig.andami.plugins.Extension;
50
import org.gvsig.andami.ui.mdiManager.IWindow;
51
import org.gvsig.andami.ui.mdiManager.WindowInfo;
52
import org.gvsig.app.project.documents.view.ViewDocument;
53
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
54
import org.gvsig.datalocator.gui.DataSelectionPanel;
55
import org.gvsig.fmap.dal.feature.FeatureStore;
56
import org.gvsig.fmap.mapcontext.MapContext;
57
import org.gvsig.fmap.mapcontext.layers.FLayer;
58
import org.gvsig.fmap.mapcontext.layers.LayersIterator;
59
import org.gvsig.fmap.mapcontext.layers.operations.LayerCollection;
60
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
61

  
62

  
63
/**
64
 * The DataLocatorExtension class allows to make a quick zoom based on an
65
 * alphanumeric attribute.
66
 *
67
 * @author jmorell
68
 */
69
public class DataLocatorExtension extends Extension {
70

  
71
	IWindow iWDataSelection = null;
72
	IWindow previousView = null;
73

  
74
    /* (non-Javadoc)
75
     * @see com.iver.andami.plugins.Extension#inicializar()
76
     */
77
    public void initialize() {
78
    	registerIcons();
79

  
80
    }
81

  
82
    private void registerIcons(){
83
    	//view-locator
84
    	PluginServices.getIconTheme().registerDefault(
85
				"view-locator",
86
				this.getClass().getClassLoader().getResource("images/locator.png")
87
			);
88
    }
89

  
90
    /* (non-Javadoc)
91
     * @see com.iver.andami.plugins.Extension#execute(java.lang.String)
92
     */
93
    public void execute(String actionCommand) {
94
		DefaultViewPanel vista = (DefaultViewPanel)PluginServices.getMDIManager().getActiveWindow();
95
		MapContext mapContext = vista.getModel().getMapContext();
96
		DataSelectionPanel dataSelectionPanel = new DataSelectionPanel(mapContext);
97
		WindowInfo vi = dataSelectionPanel.getWindowInfo();
98
		vi.setX(Preferences.userRoot().getInt("gvSIG.DataLocator.x", vi.getX()));
99
		vi.setY(Preferences.userRoot().getInt("gvSIG.DataLocator.y", vi.getY()));
100
//		vi.setWidth(Preferences.userRoot().getInt("gvSIG.DataLocator.w", vi.getWidth()));
101
//		vi.setHeight(Preferences.userRoot().getInt("gvSIG.DataLocator.h", vi.getHeight()));
102

  
103
		PluginServices.getMDIManager().addWindow(dataSelectionPanel);
104
		iWDataSelection = dataSelectionPanel;
105
		iWDataSelection.getWindowInfo();
106
    }
107

  
108
    /* (non-Javadoc)
109
     * @see com.iver.andami.plugins.Extension#isEnabled()
110
     */
111
    public boolean isEnabled() {
112
		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
113
		 .getActiveWindow();
114
		if (f == null) {
115
		    return false;
116
		}
117
		if (f.getClass() == DefaultViewPanel.class) {
118

  
119
		    DefaultViewPanel vista = (DefaultViewPanel) f;
120
		    ViewDocument model = vista.getModel();
121
		    MapContext mapContext = model.getMapContext();
122
            if (mapContext.getLayers().getLayersCount() > 0) {
123
                LayersIterator iter = newValidLayersIterator(mapContext.getLayers());
124
                if (!iter.hasNext()) {
125
                	return false;
126
                }
127
            } else {
128
                return false;
129
            }
130

  
131
			// Si la vista tiene el tema con el que est? configurado
132
			// el DataLocator y el usuario ha decidido que se abra
133
			// autom?ticamente, la abrimos inmediatamente.
134
            if (iWDataSelection == null || (PluginServices.getMDIManager()
135
            		.getWindowInfo(iWDataSelection).isClosed() && f!=previousView)) {
136
			    int userOpen = Preferences.userRoot().getInt("gvSIG.DataLocator.open_first_time", -1);
137
			    if (userOpen == 1)
138
			    {
139
					String layerName = Preferences.userRoot().get("LAYERNAME_FOR_DATA_LOCATION", "");
140
					FLayer lyr = mapContext.getLayers().getLayer(layerName);
141
					if (lyr != null)
142
					{
143
						DataSelectionPanel dataSelectionPanel = new DataSelectionPanel(mapContext);
144
						WindowInfo vi = dataSelectionPanel.getWindowInfo();
145
						vi.setX(Preferences.userRoot().getInt("gvSIG.DataLocator.x", vi.getX()));
146
						vi.setY(Preferences.userRoot().getInt("gvSIG.DataLocator.y", vi.getY()));
147
//						vi.setWidth(Preferences.userRoot().getInt("gvSIG.DataLocator.w", vi.getWidth()));
148
//						vi.setHeight(Preferences.userRoot().getInt("gvSIG.DataLocator.h", vi.getHeight()));
149

  
150
						PluginServices.getMDIManager().addWindow(dataSelectionPanel);
151
        				iWDataSelection = dataSelectionPanel;
152
        				iWDataSelection.getWindowInfo();
153
					}
154
			    }
155
			}
156
            previousView = f;
157
		}
158
        return true;
159
    }
160

  
161
    /* (non-Javadoc)
162
     * @see com.iver.andami.plugins.Extension#isVisible()
163
     */
164
    public boolean isVisible() {
165
		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
166
		 .getActiveWindow();
167
		if (f == null) {
168
		    return false;
169
		}
170
		if (f.getClass() == DefaultViewPanel.class) {
171
		    DefaultViewPanel vista = (DefaultViewPanel) f;
172
		    ViewDocument model = vista.getModel();
173
		    MapContext mapContext = model.getMapContext();
174
            return mapContext.getLayers().getLayersCount() > 0;
175
		} else {
176
		    return false;
177
		}
178
    }
179

  
180
    public static LayersIterator newValidLayersIterator(LayerCollection layer) {
181
    	return new LayersIterator((FLayer)layer){
182
    		public boolean evaluate(FLayer layer) {
183
    			if (!(layer instanceof FLyrVect))
184
    				return false;
185

  
186
    			FeatureStore featureStore;
187
    			try {
188
    				featureStore = ((FLyrVect)layer).getFeatureStore();
189
    				if (featureStore.getDefaultFeatureType().size() < 1)
190
    					return false;
191

  
192
    			} catch (Exception e) {
193
    				return false;
194
    			}
195
    			return true;
196
    		}
197
    	};
198
    }
199
}
tags/v2_0_0_Build_2020/extensions/extDataLocator/src/org/gvsig/datalocator/gui/DataSelectionPanel.java
1
/*
2
 * Created on 22-jun-2005
3
 *
4
 * gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
5
 *
6
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
7
 *
8
 * This program is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU General Public License
10
 * as published by the Free Software Foundation; either version 2
11
 * of the License, or (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License
19
 * along with this program; if not, write to the Free Software
20
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
21
 *
22
 * For more information, contact:
23
 *
24
 *  Generalitat Valenciana
25
 *   Conselleria d'Infraestructures i Transport
26
 *   Av. Blasco Ib??ez, 50
27
 *   46010 VALENCIA
28
 *   SPAIN
29
 *
30
 *      +34 963862235
31
 *   gvsig@gva.es
32
 *      www.gvsig.gva.es
33
 *
34
 *    or
35
 *
36
 *   IVER T.I. S.A
37
 *   Salamanca 50
38
 *   46005 Valencia
39
 *   Spain
40
 *
41
 *   +34 963163400
42
 *   dac@iver.es
43
 */
44
package org.gvsig.datalocator.gui;
45

  
46
import java.awt.FlowLayout;
47
import java.awt.event.ItemListener;
48
import java.util.Comparator;
49
import java.util.Date;
50
import java.util.TreeSet;
51
import java.util.Vector;
52
import java.util.prefs.Preferences;
53

  
54
import javax.swing.DefaultComboBoxModel;
55
import javax.swing.JCheckBox;
56
import javax.swing.JComboBox;
57
import javax.swing.JDialog;
58
import javax.swing.JLabel;
59
import javax.swing.JPanel;
60

  
61
import org.gvsig.andami.PluginServices;
62
import org.gvsig.andami.ui.mdiManager.IWindow;
63
import org.gvsig.andami.ui.mdiManager.IWindowListener;
64
import org.gvsig.andami.ui.mdiManager.SingletonWindow;
65
import org.gvsig.andami.ui.mdiManager.WindowInfo;
66
import org.gvsig.datalocator.DataLocatorExtension;
67
import org.gvsig.fmap.dal.exception.DataException;
68
import org.gvsig.fmap.dal.feature.Feature;
69
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
70
import org.gvsig.fmap.dal.feature.FeatureQuery;
71
import org.gvsig.fmap.dal.feature.FeatureSelection;
72
import org.gvsig.fmap.dal.feature.FeatureSet;
73
import org.gvsig.fmap.dal.feature.FeatureStore;
74
import org.gvsig.fmap.mapcontext.MapContext;
75
import org.gvsig.fmap.mapcontext.SelectedZoomVisitor;
76
import org.gvsig.fmap.mapcontext.layers.CancelationException;
77
import org.gvsig.fmap.mapcontext.layers.FLayer;
78
import org.gvsig.fmap.mapcontext.layers.FLayers;
79
import org.gvsig.fmap.mapcontext.layers.LayerCollectionEvent;
80
import org.gvsig.fmap.mapcontext.layers.LayerCollectionListener;
81
import org.gvsig.fmap.mapcontext.layers.LayerPositionEvent;
82
import org.gvsig.fmap.mapcontext.layers.LayersIterator;
83
import org.gvsig.fmap.mapcontext.layers.operations.LayerCollection;
84
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
85
import org.gvsig.gui.beans.swing.JButton;
86
import org.gvsig.tools.dispose.DisposableIterator;
87
import org.gvsig.tools.dispose.DisposeUtils;
88
import org.gvsig.tools.evaluator.Evaluator;
89
import org.gvsig.tools.evaluator.EvaluatorData;
90
import org.gvsig.tools.evaluator.EvaluatorException;
91
import org.gvsig.tools.evaluator.EvaluatorFieldsInfo;
92
import org.gvsig.tools.exception.BaseException;
93

  
94

  
95
/**
96
 * @author jmorell
97
 */
98
public class DataSelectionPanel extends JPanel implements IWindow, IWindowListener, SingletonWindow {
99

  
100
	private static final long serialVersionUID = 1L;
101
    private JComboBox jComboBox = null;
102
	private JLabel jLabel = null;  //  @jve:decl-index=0:visual-constraint="597,16"
103
	private JLabel jLabel1 = null;  //  @jve:decl-index=0:visual-constraint="873,44"
104
	private JComboBox jComboBox1 = null;
105
	private JLabel jLabel2 = null;  //  @jve:decl-index=0:visual-constraint="847,16"
106
	private JComboBox jComboBox2 = null;
107
    private WindowInfo viewInfo = null;
108
	private JButton jButton = null;
109
	private JButton jButton1 = null;
110
	private FLayer layerToZoom = null;
111
	private int fieldToZoomIndex = 0;
112
	private Object itemToZoom = null;
113
	private MapContext mapContext = null;
114
	private Preferences prefUsuario = null;
115
	private Vector<LayersListener> layersListenerList = new Vector<LayersListener>();
116
    private Vector<FLayer> vectorialLayers = null;
117
	private JCheckBox jChkBoxOpenFirstTime = null;
118
	private JPanel jPanelButtons = null;
119

  
120
	/**
121
	 * This method initializes
122
	 *
123
	 */
124
	public DataSelectionPanel(MapContext mapContext) {
125
		super();
126
		this.mapContext = mapContext;
127
		prefUsuario = Preferences.userRoot();
128
		initializeVectorialLayers();
129
        initializeLayerToZoom();
130
		initializeFieldToZoomIndex();
131
        initialize();
132

  
133
        int userOpen = prefUsuario.getInt("gvSIG.DataLocator.open_first_time", -1);
134
        if (userOpen == 1)
135
        	getJChkBoxOpenFirstTime().setSelected(true);
136
	}
137
    private void initializeVectorialLayers() {
138
    	unregisterLayersListener();
139
        vectorialLayers = new Vector<FLayer>();
140
        LayersIterator iter = DataLocatorExtension.newValidLayersIterator(mapContext.getLayers());
141

  
142

  
143
        while (iter.hasNext()) {
144
        	vectorialLayers.add(iter.nextLayer());
145
        }
146

  
147
        registerLayersListener();
148
    }
149
	private void initializeLayerToZoom() {
150
		String layerName = prefUsuario.get("LAYERNAME_FOR_DATA_LOCATION", "");
151
        if (layerName.equals("")) layerToZoom = (FLayer)vectorialLayers.get(0);
152
        boolean layerFound = false;
153
        for (int i=0;i<vectorialLayers.size();i++) {
154
            if (((FLayer)vectorialLayers.get(i)).getName().equals(layerName)) {
155
                layerFound = true;
156
                layerToZoom = (FLayer)vectorialLayers.get(i);
157
                break;
158
            }
159
        }
160
        if (!layerFound) layerToZoom = (FLayer)vectorialLayers.get(0);
161
        prefUsuario.put("LAYERNAME_FOR_DATA_LOCATION", layerToZoom.getName());
162

  
163
	}
164
	private void initializeFieldToZoomIndex() {
165
        fieldToZoomIndex = prefUsuario.getInt("FIELDINDEX_FOR_DATA_LOCATION", 0);
166
		FLyrVect lyr = (FLyrVect)layerToZoom;
167
		FeatureStore featureStore;
168
        try {
169
            featureStore = lyr.getFeatureStore();
170
            if (fieldToZoomIndex > (featureStore.getDefaultFeatureType().size()-1)) {
171
            	fieldToZoomIndex = 0;
172
            } else if (featureStore.getDefaultFeatureType().size() == 0) {
173
            	fieldToZoomIndex = -1;
174
            }
175
        } catch (DataException e) {
176
			fieldToZoomIndex = -1;
177
            e.printStackTrace();
178
		}
179
	}
180
	/**
181
	 * This method initializes this
182
	 *
183
	 * @return void
184
	 */
185
	private void initialize() {
186
        jLabel2 = new JLabel();
187
        jLabel1 = new JLabel();
188
        jLabel = new JLabel();
189
        this.setLayout(null);
190
        this.setSize(350, 161);
191
        jLabel.setBounds(6, 6, 80, 23);
192
        jLabel.setText(PluginServices.getText(this,"Capa") + ":");
193
        jLabel1.setBounds(6, 34, 80, 23);
194
        jLabel1.setText(PluginServices.getText(this,"Campo") + ":");
195
        jLabel2.setBounds(6, 61, 80, 23);
196
        jLabel2.setText(PluginServices.getText(this,"Valor") + ":");
197
        this.add(getJComboBox(), null);
198
        this.add(jLabel, null);
199
        this.add(jLabel1, null);
200
        this.add(getJComboBox1(), null);
201
        this.add(jLabel2, null);
202
        this.add(getJComboBox2(), null);
203

  
204
        jPanelButtons = new JPanel();
205
        FlowLayout flowLayor = new FlowLayout(FlowLayout.RIGHT);
206
        flowLayor.setHgap(5);
207

  
208
        jPanelButtons.setLayout(flowLayor);
209
        jPanelButtons.setBounds(15,121,335,35);
210
        jPanelButtons.add(getJButton(), null);
211
        jPanelButtons.add(getJButton1(), null);
212

  
213
        this.add(jPanelButtons);
214

  
215
        this.add(getJChkBoxOpenFirstTime(), null);
216

  
217

  
218
	}
219
	private void registerLayersListener() {
220
		int i,j;
221
		FLayer layer;
222
		LayersListener listener;
223
		boolean found;
224
		for (i=0;i< vectorialLayers.size();i++) {
225
			found = false;
226
			layer = ((FLayer)vectorialLayers.get(i));
227
			for (j=0;j < layersListenerList.size(); j++) {
228
				listener = (LayersListener)layersListenerList.get(j);
229
				if ( layer.getParentLayer() == listener.getLayerCollection()) {
230
					found = true;
231
					break;
232
				}
233
			}
234
			if (!found) {
235
				listener = new LayersListener(layer.getParentLayer());
236
				layer.getParentLayer().addLayerCollectionListener(listener);
237
				layersListenerList.add(listener);
238
			}
239

  
240
		}
241
	}
242

  
243

  
244
	private void unregisterLayersListener() {
245
		int i;
246
		LayersListener listener;
247
		for (i=0;i<layersListenerList.size();i++) {
248
			listener = (LayersListener)layersListenerList.get(i);
249
			listener.getLayerCollection().removeLayerCollectionListener(listener);
250
		}
251
	}
252

  
253
	private String[] getLayerNames() {
254
		String[] layerNames = new String[vectorialLayers.size()];
255
	    for (int i=0;i<vectorialLayers.size();i++) {
256
	        layerNames[i] = ((FLayer)vectorialLayers.get(i)).getName();
257
	    }
258
	    return layerNames;
259
	}
260
	private String[] getFieldNames() {
261
		FLyrVect lyr = (FLyrVect)layerToZoom;
262
		FeatureStore featureStore;
263
        String[] fieldNames = null;
264
		try {
265
            featureStore = lyr.getFeatureStore();
266
			fieldNames = new String[featureStore.getDefaultFeatureType().size()];
267
			for (int i = 0; i < featureStore.getDefaultFeatureType().size(); i++) {
268
				fieldNames[i] = ((FeatureAttributeDescriptor)featureStore.getDefaultFeatureType().get(i)).getName();
269
			}
270
        } catch (DataException e) {
271
			e.printStackTrace();
272
		}
273
		return fieldNames;
274
	}
275

  
276

  
277
	private Object[] getNewValues() {
278
		FLyrVect lyr = (FLyrVect)layerToZoom;
279
		FeatureStore featureStore;
280
		Object[] newValues = null;
281
		if (fieldToZoomIndex < 0)
282
			return null;
283
		FeatureSet set = null;
284
		DisposableIterator features = null;
285

  
286
		try {
287
			featureStore = lyr.getFeatureStore();
288

  
289
//		String sql = "select " + ((FeatureAttributeDescriptor)featureStore.getDefaultFeatureType().get(fieldToZoomIndex)).getName() + " from " + featureStore.getName() + " where " + featureStore.getFieldName(fieldToZoomIndex) + " is not null;";
290
			FeatureQuery query = featureStore.createFeatureQuery();
291
			String field =
292
					((FeatureAttributeDescriptor) featureStore.getDefaultFeatureType()
293
							.get(fieldToZoomIndex)).getName();
294
			Evaluator myEvaluator = new MyEvaluator(field);
295
			query.setFilter(myEvaluator);
296
			query.setAttributeNames(new String[] { field });
297
			set = featureStore.getFeatureSet(query);
298
			// ds = ds.getDataSourceFactory().executeSQL(sql,
299
			// DataSourceFactory.AUTOMATIC_OPENING);
300

  
301
			// Quitar los nombres repetidos y ordenarlos
302
			TreeSet<Object> treeSet =
303
					new TreeSet<Object>(new Comparator<Object>() {
304
						public int compare(Object o1, Object o2) {
305
							if (o1 instanceof Number && o2 instanceof Number) {
306
								if (((Number) o1).doubleValue() < ((Number) o2).doubleValue())
307
									return -1;
308
								if (((Number) o1).doubleValue() > ((Number) o2).doubleValue())
309
									return 1;
310
							} else if (o1 instanceof String
311
									&& o2 instanceof String) {
312
								return ((String) o1).compareTo((String) o2);
313
							} else if (o1 instanceof Date && o2 instanceof Date) {
314
								return ((Date) o1).compareTo((Date) o2);
315
							}
316
							return 0;
317
				}
318
					});
319
			features = set.iterator();
320
			while (features.hasNext()) {
321
				Feature feature = (Feature) features.next();
322
				Object obj = feature.get(0);
323
				treeSet.add(obj);
324
			}
325
			newValues = (Object[]) treeSet.toArray(new Object[0]);
326
		} catch (DataException e) {
327
			e.printStackTrace();
328
		} finally {
329
			if (features != null) {
330
				features.dispose();
331
			}
332
			if (set != null) {
333
				set.dispose();
334
			}
335
		}
336
		return newValues;
337
	}
338
	private class LayersListener implements LayerCollectionListener {
339
		private LayerCollection theLayerCollection;
340
	    public LayersListener(FLayers layers){
341
	    	theLayerCollection = layers;
342
	    }
343

  
344
	    public LayerCollection getLayerCollection() {
345
	    	return theLayerCollection;
346
	    }
347
        /* (non-Javadoc)
348
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#layerAdded(com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent)
349
         */
350
        public void layerAdded(LayerCollectionEvent e) {
351
            initializeVectorialLayers();
352
            ((ChangeLayerToZoomItemListener)jComboBox.getItemListeners()[0]).setLayers(vectorialLayers);
353
            jComboBox.removeAllItems();
354
		    DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(getLayerNames());
355
		    jComboBox.setModel(defaultModel);
356
			jComboBox.setSelectedItem(layerToZoom.getName());
357
        }
358
        /* (non-Javadoc)
359
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#layerRemoved(com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent)
360
         */
361
        public void layerRemoved(LayerCollectionEvent e) {
362
            initializeVectorialLayers();
363
            ((ChangeLayerToZoomItemListener)jComboBox.getItemListeners()[0]).setLayers(vectorialLayers);
364
		    if (vectorialLayers.size()>0) {
365
	            jComboBox.removeAllItems();
366
				String[] layerNames = new String[vectorialLayers.size()];
367
			    boolean currentLayerRemoved = true;
368
				for (int i=0;i<vectorialLayers.size();i++) {
369
			        layerNames[i] = ((FLayer)vectorialLayers.get(i)).getName();
370
			        if (layerToZoom.getName().equals(layerNames[i])) currentLayerRemoved = false;
371
			    }
372
			    DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(layerNames);
373
			    jComboBox.setModel(defaultModel);
374
			    if (currentLayerRemoved) {
375
			        layerToZoom = ((FLayer)vectorialLayers.get(0));
376
	    			defaultModel = new DefaultComboBoxModel(getFieldNames());
377
	    		    jComboBox1.setModel(defaultModel);
378
	    		    fieldToZoomIndex = 0;
379
	    		    jComboBox1.setSelectedIndex(fieldToZoomIndex);
380
	    		    Object[] values =getNewValues();
381
	    			defaultModel = new DefaultComboBoxModel(values);
382
	    			jComboBox2.setModel(defaultModel);
383
	    			if (values != null) {
384
	    				itemToZoom = getNewValues()[0];
385
	    				jComboBox2.setSelectedItem(itemToZoom);
386
	    			}else {
387
	    				itemToZoom = null;
388
	    			}
389

  
390
			    }
391
			    jComboBox.setSelectedItem(layerToZoom.getName());
392
		    }else {
393
            	if (PluginServices.getMainFrame() == null)
394
            		((JDialog) (getParent().getParent().getParent().getParent())).dispose();
395
            	else
396
            		PluginServices.getMDIManager().closeWindow(DataSelectionPanel.this);
397
		    }
398
        }
399
        /* (non-Javadoc)
400
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#layerMoved(com.iver.cit.gvsig.fmap.layers.LayerPositionEvent)
401
         */
402
        public void layerMoved(LayerPositionEvent e) {
403
            // TODO Auto-generated method stub
404

  
405
        }
406
        /* (non-Javadoc)
407
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#layerAdding(com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent)
408
         */
409
        public void layerAdding(LayerCollectionEvent e) throws CancelationException {
410
            // TODO Auto-generated method stub
411

  
412
        }
413
        /* (non-Javadoc)
414
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#layerMoving(com.iver.cit.gvsig.fmap.layers.LayerPositionEvent)
415
         */
416
        public void layerMoving(LayerPositionEvent e) throws CancelationException {
417
            // TODO Auto-generated method stub
418

  
419
        }
420
        /* (non-Javadoc)
421
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#layerRemoving(com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent)
422
         */
423
        public void layerRemoving(LayerCollectionEvent e) throws CancelationException {
424
            // TODO Auto-generated method stub
425

  
426
        }
427
        /* (non-Javadoc)
428
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#activationChanged(com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent)
429
         */
430
        public void activationChanged(LayerCollectionEvent e) throws CancelationException {
431
            // TODO Auto-generated method stub
432

  
433
        }
434
        /* (non-Javadoc)
435
         * @see com.iver.cit.gvsig.fmap.layers.LayerCollectionListener#visibilityChanged(com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent)
436
         */
437
        public void visibilityChanged(LayerCollectionEvent e) throws CancelationException {
438
            // TODO Auto-generated method stub
439

  
440
        }
441
	}
442
    /* (non-Javadoc)
443
     * @see com.iver.andami.ui.mdiManager.View#getViewInfo()
444
     */
445
    public WindowInfo getWindowInfo() {
446
        if (viewInfo == null) {
447
            viewInfo=new WindowInfo(WindowInfo.MODELESSDIALOG | WindowInfo.PALETTE);
448
            viewInfo.setTitle(PluginServices.getText(this,"Localizador_por_atributo"));
449
            viewInfo.setHeight(getPreferredSize().height);
450
            viewInfo.setWidth(getPreferredSize().width);
451
        }
452
        return viewInfo;
453
    }
454
	/**
455
	 * This method initializes jComboBox
456
	 *
457
	 * @return javax.swing.JComboBox
458
	 */
459
	private JComboBox getJComboBox() {
460
		if (jComboBox == null) {
461
			jComboBox = new JComboBox();
462
            DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(getLayerNames());
463
            jComboBox.setModel(defaultModel);
464
			jComboBox.setBounds(90, 6, 250, 23);
465
			jComboBox.setSelectedItem(layerToZoom.getName());
466
			ChangeLayerToZoomItemListener changeLayerToZoomItemListener = new ChangeLayerToZoomItemListener(vectorialLayers);
467
			jComboBox.addItemListener(changeLayerToZoomItemListener);
468
		}
469
		return jComboBox;
470
	}
471
	private class ChangeLayerToZoomItemListener implements ItemListener {
472
	    private Vector<FLayer> layers;
473
	    public ChangeLayerToZoomItemListener(Vector<FLayer> layers) {
474
	        this.layers = layers;
475
	    }
476
		public void itemStateChanged(java.awt.event.ItemEvent e) {
477
		    if (jComboBox.getItemCount()>0) {
478
                for (int i=0;i<layers.size();i++) {
479
                    if (((FLayer)layers.get(i)).getName().equals((String)jComboBox.getSelectedItem())) {
480
                        layerToZoom = (FLayer)layers.get(i);
481
                        break;
482
                    }
483
                }
484
    			fieldToZoomIndex = 0;
485
				prefUsuario.put("LAYERNAME_FOR_DATA_LOCATION", (String)jComboBox.getSelectedItem());
486
    		    DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(getFieldNames());
487
    		    jComboBox1.setModel(defaultModel);
488
    		    Object[] values =getNewValues();
489
    		    defaultModel = new DefaultComboBoxModel(values);
490
    			jComboBox2.setModel(defaultModel);
491
    			if ( values != null) {
492
    				jComboBox2.setSelectedIndex(0);
493
    				itemToZoom = values[0];
494
    			} else {
495
    				itemToZoom = null;
496
    			}
497
		    }
498
		}
499
        /**
500
         * @param layers The layers to set.
501
         */
502
        public void setLayers(Vector<FLayer> layers) {
503
            this.layers = layers;
504
        }
505
	}
506
	/**
507
	 * This method initializes jComboBox1
508
	 *
509
	 * @return javax.swing.JComboBox
510
	 */
511
	private JComboBox getJComboBox1() {
512
		if (jComboBox1 == null) {
513
			jComboBox1 = new JComboBox();
514
            DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(getFieldNames());
515
            jComboBox1.setModel(defaultModel);
516
			jComboBox1.setBounds(90, 34, 250, 23);
517
			jComboBox1.setSelectedIndex(fieldToZoomIndex);
518
			ChangeFieldItemListener changeFieldItemListener = new ChangeFieldItemListener(vectorialLayers);
519
			jComboBox1.addItemListener(changeFieldItemListener);
520
		}
521
		return jComboBox1;
522
	}
523
	private class ChangeFieldItemListener implements ItemListener {
524
		public ChangeFieldItemListener(Vector<FLayer> layers) {
525
		}
526
		public void itemStateChanged(java.awt.event.ItemEvent itemEvent) {
527
			String fieldToZoom = ((String)jComboBox1.getSelectedItem());
528
			FLyrVect lyr = (FLyrVect)layerToZoom;
529
			FeatureStore featureStore;
530
			FeatureSet set = null;
531
			DisposableIterator features = null;
532
			try {
533
				featureStore = lyr.getFeatureStore();
534
				fieldToZoomIndex = featureStore.getDefaultFeatureType().getIndex(fieldToZoom);
535
				prefUsuario.putInt("FIELDINDEX_FOR_DATA_LOCATION", fieldToZoomIndex);
536

  
537
				//Quitar los nombres repetidos y ordenarlos
538
				TreeSet<Object> treeSet = new TreeSet<Object>(new Comparator<Object>() {
539
					public int compare(Object o1, Object o2) {
540
						if (o1 instanceof Number && o2 instanceof Number){
541
							if (((Number)o1).doubleValue()<((Number)o2).doubleValue())
542
								return -1;
543
							if (((Number)o1).doubleValue()>((Number)o2).doubleValue())
544
								return 1;
545
						}else if (o1 instanceof String && o2 instanceof String){
546
							return ((String)o1).compareTo((String)o2);
547
						}else if (o1 instanceof Date && o2 instanceof Date){
548
							return ((Date)o1).compareTo((Date)o2);
549
						}
550
						return 0;
551
					}
552
				});
553

  
554
				Evaluator myEvaluator=new MyEvaluator(fieldToZoom);
555
				FeatureQuery query=featureStore.createFeatureQuery();
556
				query.setFilter(myEvaluator);
557
				set=featureStore.getFeatureSet(query);
558
				features=set.iterator();
559
				while (features.hasNext()) {
560
					Feature feature = (Feature) features.next();
561
					treeSet.add(feature.get(fieldToZoomIndex));
562
				}
563
				Object[] newValues = (Object[])treeSet.toArray(new Object[0]);
564
				DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(newValues);
565
				jComboBox2.setModel(defaultModel);
566
				if (newValues.length>0) jComboBox2.setSelectedIndex(0);
567
				if (newValues.length>0) {
568
					itemToZoom = newValues[0];
569
				} else {
570
					itemToZoom = null;
571
				}
572
			} catch (DataException e) {
573
				e.printStackTrace();
574
			} finally {
575
				if (features != null) {
576
					features.dispose();
577
				}
578
				if (set != null) {
579
					set.dispose();
580
				}
581
			}
582
		}
583
	}
584
	/**
585
	 * This method initializes jComboBox2
586
	 *
587
	 * @return javax.swing.JComboBox
588
	 */
589
	private JComboBox getJComboBox2() {
590
		if (jComboBox2 == null) {
591
			jComboBox2 = new JComboBox();
592
            DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(getNewValues());
593
            jComboBox2.setModel(defaultModel);
594
			jComboBox2.setSelectedIndex(-1);
595
			jComboBox2.setBounds(90, 61, 250, 23);
596
			ChangeItemToZoomItemListener changeItemToZoomItemListener = new ChangeItemToZoomItemListener(vectorialLayers);
597
			jComboBox2.addItemListener(changeItemToZoomItemListener);
598
		}
599
		return jComboBox2;
600
	}
601
	private class ChangeItemToZoomItemListener implements ItemListener {
602
	    private Vector<FLayer> layers;
603
	    public ChangeItemToZoomItemListener(Vector<FLayer> layers) {
604
	        this.layers = layers;
605
	    }
606
		public void itemStateChanged(java.awt.event.ItemEvent e) {
607
            for (int i=0;i<layers.size();i++) {
608
                if (((FLayer)layers.get(i)).getName().equals((String)jComboBox.getSelectedItem())) {
609
                    layerToZoom = (FLayer)layers.get(i);
610
                    break;
611
                }
612
            }
613
			itemToZoom = ((Object)jComboBox2.getSelectedItem());
614
		}
615
	}
616
	/**
617
	 * This method initializes jButton
618
	 *
619
	 * @return javax.swing.JButton
620
	 */
621
	private JButton getJButton() {
622
		if (jButton == null) {
623
			jButton = new JButton();
624
			//jButton.setBounds(8, 121, 128, 23);
625
			jButton.setText(PluginServices.getText(this,"Zoom"));
626
			jButton.addActionListener(new java.awt.event.ActionListener() {
627
				public void actionPerformed(java.awt.event.ActionEvent e) {
628
					if (layerToZoom == null || fieldToZoomIndex < 0 || itemToZoom == null)
629
						return;
630
				    if (jComboBox2.getSelectedIndex()!=-1) {
631
						FLyrVect lyr = (FLyrVect)layerToZoom;
632
						FeatureStore featureStore;
633
						FeatureSet featureSet = null;
634
						DisposableIterator features = null;
635
						try {
636
			                featureStore = lyr.getFeatureStore();
637
							FeatureSelection selection = (FeatureSelection)featureStore.createFeatureSelection();
638
							featureSet = featureStore.getFeatureSet();
639
							features = featureSet.iterator();
640
							while (features.hasNext()) {
641
								Feature feature = (Feature) features.next();
642
								if (itemToZoom.equals(feature.get(fieldToZoomIndex))){
643
									selection.select(feature);
644
								}
645
							}
646
//							featureStore.setSelection(selection);
647
							SelectedZoomVisitor visitor = new SelectedZoomVisitor();
648
	                        selection.accept(visitor);
649
							mapContext.getViewPort().setEnvelope(visitor.getSelectBound());
650

  
651
			            } catch (DataException e1) {
652
							e1.printStackTrace();
653
						} catch (BaseException e1) {
654
							e1.printStackTrace();
655
						} finally {
656
							DisposeUtils.dispose(featureSet);
657
							DisposeUtils.dispose(features);
658
						}
659
                    } else if (itemToZoom == null) {
660
                        System.out.println("Localizador por atributo: El campo valor debe tener elementos no nulos para hacer el Zoom.");
661
                    } else {
662
				        System.out.println("Localizador por atributo: El campo valor debe estar inicializado antes de hacer Zoom.");
663
				    }
664
				}
665
			});
666
		}
667
		return jButton;
668
	}
669
	/**
670
	 * This method initializes jButton1
671
	 *
672
	 * @return javax.swing.JButton
673
	 */
674
	private JButton getJButton1() {
675
		if (jButton1 == null) {
676
			jButton1 = new JButton();
677
			//jButton1.setBounds(141, 121, 128, 23);
678
			jButton1.setText(PluginServices.getText(this,"Salir"));
679
			jButton1.addActionListener(new java.awt.event.ActionListener() {
680
				public void actionPerformed(java.awt.event.ActionEvent e) {
681
	            	if (PluginServices.getMainFrame() == null)
682
	            		((JDialog) (getParent().getParent().getParent().getParent())).dispose();
683
	            	else
684
	            		PluginServices.getMDIManager().closeWindow(DataSelectionPanel.this);
685
				}
686
			});
687
		}
688
		return jButton1;
689
	}
690
    /* (non-Javadoc)
691
     * @see com.iver.andami.ui.mdiManager.ViewListener#viewActivated()
692
     */
693
    public void windowActivated() {
694
        // TODO Auto-generated method stub
695

  
696
    }
697
    /* (non-Javadoc)
698
     * @see com.iver.andami.ui.mdiManager.ViewListener#viewClosed()
699
     */
700
    public void windowClosed() {
701
		unregisterLayersListener();
702
		// Guardamos la posici?n en las preferencias del usuario.
703
		WindowInfo vi = PluginServices.getMDIManager().getWindowInfo(this);
704
		prefUsuario.putInt("gvSIG.DataLocator.x", vi.getX());
705
		prefUsuario.putInt("gvSIG.DataLocator.y", vi.getY());
706
		prefUsuario.putInt("gvSIG.DataLocator.w", vi.getWidth());
707
		prefUsuario.putInt("gvSIG.DataLocator.h", vi.getHeight());
708
		vi.setClosed(true);
709
    }
710
    /* (non-Javadoc)
711
     * @see com.iver.andami.ui.mdiManager.SingletonView#getViewModel()
712
     */
713
    public Object getWindowModel() {
714
        // Debe devolver una cadena. Mirar Console del CorePlugin
715
        return "DataSelectionPanel";
716
    }
717
	/**
718
	 * This method initializes jChkBoxOpenFirstTime
719
	 *
720
	 * @return javax.swing.JCheckBox
721
	 */
722
	private JCheckBox getJChkBoxOpenFirstTime() {
723
		if (jChkBoxOpenFirstTime == null) {
724
			jChkBoxOpenFirstTime = new JCheckBox();
725
			jChkBoxOpenFirstTime.setBounds(new java.awt.Rectangle(90,89,179,23));
726
			jChkBoxOpenFirstTime.setText(PluginServices.getText(this, "open_first_time"));
727
			jChkBoxOpenFirstTime.addActionListener(new java.awt.event.ActionListener() {
728
				public void actionPerformed(java.awt.event.ActionEvent e) {
729
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
730
					if (jChkBoxOpenFirstTime.isSelected())
731
					{
732
						prefUsuario.putInt("gvSIG.DataLocator.open_first_time",1);
733
					}
734
					else
735
					{
736
						prefUsuario.putInt("gvSIG.DataLocator.open_first_time",0);
737
					}
738
				}
739
			});
740
		}
741
		return jChkBoxOpenFirstTime;
742
	}
743
	public Object getWindowProfile() {
744
		return WindowInfo.TOOL_PROFILE;
745
	}
746
	class MyEvaluator implements Evaluator{
747
		private String name=null;
748
		private EvaluatorFieldsInfo info = null;
749

  
750
		public MyEvaluator(String name){
751
			this.name=name;
752
			info = new EvaluatorFieldsInfo();
753
			this.info.addFieldValue(name);
754
		}
755

  
756
		public Object evaluate(EvaluatorData data)
757
				throws EvaluatorException {
758
			Feature feature = (Feature) data.getContextValue("feature");
759
			if (feature.get(name)!=null)
760
				return new Boolean(true);
761
			return new Boolean(false);
762
		}
763

  
764
		public String getSQL() {
765
			return name + " is not null;";
766
		}
767

  
768
		public String getDescription() {
769
			return "Evaluates if a field is not null";
770
		}
771

  
772
		public EvaluatorFieldsInfo getFieldsInfo() {
773
			return this.info;
774
		}
775

  
776
		public String getName() {
777
			return this.getClass().getName();
778
		}
779

  
780
    }
781
}  //  @jve:decl-index=0:visual-constraint="10,10"
tags/v2_0_0_Build_2020/extensions/extDataLocator/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
6

  
7
	<modelVersion>4.0.0</modelVersion>
8
	<groupId>org.gvsig</groupId>
9
	<artifactId>org.gvsig.datalocator</artifactId>
10
	<name>extDataLocator</name>
11
	<version>2.0-SNAPSHOT</version>
12
	<parent>
13
		<artifactId>gvsig-base-extension-pom</artifactId>
14
		<groupId>org.gvsig</groupId>
15
		<version>2.0-SNAPSHOT</version>
16
	</parent>	
17
	<distributionManagement>
18
		<site>
19
			<id>gvsig-repository</id>
20
			<url>${site-repository}/</url>
21
		</site>
22
	</distributionManagement>
23

  
24
	<url>http://gvsig.org</url>
25
	<build>
26
		<sourceDirectory>src</sourceDirectory>
27
		<testSourceDirectory>src-test</testSourceDirectory>
28
        <plugins>
29
            <!-- TODO: MAKE TESTS WORK AND REMOVE THIS OPTION -->
30
            <plugin>
31
                <groupId>org.apache.maven.plugins</groupId>
32
                <artifactId>maven-surefire-plugin</artifactId>
33
                <configuration>
34
                    <skipTests>true</skipTests>
35
                </configuration>
36
            </plugin>       
37
        </plugins>        
38
	</build>
39
	<dependencies>
40
		<dependency>
41
			<groupId>org.gvsig</groupId>
42
			<artifactId>org.gvsig.app</artifactId>
43
			<version>2.0-SNAPSHOT</version>
44
		</dependency>
45
	</dependencies>
46

  
47
	<properties>
48
		<build-dir>${basedir}/../build</build-dir>
49
	</properties>
50
</project>
tags/v2_0_0_Build_2020/extensions/extDataLocator/.cvsignore
1
bin
2
bin-test
tags/v2_0_0_Build_2020/extensions/extDataLocator/distribution/distribution.xml
1
<assembly>
2
	<id>distribution</id>
3
	<formats>
4
		<format>dir</format>
5
	</formats>
6
	<fileSets>
7
	<!-- Extructure for the extension -->
8
		<fileSet>
9
			<directory>config</directory>
10
			<outputDirectory>${extension.install.dir.name}
11
			</outputDirectory>
12
		</fileSet>
13
		<fileSet>
14
			<directory>images</directory>
15
			<outputDirectory>/${extension.install.dir.name}/images
16
			</outputDirectory>
17
		</fileSet>
18
	</fileSets>
19
    <files>
20
        <file>
21
            <source>package.info</source>
22
            <outputDirectory>${extension.install.dir.name}
23
            </outputDirectory>
24
        </file>
25
    </files>
26
	<!--
27
		***********************************************************************
28
	-->
29
  <!-- *													   *-->
30
	<!--
31
		***********************************************************************
32
	-->
33
	<dependencySets>
34
		<dependencySet>
35
			<outputDirectory>${extension.install.dir.name}/${library-dir}
36
			</outputDirectory>
37
			<includes>
38
				<include>org.gvsig:org.gvsig.datalocator</include>
39
			</includes>
40
		</dependencySet>
41
	</dependencySets>
42
</assembly>
tags/v2_0_0_Build_2020/extensions/extDataLocator/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Tue Oct 26 12:08:35 CEST 2010
3
buildNumber=2020
tags/v2_0_0_Build_2020/extensions/extDataLocator/src-test/org/gvsig/datalocator/AllTests.java
1
package org.gvsig.datalocator;
2

  
3
import junit.framework.Test;
4
import junit.framework.TestSuite;
5

  
6
public class AllTests {
7

  
8
	public static Test suite() {
9
		TestSuite suite = new TestSuite(
10
				"Test for com.iver.cit.gvsig.datalocator");
11
		//$JUnit-BEGIN$
12

  
13
		//$JUnit-END$
14
		return suite;
15
	}
16

  
17
}
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_de.properties
1
#Translations for language [de]
2
#Wed Oct 08 17:44:19 CEST 2008
3
Campo=Feld
4
Capa=Layer
5
com.iver.cit.gvsig.Herramientas=
6
Localizador_por_atributo=Objekt mittels Attribut suchen
7
open_first_time=Mit dem View \u00f6ffnen
8
Salir=Schlie\u00dfen
9
Valor=Wert
10
Vista=Ansicht
11
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_eu.properties
1
#Translations for language [eu]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Eremua
4
Capa=Geruza
5
Localizador_por_atributo=Ezaugarrien araberako bilagailua
6
open_first_time=Bistarekin ireki
7
Salir=Irten
8
Valor=Balioa
9
Vista=Bista
10
Zoom=Zooma
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_it.properties
1
#Translations for language [it]
2
#Tue Nov 07 12:30:01 CET 2006
3
Campo=Campo
4
Capa=Layer
5
Localizador_por_atributo=Localizza per attributo
6
open_first_time=Apri con la vista
7
Salir=Esci
8
Valor=Valore
9
Vista=Vista
10
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text.properties
1
#Translations for language [es]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Campo
4
Capa=Capa
5
Localizador_por_atributo=Localizador por atributo
6
open_first_time=Abrir con la vista
7
Salir=Salir
8
Valor=Valor
9
Vista=Vista
10
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_zh.properties
1
#Translations for language [en]
2
#Fri Nov 03 13:14:56 CET 2006
3
Campo=\u5b57\u6bb5
4
Capa=\u56fe\u5c42
5
Localizador_por_atributo=\u6839\u636e\u7279\u6027\u5b9a\u4f4d
6
open_first_time=\u4e0e\u89c6\u56fe\u6253\u5f00
7
Salir=\u9000\u51fa
8
Valor=\u6570\u636e
9
Vista=\u89c6\u56fe
10
Zoom=\u7f29\u653e
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_en.properties
1
#Translations for language [en]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Field
4
Capa=Layer
5
Localizador_por_atributo=Locate by attribute
6
open_first_time=Open with the view
7
Salir=Exit
8
Valor=Value
9
Vista=View
10
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_gl.properties
1
#Translations for language [gl]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Campo
4
Capa=Capa
5
Localizador_por_atributo=Localizador por atributo
6
open_first_time=Abrir coa vista
7
Salir=Sa\u00edr
8
Valor=Valor
9
Vista=Vista
10
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_ca.properties
1
#Translations for language [ca]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Camp
4
Capa=Capa
5
Localizador_por_atributo=Localitzador per atribut
6
open_first_time=Obrir amb la vista
7
Salir=Eixir
8
Valor=Valor
9
Vista=Vista
10
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_pt.properties
1
#Translations for language [pt]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Campo
4
Capa=Capa
5
Localizador_por_atributo=Localizador por atributo
6
open_first_time=Abrir com a vista
7
Salir=Fechar
8
Valor=Valor
9
Vista=Vista
10
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<plugin-config>
3
	<libraries library-dir="lib"/>
4
	<depends plugin-name="org.gvsig.app"/>
5
		<resourceBundle name="text"/>
6
	<extensions>
7
		<extension class-name="org.gvsig.datalocator.DataLocatorExtension"
8
			description="Extensi?n que permite hacer zooms en funci?n de los valores de la base de datos. Tambi?n permite guardar y recuperar estos zooms."
9
			active="true">
10
			<menu text="Vista/Localizador_por_atributo" tooltip="Localizador_por_atributo"
11
				action-command="DATALOCATOR"
12
				icon="view-locator" />
13
			<tool-bar name="Herramientas">
14
				<action-tool icon="view-locator"
15
					action-command="DATALOCATOR" tooltip="Localizador_por_atributo"
16
				last="true"/>
17
			</tool-bar>
18
		</extension>
19
	</extensions>
20
</plugin-config>
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_cs.properties
1
#Translations for language [cs]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Pole
4
Capa=Vrstva
5
Localizador_por_atributo=Vyhledat podle atributu
6
open_first_time=Otev\u0159\u00edt spole\u010dn\u011b s pohledem
7
Salir=Konec
8
Valor=Hodnota
9
Vista=Pohled
10
Zoom=Zoom
tags/v2_0_0_Build_2020/extensions/extDataLocator/config/text_fr.properties
1
#Translations for language [fr]
2
#Mon Oct 30 09:38:21 CET 2006
3
Campo=Champ
4
Capa=Couche
5
Localizador_por_atributo=Localisation par attribut
6
open_first_time=Ouvrir avec la vue
7
Salir=Quitter
8
Valor=Valeur
9
Vista=Vue
10
Zoom=Zoomer
tags/v2_0_0_Build_2020/extensions/extDataLocator/doc/gpl.txt
1
		    GNU GENERAL PUBLIC LICENSE
2
		       Version 2, June 1991
3

  
4
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
6
 Everyone is permitted to copy and distribute verbatim copies
7
 of this license document, but changing it is not allowed.
8

  
9
			    Preamble
10

  
11
  The licenses for most software are designed to take away your
12
freedom to share and change it.  By contrast, the GNU General Public
13
License is intended to guarantee your freedom to share and change free
14
software--to make sure the software is free for all its users.  This
15
General Public License applies to most of the Free Software
16
Foundation's software and to any other program whose authors commit to
17
using it.  (Some other Free Software Foundation software is covered by
18
the GNU Library General Public License instead.)  You can apply it to
19
your programs, too.
20

  
21
  When we speak of free software, we are referring to freedom, not
22
price.  Our General Public Licenses are designed to make sure that you
23
have the freedom to distribute copies of free software (and charge for
24
this service if you wish), that you receive source code or can get it
25
if you want it, that you can change the software or use pieces of it
26
in new free programs; and that you know you can do these things.
27

  
28
  To protect your rights, we need to make restrictions that forbid
29
anyone to deny you these rights or to ask you to surrender the rights.
30
These restrictions translate to certain responsibilities for you if you
31
distribute copies of the software, or if you modify it.
32

  
33
  For example, if you distribute copies of such a program, whether
34
gratis or for a fee, you must give the recipients all the rights that
35
you have.  You must make sure that they, too, receive or can get the
36
source code.  And you must show them these terms so they know their
37
rights.
38

  
39
  We protect your rights with two steps: (1) copyright the software, and
40
(2) offer you this license which gives you legal permission to copy,
41
distribute and/or modify the software.
42

  
43
  Also, for each author's protection and ours, we want to make certain
44
that everyone understands that there is no warranty for this free
45
software.  If the software is modified by someone else and passed on, we
46
want its recipients to know that what they have is not the original, so
47
that any problems introduced by others will not reflect on the original
48
authors' reputations.
49

  
50
  Finally, any free program is threatened constantly by software
51
patents.  We wish to avoid the danger that redistributors of a free
52
program will individually obtain patent licenses, in effect making the
53
program proprietary.  To prevent this, we have made it clear that any
54
patent must be licensed for everyone's free use or not licensed at all.
55

  
56
  The precise terms and conditions for copying, distribution and
57
modification follow.
58

59
		    GNU GENERAL PUBLIC LICENSE
60
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61

  
62
  0. This License applies to any program or other work which contains
63
a notice placed by the copyright holder saying it may be distributed
64
under the terms of this General Public License.  The "Program", below,
65
refers to any such program or work, and a "work based on the Program"
66
means either the Program or any derivative work under copyright law:
67
that is to say, a work containing the Program or a portion of it,
68
either verbatim or with modifications and/or translated into another
69
language.  (Hereinafter, translation is included without limitation in
70
the term "modification".)  Each licensee is addressed as "you".
71

  
72
Activities other than copying, distribution and modification are not
73
covered by this License; they are outside its scope.  The act of
74
running the Program is not restricted, and the output from the Program
75
is covered only if its contents constitute a work based on the
76
Program (independent of having been made by running the Program).
77
Whether that is true depends on what the Program does.
78

  
79
  1. You may copy and distribute verbatim copies of the Program's
80
source code as you receive it, in any medium, provided that you
81
conspicuously and appropriately publish on each copy an appropriate
82
copyright notice and disclaimer of warranty; keep intact all the
83
notices that refer to this License and to the absence of any warranty;
84
and give any other recipients of the Program a copy of this License
85
along with the Program.
86

  
87
You may charge a fee for the physical act of transferring a copy, and
88
you may at your option offer warranty protection in exchange for a fee.
89

  
90
  2. You may modify your copy or copies of the Program or any portion
91
of it, thus forming a work based on the Program, and copy and
92
distribute such modifications or work under the terms of Section 1
93
above, provided that you also meet all of these conditions:
94

  
95
    a) You must cause the modified files to carry prominent notices
96
    stating that you changed the files and the date of any change.
97

  
98
    b) You must cause any work that you distribute or publish, that in
99
    whole or in part contains or is derived from the Program or any
100
    part thereof, to be licensed as a whole at no charge to all third
101
    parties under the terms of this License.
102

  
103
    c) If the modified program normally reads commands interactively
104
    when run, you must cause it, when started running for such
105
    interactive use in the most ordinary way, to print or display an
106
    announcement including an appropriate copyright notice and a
107
    notice that there is no warranty (or else, saying that you provide
108
    a warranty) and that users may redistribute the program under
109
    these conditions, and telling the user how to view a copy of this
110
    License.  (Exception: if the Program itself is interactive but
111
    does not normally print such an announcement, your work based on
112
    the Program is not required to print an announcement.)
113

114
These requirements apply to the modified work as a whole.  If
115
identifiable sections of that work are not derived from the Program,
116
and can be reasonably considered independent and separate works in
117
themselves, then this License, and its terms, do not apply to those
118
sections when you distribute them as separate works.  But when you
119
distribute the same sections as part of a whole which is a work based
120
on the Program, the distribution of the whole must be on the terms of
121
this License, whose permissions for other licensees extend to the
122
entire whole, and thus to each and every part regardless of who wrote it.
123

  
124
Thus, it is not the intent of this section to claim rights or contest
125
your rights to work written entirely by you; rather, the intent is to
126
exercise the right to control the distribution of derivative or
127
collective works based on the Program.
128

  
129
In addition, mere aggregation of another work not based on the Program
130
with the Program (or with a work based on the Program) on a volume of
131
a storage or distribution medium does not bring the other work under
132
the scope of this License.
133

  
134
  3. You may copy and distribute the Program (or a work based on it,
135
under Section 2) in object code or executable form under the terms of
136
Sections 1 and 2 above provided that you also do one of the following:
137

  
138
    a) Accompany it with the complete corresponding machine-readable
139
    source code, which must be distributed under the terms of Sections
140
    1 and 2 above on a medium customarily used for software interchange; or,
141

  
142
    b) Accompany it with a written offer, valid for at least three
143
    years, to give any third party, for a charge no more than your
144
    cost of physically performing source distribution, a complete
145
    machine-readable copy of the corresponding source code, to be
146
    distributed under the terms of Sections 1 and 2 above on a medium
147
    customarily used for software interchange; or,
148

  
149
    c) Accompany it with the information you received as to the offer
150
    to distribute corresponding source code.  (This alternative is
151
    allowed only for noncommercial distribution and only if you
152
    received the program in object code or executable form with such
153
    an offer, in accord with Subsection b above.)
154

  
155
The source code for a work means the preferred form of the work for
156
making modifications to it.  For an executable work, complete source
157
code means all the source code for all modules it contains, plus any
158
associated interface definition files, plus the scripts used to
159
control compilation and installation of the executable.  However, as a
160
special exception, the source code distributed need not include
161
anything that is normally distributed (in either source or binary
162
form) with the major components (compiler, kernel, and so on) of the
163
operating system on which the executable runs, unless that component
164
itself accompanies the executable.
165

  
166
If distribution of executable or object code is made by offering
167
access to copy from a designated place, then offering equivalent
168
access to copy the source code from the same place counts as
169
distribution of the source code, even though third parties are not
170
compelled to copy the source along with the object code.
171

172
  4. You may not copy, modify, sublicense, or distribute the Program
173
except as expressly provided under this License.  Any attempt
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff