Revision 1449

View differences:

org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.230/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.230/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/buildNumber.properties
1
#Mon Jun 19 00:47:21 CEST 2023
2
buildNumber=242
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.230/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.230/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.230/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.230/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.230/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.230/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
284
	 *
285
	 * @param index
286
	 */
287
	private void lastSelection(int index) {
288
		cleanInformation();
289
		lastSelected = maps.get(index);
290
		information.loadMapInformation(lastSelected);
291
	}
292

  
293
	/**
294
	 * Return user document (Portable map) selection
295
	 *
296
	 * @return the document
297
	 */
298
	public List<PortableViewDocument> getDocuments() {
299
		return documents;
300
	}
301

  
302
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.230/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/exception/PortableViewNotFoundException.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.exception;
23

  
24
import org.gvsig.tools.persistence.exception.PersistenceException;
25

  
26
/**
27
 * Exception occurs when a project is opening and a Portable view registered on
28
 * it is not installed
29
 *
30
 * @author gvSIG Team
31
 * @version $Id$
32
 *
33
 */
34
public class PortableViewNotFoundException extends PersistenceException {
35

  
36
    /**
37
     *
38
     */
39
    private static final long serialVersionUID = 5394324158268756432L;
40

  
41
    private final static String MESSAGE_FORMAT =
42
        "Portable View not found installed: id:%(id) ver:%(version) bn:%(buildNumber)";
43
    private final static String MESSAGE_KEY =
44
        "_portable_view_not_found_installed";
45

  
46
    private final String id;
47

  
48
    private final int version;
49

  
50
    private final int buildNumber;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff