Revision 38169

View differences:

tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
    <modelVersion>4.0.0</modelVersion>
6
    <artifactId>org.gvsig.app.document.table.app</artifactId>
7
    <packaging>pom</packaging>
8
    <version>2.0.0-SNAPSHOT</version>
9
    <name>Table document plugins</name>
10
    <description>Table document plugins</description>
11
    <parent>
12
        <groupId>org.gvsig</groupId>
13
        <artifactId>org.gvsig.maven.base.extension.pom</artifactId>
14
        <version>1.0.8-SNAPSHOT</version>
15
    </parent>
16

  
17
    <scm>
18
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.app.document.table.app</connection>
19
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.app.document.table.app</developerConnection>
20
        <url>https://devel.gvsig.org/redmine/projects/gvsig-desktop/repository/show/branches/v2_0_0_prep/extensions/org.gvsig.app.document.table.app</url>
21
    </scm>
22

  
23
    <developers>
24
        <developer>
25
            <id>jjdelcerro</id>
26
            <name>Joaqu?n Jos? del Cerro</name>
27
            <email>jjdelcerro@gvsig.org</email>
28
            <roles>
29
                <role>Architect</role>
30
                <role>Developer</role>
31
            </roles>
32
        </developer>
33
        <developer>
34
            <id>cordinyana</id>
35
            <name>C?sar Ordi?ana</name>
36
            <email>cordinyana@gvsig.com</email>
37
            <roles>
38
                <role>Architect</role>
39
                <role>Developer</role>
40
            </roles>
41
        </developer>
42
    </developers>
43
    <repositories>
44
        <repository>
45
            <id>gvsig-public-http-repository</id>
46
            <name>gvSIG maven public HTTP repository</name>
47
            <url>http://devel.gvsig.org/m2repo/j2se</url>
48
            <releases>
49
                <enabled>true</enabled>
50
                <updatePolicy>daily</updatePolicy>
51
                <checksumPolicy>warn</checksumPolicy>
52
            </releases>
53
            <snapshots>
54
                <enabled>true</enabled>
55
                <updatePolicy>daily</updatePolicy>
56
                <checksumPolicy>warn</checksumPolicy>
57
            </snapshots>
58
        </repository>
59
    </repositories>
60
    <dependencyManagement>
61
        <dependencies>
62
            <dependency>
63
                <groupId>org.gvsig</groupId>
64
                <artifactId>org.gvsig.core.maven.dependencies</artifactId>
65
                <version>2.0.1-SNAPSHOT</version>
66
                <type>pom</type>
67
                <scope>import</scope>
68
            </dependency>
69
            <dependency>
70
                <groupId>org.gvsig</groupId>
71
                <artifactId>org.gvsig.app</artifactId>
72
                <version>2.0-SNAPSHOT</version>
73
            </dependency>
74
            <dependency>
75
                <groupId>org.gvsig</groupId>
76
                <artifactId>org.gvsig.andami</artifactId>
77
                <version>2.0-SNAPSHOT</version>
78
            </dependency>
79
        </dependencies>
80
    </dependencyManagement>
81
    <modules>
82
        <module>org.gvsig.app.document.table.app.mainplugin</module>
83
    </modules>
84
    <properties>
85
    	<package.info.state>devel</package.info.state>
86
    </properties>
87

  
88
</project>
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/distribution/distribution.xml
1
<assembly>
2
</assembly>
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Wed Apr 18 14:29:30 CEST 2012
3
buildNumber=12
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/distribution/distribution.xml
1
<assembly>
2
	<id>distribution</id>
3
	<formats>
4
		<format>dir</format>
5
	</formats>
6
	<fileSets>
7
		<!-- Estructure for the extension -->
8
		<fileSet>
9
			<directory>src/main/resources</directory>
10
			<outputDirectory>${extension.install.dir.name}
11
			</outputDirectory>
12
		</fileSet>
13
	</fileSets>
14
    <files>
15
        <file>
16
            <source>package.info</source>
17
            <outputDirectory>${extension.install.dir.name}</outputDirectory>
18
        </file>
19
    </files>
20
	<dependencySets>
21
		<dependencySet>
22
			<outputDirectory>${extension.install.dir.name}/${library-dir}
23
			</outputDirectory>
24
			<includes>
25
				<include>org.gvsig:org.gvsig.app.document.table.app.mainplugin</include>
26
			</includes>
27
		</dependencySet>
28
	</dependencySets>
29
</assembly>
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Wed Apr 18 14:29:30 CEST 2012
3
buildNumber=12
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/test/resources/README.txt
1
Put into this folder the resources needed by your test classes.
2

  
3
This folder is added to the Tests classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, in this folder you can find an example of log4j configuration,
7
prepared to log messages through the console, so logging works when you
8
run your tests classes.
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<!-- 
5
Log4J configuration file for unit tests execution.
6
 -->
7
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
8

  
9
	<!-- Appender configuration to show logging messages through the console -->
10
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
11
		<layout class="org.apache.log4j.PatternLayout">
12
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
13
		</layout>
14
	</appender>
15

  
16
	<!-- 
17
	Activate logging messages of DEBUG level of higher only for the
18
	org.gvsig.tools packages.
19
	You can put full classes names or packages instead, to configure
20
	logging for all the classes and subpackages of the package.
21
	-->
22
	<category name="org.gvsig.tools">
23
		<priority value="DEBUG" />
24
	</category>
25
	<category name="org.gvsig.app.document.table">
26
		<priority value="DEBUG" />
27
	</category>
28

  
29
	<!-- 
30
	By default, show only logging messages of INFO level or higher, 
31
	through the previously configured CONSOLE appender. 
32
	-->
33
	<root>
34
		<priority value="INFO" />
35
		<appender-ref ref="CONSOLE" />
36
	</root>
37
</log4j:configuration>
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableNumericFieldOperations.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import java.math.BigDecimal;
25

  
26
import org.gvsig.andami.PluginServices;
27
import org.gvsig.andami.messages.NotificationManager;
28
import org.gvsig.andami.plugins.Extension;
29
import org.gvsig.andami.ui.mdiManager.IWindow;
30
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
31
import org.gvsig.app.project.documents.table.gui.Statistics;
32
import org.gvsig.fmap.dal.DataTypes;
33
import org.gvsig.fmap.dal.exception.DataException;
34
import org.gvsig.fmap.dal.feature.Feature;
35
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
36
import org.gvsig.fmap.dal.feature.FeatureQuery;
37
import org.gvsig.fmap.dal.feature.FeatureSelection;
38
import org.gvsig.fmap.dal.feature.FeatureSet;
39
import org.gvsig.fmap.dal.feature.FeatureStore;
40
import org.gvsig.tools.dispose.DisposableIterator;
41

  
42
/**
43
 * @author 2004-2005 Fernando Gonz?lez Cort?s
44
 * @author 2005- Vicente Caballero
45
 * @author 2009- <a href="cordinyana@gvsig.org">C?sar Ordi?ana</a> - gvSIG team
46
 */
47
public class TableNumericFieldOperations extends Extension {
48

  
49
    private FeatureTableDocumentPanel table;
50

  
51
    /**
52
     * @see org.gvsig.andami.plugins.IExtension#initialize()
53
     */
54
    public void initialize() {
55
        registerIcons();
56
    }
57

  
58
    private void registerIcons() {
59
        PluginServices.getIconTheme().registerDefault(
60
            "table-statistics",
61
            this.getClass().getClassLoader()
62
                .getResource("images/statistics.png"));
63
    }
64

  
65
    /**
66
     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
67
     */
68
    public void execute(String actionCommand) {
69
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
70

  
71
        if (v != null) {
72
            if (v.getClass() == FeatureTableDocumentPanel.class) {
73

  
74
                FeatureTableDocumentPanel table = (FeatureTableDocumentPanel) v;
75

  
76
                doExecute(table);
77
            }
78
        }
79
    }
80

  
81
    /**
82
     * "execute" method acction
83
     * 
84
     * @param actionCommand
85
     *            The acction command that executes this method
86
     * @param table
87
     *            Table to operate
88
     */
89
    protected void doExecute(FeatureTableDocumentPanel table) {
90
        FeatureSet featureSet = null;
91
        DisposableIterator iterator = null;
92
        try {
93
            FeatureAttributeDescriptor fad =
94
                table.getTablePanel().getTable()
95
                    .getSelectedColumnsAttributeDescriptor()[0];
96
            long numRows = 0;
97
            FeatureStore fs = table.getModel().getStore();
98

  
99
            // Get the iterator from the selection or all the data
100
            FeatureSelection selection = fs.getFeatureSelection();
101
            if (selection.isEmpty()) {
102
                FeatureQuery fq = fs.createFeatureQuery();
103
                fq.setAttributeNames(new String[] { fad.getName() });
104
                featureSet = fs.getFeatureSet();
105
                numRows = featureSet.getSize();
106
                iterator = featureSet.fastIterator();
107
            } else {
108
                numRows = selection.getSize();
109
                iterator = selection.fastIterator();
110
            }
111

  
112
            // Read all values and calculate the min, max and the sum.
113
            // Also, calculate what we can for the variance
114
            BigDecimal sum = BigDecimal.ZERO;
115
            double min = Double.MAX_VALUE;
116
            double max = -Double.MAX_VALUE;
117
            BigDecimal variance = BigDecimal.ZERO;
118
            while (iterator.hasNext()) {
119
                Feature feature = (Feature) iterator.next();
120
                Number valueNumber = (Number) feature.get(fad.getName());
121
                if (valueNumber == null) {
122
                    continue;
123
                }
124
                double value = valueNumber.doubleValue();
125
                BigDecimal valueBig = BigDecimal.valueOf(value);
126
                sum = sum.add(valueBig);
127
                if (value < min) {
128
                    min = value;
129
                }
130
                if (value > max) {
131
                    max = value;
132
                }
133
                variance = variance.add(valueBig.pow(2));
134
            }
135

  
136
            // Calculate the average, the variance final value and the standard
137
            // desviation
138
            BigDecimal average;
139
            double desviation = 0.0d;
140
            if (numRows < 1l) {
141
                average = BigDecimal.ZERO;
142
            } else {
143
                BigDecimal numRowsBig = BigDecimal.valueOf(numRows);
144
                average = sum.divide(numRowsBig, BigDecimal.ROUND_HALF_DOWN);
145
                variance =
146
                    variance.divide(numRowsBig, BigDecimal.ROUND_HALF_DOWN)
147
                        .subtract(average.pow(2));
148
                desviation = Math.sqrt(variance.doubleValue());
149
            }
150

  
151
            // Create and shot the statistics window
152
            Statistics st = new Statistics();
153
            st.setStatistics(average.doubleValue(), max, min,
154
                variance.doubleValue(), desviation, numRows, max - min,
155
                sum.doubleValue());
156
            PluginServices.getMDIManager().addWindow(st);
157
        } catch (DataException e) {
158
            NotificationManager.addError(e);
159
        } finally {
160
            if (iterator != null) {
161
                iterator.dispose();
162
            }
163
            if (featureSet != null) {
164
                featureSet.dispose();
165
            }
166
        }
167
    }
168

  
169
    /**
170
     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
171
     */
172
    public boolean isEnabled() {
173
        return doIsEnabled(table);
174
    }
175

  
176
    protected boolean doIsEnabled(FeatureTableDocumentPanel table) {
177
        // FIXME
178
        FeatureAttributeDescriptor[] fads = null;
179
        try {
180
            fads =
181
                table.getTablePanel().getTable()
182
                    .getSelectedColumnsAttributeDescriptor();
183
        } catch (DataException e) {
184
            e.printStackTrace();
185
        }
186

  
187
        if (fads.length == 1) {
188
            // int index=indices.nextSetBit(0);
189
            // if
190
            // (table.getModel().getStore().getDefaultFeatureType().size()<index+1)
191
            // {
192
            // return false;
193
            // }
194
            int type = fads[0].getType();
195
            if ((type == DataTypes.LONG) || (type == DataTypes.DOUBLE)
196
                || (type == DataTypes.FLOAT) || (type == DataTypes.INT)) {
197
                return true;
198
            }
199
        }
200
        return false;
201
    }
202

  
203
    /**
204
     * @see org.gvsig.andami.plugins.IExtension#isVisible()
205
     */
206
    public boolean isVisible() {
207
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
208
        if (v != null && v instanceof FeatureTableDocumentPanel) {
209
            table = (FeatureTableDocumentPanel) v;
210
            return true;
211
        }
212
        return false;
213
    }
214

  
215
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/RemoveTableLink.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.andami.plugins.Extension;
26
import org.gvsig.andami.ui.mdiManager.IWindow;
27
import org.gvsig.app.project.documents.table.TableDocument;
28
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
29

  
30
/**
31
 * Extensi?n para borrar los link existentes entre tablas.
32
 * 
33
 * @author Vicente Caballero Navarro
34
 */
35
public class RemoveTableLink extends Extension {
36

  
37
    /**
38
     * @see org.gvsig.andami.plugins.IExtension#initialize()
39
     */
40
    public void initialize() {
41
        // TODO Auto-generated method stub
42
    }
43

  
44
    /**
45
     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
46
     */
47
    public void execute(String actionCommand) {
48
        FeatureTableDocumentPanel t =
49
            (FeatureTableDocumentPanel) PluginServices.getMDIManager()
50
                .getActiveWindow();
51
        TableDocument pt = t.getModel();
52
        pt.removeLinkTable();// restoreDataSource();
53
        t.getModel().setModified(true);
54
    }
55

  
56
    /**
57
     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
58
     */
59
    public boolean isEnabled() {
60
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
61

  
62
        if (v == null) {
63
            return false;
64
        }
65

  
66
        if (v.getClass() == FeatureTableDocumentPanel.class) {
67
            FeatureTableDocumentPanel t = (FeatureTableDocumentPanel) v;
68

  
69
            if (t.getModel().hasLinks()) {
70
                return true;
71
            }
72
        }
73

  
74
        return false;
75
    }
76

  
77
    /**
78
     * @see org.gvsig.andami.plugins.IExtension#isVisible()
79
     */
80
    public boolean isVisible() {
81
        IWindow v = PluginServices.getMDIManager().getActiveWindow();
82

  
83
        if (v == null) {
84
            return false;
85
        }
86

  
87
        if (v instanceof FeatureTableDocumentPanel) {
88
            return true;
89
        } else {
90
            return false;
91
        }
92
    }
93
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import org.gvsig.andami.plugins.Extension;
25
import org.gvsig.app.ApplicationLocator;
26
import org.gvsig.app.project.documents.table.TableManager;
27
import org.gvsig.fmap.dal.serverexplorer.filesystem.swing.FilesystemExplorerTableWizardPanel;
28
import org.gvsig.tools.ToolsLocator;
29
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
30

  
31
/**
32
 * A gvSIG {@link Extension} to register the Table document type.
33
 * 
34
 * @author gvSIG Team
35
 * @version $Id$
36
 */
37
public class TableExtension extends Extension {
38

  
39
    public void initialize() {
40
        ExtensionPointManager epMan = ToolsLocator.getExtensionPointManager();
41
        epMan.add("DocumentActions_Table",
42
            "Context menu options of the table document list"
43
                + " in the project window " + "(register instances of "
44
                + "org.gvsig.app.project.AbstractDocumentContextMenuAction)");
45
    }
46

  
47
    public void postInitialize() {
48
        TableManager.register();
49
        ApplicationLocator.getManager().registerAddTableWizard("File",
50
            "File Table", FilesystemExplorerTableWizardPanel.class);
51
    }
52

  
53
    public boolean isEnabled() {
54
        return true;
55
    }
56

  
57
    public boolean isVisible() {
58
        return true;
59
    }
60

  
61
    public void execute(String actionCommand) {
62
        // Nothing to do
63
    }
64

  
65
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/ZoomToSelectExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.andami.messages.NotificationManager;
26
import org.gvsig.andami.plugins.Extension;
27
import org.gvsig.andami.ui.mdiManager.IWindow;
28
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
29
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
30
import org.gvsig.fmap.dal.exception.DataException;
31
import org.gvsig.fmap.geom.primitive.Envelope;
32
import org.gvsig.fmap.mapcontext.MapContext;
33
import org.gvsig.tools.exception.BaseException;
34

  
35
/**
36
 * Extensi?n de zoom a lo seleccionado teniendo como ventana activa una tabla.
37
 * 
38
 * @author Vicente Caballero Navarro
39
 */
40
public class ZoomToSelectExtension extends Extension {
41

  
42
    public void execute(String s) {
43
        org.gvsig.andami.ui.mdiManager.IWindow f =
44
            PluginServices.getMDIManager().getActiveWindow();
45
        MapContext mapa = null;
46
        Envelope selectedExtent = null;
47
        if (f instanceof FeatureTableDocumentPanel) {
48
            FeatureTableDocumentPanel table = (FeatureTableDocumentPanel) f;
49
            mapa = (table.getModel().getAssociatedLayer()).getMapContext();
50
        }
51

  
52
        try {
53
            selectedExtent = mapa.getSelectionBounds();
54
            mapa.getViewPort().setEnvelope(selectedExtent);
55
        } catch (BaseException e) {
56
            NotificationManager.addError(e);
57
        }
58

  
59
    }
60

  
61
    public boolean isVisible() {
62
        org.gvsig.andami.ui.mdiManager.IWindow window =
63
            PluginServices.getMDIManager().getActiveWindow();
64
        if (window instanceof FeatureTableDocumentPanel) {
65
            FeatureTableDocumentPanel featureTableDocumentPanel =
66
                (FeatureTableDocumentPanel) window;
67
            IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
68
            for (int i = 0; i < windows.length; i++) {
69
                if (windows[i] instanceof DefaultViewPanel) {
70
                    if (featureTableDocumentPanel.getModel()
71
                        .getAssociatedLayer() != null) {
72
                        if (((DefaultViewPanel) windows[i])
73
                            .getMapControl()
74
                            .getMapContext()
75
                            .equals(
76
                                (featureTableDocumentPanel.getModel()
77
                                    .getAssociatedLayer()).getMapContext())) {
78
                            return true;
79
                        }
80
                    }
81
                }
82
            }
83
        }
84
        return false;
85
    }
86

  
87
    public boolean isEnabled() {
88
        org.gvsig.andami.ui.mdiManager.IWindow f =
89
            PluginServices.getMDIManager().getActiveWindow();
90
        if (f == null) {
91
            return false;
92
        }
93
        if (f instanceof FeatureTableDocumentPanel) {
94
            FeatureTableDocumentPanel t = (FeatureTableDocumentPanel) f;
95
            IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
96
            for (int i = 0; i < windows.length; i++) {
97
                if (windows[i] instanceof DefaultViewPanel) {
98
                    if (((DefaultViewPanel) windows[i])
99
                        .getMapControl()
100
                        .getMapContext()
101
                        .equals(
102
                            (t.getModel().getAssociatedLayer()).getMapContext())) {
103
                        try {
104
                            if (!t.getModel().getStore().getFeatureSelection()
105
                                .isEmpty()) {
106
                                return true;
107
                            }
108
                        } catch (DataException e) {
109
                            NotificationManager.addError(e);
110
                            return false;
111
                        }
112
                    }
113
                }
114
            }
115

  
116
        }
117
        return false;
118
    }
119

  
120
    public void initialize() {
121
        registerIcons();
122
    }
123

  
124
    private void registerIcons() {
125
        PluginServices.getIconTheme().registerDefault(
126
            "table-zoom-to-seleccion",
127
            this.getClass().getClassLoader()
128
                .getResource("images/ZoomSeleccion.png"));
129
    }
130
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableEditCopyExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.fmap.dal.exception.DataException;
26

  
27
/**
28
 * DOCUMENT ME!
29
 * 
30
 * @author Vicente Caballero Navarro
31
 */
32
public class TableEditCopyExtension extends AbstractTableEditExtension {
33

  
34
    /**
35
     * @see org.gvsig.andami.plugins.IExtension#initialize()
36
     */
37
    public void initialize() {
38
        super.initialize();
39
        registerIcons();
40
    }
41

  
42
    private void registerIcons() {
43
        PluginServices.getIconTheme()
44
            .registerDefault(
45
                "edit-copy",
46
                this.getClass().getClassLoader()
47
                    .getResource("images/editcopy.png"));
48
    }
49

  
50
    /**
51
     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
52
     */
53
    public void execute(String actionCommand) {
54
        if ("COPY".equals(actionCommand)) {
55
            try {
56
                featureTableOperations.setStore(table.getModel().getStore());
57
                featureTableOperations.copyFeatures();
58
            } catch (DataException e) {
59
                e.printStackTrace();
60
            }
61
        }
62
    }
63

  
64
    /**
65
     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
66
     */
67
    public boolean isEnabled() {
68
        try {
69
            if (table.getTablePanel().getTable().getSelectedRowCount() > 0)
70
                return true;
71
        } catch (DataException e) {
72
            e.printStackTrace();
73
        }
74
        return false;
75
    }
76
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableEditPasteExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.fmap.dal.exception.DataException;
26

  
27
/**
28
 * DOCUMENT ME!
29
 * 
30
 * @author Vicente Caballero Navarro
31
 */
32
public class TableEditPasteExtension extends AbstractTableEditExtension {
33

  
34
    /**
35
     * @see org.gvsig.andami.plugins.IExtension#initialize()
36
     */
37
    public void initialize() {
38
        super.initialize();
39
        registerIcons();
40
    }
41

  
42
    private void registerIcons() {
43
        PluginServices.getIconTheme().registerDefault(
44
            "edit-paste",
45
            this.getClass().getClassLoader()
46
                .getResource("images/editpaste.png"));
47
    }
48

  
49
    /**
50
     * @see org.gvsig.andami.plugins.IExtension#execute(java.lang.String)
51
     */
52
    public void execute(String actionCommand) {
53
        if ("PASTE".equals(actionCommand)) {
54
            try {
55
                featureTableOperations.setStore(table.getModel().getStore());
56
                featureTableOperations.pasteFeatures();
57
            } catch (DataException e) {
58
                e.printStackTrace();
59
            }
60
        }
61
    }
62

  
63
    /**
64
     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
65
     */
66
    public boolean isEnabled() {
67
        return featureTableOperations.hasSelection();
68
    }
69

  
70
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/ShowTable.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.andami.plugins.Extension;
26
import org.gvsig.app.project.ProjectManager;
27
import org.gvsig.app.project.documents.table.TableDocument;
28
import org.gvsig.app.project.documents.table.TableManager;
29
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
30
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
31
import org.gvsig.fmap.dal.feature.FeatureStore;
32
import org.gvsig.fmap.mapcontext.layers.CancelationException;
33
import org.gvsig.fmap.mapcontext.layers.FLayer;
34
import org.gvsig.fmap.mapcontext.layers.FLayers;
35
import org.gvsig.fmap.mapcontext.layers.LayerCollectionEvent;
36
import org.gvsig.fmap.mapcontext.layers.LayerCollectionListener;
37
import org.gvsig.fmap.mapcontext.layers.LayerPositionEvent;
38
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
39

  
40
/**
41
 * Extensi?n que abre las tablas asociadas a las vistas.
42
 * 
43
 * @author Vicente Caballero Navarro
44
 */
45
public class ShowTable extends Extension implements LayerCollectionListener {
46

  
47
    /**
48
     * @see org.gvsig.andami.plugins.IExtension#isEnabled()
49
     */
50
    public boolean isEnabled() {
51
        AbstractViewPanel f =
52
            (AbstractViewPanel) PluginServices.getMDIManager()
53
                .getActiveWindow();
54

  
55
        if (f == null) {
56
            return false;
57
        }
58

  
59
        FLayer[] selected =
60
            f.getViewDocument().getMapContext().getLayers().getActives();
61

  
62
        boolean algunaTabla = false;
63

  
64
        for (int i = 0; i < selected.length; i++) {
65
            if (selected[i].isAvailable() && selected[i] instanceof FLyrVect) {
66
                FLyrVect co = (FLyrVect) selected[i];
67

  
68
                try {
69
                    if (co.getFeatureStore() != null) {
70
                        algunaTabla = true;
71
                    }
72
                    // } catch (ReadException e) {
73
                    // return false;
74
                } catch (NullPointerException e) {
75
                    return false;
76
                }
77
            }
78
        }
79

  
80
        return algunaTabla;
81
    }
82

  
83
    /**
84
     * @see org.gvsig.andami.plugins.IExtension#isVisible()
85
     */
86
    public boolean isVisible() {
87
        org.gvsig.andami.ui.mdiManager.IWindow f =
88
            PluginServices.getMDIManager().getActiveWindow();
89

  
90
        if (f == null) {
91
            return false;
92
        }
93

  
94
        return (f instanceof AbstractViewPanel);
95
    }
96

  
97
    /**
98
     * @see com.iver.mdiApp.plugins.IExtension#updateUI(java.lang.String)
99
     */
100
    public void execute(String s) {
101
        AbstractViewPanel vista =
102
            (AbstractViewPanel) PluginServices.getMDIManager()
103
                .getActiveWindow();
104
        FLayer[] actives =
105
            vista.getViewDocument().getMapContext().getLayers().getActives();
106

  
107
        for (int i = 0; i < actives.length; i++) {
108
            if (actives[i] instanceof FLyrVect) {
109
                FLyrVect co = (FLyrVect) actives[i];
110

  
111
                ProjectManager projectManager = getProjectManager();
112
                TableManager tableManager = getTableManager();
113

  
114
                TableDocument projectTable = tableManager.getTableDocument(co);
115
                FeatureStore fs = ((FLyrVect) actives[i]).getFeatureStore();
116

  
117
                if (projectTable == null) {
118
                    projectTable =
119
                        (TableDocument) projectManager.createDocument(
120
                            TableManager.TYPENAME,
121
                            PluginServices.getText(this, "Tabla_de_Atributos")
122
                                + ": " + actives[i].getName());
123
                    projectTable.setStore(fs);
124
                    projectTable.setAssociatedLayer(co);
125
                    co.getParentLayer().addLayerCollectionListener(this);
126
                    projectManager.getCurrentProject().add(projectTable);
127
                }
128

  
129
                FeatureTableDocumentPanel featureTableDocumentPanel =
130
                    (FeatureTableDocumentPanel) projectTable.getFactory()
131
                        .getMainWindow(projectTable);
132

  
133
                featureTableDocumentPanel.getModel().setModified(true);
134
                PluginServices.getMDIManager().addWindow(
135
                    featureTableDocumentPanel);
136
            }
137
        }
138

  
139
    }
140

  
141
    private ProjectManager getProjectManager() {
142
        return ProjectManager.getInstance();
143
    }
144

  
145
    private TableManager getTableManager() {
146
        TableManager tableManager =
147
            (TableManager) getProjectManager().getDocumentManager(
148
                TableManager.TYPENAME);
149
        return tableManager;
150
    }
151

  
152
    /**
153
     * @see org.gvsig.andami.plugins.IExtension#initialize()
154
     */
155
    public void initialize() {
156
        registerIcons();
157
    }
158

  
159
    private void registerIcons() {
160
        PluginServices.getIconTheme().registerDefault(
161
            "layer-show-attribute-table",
162
            this.getClass().getClassLoader()
163
                .getResource("images/ResultConsulta.png"));
164
    }
165

  
166
    public void layerAdded(LayerCollectionEvent e) {
167
        // Nothing to do
168
    }
169

  
170
    public void layerMoved(LayerPositionEvent e) {
171
        // Nothing to do
172
    }
173

  
174
    public void layerRemoved(LayerCollectionEvent e) {
175
        FLayer layer = e.getAffectedLayer();
176
        // Just in case we where listening to a group of layers being removed
177
        // remove us from there
178
        if (layer instanceof FLayers) {
179
            ((FLayers) layer).removeLayerCollectionListener(this);
180
        }
181
        // Remove the related table document, if any
182
        if (layer instanceof FLyrVect) {
183
            getTableManager().removeTableDocument((FLyrVect) layer);
184
            // If the parent layers has not other child layers, for sure there
185
            // are not related tables opened, don't need to listen
186
            // LayerCollectionEvents anymore.
187
            // TODO: remove us also when there are not any child layers with
188
            // related table documents
189
            FLayers layers = layer.getParentLayer();
190
            if (layers != null && layers.getLayersCount() == 0) {
191
                layers.removeLayerCollectionListener(this);
192
            }
193
        }
194
    }
195

  
196
    public void layerAdding(LayerCollectionEvent e) throws CancelationException {
197
        // Nothing to do
198
    }
199

  
200
    public void layerMoving(LayerPositionEvent e) throws CancelationException {
201
        // Nothing to do
202
    }
203

  
204
    public void layerRemoving(LayerCollectionEvent e)
205
        throws CancelationException {
206
        // Nothing to do
207
    }
208

  
209
    public void visibilityChanged(LayerCollectionEvent e)
210
        throws CancelationException {
211
        // Nothing to do
212
    }
213
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/ClearSelectionExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.andami.messages.NotificationManager;
26
import org.gvsig.andami.plugins.Extension;
27
import org.gvsig.andami.ui.mdiManager.IWindow;
28
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
29
import org.gvsig.fmap.dal.exception.DataException;
30
import org.gvsig.fmap.dal.feature.FeatureSelection;
31

  
32
/**
33
 * Extensi?n encargada de limpiar la selecci?n.
34
 * 
35
 * @author Vicente Caballero Navarro
36
 */
37
public class ClearSelectionExtension extends Extension {
38

  
39
    public void execute(String s) {
40
        if (s.compareTo("DEL_SELECTION") == 0) {
41
            IWindow activeWindow =
42
                PluginServices.getMDIManager().getActiveWindow();
43

  
44
            if (isFeatureTableDocumentPanel(activeWindow)) {
45
                try {
46
                    FeatureSelection selection = getSelection(activeWindow);
47
                    selection.deselectAll();
48
                } catch (DataException e) {
49
                    NotificationManager.addError(e);
50
                }
51
            }
52
        }
53
    }
54

  
55
    public boolean isVisible() {
56
        IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
57
        return isFeatureTableDocumentPanel(activeWindow);
58
    }
59

  
60
    private boolean isFeatureTableDocumentPanel(IWindow activeWindow) {
61
        return activeWindow instanceof FeatureTableDocumentPanel;
62
    }
63

  
64
    public boolean isEnabled() {
65
        IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
66

  
67
        if (isFeatureTableDocumentPanel(activeWindow)) {
68
            try {
69
                return !getSelection(activeWindow).isEmpty();
70
            } catch (DataException e) {
71
                throw new RuntimeException(
72
                    "Error getting the selection to check if it is empty", e);
73
            }
74
        }
75

  
76
        return false;
77
    }
78

  
79
    private FeatureSelection getSelection(IWindow activeWindow)
80
        throws DataException {
81
        return (FeatureSelection) ((FeatureTableDocumentPanel) activeWindow)
82
            .getModel().getStore().getSelection();
83
    }
84

  
85
    public void initialize() {
86
        registerIcons();
87
    }
88

  
89
    private void registerIcons() {
90
        PluginServices.getIconTheme().registerDefault(
91
            "table-clear-selection",
92
            this.getClass().getClassLoader()
93
                .getResource("images/delselection.png"));
94
    }
95
}
tags/v2_0_0_Build_2046/extensions/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableOperations.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22
package org.gvsig.app.extension;
23

  
24
import java.awt.Component;
25
import java.awt.Dimension;
26
import java.util.List;
27

  
28
import javax.swing.JOptionPane;
29

  
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.messages.NotificationManager;
32
import org.gvsig.andami.plugins.Extension;
33
import org.gvsig.andami.ui.mdiManager.IWindow;
34
import org.gvsig.app.gui.filter.ExpressionListener;
35
import org.gvsig.app.project.Project;
36
import org.gvsig.app.project.ProjectManager;
37
import org.gvsig.app.project.documents.Document;
38
import org.gvsig.app.project.documents.gui.AndamiWizard;
39
import org.gvsig.app.project.documents.gui.ObjectSelectionStep;
40
import org.gvsig.app.project.documents.table.FieldSelectionModel;
41
import org.gvsig.app.project.documents.table.TableDocument;
42
import org.gvsig.app.project.documents.table.TableManager;
43
import org.gvsig.app.project.documents.table.TableSelectionModel;
44
import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
45
import org.gvsig.fmap.dal.DALLocator;
46
import org.gvsig.fmap.dal.exception.DataException;
47
import org.gvsig.fmap.dal.feature.Feature;
48
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
49
import org.gvsig.fmap.dal.feature.FeatureQuery;
50
import org.gvsig.fmap.dal.feature.FeatureSelection;
51
import org.gvsig.fmap.dal.feature.FeatureSet;
52
import org.gvsig.fmap.dal.feature.FeatureStore;
53
import org.gvsig.tools.dispose.DisposableIterator;
54
import org.gvsig.tools.dispose.DisposeUtils;
55
import org.gvsig.utils.swing.objectSelection.SelectionException;
56
import org.gvsig.utils.swing.wizard.WizardControl;
57
import org.gvsig.utils.swing.wizard.WizardEvent;
58
import org.gvsig.utils.swing.wizard.WizardListener;
59

  
60
/**
61
 * Extensi?n que controla las operaciones realizadas sobre las tablas.
62
 * 
63
 * @author Fernando Gonz?lez Cort?s
64
 */
65
public class TableOperations extends Extension implements ExpressionListener {
66

  
67
    private FeatureStore featureStore = null;
68

  
69
    public void execute(String actionCommand) {
70
        final Project project =
71
            ProjectManager.getInstance().getCurrentProject();
72
        List<Document> tableDcouments =
73
            project.getDocuments(TableManager.TYPENAME);
74
        TableDocument[] pts =
75
            tableDcouments
76
                .toArray(new TableDocument[tableDcouments.size()]);
77

  
78
        if ("LINK".equals(actionCommand)) {
79
            try {
80
                final ObjectSelectionStep sourceTable =
81
                    new ObjectSelectionStep();
82
                sourceTable.setModel(new TableSelectionModel(pts,
83
                    PluginServices.getText(this, "seleccione_tabla_origen")));
84

  
85
                final ObjectSelectionStep targetTable =
86
                    new ObjectSelectionStep();
87
                targetTable
88
                    .setModel(new TableSelectionModel(pts, PluginServices
89
                        .getText(this, "seleccione_tabla_a_enlazar")));
90

  
91
                final ObjectSelectionStep firstTableField =
92
                    new ObjectSelectionStep();
93
                final ObjectSelectionStep secondTableField =
94
                    new ObjectSelectionStep();
95
                final AndamiWizard wiz =
96
                    new AndamiWizard(PluginServices.getText(this, "back"),
97
                        PluginServices.getText(this, "next"),
98
                        PluginServices.getText(this, "finish"),
99
                        PluginServices.getText(this, "cancel"));
100
                wiz.setSize(new Dimension(450, 200));
101
                wiz.addStep(sourceTable);
102
                wiz.addStep(firstTableField);
103
                wiz.addStep(targetTable);
104
                wiz.addStep(secondTableField);
105

  
106
                wiz.addWizardListener(new WizardListener() {
107

  
108
                    public void cancel(WizardEvent w) {
109
                        PluginServices.getMDIManager().closeWindow(wiz);
110
                    }
111

  
112
                    public void finished(WizardEvent w) {
113
                        PluginServices.getMDIManager().closeWindow(wiz);
114

  
115
                        TableDocument sourceProjectTable =
116
                            (TableDocument) sourceTable.getSelected();
117

  
118
                        TableDocument targetProjectTable =
119
                            (TableDocument) targetTable.getSelected();
120
                        FeatureStore sds2 = targetProjectTable.getStore();
121

  
122
                        String field1 = (String) firstTableField.getSelected();
123
                        String field2 = (String) secondTableField.getSelected();
124
                        sourceProjectTable.addLinkTable(sds2.getName(), field1,
125
                            field2);
126

  
127
                    }
128

  
129
                    public void next(WizardEvent w) {
130
                        WizardControl wiz = w.wizard;
131
                        wiz.enableBack(true);
132
                        wiz.enableNext(((ObjectSelectionStep) wiz
133
                            .getCurrentStep()).getSelectedItem() != null);
134

  
135
                        if (w.currentStep == 1) {
136
                            TableDocument pt =
137
                                (TableDocument) sourceTable.getSelected();
138

  
139
                            try {
140
                                firstTableField
141
                                    .setModel(new FieldSelectionModel(pt
142
                                        .getStore(), PluginServices.getText(
143
                                        this, "seleccione_campo_enlace")));
144
                            } catch (SelectionException e) {
145
                                NotificationManager.addError(
146
                                    "Error obteniendo los campos de la tabla",
147
                                    e);
148
                            }
149
                        } else
150
                            if (w.currentStep == 3) {
151
                                try {
152
                                    // tabla
153
                                    TableDocument pt =
154
                                        (TableDocument) sourceTable
155
                                            .getSelected();
156

  
157
                                    // ?ndice del campo
158
                                    FeatureStore fs = pt.getStore();
159
                                    String fieldName =
160
                                        (String) firstTableField.getSelected();
161
                                    int type =
162
                                        ((FeatureAttributeDescriptor) fs
163
                                            .getDefaultFeatureType().get(
164
                                                fieldName)).getType();
165

  
166
                                    secondTableField
167
                                        .setModel(new FieldSelectionModel(
168
                                            ((TableDocument) targetTable
169
                                                .getSelected()).getStore(),
170
                                            PluginServices.getText(this,
171
                                                "seleccione_campo_enlace"),
172
                                            type));
173
                                } catch (SelectionException e) {
174
                                    NotificationManager
175
                                        .addError(
176
                                            "Error obteniendo los campos de la tabla",
177
                                            e);
178
                                } catch (DataException e) {
179
                                    NotificationManager
180
                                        .addError(
181
                                            "Error obteniendo los campos de la tabla",
182
                                            e);
183
                                }
184
                            }
185
                    }
186

  
187
                    public void back(WizardEvent w) {
188
                        WizardControl wiz = w.wizard;
189
                        wiz.enableBack(true);
190
                        wiz.enableNext(((ObjectSelectionStep) wiz
191
                            .getCurrentStep()).getSelectedItem() != null);
192
                    }
193
                });
194
                project.setModified(true);
195
                PluginServices.getMDIManager().addWindow(wiz);
196
            } catch (SelectionException e) {
197
                NotificationManager.addError("Error abriendo el asistente", e);
198
            }
199
        }
200
    }
201

  
202
    /**
203
     * @see org.gvsig.app.gui.filter.ExpressionListener#newSet(java.lang.String)
204
     */
205
    public void newSet(String expression) throws DataException {
206
        // By Pablo: if no filter expression -> no element selected
207
        if (!this.filterExpressionFromWhereIsEmpty(expression)) {
208
            FeatureSet set = null;
209
            try {
210
                set = doSet(expression);
211

  
212
                if (set == null) {
213
                    throw new RuntimeException("Not a 'where' clause?");
214
                }
215
                FeatureSelection newSel = featureStore.createFeatureSelection();
216
                newSel.select(set);
217
                featureStore.setSelection(newSel);
218
            } catch (Exception e) {
219
                JOptionPane.showMessageDialog(
220
                    (Component) PluginServices.getMainFrame(),
221
                    "Asegurate de que la consulta es correcta.");
222
            } finally {
223
                if (set != null) {
224
                    set.dispose();
225
                }
226
            }
227
        } else {
228
            // By Pablo: if no expression -> no element selected
229
            featureStore.getFeatureSelection().deselectAll();
230
        }
231
    }
232

  
233
    /**
234
     * @see org.gvsig.app.gui.filter.ExpressionListener#newSet(java.lang.String)
235
     */
236
    private FeatureSet doSet(String expression) throws DataException {
237
        FeatureQuery query = featureStore.createFeatureQuery();
238
        query
239
            .setFilter(DALLocator.getDataManager().createExpresion(expression));
240
        return featureStore.getFeatureSet(query);
241
    }
242

  
243
    /**
244
     * @see org.gvsig.app.gui.filter.ExpressionListener#addToSet(java.lang.String)
245
     */
246
    public void addToSet(String expression) throws DataException {
247
        // By Pablo: if no filter expression -> don't add more elements to set
248
        if (!this.filterExpressionFromWhereIsEmpty(expression)) {
249
            FeatureSet set = null;
250
            try {
251
                set = doSet(expression);
252

  
253
                featureStore.getFeatureSelection().select(set);
254
            } finally {
255
                if (set != null) {
256
                    set.dispose();
257
                }
258
            }
259
        }
260
    }
261

  
262
    /**
263
     * @see org.gvsig.app.gui.filter.ExpressionListener#fromSet(java.lang.String)
264
     */
265
    public void fromSet(String expression) throws DataException {
266
        // By Pablo: if no filter expression -> no element selected
267
        if (!this.filterExpressionFromWhereIsEmpty(expression)) {
268

  
269
            FeatureSet set = null;
270
            DisposableIterator iterator = null;
271
            try {
272
                set = doSet(expression);
273

  
274
                if (set == null) {
275
                    throw new RuntimeException("Not a 'where' clause?");
276
                }
277
                FeatureSelection oldSelection =
278
                    featureStore.getFeatureSelection();
279

  
280
                FeatureSelection newSelection =
281
                    featureStore.createFeatureSelection();
282
                iterator = set.fastIterator();
283
                while (iterator.hasNext()) {
284
                    Feature feature = (Feature) iterator.next();
285
                    if (oldSelection.isSelected(feature)) {
286
                        newSelection.select(feature);
287
                    }
288
                }
289
                featureStore.setSelection(newSelection);
290
            } finally {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff