Revision 459
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.36/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.36/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.36</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.36/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/buildNumber.properties | ||
---|---|---|
1 |
#Sun Feb 21 12:16:47 CET 2016 |
|
2 |
buildNumber=46 |
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.36/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.36/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.36/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/ui/PortableViewDocumentProperties.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.FlowLayout; |
|
25 |
import java.awt.GridBagConstraints; |
|
26 |
import java.awt.GridBagLayout; |
|
27 |
import java.awt.GridLayout; |
|
28 |
import java.awt.Insets; |
|
29 |
import java.awt.event.ActionEvent; |
|
30 |
|
|
31 |
import javax.swing.AbstractAction; |
|
32 |
import javax.swing.BorderFactory; |
|
33 |
import javax.swing.JButton; |
|
34 |
import javax.swing.JPanel; |
|
35 |
import javax.swing.JScrollPane; |
|
36 |
import javax.swing.JTextArea; |
|
37 |
import javax.swing.JTextField; |
|
38 |
|
|
39 |
import org.apache.commons.lang3.StringUtils; |
|
40 |
import org.gvsig.andami.PluginServices; |
|
41 |
import org.gvsig.andami.ui.mdiManager.SingletonWindow; |
|
42 |
import org.gvsig.andami.ui.mdiManager.WindowInfo; |
|
43 |
import org.gvsig.educa.portableview.app.viewer.PortableViewDocument; |
|
44 |
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator; |
|
45 |
import org.gvsig.educa.portableview.swing.PortableViewSwingManager; |
|
46 |
import org.gvsig.educa.portableview.swing.PortableViewWindowManager.MESSAGE_DIALOG_TYPE; |
|
47 |
import org.gvsig.educa.portableview.swing.viewer.PortableViewInforamtionViewer; |
|
48 |
import org.gvsig.gui.beans.swing.GridBagLayoutPanel; |
|
49 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
50 |
import org.gvsig.tools.swing.api.usability.UsabilitySwingManager; |
|
51 |
|
|
52 |
/** |
|
53 |
* @author gvSIG Team |
|
54 |
* @version $Id$ |
|
55 |
* |
|
56 |
*/ |
|
57 |
public class PortableViewDocumentProperties extends JPanel implements |
|
58 |
SingletonWindow { |
|
59 |
|
|
60 |
/** |
|
61 |
* |
|
62 |
*/ |
|
63 |
private static final long serialVersionUID = 8865766314251281948L; |
|
64 |
|
|
65 |
private static final int DEFAULT_HEIGHT = 450; |
|
66 |
|
|
67 |
private static final int DEFAULT_WIDTH = 700; |
|
68 |
|
|
69 |
private final PortableViewDocument model; |
|
70 |
private final PortableViewSwingManager tmSwingManager; |
|
71 |
private final UsabilitySwingManager usabManager; |
|
72 |
private WindowInfo windowInfo; |
|
73 |
|
|
74 |
private JTextField name; |
|
75 |
|
|
76 |
private PortableViewInforamtionViewer info; |
|
77 |
|
|
78 |
private JTextArea comments; |
|
79 |
|
|
80 |
private JButton acceptButton; |
|
81 |
|
|
82 |
private JButton cancelButton; |
|
83 |
|
|
84 |
private JTextField sourceViewName; |
|
85 |
|
|
86 |
/** |
|
87 |
* @param doc |
|
88 |
*/ |
|
89 |
public PortableViewDocumentProperties(PortableViewDocument doc) { |
|
90 |
super(); |
|
91 |
model = doc; |
|
92 |
tmSwingManager = PortableViewSwingLocator.getSwingManager(); |
|
93 |
usabManager = ToolsSwingLocator.getUsabilitySwingManager(); |
|
94 |
initializeUI(); |
|
95 |
} |
|
96 |
|
|
97 |
/** |
|
98 |
* |
|
99 |
*/ |
|
100 |
private void initializeUI() { |
|
101 |
setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); |
|
102 |
setLayout(new GridBagLayout()); |
|
103 |
|
|
104 |
GridBagConstraints gbcBase = createBaseGridBagContraints(); |
|
105 |
|
|
106 |
// add name |
|
107 |
JPanel namePanel = createNamePanel(); |
|
108 |
add(namePanel, gbcBase.clone()); |
|
109 |
|
|
110 |
// add ThMap info |
|
111 |
JPanel infoPanel = createInfoPanel(); |
|
112 |
GridBagConstraints gbc = (GridBagConstraints) gbcBase.clone(); |
|
113 |
gbc.fill = GridBagConstraints.BOTH; |
|
114 |
gbc.weighty = 1; |
|
115 |
add(infoPanel, gbc); |
|
116 |
|
|
117 |
// add comments |
|
118 |
JPanel commentPanel = createCommentsPanel(); |
|
119 |
add(commentPanel, gbcBase.clone()); |
|
120 |
|
|
121 |
// add command panel |
|
122 |
JPanel commandsPanel = createCommandPanel(); |
|
123 |
add(commandsPanel, gbcBase.clone()); |
|
124 |
|
|
125 |
} |
|
126 |
|
|
127 |
/** |
|
128 |
* @return |
|
129 |
*/ |
|
130 |
private GridBagConstraints createBaseGridBagContraints() { |
|
131 |
GridBagConstraints gbcBase = new GridBagConstraints(); |
|
132 |
|
|
133 |
gbcBase.gridx = GridBagConstraints.RELATIVE; |
|
134 |
gbcBase.gridy = GridBagConstraints.RELATIVE; |
|
135 |
gbcBase.gridheight = 1; |
|
136 |
gbcBase.gridwidth = GridBagConstraints.REMAINDER; |
|
137 |
gbcBase.insets = new Insets(5, 5, 5, 5); |
|
138 |
gbcBase.fill = GridBagConstraints.HORIZONTAL; |
|
139 |
gbcBase.weightx = 1; |
|
140 |
gbcBase.weighty = 0; |
|
141 |
return gbcBase; |
|
142 |
} |
|
143 |
|
|
144 |
/** |
|
145 |
* @return |
|
146 |
*/ |
|
147 |
private JPanel createCommandPanel() { |
|
148 |
JPanel commandsPanel = |
|
149 |
new JPanel(new FlowLayout(FlowLayout.TRAILING, 10, 10)); |
|
150 |
acceptButton = |
|
151 |
usabManager.createJButton(new AbstractAction(tmSwingManager |
|
152 |
.getTranslation("accept")) { |
|
153 |
|
|
154 |
/** |
|
155 |
* |
|
156 |
*/ |
|
157 |
private static final long serialVersionUID = |
|
158 |
-1782481065769162438L; |
|
159 |
|
|
160 |
public void actionPerformed(ActionEvent e) { |
|
161 |
accept(); |
|
162 |
|
|
163 |
} |
|
164 |
|
|
165 |
}); |
|
166 |
commandsPanel.add(acceptButton); |
|
167 |
cancelButton = |
|
168 |
usabManager.createJButton(new AbstractAction(tmSwingManager |
|
169 |
.getTranslation("cancel")) { |
|
170 |
|
|
171 |
/** |
|
172 |
* |
|
173 |
*/ |
|
174 |
private static final long serialVersionUID = |
|
175 |
2955490218831066658L; |
|
176 |
|
|
177 |
public void actionPerformed(ActionEvent e) { |
|
178 |
close(); |
|
179 |
|
|
180 |
} |
|
181 |
|
|
182 |
}); |
|
183 |
commandsPanel.add(cancelButton); |
|
184 |
return commandsPanel; |
|
185 |
} |
|
186 |
|
|
187 |
/** |
|
188 |
* @return |
|
189 |
*/ |
|
190 |
private JPanel createNamePanel() { |
|
191 |
GridBagLayoutPanel namePanel = new GridBagLayoutPanel(); |
|
192 |
name = new JTextField(model.getName()); |
|
193 |
namePanel.addComponent(tmSwingManager.getTranslation("name"), name); |
|
194 |
sourceViewName = new JTextField(); |
|
195 |
sourceViewName.setEditable(false); |
|
196 |
if (model.getSourceView() != null) { |
|
197 |
sourceViewName.setText(model.getSourceView().getName()); |
|
198 |
namePanel.addComponent( |
|
199 |
tmSwingManager.getTranslation("source_view"), sourceViewName); |
|
200 |
} |
|
201 |
return namePanel; |
|
202 |
} |
|
203 |
|
|
204 |
/** |
|
205 |
* @return |
|
206 |
*/ |
|
207 |
private JPanel createInfoPanel() { |
|
208 |
JPanel infoPanel = new JPanel(new GridLayout()); |
|
209 |
info = tmSwingManager.newInformationViewer(); |
|
210 |
info.loadMapInformation(model.getPortableView()); |
|
211 |
infoPanel.add(new JScrollPane(info.getSwingComponent())); |
|
212 |
infoPanel.setBorder(BorderFactory.createTitledBorder(tmSwingManager |
|
213 |
.getTranslation("portable_view_information"))); |
|
214 |
return infoPanel; |
|
215 |
} |
|
216 |
|
|
217 |
/** |
|
218 |
* @return |
|
219 |
*/ |
|
220 |
private JPanel createCommentsPanel() { |
|
221 |
GridBagLayoutPanel commentPanel = new GridBagLayoutPanel(); |
|
222 |
comments = new JTextArea(model.getComment()); |
|
223 |
JScrollPane commentsScroll = new JScrollPane(comments); |
|
224 |
commentPanel.addComponent(tmSwingManager.getTranslation("comments"), |
|
225 |
commentsScroll); |
|
226 |
return commentPanel; |
|
227 |
} |
|
228 |
|
|
229 |
private void accept() { |
|
230 |
if (StringUtils.isBlank(name.getText())) { |
|
231 |
tmSwingManager.getWindowManager().showMessageDialog(this, |
|
232 |
tmSwingManager.getTranslation("portable_view_properties"), |
|
233 |
tmSwingManager.getTranslation("name_is_required"), |
|
234 |
MESSAGE_DIALOG_TYPE.ERROR); |
|
235 |
return; |
|
236 |
} |
|
237 |
model.setName(name.getText()); |
|
238 |
model.setComment(comments.getText()); |
|
239 |
close(); |
|
240 |
} |
|
241 |
|
|
242 |
public void close() { |
|
243 |
PluginServices.getMDIManager().closeWindow(this); |
|
244 |
} |
|
245 |
|
|
246 |
public WindowInfo getWindowInfo() { |
|
247 |
if (windowInfo == null) { |
|
248 |
windowInfo = |
|
249 |
new WindowInfo(WindowInfo.MAXIMIZABLE | WindowInfo.RESIZABLE); |
|
250 |
|
|
251 |
windowInfo.setTitle(tmSwingManager |
|
252 |
.getTranslation("portable_view_properties")); |
|
253 |
|
|
254 |
windowInfo.setWidth(DEFAULT_WIDTH); |
|
255 |
windowInfo.setHeight(DEFAULT_HEIGHT); |
|
256 |
} |
|
257 |
return windowInfo; |
|
258 |
} |
|
259 |
|
|
260 |
public Object getWindowProfile() { |
|
261 |
return WindowInfo.PROPERTIES_PROFILE; |
|
262 |
} |
|
263 |
|
|
264 |
public Object getWindowModel() { |
|
265 |
return model; |
|
266 |
} |
|
267 |
|
|
268 |
} |
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.36/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.36/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; |
|
34 |
import org.gvsig.andami.PluginServices; |
|
35 |
import org.gvsig.andami.ui.mdiFrame.NewStatusBar; |
|
36 |
import org.gvsig.andami.ui.mdiManager.IWindowTransform; |
|
37 |
import org.gvsig.andami.ui.mdiManager.WindowInfo; |
|
38 |
import org.gvsig.app.project.documents.Document; |
|
39 |
import org.gvsig.app.project.documents.gui.IDocumentWindow; |
|
40 |
import org.gvsig.app.project.documents.gui.WindowLayout; |
|
41 |
import org.gvsig.educa.portableview.app.viewer.PortableViewBasicMapControlExtension; |
|
42 |
import org.gvsig.educa.portableview.app.viewer.PortableViewDocument; |
|
43 |
import org.gvsig.educa.portableview.map.CantLoadContextException; |
|
44 |
import org.gvsig.educa.portableview.map.InvalidPortableViewFormatException; |
|
45 |
import org.gvsig.educa.portableview.map.PortableView; |
|
46 |
import org.gvsig.educa.portableview.map.PortableViewInformation; |
|
47 |
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator; |
|
48 |
import org.gvsig.educa.portableview.swing.PortableViewSwingManager; |
|
49 |
import org.gvsig.educa.portableview.swing.viewer.PortableViewViewer; |
|
50 |
import org.gvsig.fmap.mapcontext.MapContext; |
|
51 |
import org.gvsig.fmap.mapcontext.events.ColorEvent; |
|
52 |
import org.gvsig.fmap.mapcontext.events.ExtentEvent; |
|
53 |
import org.gvsig.fmap.mapcontext.events.ProjectionEvent; |
|
54 |
import org.gvsig.fmap.mapcontext.events.listeners.ViewPortListener; |
|
55 |
import org.gvsig.fmap.mapcontrol.MapControl; |
|
56 |
|
|
57 |
/** |
|
58 |
* Document Window to show PortableViews |
|
59 |
* |
|
60 |
* @author gvSIG Team |
|
61 |
* @version $Id$ |
|
62 |
* |
|
63 |
*/ |
|
64 |
public class PortableViewDocumentViewer extends JPanel implements |
|
65 |
IDocumentWindow, IWindowTransform, PropertyChangeListener { |
|
66 |
|
|
67 |
/** |
|
68 |
* |
|
69 |
*/ |
|
70 |
private static final long serialVersionUID = 6987853732480183690L; |
|
71 |
|
|
72 |
private static final int DEFAULT_HEIGHT = 450; |
|
73 |
|
|
74 |
private static final int DEFAULT_WIDTH = 700; |
|
75 |
|
|
76 |
private WindowInfo windowInfo; |
|
77 |
private final PortableViewDocument model; |
|
78 |
private boolean isPalette = false; |
|
79 |
|
|
80 |
private final PortableViewSwingManager tmSwingManager; |
|
81 |
|
|
82 |
private PortableViewViewer viewer; |
|
83 |
|
|
84 |
private String title; |
|
85 |
|
|
86 |
private ViewPortListener viewPortListener; |
|
87 |
|
|
88 |
/** |
|
89 |
* Default contructor |
|
90 |
* |
|
91 |
* @throws IOException |
|
92 |
* @throws CantLoadContextException |
|
93 |
* @throws InvalidPortableViewFormatException |
|
94 |
* |
|
95 |
*/ |
|
96 |
public PortableViewDocumentViewer(Document document) |
|
97 |
throws InvalidPortableViewFormatException, CantLoadContextException, |
|
98 |
IOException { |
|
99 |
super(); |
|
100 |
model = (PortableViewDocument) document; |
|
101 |
tmSwingManager = PortableViewSwingLocator.getSwingManager(); |
|
102 |
setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); |
|
103 |
setLayout(new GridLayout(1, 1)); |
|
104 |
|
|
105 |
model.addPropertyChangeListener(this); |
|
106 |
|
|
107 |
updateViewer(); |
|
108 |
updateTitle(); |
|
109 |
} |
|
110 |
|
|
111 |
/** |
|
112 |
* Gets the title for this window |
|
113 |
* |
|
114 |
* @return |
|
115 |
*/ |
|
116 |
public String getTitle() { |
|
117 |
return title; |
|
118 |
} |
|
119 |
|
|
120 |
/** |
|
121 |
* Update the panel title |
|
122 |
* |
|
123 |
*/ |
|
124 |
protected void updateTitle() { |
|
125 |
title = |
|
126 |
tmSwingManager.getTranslation("Portable_View").concat(": ") |
|
127 |
.concat(this.model.getName()); |
|
128 |
if (windowInfo != null) { |
|
129 |
windowInfo.setTitle(title); |
|
130 |
} |
|
131 |
} |
|
132 |
|
|
133 |
/** |
|
134 |
* Update the view contained in the panel |
|
135 |
* |
|
136 |
* @throws InvalidPortableViewFormatException |
|
137 |
* @throws CantLoadContextException |
|
138 |
* @throws IOException |
|
139 |
*/ |
|
140 |
protected void updateViewer() throws InvalidPortableViewFormatException, |
|
141 |
CantLoadContextException, IOException { |
|
142 |
String toolId = null; |
|
143 |
|
|
144 |
// Remove previous viewer |
|
145 |
if (viewer != null) { |
|
146 |
// backup current tool |
|
147 |
toolId = viewer.getMapControl().getCurrentTool(); |
|
148 |
remove(viewer.getSwingComponent()); |
|
149 |
if (viewPortListener != null) { |
|
150 |
viewer.getMapControl().getViewPort() |
|
151 |
.removeViewPortListener(viewPortListener); |
|
152 |
} |
|
153 |
viewer.dispose(); |
|
154 |
viewer = null; |
|
155 |
} |
|
156 |
|
|
157 |
// create new viewer |
|
158 |
viewer = tmSwingManager.getViewer(model.getPortableView()); |
|
159 |
add(viewer.getSwingComponent()); |
|
160 |
final MapControl mapControl = viewer.getMapControl(); |
|
161 |
|
|
162 |
// restore tool (if any) |
|
163 |
if (toolId != null) { |
|
164 |
mapControl.setTool(toolId); |
|
165 |
} else { |
|
166 |
mapControl.setTool(PortableViewBasicMapControlExtension.TOOL_PAN_ID); |
|
167 |
} |
|
168 |
if (mapControl.getViewPort() != null) { |
|
169 |
viewPortListener = new ViewPortListener() { |
|
170 |
|
|
171 |
public void extentChanged(ExtentEvent e) { |
|
172 |
if (PluginServices.getMainFrame() != null) { |
|
173 |
NewStatusBar statusBar = |
|
174 |
PluginServices.getMainFrame().getStatusBar(); |
|
175 |
statusBar |
|
176 |
.setControlValue("scale", String.valueOf(mapControl |
|
177 |
.getMapContext().getScaleView())); |
|
178 |
statusBar.setMessage("projection", mapControl |
|
179 |
.getViewPort().getProjection().getAbrev()); |
|
180 |
} |
|
181 |
} |
|
182 |
|
|
183 |
public void backColorChanged(ColorEvent e) { |
|
184 |
// Do nothing |
|
185 |
} |
|
186 |
|
|
187 |
public void projectionChanged(ProjectionEvent e) { |
|
188 |
// Do nothing |
|
189 |
} |
|
190 |
}; |
|
191 |
mapControl.getViewPort().addViewPortListener(viewPortListener); |
|
192 |
} |
|
193 |
} |
|
194 |
|
|
195 |
/** |
|
196 |
* @return the viewer |
|
197 |
*/ |
|
198 |
public PortableViewViewer getViewer() { |
|
199 |
return viewer; |
|
200 |
} |
|
201 |
|
|
202 |
/** |
|
203 |
* @return the viewer |
|
204 |
*/ |
|
205 |
public PortableView getPortableView() { |
|
206 |
return viewer.getPortableView(); |
|
207 |
} |
|
208 |
|
|
209 |
/** |
|
210 |
* @return the viewer |
|
211 |
*/ |
|
212 |
public PortableViewInformation getPortableViewInformation() { |
|
213 |
return viewer.getPortableView().getInformation(); |
|
214 |
} |
|
215 |
|
|
216 |
// IWindow interface |
|
217 |
|
|
218 |
public WindowInfo getWindowInfo() { |
|
219 |
if (windowInfo == null) { |
|
220 |
windowInfo = |
|
221 |
new WindowInfo(WindowInfo.ICONIFIABLE | WindowInfo.MAXIMIZABLE |
|
222 |
| WindowInfo.RESIZABLE); |
|
223 |
|
|
224 |
windowInfo.setTitle(getTitle()); |
|
225 |
|
|
226 |
windowInfo.setWidth(DEFAULT_WIDTH); |
|
227 |
windowInfo.setHeight(DEFAULT_HEIGHT); |
|
228 |
} |
|
229 |
return windowInfo; |
|
230 |
} |
|
231 |
|
|
232 |
// SingletonWindow interface |
|
233 |
|
|
234 |
public Object getWindowModel() { |
|
235 |
return this.model; |
|
236 |
} |
|
237 |
|
|
238 |
public void toPalette() { |
|
239 |
isPalette = true; |
|
240 |
windowInfo.toPalette(true); |
|
241 |
windowInfo.setClosed(false); |
|
242 |
PluginServices.getMDIManager().changeWindowInfo(this, getWindowInfo()); |
|
243 |
} |
|
244 |
|
|
245 |
public void restore() { |
|
246 |
isPalette = false; |
|
247 |
windowInfo.toPalette(false); |
|
248 |
windowInfo.setClosed(false); |
|
249 |
PluginServices.getMDIManager().changeWindowInfo(this, getWindowInfo()); |
|
250 |
} |
|
251 |
|
|
252 |
public boolean isPalette() { |
|
253 |
return isPalette; |
|
254 |
} |
|
255 |
|
|
256 |
public Object getWindowProfile() { |
|
257 |
return WindowInfo.EDITOR_PROFILE; |
|
258 |
} |
|
259 |
|
|
260 |
public void windowActivated() { |
|
261 |
NewStatusBar statusbar = PluginServices.getMainFrame().getStatusBar(); |
|
262 |
MapContext mapContext = model.getMapContext(); |
|
263 |
|
|
264 |
statusbar.setMessage("units", |
|
265 |
PluginServices.getText(this, mapContext.getDistanceName())); |
|
266 |
statusbar.setControlValue("scale", |
|
267 |
String.valueOf(mapContext.getScaleView())); |
|
268 |
IProjection proj = viewer.getMapControl().getViewPort().getProjection(); |
|
269 |
if (proj != null) { |
|
270 |
statusbar.setMessage("projection", proj.getAbrev()); |
|
271 |
} else { |
|
272 |
statusbar.setMessage("projection", ""); |
|
273 |
} |
|
274 |
} |
|
275 |
|
|
276 |
public void windowClosed() { |
|
277 |
|
|
278 |
} |
|
279 |
|
|
280 |
public WindowLayout getWindowLayout() { |
|
281 |
return null; |
|
282 |
} |
|
283 |
|
|
284 |
public void setWindowLayout(WindowLayout layout) { |
|
285 |
|
|
286 |
} |
|
287 |
|
|
288 |
public void setDocument(Document document) { |
|
289 |
throw new UnsupportedOperationException(); |
|
290 |
} |
|
291 |
|
|
292 |
public Document getDocument() { |
|
293 |
return model; |
|
294 |
} |
|
295 |
|
|
296 |
public PortableViewDocument getPortableViewDocument() { |
|
297 |
return model; |
|
298 |
} |
|
299 |
|
|
300 |
/** |
|
301 |
* Changes in source document |
|
302 |
* |
|
303 |
*/ |
|
304 |
public void propertyChange(PropertyChangeEvent evt) { |
|
305 |
if (evt.getPropertyName().equals("name")) { |
|
306 |
updateTitle(); |
|
307 |
} else |
|
308 |
if (evt.getPropertyName().equals("portableView")) { |
|
309 |
|
|
310 |
} |
|
311 |
|
|
312 |
} |
|
313 |
|
|
314 |
} |
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.36/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/ui/PortableViewSelector.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.BorderLayout; |
|
25 |
import java.awt.Dimension; |
|
26 |
import java.awt.event.ActionEvent; |
|
27 |
import java.awt.event.MouseAdapter; |
|
28 |
import java.awt.event.MouseEvent; |
|
29 |
import java.util.ArrayList; |
|
30 |
import java.util.Collections; |
|
31 |
import java.util.List; |
|
32 |
|
|
33 |
import javax.swing.AbstractAction; |
|
34 |
import javax.swing.BorderFactory; |
|
35 |
import javax.swing.Box; |
|
36 |
import javax.swing.BoxLayout; |
|
37 |
import javax.swing.JButton; |
|
38 |
import javax.swing.JList; |
|
39 |
import javax.swing.JPanel; |
|
40 |
import javax.swing.JScrollPane; |
|
41 |
import javax.swing.ListSelectionModel; |
|
42 |
import javax.swing.event.ListSelectionEvent; |
|
43 |
import javax.swing.event.ListSelectionListener; |
|
44 |
|
|
45 |
import org.gvsig.educa.portableview.app.viewer.PortableViewDocument; |
|
46 |
import org.gvsig.educa.portableview.app.viewer.PortableViewDocumentManager; |
|
47 |
import org.gvsig.educa.portableview.map.PortableView; |
|
48 |
import org.gvsig.educa.portableview.swing.PortableViewSwingLocator; |
|
49 |
import org.gvsig.educa.portableview.swing.PortableViewSwingManager; |
|
50 |
import org.gvsig.educa.portableview.swing.viewer.PortableViewInforamtionViewer; |
|
51 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
52 |
import org.gvsig.tools.swing.api.usability.UsabilitySwingManager; |
|
53 |
|
|
54 |
/** |
|
55 |
* Open Portable View dialog |
|
56 |
* <p> |
|
57 |
* Allows user to select one o many Portable view to open |
|
58 |
* </p> |
|
59 |
* |
|
60 |
* @author gvSIG Team |
|
61 |
* @version $Id$ |
|
62 |
* |
|
63 |
*/ |
|
64 |
public class PortableViewSelector extends JPanel implements |
|
65 |
ListSelectionListener { |
|
66 |
|
|
67 |
/** |
|
68 |
* |
|
69 |
*/ |
|
70 |
private static final long serialVersionUID = 1L; |
|
71 |
|
|
72 |
@SuppressWarnings("unused") |
|
73 |
private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory |
|
74 |
.getLogger(PortableViewSelector.class); |
|
75 |
|
|
76 |
private final PortableViewSwingManager swingManager; |
|
77 |
private final UsabilitySwingManager usabManager; |
|
78 |
|
|
79 |
private List<PortableView> maps; |
|
80 |
private final List<String> mapNames; |
|
81 |
private JPanel listPanel; |
|
82 |
private JList list; |
|
83 |
private JPanel informationPanel; |
|
84 |
private PortableViewInforamtionViewer information; |
|
85 |
|
|
86 |
private JPanel actionPanel; |
|
87 |
private JButton botOpen; |
|
88 |
private JButton botCancel; |
|
89 |
private PortableView lastSelected; |
|
90 |
|
|
91 |
private int lastSelectedIndex; |
|
92 |
|
|
93 |
private final PortableViewDocumentManager documentManager; |
|
94 |
|
|
95 |
private List<PortableViewDocument> documents; |
|
96 |
|
|
97 |
public PortableViewSelector(PortableViewDocumentManager documentManager, |
|
98 |
List<PortableView> installedMaps) { |
|
99 |
super(); |
|
100 |
|
|
101 |
this.documentManager = documentManager; |
|
102 |
|
|
103 |
swingManager = PortableViewSwingLocator.getSwingManager(); |
|
104 |
|
|
105 |
usabManager = ToolsSwingLocator.getUsabilitySwingManager(); |
|
106 |
|
|
107 |
maps = installedMaps; |
|
108 |
mapNames = new ArrayList<String>(installedMaps.size()); |
|
109 |
for (PortableView map : maps) { |
|
110 |
mapNames.add(map.getInformation().getName()); |
|
111 |
} |
|
112 |
lastSelected = null; |
|
113 |
lastSelectedIndex = -1; |
|
114 |
|
|
115 |
initializeUI(); |
|
116 |
|
|
117 |
} |
|
118 |
|
|
119 |
/** |
|
120 |
* Initialize user interface |
|
121 |
* |
|
122 |
*/ |
|
123 |
private void initializeUI() { |
|
124 |
setLayout(new BorderLayout(10, 10)); |
|
125 |
setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); |
|
126 |
|
|
127 |
setMaximumSize(new Dimension(300, 200)); |
|
128 |
setPreferredSize(new Dimension(800, 600)); |
|
129 |
|
|
130 |
list = new JList(mapNames.toArray()); |
|
131 |
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
|
132 |
list.addListSelectionListener(this); |
|
133 |
|
|
134 |
// Listen to click so it can change map information |
|
135 |
list.addMouseListener(new MouseAdapter() { |
|
136 |
|
|
137 |
@Override |
|
138 |
public void mouseClicked(MouseEvent e) { |
|
139 |
int itemClicked = -1; |
|
140 |
|
|
141 |
// check in visible list element which was clicked |
|
142 |
int firstVisibleIndex = list.getFirstVisibleIndex(); |
|
143 |
if (firstVisibleIndex >= 0) { |
|
144 |
for (int index = firstVisibleIndex; index <= list |
|
145 |
.getLastVisibleIndex(); index++) { |
|
146 |
if (list.getCellBounds(index, index).contains(e.getX(), |
|
147 |
e.getY())) { |
|
148 |
itemClicked = index; |
|
149 |
break; |
|
150 |
} |
|
151 |
} |
|
152 |
} |
|
153 |
if (itemClicked > -1) { |
|
154 |
lastSelection(itemClicked); |
|
155 |
} |
|
156 |
} |
|
157 |
}); |
|
158 |
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); |
|
159 |
|
|
160 |
listPanel = new JPanel(); |
|
161 |
listPanel.setLayout(new BorderLayout(10, 10)); |
|
162 |
listPanel.setBorder(BorderFactory.createTitledBorder(swingManager |
|
163 |
.getTranslation("portable_views_availables"))); |
|
164 |
|
|
165 |
listPanel.add(new JScrollPane(list), BorderLayout.CENTER); |
|
166 |
|
|
167 |
add(listPanel, BorderLayout.WEST); |
|
168 |
|
|
169 |
informationPanel = new JPanel(); |
|
170 |
informationPanel.setLayout(new BorderLayout(5, 5)); |
|
171 |
informationPanel.setBorder(BorderFactory |
|
172 |
.createTitledBorder(swingManager |
|
173 |
.getTranslation("portable_view_information"))); |
|
174 |
|
|
175 |
information = swingManager.newInformationViewer(); |
|
176 |
informationPanel.add(information.getSwingComponent(), |
|
177 |
BorderLayout.CENTER); |
|
178 |
|
|
179 |
add(informationPanel, BorderLayout.CENTER); |
|
180 |
|
|
181 |
actionPanel = new JPanel(); |
|
182 |
BoxLayout actionPanelLayout = new BoxLayout(actionPanel, |
|
183 |
BoxLayout.X_AXIS); |
|
184 |
actionPanel.setLayout(actionPanelLayout); |
|
185 |
|
|
186 |
actionPanel.add(Box.createHorizontalGlue()); |
|
187 |
actionPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); |
|
188 |
|
|
189 |
botOpen = usabManager.createJButton(new AbstractAction(swingManager |
|
190 |
.getTranslation("open_portable_view")) { |
|
191 |
|
|
192 |
/** |
|
193 |
* |
|
194 |
*/ |
|
195 |
private static final long serialVersionUID = -3437007146684939225L; |
|
196 |
|
|
197 |
public void actionPerformed(ActionEvent e) { |
|
198 |
openSelecteds(); |
|
199 |
} |
|
200 |
}); |
|
201 |
botOpen.setEnabled(false); |
|
202 |
|
|
203 |
botCancel = usabManager.createJButton(new AbstractAction(swingManager |
|
204 |
.getTranslation("cancel")) { |
|
205 |
|
|
206 |
/** |
|
207 |
* |
|
208 |
*/ |
|
209 |
private static final long serialVersionUID = -2227776656041247582L; |
|
210 |
|
|
211 |
public void actionPerformed(ActionEvent e) { |
|
212 |
close(); |
|
213 |
} |
|
214 |
}); |
|
215 |
|
|
216 |
actionPanel.add(botOpen); |
|
217 |
actionPanel.add(Box.createHorizontalStrut(10)); |
|
218 |
actionPanel.add(botCancel); |
|
219 |
actionPanel.add(Box.createHorizontalStrut(5)); |
|
220 |
|
|
221 |
add(actionPanel, BorderLayout.SOUTH); |
|
222 |
|
|
223 |
} |
|
224 |
|
|
225 |
/** |
|
226 |
* Opens selecteds portable view |
|
227 |
*/ |
|
228 |
private void openSelecteds() { |
|
229 |
int[] selecteds = list.getSelectedIndices(); |
|
230 |
List<PortableViewDocument> documents = new ArrayList<PortableViewDocument>( |
|
231 |
selecteds.length); |
|
232 |
|
|
233 |
PortableViewDocument document; |
|
234 |
PortableView map; |
|
235 |
for (int index : selecteds) { |
|
236 |
map = maps.get(index); |
|
237 |
// create a new document |
|
238 |
document = documentManager.createDocument(map); |
|
239 |
documents.add(document); |
|
240 |
} |
|
241 |
this.documents = Collections.unmodifiableList(documents); |
|
242 |
|
|
243 |
close(); |
|
244 |
} |
|
245 |
|
|
246 |
/** |
|
247 |
* Close this dialog |
|
248 |
*/ |
|
249 |
private void close() { |
|
250 |
this.setVisible(false); |
|
251 |
maps = null; |
|
252 |
lastSelected = null; |
|
253 |
} |
|
254 |
|
|
255 |
/** |
|
256 |
* Update UI with Portable list selection |
|
257 |
*/ |
|
258 |
public void valueChanged(ListSelectionEvent e) { |
|
259 |
int index = list.getSelectedIndex(); |
|
260 |
if (index == lastSelectedIndex) { |
|
261 |
return; |
|
262 |
} |
|
263 |
lastSelectedIndex = index; |
|
264 |
if (index < 0) { |
|
265 |
cleanInformation(); |
|
266 |
botOpen.setEnabled(false); |
|
267 |
return; |
|
268 |
} |
|
269 |
botOpen.setEnabled(true); |
|
270 |
|
|
271 |
} |
|
272 |
|
|
273 |
/** |
|
274 |
* Cleans information map panel |
|
275 |
*/ |
|
276 |
private void cleanInformation() { |
|
277 |
if (information != null) { |
|
278 |
information.clean(); |
|
279 |
} |
|
280 |
} |
|
281 |
|
|
282 |
/** |
|
283 |
* Set last selected item |
Also available in: Unified diff