Revision 1316

View differences:

org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4
	<modelVersion>4.0.0</modelVersion>
5
	<groupId>org.gvsig</groupId>
6
	<artifactId>org.gvsig.vectorediting.app</artifactId>
7
	<packaging>pom</packaging>
8
	<version>1.0.71</version>
9
	<name>${project.artifactId}</name>
10
	<description>This plugin add to gvSIG a tool to show Vectorediting messages</description>
11
	<parent>
12
		<groupId>org.gvsig</groupId>
13
		<artifactId>org.gvsig.vectorediting</artifactId>
14
		<version>1.0.71</version>
15
	</parent>
16
	<dependencyManagement>
17
		<dependencies>
18
		
19
		</dependencies>
20
	</dependencyManagement>
21

  
22
	<modules>
23
		<module>org.gvsig.vectorediting.app.mainplugin</module>
24
	</modules>
25

  
26
</project>
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/maven-howto.rst
1

  
2
==================================
3
Usefull maven "howtos" and FAQs
4
==================================
5

  
6
.. contents::
7

  
8
How to reduce the process of "install" to run as fast as possible.
9
-------------------------------------------------------------------
10

  
11
Can reduce install execution skiping test execution and compilation,
12
javadoc generation, test signature checking, license checking, and 
13
attach sources in jar.
14

  
15
  mvn  -Danimal.sniffer.skip=true -Dmaven.test.skip=true -Dsource.skip=true -DskipTests -Dmaven.javadoc.skip=true install
16

  
17
How to increment the build number of gvSIG plugins
18
----------------------------------------------------
19

  
20
To increase the build number of gvSIG plugins, yo can do:
21

  
22
  mvn -Dincrease-build-number process-sources
23
  
24
How to deploy a package of a gvSIG plugin
25
--------------------------------------------
26

  
27
Yo can deploy the package of a gvSIG plugin with:
28

  
29
  mvn -Ddeploy-package -Duser=USER -Dpassword=PASSWORD install
30

  
31
Notes:
32
- Require that the gvsig.package.info.poolURL property that this set to the correct value.
33
- The process uses WEBDAV to upload the packages, gvspkg and gvspki, and require 
34
  access to write in the location specified by gvsig.package.info.poolURL
35
- If "user" or "password" is not present, the process ask its each time it need.
36
- If folder specified in  gvsig.package.info.poolURL does not exist, the process try to create it.
37
- The process create a file "addon-request.txt" in the target with the information to 
38
  add to the ticket to request the update of the package in the main repository of
39
  packages of gvSIG.
40

  
41
How to skip attach sources in jar from command line
42
------------------------------------------------------
43

  
44
If in the project is enabled by default the generation of jar whith 
45
the sources of the project, you can disable this setting the property
46
"source.skip" to true in the command line::
47

  
48
    mvn -Dsource.skip=true  install
49

  
50
How to skip test compile from command line
51
--------------------------------------------
52

  
53
You can skip the compilation of test setting the propety "maven.test.skip" 
54
to true in the command line::
55

  
56
    mvn -Dmaven.test.skip=true  install
57

  
58

  
59
How to skip test execution from command line
60
----------------------------------------------
61

  
62
You can skip the tests execution setting the propety "skipTests" to true
63
in the command line::
64

  
65
    mvn -DskipTests install
66

  
67
How to skip javadoc generation from command line
68
--------------------------------------------------
69

  
70
You can skip the javadoc generation setting the property
71
"maven.javadoc.skip" to true in the command line::
72

  
73
    mvn -Dmaven.javadoc.skip=true  install
74

  
75
How to skip test signature cheks from command line
76
---------------------------------------------------
77

  
78
You can skip the signature check setting the property
79
"animal.sniffer.skip" to true in the command line::
80

  
81
    mvn -Danimal.sniffer.skip=true install
82

  
83
How to install a project without install submodules
84
----------------------------------------------------------
85

  
86
To install a project with submodules and only install the
87
parent project without submodules use the option "--non-recursive" ::
88

  
89
    mvn --non-recursive install
90

  
91
  
92
How to skip test compilation
93
--------------------------------
94

  
95
To configure a project to don't run the compilation
96
of test you can add to this pom the next configuration of
97
the plugin "maven-compiler-plugin"::
98

  
99
  <build>
100
    <plugins>
101
      ...
102
      <plugin>
103
        <!-- Skip compilation tests -->
104
        <groupId>org.apache.maven.plugins</groupId>
105
        <artifactId>maven-compiler-plugin</artifactId>
106
        <executions>
107
          <execution>
108
            <id>default-testCompile</id>
109
            <phase>process-test-sources</phase>
110
            <goals>
111
              <goal>testCompile</goal>
112
            </goals>
113
            <configuration>
114
              <skip>true</skip>
115
            </configuration>
116
          </execution>
117
        </executions>
118
      </plugin>
119
      ...
120
    </plugins>
121
  </build>
122

  
123
Skip test execution
124
----------------------
125

  
126
To configure a project to don't run the execution
127
of test you can add to this pom the next configuration of
128
the plugin "maven-surefire-plugin"::
129

  
130

  
131
  <build>
132
    <plugins>
133
      ...
134
      <plugin>
135
        <!-- Skip test execution -->
136
        <groupId>org.apache.maven.plugins</groupId>
137
        <artifactId>maven-surefire-plugin</artifactId>
138
        <configuration>
139
          <skipTests>true</skipTests>
140
        </configuration>
141
      </plugin>
142
      ...
143
    </plugins>
144
  </build>
145

  
146
Continue on test failure
147
-----------------------------
148

  
149
You can configure a project to continue on test execution 
150
failure. To do this add to the pom of the project the next 
151
configuration of plugin "maven-surefire-plugin" ::
152

  
153
  <build>
154
    <plugins>
155
      ...
156
      <plugin>
157
        <!-- Continue on test failure -->
158
        <groupId>org.apache.maven.plugins</groupId>
159
        <artifactId>maven-surefire-plugin</artifactId>
160
        <configuration>
161
          <testFailureIgnore>true</testFailureIgnore>
162
        </configuration>
163
      </plugin>
164
      ...
165
    </plugins>
166
  </build>
167

  
168

  
169
Set java compatibility
170
--------------------------
171

  
172
To set the compatibility with a java version  add to the 
173
pom of the project the next configuration of plugin 
174
"maven-compiler-plugin" ::
175

  
176
  <build>
177
    <plugins>
178
      ...
179
      <plugin>
180
          <!-- Set java compatibility -->
181
          <groupId>org.apache.maven.plugins</groupId>
182
          <artifactId>maven-compiler-plugin</artifactId>
183
          <configuration>
184
              <source>1.5</source>
185
              <target>1.5</target>
186
              <encoding>ISO-8859-1</encoding>
187
          </configuration>
188
      </plugin>
189
      ...
190
    </plugins>
191
  </build>
192

  
193
Packaging tests in jar
194
------------------------
195

  
196
Test classes do not packaging in jar by default.
197
To packing add to pom::
198

  
199
  <build>
200
    <plugins>
201
      ...
202
      <plugin>
203
        <!-- Packaging tests in jar -->
204
        <groupId>org.apache.maven.plugins</groupId>
205
        <artifactId>maven-jar-plugin</artifactId>
206
        <executions>
207
          <!-- Generates a jar file only with the test classes -->
208
          <execution>
209
            <goals>
210
              <goal>test-jar</goal>
211
            </goals>
212
            <configuration>
213
              <includes>
