Revision 37482

View differences:

tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/.project
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>org.gvsig.newlayer</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
	</buildSpec>
9
	<natures>
10
	</natures>
11
</projectDescription>
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/prepare-workspace.xml
1
<project name="org.gvsig.initial.build" default="prepare-workspace">
2

  
3
	<dirname property="org.gvsig.initial.build.basedir" file="${ant.file.org.gvsig.initial.build}" />
4

  
5
	<property name="workspace.basedir" value="${org.gvsig.initial.build.basedir}/.." />
6
	<property name="build.basedir" value="${workspace.basedir}/org.gvsig.maven.base.build" description="Eclipse workspace location" />
7
	<property name="build.jar.version" value="1.0.6-SNAPSHOT" />
8
	<property name="build.jar.file" value="org.gvsig.maven.base.build-${build.jar.version}.jar" />
9

  
10
	<property name="ant.libs.dir" location="${build.basedir}" description="Additional ant tasks libs folder" />
11

  
12
	<target name="check-maven-base-build-available">
13
		<available file="${user.home}/.m2/repository/org/gvsig/org.gvsig.maven.base.build/${build.jar.version}/${build.jar.file}" property="maven-base-build-available" />
14
	</target>
15

  
16
	<target name="get-maven-base-build-local" depends="check-maven-base-build-available" if="maven-base-build-available">
17
		<!-- Unzip de build jar file from the maven repository into the workspace root folder -->
18
		<copy todir="${workspace.basedir}" preservelastmodified="false" filtering="false">
19
			<zipfileset src="${user.home}/.m2/repository/org/gvsig/org.gvsig.maven.base.build/${build.jar.version}/${build.jar.file}">
20
				<patternset>
21
					<exclude name="META-INF/**" />
22
				</patternset>
23
			</zipfileset>
24
		</copy>
25
	</target>
26

  
27
	<target name="get-maven-base-build-remote" depends="check-maven-base-build-available" unless="maven-base-build-available">
28
		<mkdir dir="target" />
29

  
30
		<!-- Download the build jar file -->
31
		<get src="http://gvsig-desktop.forge.osor.eu/downloads/pub/projects/gvSIG-desktop/maven-repository/org/gvsig/org.gvsig.maven.base.build/${build.jar.version}/${build.jar.file}" dest="target/${build.jar.file}" verbose="true" />
32

  
33
		<!-- Unzip de build jar file into the workspace root folder -->
34
		<copy todir="${workspace.basedir}" preservelastmodified="false" filtering="false">
35
			<zipfileset src="target/${build.jar.file}">
36
				<patternset>
37
					<exclude name="META-INF/**" />
38
				</patternset>
39
			</zipfileset>
40
		</copy>
41

  
42
	</target>
43

  
44
	<target name="prepare-workspace" depends="get-maven-base-build-local,get-maven-base-build-remote">
45

  
46
		<mkdir dir="target" />
47

  
48
		<chmod dir="${build.basedir}/maven/bin" perm="u+x" includes="m2,mvn,mvnDebug" />
49

  
50
		<!-- Copy the maven launchers to the workspace metadata folder -->
51
		<copy todir="${workspace.basedir}/.metadata">
52
			<fileset dir="${build.basedir}/eclipse-launchers">
53
				<exclude name="**/org.eclipse.jdt.core.prefs" />
54
				<exclude name="**/org.eclipse.core.variables.prefs" />
55
			</fileset>
56
		</copy>
57

  
58
		<concat destfile="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs" append="true">
59
			<filelist dir="${build.basedir}/eclipse-launchers/.plugins/org.eclipse.core.runtime/.settings" files="org.eclipse.jdt.core.prefs" />
60
		</concat>
61
		<concat destfile="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.variables.prefs" append="true">
62
			<filelist dir="${build.basedir}/eclipse-launchers/.plugins/org.eclipse.core.runtime/.settings" files="org.eclipse.core.variables.prefs" />
63
		</concat>
64

  
65
		<!-- Configure the eclipse workspace -->
66
		<ant antfile="${build.basedir}/maven-goals.xml" target="mvn-configure-eclipse-workspace" />
67

  
68
		<!-- Configure the gvSIG profile -->
69
		<ant antfile="${build.basedir}/check-gvsig-profile.xml" target="initialize" />
70

  
71
		<property name="user-settings-file-location" value="${user.home}/.m2/settings.xml" />
72

  
73
		<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask">
74
			<classpath>
75
				<pathelement location="${ant.libs.dir}/com.oopsconsultancy.xmltask-1.16.1.jar" />
76
			</classpath>
77
		</taskdef>
78

  
79
		<xmltask source="${user-settings-file-location}" dest="${user-settings-file-location}">
80
			<copy path="//:settings/:profiles/:profile[:id/text() = 'gvsig-install']/:properties/:gvsig.install.dir/text()" property="current-gvsig-location" />
81
		</xmltask>
82

  
83
		<replace file="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs" token="@GVSIG_HOME@" value="${current-gvsig-location}" />
84
		<replace file="${workspace.basedir}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.variables.prefs" token="@GVSIG_HOME@" value="${current-gvsig-location}" />
85

  
86
		<!-- Compile, install and generate eclipse projects -->
87
		<ant antfile="${build.basedir}/maven-goals.xml" target="mvn-install-and-eclipse-eclipse" />
88

  
89
		<echo>INFORMATION!!!</echo>
90
		<echo>Restart eclipse and then proceed to import the subprojects contained into the main project</echo>
91

  
92
		<!-- TODO: copiar al proyecto de configuraciĆ³n general -->
93
	</target>
94

  
95
	<target name="clean">
96
		<delete dir="target" />
97
	</target>
98

  
99
</project>
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/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.newlayer</artifactId>
7
	<packaging>pom</packaging>
8
	<version>1.0.0-SNAPSHOT</version>
9
	<name>org.gvsig.newlayer</name>
10
	<description>newlayer example project</description>
11
	<url>http://gvsig-desktop.forge.osor.eu/downloads/pub/projects/gvSIG-desktop/docs/reference/org.gvsig.newlayer/${project.version}/basic/org.gvsig.newlayer</url>
12
    <parent>
13
        <groupId>org.gvsig</groupId>
14
        <artifactId>org.gvsig.maven.base.pom</artifactId>
15
        <version>1.0.8-SNAPSHOT</version>
16
    </parent>
17

  
18
	<scm>
19
		<connection>scm:svn:https://svn.forge.osor.eu/svn/gvsig-newlayer/org.gvsig.newlayer/library/trunk</connection>
20
		<developerConnection>scm:svn:https://svn.forge.osor.eu/svn/gvsig-newlayer/org.gvsig.newlayer/library/trunk</developerConnection>
21
		<url>https://forge.osor.eu/plugins/scmsvn/viewcvs.php/org.gvsig.newlayer/library/trunk/?root=gvsig-newlayer</url>
22
	</scm>
23

  
24
	<developers>
