Revision 33575

View differences:

tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/distribution/distribution.xml
1
<assembly>
2
</assembly>
0 3

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/README.txt
1
Put into this folder the resources needed by your test classes.
2

  
3
This folder is added to the Tests classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, in this folder you can find an example of log4j configuration,
7
prepared to log messages through the console, so logging works when you
8
run your tests classes.
0 9

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<!-- 
5
Log4J configuration file for unit tests execution.
6
 -->
7
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
8

  
9
	<!-- Appender configuration to show logging messages through the console -->
10
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
11
		<layout class="org.apache.log4j.PatternLayout">
12
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
13
		</layout>
14
	</appender>
15

  
16
	<!-- 
17
	Activate logging messages of DEBUG level of higher only for the
18
	org.gvsig.tools packages.
19
	You can put full classes names or packages instead, to configure
20
	logging for all the classes and subpackages of the package.
21
	-->
22
	<category name="org.gvsig.tools">
23
		<priority value="DEBUG" />
24
	</category>
25
	<category name="org.gvsig.hyperlink">
26
		<priority value="DEBUG" />
27
	</category>
28

  
29
	<!-- 
30
	By default, show only logging messages of INFO level or higher, 
31
	through the previously configured CONSOLE appender. 
32
	-->
33
	<root>
34
		<priority value="INFO" />
35
		<appender-ref ref="CONSOLE" />
36
	</root>
37
</log4j:configuration>
0 38

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractHyperLinkPanel.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

  
23
package org.gvsig.hyperlink.app.extension;
24

  
25
import java.io.File;
26
import java.io.IOException;
27
import java.net.URI;
28

  
29
import javax.swing.JPanel;
30

  
31
import org.gvsig.andami.PluginServices;
32

  
33
/**
34
 * This class extends JPanel and implements IExtensioBuilder. Provides the
35
 * methods that will be reimplemented by the descendant class. Creates a panel
36
 * that shows the content of a URI. The necessary code that allows to show the
37
 * content of the URI is provided by the descendant class. Implmenting
38
 * IExtenssionBuilder this class and its the descendant provides a point of
39
 * extension for other extensions.
40
 */
41
public abstract class AbstractHyperLinkPanel extends JPanel {
42

  
43
    protected URI document;
44

  
45
    public AbstractHyperLinkPanel(URI doc) {
46
        super();
47
        document = doc;
48
    }
49

  
50
    public URI getURI() {
51
        return document;
52
    }
53

  
54
    /**
55
     * Tries to make an absolute url from a relative one,
56
     * and returns true if the URL is valid.
57
     * false otherwise
58
     * 
59
     * @return
60
     */
61
    protected boolean checkAndNormalizeURI() {
62
        if (document == null) {
63
            PluginServices.getLogger().warn(PluginServices.getText(this,
64
                "Hyperlink_linked_field_doesnot_exist"));
65
            return false;
66
        } else
67
            if (!document.isAbsolute()) {
68
                try {
69
                    // try as a relative path
70
                    File file =
71
                        new File(document.toString()).getCanonicalFile();
72
                    if (!file.exists()) {
73
                        PluginServices.getLogger()
74
                            .warn(PluginServices.getText(this,
75
                                "Hyperlink_linked_field_doesnot_exist"));
76
                        return false;
77
                    }
78
                    document = file.toURI();
79
                } catch (IOException e) {
80
                    PluginServices.getLogger()
81
                        .warn(PluginServices.getText(this,
82
                            "Hyperlink_linked_field_doesnot_exist"));
83
                    return false;
84
                }
85
            }
86
        return true;
87
    }
88
}
0 89

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/AbstractActionManager.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

  
23
package org.gvsig.hyperlink.app.extension;
24

  
25
import java.util.Map;
26

  
27
public abstract class AbstractActionManager implements ILinkActionManager {
28

  
29
    public boolean hasPanel() {
30
        return false;
31
    }
32

  
33
    public Object create() {
34
        return this;
35
    }
36

  
37
    public Object create(Object[] args) {
38
        return this;
39
    }
40

  
41
    public Object create(Map args) {
42
        return this;
43
    }
44

  
45
}
0 46

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ILinkActionManager.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

  
23
package org.gvsig.hyperlink.app.extension;
24

  
25
import java.net.URI;
26

  
27
import org.gvsig.tools.extensionpoint.ExtensionBuilder;
28

  
29
/**
30
 * TODO document this interface
31
 * This interface must be implemented by format managers for the
32
 * hyperlink tool. A manager is able to load an specific file, either
33
 * by loading it in an AbstractHyperLinkPanel or by opening the proper
34
 * program to do the task.
35
 * 
36
 * Format managers must be registered in the ExtensionPoint named
37
 * "HyperLinkAction" in order to be available in the HyperLink tool.
38
 * 
39
 * @author cesar
40
 * 
41
 */
42
public interface ILinkActionManager extends ExtensionBuilder {
43

  
44
    public void showDocument(URI doc) throws UnsupportedOperationException;
45

  
46
    public boolean hasPanel();
47

  
48
    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException;
49

  
50
    public String getActionCode();
51

  
52
    public String getName();
53

  
54
    public String getDescription();
55
}
0 56

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ILinkLayerManager.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

  
23
package org.gvsig.hyperlink.app.extension.layers;
24

  
25
import java.awt.geom.Point2D;
26
import java.net.URI;
27

  
28
import org.gvsig.fmap.mapcontext.layers.FLayer;
29

  
30
public interface ILinkLayerManager {
31

  
32
    public void setLayer(FLayer layer) throws IncompatibleLayerException;
33

  
34
    public FLayer getLayer();
35

  
36
    public URI[] getLink(Point2D point,
37
        double tolerance,
38
        String fieldName,
39
        String fileExtension);
40

  
41
    public URI[][] getLink(Point2D point,
42
        double tolerance,
43
        String[] fieldName,
44
        String fileExtension);
45

  
46
    public String[] getFieldCandidates();
47
}
0 48

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/IncompatibleLayerException.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

  
23
package org.gvsig.hyperlink.app.extension.layers;
24

  
25
public class IncompatibleLayerException extends Exception {
26

  
27
    public IncompatibleLayerException(Throwable ex) {
28
        super(ex);
29
    }
30

  
31
}
0 32

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/ManagerRegistry.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

  
23
package org.gvsig.hyperlink.app.extension.layers;
24

  
25
import java.util.Comparator;
26
import java.util.HashMap;
27
import java.util.HashSet;
28
import java.util.Iterator;
29
import java.util.TreeSet;
30

  
31
import org.gvsig.fmap.mapcontext.layers.FLayer;
32
import org.gvsig.tools.ToolsLocator;
33
import org.gvsig.tools.extensionpoint.ExtensionPoint;
34
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
35
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
36

  
37
public class ManagerRegistry {
38

  
39
    public static final String EXTENSIONPOINTNAME = "hyperlink.layer.manager";
40
    private ExtensionPoint extensionPoint;
41
    /**
42
     * We will cache the proper manager for each class, so that we don't
43
     * calculate the right one everytime.
44
     * This assumes that no manager will be added after extensions' initialize()
45
     * method, otherwise the
46
     * cached values will be incorrect.
47
     */
48
    private HashMap<Class, String> cachedManagers;
49
    /**
50
     * We will also cache the unmanaged layers (layers without managers).
51
     */
52
    private HashSet<Class> cachedUnmanagedLayers;
53

  
54
    public ManagerRegistry() {
55
        ExtensionPointManager epm = ToolsLocator.getExtensionPointManager();
56
        extensionPoint =
57
            epm.add(EXTENSIONPOINTNAME,
58
                "Registers ILinkToolManagers that are able to manage specific layer types.");
59
        cachedManagers = new HashMap<Class, String>();
60
        cachedUnmanagedLayers = new HashSet<Class>();
61
    }
62

  
63
    public void put(Class layerType, Class manager) {
64
        if (layerType.isInterface()) {
65
            throw new RuntimeException("Interfaces are not supported");
66
        }
67
        if (!ILinkLayerManager.class.isAssignableFrom(manager)) {
68
            throw new RuntimeException("Managers must be of type ILinkLayerManager");
69
        }
70
        extensionPoint.append(layerType.getName(), "", manager);
71
    }
72

  
73
    public ILinkLayerManager get(FLayer layer) throws ClassNotFoundException,
74
        InstantiationException,
75
        IllegalAccessException,
76
        IncompatibleLayerException {
77
        if (cachedManagers.containsKey(layer.getClass())) {
78
            String layerType = cachedManagers.get(layer.getClass());
79
            ILinkLayerManager manager =
80
                (ILinkLayerManager) extensionPoint.create(layerType);
81
            manager.setLayer(layer);
82
            return manager;
83
        } else
84
            if (cachedUnmanagedLayers.contains(layer.getClass())) {
85
                return null;
86
            }
87
        // search for proper manager for this class
88
        Iterator it = extensionPoint.getNames().iterator();
89
        TreeSet<Class> classList = new TreeSet<Class>(new ClassComparator());
90
        while (it.hasNext()) {
91
            String layerType = it.next().toString();
92
            Class layerClass = Class.forName(layerType);
93
            if (layerClass.isInstance(layer)) {
94
                classList.add(layerClass);
95
            }
96
        }
97

  
98
        if (!classList.isEmpty()) {
99
            ILinkLayerManager manager =
100
                (ILinkLayerManager) extensionPoint.create(classList.first()
101
                    .getName());
102
            cachedManagers.put(layer.getClass(), classList.first().getName());
103
            manager.setLayer(layer);
104
            return manager;
105
        } else {
106
            cachedUnmanagedLayers.add(layer.getClass());
107
            return null;
108
        }
109
    }
110

  
111
    public boolean hasManager(FLayer layer) {
112
        if (cachedManagers.containsKey(layer.getClass())) {
113
            return true;
114
        } else
115
            if (cachedUnmanagedLayers.contains(layer.getClass())) {
116
                return false;
117
            }
118

  
119
        Iterator it = extensionPoint.iterator();
120
        while (it.hasNext()) {
121
            Class layerClass = ((Extension) it.next()).getExtension();
122
            if (layerClass.isInstance(layer)) {
123
                return true;
124
            }
125
        }
126

  
127
        cachedUnmanagedLayers.add(layer.getClass());
128
        return false;
129
    }
130

  
131
    private class ClassComparator implements Comparator<Class> {
132

  
133
        public int compare(Class class1, Class class2) {
134
            if (class1.equals(class2))
135
                return 0;
136
            if (class1.isAssignableFrom(class2)) {
137
                return 1;
138
            } else {
139
                return -1;
140
            }
141
        }
142
    }
143
}
0 144

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/layers/VectLayerManager.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

  
23
package org.gvsig.hyperlink.app.extension.layers;
24

  
25
import java.awt.geom.Point2D;
26
import java.io.File;
27
import java.net.URI;
28
import java.net.URISyntaxException;
29
import java.util.ArrayList;
30
import java.util.Map;
31

  
32
import org.gvsig.andami.PluginServices;
33
import org.gvsig.andami.messages.NotificationManager;
34
import org.gvsig.fmap.dal.exception.DataException;
35
import org.gvsig.fmap.dal.feature.Feature;
36
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
37
import org.gvsig.fmap.dal.feature.FeatureSet;
38
import org.gvsig.fmap.dal.feature.FeatureType;
39
import org.gvsig.fmap.mapcontext.layers.FLayer;
40
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
41
import org.gvsig.tools.dataTypes.DataTypes;
42
import org.gvsig.tools.dispose.DisposableIterator;
43

  
44
public class VectLayerManager implements ILinkLayerManager {
45

  
46
    private FLyrVect _layer = null;
47

  
48
    public URI[] getLink(Point2D point,
49
        double tolerance,
50
        String fieldName,
51
        String fileExtension) {
52
        FLyrVect lyrVect = (FLyrVect) _layer;
53
        ArrayList<URI> uriList = new ArrayList();
54
        FeatureSet features;
55
        FeatureType featureType;
56

  
57
        try {
58
            // FIXME: Habr? que ver como lo hacemos con las capas multigeometr?a
59
            featureType = _layer.getFeatureStore().getDefaultFeatureType();
60
            features = lyrVect.queryByPoint(point, tolerance, featureType);
61
        } catch (Exception e) {
62
            return null;
63
        }
64

  
65
        // Si el conjunto creado no est? vac?o creamos el vector de URLS
66
        // correspondientes
67
        // a la consulta que hemos hecho.
68

  
69
        if (features != null) {
70
            try {
71
                DisposableIterator it;
72
                it = features.iterator();
73
                while (it.hasNext()) {
74
                    Feature feature = (Feature) it.next();
75
                    String fieldValue = feature.get(fieldName).toString();
76
                    if (!fieldValue.equals("")) {
77
                        try {
78
                            uriList.add(getURI(fieldValue, fileExtension));
79
                        } catch (URISyntaxException e) {
80
                            NotificationManager.addWarning(PluginServices.getText(this,
81
                                "Hyperlink__field_value_is_not_valid_file"),
82
                                e);
83
                        }
84
                    }
85

  
86
                }
87
                it.dispose();
88
                return (URI[]) uriList.toArray(new URI[0]);
89
            } catch (DataException e1) {
90
                PluginServices.getLogger()
91
                    .error("Hyperlink__cant_get_the_iterator", e1);
92
            }
93
        }
94
        return new URI[0];
95
    }
96

  
97
    protected URI getURI(String baseURI, String extension) throws URISyntaxException {
98
        String stringURI;
99
        if (extension.equals("")) {
100
            stringURI = baseURI;
101
        } else
102
            if (extension.startsWith(".")) {
103
                stringURI = baseURI + extension;
104
            } else {
105
                stringURI = baseURI + "." + extension;
106
            }
107
        File file = new File(stringURI);
108
        if (file.exists()) {
109
            return file.toURI();
110
        } else {
111
            return new URI(stringURI);
112
        }
113
    }
114

  
115
    public FLayer getLayer() {
116
        return _layer;
117
    }
118

  
119
    public void setLayer(FLayer layer) throws IncompatibleLayerException {
120
        try {
121
            _layer = (FLyrVect) layer;
122
        } catch (ClassCastException ex) {
123
            throw new IncompatibleLayerException(ex);
124
        }
125
    }
126

  
127
    public Object create() {
128
        return this;
129
    }
130

  
131
    public Object create(Object[] args) {
132
        return this;
133
    }
134

  
135
    public Object create(Map args) {
136
        return this;
137
    }
138

  
139
    public URI[][] getLink(Point2D point,
140
        double tolerance,
141
        String[] fieldName,
142
        String fileExtension) {
143
        FLyrVect lyrVect = (FLyrVect) _layer;
144
        FeatureSet features;
145
        FeatureType featureType;
146
        URI uri[][] = null;
147

  
148
        try {
149
            // FIXME: Habr? que ver como lo hacemos con las capas multigeometr?a
150
            featureType = _layer.getFeatureStore().getDefaultFeatureType();
151
            features = lyrVect.queryByPoint(point, tolerance, featureType);
152
        } catch (Exception e) {
153
            return null;
154
        }
155

  
156
        // Si el conjunto creado no est? vac?o creamos el vector de URLS
157
        // correspondientes
158
        // a la consulta que hemos hecho.
159

  
160
        if (features != null) {
161
            try {
162
                // Creo el vector de URL?s con la misma longitud que features
163
                uri = new URI[(int) features.getSize()][fieldName.length];
164

  
165
                // Recorremos las features siguiendo el ejemplo de la clase que
166
                // se
167
                // proporciona en la API
168
                int count = 0;
169
                DisposableIterator it = features.iterator();
170
                while (it.hasNext()) {
171
                    Feature feat = (Feature) it.next();
172
                    for (int fieldCount = 0; fieldCount < fieldName.length; fieldCount++) {
173
                        // get the field ID using the field name
174
                        String auxField =
175
                            feat.get(fieldName[fieldCount]).toString();
176
                        if (auxField != null) {
177
                            if (auxField.startsWith("http:/")) {
178
                                try {
179
                                    uri[count][fieldCount] = new URI(auxField);
180
                                } catch (URISyntaxException e) {
181
                                    PluginServices.getLogger().error("", e);
182
                                }
183
                            } else {
184
                                File file = new File(auxField);
185
                                uri[count][fieldCount] = file.toURI();
186
                            }
187
                        } else {
188
                            PluginServices.getLogger()
189
                                .error("Hyperlink error. Field "
190
                                    + fieldName[fieldCount] + "doesn't exist!!");
191
                            uri[count][fieldCount] = null;
192
                        }
193
                    }
194
                    count++;
195
                }
196
                it.dispose();
197

  
198
                return uri;
199
            } catch (DataException e) {
200
                PluginServices.getLogger().error("", e);
201
            }
202
        }
203
        return new URI[0][0];
204
    }
205

  
206
    public String[] getFieldCandidates() {
207
        try {
208
            FeatureType featureType =
209
                _layer.getFeatureStore().getDefaultFeatureType();
210
            ArrayList<String> fields = new ArrayList<String>();
211
            FeatureAttributeDescriptor[] descriptors =
212
                featureType.getAttributeDescriptors();
213
            for (int i = 0; i < descriptors.length; i++) {
214
                FeatureAttributeDescriptor descriptor = descriptors[i];
215
                if (descriptor.getDataType().isNumeric()
216
                    || descriptor.getDataType().getType() == DataTypes.STRING) {
217
                    fields.add(descriptor.getName());
218
                }
219
            }
220
            return (String[]) fields.toArray(new String[0]);
221
        } catch (DataException e) {
222
            NotificationManager.addError(PluginServices.getText(this,
223
                "Error reading layer fields"), e);
224
        }
225
        return new String[0];
226
    }
227

  
228
}
0 229

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/LinkConfigExtension.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

  
23
package org.gvsig.hyperlink.app.extension;
24

  
25
import org.gvsig.andami.PluginServices;
26
import org.gvsig.andami.plugins.Extension;
27
import org.gvsig.andami.ui.mdiManager.IWindow;
28
import org.gvsig.app.project.documents.view.ViewDocument;
29
import org.gvsig.app.project.documents.view.gui.IView;
30
import org.gvsig.fmap.mapcontext.MapContext;
31
import org.gvsig.fmap.mapcontext.layers.FLayer;
32
import org.gvsig.hyperlink.app.extension.config.gui.ConfigTab;
33
import org.gvsig.hyperlink.app.extension.layers.ManagerRegistry;
34
import org.slf4j.Logger;
35
import org.slf4j.LoggerFactory;
36

  
37
/**
38
 * Extensi?n para gestionar los hiperlinks.
39
 * 
40
 * @author Vicente Caballero Navarro
41
 */
42
public class LinkConfigExtension extends Extension {
43

  
44
    private static final Logger logger =
45
        LoggerFactory.getLogger(LinkConfigExtension.class);
46
    ManagerRegistry layerManager;
47

  
48
    /**
49
     * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
50
     */
51
    public void execute(String s) {
52
        logger.debug("Command : " + s);
53

  
54
        if (s.compareTo("LINK_SETTINGS") == 0) {
55
            IView view =
56
                (IView) PluginServices.getMDIManager().getActiveWindow();
57
            HyperlinkExtension ext =
58
                (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
59
            // init tool and load legacy config in case it has been not done
60
            ext.initTool(view);
61
            FLayer[] activas =
62
                view.getMapControl().getMapContext().getLayers().getActives();
63
            for (int i = 0; i < activas.length; i++) {
64
                if (!activas[i].isAvailable()) {
65
                    return;
66
                }
67

  
68
                if (layerManager.hasManager(activas[i])) {
69
                    ConfigTab configWindow = new ConfigTab();
70
                    configWindow.setModel(activas[i]);
71
                    PluginServices.getMDIManager()
72
                        .addCentredWindow(configWindow);
73
                }
74
            }
75

  
76
        }
77
    }
78

  
79
    /**
80
     * @see com.iver.mdiApp.plugins.IExtension#isVisible()
81
     */
82
    public boolean isVisible() {
83
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
84

  
85
        if (window == null) {
86
            return false;
87
        }
88

  
89
        if (window instanceof IView) {
90

  
91
            MapContext mapa =
92
                ((IView) window).getViewDocument().getMapContext();
93

  
94
            return mapa.getLayers().getLayersCount() > 0;
95
        } else {
96
            return false;
97
        }
98
    }
99

  
100
    /**
101
     * @see com.iver.andami.plugins.IExtension#isEnabled()
102
     */
103
    public boolean isEnabled() {
104
        // it will be enabled when there is only ONE active layer, and this
105
        // layer
106
        // is available and has a valid ILayerLinkManager
107
        IWindow window = PluginServices.getMDIManager().getActiveWindow();
108

  
109
        if (window == null) {
110
            return false;
111
        }
112

  
113
        if (window instanceof IView) {
114
            IView view = (IView) window;
115
            ViewDocument model = view.getViewDocument();
116
            FLayer[] activas = model.getMapContext().getLayers().getActives();
117
            if (activas.length == 1) {
118
                if (activas[0].isAvailable()
119
                    && layerManager.hasManager(activas[0])) {
120
                    return true;
121
                }
122
            }
123
        }
124
        return false;
125
    }
126

  
127
    public void initialize() {
128
        HyperlinkExtension ext =
129
            (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
130
        layerManager = ext.getLayerManager();
131
    }
132

  
133
}
0 134

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/ShowPanel.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

  
23
package org.gvsig.hyperlink.app.extension;
24

  
25
import java.awt.BorderLayout;
26
import java.awt.event.ComponentEvent;
27
import java.awt.event.ComponentListener;
28
import java.io.File;
29
import java.net.MalformedURLException;
30

  
31
import javax.swing.JPanel;
32
import javax.swing.JScrollPane;
33

  
34
import org.apache.log4j.Logger;
35
import org.gvsig.andami.PluginServices;
36
import org.gvsig.andami.ui.mdiManager.IWindow;
37
import org.gvsig.andami.ui.mdiManager.WindowInfo;
38

  
39
/**
40
 * This class extends JPanel. This class implements a Panel to show the content
41
 * of the URI
42
 * that the constructor of the class receives. This panel invokes a new one with
43
 * the content
44
 * of the URI. The type of the supported URI should be added like extension
45
 * point in the
46
 * initialization of the extension.
47
 * 
48
 * @author Vicente Caballero Navarro
49
 * @author Eustaquio Vercher
50
 * 
51
 */
52
public class ShowPanel extends JPanel implements IWindow, ComponentListener {
53

  
54
    private static Logger logger = Logger.getLogger(ShowPanel.class.getName());
55
    private JScrollPane jScrollPane = null;
56
    private WindowInfo m_ViewInfo = null;
57
    private AbstractHyperLinkPanel contents = null;
58
    private static int xpos = 0;
59
    private static int ypos = 0;
60

  
61
    public ShowPanel(AbstractHyperLinkPanel contents) {
62
        super();
63
        this.contents = contents;
64
        initialize();
65
    }
66

  
67
    /**
68
     * This method initializes this
69
     */
70
    private void initialize() {
71
        this.setLayout(new BorderLayout());
72
        this.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
73
        getJScrollPane().setViewportView(contents);
74
    }
75

  
76
    /**
77
     * Returns a Scroll Pane with the content of the HyperLink
78
     * 
79
     * @return jScrollPane
80
     */
81
    private JScrollPane getJScrollPane() {
82
        if (jScrollPane == null) {
83
            jScrollPane = new JScrollPane();
84
            // jScrollPane.setPreferredSize(new java.awt.Dimension(300, 400));
85
        }
86
        return jScrollPane;
87
    }
88

  
89
    /*
90
     * (non-Javadoc)
91
     * 
92
     * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
93
     */
94
    public WindowInfo getWindowInfo() {
95
        if (m_ViewInfo == null) {
96
            m_ViewInfo =
97
                new WindowInfo(WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE
98
                    | WindowInfo.ICONIFIABLE | WindowInfo.PALETTE);
99
            if (contents.getURI().toString().startsWith("file:")
100
                && contents.getURI().isAbsolute()) {
101
                try {
102
                    File file = new File(contents.getURI().toURL().getFile());
103
                    m_ViewInfo.setTitle(PluginServices.getText(this,
104
                        "Hyperlink") + " - " + file.getName());
105
                } catch (MalformedURLException e) {
106
                    m_ViewInfo.setTitle(PluginServices.getText(this,
107
                        "Hyperlink") + " - " + contents.getURI().toString());
108
                } catch (NullPointerException e) {
109
                    m_ViewInfo.setTitle(PluginServices.getText(this,
110
                        "Hyperlink") + " - " + contents.getURI().toString());
111
                }
112
            } else {
113
                m_ViewInfo.setTitle(PluginServices.getText(this, "Hyperlink")
114
                    + " - " + contents.getURI().toString());
115
            }
116
            int height = (int) contents.getPreferredSize().getHeight() + 15;
117
            if (height > 650)
118
                height = 650;
119
            else
120
                if (height < 450)
121
                    height = 450;
122
            int width = (int) contents.getPreferredSize().getWidth() + 20;
123
            if (width > 800)
124
                width = 800;
125
            else
126
                if (width < 450)
127
                    width = 450;
128
            m_ViewInfo.setWidth(width);
129
            m_ViewInfo.setHeight(height);
130
            m_ViewInfo.setX(xpos);
131
            xpos = (xpos + 20) % 270;
132
            m_ViewInfo.setY(ypos);
133
            ypos = (ypos + 15) % 150;
134
        }
135
        return m_ViewInfo;
136
    }
137

  
138
    /*
139
     * (non-Javadoc)
140
     * 
141
     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.
142
     * ComponentEvent)
143
     */
144
    public void componentResized(ComponentEvent e) {
145

  
146
    }
147

  
148
    /*
149
     * (non-Javadoc)
150
     * 
151
     * @see
152
     * java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent
153
     * )
154
     */
155
    public void componentMoved(ComponentEvent e) {
156

  
157
    }
158

  
159
    /*
160
     * (non-Javadoc)
161
     * 
162
     * @see
163
     * java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent
164
     * )
165
     */
166
    public void componentShown(ComponentEvent e) {
167

  
168
    }
169

  
170
    /*
171
     * (non-Javadoc)
172
     * 
173
     * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.
174
     * ComponentEvent)
175
     */
176
    public void componentHidden(ComponentEvent e) {
177

  
178
    }
179

  
180
    public Object getWindowProfile() {
181
        return WindowInfo.EDITOR_PROFILE;
182
    }
183
}
0 184

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/PdfFormat.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

  
23
package org.gvsig.hyperlink.app.extension.actions;
24

  
25
import java.io.Serializable;
26
import java.net.URI;
27

  
28
import org.gvsig.andami.PluginServices;
29
import org.gvsig.hyperlink.app.extension.AbstractActionManager;
30
import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
31

  
32
public class PdfFormat extends AbstractActionManager implements Serializable {
33

  
34
    public static final String actionCode = "PDF_format";
35

  
36
    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
37
        return new PdfHyperlinkPanel(doc);
38
    }
39

  
40
    public String getActionCode() {
41
        return actionCode;
42
    }
43

  
44
    public boolean hasPanel() {
45
        return true;
46
    }
47

  
48
    public void showDocument(URI doc) {
49
        throw new UnsupportedOperationException();
50
    }
51

  
52
    public String getDescription() {
53
        return PluginServices.getText(this, "Shows_PDF_files_in_gvSIG");
54
    }
55

  
56
    public String getName() {
57
        return PluginServices.getText(this, "PDF_format");
58
    }
59
}
0 60

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgFormat.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

  
23
package org.gvsig.hyperlink.app.extension.actions;
24

  
25
import java.io.Serializable;
26
import java.net.URI;
27

  
28
import org.gvsig.andami.PluginServices;
29
import org.gvsig.hyperlink.app.extension.AbstractActionManager;
30
import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
31

  
32
public class ImgFormat extends AbstractActionManager implements Serializable {
33

  
34
    public static final String actionCode = "Image_format";
35

  
36
    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
37
        return new ImgPanel(doc);
38
    }
39

  
40
    public String getActionCode() {
41
        return actionCode;
42
    }
43

  
44
    public boolean hasPanel() {
45
        return true;
46
    }
47

  
48
    public void showDocument(URI doc) {
49
        throw new UnsupportedOperationException();
50
    }
51

  
52
    public String getDescription() {
53
        return PluginServices.getText(this, "Shows_image_files_in_gvSIG");
54
    }
55

  
56
    public String getName() {
57
        return PluginServices.getText(this, "Image_format");
58
    }
59
}
0 60

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/SvgFormat.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

  
23
package org.gvsig.hyperlink.app.extension.actions;
24

  
25
import java.io.Serializable;
26
import java.net.URI;
27

  
28
import org.gvsig.andami.PluginServices;
29
import org.gvsig.hyperlink.app.extension.AbstractActionManager;
30
import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
31

  
32
public class SvgFormat extends AbstractActionManager implements Serializable {
33

  
34
    public static final String actionCode = "SVG_format";
35

  
36
    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
37
        return new SvgPanel(doc);
38
    }
39

  
40
    public String getActionCode() {
41
        return actionCode;
42
    }
43

  
44
    public boolean hasPanel() {
45
        return true;
46
    }
47

  
48
    public void showDocument(URI doc) {
49
        throw new UnsupportedOperationException();
50
    }
51

  
52
    public String getDescription() {
53
        return PluginServices.getText(this, "Shows_SVG_files_in_gvSIG");
54
    }
55

  
56
    public String getName() {
57
        return PluginServices.getText(this, "SVG_format");
58
    }
59
}
0 60

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/TxtFormat.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

  
23
package org.gvsig.hyperlink.app.extension.actions;
24

  
25
import java.io.Serializable;
26
import java.net.URI;
27

  
28
import org.gvsig.andami.PluginServices;
29
import org.gvsig.hyperlink.app.extension.AbstractActionManager;
30
import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
31

  
32
public class TxtFormat extends AbstractActionManager implements Serializable {
33

  
34
    public static final String actionCode = "Txt_format";
35

  
36
    public AbstractHyperLinkPanel createPanel(URI doc) throws UnsupportedOperationException {
37
        return new TxtPanel(doc);
38
    }
39

  
40
    public String getActionCode() {
41
        return actionCode;
42
    }
43

  
44
    public boolean hasPanel() {
45
        return true;
46
    }
47

  
48
    public void showDocument(URI doc) {
49
        throw new UnsupportedOperationException();
50
    }
51

  
52
    public String getDescription() {
53
        return PluginServices.getText(this, "Shows_HTML_or_text_files_in_gvSIG");
54
    }
55

  
56
    public String getName() {
57
        return PluginServices.getText(this, "HTML_and_text_formats");
58
    }
59

  
60
}
0 61

  
tags/v2_0_0_Build_2011/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/actions/ImgPanel.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

  
23
package org.gvsig.hyperlink.app.extension.actions;
24

  
25
import java.awt.BorderLayout;
26
import java.awt.Dimension;
27
import java.net.MalformedURLException;
28
import java.net.URI;
29

  
30
import javax.swing.ImageIcon;
31
import javax.swing.JLabel;
32

  
33
import org.gvsig.andami.PluginServices;
34
import org.gvsig.andami.messages.NotificationManager;
35
import org.gvsig.hyperlink.app.extension.AbstractHyperLinkPanel;
36

  
37
import com.sun.jimi.core.Jimi;
38

  
39
/**
40
 * This class extends AbstractHyperLink, and provides suppot to open images of
41
 * many formats.
42
 * The common supported formats are JPG, ICO, BMP, TIFF, GIF and PNG. Implements
43
 * methods from
44
 * IExtensionBuilder to make it extending.
45
 * 
46
 * @author Eustaquio Vercher (IVER)
47
 * @author Cesar Martinez Izquierdo (IVER)
48
 */
49
public class ImgPanel extends AbstractHyperLinkPanel {
50

  
51
    private static final long serialVersionUID = -5200841105188251551L;
52

  
53
    /**
54
     * Default constructor.
55
     */
56
    public ImgPanel(URI doc) {
57
        super(doc);
58
        initialize();
59
    }
60

  
61
    /**
62
     * Initializes this panel.
63
     */
64
    void initialize() {
65
        this.setLayout(new BorderLayout());
66
        showDocument();
67
        // this.setSize(600, 400);
68
    }
69

  
70
    /**
71
     * Implements the necessary code to open images in this panel.
72
     */
73
    protected void showDocument() {
74
        if (!checkAndNormalizeURI()) {
75
            return;
76
        }
77
        ImageIcon image = null;
78
        String iString = document.toString();
79
        iString = iString.toLowerCase();
80

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

Also available in: Unified diff