214
                <include>**/**</include>
215
              </includes>
216
            </configuration>
217
          </execution>
218
        </executions>
219
      </plugin> 
220
      ...
221
    </plugins>
222
  </build>
223

  
224
How to set a dependency with tests jar
225
-----------------------------------------
226

  
227
You can set a dependency with a test jar adding to
228
the declaration of the dependency the scope of
229
test and the type of "test-jar"::
230

  
231
  <dependency>
232
      <groupId>...</groupId>
233
      <artifactId>...</artifactId>
234
      <type>test-jar</type>
235
      <scope>test</scope>
236
  </dependency>
237

  
238
How use ant in maven
239
-------------------------
240

  
241
You can use ant embed in the pom of you project.
242
To do this use::
243

  
244
  <plugin>
245
    <artifactId>maven-antrun-plugin</artifactId>
246
    <version>1.7</version>
247
    <executions>
248
      <execution>
249
        <phase>generate-sources</phase>
250
        <configuration>
251
          <target>
252
            <echo>Hello world!</echo>
253
          </target>
254
        </configuration>
255
        <goals>
256
          <goal>run</goal>
257
        </goals>
258
      </execution>
259
    </executions>
260
  </plugin>
261

  
262
Fail when execute "mvn deploy" with "No connector available"
263
-------------------------------------------------------------
264

  
265
When execute a "mvn deploy" fail with the error::
266

  
267
  [INFO] ------------------------------------------------------------------------
268
  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy 
269
    (default-deploy) on project org.gvsig.desktop: Failed to deploy artifacts/metadata: 
270
    No connector available to access repository gvsig-repository (dav:https://devel.gvsig.org/m2repo/j2se) 
271
    of type default using the available factories WagonRepositoryConnectorFactory -> [Help 1]
272
  [ERROR] 
273
  
274
This happens to be configured the webdav wagon as an extension in the section "build"::
275

  
276
  ...
277
  <build>
278
    <extensions>
279
        <extension>
280
            <groupId>org.apache.maven.wagon</groupId>
281
            <artifactId>wagon-webdav-jackrabbit</artifactId>
282
            <version>1.0-beta-7</version>
283
        </extension>
284
    </extensions>
285
  ...
286

  
287
Fail when execute "mvn release: prepare" with "svn command failed... Could not authenticate"
288
------------------------------------------------------------------------------------------------
289

  
290
When running "mvn release: prepare" updates poms, compiles, and then
291
fails with the following error ::
292

  
293
  [INFO] ------------------------------------------------------------------------
294
  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.1:prepare 
295
    (default-cli) on project org.gvsig.desktop: Unable to commit files
296
  [ERROR] Provider message:
297
  [ERROR] The svn command failed.
298
  [ERROR] Command output:
299
  [ERROR] svn: Commit failed (details follow):
300
  [ERROR] svn: MKACTIVITY of '/svn/gvsig-desktop/!svn/act/931a27bc-57e8-45d9-adcd-5a2cf54a7045': 
301
    authorization failed: Could not authenticate to server: rejected Basic challenge (https://devel.gvsig.org)
302
  [ERROR] -> [Help 1]
303
  [ERROR] 
304
  [ERROR]
305

  
306
Apparently maven in linux system use the svn of system and if you're not
307
authenticated when trying to access to the repository, svn fails.
308

  
309
This is solved by executing a commit from the command line on
310
some file of the project (only if you have not enabled the option 
311
"store-passwords = no" in $ HOME / .subversion / config). For example, you 
312
can add or remove at the end of "pom.xml" a blank line and then run 
313
from the command line ::
314

  
315
  svn ci -m "" pom.xml
316
  
317
Another option that works on Windows in declaring the user and password in the command:
318

  
319
mvn release:prepare -Dusername=[username] -Dpassword=[password]
320

  
321

  
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/test/resources/README.txt
1
====
2

  
3
    gvSIG. Desktop Geographic Information System.
4

  
5
    Copyright (C) 2007-2013 gvSIG Association.
6

  
7
    This program is free software; you can redistribute it and/or
8
    modify it under the terms of the GNU General Public License
9
    as published by the Free Software Foundation; either version 3
10
    of the License, or (at your option) any later version.
11

  
12
    This program is distributed in the hope that it will be useful,
13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
    GNU General Public License for more details.
16

  
17
    You should have received a copy of the GNU General Public License
18
    along with this program; if not, write to the Free Software
19
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
    MA  02110-1301, USA.
21

  
22
    For any additional information, do not hesitate to contact us
23
    at info AT gvsig.com, or visit our website www.gvsig.com.
24

  
25
====
26

  
27
Put into this folder the resources needed by your test classes.
28

  
29
This folder is added to the Tests classpath, so you can load any resources 
30
through the ClassLoader.
31

  
32
By default, in this folder you can find an example of log4j configuration,
33
prepared to log messages through the console, so logging works when you
34
run your tests classes.
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!--
3

  
4
    gvSIG. Desktop Geographic Information System.
5

  
6
    Copyright (C) 2007-2012 gvSIG Association.
7

  
8
    This program is free software; you can redistribute it and/or
9
    modify it under the terms of the GNU General Public License
10
    as published by the Free Software Foundation; either version 2
11
    of the License, or (at your option) any later version.
12

  
13
    This program is distributed in the hope that it will be useful,
14
    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
    GNU General Public License for more details.
17

  
18
    You should have received a copy of the GNU General Public License
19
    along with this program; if not, write to the Free Software
20
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21
    MA  02110-1301, USA.
22

  
23
    For any additional information, do not hesitate to contact us
24
    at info AT gvsig.com, or visit our website www.gvsig.com.
25

  
26
-->
27
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
28

  
29
<!-- 
30
Log4J configuration file for unit tests execution.
31
 -->
32
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
33

  
34
	<!-- Appender configuration to show logging messages through the console -->
35
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
36
		<layout class="org.apache.log4j.PatternLayout">
37
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
38
		</layout>
39
	</appender>
40

  
41
	<!-- 
42
	Activate logging messages of DEBUG level of higher only for the
43
	org.gvsig.tools packages.
44
	You can put full classes names or packages instead, to configure
45
	logging for all the classes and subpackages of the package.
46
	-->
47
	<category name="org.gvsig.tools">
48
		<priority value="DEBUG" />
49
	</category>
50
	<category name="org.gvsig.vectorediting">
51
		<priority value="DEBUG" />
52
	</category>
53

  
54
	<!-- 
55
	By default, show only logging messages of INFO level or higher, 
56
	through the previously configured CONSOLE appender. 
57
	-->
58
	<root>
59
		<priority value="INFO" />
60
		<appender-ref ref="CONSOLE" />
61
	</root>
62
</log4j:configuration>
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2013 gvSIG
2
  Association. This program is free software; you can redistribute it and/or modify
3
  it under the terms of the GNU General Public License as published by the Free Software
4
  Foundation; either version 3 of the License, or (at your option) any later version.
5
  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
6
  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
7
  PURPOSE. See the GNU General Public License for more details. You should have received
8
  a copy of the GNU General Public License along with this program; if not, write to
9
  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
10
  USA. For any additional information, do not hesitate to contact us at info AT gvsig.com,
11
  or visit our website www.gvsig.com. -->
12
<assembly>
13
  <id>gvsig-plugin-package</id>
14
  <formats>
15
    <format>zip</format>
16
  </formats>
17
  <baseDirectory>${project.artifactId}</baseDirectory>
18
  <includeBaseDirectory>true</includeBaseDirectory>
19
  <files>
20
    <file>
21
      <source>target/${project.artifactId}-${project.version}.jar</source>
22
      <outputDirectory>lib</outputDirectory>
23
    </file>
24
    <file>
25
      <source>target/package.info</source>
26
    </file>
27
  </files>
28

  
29
  <fileSets>
30
    <fileSet>
31
      <directory>src/main/resources-plugin</directory>
32
      <outputDirectory>.</outputDirectory>
33
    </fileSet>
34
  </fileSets>
35

  
36

  
37
  <dependencySets>
38
    <dependencySet>
39
      <useProjectArtifact>false</useProjectArtifact>
40
      <useTransitiveDependencies>false</useTransitiveDependencies>
41
      <outputDirectory>lib</outputDirectory>
42
      <includes>
43
        <include>org.gvsig:org.gvsig.vectorediting.lib.api</include>
44
        <include>org.gvsig:org.gvsig.vectorediting.swing.api</include>
45
        <include>org.gvsig:org.gvsig.vectorediting.lib.impl</include>
46
        <include>org.gvsig:org.gvsig.vectorediting.swing.impl</include>
47
        <include>org.gvsig:org.gvsig.vectorediting.lib.spi</include>
48
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.point</include>
49
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.circlecr</include>
50
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.circle3p</include>
51
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.polyline</include>
52
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.internalpolygon</include>
53
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.line</include>
54
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.arc</include>
55
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.ellipse</include>
56
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.regularpolygon</include>
57
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.rectangle</include>
58
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.spline</include>
59
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.explode</include>
60
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.move</include>
61
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.rotate</include>
62
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.duplicate</include>
63
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.scale</include>
64
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.splitline</include>
65
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.simplify</include>
66
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.multipoint</include>
67
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.autopolygon</include>
68
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.join</include>
69
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.stretch</include>
70
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.extendline</include>
71
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.split</include>
72
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.smoothline</include>
73
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.trimline</include>
74
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.rectangularmatrix</include>
75
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.polarmatrix</include>
76
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.editvertex</include>
77
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.remove</include>
78
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.converttopolyline</include>
79
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.reversedirection</include>
80
      </includes>
81
    </dependencySet>
82
  </dependencySets>
83

  
84
</assembly>
85

  
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/vectorediting/app/mainplugin/ServiceExtension.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright ? 2007-2014 gvSIG Association
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.vectorediting.app.mainplugin;
25

  
26
import org.gvsig.andami.plugins.Extension;
27
import org.gvsig.app.ApplicationLocator;
28
import org.gvsig.app.ApplicationManager;
29
import org.gvsig.app.project.documents.view.ViewDocument;
30
import org.gvsig.app.project.documents.view.gui.IView;
31
import org.gvsig.fmap.mapcontext.layers.FLayer;
32
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
33
import org.gvsig.vectorediting.swing.api.EditingContext;
34
import org.gvsig.vectorediting.swing.api.EditingSwingLocator;
35
import org.gvsig.vectorediting.swing.api.EditingSwingManager;
36

  
37
public class ServiceExtension extends Extension {
38

  
39
    public void initialize() {
40
    }
41

  
42
    public void execute(String actionCommand) {
43
        IView view = getActiveView();
44
        EditingSwingManager swingManager =
45
            EditingSwingLocator.getSwingManager();
46

  
47
        if (view != null) {
48
            EditingContext editingContext =
49
                swingManager.getEditingContext(view.getMapControl());
50
            editingContext.activateService(actionCommand);
51
        }
52

  
53
    }
54

  
55
    public boolean isEnabled() {
56
        return this.isVisible();
57
    }
58

  
59
    @Override
60
    public boolean isEnabled(String action) {
61
        IView view = getActiveView();
62
        FLyrVect activeLayer = getActiveLayer(view);
63

  
64
        if ((view != null) && (activeLayer != null) && activeLayer.isEditing() && action!=null) {
65
            EditingSwingManager swingManager =
66
                EditingSwingLocator.getSwingManager();
67
            EditingContext editingContext =
68
                swingManager.getEditingContext(view.getMapControl());
69
            return editingContext.isServiceCompatible(action);
70
        }
71
        return false;
72
    }
73

  
74
    public boolean isVisible() {
75
        IView view = getActiveView();
76
        FLyrVect activeLayer = getActiveLayer(view);
77
        return ((view != null) && (activeLayer != null) && activeLayer
78
            .isEditing());
79
    }
80

  
81
    @Override
82
    public boolean isVisible(String action) {
83
        return this.isVisible();
84
    }
85

  
86
    @Override
87
    public boolean canQueryByAction() {
88
        return true;
89
    }
90

  
91
    private IView getActiveView() {
92

  
93
        ApplicationManager application = ApplicationLocator.getManager();
94
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
95
        return view;
96
    }
97

  
98
    private FLyrVect getActiveLayer(IView view) {
99
        if (view != null) {
100
            ViewDocument viewDocument = view.getViewDocument();
101
            FLayer[] actives =
102
                viewDocument.getMapContext().getLayers().getActives();
103

  
104
            if ((actives.length == 1) && (actives[0] instanceof FLyrVect)) {
105
                return (FLyrVect) actives[0];
106
            }
107
        }
108
        return null;
109
    }
110
}
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/vectorediting/app/mainplugin/EditingExtension.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright ? 2007-2014 gvSIG Association
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.vectorediting.app.mainplugin;
25

  
26
import java.io.File;
27
import java.util.ArrayList;
28
import java.util.List;
29
import javax.swing.JOptionPane;
30
import org.apache.commons.io.FileUtils;
31

  
32
import org.slf4j.Logger;
33
import org.slf4j.LoggerFactory;
34

  
35
import org.gvsig.andami.IconThemeHelper;
36
import org.gvsig.andami.PluginServices;
37
import org.gvsig.andami.PluginsLocator;
38
import org.gvsig.andami.actioninfo.ActionInfo;
39
import org.gvsig.andami.plugins.Extension;
40
import org.gvsig.andami.plugins.IExtension;
41
import org.gvsig.andami.plugins.status.IExtensionStatus;
42
import org.gvsig.andami.plugins.status.IUnsavedData;
43
import org.gvsig.andami.plugins.status.UnsavedData;
44
import org.gvsig.app.ApplicationLocator;
45
import org.gvsig.app.ApplicationManager;
46
import org.gvsig.app.project.Project;
47
import org.gvsig.app.project.documents.Document;
48
import org.gvsig.app.project.documents.view.ViewDocument;
49
import org.gvsig.app.project.documents.view.ViewManager;
50
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
51
import org.gvsig.app.project.documents.view.gui.IView;
52
import org.gvsig.app.project.documents.view.toc.actions.EndEditingTocMenuEntry;
53
import org.gvsig.app.project.documents.view.toc.actions.StartEditingTocMenuEntry;
54
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
55
import org.gvsig.fmap.dal.exception.DataException;
56
import org.gvsig.fmap.dal.feature.FeatureStore;
57
import org.gvsig.fmap.mapcontext.MapContext;
58
import org.gvsig.fmap.mapcontext.MapContextLocator;
59
import org.gvsig.fmap.mapcontext.layers.FLayer;
60
import org.gvsig.fmap.mapcontext.layers.FLayers;
61
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
62
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
63
import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolException;
64
import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolManager;
65
import org.gvsig.fmap.mapcontrol.MapControl;
66
import org.gvsig.fmap.mapcontrol.MapControlCreationListener;
67
import org.gvsig.fmap.mapcontrol.MapControlLocator;
68
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
69
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
70
import org.gvsig.tools.ToolsLocator;
71
import org.gvsig.tools.extensionpoint.ExtensionPoint;
72
import org.gvsig.tools.i18n.I18nManager;
73
import org.gvsig.tools.observer.Notification;
74
import org.gvsig.tools.observer.Observable;
75
import org.gvsig.tools.observer.Observer;
76
import org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE;
77
import org.gvsig.utils.swing.threads.IMonitorableTask;
78
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
79
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
80
import org.gvsig.vectorediting.swing.api.EditingContext;
81
import org.gvsig.vectorediting.swing.api.EditingSwingLocator;
82
import org.gvsig.vectorediting.swing.api.EditingSwingManager;
83

  
84
public class EditingExtension extends Extension implements Observer {
85

  
86
    private static final Logger logger = LoggerFactory.getLogger(EditingExtension.class);
87

  
88
    @Override
89
    public void execute(String actionCommand) {
90

  
91
        ApplicationManager application = ApplicationLocator.getManager();
92
        IView view = getActiveView();
93
        EditingSwingManager swingManager = EditingSwingLocator.getSwingManager();
94

  
95
        if (view != null) {
96

  
97
            FLyrVect layer = getActiveLayer(view);
98
            MapControl mapControl = view.getMapControl();
99
            EditingContext editingContext = swingManager.getEditingContext(mapControl);
100

  
101
            if ("start-editing".equals(actionCommand)) {
102

  
103
                if (canBeEdited(layer)) {
104
                    if( !mapControl.getProjection().equals(layer.getProjection()) ) {
105
                        String msg = "_The_layer_is_reproyected_on_the_fly"
106
                                + "_Not_all_editing_tools_work_properly"
107
                                + "_When_you_finish_editing"
108
                                + "_will_only_export_the_changes_to_another_layer";
109
                        application.messageDialog(msg, "_Warning", JOptionPane.WARNING_MESSAGE);
110
                    } else if (!isWritable(layer)){
111
                        String msg = "_The_layer_can_not_be_written"
112
                            + "_When_you_finish_editing"
113
                            + "_will_only_export_the_changes_to_another_layer";
114
                        application.messageDialog(msg, "_Warning", JOptionPane.WARNING_MESSAGE);
115
                    }
116
                    editingContext.beginEdition(layer);
117
                    editingContext.addObserver(this);
118
                    ApplicationLocator.getManager().refreshMenusAndToolBars();
119
                }
120

  
121
            } else if ("end-editing".equals(actionCommand)) {
122

  
123
                if ((layer != null) && layer.isEditing()) {
124
                    editingContext.endEdition(layer);
125
                    ApplicationLocator.getManager().refreshMenusAndToolBars();
126
                }
127

  
128
            }
129
        }
130
    }
131

  
132
    @Override
133
    public void initialize() {
134
        registerIcons();
135

  
136
        // Disable default view panel console. Uses editing context console.
137
        DefaultViewPanel.setDisableConsole(true);
138

  
139
        // Adding TOC menu entry
140
        ExtensionPoint exPoint = ToolsLocator.getExtensionPointManager().add(
141
                "View_TocActions", "");
142
        exPoint.append(
143
            StartEditingTocMenuEntry.EXTENSION_POINT_NAME,
144
                "TOC popup menu to start vector layer's editing",
145
                new StartEditingTocMenuEntry());
146
        exPoint.append(
147
            EndEditingTocMenuEntry.EXTENSION_POINT_NAME,
148
                "TOC popup menu to end vector layer's editing",
149
                new EndEditingTocMenuEntry());
150
    }
151

  
152

  
153
    private void registerIcons() {
154
        IconThemeHelper.registerIcon("vectorediting", "vector-editing", this);
155
    }
156

  
157
    @Override
158
    public void postInitialize() {
159
        super.postInitialize();
160
        registerSymbols();
161

  
162
        MapControlLocator.getMapControlManager().addMapControlCreationListener(new MapControlCreationListener() {
163

  
164
            @Override
165
            public MapControl mapControlCreated(MapControl mapControl) {
166
                EditingContext editingContext = EditingSwingLocator.getSwingManager().getEditingContext(mapControl);
167
                StatusBarListener sbl = new StatusBarListener(mapControl);
168
                editingContext.setDefaultBehaviors(new Behavior[] { new MouseMovementBehavior(sbl) });
169
                editingContext.addObserver(EditingExtension.this);
170
                ApplicationLocator.getManager().refreshMenusAndToolBars();
171
                return mapControl;
172
            }
173
        });
174
    }
175

  
176
    /**
177
     * Register all symbols in the plugin symbols folder in the providerManager.
178
     * The description of the symbols must be unique because the key used for registration is the proper description of the symbol.
179
     *
180
     */
181
    private void registerSymbols() {
182

  
183
        EditingProviderManager providerManager = EditingProviderLocator.getProviderManager();
184

  
185
        SymbolManager symbolManager = MapContextLocator.getSymbolManager();
186
        File symbolsFolder = FileUtils.getFile(getPlugin().getPluginDirectory(), "symbols","editing");
187
        ISymbol[] symbols = null;
188
        try {
189
            symbols = symbolManager.loadSymbols(symbolsFolder);
190
        } catch (SymbolException e) {
191
            logger.warn("No symbols loaded from "+symbolsFolder.getAbsolutePath(), e);
192
        }
193

  
194
        if (symbols != null) {
195
            for (ISymbol symbol : symbols) {
196
                String description = symbol.getDescription();
197
                providerManager.registerSymbol(description, symbol);
198
            }
199
        }
200
    }
201

  
202
    @Override
203
    public boolean isEnabled() {
204
        return true;
205
    }
206

  
207
    @Override
208
    public boolean isVisible() {
209
        return true;
210
    }
211

  
212
    @Override
213
    public boolean isVisible(String action) {
214
        IView view = getActiveView();
215
        FLyrVect activeLayer = getActiveLayer(view);
216

  
217
        if ("start-editing".equals(action)) {
218
            return ((view != null) && (activeLayer != null) && !activeLayer
219
                .isEditing());
220

  
221
        } else {
222
            return ((view != null) && (activeLayer != null) && activeLayer
223
                .isEditing());
224

  
225
        }
226
    }
227

  
228
    @Override
229
    public boolean isEnabled(String action) {
230

  
231
        IView vista = getActiveView();
232
        FLyrVect activeLayer = getActiveLayer(vista);
233

  
234
        if ("start-editing".equals(action)) {
235
            return (canBeEdited(activeLayer));
236

  
237
        } else if ("end-editing".equals(action)) {
238
            return activeLayer.isEditing();
239

  
240
        }
241

  
242
        return false;
243

  
244
    }
245

  
246
    @Override
247
    public boolean canQueryByAction() {
248
        return true;
249
    }
250

  
251
    private IView getActiveView() {
252
        ApplicationManager application = ApplicationLocator.getManager();
253
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
254
        return view;
255
    }
256

  
257
    private boolean isWritable(FLyrVect layer) {
258
        if (layer != null && layer.isAvailable()) {
259
            return layer.getFeatureStore().allowWrite();
260
        }
261
        return false;
262
    }
263

  
264
    private boolean canBeEdited(FLyrVect layer) {
265
        if (layer != null && layer.isAvailable()) {
266

  
267
            boolean isNotTransformed =
268
                layer.getFeatureStore().getTransforms().isEmpty();
269

  
270
            return isNotTransformed && !layer.isEditing();
271
        }
272

  
273
        return false;
274
    }
275

  
276
    private FLyrVect getActiveLayer(IView vista) {
277
        if (vista != null) {
278
            ViewDocument viewDocument = vista.getViewDocument();
279
            FLayer[] actives =
280
                viewDocument.getMapContext().getLayers().getActives();
281

  
282
            if ((actives.length == 1) && (actives[0] instanceof FLyrVect)) {
283
                return (FLyrVect) actives[0];
284
            }
285
        }
286
        return null;
287
    }
288

  
289
    @Override
290
    public void update(Observable observable, Object notification) {
291

  
292
        if (notification instanceof Notification){
293
            ApplicationManager appManager = ApplicationLocator.getManager();
294
            Notification n = (Notification)notification;
295
            if (n.isOfType(EditingContext.CHANGE_SELECTED_TOOL_NOTIFICATION)){
296
                String name = (String)n.getValue();
297
                logger.trace("Changed selected tool to '{}'", name);
298
                PluginServices.getMainFrame().setSelectedTool(name);
299
                appManager.refreshMenusAndToolBars();
300

  
301
            } else if (n.isOfType(EditingContext.EXPORT_LAYER_NOTIFICATION)){
302
                exportLayer((FLyrVect)(n.getValue()));
303

  
304
            } else if (n.isOfType(EditingContext.REFRESH_TOOLS_NOTIFICATION)){
305
                appManager.refreshMenusAndToolBars();
306
            }
307
        }
308
    }
309

  
310
    private void exportLayer(FLyrVect layer)  {
311
        ApplicationManager appManager = ApplicationLocator.getManager();
312
        I18nManager i18nManager = ToolsLocator.getI18nManager();
313
        ActionInfo action = PluginsLocator.getActionInfoManager().getAction("layer-exportto");
314
        action.execute(new Object[] { layer, MODE.toInteger(MODE.DIALOG) });
315
        String msg = "_Do_you_want_to_finish_editing_If_not_exported_the_data_the_changes_will_be_lost";
316
        if( appManager.confirmDialog(
317
                i18nManager.getTranslation(msg),
318
                i18nManager.getTranslation("end_editing"),
319
                JOptionPane.YES_NO_OPTION,
320
                JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION ) {
321
            try {
322
                layer.getFeatureStore().cancelEditing();
323
            } catch (Exception e) {
324
                logger.warn("Can't abort editing of layer '"+layer.getName()+"'.",e);
325
                msg = "_Cant_finish_editing_See_the_error_log_for_more_information";
326
                appManager.messageDialog(msg, "_Warning", JOptionPane.WARNING_MESSAGE);
327
            }
328
        }
329
    }
330

  
331
    private List<FLyrVect> getEditedLayers(){
332
        ApplicationManager application = ApplicationLocator.getManager();
333
        List<FLyrVect> editedLayers = new ArrayList<>();
334

  
335
        Project project = application.getCurrentProject();
336
        for( Document document : project.getDocuments(ViewManager.TYPENAME) ) {
337
            ViewDocument view = (ViewDocument) document;
338
            MapContext mapContext = view.getMapContext();
339
            if (mapContext != null) {
340
                FLayers layers = mapContext.getLayers();
341
                for (int j = 0; j < layers.getLayersCount(); j++) {
342
                    FLayer lyr = layers.getLayer(j);
343
                    if (lyr instanceof FLyrVect) {
344
                        FLyrVect layerVect = (FLyrVect) lyr;
345
                        if (layerVect.isEditing()) {
346
                            editedLayers.add(layerVect);
347
                        }
348
                    }
349
                }
350
            }
351
        }
352
        return editedLayers;
353
    }
354

  
355
    private List<IUnsavedData> getUnsavedData(List<FLyrVect> editedLayers){
356
        List<IUnsavedData> unsavedData = new ArrayList<>();
357
        for (FLyrVect editedLayer : editedLayers) {
358
            IUnsavedData unsavedDataLayer = new UnsavedLayer(this, editedLayer);
359
            unsavedData.add(unsavedDataLayer);
360
        }
361
        return unsavedData;
362

  
363
    }
364

  
365
    private static class UnsavedLayer extends UnsavedData {
366
        private final FLyrVect layer;
367

  
368
        public UnsavedLayer(IExtension extension, FLyrVect layer) {
369
            super(extension);
370
            this.layer = layer;
371
        }
372

  
373
        @Override
374
        public String getDescription() {
375
            return layer.getName();
376
        }
377

  
378
        @Override
379
        public String getResourceName() {
380
            return layer.getFeatureStore().getFullName();
381
        }
382

  
383
        @Override
384
        public boolean saveData() {
385
            FeatureStore featureStore = layer.getFeatureStore();
386
            if(featureStore.isEditing()){
387
                try {
388
                    featureStore.finishEditing();
389
                    return true;
390
                } catch (DataException e) {
391
                    throw new RuntimeException(e);
392
                }
393
            }
394
            return true;
395
        }
396
    }
397

  
398
    @Override
399
    public IExtensionStatus getStatus() {
400
        List<FLyrVect> editedLayers = getEditedLayers();
401
        final List<IUnsavedData> unsavedData = getUnsavedData(editedLayers);
402

  
403
        return new IExtensionStatus() {
404

  
405
            @Override
406
            public boolean hasUnsavedData() {
407
                if(unsavedData == null){
408
                    return false;
409
                }
410
                return !unsavedData.isEmpty();
411
            }
412

  
413
            @Override
414
            public boolean hasRunningProcesses() {
415
                return false;
416
            }
417

  
418
            @Override
419
            public IUnsavedData[] getUnsavedData() {
420
                if(unsavedData == null){
421
                    return null;
422
                }
423
                return unsavedData.toArray(new IUnsavedData[0]);
424
            }
425

  
426
            @Override
427
            public IMonitorableTask[] getRunningProcesses() {
428
                return null;
429
            }
430
        };
431
    }
432
}
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/EndEditingTocMenuEntry.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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 3
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.app.project.documents.view.toc.actions;
25

  
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

  
29
import org.gvsig.andami.PluginServices;
30
import org.gvsig.andami.plugins.IExtension;
31
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
32
import org.gvsig.app.project.documents.view.toc.ITocItem;
33
import org.gvsig.fmap.mapcontext.layers.FLayer;
34
import org.gvsig.vectorediting.app.mainplugin.EditingExtension;
35

  
36

  
37
public class EndEditingTocMenuEntry extends AbstractTocContextMenuAction {
38

  
39
    public static final String EXTENSION_POINT_NAME = "EndEditing";
40

  
41
    private IExtension ext = null;
42

  
43
    private static Logger logger =
44
        LoggerFactory.getLogger(EndEditingTocMenuEntry.class);
45

  
46
	public String getGroup() {
47
		return "vectorEditing";
48
	}
49

  
50
	public int getGroupOrder() {
51
		return 0;
52
	}
53

  
54
	public int getOrder() {
55
		return 1;
56
	}
57

  
58
	public String getText() {
59
		return PluginServices.getText(this, "end_editing");
60
	}
61

  
62
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
63
	    return ((EditingExtension)getExtension()).isEnabled("end-editing");
64
	}
65

  
66
   public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
67
        return ((EditingExtension)getExtension()).isVisible("end-editing");
68
    }
69

  
70

  
71
	public void execute(ITocItem item, FLayer[] selItems) {
72
	       getExtension().execute("end-editing");
73
	}
74

  
75
    private IExtension getExtension() {
76

  
77
        if (ext == null) {
78
            ext = PluginServices.getExtension(EditingExtension.class);
79
        }
80
        return ext;
81
    }
82

  
83
}
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/StartEditingTocMenuEntry.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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 3
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.app.project.documents.view.toc.actions;
25

  
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

  
29
import org.gvsig.andami.PluginServices;
30
import org.gvsig.andami.plugins.IExtension;
31
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
32
import org.gvsig.app.project.documents.view.toc.ITocItem;
33
import org.gvsig.fmap.mapcontext.layers.FLayer;
34
import org.gvsig.vectorediting.app.mainplugin.EditingExtension;
35

  
36

  
37
public class StartEditingTocMenuEntry extends AbstractTocContextMenuAction {
38

  
39
    public static final String EXTENSION_POINT_NAME = "StartEditing";
40

  
41
    private IExtension ext = null;
42

  
43
    private static Logger logger =
44
        LoggerFactory.getLogger(StartEditingTocMenuEntry.class);
45

  
46
	public String getGroup() {
47
		return "vectorEditing";
48
	}
49

  
50
	public int getGroupOrder() {
51
		return 0;
52
	}
53

  
54
	public int getOrder() {
55
		return 0;
56
	}
57

  
58
	public String getText() {
59
		return PluginServices.getText(this, "start_editing");
60
	}
61

  
62
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
63
	    return ((EditingExtension)getExtension()).isEnabled("start-editing");
64
	}
65

  
66
   public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
67
       return ((EditingExtension)getExtension()).isVisible("start-editing");
68
    }
69

  
70

  
71
	public void execute(ITocItem item, FLayer[] selItems) {
72
	       getExtension().execute("start-editing");
73
	}
74

  
75
    private IExtension getExtension() {
76

  
77
        if (ext == null) {
78
            ext = PluginServices.getExtension(EditingExtension.class);
79
        }
80
        return ext;
81
    }
82

  
83
}
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.71/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/resources-plugin/i18n/text.properties
1
start_editing = Comenzar edici\u00f3n
2
end_editing = Terminar edici\u00f3n
3
insert_point = Insertar punto
4
insert_multipoint = Insertar MultiPunto
5
insert_line = Insertar l\u00ednea
6
insert_arc = Insertar arco
7
insert_circle_cr = Insertar c\u00edrculo (centro y radio)
8
insert_circumference_cr = Insertar circunferencia (centro y radio)
9
insert_circle_3p = Insertar c\u00edrculo (tres puntos)
10
insert_circumference_3p = Insertar circunferencia (tres puntos)
11
insert_ellipse = Insertar elipse
12
insert_filled_ellipse = Insertar elipse rellena
13
insert_polyline = Insertar polil\u00ednea
14
insert_polygon = Insertar pol\u00edgono
15
insert_regular_polygon = Insertar pol\u00edgono regular
16
insert_filled_regular_polygon = Insertar pol\u00edgono regular relleno
17
insert_rectangle = Insertar rect\u00e1ngulo
18
insert_filled_rectangle =  Insertar rect\u00e1ngulo relleno
19
insert_spline= Insertar curva spline
20
insert_filled_spline = Insertar curva spline rellena
21
insert_rectangular_matrix = Matriz rectangular de geometr\u00edas
22
insert_polar_matrix = Matriz polar de geometr\u00edas
23
modify_internal_polygon = Pol\u00edgono interno
24
modify_explode_geometry = Descomponer geometr\u00eda
25
modify_move = Mover geometr\u00eda
26
modify_rotate = Rotar geometr\u00eda
27
modify_duplicate = Duplicar geometr\u00eda
28
modify_split_line = Partir linea por un punto
29
modify_split = Partir geometr\u00eda
30
modify_scale = Escalar geometr\u00eda
31
modify_simplify = Simplificar geometr\u00eda
32
modify_join = Unir geometr\u00edas
33
insert_autopolygon = Insertar autopol\u00edgono
34
modify_stretch = Estirar geometr\u00eda
35
modify_extend_line = Alargar l\u00ednea hasta objeto
36
modify_trim_line = Recortar l\u00ednea por un objeto
37
modify_edit_vertex = Editar v\u00e9rtice
38
modify_convert_to_polyline= Convertir a polil\u00ednea
39
modify_reverse_direction=Invertir direcci\u00f3n
40
uniqueselection = Seleccione una \u00fanica geometr\u00eda
41
selectvertex = Seleccione un v\u00e9rtice
42
new_position = Nueva posici\u00f3n
43
new_position_or_z_value = Nueva posici\u00f3n o valor Z
44
insert_vertex = Insertar v\u00e9rtice
45
remove_vertex = Eliminar v\u00e9rtice
46
selection=Selecci\u00f3n
47
invalid_option=Opci\u00f3n no v\u00e1lida
48
center=Centro
49
radius=Radio
50
save_changes_performed=Guardar cambios realizados
51
discard= Descartar
52
discard_and_loose_changes= Descartar cambios y perder los cambios
53
continue= Continuar
54
do_not_save_yet_stay_in_editing_mode= No guardar los cambios y seguir en modo edici\u00f3n
55
indicate_new_point= Indique un nuevo punto
56
arc_mode = Modo arco
57
line_mode = Modo l\u00ednea
58
select_new_tool= Seleccione una nueva herramienta
59
draw_geometry_to_internal_polygon= Seleccione una herramienta para dibujar un pol\u00edgono interno
60
draw_geometry_to_autopolygon = Seleccione una herramienta para dibujar un autopol\u00edgono
61
draw_geometry_to_split = Seleccione una herramienta para partir las geometr\u00edas
62
draw_geometry_to_select_vertex = Seleccione una herramienta poligonal para seleccionar v\u00e9rtices
63
save = Guardar
64
discard = Descartar
65
continue = Continuar
66
export = Exportar
67
ask_save_layer = \u00bfDesea guardar la capa
68
can_not_write_layer =  No existe writer para este formato de capa o no tiene permisos de escritura.\n\u00bfQu\u00e9 desea hacer?
69
save_changes_performed = Guardar cambios realizados
70
discard_and_loose_changes = Descartar y perder los cambios
71
export_to_another_format = Exportar a otro formato
72
do_not_save_yet_stay_in_editing_mode = No guardar los cambios y seguir editando
73
first_point= Primer punto
74
second_point= Segundo punto
75
third_point= Tercer punto
76
start_point= Punto de inicio
77
middle_point= Punto medio
78
end_point= Punto final
79
first_point_A_axis = Primer punto del eje A
80
second_point_A_axis = Segundo punto del eje A
81
length_of_B_axis= Longitud del eje B
82
inscribed = Inscrito
83
circumscribed = Circunscrito
84
sides_of_regular_polygon = Indique los lados del poligono regular
85
center_of_regular_polygon = Centro del pol\u00edguno regular
86
point_of_circle = Punto del c\u00edrculo del pol\u00edgono
87
sides = Lados
88
key_arc_mode = A
89
key_line_mode = L
90
key_close = C
91
key_finish = F
92
key_inscribed = I
93
key_circumscribed = C
94
key_remove_last_point = Q
95
remove_last_point = Quitar \u00faltimo punto
96
close_polyline = Cerrar polil\u00ednea
97
close_spline = Cerrar curva spline
98
new_point = Nuevo punto
99
new_value = Nuevo valor
100
finished = finalizada
101
center_of_rotation = Centro de rotaci\u00f3n
102
angle_of_rotation = \u00c1ngulo de rotaci\u00f3n (grados)
103
origin_point = Origen
104
scale_factor_or_reference_point = Factor de escala o punto de referencia
105
second_scale_point = Segundo punto para la escala
106
tolerance = Tolerancia
107
line_to_extend = Seleccione l\u00ednea para alargar
108
line_to_trim = Seleccione l\u00ednea para partir
109
modify_smooth_line = Suavizar l\u00ednea
110
intermediate_steps_1_9 = Pasos intermedios [1,9]
111
algorithm = algoritmo
112
natural_cubic_splines = Splines c\u00fabicos naturales
113
bezier_curves = Curvas B\u00e9zier
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff