Revision 36105

View differences:

tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/distribution/distribution.xml
1
<assembly>
2
</assembly>
0 3

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Fri Aug 12 10:07:53 CEST 2011
3
buildNumber=2030
0 4

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/org.gvsig.symbology.app.importsymbols/src/main/resources/locale/text.properties
1
make_plugin_package=Crear paquete instalaci?n de plugin
2
make_plugin_package_description=Crea un paquete de instalaci?n de un plugin instalado
3
install_package=Instalar un nuevo paquete
4
install_package_description=instala un nuevo paquete (plugin, traducciones, tema, etc.) en gvSIG
5
install_package_extension_warning=Herramienta en desarrollo no exenta de fallos. ?Desea continuar?
6
select_an_option=Seleccione una opci?n
0 7

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/org.gvsig.symbology.app.importsymbols/src/main/resources/locale/text_en.properties
1
make_plugin_package=Create plugin installation package
2
make_plugin_package_description=Create an installation package from an already installed plugin
3
install_package=Install a new package
4
install_package_description=Installs a new package (plugin, translations, theme, etc.) in gvSIG
5
install_package_extension_warning=Tool under development. It may contain errors. Continue anyway?
6
select_an_option=Select an Option
0 7

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/org.gvsig.symbology.app.importsymbols/src/main/resources/config/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<plugin-config>
3
	<libraries library-dir="lib"/>
4
	<depends plugin-name="org.gvsig.app"/>
5
	<resourceBundle name="text"/>
6
	<extensions>
7
		<extension class-name="org.gvsig.symbology.app.importsymbols.ImportSymbolsExtension"
8
			description=""
9
			active="true">
10
			<menu text="tools/Import symbols"
11
				  tooltip="Punctual symbol importer from images that exist in a folder"
12
				  action-command="Import_symbols" />			
13
		</extension>
14
	</extensions>
15
</plugin-config>
0 16

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/org.gvsig.symbology.app.importsymbols/src/main/java/org/gvsig/symbology/app/importsymbols/ImportSymbolsExtension.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

  
23
package org.gvsig.symbology.app.importsymbols;
24

  
25
import java.awt.Component;
26
import java.io.File;
27
import java.io.FileInputStream;
28
import java.io.FileOutputStream;
29
import java.io.IOException;
30
import java.net.URL;
31
import java.text.MessageFormat;
32
import java.util.HashSet;
33
import java.util.Set;
34

  
35
import javax.swing.JFileChooser;
36
import javax.swing.JOptionPane;
37
import javax.swing.filechooser.FileFilter;
38

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

  
42
import org.gvsig.andami.plugins.Extension;
43
import org.gvsig.fmap.mapcontext.MapContextLocator;
44
import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolManager;
45
import org.gvsig.symbology.SymbologyLocator;
46
import org.gvsig.symbology.SymbologyManager;
47
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IPictureMarkerSymbol;
48
import org.gvsig.tools.ToolsLocator;
49
import org.gvsig.tools.persistence.PersistenceManager;
50
import org.gvsig.tools.persistence.PersistentState;
51
import org.gvsig.tools.persistence.exception.PersistenceException;
52
import org.gvsig.tools.persistence.exception.PersistenceValidateExceptions;
53

  
54
public class ImportSymbolsExtension extends Extension {
55

  
56
    private static Logger LOG =
57
        LoggerFactory.getLogger(ImportSymbolsExtension.class);
58
    
59
    private static final Set<String> imageExtensionsAllowed;
60
    
61
    static {
62
        imageExtensionsAllowed = new HashSet<String>();
63
        imageExtensionsAllowed.add("png");
64
        imageExtensionsAllowed.add("jpg");
65
        imageExtensionsAllowed.add("jpeg");
66
        imageExtensionsAllowed.add("gif");
67
        imageExtensionsAllowed.add("bmp");
68
        imageExtensionsAllowed.add("svg");
69
    }
70

  
71
    // returns the output folder (/home/user/gvSIG/Symbols)
72
    private File getOutputFolderPath() {
73

  
74
        SymbolManager manager = MapContextLocator.getSymbolManager();
75
        return new File(manager.getSymbolPreferences().getSymbolLibraryPath());
76
    }
77

  
78
    private String deleteExtension(File file) {
79
        String outFileName =
80
            file.getPath().substring(0, file.getPath().lastIndexOf("."));
81
        return outFileName;
82

  
83
    }
84

  
85
    // gets the selection image (from filename.png it returns filenamesel.png,
86
    // for example)
87
    private File getSelImage(File imageIn) {
88

  
89
        String cadena = deleteExtension(imageIn);
90
        String extension =
91
            imageIn.getPath().substring(imageIn.getPath().lastIndexOf("."),
92
                imageIn.getPath().length());
93

  
94
        String selPath = cadena + "sel" + extension;
95
        File imageOut = new File(selPath);
96

  
97
        return imageOut;
98

  
99
    }
100

  
101
    // Copies File imageIn to imageOut
102
    private void copy(File imageIn, File imageOut) throws IOException {
103

  
104
        FileInputStream from = null;
105
        FileOutputStream to = null;
106

  
107
        from = new FileInputStream(imageIn.getPath());
108
        to = new FileOutputStream(imageOut.getPath());
109

  
110
        try {
111

  
112
            byte[] buffer = new byte[4096];
113
            int bytesRead;
114

  
115
            while ((bytesRead = from.read(buffer)) != -1) {
116
                to.write(buffer, 0, bytesRead); // write
117
            }
118

  
119
        } finally {
120
            if (from != null) {
121
                try {
122
                    from.close();
123
                } catch (IOException e) {
124
                    ;
125
                }
126
            }
127
            if (to != null) {
128
                try {
129
                    to.close();
130
                } catch (IOException e) {
131
                    ;
132
                }
133
            }
134
        }
135

  
136
    }
137

  
138
    private void addImageSymbol(File image) throws IOException {
139

  
140
        int option;
141
        boolean sobreescribir = true;
142
        File selImage = getSelImage(image);
143

  
144
        File imageOut = new File(getOutputFolderPath() + "/" + image.getName());
145
        File selImageOut =
146
            new File(getOutputFolderPath() + "/" + selImage.getName());
147

  
148
        // Overwrite or not
149
        if (imageOut.exists()) {
150
            Object[] options = { getText("_Overwrite"), getText("_Cancel") };
151

  
152
            option =
153
                JOptionPane
154
                    .showOptionDialog(
155
                        null,
156
                        MessageFormat
157
                            .format(
158
                                getText("The file_{0}_already_exists.\n\n_Do_you_want_to_overwrite_it?"),
159
                                imageOut.getPath()),
160
                        getText("_Import_symbols"), JOptionPane.DEFAULT_OPTION,
161
                        JOptionPane.INFORMATION_MESSAGE, null, options,
162
                        options[0]);
163

  
164
            if (option == 1) {
165
                sobreescribir = false;
166
            }
167
        }
168

  
169
        SymbologyManager manager = SymbologyLocator.getSymbologyManager();
170
        SymbolManager symbolManager = MapContextLocator.getSymbolManager();
171

  
172
        if (sobreescribir) {
173
            try {
174

  
175
                // Copies the image to the output folder
176
                copy(image, imageOut);
177

  
178
                URL imageURL = imageOut.toURI().toURL();
179
                URL selImageURL = null;
180

  
181
                // tries to copy the selection image
182
                if (selImage.exists()) {
183
                    copy(selImage, selImageOut);
184
                    selImageURL = selImageOut.toURI().toURL();
185
                }
186

  
187
                IPictureMarkerSymbol symbol =
188
                    manager.createPictureMarkerSymbol(imageURL, selImageURL);
189

  
190
                PersistenceManager persistenceManager =
191
                    ToolsLocator.getPersistenceManager();
192

  
193
                PersistentState state = persistenceManager.getState(symbol);
194

  
195
                // change file extension
196
                String outFileName =
197
                    deleteExtension(imageOut)
198
                        + symbolManager.getSymbolPreferences()
199
                            .getSymbolFileExtension();
200

  
201
                FileOutputStream out = new FileOutputStream(outFileName);
202
                persistenceManager.saveState(state, out);
203

  
204
            } catch (PersistenceValidateExceptions e) {
205
                IOException ioex = new IOException();
206
                ioex.initCause(e);
207
                throw ioex;
208
            } catch (PersistenceException e) {
209
                IOException ioex = new IOException();
210
                ioex.initCause(e);
211
                throw ioex;
212
            }
213
        } else {
214

  
215
        }
216
    }
217

  
218
    public void execute(String actionCommand) {
219
        if (actionCommand.equalsIgnoreCase("Import_symbols")) {
220

  
221
            // Create a file chooser
222
            final JFileChooser fc = new JFileChooser();
223

  
224
            Component parent = null;
225

  
226
            // the fileChooser will only accept jpg, gif, png, jpeg, bmp and svg
227
            // image formats
228
            fc.setFileFilter(new FileFilter() {
229
                
230
                /*
231
                 * Get the extension of a file.
232
                 */
233
                public String getExtension(File f) {
234
                    String ext = null;
235
                    String s = f.getName();
236
                    int i = s.lastIndexOf('.');
237

  
238
                    if (i > 0 && i < s.length() - 1) {
239
                        ext = s.substring(i + 1).toLowerCase();
240
                    }
241
                    return ext;
242
                }
243

  
244
                @Override
245
                public String getDescription() {
246
                    return "JPG, GIF, PNG, JPEG, BMP & SVG Images";
247
                }
248

  
249
                @Override
250
                public boolean accept(File f) {
251
                    if (f.isDirectory()) {
252
                        return true;
253
                    }
254

  
255
                    String extension = getExtension(f);
256
                    return extension != null
257
                        && imageExtensionsAllowed.contains(extension);
258
                }
259
            });
260

  
261
            fc.setMultiSelectionEnabled(true);
262

  
263
            fc.showDialog(parent, getText("_Import_symbols"));
264

  
265
            // for every selected file, a symbol is created
266
            for (int i = 0; i < fc.getSelectedFiles().length; i++) {
267
                File image = fc.getSelectedFiles()[i];
268
                try {
269
                    addImageSymbol(image);
270
                } catch (IOException e) {
271
                    LOG.error(MessageFormat.format(
272
                        getText("_An error_ocurred_creating_the_symbol_related_to_{0}"),
273
                        image.getAbsolutePath()), e);
274

  
275
                    // Error message, the symbol may not have been imported.
276
                    JOptionPane
277
                        .showMessageDialog(
278
                            null,
279
                            MessageFormat
280
                                .format(
281
                                    getText("_An_error_ocurred_creating_the_simbol_related_to_{0}"),
282
                                    image.getAbsolutePath()),
283
                            "_Import_symbols", JOptionPane.ERROR_MESSAGE);
284
                }
285
            }
286
            // Message that the import has finished, with or without errors.
287
            JOptionPane.showMessageDialog(null,
288
                getText("_Importing_symbols_has_finished."),
289
                "_Import_symbols", JOptionPane.INFORMATION_MESSAGE);
290

  
291
        }
292
    }
293

  
294
    public void initialize() {
295

  
296
    }
297

  
298
    @Override
299
    public void postInitialize() {
300

  
301
    }
302

  
303
    public boolean isEnabled() {
304
        return true;
305
    }
306

  
307
    public boolean isVisible() {
308
        return true;
309
    }
310

  
311
}
0 312

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/org.gvsig.symbology.app.importsymbols/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/maven-v4_0_0.xsd">
5
	<modelVersion>4.0.0</modelVersion>
6
	<artifactId>org.gvsig.symbology.app.importsymbols</artifactId>
7
	<packaging>jar</packaging>
8
	<name>Tools: Import marker symbols tool</name>
9
        <description>Importador de simbolos puntuales a partir de las imagenes que existan en una carpeta</description>
10
	<parent>
11
		<groupId>org.gvsig</groupId>
12
		<artifactId>org.gvsig.symbology.app</artifactId>
13
		<version>2.0.0-SNAPSHOT</version>
14
	</parent>
15
	<profiles>
16
    	<profile>
17
    		<id>gvsig-install</id>
18
    		<activation>
19
    			<activeByDefault>true</activeByDefault>
20
    		</activation>
21
    		<properties>
22
				<!--  gvSIG installation folder -->
23
    			<gvsig.install.dir>${basedir}/../../build/product</gvsig.install.dir>
24
    		</properties>
25
    	</profile>
26
   	</profiles>
27
	<dependencies>
28
		<dependency>
29
			<groupId>org.gvsig</groupId>
30
			<artifactId>org.gvsig.app</artifactId>
31
		        <scope>compile</scope>
32
		</dependency>
33
        <dependency>
34
            <groupId>org.gvsig</groupId>
35
            <artifactId>org.gvsig.andami</artifactId>
36
            <scope>compile</scope>
37
        </dependency>
38
        <dependency>
39
            <groupId>org.gvsig</groupId>
40
            <artifactId>org.gvsig.tools.lib</artifactId>
41
            <scope>compile</scope>
42
        </dependency>
43
        <dependency>
44
            <groupId>org.gvsig</groupId>
45
            <artifactId>org.gvsig.i18n</artifactId>
46
            <scope>compile</scope>
47
        </dependency>
48
		<dependency>
49
			<groupId>org.gvsig</groupId>
50
			<artifactId>org.gvsig.symbology.lib.api</artifactId>
51
            <scope>compile</scope>
52
		</dependency>		
53

  
54
        <dependency>
55
            <groupId>org.slf4j</groupId>
56
            <artifactId>slf4j-api</artifactId>
57
            <scope>compile</scope>
58
        </dependency>       
59
        
60
        <dependency>
61
			<groupId>org.gvsig</groupId>
62
			<artifactId>org.gvsig.fmap.mapcontext</artifactId>
63
            <scope>compile</scope>
64
		</dependency>
65
        
66
	</dependencies>
67
    <properties>
68
        <build-dir>${basedir}/../../build</build-dir>
69
    	<package.info.dependencies>required: org.gvsig.app -ge 2</package.info.dependencies>
70
	</properties>
71
</project>
0 72

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/org.gvsig.symbology.app.importsymbols/distribution/distribution.xml
1
<assembly>
2
	<id>distribution</id>
3
	<formats>
4
		<format>dir</format>
5
	</formats>
6
	<fileSets>
7
		<fileSet>
8
			<directory>src/main/resources/config</directory>
9
			<outputDirectory>${extension.install.dir.name}
10
			</outputDirectory>
11
		</fileSet>
12
		<fileSet>
13
			<directory>src/main/resources/images</directory>
14
			<outputDirectory>${extension.install.dir.name}/images
15
			</outputDirectory>
16
		</fileSet>
17
		<fileSet>
18
			<directory>src/main/resources/about</directory>
19
			<outputDirectory>${extension.install.dir.name}
20
			</outputDirectory>
21
		</fileSet>
22
		<fileSet>
23
			<directory>src/main/resources/locale</directory>
24
			<outputDirectory>${extension.install.dir.name}
25
			</outputDirectory>
26
		</fileSet>	
27
	</fileSets>
28
	<files>
29
		<file>
30
			<source>package.info</source>
31
			<outputDirectory>${extension.install.dir.name}
32
			</outputDirectory>
33
		</file>
34
	</files>
35
	<dependencySets>
36
		<dependencySet>
37
			<outputDirectory>${extension.install.dir.name}/${library-dir}
38
			</outputDirectory>
39
			<includes>
40
				<include>org.gvsig:org.gvsig.symbology.app.importsymbols:jar</include>		
41
			</includes>
42
		</dependencySet>		
43
	</dependencySets>
44
</assembly>
0 45

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/org.gvsig.symbology.app.importsymbols/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Fri Aug 12 10:07:53 CEST 2011
3
buildNumber=2031
0 4

  
tags/v2_0_0_Build_2031/extensions/org.gvsig.symbology.app/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
	<modelVersion>4.0.0</modelVersion>
6
	<groupId>org.gvsig</groupId>
7
	<artifactId>org.gvsig.symbology.app</artifactId>
8
	<packaging>pom</packaging>
9
	<version>2.0.0-SNAPSHOT</version>
10
	<name>org.gvsig.symbology.app</name>
11
	<description></description>
12
	<url>http://gvsig-desktop.forge.osor.eu/downloads/pub/projects/gvSIG-desktop/docs/reference/org.gvsig.symbology.app/${pom.version}</url>
13
    <parent>
14
        <groupId>org.gvsig</groupId>
15
        <artifactId>gvsig-base-extension-pom</artifactId>
16
        <version>2.0-SNAPSHOT</version>
17
    </parent>
18

  
19
	<scm>
20
		<connection>scm:svn:https://svn.forge.osor.eu/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.symbology.app</connection>
21
		<developerConnection>scm:svn:https://svn.forge.osor.eu/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.symbology.app</developerConnection>
22
		<url>https://forge.osor.eu/plugins/scmsvn/viewcvs.php/branches/v2_0_0_prep/extensions/org.gvsig.symbology.app/?root=gvsig-desktop</url>
23
	</scm>
24

  
25
	<developers>
26
		<developer>
27
			<id>jjdelcerro</id>
28
			<name>Joaqu?n Jos? del Cerro</name>
29
			<email>jjdelcerro@gvsig.org</email>
30
			<roles>
31
				<role>Architect</role>
32
			</roles>
33
		</developer>
34
		<developer>
35
			<id>nfrancisco</id>
36
			<name>Nadal Francisco</name>
37
			<email>francisco_nad@gva.es</email>
38
			<roles>
39
				<role>Developer</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.symbology.app/${pom.version}</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-desktop/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.app</artifactId>
90
				<version>2.0-SNAPSHOT</version>
91
			</dependency>
92
		</dependencies>
93
	</dependencyManagement>
94

  
95
	<modules>
96
		<module>org.gvsig.symbology.app.importsymbols</module>
97
	</modules>
98
	
99
	 <properties>
100
        <build-dir>${basedir}/../build</build-dir>
101
    </properties>
102
</project>
0 103

  

Also available in: Unified diff