25
        <developer>
26
            <id>jpiera</id>
27
            <name>Jorge Piera</name>
28
            <email>jpiera@gvsig.org</email>
29
            <roles>
30
                <role>Architect</role>
31
                <role>Developer</role>
32
            </roles>
33
        </developer>
34
        <developer>
35
            <id>jjdelcerro</id>
36
            <name>Joaqu?n Jos? del Cerro</name>
37
            <email>jjdelcerro@gvsig.org</email>
38
            <roles>
39
                <role>Architect</role>          
40
            </roles>
41
        </developer>        
42
    </developers>
43

  
44
	<distributionManagement>
45
		<site>
46
			<id>gvsig-repository</id>
47
			<url>scp://shell.forge.osor.eu/home/groups/gvsig-desktop/www/downloads/pub/projects/gvSIG-desktop/docs/reference/org.gvsig.newlayer/${project.version}/basic/org.gvsig.newlayer</url>
48
		</site>
49
	</distributionManagement>
50
	<repositories>
51
		<repository>
52
			<id>gvsig-public-http-repository</id>
53
			<name>gvSIG maven public HTTP repository</name>
54
			<url>http://gvsig-desktop.forge.osor.eu/downloads/pub/projects/gvSIG-desktop/maven-repository</url>
55
			<releases>
56
				<enabled>true</enabled>
57
				<updatePolicy>daily</updatePolicy>
58
				<checksumPolicy>warn</checksumPolicy>
59
			</releases>
60
			<snapshots>
61
				<enabled>true</enabled>
62
				<updatePolicy>daily</updatePolicy>
63
				<checksumPolicy>warn</checksumPolicy>
64
			</snapshots>
65
		</repository>
66
	</repositories>
67
	<build>
68
		<plugins>
69
			<plugin>
70
				<groupId>org.apache.maven.plugins</groupId>
71
				<artifactId>maven-release-plugin</artifactId>
72
				<configuration>
73
					<tagBase>https://svn.forge.osor.eu/svn/gvsig-newlayer/org.gvsig.newlayer/library/tags</tagBase>
74
				</configuration>
75
			</plugin>
76
		</plugins>
77
	</build>
78
	<dependencyManagement>
79
		<dependencies>			
80
            <dependency>
81
                <groupId>org.gvsig</groupId>
82
                <artifactId>org.gvsig.core.maven.dependencies</artifactId>
83
                <version>2.0.1-SNAPSHOT</version>
84
                <type>pom</type>
85
                <scope>import</scope>
86
            </dependency>
87
            <dependency>
88
                <groupId>org.gvsig</groupId>
89
                <artifactId>org.gvsig.geodb</artifactId>
90
                <version>2.0-SNAPSHOT</version>
91
            </dependency>
92
		</dependencies>
93
	</dependencyManagement>
94

  
95
	<dependencies>
96
		<dependency>
97
			<groupId>org.gvsig</groupId>
98
			<artifactId>org.gvsig.tools.lib</artifactId>
99
		</dependency>
100
		<dependency>
101
			<groupId>org.gvsig</groupId>
102
			<artifactId>org.gvsig.tools.lib</artifactId>
103
			<type>test-jar</type>
104
		</dependency>	
105
	</dependencies>
106

  
107
	<modules>
108
		<module>org.gvsig.newlayer.lib</module>
109
		<module>org.gvsig.newlayer.prov</module>
110
	</modules>
111
</project>
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/README.txt
1
The first time you checkout the current project to a new workspace, 
2
you have to prepare it to be able to work easily with maven from
3
eclipse itself.
4

  
5
Perform the following steps:
6

  
7
1.- Launch the *prepare-workspace.xml* ant build file. 
8
    You can do it by loading the file into the ant view, 
9
    and running the default task, or right-clicking the 
10
    file from the package explorer or the navigator and
11
    select the option: *Run as > Ant build*. 
12
    
13
2.- Restart eclipse.
14

  
15
3.- Import the subprojects of the project you have just checked out.
16

  
17
Those steps are only needed once per workspace.     
18

  
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4
		 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5

  
6
	<modelVersion>4.0.0</modelVersion>
7
	<artifactId>org.gvsig.newlayer.lib</artifactId>
8
	<packaging>pom</packaging>
9
	<name>org.gvsig.newlayer.lib</name>
10
	<parent>
11
		<groupId>org.gvsig</groupId>
12
		<artifactId>org.gvsig.newlayer</artifactId>
13
		<version>1.0.0-SNAPSHOT</version>
14
	</parent>
15

  
16
	<modules>
17
		<module>org.gvsig.newlayer.lib.api</module>
18
		<module>org.gvsig.newlayer.lib.impl</module>
19
	</modules>
20
</project>
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/org.gvsig.newlayer.lib.impl/src/main/java/org/gvsig/newlayer/impl/DefaultNewLayerService.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.newlayer.impl;
23

  
24
import java.util.ArrayList;
25
import java.util.Iterator;
26
import java.util.List;
27

  
28
import org.gvsig.fmap.dal.DALLocator;
29
import org.gvsig.fmap.dal.DataManager;
30
import org.gvsig.fmap.dal.DataServerExplorer;
31
import org.gvsig.fmap.dal.DataStore;
32
import org.gvsig.fmap.dal.exception.DataException;
33
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
34
import org.gvsig.fmap.dal.feature.EditableFeatureType;
35
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
36
import org.gvsig.fmap.mapcontext.MapContext;
37
import org.gvsig.fmap.mapcontext.MapContextLocator;
38
import org.gvsig.fmap.mapcontext.MapContextManager;
39
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
40
import org.gvsig.fmap.mapcontext.layers.FLayer;
41
import org.gvsig.newlayer.NewLayerManager;
42
import org.gvsig.newlayer.NewLayerProvider;
43
import org.gvsig.newlayer.NewLayerProviderFactory;
44
import org.gvsig.newlayer.NewLayerService;
45
import org.gvsig.newlayer.NewLayerServiceException;
46

  
47
/**
48
 * Default {@link NewLayerService} implementation.
49
 * 
50
 * @author gvSIG Team
51
 * @version $Id$
52
 */
53
public class DefaultNewLayerService implements NewLayerService {
54

  
55
    private NewLayerManager newLayerManager;
56
    private NewLayerProviderFactory type;
57
    private NewLayerProvider provider;
58
    private boolean addLayerToView = true;
59
    private MapContext mapContext;
60

  
61
    /**
62
     * {@link DefaultNewLayerService} constructor 
63

  
64
     */
65
    public DefaultNewLayerService(NewLayerManager manager , MapContext mapContext) { 
66
        this.newLayerManager = manager;
67
        this.mapContext = mapContext;
68
    }
69

  
70
    public NewLayerProvider getProvider(){
71
		return provider;
72
    }
73
    
74
	public void createLayer()
75
			throws NewLayerServiceException {
76
		try {
77
			this.getExplorer().add(this.getStoreName(), this.getNewStoreParameters(), true);
78
		} catch (DataException e) {
79
			throw new CantCreateNewLayerException(e);
80
		}
81
	}
82
	
83
	public void loadLayer() throws NewLayerServiceException {
84
		try {
85
			String storeName = this.getStoreName();
86
			NewFeatureStoreParameters storeParameters = this.getNewStoreParameters();
87
			DataManager dataManager=DALLocator.getDataManager();
88
			DataStore store = dataManager.openStore(storeName, storeParameters);
89
			String layerName = store.getName();
90

  
91
			MapContextManager mapContextManager = MapContextLocator.getMapContextManager();
92
			FLayer lyr = mapContextManager.createLayer(layerName, store);
93
			lyr.setActive(true);
94
			lyr.setVisible(true);
95
			mapContext.getLayers().addLayer(lyr);
96

  
97
			lyr.dispose();
98
		} catch (DataException e) {
99
			throw new CantOpenStoreException(e);
100
		} catch (ValidateDataParametersException e) {
101
			throw new CantOpenStoreException(e);
102
		} catch (LoadLayerException e) {
103
			throw new CantLoadNewLayerException(e);
104
		}
105

  
106
	}
107

  
108
	
109
	public class CantCreateNewLayerException extends NewLayerServiceException {
110
		/**
111
		 * 
112
		 */
113
		private static final long serialVersionUID = 4208215791054246118L;
114

  
115
		public CantCreateNewLayerException(Throwable cause) {
116
			super("Can't create the layer", cause, "_cant_create_the_layer", serialVersionUID);
117
		}
118
	}
119

  
120
	public class CantOpenStoreException extends NewLayerServiceException {
121

  
122
		/**
123
		 * 
124
		 */
125
		private static final long serialVersionUID = -2245228621032918630L;
126

  
127
		public CantOpenStoreException(Throwable cause) {
128
			super("Can't open store", cause, "_cant_open_store", serialVersionUID);
129
		}
130
	}
131

  
132
	public class CantLoadNewLayerException extends NewLayerServiceException {
133

  
134
		/**
135
		 * 
136
		 */
137
		private static final long serialVersionUID = -1711950651766745963L;
138

  
139
		public CantLoadNewLayerException(Throwable cause) {
140
			super("Can't load the new layer", cause, "_cant_load_the_new_layer", serialVersionUID);
141
		}
142
	}
143

  
144
	public void setType(String type) {
145
		List<NewLayerProviderFactory> providers = this.newLayerManager.getProviders(NewLayerManager.STORETYPE.ANY);
146
		Iterator<NewLayerProviderFactory> it = providers.iterator();
147
		while (it.hasNext()) {
148
			NewLayerProviderFactory newLayerProviderFactory = it.next();
149
			if (newLayerProviderFactory.getName().equalsIgnoreCase(type)){
150
				this.type = newLayerProviderFactory;
151
				this.provider = newLayerProviderFactory.create(this);
152
				return;
153
			}
154
		}
155
		throw new IllegalArgumentException(type);
156
	}
157

  
158
	public DataServerExplorer getExplorer() {
159
		return getProvider().getExplorer();
160
	}
161

  
162
	public String getStoreName() {
163
		return getProvider().getStoreName();
164
	}
165

  
166
	public EditableFeatureType getFeatureType() {
167
		return getProvider().getFeatureType();
168
	}
169

  
170
	public NewFeatureStoreParameters getNewStoreParameters() {
171
		return getProvider().getNewStoreParameters();
172
	}
173

  
174
	public List<String> getTypes() {
175
		List<String> types = new ArrayList<String>();
176
		List<NewLayerProviderFactory> providers = this.newLayerManager.getProviders(NewLayerManager.STORETYPE.ANY);
177
		Iterator<NewLayerProviderFactory> it = providers.iterator();
178
		while (it.hasNext()) {
179
			NewLayerProviderFactory newLayerProviderFactory = it.next();
180
			types.add(newLayerProviderFactory.getName());
181
		}
182
		return types;
183
	}
184

  
185
	public String getType() {
186
		return this.type.getName();
187
	}
188

  
189
	public void addLayerToView(boolean b) {
190
		this.addLayerToView = b;
191
	}
192

  
193
	public MapContext getMapContext() {
194
		return mapContext;
195
	}
196

  
197
}
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/org.gvsig.newlayer.lib.impl/src/main/java/org/gvsig/newlayer/impl/DefaultNewLayerWizard.java
1
package org.gvsig.newlayer.impl;
2

  
3
import java.awt.Dimension;
4
import java.util.Iterator;
5
import java.util.List;
6

  
7
import javax.swing.ImageIcon;
8
import javax.swing.JOptionPane;
9
import javax.swing.JPanel;
10

  
11
import jwizardcomponent.CancelAction;
12
import jwizardcomponent.DefaultJWizardComponents;
13
import jwizardcomponent.FinishAction;
14
import jwizardcomponent.JWizardComponents;
15

  
16
import org.gvsig.gui.beans.wizard.panel.NotContinueWizardException;
17
import org.gvsig.gui.beans.wizard.panel.OptionPanel;
18
import org.gvsig.newlayer.NewLayerProviderPanel;
19
import org.gvsig.newlayer.NewLayerService;
20
import org.gvsig.newlayer.NewLayerServiceException;
21
import org.gvsig.newlayer.NewLayerWizard;
22
import org.slf4j.Logger;
23
import org.slf4j.LoggerFactory;
24

  
25
public class DefaultNewLayerWizard extends NewLayerWizard {
26

  
27
	/**
28
	 * 
29
	 */
30
	private static final long serialVersionUID = -5827106636136663823L;
31
	private NewLayerService service;
32
	private AddNewLayerQuestionPanel addNewLayerQuestionPanel;
33
	private static final Logger LOG =
34
        LoggerFactory.getLogger(DefaultNewLayerWizard.class);
35

  
36
	public DefaultNewLayerWizard(ImageIcon logo, NewLayerService service) {
37
		super(logo);
38
		setPreferredSize(new Dimension(800, 400));
39
		this.service = service;
40
		this.getWizardComponents().setFinishAction(
41
				new MyFinishAction(this.getWizardComponents()));
42
		this.getWizardComponents().setCancelAction(
43
				new MyCancelAction(this.getWizardComponents()));
44
		this.createTypeSelector();
45
	}
46

  
47
	public NewLayerService getService() {
48
		return this.service;
49
	}
50

  
51
	private void createTypeSelector() {
52

  
53
		TypeSelectorPanel panel = new TypeSelectorPanel(this);
54
		this.addOptionPanel(panel);
55

  
56
	}
57

  
58
	private void createFeatureTypePanel() {
59

  
60
		FeatureTypePanel panel = new FeatureTypePanel(this);
61
		this.addOptionPanel(panel);
62

  
63
	}
64

  
65
	private void createProviderPanels() {
66
		DefaultJWizardComponents wizardComponents = this.getWizardComponents();
67
		for (int i = wizardComponents.getWizardPanelList().size() - 1; i >= 1; i--) {
68
			wizardComponents.removeWizardPanel(i);
69
		}
70
		List<NewLayerProviderPanel> panels = service.getProvider().getPanels();
71
		Iterator<NewLayerProviderPanel> it = panels.iterator();
72
		while (it.hasNext()) {
73
			NewLayerProviderPanel panel = it.next();
74
			this.addOptionPanel(new OptionPanelWrapper(panel));
75
		}
76
		this.createFeatureTypePanel();
77
		this.createAddNewLayerQuestionPanel();
78
	}
79

  
80
	private AddNewLayerQuestionPanel getAddNewLayerQuestionPanel() {
81
		if (this.addNewLayerQuestionPanel == null) {
82
			this.addNewLayerQuestionPanel = new AddNewLayerQuestionPanel(this);
83
		}
84
		return this.addNewLayerQuestionPanel;
85
	}
86

  
87
	private void createAddNewLayerQuestionPanel() {
88
		this.addOptionPanel(getAddNewLayerQuestionPanel());
89
	}
90

  
91
	private boolean getAddLayerToView() {
92
		return getAddNewLayerQuestionPanel().getAddLayerToView();
93
	}
94

  
95
	@Override
96
	public void setType(String currentType) {
97
		this.service.setType(currentType);
98
		createProviderPanels();
99
	}
100

  
101
	private class OptionPanelWrapper implements OptionPanel {
102

  
103
		private NewLayerProviderPanel panel;
104

  
105
		public OptionPanelWrapper(NewLayerProviderPanel panel) {
106
			this.panel = panel;
107
		}
108

  
109
		public String getPanelTitle() {
110
			return this.panel.getTitle();
111
		}
112

  
113
		public void nextPanel() throws NotContinueWizardException {
114

  
115
			if (!this.panel.isValidPanel()) {
116
				throw new NotContinueWizardException("", null, false);
117
			}
118

  
119
		}
120

  
121
		public void lastPanel() {
122
		}
123

  
124
		public void updatePanel() {
125
			this.panel.updatePanel();
126
		}
127

  
128
		public JPanel getJPanel() {
129
			return this.panel;
130
		}
131

  
132
	}
133

  
134
	private class MyFinishAction extends FinishAction {
135

  
136
		public MyFinishAction(JWizardComponents arg0) {
137
			super(arg0);
138
		}
139

  
140
		public void performAction() {
141

  
142
			if (getService().getStoreName() == null) {
143
				JOptionPane
144
				.showMessageDialog(
145
						null,
146
						"Can't create a new layer.\n The store name is missing.\n Go back and enter it, please.",
147
						"Can't create a new layer",
148
						JOptionPane.WARNING_MESSAGE);
149
				return;
150
			}
151
			if (getService().getNewStoreParameters() == null) {
152
				JOptionPane
153
				.showMessageDialog(
154
						null,
155
						"Can't create a new layer.\n The store paremeters are missing.\n Go back and enter it, please.",
156
						"Can't create a new layer",
157
						JOptionPane.WARNING_MESSAGE);
158
				return;
159
			}
160
			getService().addLayerToView(getAddLayerToView());
161
			try {
162
				getService().createLayer();
163
			} catch (NewLayerServiceException e) {
164
				LOG.error("Can't create the new layer", e);
165
				JOptionPane
166
				.showMessageDialog(
167
						null,
168
						"Can't create the new layer.",
169
						"Can't create the new layer.",
170
						JOptionPane.ERROR_MESSAGE);
171
				return;
172
			}
173
			
174
			try {
175
				getService().loadLayer();
176
			} catch (NewLayerServiceException e) {
177
				JOptionPane
178
				.showMessageDialog(
179
						null,
180
						"The new layer has been succesfully created but can't load the new layer.\n Try load it yourshelf, please.",
181
						"Can't create a new layer",
182
						JOptionPane.WARNING_MESSAGE);
183
			}
184
			setVisible(false);
185
			return;
186
		}
187

  
188
	}
189

  
190
	private class MyCancelAction extends CancelAction {
191

  
192
		public MyCancelAction(DefaultJWizardComponents wizardComponents) {
193
			super(wizardComponents);
194
		}
195

  
196
		public void performAction() {
197
			setVisible(false);
198
		}
199

  
200
	}
201
}
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/org.gvsig.newlayer.lib.impl/src/main/java/org/gvsig/newlayer/impl/FeatureTypePanel.java
1
package org.gvsig.newlayer.impl;
2

  
3
import java.awt.BorderLayout;
4
import java.awt.Component;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
7
import java.util.ArrayList;
8
import java.util.Iterator;
9
import java.util.List;
10

  
11
import javax.swing.ComboBoxModel;
12
import javax.swing.DefaultCellEditor;
13
import javax.swing.JButton;
14
import javax.swing.JCheckBox;
15
import javax.swing.JComboBox;
16
import javax.swing.JLabel;
17
import javax.swing.JPanel;
18
import javax.swing.JScrollPane;
19
import javax.swing.JTable;
20
import javax.swing.ListSelectionModel;
21
import javax.swing.UIManager;
22
import javax.swing.event.ListDataListener;
23
import javax.swing.event.ListSelectionEvent;
24
import javax.swing.event.ListSelectionListener;
25
import javax.swing.table.DefaultTableModel;
26
import javax.swing.table.TableCellRenderer;
27
import javax.swing.table.TableColumn;
28

  
29
import org.cresques.cts.IProjection;
30
import org.gvsig.app.gui.panels.CRSSelectPanel;
31
import org.gvsig.app.gui.panels.crs.ISelectCrsPanel;
32
import org.gvsig.fmap.dal.DALLocator;
33
import org.gvsig.fmap.dal.DataManager;
34
import org.gvsig.fmap.dal.DataServerExplorer;
35
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
36
import org.gvsig.fmap.dal.feature.EditableFeatureType;
37
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
38
import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory;
39
import org.gvsig.fmap.geom.DataTypes;
40
import org.gvsig.fmap.geom.Geometry;
41
import org.gvsig.gui.beans.wizard.panel.NotContinueWizardException;
42
import org.gvsig.gui.beans.wizard.panel.OptionPanel;
43
import org.gvsig.i18n.Messages;
44
import org.gvsig.newlayer.NewLayerService;
45
import org.gvsig.newlayer.NewLayerWizard;
46
import org.gvsig.tools.dataTypes.DataType;
47
import org.gvsig.tools.swing.api.ToolsSwingLocator;
48
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
49
import org.slf4j.Logger;
50
import org.slf4j.LoggerFactory;
51

  
52
public class FeatureTypePanel extends JPanel implements OptionPanel {
53

  
54
	/**
55
	 * 
56
	 */
57
	private static final long serialVersionUID = 263541873998597624L;
58
	private NewLayerWizard wizard;
59
	private static final Logger logger = LoggerFactory
60
			.getLogger(FeatureTypePanel.class);
61

  
62
	private JLabel jLabel = null;
63
	private JScrollPane jScrollPane = null;
64
	protected JTable jTable = null;
65
	private JPanel jPanelEast = null;
66
	private JButton jButtonAddField = null;
67
	private JButton jButtonDeleteField = null;
68
	protected int MAX_FIELD_LENGTH = 254;
69
	private List removedFields;
70

  
71
	private DataServerExplorer explorer = null;
72

  
73
	public FeatureTypePanel(NewLayerWizard wizard) {
74
		this.wizard = wizard;
75
		removedFields = new ArrayList<String>();
76
	}
77

  
78
	private void initializeComponents() {
79
		jLabel = new JLabel();
80
		jLabel.setText(Messages.getText("define_fields"));
81
		this.setLayout(new BorderLayout(5, 5));
82
		this.setSize(new java.awt.Dimension(499, 232));
83
		this.add(jLabel, java.awt.BorderLayout.NORTH);
84
		this.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
85
		this.add(getJPanelEast(), java.awt.BorderLayout.EAST);
86

  
87
	}
88

  
89
	/**
90
	 * This method initializes jScrollPane
91
	 * 
92
	 * @return javax.swing.JScrollPane
93
	 */
94
	private JScrollPane getJScrollPane() {
95
		if (jScrollPane == null) {
96
			jScrollPane = new JScrollPane();
97
			jScrollPane.setViewportView(getJTable());
98
		}
99
		return jScrollPane;
100
	}
101

  
102
	/**
103
	 * This method initializes jTable
104
	 * 
105
	 * @return javax.swing.JTable
106
	 */
107
	private JTable getJTable() {
108
		if (jTable == null) {
109
			jTable = new JTable();
110

  
111
			DefaultTableModel tm = (DefaultTableModel) jTable.getModel();
112
			tm.addColumn(Messages.getText("field"));
113

  
114
			tm.addColumn(Messages.getText("type"));
115
			tm.addColumn(Messages.getText("length"));
116
			tm.addColumn(Messages.getText("geomType"));
117
			tm.addColumn(Messages.getText("geomSubtype"));
118
			tm.addColumn(Messages.getText("CRS"));
119
			tm.addColumn(Messages.getText("primaryKey"));
120
			tm.addColumn(Messages.getText("mandatory"));
121

  
122
			// Ask to be notified of selection changes.
123
			ListSelectionModel rowSM = jTable.getSelectionModel();
124
			rowSM.addListSelectionListener(new ListSelectionListener() {
125
				public void valueChanged(ListSelectionEvent e) {
126
					// Ignore extra messages.
127
					if (e.getValueIsAdjusting())
128
						return;
129

  
130
					ListSelectionModel lsm = (ListSelectionModel) e.getSource();
131
					if (lsm.isSelectionEmpty()) {
132
						// no rows are selected
133
						jButtonDeleteField.setEnabled(false);
134
					} else {
135
						jButtonDeleteField.setEnabled(true);
136
					}
137
				}
138
			});
139
			jTable.getColumn(Messages.getText("field")).setWidth(180);
140

  
141
			// Rellenado de la tabla
142
			EditableFeatureType featureType = this.wizard.getService()
143
					.getFeatureType();
144
			if (featureType != null) {
145
				int row = 0;
146
				tm.setRowCount(featureType.size());
147
				Iterator it = featureType.iterator();
148
				while (it.hasNext()) {
149
					FeatureAttributeDescriptor descriptor = (FeatureAttributeDescriptor) it
150
							.next();
151
					tm.setValueAt(descriptor.getName(), row, 0);
152
					tm.setValueAt(descriptor.getType(), row, 1);
153
					tm.setValueAt(descriptor.getSize(), row, 2);
154
					tm.setValueAt(descriptor.getGeometryType(), row, 3);
155
					tm.setValueAt(descriptor.getGeometrySubType(), row, 4);
156
					tm.setValueAt(descriptor.getSRS(), row, 5);
157
					tm.setValueAt(descriptor.isPrimaryKey(), row, 6);
158
					tm.setValueAt(descriptor.isMandatory(), row, 7);
159
					row++;
160
				}
161
			}
162

  
163
		}
164
		jTable.setEnabled(allowEditableFeatureType());
165
		return jTable;
166
	}
167

  
168
	/**
169
	 * This method initializes jPanelWest
170
	 * 
171
	 * @return javax.swing.JPanel
172
	 */
173
	private JPanel getJPanelEast() {
174
		if (jPanelEast == null) {
175
			jPanelEast = new JPanel();
176
			jPanelEast.setLayout(null);
177
			jPanelEast.setPreferredSize(new java.awt.Dimension(170, 100));
178
			jPanelEast.add(getJButtonAddField(), null);
179
			jPanelEast.add(getJButtonDeleteField(), null);
180
		}
181
		return jPanelEast;
182
	}
183

  
184
	/**
185
	 * This method initializes jButtonAddField
186
	 * 
187
	 * @return javax.swing.JButton
188
	 */
189
	private JButton getJButtonAddField() {
190
		if (jButtonAddField == null) {
191
			jButtonAddField = new JButton();
192
			jButtonAddField.setText(Messages.getText("add_field"));
193
			jButtonAddField.setLocation(new java.awt.Point(7, 5));
194
			jButtonAddField.setSize(new java.awt.Dimension(145, 23));
195
			jButtonAddField.setPreferredSize(new java.awt.Dimension(100, 26));
196
			jButtonAddField
197
					.addActionListener(new java.awt.event.ActionListener() {
198
						public void actionPerformed(java.awt.event.ActionEvent e) {
199
							DefaultTableModel tm = (DefaultTableModel) jTable
200
									.getModel();
201

  
202
							// Figure out a suitable field name
203
							ArrayList fieldNames = new ArrayList();
204
							for (int i = 0; i < jTable.getRowCount(); i++) {
205
								fieldNames.add(tm.getValueAt(i, 0));
206
							}
207
							String[] currentFieldNames = (String[]) fieldNames
208
									.toArray(new String[0]);
209
							String newField = Messages.getText("field")
210
									.replaceAll(" +", "_");
211
							int index = 0;
212
							for (int i = 0; i < currentFieldNames.length; i++) {
213
								if (currentFieldNames[i].startsWith(newField)) {
214
									try {
215
										index = Integer
216
												.parseInt(currentFieldNames[i]
217
														.replaceAll(newField,
218
																""));
219
									} catch (Exception ex) { /* we don't care */
220
									}
221
								}
222
							}
223
							String newFieldName = newField + (++index);
224

  
225
							// Esto lo a?ado aqu? porque si no tiene registros,
226
							// no hace caso. (Por eso no
227
							// lo pongo en getJTable()
228
							TableColumn typeColumn = jTable.getColumnModel()
229
									.getColumn(1);
230
							DataManager dataManager = DALLocator
231
									.getDataManager();
232
							ComboModelDataType model = new ComboModelDataType(
233
									dataManager.getDataTypes());
234
							JComboBox comboBox = new JComboBox(model);
235
							typeColumn.setCellEditor(new DefaultCellEditor(
236
									comboBox));
237

  
238
							TableColumn widthColumn = jTable.getColumnModel()
239
									.getColumn(2);
240

  
241
							TableColumn geomTypeColumn = jTable
242
									.getColumnModel().getColumn(3);
243
							ComboModelGeomType geomTypeModel = new ComboModelGeomType(
244
									getGeomTypes());
245
							JComboBox geomTypeComboBox = new JComboBox(
246
									geomTypeModel);
247
							geomTypeColumn.setCellEditor(new DefaultCellEditor(
248
									geomTypeComboBox));
249

  
250
							TableColumn geomSubTypeColumn = jTable
251
									.getColumnModel().getColumn(4);
252
							ComboModelGeomType geomSubTypeModel = new ComboModelGeomType(
253
									getGeomSubtypes());
254
							JComboBox geomSubTypeComboBox = new JComboBox(
255
									geomSubTypeModel);
256
							geomSubTypeColumn
257
									.setCellEditor(new DefaultCellEditor(
258
											geomSubTypeComboBox));
259

  
260
							TableColumn crsColumn = jTable.getColumnModel()
261
									.getColumn(5);
262
							crsColumn.setCellEditor(new ButtonEditor(
263
									new JCheckBox()));
264
							ButtonRenderer crsButtonRenderer = new ButtonRenderer();
265
							crsColumn.setCellRenderer(crsButtonRenderer);
266

  
267
							TableColumn primaryKeyColumn = jTable
268
									.getColumnModel().getColumn(6);
269
							JCheckBox primaryKeyCheckBox = new JCheckBox();
270
							primaryKeyColumn
271
									.setCellEditor(new DefaultCellEditor(
272
											primaryKeyCheckBox));
273
							CheckBoxRenderer primaryKeyCheckBoxRenderer = new CheckBoxRenderer();
274
							primaryKeyColumn
275
									.setCellRenderer(primaryKeyCheckBoxRenderer);
276

  
277
							TableColumn mandatoryColumn = jTable
278
									.getColumnModel().getColumn(7);
279
							JCheckBox mandatoryCheckBox = new JCheckBox();
280
							mandatoryColumn
281
									.setCellEditor(new DefaultCellEditor(
282
											mandatoryCheckBox));
283
							CheckBoxRenderer mandatoryCheckBoxRenderer = new CheckBoxRenderer();
284
							mandatoryColumn
285
									.setCellRenderer(mandatoryCheckBoxRenderer);
286

  
287
							// Add a new row
288
							Object[] newRow = new Object[tm.getColumnCount()];
289
							newRow[0] = newFieldName;
290
							newRow[1] = model.getElementAt(0);
291
							newRow[2] = "20";
292
							newRow[3] = geomTypeModel.getElementAt(0);
293
							newRow[4] = geomSubTypeModel.getElementAt(0);
294
							// Por defecto, la proyeccion de la vista
295
							newRow[5] = wizard.getService().getMapContext()
296
									.getProjection();
297
							newRow[6] = primaryKeyCheckBox.isSelected();
298
							newRow[7] = mandatoryCheckBox.isSelected();
299
							tm.addRow(newRow);
300
						}
301
					});
302

  
303
		}
304
		jButtonAddField.setEnabled(allowEditableFeatureType());
305
		return jButtonAddField;
306
	}
307
	
308
	private boolean allowEditableFeatureType(){
309
		NewLayerService service = this.wizard.getService();
310
		DataManager dataManager = DALLocator.getDataManager();
311
		FeatureStoreProviderFactory factory = (FeatureStoreProviderFactory) dataManager.getStoreProviderFactory(service.getStoreName());
312
		if (factory.allowEditableFeatureType()==FeatureStoreProviderFactory.NO) {
313
			return false;
314
		}
315
		return true;
316
	}
317

  
318
	private class ComboItemDataType {
319
		private DataType dataType;
320

  
321
		public ComboItemDataType(DataType dataType) {
322
			this.dataType = dataType;
323
		}
324

  
325
		@Override
326
		public String toString() {
327
			return this.dataType.getName();
328
		}
329
	}
330

  
331
	private class ComboModelDataType implements ComboBoxModel {
332

  
333
		private List<ComboItemDataType> dataTypes;
334
		private ComboItemDataType selected;
335

  
336
		public ComboModelDataType(List<DataType> dataTypes) {
337
			this.dataTypes = new ArrayList<ComboItemDataType>();
338
			for (Iterator iterator = dataTypes.iterator(); iterator.hasNext();) {
339
				DataType dataType = (DataType) iterator.next();
340
				this.dataTypes.add(new ComboItemDataType(dataType));
341
			}
342
		}
343

  
344
		public void addListDataListener(ListDataListener arg0) {
345
			// DO NOTHING
346
		}
347

  
348
		public Object getElementAt(int arg0) {
349
			return this.dataTypes.get(arg0);
350
		}
351

  
352
		public int getSize() {
353
			return this.dataTypes.size();
354
		}
355

  
356
		public void removeListDataListener(ListDataListener arg0) {
357
			// DO NOTHING
358
		}
359

  
360
		public Object getSelectedItem() {
361
			return this.selected;
362
		}
363

  
364
		public void setSelectedItem(Object anItem) {
365
			this.selected = (ComboItemDataType) anItem;
366
		}
367

  
368
	}
369

  
370
	class ButtonRenderer extends JButton implements TableCellRenderer {
371

  
372
		/**
373
		 * 
374
		 */
375
		private static final long serialVersionUID = -573793294070515376L;
376

  
377
		public ButtonRenderer() {
378
			setOpaque(true);
379
		}
380

  
381
		public Component getTableCellRendererComponent(JTable table,
382
				Object value, boolean isSelected, boolean hasFocus, int row,
383
				int column) {
384
			if (isSelected) {
385
				setForeground(table.getSelectionForeground());
386
				setBackground(table.getSelectionBackground());
387
			} else {
388
				setForeground(table.getForeground());
389
				setBackground(UIManager.getColor("Button.background"));
390
			}
391
			setText((value == null) ? "" : ((IProjection) value).getFullCode());
392
			return this;
393
		}
394
	}
395

  
396
	class ButtonEditor extends DefaultCellEditor {
397
		/**
398
		 * 
399
		 */
400
		private static final long serialVersionUID = -2820892672026188802L;
401

  
402
		protected JButton button;
403

  
404
		private String label;
405

  
406
		private boolean isPushed;
407

  
408
		private Object value;
409

  
410
		public ButtonEditor(JCheckBox checkBox) {
411
			super(checkBox);
412
			button = new JButton();
413
			button.setOpaque(true);
414
			button.addActionListener(new ActionListener() {
415
				public void actionPerformed(ActionEvent e) {
416
					fireEditingStopped();
417
				}
418
			});
419
		}
420

  
421
		public Component getTableCellEditorComponent(JTable table,
422
				Object value, boolean isSelected, int row, int column) {
423
			if (isSelected) {
424
				button.setForeground(table.getSelectionForeground());
425
				button.setBackground(table.getSelectionBackground());
426
			} else {
427
				button.setForeground(table.getForeground());
428
				button.setBackground(table.getBackground());
429
			}
430
			label = (value == null) ? "" : ((IProjection) value).getFullCode();// .toString();
431
			button.setText(label);
432
			isPushed = true;
433
			this.value = value;
434
			return button;
435
		}
436

  
437
		public Object getCellEditorValue() {
438
			IProjection curProj = (IProjection) this.value;
439
			if (isPushed) {
440
				ISelectCrsPanel csSelect = CRSSelectPanel.getUIFactory()
441
						.getSelectCrsPanel(curProj, true);
442
				WindowManager wm = ToolsSwingLocator.getWindowManager();
443
				wm.showWindow((JPanel) csSelect, "Projection",
444
						WindowManager.MODE.DIALOG);
445
				curProj = csSelect.getProjection();
446
			}
447
			isPushed = false;
448
			return curProj;
449
		}
450

  
451
		public boolean stopCellEditing() {
452
			isPushed = false;
453
			return super.stopCellEditing();
454
		}
455

  
456
		protected void fireEditingStopped() {
457
			super.fireEditingStopped();
458
		}
459
	}
460

  
461
	private class ComboItemGeomType {
462
		private int type;
463
		private String name;
464

  
465
		public ComboItemGeomType(String name, int type) {
466
			this.type = type;
467
			this.name = name;
468
		}
469

  
470
		@Override
471
		public String toString() {
472
			return this.name;
473
		}
474
	}
475

  
476
	private class ComboModelGeomType implements ComboBoxModel {
477

  
478
		private List<ComboItemGeomType> geomTypes;
479
		private ComboItemGeomType selected;
480

  
481
		public ComboModelGeomType(List<ComboItemGeomType> geomTypes) {
482
			this.geomTypes = geomTypes;
483
		}
484

  
485
		public void addListDataListener(ListDataListener arg0) {
486
			// DO NOTHING
487
		}
488

  
489
		public Object getElementAt(int arg0) {
490
			return this.geomTypes.get(arg0);
491
		}
492

  
493
		public int getSize() {
494
			return this.geomTypes.size();
495
		}
496

  
497
		public void removeListDataListener(ListDataListener arg0) {
498
			// DO NOTHING
499
		}
500

  
501
		public Object getSelectedItem() {
502
			return this.selected;
503
		}
504

  
505
		public void setSelectedItem(Object anItem) {
506
			this.selected = (ComboItemGeomType) anItem;
507
		}
508

  
509
	}
510

  
511
	private List<ComboItemGeomType> getGeomTypes() {
512
		List<ComboItemGeomType> geomTypes = new ArrayList<ComboItemGeomType>();
513
		geomTypes
514
				.add(new ComboItemGeomType("GEOMETRY", Geometry.TYPES.GEOMETRY));
515
		geomTypes.add(new ComboItemGeomType("POINT", Geometry.TYPES.POINT));
516
		geomTypes.add(new ComboItemGeomType("CURVE", Geometry.TYPES.CURVE));
517
		geomTypes.add(new ComboItemGeomType("SURFACE", Geometry.TYPES.SURFACE));
518
		geomTypes.add(new ComboItemGeomType("SOLID", Geometry.TYPES.SOLID));
519
		geomTypes.add(new ComboItemGeomType("AGGREGATE",
520
				Geometry.TYPES.AGGREGATE));
521
		geomTypes.add(new ComboItemGeomType("MULTIPOINT",
522
				Geometry.TYPES.MULTIPOINT));
523
		geomTypes.add(new ComboItemGeomType("MULTICURVE",
524
				Geometry.TYPES.MULTICURVE));
525
		geomTypes.add(new ComboItemGeomType("MULTISURFACE",
526
				Geometry.TYPES.MULTISURFACE));
527
		geomTypes.add(new ComboItemGeomType("MULTISOLID",
528
				Geometry.TYPES.MULTISOLID));
529

  
530
		return geomTypes;
531
	}
532

  
533
	private List<ComboItemGeomType> getGeomSubtypes() {
534
		List<ComboItemGeomType> geomSubtypes = new ArrayList<ComboItemGeomType>();
535
		geomSubtypes.add(new ComboItemGeomType("GEOM2D",
536
				Geometry.SUBTYPES.GEOM2D));
537
		geomSubtypes.add(new ComboItemGeomType("GEOM2DM",
538
				Geometry.SUBTYPES.GEOM2DM));
539
		geomSubtypes.add(new ComboItemGeomType("GEOM3D",
540
				Geometry.SUBTYPES.GEOM3D));
541
		geomSubtypes.add(new ComboItemGeomType("GEOM3DM",
542
				Geometry.SUBTYPES.GEOM3DM));
543
		geomSubtypes.add(new ComboItemGeomType("UNKNOWN",
544
				Geometry.SUBTYPES.UNKNOWN));
545
		return geomSubtypes;
546
	}
547

  
548
	class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
549

  
550
		/**
551
		 * 
552
		 */
553
		private static final long serialVersionUID = 5093448776058027505L;
554

  
555
		CheckBoxRenderer() {
556
			setHorizontalAlignment(JLabel.CENTER);
557
		}
558

  
559
		public Component getTableCellRendererComponent(JTable table,
560
				Object value, boolean isSelected, boolean hasFocus, int row,
561
				int column) {
562
			if (isSelected) {
563
				setForeground(table.getSelectionForeground());
564
				setBackground(table.getSelectionBackground());
565
			} else {
566
				setForeground(table.getForeground());
567
				setBackground(table.getBackground());
568
			}
569
			setSelected((value != null && ((Boolean) value).booleanValue()));
570
			return this;
571
		}
572
	}
573

  
574
	/**
575
	 * This method initializes jButton
576
	 * 
577
	 * @return javax.swing.JButton
578
	 */
579
	private JButton getJButtonDeleteField() {
580
		if (jButtonDeleteField == null) {
581
			jButtonDeleteField = new JButton();
582
			jButtonDeleteField.setText(Messages.getText("delete_field"));
583
			jButtonDeleteField.setLocation(new java.awt.Point(7, 33));
584
			jButtonDeleteField.setSize(new java.awt.Dimension(145, 23));
585
			jButtonDeleteField.setEnabled(false);
586
			jButtonDeleteField
587
					.addActionListener(new java.awt.event.ActionListener() {
588
						public void actionPerformed(java.awt.event.ActionEvent e) {
589
							int[] selecteds = jTable.getSelectedRows();
590
							DefaultTableModel tm = (DefaultTableModel) jTable
591
									.getModel();
592

  
593
							for (int i = selecteds.length - 1; i >= 0; i--) {
594
								removedFields.add((String) tm.getValueAt(i, 0));
595
								tm.removeRow(selecteds[i]);
596
							}
597
						}
598
					});
599
		}
600
		jButtonDeleteField.setEnabled(allowEditableFeatureType());
601
		return jButtonDeleteField;
602
	}
603

  
604
	public String getPanelTitle() {
605
		return Messages.getText("fields_definitions");
606
	}
607

  
608
	public void nextPanel() throws NotContinueWizardException {
609
		if (allowEditableFeatureType()){
610
			fillFeatureType();
611
		}
612
	}
613

  
614
	private void fillFeatureType() {
615
		/*
616
		 * Coge los datos del formulario y los guarda en
617
		 * this.service.getFeatureType()
618
		 */
619
		NewLayerService service = this.wizard.getService();
620
		EditableFeatureType featureType = service.getFeatureType();
621

  
622
		for (Iterator iterator = removedFields.iterator(); iterator.hasNext();) {
623
			String name = (String) iterator.next();
624
			featureType.remove(name);
625
		}
626
		removedFields.clear();
627

  
628
		DefaultTableModel tm = (DefaultTableModel) jTable.getModel();
629
		for (int i = 0; i < tm.getRowCount(); i++) {
630
			DataType dataType = ((ComboItemDataType) tm.getValueAt(i, 1)).dataType;
631

  
632
			int fieldLength = Integer.parseInt((String) tm.getValueAt(i, 2));
633
			// TODO: HACERLO BIEN
634
			if (dataType.getType() == DataTypes.DOUBLE) {
635
				fieldLength = 5;
636
			}
637
			// FIXME: Arreglar lo que pasa si en el siguiente panel volvemos
638
			// hacia atras, y en este volvemos a ir hacia adelante
639
			String fieldName = (String) tm.getValueAt(i, 0);
640
			EditableFeatureAttributeDescriptor attrDescriptor = (EditableFeatureAttributeDescriptor) featureType
641
					.getAttributeDescriptor(fieldName);
642
			if (attrDescriptor != null) {
643
				featureType.remove(attrDescriptor);
644
			}
645
			EditableFeatureAttributeDescriptor efad1 = featureType.add(
646
					(String) tm.getValueAt(i, 0), dataType.getType(),
647
					fieldLength);
648
			if (dataType.getType() == DataTypes.GEOMETRY) {
649
				efad1.setGeometryType(((ComboItemGeomType) tm.getValueAt(i, 3)).type);
650
				efad1.setGeometrySubType(((ComboItemGeomType) tm.getValueAt(i,
651
						4)).type);
652
				efad1.setIsPrimaryKey(((Boolean) tm.getValueAt(i, 6))
653
						.booleanValue());
654
				efad1.setAllowNull(!((Boolean) tm.getValueAt(i, 7))
655
						.booleanValue());
656
				efad1.setSRS((IProjection) tm.getValueAt(i, 5));
657
			}
658
		}
659
	}
660

  
661
	public void lastPanel() {
662
		// TODO Auto-generated method stub
663
		logger.info("FeatureTypePanel: lastPanel");
664
	}
665

  
666
	public void updatePanel() {
667
		initializeComponents();
668

  
669
	}
670

  
671
	public JPanel getJPanel() {
672
		return this;
673
	}
674

  
675
}
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/org.gvsig.newlayer.lib.impl/src/main/java/org/gvsig/newlayer/impl/NewLayerDefaultImplLibrary.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.newlayer.impl;
23

  
24
import org.gvsig.newlayer.NewLayerLibrary;
25
import org.gvsig.newlayer.NewLayerLocator;
26
import org.gvsig.tools.library.AbstractLibrary;
27
import org.gvsig.tools.library.LibraryException;
28

  
29
/**
30
 * Library for default implementation initialization and configuration.
31
 * 
32
 * @author gvSIG team
33
 * @version $Id$
34
 */
35
public class NewLayerDefaultImplLibrary extends AbstractLibrary {
36
    
37
    @Override
38
    public void doRegistration() {
39
        registerAsImplementationOf(NewLayerLibrary.class);
40
    }
41

  
42
    @Override
43
    protected void doInitialize() throws LibraryException {
44
        NewLayerLocator.registerManager(DefaultNewLayerManager.class);
45
    }
46

  
47
    @Override
48
    protected void doPostInitialize() throws LibraryException {
49
        // Do nothing
50
    }
51

  
52
}
tags/v2_0_0_Build_2042/libraries/org.gvsig.newlayer/org.gvsig.newlayer.lib/org.gvsig.newlayer.lib.impl/src/main/java/org/gvsig/newlayer/impl/TypeSelectorPanel.java
1
package org.gvsig.newlayer.impl;
2

  
3
import java.awt.BorderLayout;
4

  
5
import javax.swing.JList;
6
import javax.swing.JPanel;
7
import javax.swing.JScrollPane;
8
import javax.swing.ListModel;
9
import javax.swing.event.ListSelectionEvent;
10
import javax.swing.event.ListSelectionListener;
11

  
12
import org.gvsig.gui.beans.wizard.panel.NotContinueWizardException;
13
import org.gvsig.gui.beans.wizard.panel.OptionPanel;
14
import org.gvsig.newlayer.NewLayerService;
15
import org.gvsig.newlayer.NewLayerWizard;
16

  
17
public class TypeSelectorPanel extends JPanel implements OptionPanel{
18
	
19
	/**
20
	 * 
21
	 */
22
	private static final long serialVersionUID = 419873365484240927L;
23
	private NewLayerWizard wizard;
24
	private String currentType;
25

  
26
	public TypeSelectorPanel(NewLayerWizard wizard){
27
		this.wizard = wizard;
28
		initializeComponents();
29
	}
30

  
31
	public String getPanelTitle() {
32
		return "Type selector panel";
33
	}
34

  
35
	public void nextPanel() throws NotContinueWizardException {
36
		if (currentType!=null){
37
			this.wizard.setType(currentType);
38
			return;
39
		}
40
		throw new NotContinueWizardException("", null, false);
41
	}
42

  
43
	public void lastPanel() {
44
		// do nothing
45
		
46
	}
47

  
48
	public void updatePanel() {
49
		initializeComponents();
50
	}
51

  
52
	public JPanel getJPanel() {
53
		return this;
54
	}
55

  
56
    private void initializeComponents() {
57
        this.setLayout(new BorderLayout());
58

  
59
        JList types = new JList();     
60
        ListModel model = new org.gvsig.utils.DefaultListModel(this.getService().getTypes());
61
        types.setModel(model);
62
        
63
        types.addListSelectionListener(new ListSelectionListener() {
64
			public void valueChanged(ListSelectionEvent e) {
65
				if (e.getValueIsAdjusting() == false) {
66
					JList list = (JList) e.getSource();
67
					
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff