Revision 1474

View differences:

org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/LEEME.txt
1
===============
2
gvSIG Educa
3
===============
4

  
5
---------------------
6
Vistas Portables
7
---------------------
8

  
9
Descripci?n
10
==============
11

  
12
Este directorio contiene los fuentes de la funcionalidad Vistas Portables.
13

  
14
Requisitos
15
==============
16

  
17
* Maven 2.6 or higher
18

  
19
* Java JDK 1.5 or higher
20

  
21
Para trabajar con eclipse
22
--------------------------
23

  
24
Ver `Gu?a del desarrollador en gvSIG.org <https://gvsig.org/web/projects/gvsig-desktop/docs/devel/gvsig-devel-guide/2.0.0/>`_ y el fichero ``REAME-ECLIPSE.txt``
25

  
26
Contenido
27
==========
28

  
29
org.gvsig.educa.portableview.lib
30
---------------------------------
31

  
32
Fuentes de la funcionalidad. Estos proyectos contienen los procesos y l?gica principal sin dependencias de interface de usuario.
33

  
34
org.gvsig.educa.portableview.swing
35
-------------------------------------
36

  
37
Componentes de interface de usuario para gestionar los servicios que ofrece la librer??a.
38

  
39
org.gvsig.educa.portableview.main
40
-----------------------------------
41

  
42
Peque?a aplicaci?n que permite ejecutar las funcionalidades y realizar pruebas funcionales.
43

  
44
Ver `Ejecutar aplicaci?n de pruebas`_ para saber como arrancarla.
45

  
46
pom.xml
47
---------
48

  
49
Archivo de definici?n de proyecto Maven.
50

  
51
README.txt LEEME.txt
52
----------------------
53

  
54
Este fichero (en formato reStructureText, para mas informaci?n sobre este ver el `portal de gvSIG <https://gvsig.org/web/projects/gvsig-desktop/docs/devel/guia-para-documentar/el-formato-restructuredtext>`_  en la `referencia de docUtils  <http://docutils.sourceforge.net/rst.html>`_)
55

  
56

  
57
Compilaci?n
58
================
59

  
60
Desde el shell
61
----------------
62

  
63
Ejecute este comando::
64

  
65
    org.gvsig.educa.portablewview$ mvn clean install
66

  
67

  
68
Desde eclipse
69
--------------
70
Ver `Trabajar con un proyecto de la gu?a de desarrollador en gvSIG.org <https://gvsig.org/web/projects/gvsig-desktop/docs/devel/gvsig-devel-guide/2.0.0/trabajar-con-un-proyecto>`_
71

  
72
En algunos proyectos puede que sea necesario user el comando ``mvn eclipse:clean eclipse:eclipse`` e importar como *Standar/Import existing project...* en vez de cargar como *Maven Project*. Esto es debido a que, en algunas circunstancias, parece que el plugin de Maven del eclipse no prepara el *classpath* de forma correcta.
73

  
74

  
75
Empaquetado
76
===============
77

  
78
Esta funcionalidad no tiene ning?n proyecto pensado para empaquetar de forma independiente.
79

  
80
Versionado
81
--------------
82

  
83
Para cambiar el n?mero de versi?n de los plugins solo es necesario ajustar la etiqueta ``project/version`` del fichero *pom.xml*. Los subproyectos heredar?n el valor.
84

  
85
La pol??tica de versi?n es la est?ndar. Los cambios en los numeroso son:
86

  
87
* tercer n?mero: Arreglo de errores y mejoras menores. Sin cambios en el API.
88
* segundo n?mero: Arreglo de erroes y mejoras. Pueden haber cambios menores en el API. Los elementos marcados como *deprecated* en versiones anteriores pueden eliminarse. Sin cambios de arquitectura.
89
* primer n?mero: Cambios mayores.
90

  
91
Crear un tag
92
------------------
93

  
94
TODO: usar el plugin *release* de maven
95

  
96
Usar el comando *svn copy*. El proceso podr?a ser:
97

  
98
#. Comprobar que no hay cambios en la copia local::
99

  
100
   svn up ; svn status
101

  
102
#. Comprobar que los proyecto compilan y pasan todas las bater?as de test::
103

  
104
   mvn clean install
105

  
106
#. Actualizar el fichero *pom.xml* con la versi?n de tag (normalmente quitando el sufijo *-SNAPSHOT*)
107
#. Crear el directorio para el tag en el servidor::
108

  
109
   svn mkdir -m "Create {version} tag folder" https://devel.gvsig.org/svn/gvsig-educa/org.gvsig.educa.portablewview.app/tags/{version}
110

  
111
#. Subir la copia local al directorio del tag en el servidor::
112

  
113
   svn copy -m "Create {version} tag" * https://devel.gvsig.org/svn/gvsig-educa/org.gvsig.educa.portablewview.app/tags/{version}
114

  
115
#. Actualizar el *pom.xml* a la siguiente version (y a?adirle el sufijo *-SNAPSHOT*)
116
#. Subir los cambios del *pom.xml*::
117

  
118
   svn commit -m "Set new version {version}-SNAPSHOT" pom.xml
119

  
120

  
121
i18n
122
======
123

  
124
Los ficheros de internacionalizaci?n se pueden encontrar en los directorios:
125

  
126
+ */org.gvsig.educa.portableview.swing/org.gvsig.educa.portableview.swing.impl/src/main/resources/org/gvsig/educa/portableview/swing/impl/i18n*
127
+ *org.gvsig.educa.portableview.lib/org.gvsig.educa.portableview.lib.impl/src/main/resources/org/gvsig/educa/portableview/impl/i18n*
128

  
129
La internacionalizaci?n est? basada en el mecanismo est?ndar de los *resource bundle*. Para a?adir un nuevo idioma es necesario a?adir el fichero de propiedades en todos los directorio con el codigo de idioma adecuado.
130

  
131
Ejecutar aplicaci?n de pruebas
132
=================================
133

  
134
Desde el Shell
135
----------------
136

  
137
Despu?s del proceso de `Compilaci?n`_ , ejecute estos comandos::
138

  
139
    org.gvsig.educa.portablewview$ cd org.gvsig.educa.portablewview.main
140
    org.gvsig.educa.portablewview/org.gvsig.educa.portablewview.main$ mvn exec:java
141

  
142
Desde el eclipse
143
------------------
144

  
145
Seleccione el proyecto ``org.gvsig.educa.portableview.main`` en el *Project tree* de la *Java perspective*, haga click con el bot?n derecho y seleccione ``Run as.../Java application``. Seleccione la clase ``Main`` del propio proyecto.
146

  
147
Si tiene problemas al ejecutar, compruebe la nota de la secci?n `Compilaci?n`_ sobre la importaci?n del proyecto.
148

  
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/pom.xml
1
<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">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.educa.portableview.app</artifactId>
6
    <version>1.0.235</version>
7
  </parent>
8
  <artifactId>org.gvsig.educa.portableview.app.viewer</artifactId>
9
  <name>org.gvsig.educa.portableview.app.viewer</name>
10

  
11

  
12

  
13
  <dependencies>
14
            <dependency>
15
                <groupId>org.gvsig</groupId>
16
                <artifactId>org.gvsig.ui</artifactId>
17
  		<scope>compile</scope>
18
            </dependency>
19
  	<dependency>
20
  		<groupId>org.gvsig</groupId>
21
  		<artifactId>org.gvsig.andami</artifactId>
22
  		<scope>compile</scope>
23
  	</dependency>
24
  	<dependency>
25
  		<groupId>org.gvsig</groupId>
26
  		<artifactId>org.gvsig.app.mainplugin</artifactId>
27
  		<scope>compile</scope>
28
  	</dependency>
29
  	<dependency>
30
  		<groupId>org.gvsig</groupId>
31
  		<artifactId> org.gvsig.educa.portableview.swing.api </artifactId>
32
  		<scope>compile</scope>
33
  	</dependency>
34
  	<dependency>
35
  		<groupId>org.gvsig</groupId>
36
  		<artifactId> org.gvsig.educa.portableview.swing.impl </artifactId>
37
  		<scope>runtime</scope>
38
  	</dependency>
39
  	<dependency>
40
  		<groupId>org.gvsig</groupId>
41
  		<artifactId>org.gvsig.educa.portableview.lib.api</artifactId>
42
  		<scope>compile</scope>
43
  	</dependency>
44
  	<dependency>
45
  		<groupId>org.gvsig</groupId>
46
  		<artifactId>org.gvsig.educa.portableview.lib.impl</artifactId>
47
  		<scope>runtime</scope>
48
  	</dependency>
49

  
50
  	<dependency>
51
  		<groupId>org.gvsig</groupId>
52
  		<artifactId> org.gvsig.educa.portableview.lib.prov.installer </artifactId>
53
  		<scope>compile</scope>
54
  	</dependency>
55
  </dependencies>
56
  	<properties>
57
		<gvsig.package.info.state>testing</gvsig.package.info.state>
58
        <gvsig.package.info.official>true</gvsig.package.info.official>
59
		<gvsig.package.info.dependencies>required: org.gvsig.app -ge 2.1.0</gvsig.package.info.dependencies>
60
        <gvsig.package.info.categories>Portable View</gvsig.package.info.categories>
61
        <gvsig.package.info.name>Portable View: viewer</gvsig.package.info.name>
62
        <gvsig.package.info.description>Portable View document: Read-only views which could share in packages (installed from standard gvSIG add-on installer)</gvsig.package.info.description>
63
        <gvsig.package.info.owner>gvSIG Association</gvsig.package.info.owner>
64
        <gvsig.package.info.javaVM>j1_6</gvsig.package.info.javaVM>
65
        <gvsig.package.info.sourcesURL>${project.scm.url}</gvsig.package.info.sourcesURL>
66
		<gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-educa/pool</gvsig.package.info.poolURL>
67
    </properties>
68

  
69
</project>
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/buildNumber.properties
1
#Tue Sep 05 10:43:02 CEST 2023
2
buildNumber=247
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/assembly/gvsig-plugin-package.xml
1
<assembly>
2
  <id>gvsig-plugin-package</id>
3
  <formats>
4
    <format>zip</format>
5
  </formats>
6
  <baseDirectory>${project.artifactId}</baseDirectory>
7
  <includeBaseDirectory>true</includeBaseDirectory>
8
  <files>
9
    <file>
10
      <source>target/${project.artifactId}-${project.version}.jar</source>
11
      <outputDirectory>lib</outputDirectory>
12
    </file>
13
    <file>
14
      <source>target/package.info</source>
15
    </file>
16
  </files>
17

  
18
  <fileSets>
19
    <fileSet>
20
      <directory>src/main/resources-plugin</directory>
21
      <outputDirectory>.</outputDirectory>
22
    </fileSet>
23
  </fileSets>
24

  
25
  <dependencySets>
26
    <dependencySet>
27
      <useProjectArtifact>false</useProjectArtifact>
28
      <useTransitiveDependencies>false</useTransitiveDependencies>
29
      <outputDirectory>lib</outputDirectory>
30
      <includes>
31
		<include>org.gvsig:org.gvsig.educa.portableview.lib.api</include>
32
		<include>org.gvsig:org.gvsig.educa.portableview.lib.impl</include>
33
		<include>org.gvsig:org.gvsig.educa.portableview.lib.prov.installer</include>
34
		<include>org.gvsig:org.gvsig.educa.portableview.swing.api</include>
35
		<include>org.gvsig:org.gvsig.educa.portableview.swing.impl</include>
36
      </includes>
37
    </dependencySet>
38
  </dependencySets>
39

  
40
</assembly>
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewExtension.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.educa.portableview.app.viewer;
23

  
24
import java.io.File;
25
import java.util.ArrayList;
26
import java.util.List;
27

  
28
import org.gvsig.about.AboutManager;
29
import org.gvsig.about.AboutParticipant;
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.plugins.Extension;
32
import org.gvsig.app.ApplicationLocator;
33
import org.gvsig.app.ApplicationManager;
34
import org.gvsig.educa.portableview.PortableViewLocator;
35
import org.gvsig.educa.portableview.PortableViewManager;
36
import org.gvsig.educa.portableview.app.viewer.ui.TocImageProvider;
37
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator;
38
import org.gvsig.educa.portableview.swing.PortableViewSwingManager;
39
import org.gvsig.installer.lib.api.InstallerLocator;
40
import org.gvsig.installer.lib.api.InstallerManager;
41

  
42
/**
43
 * Andami extension to show PortableView in the application.
44
 *
45
 * @author gvSIG Team
46
 * @version $Id$
47
 */
48
public class PortableViewExtension extends Extension {
49

  
50
    private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory
51
        .getLogger(PortableViewExtension.class);
52

  
53
    private PortableViewManager manager;
54
    private PortableViewSwingManager swingManager;
55

  
56
    public void initialize() {
57
        // Do nothing
58
    }
59

  
60
    @Override
61
    public void postInitialize() {
62
        super.postInitialize();
63
        manager = PortableViewLocator.getManager();
64
        swingManager = PortableViewSwingLocator.getSwingManager();
65
        InstallerManager installerManager = InstallerLocator.getInstallerManager();
66

  
67
        // Register the document's manager
68
        PortableViewDocumentManager.register();
69

  
70
        File appUserFolder =
71
            PluginServices.getPluginServices(this).getPluginHomeFolder();
72
        File portableViewIntallFolder = new File(appUserFolder, "portableViews");
73
        LOG.debug("Try Portable View instalation folder: '{}'",
74
            portableViewIntallFolder.getAbsolutePath());
75
        if (!portableViewIntallFolder.exists()) {
76
            LOG.debug("Creating Portable View instalation folder: '{}'",
77
                portableViewIntallFolder.getAbsolutePath());
78

  
79
            if (!portableViewIntallFolder.mkdirs()) {
80
                LOG.warn("Cant create Portable View folder: '{}'");
81
            }
82

  
83
        }
84
        LOG.info("Using Portable View instalation folder: '{}'",
85
            portableViewIntallFolder.getAbsolutePath());
86
        manager.setInstallationMapFolder(portableViewIntallFolder
87
            .getAbsolutePath());
88

  
89
        swingManager.setDefaultTocImageProvider(new TocImageProvider());
90

  
91
        installerManager.setDefaultLocalAddonRepository(
92
                new File(manager.getInstallationMapFolder()),
93
                PortableViewManager.INSTALLER_PROVIDER_NAME
94
        );
95
        
96
        registerAbout();
97

  
98
    }
99

  
100
    /**
101
     *
102
     */
103
    private void registerAbout() {
104
        // Register the about panel
105
        ApplicationManager application = ApplicationLocator.getManager();
106

  
107
        AboutManager about = application.getAbout();
108

  
109
        List<AboutParticipant> participants = new ArrayList<AboutParticipant>();
110

  
111
        participants.add(about.addDeveloper("DISID", this.getClass()
112
            .getClassLoader().getResource("about/disid.html"), 1));
113

  
114
        participants.add(about.addDeveloper("UdelaR.uy", this.getClass()
115
            .getClassLoader().getResource("about/universidad.edu.uy.html"), 1));
116

  
117
        participants.add(about.addSponsor("MTOP.gub.uy", this.getClass()
118
            .getClassLoader().getResource("about/MTOP.html"), 1));
119

  
120
        for (AboutParticipant participant : participants) {
121
            participant
122
                .addContribution(
123
                    "PortableViewExtension",
124
                    "Portable View document: read-only views which could share in packages (installed from standard gvSIG add-on installer)",
125
                    2011, 11, 1, 2012, 2, 29);
126
        }
127

  
128
    }
129

  
130
    public void execute(String actionCommand) {
131
        // TODO
132
    }
133

  
134
    public boolean isEnabled() {
135
        return true;
136
    }
137

  
138
    public boolean isVisible() {
139
        return true;
140
    }
141

  
142
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewBasicMapControlExtension.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.educa.portableview.app.viewer;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.andami.plugins.Extension;
26
import org.gvsig.andami.ui.mdiManager.IWindow;
27
import org.gvsig.app.project.documents.view.toolListeners.PanListener;
28
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
29
import org.gvsig.app.project.documents.view.toolListeners.ZoomInListener;
30
import org.gvsig.app.project.documents.view.toolListeners.ZoomOutListener;
31
import org.gvsig.educa.portableview.app.viewer.ui.PortableViewDocumentViewer;
32
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator;
33
import org.gvsig.educa.portableview.swing.viewer.MapControlToolRegistrant;
34
import org.gvsig.educa.portableview.swing.viewer.PortableViewViewer;
35
import org.gvsig.fmap.mapcontext.MapContext;
36
import org.gvsig.fmap.mapcontext.ViewPort;
37
import org.gvsig.fmap.mapcontrol.MapControl;
38
import org.gvsig.fmap.mapcontrol.tools.ZoomOutRightButtonListener;
39
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
40
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
41
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseWheelBehavior;
42
import org.gvsig.fmap.mapcontrol.tools.Behavior.MoveBehavior;
43
import org.gvsig.fmap.mapcontrol.tools.Behavior.PointBehavior;
44
import org.gvsig.fmap.mapcontrol.tools.Behavior.RectangleBehavior;
45

  
46
/**
47
 * Register and manage basic navigation tools to {@link PortableViewViewer}
48
 *
49
 * @author gvSIG Team
50
 * @version $Id$
51
 *
52
 */
53
public class PortableViewBasicMapControlExtension extends Extension implements
54
    MapControlToolRegistrant {
55

  
56
    private static final String VIEW_NAVIGATION_ZOOM_BACK = "view-navigation-zoom-back";
57
	private static final String VIEW_NAVIGATION_ZOOM_ALL = "view-navigation-zoom-all";
58
	private static final String VIEW_NAVIGATION_ZOOM_OUT_TOPOINT = "view-navigation-zoom-out-topoint";
59
	private static final String VIEW_NAVIGATION_ZOOM_IN_TOPOINT = "view-navigation-zoom-in-topoint";
60
	private static final String VIEW_NAVIGATION_ZOOM_OUT_CENTER = "view-navigation-zoom-out-center";
61
	private static final String VIEW_NAVIGATION_ZOOM_IN_CENTER = "view-navigation-zoom-in-center";
62
	private static final String VIEW_NAVIGATION_PAN = "view-navigation-pan";
63
	private static final String VIEW_CHANGE_SCALE = "view-change-scale";
64
	public static final String TOOL_PAN_ID = "pan";
65
    public static final String TOOL_ZOOM_IN_ID = "zoomIn";
66
    public static final String TOOL_ZOOM_OUT_ID = "zoomOut";
67

  
68
    public void initialize() {
69
        // Nothing to do
70

  
71
    }
72

  
73
    @Override
74
    public void postInitialize() {
75

  
76
        // Register tools
77
        PortableViewSwingLocator.getSwingManager().addMapControlRegistrant(this);
78
    }
79

  
80
    @Override
81
    public void execute(String actionCommand, Object[] args) {
82
        MapControl mapCtrl = getCurrentMapControl();
83
        if (mapCtrl == null) {
84
        	return;
85
        }
86
        MapContext mapa = mapCtrl.getMapContext();
87
    	if (actionCommand.equals(VIEW_CHANGE_SCALE)) {
88
            long scale = ((Number)args[0]).longValue();
89
            mapa.setScaleView(scale);
90
            return;
91
        }
92
    }
93

  
94
    public void execute(String actionCommand) {
95
        MapControl mapCtrl = getCurrentMapControl();
96
        if (mapCtrl == null) {
97
        	return;
98
        }
99
        MapContext mapa = mapCtrl.getMapContext();
100

  
101
        if (actionCommand.equals(VIEW_NAVIGATION_ZOOM_ALL)) {
102
            mapa.getViewPort().setEnvelope(mapa.getLayers().getFullEnvelope());
103
            return;
104
        }
105
        if (actionCommand.equals(VIEW_NAVIGATION_PAN)) {
106
            mapCtrl.setTool(TOOL_PAN_ID);
107
            return;
108
        }
109
        if (actionCommand.equals(VIEW_NAVIGATION_ZOOM_IN_TOPOINT)) {
110
            mapCtrl.setTool(TOOL_ZOOM_IN_ID);
111
            return;
112
        }
113
        if (actionCommand.equals(VIEW_NAVIGATION_ZOOM_OUT_TOPOINT)) {
114
            mapCtrl.setTool(TOOL_ZOOM_OUT_ID);
115
            return;
116
        }
117
        if (actionCommand.equals(VIEW_NAVIGATION_ZOOM_IN_CENTER)) {
118
            mapCtrl.zoomIn();
119
            return;
120
        }
121
        if (actionCommand.equals(VIEW_NAVIGATION_ZOOM_OUT_CENTER)) {
122
            mapCtrl.zoomOut();
123
            return;
124
        }
125
        if (actionCommand.equals(VIEW_NAVIGATION_ZOOM_BACK)) {
126
            ViewPort vp = mapCtrl.getViewPort();
127
            if (vp.getEnvelopes().hasPrevious()) {
128
                vp.setPreviousEnvelope();
129
            } else {
130
                // Zoom Full
131
                vp.setEnvelope(mapa.getLayers().getFullEnvelope());
132
            }
133
        }
134

  
135
    }
136

  
137
	private MapControl getCurrentMapControl() {
138
		IWindow window = PluginServices.getMDIManager().getActiveWindow();
139
        if (!(window instanceof PortableViewDocumentViewer)) {
140
            return null;
141
        }
142
        PortableViewDocumentViewer tmDocViewer =
143
            (PortableViewDocumentViewer) window;
144
        MapControl mapCtrl = tmDocViewer.getViewer().getMapControl();
145
		return mapCtrl;
146
	}
147

  
148
    public boolean isEnabled() {
149
        return true;
150
    }
151

  
152
    public boolean isVisible() {
153
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
154
        return window instanceof PortableViewDocumentViewer;
155
    }
156

  
157
    public void registerTools(MapControl mapControl) {
158

  
159
        // Adds tools to mapControl
160
        // mouseWhell
161
        mapControl.addCombinedBehavior(new MouseWheelBehavior());
162

  
163
        // From
164
        // org.gvsig.app.project.documents.view.gui.DefaultViewPanel#initComponents()
165

  
166
        // Listener de eventos de movimiento que pone las coordenadas del rat?n
167
        // en la barra de estado
168
        StatusBarListener sbl = new StatusBarListener(mapControl);
169

  
170
        // Zoom out (pinchas y el mapa se centra y te muestra m?s).
171
        // No es dibujando un rect?ngulo, es solo pinchando.
172

  
173
        ZoomOutListener zol = new ZoomOutListener(mapControl);
174

  
175
        mapControl.addBehavior(TOOL_ZOOM_OUT_ID, new Behavior[] {
176
            new PointBehavior(zol), new MouseMovementBehavior(sbl) });
177

  
178
        // pan
179
        PanListener pl = new PanListener(mapControl);
180
        mapControl.addBehavior(TOOL_PAN_ID, new Behavior[] {
181
            new MoveBehavior(pl), new MouseMovementBehavior(sbl) });
182

  
183
        // Zoom por rect?ngulo
184
        ZoomOutRightButtonListener zoil =
185
            new ZoomOutRightButtonListener(mapControl);
186
        ZoomInListener zil = new ZoomInListener(mapControl);
187
        mapControl.addBehavior(TOOL_ZOOM_IN_ID, new Behavior[] {
188
            new RectangleBehavior(zil), new PointBehavior(zoil),
189
            new MouseMovementBehavior(sbl) });
190

  
191
        // Medici?n
192

  
193
    }
194

  
195
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewDocument.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.educa.portableview.app.viewer;
23

  
24
import java.beans.PropertyChangeEvent;
25
import java.beans.PropertyChangeListener;
26
import java.io.IOException;
27

  
28
import org.apache.commons.lang3.ObjectUtils;
29
import org.apache.commons.lang3.StringUtils;
30
import org.gvsig.app.project.Project;
31
import org.gvsig.app.project.ProjectManager;
32
import org.gvsig.app.project.documents.AbstractDocument;
33
import org.gvsig.app.project.documents.DocumentManager;
34
import org.gvsig.app.project.documents.view.ViewDocument;
35
import org.gvsig.educa.portableview.PortableViewLocator;
36
import org.gvsig.educa.portableview.PortableViewManager;
37
import org.gvsig.educa.portableview.app.viewer.exception.PortableViewLoadingException;
38
import org.gvsig.educa.portableview.app.viewer.exception.PortableViewNotFoundException;
39
import org.gvsig.educa.portableview.map.CantLoadContextException;
40
import org.gvsig.educa.portableview.map.InvalidPortableViewFormatException;
41
import org.gvsig.educa.portableview.map.PortableView;
42
import org.gvsig.educa.portableview.map.PortableViewInformation;
43
import org.gvsig.fmap.mapcontext.MapContext;
44
import org.gvsig.tools.persistence.PersistentState;
45
import org.gvsig.tools.persistence.exception.PersistenceException;
46

  
47
/**
48
 * PortableView document
49
 *
50
 * @author gvSIG Team
51
 * @version $Id$
52
 *
53
 */
54
public class PortableViewDocument extends AbstractDocument implements
55
    PropertyChangeListener {
56

  
57
    /**
58
     *
59
     */
60
    private static final long serialVersionUID = 1241724510305853337L;
61

  
62
    private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory
63
        .getLogger(PortableViewDocument.class);
64

  
65
    private final PortableViewManager thMapManager;
66

  
67
    private PortableView portableView;
68
    private ViewDocument sourceView;
69

  
70
    public PortableViewDocument() {
71
        this(null);
72
    }
73

  
74
    public PortableViewDocument(DocumentManager factory) {
75
        super(factory);
76
        thMapManager = PortableViewLocator.getManager();
77
        portableView = null;
78
    }
79

  
80
    public PortableViewDocument(DocumentManager factory, PortableView map) {
81
        this(factory);
82
        setPortableView(map);
83
    }
84

  
85
    /**
86
     * @param map
87
     */
88
    protected void setPortableView(PortableView map) {
89
        if (portableView != null) {
90
            throw new IllegalStateException("Portable view already set");
91
        }
92
        portableView = map;
93
        super.setName(map.getInformation().getName());
94
    }
95

  
96
    public PortableView getPortableView() {
97
        return portableView;
98
    }
99

  
100
    public void reloadPortableView() throws InvalidPortableViewFormatException,
101
        CantLoadContextException, IOException {
102
        if (portableView == null) {
103
            throw new IllegalStateException("Portable not set");
104
        }
105

  
106
        try {
107
            portableView.close();
108
        } catch (IOException ex) {
109
            // TODO
110
        }
111
        PortableView newMap =
112
            thMapManager.getMapById(portableView.getInformation().getId());
113

  
114
        newMap.open();
115

  
116
        // TODO raise a propertyChange event (need access to supper
117
        // propertySupport
118
        portableView = newMap;
119

  
120
    }
121

  
122
    @Override
123
    public void setCreationDate(String string) {
124
        throw new UnsupportedOperationException();
125
    }
126

  
127
    @Override
128
    public String getCreationDate() {
129
        if (portableView == null) {
130
            return null;
131
        }
132
        return portableView.getInformation().getCreationTimestamp().toString();
133
    }
134

  
135
    @Override
136
    public void setOwner(String string) {
137
        throw new UnsupportedOperationException();
138
    }
139

  
140
    @Override
141
    public String getOwner() {
142
        return null;
143
    }
144

  
145
    /**
146
     *
147
     */
148
    @Override
149
    public void loadFromState(PersistentState state)
150
        throws PersistenceException {
151
        String id = state.getString("id");
152
        String name = state.getString("name");
153
        String comment = state.getString("comment");
154
        int version = state.getInt("version");
155
        ViewDocument sourceView = (ViewDocument) state.get("sourceView");
156
        int bn = state.getInt("buildNumber");
157

  
158
        PortableView map;
159
        try {
160
            map = thMapManager.getMapById(id);
161
        } catch (Exception ex) {
162
            throw new PortableViewLoadingException(ex, id, version, bn);
163
        }
164
        if (map == null) {
165
            throw new PortableViewNotFoundException(id, version, bn);
166
        }
167
        PortableViewInformation info = map.getInformation();
168

  
169
        if (info.getVersion() != version) {
170
            // XXX Make anything else
171
            LOG.warn(
172
                "Version number of PortableView {} no match: in project '{}', installed '{}'",
173
                new Object[] { id, version, info.getVersion() });
174

  
175
        } else
176
            if (info.getBuildNumber() != bn) {
177
                LOG.warn(
178
                    "Version number of PortableView {} no match: in project '{}', installed '{}'",
179
                    new Object[] { id, bn, info.getBuildNumber() });
180
            }
181

  
182
        this.portableView = map;
183
        this.sourceView = sourceView;
184
        listenProjectChanges(sourceView != null);
185
        super.setName(name);
186
        super.setComment(comment);
187
    }
188

  
189
    @Override
190
    public void saveToState(PersistentState state) throws PersistenceException {
191
        state.set("id", portableView.getInformation().getId());
192
        state.set("name", getName());
193
        state.set("comment", getComment());
194
        state.set("version", portableView.getInformation().getVersion());
195
        state.set("buildNumber", portableView.getInformation().getBuildNumber());
196
        state.set("sourceView", sourceView);
197
    }
198

  
199
    /**
200
     * @param map
201
     * @return
202
     */
203
    public boolean isMap(PortableView map) {
204
        return ObjectUtils.equals(portableView, map);
205
    }
206

  
207
    public MapContext getMapContext() {
208
        if (portableView == null) {
209
            return null;
210
        }
211
        return portableView.getMapContext();
212
    }
213

  
214
    /**
215
     * @param sourceView
216
     *            the sourceView to set
217
     */
218
    public void setSourceView(ViewDocument sourceView) {
219
        // TODO raise a propertyChange event
220
        this.sourceView = sourceView;
221
        listenProjectChanges(sourceView != null);
222
    }
223

  
224
    /**
225
     * Start or left to listen project changes (to get notify if related
226
     * document has been removed)
227
     *
228
     * @param listen
229
     */
230
    private void listenProjectChanges(boolean listen) {
231
        if (listen) {
232
            ProjectManager.getInstance().getCurrentProject()
233
                .addPropertyChangeListener(this);
234
        } else {
235
            // TODO remove this instance from project listener (NO API
236
            // TO DO IT)
237

  
238
        }
239
    }
240

  
241
    /**
242
     * @return the sourceView
243
     */
244
    public ViewDocument getSourceView() {
245
        return sourceView;
246
    }
247

  
248
    public void propertyChange(PropertyChangeEvent evt) {
249
        if (evt.getSource() instanceof Project) {
250
            // Check if removed related view
251
            if (sourceView == null) {
252
                listenProjectChanges(false);
253
                return;
254
            }
255
            if (StringUtils.equals(evt.getPropertyName(), "delDocument")) {
256
                if (ObjectUtils.equals(evt.getOldValue(), sourceView)) {
257
                    sourceView = null;
258
                    listenProjectChanges(false);
259
                }
260
            }
261
        }
262
    }
263

  
264
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewInfoByPointToolsExtension.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.educa.portableview.app.viewer;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.andami.plugins.Extension;
26
import org.gvsig.andami.ui.mdiManager.IWindow;
27
import org.gvsig.app.project.documents.view.toolListeners.InfoListener;
28
import org.gvsig.educa.portableview.app.viewer.ui.PortableViewDocumentViewer;
29
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator;
30
import org.gvsig.educa.portableview.swing.viewer.MapControlToolRegistrant;
31
import org.gvsig.fmap.mapcontext.layers.FLayers;
32
import org.gvsig.fmap.mapcontrol.MapControl;
33
import org.gvsig.fmap.mapcontrol.tools.Behavior.PointBehavior;
34

  
35
/**
36
 * PortableView Info-by-point tool
37
 *
38
 * @author gvSIG Team
39
 * @version $Id$
40
 *
41
 */
42
public class PortableViewInfoByPointToolsExtension extends Extension implements
43
    MapControlToolRegistrant {
44

  
45
    private static final String LAYER_INFO_BY_POINT = "layer-info-by-point";
46

  
47
	public void initialize() {
48
        // Nothing to do
49

  
50
    }
51

  
52
    @Override
53
    public void postInitialize() {
54

  
55
        // Register tools
56
        PortableViewSwingLocator.getSwingManager().addMapControlRegistrant(this);
57
    }
58

  
59
    public boolean isEnabled() {
60
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
61

  
62
        if (window instanceof PortableViewDocumentViewer) {
63
            PortableViewDocumentViewer viewer =
64
                (PortableViewDocumentViewer) window;
65

  
66
            FLayers layers =
67
                viewer.getPortableView().getMapContext().getLayers();
68

  
69
            for (int i = 0; i < layers.getLayersCount(); i++) {
70
                if (layers.getLayer(i).isAvailable()) {
71
                    return true;
72
                }
73
            }
74
        }
75
        return false;
76
    }
77

  
78
    public boolean isVisible() {
79
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
80
        return window instanceof PortableViewDocumentViewer;
81
    }
82

  
83
    public void registerTools(MapControl mapControl) {
84

  
85
        // Info por punto
86
        InfoListener il = new InfoListener(mapControl);
87
        mapControl.addBehavior("info", new PointBehavior(il));
88

  
89
    }
90

  
91
    public void execute(String actionCommand) {
92
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
93
        if (!(window instanceof PortableViewDocumentViewer)) {
94
            return;
95
        }
96
        PortableViewDocumentViewer tmDocViewer =
97
            (PortableViewDocumentViewer) window;
98
        MapControl mapCtrl = tmDocViewer.getViewer().getMapControl();
99
        if (actionCommand.equals(LAYER_INFO_BY_POINT)) {
100
            mapCtrl.setTool("info");
101
        }
102
    }
103
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewMeasureToolsExtension.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.educa.portableview.app.viewer;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.andami.plugins.Extension;
26
import org.gvsig.andami.ui.mdiManager.IWindow;
27
import org.gvsig.app.project.documents.view.toolListeners.AreaListener;
28
import org.gvsig.app.project.documents.view.toolListeners.MeasureListener;
29
import org.gvsig.educa.portableview.app.viewer.ui.PortableViewDocumentViewer;
30
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator;
31
import org.gvsig.educa.portableview.swing.viewer.MapControlToolRegistrant;
32
import org.gvsig.fmap.mapcontext.layers.FLayers;
33
import org.gvsig.fmap.mapcontrol.MapControl;
34
import org.gvsig.fmap.mapcontrol.tools.Behavior.PolygonBehavior;
35
import org.gvsig.fmap.mapcontrol.tools.Behavior.PolylineBehavior;
36

  
37
/**
38
 * PortableView Measure tool extension
39
 *
40
 * @author gvSIG Team
41
 * @version $Id$
42
 *
43
 */
44
public class PortableViewMeasureToolsExtension extends Extension implements
45
    MapControlToolRegistrant {
46

  
47
    private static final String VIEW_QUERY_AREA = "view-query-area";
48
	private static final String VIEW_QUERY_DISTANCE = "view-query-distance";
49

  
50
	public void initialize() {
51
        // Nothing to do
52

  
53
    }
54

  
55
    @Override
56
    public void postInitialize() {
57

  
58
        // Register tools
59
        PortableViewSwingLocator.getSwingManager().addMapControlRegistrant(this);
60
    }
61

  
62
    public boolean isEnabled() {
63
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
64

  
65
        if (window instanceof PortableViewDocumentViewer) {
66
            PortableViewDocumentViewer viewer =
67
                (PortableViewDocumentViewer) window;
68

  
69
            FLayers layers =
70
                viewer.getPortableView().getMapContext().getLayers();
71

  
72
            for (int i = 0; i < layers.getLayersCount(); i++) {
73
                if (layers.getLayer(i).isAvailable()) {
74
                    return true;
75
                }
76
            }
77
        }
78
        return false;
79
    }
80

  
81
    public boolean isVisible() {
82
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
83
        return window instanceof PortableViewDocumentViewer;
84
    }
85

  
86
    public void registerTools(MapControl mapControl) {
87
        // Medir
88

  
89
        MeasureListener mli = new MeasureListener(mapControl);
90
        mapControl.addBehavior("medicion", new PolylineBehavior(mli));
91

  
92
        // Area
93
        AreaListener ali = new AreaListener(mapControl);
94
        mapControl.addBehavior("area", new PolygonBehavior(ali));
95

  
96
    }
97

  
98
    public void execute(String actionCommand) {
99
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
100
        if (!(window instanceof PortableViewDocumentViewer)) {
101
            return;
102
        }
103
        PortableViewDocumentViewer tmDocViewer =
104
            (PortableViewDocumentViewer) window;
105
        MapControl mapCtrl = tmDocViewer.getViewer().getMapControl();
106
        if (actionCommand.equals(VIEW_QUERY_DISTANCE)) {
107
            mapCtrl.setTool("medicion");
108
        }
109
        if (actionCommand.equals(VIEW_QUERY_AREA)) {
110
            mapCtrl.setTool("area");
111
        }
112
    }
113
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewDocumentManager.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.educa.portableview.app.viewer;
23

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

  
28
import javax.swing.ImageIcon;
29

  
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.app.project.Project;
33
import org.gvsig.app.project.ProjectManager;
34
import org.gvsig.app.project.documents.AbstractDocument;
35
import org.gvsig.app.project.documents.AbstractDocumentManager;
36
import org.gvsig.app.project.documents.Document;
37
import org.gvsig.app.project.documents.gui.IDocumentWindow;
38
import org.gvsig.app.project.documents.gui.WindowLayout;
39
import org.gvsig.app.project.documents.view.ViewDocument;
40
import org.gvsig.educa.portableview.PortableViewManager;
41
import org.gvsig.educa.portableview.app.viewer.ui.PortableViewDocumentProperties;
42
import org.gvsig.educa.portableview.app.viewer.ui.PortableViewDocumentViewer;
43
import org.gvsig.educa.portableview.app.viewer.ui.PortableViewSelector;
44
import org.gvsig.educa.portableview.map.PortableView;
45
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator;
46
import org.gvsig.educa.portableview.swing.PortableViewSwingManager;
47
import org.gvsig.tools.ToolsLocator;
48
import org.gvsig.tools.dynobject.DynObjectManager;
49
import org.gvsig.tools.dynobject.DynStruct;
50
import org.gvsig.tools.persistence.PersistenceManager;
51
import org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE;
52

  
53
/**
54
 * @author gvSIG Team
55
 * @version $Id$
56
 *
57
 */
58
public class PortableViewDocumentManager extends AbstractDocumentManager {
59

  
60
    public static final String PERSISTENCE_PORTABLEVIEW_DOCUMENT_DEFINITION_NAME =
61
        "PortableViewDocument";
62

  
63
    public static String TYPENAME = "project.document.portableView";
64

  
65
    private DynStruct persistenceDefinition = null;
66

  
67
    private final PortableViewSwingManager tmSwingManager;
68

  
69
    private final PortableViewManager tmManager;
70

  
71
    /**
72
     * Registers in the points of extension the Factory with alias.
73
     *
74
     */
75
    public static void register() {
76

  
77
        PortableViewDocumentManager factory = new PortableViewDocumentManager();
78

  
79
        ProjectManager.getInstance().registerDocumentFactory(factory);
80

  
81
        registerIcons();
82

  
83
        PersistenceManager manager = ToolsLocator.getPersistenceManager();
84
        manager.registerFactory(factory);
85

  
86
        if (factory.persistenceDefinition == null) {
87
            DynObjectManager dynman = ToolsLocator.getDynObjectManager();
88
            factory.persistenceDefinition =
89
                dynman.createDynClass(PersistenceManager.PERSISTENCE_NAMESPACE,
90
                    PERSISTENCE_PORTABLEVIEW_DOCUMENT_DEFINITION_NAME,
91
                    "Portable view document Persistence definition");
92

  
93
            factory.persistenceDefinition.addDynFieldString("id").setMandatory(
94
                true);
95
            factory.persistenceDefinition.addDynFieldInt("version")
96
                .setMandatory(true);
97
            factory.persistenceDefinition.addDynFieldInt("buildNumber")
98
                .setMandatory(true);
99
            factory.persistenceDefinition.addDynFieldString("name")
100
                .setMandatory(true);
101
            factory.persistenceDefinition.addDynFieldString("comment")
102
                .setMandatory(false);
103
            factory.persistenceDefinition.addDynFieldObject("sourceView")
104
                .setMandatory(false).setClassOfValue(ViewDocument.class);
105

  
106
        }
107

  
108
    }
109

  
110
    /**
111
     *
112
     */
113
    private static void registerIcons() {
114
        PluginServices.getIconTheme().registerDefault(
115
            "document-portableview-icon",
116
            PortableViewDocumentManager.class.getClassLoader().getResource(
117
                "images/document-portableview-icon.png"));
118
        PluginServices.getIconTheme().registerDefault(
119
            "document-portableview-icon-sel",
120
            PortableViewDocumentManager.class.getClassLoader().getResource(
121
                "images/document-portableview-icon-sel.png"));
122
    }
123

  
124
    /**
125
     *
126
     */
127
    public PortableViewDocumentManager() {
128
        tmSwingManager = PortableViewSwingLocator.getSwingManager();
129
        tmManager = tmSwingManager.getManager();
130
    }
131

  
132
    @Override
133
    public ImageIcon getIcon() {
134
        if (!PluginServices.getIconTheme().exists("document-portableview-icon")) {
135
            registerIcons();
136
        }
137
        return PluginServices.getIconTheme().get("document-portableview-icon");
138
    }
139

  
140
    @Override
141
    public ImageIcon getIconSelected() {
142
        if (!PluginServices.getIconTheme().exists(
143
            "document-portableview-icon-sel")) {
144
            registerIcons();
145
        }
146
        return PluginServices.getIconTheme().get(
147
            "document-portableview-icon-sel");
148
    }
149

  
150
    @Override
151
    public String getTitle() {
152
        return tmSwingManager.getTranslation("Portable_View");
153
    }
154

  
155
    public String getTypeName() {
156
        return TYPENAME;
157
    }
158

  
159
    public AbstractDocument createDocument() {
160
        return new PortableViewDocument(this);
161
    }
162

  
163
    public PortableViewDocument createDocument(PortableView portableView) {
164
        return new PortableViewDocument(this, portableView);
165
    }
166

  
167
    @Override
168
    public AbstractDocument createDocumentByUser() {
169
        Iterator<? extends Document> iterator = createDocumentsByUser();
170
        if (iterator == null || !iterator.hasNext()) {
171
            return null;
172
        }
173
        return (AbstractDocument) iterator.next();
174
    }
175

  
176
    @Override
177
    public Iterator<? extends Document> createDocumentsByUser() {
178
        PortableViewSelector selector =
179
            new PortableViewSelector(this, tmManager.getInstalledMaps());
180
        tmSwingManager.getWindowManager().showWindow(selector,
181
            tmSwingManager.getTranslation("open_portable_view"), MODE.DIALOG);
182

  
183
        if (selector.getDocuments() == null
184
            || selector.getDocuments().isEmpty()) {
185
            return Arrays.asList(new Document[] {}).iterator();
186
        }
187
        return selector.getDocuments().iterator();
188
    }
189

  
190
    public IWindow getMainWindow(Document doc, WindowLayout layout) {
191
        IDocumentWindow portableViewPanel;
192
        portableViewPanel =
193
            (IDocumentWindow) PluginServices.getMDIManager()
194
                .getSingletonWindow(getMainWindowClass(), doc);
195
        if (portableViewPanel != null) {
196
            // The window document is already created, return it.
197
            return portableViewPanel;
198
        }
199

  
200
        portableViewPanel = this.createDocumentWindow(doc);
201
        if (layout != null && portableViewPanel != null) {
202
            portableViewPanel.setWindowLayout(layout);
203
        }
204
        return portableViewPanel;
205
    }
206

  
207
    public IWindow getPropertiesWindow(Document doc) {
208
        PortableViewDocumentProperties propertiesPanel =
209
            (PortableViewDocumentProperties) PluginServices.getMDIManager()
210
                .getSingletonWindow(PortableViewDocumentProperties.class, doc);
211
        if (propertiesPanel != null) {
212
            // The table window document is already created, return it.
213
            return propertiesPanel;
214
        }
215

  
216
        propertiesPanel =
217
            new PortableViewDocumentProperties((PortableViewDocument) doc);
218
        return propertiesPanel;
219
    }
220

  
221
    public Class<? extends IDocumentWindow> getMainWindowClass() {
222
        return PortableViewDocumentViewer.class;
223
    }
224

  
225
    public boolean manages(Object object) {
226
        return object instanceof PortableViewDocument;
227
    }
228

  
229
    public DynStruct getDefinition(String className) {
230
        // TODO review it
231
        if (this.persistenceDefinition.getName().equalsIgnoreCase(className)) {
232
            return this.persistenceDefinition;
233
        }
234
        if (this.persistenceDefinition.getFullName()
235
            .equalsIgnoreCase(className)) {
236
            return this.persistenceDefinition;
237
        }
238
        if (this.getDocumentClass().getName().equals(className)) {
239
            return this.persistenceDefinition;
240
        }
241
        return null;
242
    }
243

  
244
    @SuppressWarnings("rawtypes")
245
    @Override
246
    protected Class getDocumentClass() {
247
        return PortableViewDocument.class;
248
    }
249

  
250
    /**
251
     * Gets the first document which map is the specified
252
     *
253
     * @param curMap
254
     * @return
255
     */
256
    public PortableViewDocument getDocumentForMap(PortableView map) {
257
        if (map == null) {
258
            return null;
259
        }
260
        List<Document> docs = getProject().getDocuments(TYPENAME);
261
        for (Document document : docs) {
262
            if (((PortableViewDocument) document).isMap(map)) {
263
                return (PortableViewDocument) document;
264
            }
265
        }
266
        return null;
267
    }
268

  
269
    /**
270
     * Gets current project
271
     *
272
     * @return
273
     */
274
    private Project getProject() {
275
        return ProjectManager.getInstance().getCurrentProject();
276
    }
277
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/ui/TocImageProvider.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.educa.portableview.app.viewer.ui;
23

  
24
import javax.swing.ImageIcon;
25

  
26
import org.gvsig.andami.PluginServices;
27
import org.gvsig.educa.portableview.swing.viewer.PortableViewTocImageProvider;
28
import org.gvsig.fmap.mapcontext.layers.FLayer;
29
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
30
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
31

  
32
/**
33
 * Image provider for Portable View TOC items
34
 *
35
 * @author gvSIG Team
36
 * @version $Id$
37
 *
38
 */
39
public class TocImageProvider implements PortableViewTocImageProvider {
40

  
41
    public ImageIcon getImageIconForLayer(FLayer layer) {
42
        return PluginServices.getIconTheme().get(layer.getTocImageIcon());
43
    }
44

  
45
    public ImageIcon getSymbolPreview(ISymbol symbol, FLayer sourceLayer) {
46
        // Use default
47
        return null;
48
    }
49

  
50
    public ImageIcon getUnavailableIconForLayer(){
51
    	return PluginServices.getIconTheme().get("layer-unavialable");
52
    }
53

  
54
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.235/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/ui/PortableViewDocumentViewer.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.educa.portableview.app.viewer.ui;
23

  
24
import java.awt.GridLayout;
25
import java.beans.PropertyChangeEvent;
26
import java.beans.PropertyChangeListener;
27
import java.io.IOException;
28

  
29
import javax.help.UnsupportedOperationException;
30
import javax.swing.BorderFactory;
31
import javax.swing.JPanel;
32

  
33
import org.cresques.cts.IProjection;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff