Revision 40263

View differences:

tags/extensions/org.gvsig.mkmvnproject/2.0/build.xml
1
<project name="gvSIG-build-config" default="mvn-install" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
2

  
3
	<property name="maven.folder" 
4
		location="${basedir}/src/main/resources/maven" />
5
	
6
	<!-- Maven ant tasks registration -->
7
	<path id="maven-ant-tasks.classpath" 
8
		path="${maven.folder}/lib/maven-ant-tasks-2.0.10.jar" />
9
	<typedef resource="org/apache/maven/artifact/ant/antlib.xml" 
10
		uri="antlib:org.apache.maven.artifact.ant"
11
		classpathref="maven-ant-tasks.classpath" />
12
	
13
	<!-- Maven targets -->
14
	<macrodef name="maven">
15
		<attribute name="arg" />
16
		<sequential>
17
			<echo>mvn @{arg}</echo>
18
			<artifact:mvn mavenHome="${maven.folder}" fork="true"
19
				failonerror="true" maxmemory="256M">
20
				<arg line="@{arg}" />
21
				<jvmarg value="-XX:MaxPermSize=64M" />
22
			</artifact:mvn>
23
		</sequential>
24
	</macrodef>
25

  
26
	<!-- Utility targets -->
27
	<target name="cancel">
28
		<fail>User canceled</fail>
29
	</target>
30

  
31
	<target name="mvn-clean" description="Cleans all artifacts">
32
		<maven arg="clean" />
33
	</target>
34

  
35
	<target name="mvn-compile" description="Compiles all source code">
36
		<maven arg="compile" />
37
	</target>
38

  
39
	<target name="mvn-test" description="Launches unit tests">
40
		<maven arg="test" />
41
	</target>
42

  
43
	<target name="mvn-install" description="Compiles and installs">
44
		<maven arg="install" />
45
	</target>
46
	
47
	<target name="mvn-install-ignore-tests" description="Compiles and installs and ignore tests">
48
	        <maven arg="install -Dmaven.test.failure.ignore" />
49
	    </target>
50
	
51
	<target name="mvn-install-without-tests"
52
		description="Compiles and installs without launching tests">
53
		<maven arg="-Dmaven.test.skip=true install" />
54
	</target>
55

  
56
	<target name="mvn-reinstall" 
57
		description="Performs a clean install">
58
		<maven arg="clean install" />
59
	</target>
60

  
61
	<target name="mvn-reinstall-without-tests"
62
		description="Performs a clean install without launching tests">
63
		<maven arg="-Dmaven.test.skip=true clean install" />
64
	</target>
65

  
66
	<target name="mvn-deploy" 
67
		description="Compiles, installs and deploys">
68
		<maven arg="deploy" />
69
	</target>
70

  
71
	<target name="mvn-deploy-release" 
72
			description="Compiles, installs and deploys for release">
73
		<maven arg="-P release deploy" />
74
	</target>
75

  
76
	<target name="mvn-eclipse-clean"
77
		description="Cleans the maven generated eclipse project files">
78
		<maven arg="eclipse:clean" />
79
	</target>
80

  
81
	<target name="mvn-eclipse-eclipse"
82
		description="Generates an eclipse project configuration from the pom.xml">
83
		<maven arg="eclipse:eclipse" />
84
	</target>
85

  
86
	<target name="mvn-site"
87
		description="Generates the project site documentation">
88
		<maven arg="site" />
89
	</target>
90
</project>
0 91

  
tags/extensions/org.gvsig.mkmvnproject/2.0/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/scripts</directory>
10
			<outputDirectory>${extension.install.dir.name}/scripts</outputDirectory>
11
		</fileSet>
12
		<fileSet>
13
			<directory>src/main/resources/compilationcheck</directory>
14
			<outputDirectory>${extension.install.dir.name}/compilationcheck</outputDirectory>
15
		</fileSet>
16
		<fileSet>
17
			<directory>src/main/resources/config</directory>
18
			<outputDirectory>${extension.install.dir.name}</outputDirectory>
19
		</fileSet>
20
		<fileSet>
21
			<directory>target/templates-zips</directory>
22
			<outputDirectory>${extension.install.dir.name}/templates
23
			</outputDirectory>
24
		</fileSet>
25
	</fileSets>
26
    <files>
27
        <file>
28
            <source>package.info</source>
29
            <outputDirectory>${extension.install.dir.name}
30
            </outputDirectory>
31
        </file>
32
    </files>
33
	<dependencySets>
34
		<dependencySet>
35
			<outputDirectory>${extension.install.dir.name}/${library-dir}
36
			</outputDirectory>
37
			<includes>
38
				<include>org.gvsig:org.gvsig.mkmvnproject</include>
39
				<include>ant-contrib:ant-contrib</include>
40
				<include>org.apache.ant:ant</include>
41
				<include>org.apache.ant:ant-launcher</include>
42
				<include>org.apache.ant:ant-nodeps</include>
43
                <include>org.apache.ant:ant-apache-oro</include>
44
				<include>com.sardak:antform</include>
45
				<include>org.tigris.antelope:antelopetasks</include>				
46
			</includes>
47
		</dependencySet>
48
	</dependencySets>
49
</assembly>
0 50

  
tags/extensions/org.gvsig.mkmvnproject/2.0/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Mon Nov 05 17:09:48 CET 2012
3
buildNumber=2071
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/compilationcheck/DummyClass.java
1
public class DummyClass extends Exception {
2
    
3
    public DummyClass() {
4
        super("X");
5
        method();
6
    }
7
    
8
    public void method() {
9
        System.out.println("Nothing to do here!");
10
    }
11

  
12
    
13
}
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/config/text.properties
1
_Java_compiler_not_found_near_current_JRE_nor_in_JAVA_HOME=No se ha encontrado compilador Java junto a JRE actual ni en la ubicaci?n indicada por JAVA_HOME
2
_Continue_question=?Desea continuar?
3
_Searching_JDK=Buscando JDK
4
_gvSIG_is_running_on_JDK=gvSIG se est? ejecutando sobre un JDK
5
_gvSIG_is_not_running_on_JDK=gvSIG no se est? ejecutando sobre un JDK
6
_JAVA_HOME_is_not_set=La variable de entorno JAVA_HOME no est? declarada
7
_JAVA_HOME_is_set_to=La variable de entorno JAVA_HOME tiene el valor
8
_You_might_need_to_run_gvSIG_on_JDK_or_set_JAVA_HOME_properly=Es probable que necesite ejecutar gvSIG sobre un JDK o establecer JAVA_HOME correctamente
9
_Visit_gvSIG_website_for_details=Visite la p?gina web de gvSIG para m?s informaci?n
10
_Detected_settings=Configuraci?n detectada
11
_On_Linux_make_JAVA_HOME_point_to_JDK_1_5_higher=En Linux, aseg?rese de que la variable de entorno JAVA_HOME apunta a un JDK 1.5 ? superior
12
_On_Windows_run_JDK_use_devel_exe=En Windows, aseg?rese de que gvSIG se ejecuta sobre un JDK y use 'gvsig-desktop-devel.exe' para iniciarlo
13
_Make_maven_project_plugin=Complemento para crear proyecto maven
14
_Requirements_for_this_plugin=Requisitos para este plugin
15
_Mandatory_platform_properties_file_not_found=No se ha encontrado el archivo necesario: [USUARIO]/.gvsig.platform.properties
16
_Use_this_text_editor_to_write_it=Use este editor de texto para crearlo
17
_Cancel=Cancelar
18
_Suggested=Ejemplo
19
_Accept=Aceptar
20
_Save=Guardar
21
_Checking_platform_properties=Comprobando propiedades del sistema
22
_There_are_unsaved_changes_Continue_question=Hay cambios no guardados. ?Desea continuar?
23
_Not_saved=No se ha guardado
24
_Unable_to_store_file=No se pudo guardar archivo
25
_Error=Error
26

  
27

  
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/config/text_en.properties
1
_Java_compiler_not_found_near_current_JRE_nor_in_JAVA_HOME=Java compiler not found near current JRE nor in location pointed by JAVA_HOME
2
_Continue_question=Would you like to continue?
3
_Searching_JDK=Searching JDK
4
_gvSIG_is_running_on_JDK=gvSIG is running on JDK
5
_gvSIG_is_not_running_on_JDK=gvSIG is not running on JDK
6
_JAVA_HOME_is_not_set=Environment variable JAVA_HOME is not set
7
_JAVA_HOME_is_set_to=Environment variable JAVA_HOME is set to
8
_You_might_need_to_run_gvSIG_on_JDK_or_set_JAVA_HOME_properly=You might need to run gvSIG on JDK or set JAVA_HOME properly
9
_Visit_gvSIG_website_for_details=Visit gvSIG website for details
10
_Detected_settings=Detected settings
11
_On_Linux_make_JAVA_HOME_point_to_JDK_1_5_higher=On Linux, make sure the environment variable JAVA_HOME points at JDK 1.5 or higher
12
_On_Windows_run_JDK_use_devel_exe=On Windows, make sure you are running gvSIG on a JDK and start it with 'gvsig-desktop-devel.exe'
13
_Make_maven_project_plugin=Make maven project plugin
14
_Requirements_for_this_plugin=Requirements for this plugin
15
_Mandatory_platform_properties_file_not_found=Mandatory file not found: [USER]/.gvsig.platform.properties
16
_Use_this_text_editor_to_write_it=Use this text editor to create it
17
_Cancel=Cancel
18
_Suggested=Example
19
_Accept=Accept
20
_Save=Save
21
_Checking_platform_properties=Checking platform properties
22
_There_are_unsaved_changes_Continue_question=There are unsaved changes. Continue anyway?
23
_Not_saved=Not saved
24
_Unable_to_store_file=Unable to store file
25
_Error=Error
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/config/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<plugin-config>
3
	<depends plugin-name="org.gvsig.app" />
4
	<resourceBundle name="text"/>
5
	<libraries library-dir="lib"/>
6
	<extensions>
7
		<extension class-name="org.gvsig.mkmvnproject.MakeMavenProjectExtension"
8
			description=""
9
			active="true"
10
			priority="1">
11
			<menu text="tools/Development/Create Plugin"
12
				position="7009080"
13
				action-command="gvSIGProjectWizard"/>
14
		</extension>		
15
	</extensions>
16
</plugin-config>
0 17

  
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/scripts/landregistryviewer.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project name="gvSIG-make-maven-project" default="mkproject-build" basedir=".">
3

  
4
	<!-- Get current file location folder -->
5
	<dirname property="gvSIG-make-maven-project.basedir" file="${ant.file.gvSIG-make-maven-project}" />
6

  
7
	<!-- Libraries folder in the gvSIG extension -->
8
	<property name="lib.folder" location="${gvSIG-make-maven-project.basedir}/../lib" />
9
	<!-- Templates folder in the gvSIG extension -->
10
	<property name="templates.folder" location="${gvSIG-make-maven-project.basedir}/../templates" />
11

  
12
	<property name="gvsiglogo" location="${basedir}/../gvSIG.png" />
13

  
14
	<!-- Load some ant external utility tasks -->
15
	<property name="antform.lib" location="${lib.folder}/antform-2.0.jar" />
16
	<property name="antcontrib.lib" location="${lib.folder}/ant-contrib-1.0b3.jar" />
17
	<property name="antelope.lib" location="${lib.folder}/antelopetasks-3.2.10.jar" />
18

  
19
	<taskdef resource="net/sf/antcontrib/antlib.xml">
20
		<classpath>
21
			<pathelement location="${antcontrib.lib}" />
22
		</classpath>
23
	</taskdef>
24

  
25
	<taskdef name="antform" classname="com.sardak.antform.AntForm" classpath="${antform.lib}" />
26

  
27
	<taskdef name="antmenu" classname="com.sardak.antform.AntMenu" classpath="${antform.lib}" />
28

  
29
	<taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask" classpath="${antelope.lib}" />
30

  
31
	<target name="mkproject-build-cancelled">
32
		<antform title="Project creation cancelled" width="${form.width}" image="${gvsiglogo}">
33
			<textProperty label="" editable="false" columns="40" property="form.title" />
34
			<label>Creation cancelled.</label>
35
			<separator />
36
			<controlbar>
37
				<button type="cancel" label=" Close " />
38
			</controlbar>
39
		</antform>
40
	</target>
41

  
42
	<target name="mkproject-build">
43
		<echo>
44
  Project name: "${project.name}"
45
  Project name capitalized: "${project.name.capitalized}"
46
  Project name lowercase: ${project.name.lowercase}"
47
  Group id: "${project.group.id}"
48
  ArtifactId: "${project.artifact.id}"
49
  Project folder: "${project.folder}"
50
        </echo>
51

  
52
		<echo>Unzipping the basic template project</echo>
53
		<unzip src="${templates.folder}/landregistryviewer.zip" dest="${project.folder}" />
54

  
55
		<!-- Calculate the project artifact id as PATH -->
56
		<propertyregex property="project.artifact.id.folder" input="${project.artifact.id}" regexp="([^\.]*).([^\.]*)" replace="\1/\2" />
57

  
58
		<echo>Renaming folder ${project.folder}/org.gvsig.landregistryviewer to 
59
            ${project.folder}/${project.artifact.id}</echo>
60

  
61
		<move todir="${project.folder}">
62
			<fileset dir="${project.folder}">
63
				<include name="org.gvsig.landregistryviewer/**/*.txt" />
64
				<include name="org.gvsig.landregistryviewer/**/*.java" />
65
				<include name="org.gvsig.landregistryviewer/**/*.xml" />
66
				<include name="org.gvsig.landregistryviewer/**/org.gvsig.tools.library.Library" />
67
				<include name="org.gvsig.landregistryviewer.app/**/org.gvsig.tools.library.Library" />
68
				<include name="org.gvsig.landregistryviewer.app/**/*.txt" />
69
				<include name="org.gvsig.landregistryviewer.app/**/*.xml" />
70
				<include name="org.gvsig.landregistryviewer.app/**/*.java" />
71
 			</fileset>
72
			<mapper>
73
				<filtermapper>
74
					<replacestring from="org.gvsig.landregistryviewer" to="${project.artifact.id}" />
75
					<replacestring from="org${file.separator}gvsig${file.separator}landregistryviewer" to="${project.artifact.id.folder}" />
76
					<replacestring from="LandRegistryViewer" to="${project.name.capitalized}" />
77
				</filtermapper>
78
			</mapper>
79
			<filterchain>
80
				<tokenfilter>
81
					<replacestring from="org.gvsig.landregistryviewer" to="${project.artifact.id}" />
82
				</tokenfilter>
83
				<tokenfilter>
84
					<replacestring from="LandRegistryViewer" to="${project.name.capitalized}" />
85
					<replacestring from="Land Registry Viewer" to="${project.name.capitalized}" />
86
					<replacestring from="gvsig-landregistryviewer" to="gvsig-${project.name.lowercase}" />
87
				</tokenfilter>
88
				<tokenfilter>
89
					<replacestring from="LandRegistryViewer" to="${project.name.capitalized}" />
90
					<replacestring from="Land Registry Viewer" to="${project.name.capitalized}" />
91
					<replacestring from="gvsig-landregistryviewer" to="gvsig-${project.name.lowercase}" />
92
				</tokenfilter>
93
			</filterchain>
94
		</move>
95
		<move todir="${project.folder}">
96
			<fileset dir="${project.folder}">
97
                                <include name="org.gvsig.landregistryviewer/**" />
98
                                <include name="org.gvsig.landregistryviewer.app/**" />
99
			</fileset>
100
			<mapper>
101
				<filtermapper>
102
					<replacestring from="org.gvsig.landregistryviewer" to="${project.artifact.id}" />
103
					<replacestring from="org${file.separator}gvsig${file.separator}landregistryviewer" to="${project.artifact.id.folder}" />
104
					<replacestring from="LandRegistryViewer" to="${project.name.capitalized}" />
105
				</filtermapper>
106
			</mapper>
107
		</move>
108
<!--
109
		<delete dir="${project.folder}/org.gvsig.landregistryviewer"/>
110
		<delete dir="${project.folder}/org.gvsig.landregistryviewer.app"/>
111
-->
112
	</target>
113

  
114

  
115
</project>
0 116

  
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/scripts/fortunecookies-basic.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project name="gvSIG-make-cookies-basic-project" default="mkproject-build" basedir=".">
3

  
4
	<!-- Get current file location folder -->
5
	<dirname property="gvSIG-make-cookies-basic-project.basedir" file="${ant.file.gvSIG-make-cookies-basic-project}" />
6

  
7
	<target name="mkproject-build">
8
	    <ant dir="${gvSIG-make-cookies-basic-project.basedir}" antfile="fortunecookies.xml" target="mkproject-build-basic" />
9
	</target>
10

  
11
</project>
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/scripts/fortunecookies.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project name="gvSIG-make-maven-project" default="mkproject-build-basic" basedir=".">
3

  
4
	<!-- Get current file location folder -->
5
	<dirname property="gvSIG-make-maven-project.basedir" file="${ant.file.gvSIG-make-maven-project}" />
6

  
7
	<!-- Libraries folder in the gvSIG extension -->
8
	<property name="lib.folder" location="${gvSIG-make-maven-project.basedir}/../lib" />
9
	<!-- Templates folder in the gvSIG extension -->
10
	<property name="templates.folder" location="${gvSIG-make-maven-project.basedir}/../templates" />
11

  
12
	<property name="gvsiglogo" location="${basedir}/../gvSIG.png" />
13

  
14
	<!-- Load some ant external utility tasks -->
15
	<property name="antform.lib" location="${lib.folder}/antform-2.0.jar" />
16
	<property name="antcontrib.lib" location="${lib.folder}/ant-contrib-1.0b3.jar" />
17
	<property name="antelope.lib" location="${lib.folder}/antelopetasks-3.2.10.jar" />
18

  
19
	<taskdef resource="net/sf/antcontrib/antlib.xml">
20
		<classpath>
21
			<pathelement location="${antcontrib.lib}" />
22
		</classpath>
23
	</taskdef>
24

  
25
	<taskdef name="antform" classname="com.sardak.antform.AntForm" classpath="${antform.lib}" />
26

  
27
	<taskdef name="antmenu" classname="com.sardak.antform.AntMenu" classpath="${antform.lib}" />
28

  
29
	<taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask" classpath="${antelope.lib}" />
30

  
31
	<target name="mkproject-build-cancelled">
32
		<antform title="Project creation cancelled" width="${form.width}" image="${gvsiglogo}">
33
			<textProperty label="" editable="false" columns="40" property="form.title" />
34
			<label>Creation cancelled.</label>
35
			<separator />
36
			<controlbar>
37
				<button type="cancel" label=" Close " />
38
			</controlbar>
39
		</antform>
40
	</target>
41

  
42
    <target name="mkproject-build-basic">
43
        <antcall target="mkproject-build">
44
            <param name="project.type" value="1" />
45
        </antcall>
46
    </target>
47
    
48
    <target name="mkproject-build-provider">
49
        <antcall target="mkproject-build">
50
            <param name="project.type" value="2" />
51
        </antcall>
52
    </target>
53
    
54
	<target name="mkproject-build">
55
		<echo>
56
  Project name: "${project.name}"
57
  Project name capitalized: "${project.name.capitalized}"
58
  Project name lowercase: ${project.name.lowercase}"
59
  Group id: "${project.group.id}"
60
  ArtifactId: "${project.artifact.id}"
61
  Project folder: "${project.folder}"
62
  Project type: "${project.type}"
63
        </echo>
64

  
65
		<if>
66
			<equals arg1="${project.type}" arg2="1" />
67
			<then>
68
				<echo>Unzipping the basic template project</echo>
69
				<unzip src="${templates.folder}/fortunecookies-basic.zip" dest="${project.folder}" />
70
			</then>
71
			<else>
72
				<echo>Unzipping the provider based implementation template project</echo>
73
				<unzip src="${templates.folder}/fortunecookies-pbi.zip" dest="${project.folder}" />
74
			</else>
75
		</if>
76

  
77
		<!-- Calculate the project artifact id as PATH -->
78
		<propertyregex property="project.artifact.id.folder" input="${project.artifact.id}" regexp="([^\.]*).([^\.]*)" replace="\1${file.separator}\2" />
79

  
80
		<echo>Renaming folder ${project.folder}/org.gvsig.fortunecookies to 
81
            ${project.folder}/${project.artifact.id}</echo>
82
		<move todir="${project.folder}">
83
			<fileset dir="${project.folder}">
84
				<include name="org.gvsig.fortunecookies/**" />
85
				<include name="org.gvsig.fortunecookies.app/**" />
86
			</fileset>
87
			<mapper>
88
				<filtermapper>
89
					<replacestring from="org.gvsig.fortunecookies" to="${project.artifact.id}" />
90
					<replacestring from="org${file.separator}gvsig${file.separator}fortunecookies" to="${project.artifact.id.folder}" />
91
					<replacestring from="FortuneCookie" to="${project.name.capitalized}" />
92
				</filtermapper>
93
			</mapper>
94
			<filterchain>
95
				<tokenfilter>
96
					<!-- Replace fortune cookie server url as it contains the FortuneCookie word in it. -->
97
					<replacestring from="http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx/GetFortuneCookie" to="FC_URL_TO_PRESERVE" />
98
				</tokenfilter>
99
				<tokenfilter>
100
					<replacestring from="org.gvsig.fortunecookies" to="${project.artifact.id}" />
101
				</tokenfilter>
102
				<tokenfilter>
103
					<replacestring from="FortuneCookies" to="${project.name.capitalized}" />
104
					<replacestring from="Fortune Cookies" to="${project.name.capitalized}" />
105
					<replacestring from="Fortune cookies" to="${project.name.capitalized}" />
106
					<replacestring from="fortune cookies" to="${project.name.capitalized}" />
107
					<replacestring from="gvsig-fortunecookies" to="gvsig-${project.name.lowercase}" />
108
					<replacestring from="fortunecookies" to="${project.name.capitalized}" />
109
				</tokenfilter>
110
				<tokenfilter>
111
					<replacestring from="FortuneCookie" to="${project.name.capitalized}" />
112
					<replacestring from="Fortune Cookie" to="${project.name.capitalized}" />
113
					<replacestring from="Fortune cookie" to="${project.name.capitalized}" />
114
					<replacestring from="fortune cookie" to="${project.name.capitalized}" />
115
					<replacestring from="gvsig-fortunecookie" to="gvsig-${project.name.lowercase}" />
116
					<replacestring from="fortunecookie" to="${project.name.capitalized}" />
117
				</tokenfilter>
118
				<tokenfilter>
119
					<!-- Restore the fortune cookie server URL -->
120
					<replacestring from="FC_URL_TO_PRESERVE" to="http://www.fullerdata.com/FortuneCookie/FortuneCookie.asmx/GetFortuneCookie" />
121
				</tokenfilter>
122
			</filterchain>
123
		</move>
124
		
125
	</target>
126

  
127

  
128
</project>
0 129

  
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/scripts/mkmvnproject.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project name="gvSIG-make-maven-project" default="mkproject" basedir=".">
3

  
4
	<!-- Get current file location folder -->
5
	<dirname property="gvSIG-make-maven-project.basedir" file="${ant.file.gvSIG-make-maven-project}" />
6

  
7
	<!-- Libraries folder in the gvSIG extension -->
8
	<property name="lib.folder" location="${gvSIG-make-maven-project.basedir}/../lib" />
9
	<!-- Templates folder in the gvSIG extension -->
10
	<property name="templates.folder" location="${gvSIG-make-maven-project.basedir}/../templates" />
11

  
12
	<property name="gvsiglogo" location="${basedir}/../gvSIG.png" />
13

  
14
	<!-- Load some ant external utility tasks -->
15
	<property name="antform.lib" location="${lib.folder}/antform-2.0.jar" />
16
	<property name="antcontrib.lib" location="${lib.folder}/ant-contrib-1.0b3.jar" />
17
	<property name="antelope.lib" location="${lib.folder}/antelopetasks-3.2.10.jar" />
18

  
19
	<property name="form.width" value="700" />
20
	<property name="form.height" value="550" />
21
	<property name="form.columns" value="40" />
22

  
23

  
24
	<taskdef resource="net/sf/antcontrib/antlib.xml">
25
		<classpath>
26
			<pathelement location="${antcontrib.lib}" />
27
		</classpath>
28
	</taskdef>
29

  
30
	<taskdef name="antform" classname="com.sardak.antform.AntForm" classpath="${antform.lib}" />
31

  
32
	<taskdef name="antmenu" classname="com.sardak.antform.AntMenu" classpath="${antform.lib}" />
33

  
34
	<taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask" classpath="${antelope.lib}" />
35

  
36

  
37
	<!-- 
38
	================ begin specific code of templates ================= 
39
	-->
40
	<property name="template.fortunecookies-basic.option" value="2 - General project based on Fortune cookies basic example project" />
41
	<property name="template.fortunecookies-basic.description1" value="Create a general pourpose project with the multimodule" />
42
	<property name="template.fortunecookies-basic.description2" value="structure. It has no GEO logic and is based on a basic" />
43
	<property name="template.fortunecookies-basic.description3" value="API/implementation separation" />
44

  
45
    <property name="template.fortunecookies-provider.option" value="3 - General project based on Fortune cookies example project" />
46
    <property name="template.fortunecookies-provider.description1" value="Create a general pourpose project with the multimodule" />
47
    <property name="template.fortunecookies-provider.description2" value="structure. It has no GEO logic and is based on" />
48
    <property name="template.fortunecookies-provider.description3" value="API/SPI/implementation separation and providers"  />
49

  
50
	<property name="template.landregistryviewer.option" value="1 - Basic plugin with spatial support" />
51
	<property name="template.landregistryviewer.description1" value="Create a project based in the LandRegistryViewer example." />
52
	<property name="template.landregistryviewer.description2" value="Uses access to View, MapControl and datasources." />
53
	<property name="template.landregistryviewer.description3" value="" />
54

  
55
	<property name="templates" value="fortunecookies-basic,fortunecookies-provider,landregistryviewer" />
56
	<!-- 
57
	================ End specific code of templates ================= 
58
	-->
59

  
60
	<target name="mkproject" depends="mkproject-prompt-basic-data">
61
		<description>Creates a new gvSIG project</description>
62
	</target>
63

  
64
	<target name="mkproject-prompt-basic-data">
65

  
66
		<property name="project.group.id" value="org.gvsig" />
67

  
68
		<antform title="Create project" width="${form.width}" image="${gvsiglogo}">
69
			<textProperty label="" editable="false" columns="${form.columns}" property="form.title" />
70
			<textProperty label="Name : " property="project.name" required="true" />
71
			<label>                               For the project name, use the java class naming rules. 
72
                               Ex: FortuneCookie or LandRegistryViewer</label>
73
			<textProperty label="Group Id : " property="project.group.id" required="true" />
74

  
75
			<fileSelectionProperty label="Create project in : " property="project.folder" directoryChooser="true" editable="false" required="true" />
76
			<separator />
77
			<label>Select the template to use:</label>
78

  
79
			<!-- 
80
			================ begin specific code of templates ================= 
81
			-->
82
			<checkSelectionProperty property="template.landregistryviewer.check" values="${template.landregistryviewer.option}" label="" />
83
			<label>                                         ${template.landregistryviewer.description1}
84
                                         ${template.landregistryviewer.description2}
85
                                         ${template.landregistryviewer.description3}</label>
86

  
87
			<checkSelectionProperty editable="false" property="template.fortunecookies-basic.check" values="${template.fortunecookies-basic.option}" label="" />
88
			<label>                                         ${template.fortunecookies-basic.description1}
89
                                         ${template.fortunecookies-basic.description2}
90
                                         ${template.fortunecookies-basic.description3}</label>
91
            <checkSelectionProperty editable="false" property="template.fortunecookies-provider.check" values="${template.fortunecookies-provider.option}" label="" />
92
            <label>                                         ${template.fortunecookies-provider.description1}
93
                                         ${template.fortunecookies-provider.description2}
94
                                         ${template.fortunecookies-provider.description3}</label>
95
			<!-- 
96
			================ End specific code of templates ================= 
97
			-->
98
			<separator />
99
			<controlbar>
100
				<button type="cancel" label=" Cancel " target="mkproject-build-cancelled" />
101
				<button type="ok" label=" Next " target="mkproject-fixnames" />
102
			</controlbar>
103
		</antform>
104
	</target>
105

  
106
	<target name="mkproject-fixnames">
107

  
108
		<!-- Trim project name and group id -->
109
		<stringutil string="${project.name}" property="project.name">
110
			<trim />
111
		</stringutil>
112
		<stringutil string="${project.group.id}" property="project.group.id">
113
			<trim />
114
		</stringutil>
115

  
116
		<!-- Lower case project name -->
117
		<stringutil string="${project.name}" property="project.name.lowercase">
118
			<lowercase />
119
		</stringutil>
120

  
121
		<!-- Capitalize project name, just in case -->
122
		<stringutil string="${project.name}" property="project.name.capitalized.end">
123
			<substring beginindex="1" />
124
		</stringutil>
125
		<stringutil string="${project.name}" property="project.name.capitalized.beginning">
126
			<substring endindex="1" />
127
			<uppercase />
128
		</stringutil>
129
		<property name="project.name.capitalized" value="${project.name.capitalized.beginning}${project.name.capitalized.end}" />
130

  
131
		<!-- Create artifactID with project.group.id + . + project.name.lowercase -->
132
		<property name="project.artifact.id" value="${project.group.id}.${project.name.lowercase}" />
133

  
134
		<for list="${templates}" param="template">
135
			<sequential>
136
				<var name="template.name" value="@{template}" />
137
				<var name="check.name" value="template.${template.name}.check" />
138
				<propertycopy override="true" name="arg1" from="${check.name}" />
139
				<propertycopy override="true" name="arg2" from="template.${template.name}.option" />
140
				<if>
141
					<and>
142
						<isset property="selected.template" />
143
						<equals arg1="${arg1}" arg2="${arg2}" />
144
					</and>
145
					<then>
146
						<antcall target="fail">
147
							<param name="message" value="Only one template can be selected" />
148
						</antcall>
149
					</then>
150
				</if>
151
				<if>
152
					<equals arg1="${arg1}" arg2="${arg2}" />
153
					<then>
154
						<echo>selected.template = "${template.name}"</echo>
155
						<property name="selected.template" value="${template.name}" />
156
					</then>
157
				</if>
158
			</sequential>
159
		</for>
160
		<antcall target="mkproject-confirm" inheritall="true" />
161
	</target>
162

  
163
	<target name="mkproject-confirm">
164
		<antform title="Confirm the creation" width="${form.width}" image="${gvsiglogo}">
165
			<textProperty label="" editable="false" columns="${form.columns}" property="form.title" />
166
			<label>The data used for the creation of project are:</label>
167
			<textProperty label="Project" editable="false" property="project.name" />
168
			<textProperty label="Project name capitalized" editable="false" property="project.name.capitalized" />
169
			<textProperty label="Project name lowercase" editable="false" property="project.name.lowercase" />
170
			<textProperty label="Group Id" editable="false" property="project.group.id" />
171
			<textProperty label="Artifact Id" editable="false" property="project.artifact.id" />
172
			<textProperty label="Folder" editable="false" property="project.folder" />
173
			<textProperty label="Template" editable="false" property="selected.template" />
174
			<label>Continue ?</label>
175
			<separator />
176
			<controlbar>
177
				<button type="cancel" label=" Cancel " target="mkproject-build-cancelled" />
178
				<button type="ok" label=" Previous " target="mkproject-prompt-basic-data" />
179
				<button type="ok" label=" Next " target="mkproject-build" />
180
			</controlbar>
181
		</antform>
182
	</target>
183

  
184
	<target name="mkproject-build">
185
		<echo>
186
  Project name: "${project.name}"
187
  Project name capitalized: "${project.name.capitalized}"
188
  Project name lowercase: ${project.name.lowercase}"
189
  Group id: "${project.group.id}"
190
  ArtifactId: "${project.artifact.id}"
191
  Project folder: "${project.folder}"
192
  Selected template: "${selected.template}"
193
        </echo>
194
		<!--  call specific code of the selected template -->
195
		<ant antfile="${selected.template}.xml" inheritall="false">
196
			<property name="project.name" value="${project.name}" />
197
			<property name="project.name.capitalized" value="${project.name.capitalized}" />
198
			<property name="project.name.lowercase" value="${project.name.lowercase}" />
199
			<property name="project.group.id" value="${project.group.id}" />
200
			<property name="project.artifact.id" value="${project.artifact.id}" />
201
			<property name="project.folder" value="${project.folder}" />
202
			<property name="form.width" value="${form.width}" />
203
			<property name="form.height" value="${form.height}" />
204
			<property name="form.columns" value="${form.columns}" />
205
		</ant>
206
		<if>
207
			<resourceexists>
208
				<file file="${project.folder}/${project.artifact.id}" />
209
			</resourceexists>
210
			<then>
211
				<antcall target="mkproject-prepare-workspace" inheritall="true" />
212
				<antcall target="mkproject-build-succesfully" inheritall="true" />
213
			</then>
214
			<else>
215
				<antcall target="mkproject-build-cancelled" inheritall="true" />
216
			</else>
217
		</if>
218
	</target>
219

  
220
	<target name="mkproject-prepare-workspace">
221
		<ant dir="${project.folder}/${project.artifact.id}" antfile="prepare-workspace.xml" target="prepare-workspace" />
222
		<if>
223
			<resourceexists>
224
				<file file="${project.folder}/${project.artifact.id}.app" />
225
			</resourceexists>
226
			<then>
227
				<ant dir="${project.folder}/${project.artifact.id}.app" antfile="../org.gvsig.maven.base.build/maven-goals.xml" target="mvn-install-and-eclipse-eclipse" />
228
			</then>
229
		</if>
230
	</target>
231

  
232
	<target name="mkproject-build-succesfully">
233
		<antform title="Project creation" width="${form.width}" image="${gvsiglogo}">
234
			<textProperty label="" editable="false" columns="${form.columns}" property="form.title" />
235
			<label>Project ${project.name} was created succesfully</label>
236
			<controlbar>
237
				<button type="ok" label=" Close " />
238
			</controlbar>
239
		</antform>
240
	</target>
241

  
242
	<target name="mkproject-build-cancelled">
243
		<antform title="Project creation cancelled" width="${form.width}" image="${gvsiglogo}">
244
			<textProperty label="" editable="false" columns="40" property="form.title" />
245
			<label>Creation cancelled.</label>
246
			<separator />
247
			<controlbar>
248
				<button type="cancel" label=" Close " />
249
			</controlbar>
250
		</antform>
251
	</target>
252

  
253
	<target name="fail">
254
		<echo>${message}</echo>
255
		<fail message="${message}" />
256
	</target>
257

  
258
</project>
0 259

  
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/scripts/checkjdk.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project name="check-jdk-project" default="default" basedir="..">
3
	
4
	<property name="src_folder" location="compilationcheck" />
5

  
6
	<target name="default">
7
		
8
		<javac srcdir="${src_folder}"
9
			destdir="${src_folder}"
10
			executable="${executable}"
11
			fork="true"
12
			debug="on" />
13
	</target>
14

  
15
</project>
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/resources/scripts/fortunecookies-provider.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project name="gvSIG-make-cookies-provider-project" default="mkproject-build" basedir=".">
3

  
4
	<!-- Get current file location folder -->
5
	<dirname property="gvSIG-make-cookies-provider-project.basedir" file="${ant.file.gvSIG-make-cookies-provider-project}" />
6

  
7
	<target name="mkproject-build">
8
	    <ant dir="${gvSIG-make-cookies-provider-project.basedir}" antfile="fortunecookies.xml" target="mkproject-build-provider" />
9
	</target>
10

  
11
</project>
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/java/org/gvsig/mkmvnproject/gui/CreatePluginConsolePanel.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.mkmvnproject.gui;
23

  
24
import java.awt.BorderLayout;
25
import java.awt.Color;
26
import java.awt.Dimension;
27
import java.io.BufferedReader;
28
import java.io.IOException;
29
import java.io.InputStreamReader;
30
import java.io.PipedInputStream;
31
import java.io.PipedOutputStream;
32
import java.io.PrintStream;
33

  
34
import javax.swing.JPanel;
35
import javax.swing.JScrollPane;
36
import javax.swing.JTextArea;
37
import javax.swing.SwingUtilities;
38

  
39
import org.slf4j.Logger;
40
import org.slf4j.LoggerFactory;
41

  
42
/**
43
 * A panel which shows the execution log messages of the create plugin process.
44
 * 
45
 * @author gvSIG Team
46
 * @version $Id$
47
 */
48
public class CreatePluginConsolePanel extends JPanel {
49

  
50
	private static final long serialVersionUID = -7213048219847956909L;
51

  
52
	private static final Logger logger = LoggerFactory
53
			.getLogger(CreatePluginConsolePanel.class);
54

  
55
	private JTextArea console;
56

  
57
	private PrintStream printStream;
58
	private PipedOutputStream pipedos;
59
	private PipedInputStream pipedis;
60
	private Thread consoleThread;
61

  
62
	/**
63
	 * Constructor.
64
	 * 
65
	 * @throws IOException
66
	 *             if there is an error creating the console streams
67
	 */
68
	public CreatePluginConsolePanel() throws IOException {
69
		super();
70
		initialize();
71
	}
72

  
73
	/**
74
	 * Constructor.
75
	 * 
76
	 * @param isDoubleBuffered
77
	 *            if the panel must be double buffered.
78
	 * @throws IOException
79
	 *             if there is an error creating the console streams
80
	 */
81
	public CreatePluginConsolePanel(boolean isDoubleBuffered)
82
			throws IOException {
83
		super(isDoubleBuffered);
84
		initialize();
85
	}
86

  
87
	/**
88
	 * Initializes the panel GUI.
89
	 * 
90
	 * @throws IOException
91
	 */
92
	private void initialize() throws IOException {
93
		Dimension dimension = new Dimension(600, 200);
94
		setSize(dimension);
95
		setLayout(new BorderLayout());
96

  
97
		console = new JTextArea();
98
		console.setEditable(false);
99
		// console.setColumns(20);
100
		// console.setRows(5);
101
		console.setBackground(Color.WHITE);
102
		console.setLineWrap(true);
103
		console.setWrapStyleWord(true);
104

  
105
		JScrollPane consoleScrollPane = new JScrollPane(console);
106
		add(consoleScrollPane, BorderLayout.CENTER);
107

  
108
		pipedis = new PipedInputStream();
109

  
110
		pipedos = new PipedOutputStream(pipedis);
111

  
112
		printStream = new PrintStream(pipedos);
113
		
114
        logger.info("===================================");
115
        logger.info("= Opening plugin creation console =");
116
        logger.info("===================================");
117

  
118
		consoleThread = new ConsoleThread(pipedis, console);
119
		consoleThread.start();
120
	}
121

  
122
	/**
123
	 * Returns a {@link PrintStream} which allows to write messages to the
124
	 * console.
125
	 * 
126
	 * @return a {@link PrintStream} which allows to write messages to the
127
	 *         console
128
	 */
129
	public PrintStream getPrintStream() {
130
		return printStream;
131
	}
132

  
133
	/**
134
	 * Returns a {@link PrintStream} which allows to write error messages to the
135
	 * console.
136
	 * 
137
	 * @return a {@link PrintStream} which allows to write error messages to the
138
	 *         console
139
	 */
140
	public PrintStream getErrorPrintStream() {
141
		return getPrintStream();
142
	}
143

  
144
	/**
145
	 * Closes the console. Once this method is called, any more calls to the
146
	 * console {@link PrintStream} will throw an exception.
147
	 */
148
	public void closeConsole() {
149
	    
150
        logger.info("===================================");
151
        logger.info("= Closing plugin creation console =");
152
        logger.info("===================================");
153
	    
154
		printStream.flush();
155
		printStream.close();
156
		try {
157
			pipedos.close();
158
			pipedis.close();
159
			// Wait for the thread to finish
160
			consoleThread.join(500);
161
		} catch (IOException e) {
162
		    logger.warn("Error closing the internal piped streams", e);
163
		} catch (InterruptedException e) {
164
			// Nothing special to do
165
		    logger.debug("Console thread interrupted while waiting to finish", e);
166
		}
167
	}
168

  
169
	private static final class ConsoleThread extends Thread {
170

  
171
		private final PipedInputStream pipedis;
172
		private final JTextArea console;
173

  
174
		/**
175
		 * Constructor.
176
		 */
177
		public ConsoleThread(PipedInputStream pipedis, JTextArea console) {
178
			super("Create plugin console update thread");
179
			setDaemon(true);
180
			this.pipedis = pipedis;
181
			this.console = console;
182
		}
183

  
184
		@Override
185
		public void run() {
186
			try {
187
				BufferedReader reader = new BufferedReader(
188
						new InputStreamReader(pipedis));
189
				String line;
190
				while ((line = reader.readLine()) != null) {
191
				    // =========== Writing lines to log too 
192
		            logger.info(line);
193
                    // =====================================
194
					SwingUtilities.invokeLater(new ConsoleUpdateRunnable(
195
							console, line));
196
				}
197
				logger.debug("Console input stream end, finish reading");
198
				reader.close();
199
			} catch (IOException e) {
200
			    logger.warn("Error reading from the console string", e);
201
			}
202
		}
203

  
204
	}
205

  
206
	/**
207
	 * Runnable used to update the console text field.
208
	 * 
209
	 * @author gvSIG Team
210
	 * @version $Id$
211
	 */
212
	private static final class ConsoleUpdateRunnable implements Runnable {
213
		private final String newLine;
214
		private final JTextArea console;
215

  
216
		/**
217
		 * Constructor.
218
		 */
219
		public ConsoleUpdateRunnable(JTextArea console, String newLine) {
220
			this.console = console;
221
			this.newLine = newLine;
222
		}
223

  
224
		public void run() {
225
			console.append(newLine);
226
			console.append("\n");
227
		}
228
	}
229
}
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/java/org/gvsig/mkmvnproject/gui/CreatePluginConsoleWindow.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.mkmvnproject.gui;
23

  
24
import java.awt.Dimension;
25
import java.io.IOException;
26

  
27
import org.gvsig.andami.ui.mdiManager.IWindow;
28
import org.gvsig.andami.ui.mdiManager.IWindowListener;
29
import org.gvsig.andami.ui.mdiManager.WindowInfo;
30

  
31
/**
32
 * A gvSIG window which shows the execution log messages of the create plugin
33
 * process.
34
 * 
35
 * @author gvSIG Team
36
 * @version $Id$
37
 */
38
public class CreatePluginConsoleWindow extends CreatePluginConsolePanel
39
		implements IWindow, IWindowListener {
40

  
41
	private static final long serialVersionUID = -5589080107545290284L;
42

  
43
	private WindowInfo info;
44

  
45
	private Object profile = WindowInfo.EDITOR_PROFILE;
46

  
47
	/**
48
	 * Constructor.
49
	 * 
50
	 * @throws IOException
51
	 *             if there is an error creating the console streams
52
	 */
53
	public CreatePluginConsoleWindow() throws IOException {
54
		super();
55
		initializeWindow();
56
	}
57

  
58
	/**
59
	 * Constructor.
60
	 * 
61
	 * @param isDoubleBuffered
62
	 *            if the panel must be double buffered.
63
	 * @throws IOException
64
	 *             if there is an error creating the console streams
65
	 */
66
	public CreatePluginConsoleWindow(boolean isDoubleBuffered) throws IOException {
67
		super(isDoubleBuffered);
68
		initializeWindow();
69
	}
70

  
71
	/**
72
	 * Initializes the window.
73
	 */
74
	private void initializeWindow() {
75
		Dimension dimension = new Dimension(600, 300);
76
		setSize(dimension);
77
		int code = WindowInfo.ICONIFIABLE | WindowInfo.MAXIMIZABLE
78
				| WindowInfo.RESIZABLE | WindowInfo.MODELESSDIALOG;
79
		profile = WindowInfo.EDITOR_PROFILE;
80
		info = new WindowInfo(code);
81
		info.setTitle("Console");
82
		info.setMinimumSize(dimension);
83
	}
84

  
85
	public WindowInfo getWindowInfo() {
86
		return info;
87
	}
88

  
89
	public Object getWindowProfile() {
90
		return profile;
91
	}
92

  
93
	public void windowActivated() {
94
		// Nothing to do
95
	}
96

  
97
	public void windowClosed() {
98
		super.closeConsole();
99
	}
100

  
101
}
tags/extensions/org.gvsig.mkmvnproject/2.0/src/main/java/org/gvsig/mkmvnproject/gui/settings/PlatformPropertiesWindow.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2012 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.mkmvnproject.gui.settings;
24

  
25
import java.awt.BorderLayout;
26
import java.awt.Font;
27
import java.awt.GridBagConstraints;
28
import java.awt.GridBagLayout;
29
import java.awt.GridLayout;
30
import java.awt.Insets;
31
import java.awt.event.ActionEvent;
32
import java.awt.event.ActionListener;
33
import java.io.File;
34
import java.io.FileOutputStream;
35
import java.io.IOException;
36

  
37
import javax.swing.JButton;
38
import javax.swing.JLabel;
39
import javax.swing.JOptionPane;
40
import javax.swing.JPanel;
41
import javax.swing.JScrollBar;
42
import javax.swing.JScrollPane;
43
import javax.swing.JTextArea;
44
import javax.swing.event.DocumentEvent;
45
import javax.swing.event.DocumentListener;
46

  
47
import org.slf4j.Logger;
48
import org.slf4j.LoggerFactory;
49

  
50
import org.gvsig.andami.PluginServices;
51
import org.gvsig.andami.ui.mdiManager.IWindow;
52
import org.gvsig.andami.ui.mdiManager.WindowInfo;
53
import org.gvsig.i18n.Messages;
54

  
55

  
56
/**
57
 * This dialog lets the user write the file .gvsig.platform.properties
58
 * 
59
 * @author jldominguez
60
 *
61
 */
62
public class PlatformPropertiesWindow extends JPanel
63
implements IWindow, ActionListener, DocumentListener {
64
    
65
    private static final Logger logger =
66
        LoggerFactory.getLogger(PlatformPropertiesWindow.class);
67
    
68
    private WindowInfo winfo = null;
69
    private File targetFile = null;
70
    private boolean isWindows = false;
71
    
72
    private JPanel northPanel = null;
73
    
74
    private JTextArea contentArea = null;
75
    
76
    private JPanel southPanel = null;
77
    private JButton saveButton = null;
78
    private JButton suggButton = null;
79
    private JButton okButton = null;
80
    private JButton cancelButton = null;
81
    
82
    private boolean validSettings = false; 
83
    
84
    public PlatformPropertiesWindow(
85
        File non_existing_file, boolean is_win) {
86
        
87
        targetFile = non_existing_file;
88
        isWindows = is_win;
89
        init();
90
    }
91

  
92
    private void init() {
93
        
94
        this.setLayout(new BorderLayout());
95
        
96
        northPanel = new JPanel(new GridBagLayout());
97
        GridBagConstraints c = new GridBagConstraints();  
98
        c.insets = new Insets(1, 10, 1, 10);
99
        c.weightx = 0.5; // 
100
        c.fill = GridBagConstraints.HORIZONTAL;
101
        c.gridx = 0;
102
        
103
        c.gridy = 0;
104
        northPanel.add(new JLabel(" "), c);
105
        c.gridy = 1;
106
        northPanel.add(new JLabel(Messages.getText(
107
            "_Mandatory_platform_properties_file_not_found")), c);
108
        c.gridy = 2;
109
        northPanel.add(new JLabel(Messages.getText(
110
            "_Use_this_text_editor_to_write_it")), c);
111
        c.gridy = 3;
112
        northPanel.add(new JLabel(" "), c);
113
        // =============================================
114
        // =============================================
115
        southPanel = new JPanel();
116
        southPanel.setLayout(new GridLayout(1, 5, 8, 4));
117
        // ------------
118
        southPanel.add(getSaveButton());
119
        southPanel.add(getSuggButton());
120
        // ------------
121
        southPanel.add(new JLabel(" "));
122
        // ------------
123
        southPanel.add(getOkButton());
124
        southPanel.add(getCancelButton());
125
        // =============================================
126
        
127
        this.add(northPanel, BorderLayout.NORTH);
128
        
129
        JScrollPane scroll = new JScrollPane();
130
        scroll.setViewportView(getContentArea());
131
        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
132
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
133
        this.add(scroll, BorderLayout.CENTER);
134
        
135
        JPanel south2 = new JPanel(new GridBagLayout());
136
        GridBagConstraints cs = new GridBagConstraints();
137
        cs.insets = new Insets(15,15,15,15);
138
        south2.add(southPanel, cs);
139
        
140
        this.add(south2, BorderLayout.SOUTH);
141
    }
142

  
143
    private JTextArea getContentArea() {
144
        
145
        if (contentArea == null) {
146
            contentArea = new JTextArea();
147
            loadSuggested(contentArea);
148
            contentArea.getDocument().addDocumentListener(this);
149
        }
150
        return contentArea;
151
    }
152

  
153
    private JButton getCancelButton() {
154
        if (cancelButton == null) {
155
            cancelButton = new JButton(Messages.getText("_Cancel"));
156
            cancelButton.addActionListener(this);
157
        }
158
        return cancelButton;
159
    }
160

  
161
    private JButton getSuggButton() {
162
        if (suggButton == null) {
163
            suggButton = new JButton(Messages.getText("_Suggested"));
164
            suggButton.addActionListener(this);
165
        }
166
        return suggButton;
167
    }
168

  
169
    private JButton getOkButton() {
170
        if (okButton == null) {
171
            okButton = new JButton(Messages.getText("_Accept"));
172
            okButton.addActionListener(this);
173
            okButton.setEnabled(false);
174
        }
175
        return okButton;
176
    }
177

  
178
    private JButton getSaveButton() {
179
        if (saveButton == null) {
180
            saveButton = new JButton(Messages.getText("_Save"));
181
            Font fnt = saveButton.getFont();
182
            fnt = fnt.deriveFont(Font.BOLD);
183
            saveButton.setFont(fnt);
184
            saveButton.addActionListener(this);
185
        }
186
        return saveButton;
187
    }
188

  
189
    // ===================================================
190
    // ===================================================
191

  
192
    public WindowInfo getWindowInfo() {
193
        if (winfo == null) {
194
            winfo = new WindowInfo(WindowInfo.MODALDIALOG);
195
            winfo.setWidth(550);
196
            winfo.setHeight(350);
197
            winfo.setTitle(
198
                Messages.getText("_Checking_platform_properties"));
199
        }
200
        return winfo;
201
    }
202

  
203
    public Object getWindowProfile() {
204
        return WindowInfo.DIALOG_PROFILE;
205
    }
206
    
207
    public static final String SUGGESTED_WINDOWN_CONTENT =
208
        "native_platform=win\n" +
209
        "native_distribution=nt\n" +
210
        "native_compiler=vs8\n" +
211
        "native_arch=i386\n" +
212
        "native_libraryType=dynamic";
213
    
214
    public static final String SUGGESTED_NON_WINDOWS_CONTENT =
215
            "native_platform=linux\n" +
216
            "native_distribution=all\n" +
217
            "native_compiler=gcc4\n" +
218
            "native_arch=i386\n" +
219
            "native_libraryType=dynamic";
220

  
221

  
222
    public void actionPerformed(ActionEvent e) {
223
        
224
        Object src = e.getSource();
225
        if (src == getOkButton()) {
226
            if (getSaveButton().isEnabled()) {
227
                if (!userAcceptsNotSaving()) {
228
                    return;
229
                }
230
            }
231
            validSettings = true;
232
            PluginServices.getMDIManager().closeWindow(this);
233
        }
234
        
235
        if (src == getCancelButton()) {
236
            validSettings = false;
237
            PluginServices.getMDIManager().closeWindow(this);
238
        }
239
        
240
        if (src == getSaveButton()) {
241
            if (saveContent()) {
242
                this.getSaveButton().setEnabled(false);
243
            }
244
            this.refreshOkButton();
245
        }
246
        
247
        if (src == getSuggButton()) {
248
            loadSuggested(getContentArea());
249
            this.getSaveButton().setEnabled(true);
250
        }
251
        
252
    }
253

  
254

  
255
    /**
256
     * @return
257
     */
258
    private boolean userAcceptsNotSaving() {
259
        
260
        String _msg =
261
            Messages.getText("_There_are_unsaved_changes_Continue_question");
262
        String _tit =
263
            Messages.getText("_Not_saved");
264
        int usr_opt = JOptionPane.showConfirmDialog(
265
            this, _msg, _tit, JOptionPane.YES_NO_OPTION,
266
            JOptionPane.WARNING_MESSAGE);
267
        return (usr_opt == JOptionPane.YES_OPTION);
268
    }
269

  
270
    private boolean saveContent() {
271
        
272
        try {
273
            if (targetFile.exists()) {
274
                targetFile.delete();
275
            }
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff