Revision 693

View differences:

org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.81/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.81/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.educa.portableview.app.viewer;
23

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

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

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

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

  
53
    private PortableViewManager manager;
54
    private PortableViewSwingManager swingManager;
55

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

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

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

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

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

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

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

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

  
98
    }
99

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

  
107
        AboutManager about = application.getAbout();
108

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

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

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

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

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

  
128
    }
129

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

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

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

  
142
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.81/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewBasicMapControlExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.educa.portableview.app.viewer;
23

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

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

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

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

  
71
    }
72

  
73
    @Override
74
    public void postInitialize() {
75

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

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

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

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

  
135
    }
136

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

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

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

  
157
    public void registerTools(MapControl mapControl) {
158

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

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

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

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

  
173
        ZoomOutListener zol = new ZoomOutListener(mapControl);
174

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

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

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

  
191
        // Medici?n
192

  
193
    }
194

  
195
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.81/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewDocument.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.educa.portableview.app.viewer;
23

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

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

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

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

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

  
65
    private final PortableViewManager thMapManager;
66

  
67
    private PortableView portableView;
68
    private ViewDocument sourceView;
69

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

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

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

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

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

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

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

  
114
        newMap.open();
115

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

  
120
    }
121

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  
238
        }
239
    }
240

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

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

  
264
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.81/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewInfoByPointToolsExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.educa.portableview.app.viewer;
23

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

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

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

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

  
50
    }
51

  
52
    @Override
53
    public void postInitialize() {
54

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

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

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

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

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

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

  
83
    public void registerTools(MapControl mapControl) {
84

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

  
89
    }
90

  
91
    public void execute(String actionCommand) {
92
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
93
        if (!(window instanceof PortableViewDocumentViewer)) {
94
            return;
95
        }
96
        PortableViewDocumentViewer tmDocViewer =
97
            (PortableViewDocumentViewer) window;
98
        MapControl mapCtrl = tmDocViewer.getViewer().getMapControl();
99
        if (actionCommand.equals(LAYER_INFO_BY_POINT)) {
100
            mapCtrl.setTool("info");
101
        }
102
    }
103
}
org.gvsig.educa.portableview/tags/org.gvsig.educa.portableview-1.0.81/org.gvsig.educa.portableview.app/org.gvsig.educa.portableview.app.viewer/src/main/java/org/gvsig/educa/portableview/app/viewer/PortableViewMeasureToolsExtension.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.educa.portableview.app.viewer;
23

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

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

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

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

  
53
    }
54

  
55
    @Override
56
    public void postInitialize() {
57

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

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

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

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

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

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

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

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

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

  
96
    }
97

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

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff