Revision 39379

View differences:

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

  
tags/v2_0_0_Build_2060/extensions/org.gvsig.hyperlink.app/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Mon Nov 26 16:14:22 CET 2012
3
buildNumber=2079
tags/v2_0_0_Build_2060/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Mon Nov 26 16:14:23 CET 2012
3
buildNumber=2071
tags/v2_0_0_Build_2060/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_2060/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_2060/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_2060/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_2060/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_2060/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
                Object val = null;
74
                
75
                while (it.hasNext()) {
76
                    Feature feature = (Feature) it.next();
77
                    val = feature.get(fieldName);
78
                    String fieldValue = (val == null) ? "" : val.toString();
79
                    if (!fieldValue.equals("")) {
80
                        try {
81
                            uriList.add(getURI(fieldValue, fileExtension));
82
                        } catch (URISyntaxException e) {
83
                            NotificationManager.addWarning(PluginServices.getText(this,
84
                                "Hyperlink__field_value_is_not_valid_file"),
85
                                e);
86
                        }
87
                    }
88

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

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

  
118
    public FLayer getLayer() {
119
        return _layer;
120
    }
121

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

  
130
    public Object create() {
131
        return this;
132
    }
133

  
134
    public Object create(Object[] args) {
135
        return this;
136
    }
137

  
138
    public Object create(Map args) {
139
        return this;
140
    }
141

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

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

  
159
        // Si el conjunto creado no est? vac?o creamos el vector de URLS
160
        // correspondientes
161
        // a la consulta que hemos hecho.
162

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

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

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

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

  
231
}
0 232

  
tags/v2_0_0_Build_2060/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_2060/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_2060/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_2060/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 postInitialize() {
128
        HyperlinkExtension ext =
129
            (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
130
        layerManager = ext.getLayerManager();
131
    }
132

  
133
    public void initialize() {
134
        //Do nothing
135
    }
136

  
137
}
0 138

  
tags/v2_0_0_Build_2060/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.gvsig.andami.PluginServices;
35
import org.gvsig.andami.ui.mdiManager.IWindow;
36
import org.gvsig.andami.ui.mdiManager.WindowInfo;
37

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

  
53
    private JScrollPane jScrollPane = null;
54
    private WindowInfo m_ViewInfo = null;
55
    private AbstractHyperLinkPanel contents = null;
56
    private static int xpos = 0;
57
    private static int ypos = 0;
58

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

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

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

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

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

  
144
    }
145

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

  
155
    }
156

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

  
166
    }
167

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

  
176
    }
177

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

  
tags/v2_0_0_Build_2060/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_2060/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_2060/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_2060/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

  
81
        if (iString.endsWith("jpg") || iString.endsWith("jpeg")
82
            || iString.endsWith("gif") || iString.endsWith("jp2")) {
83
            // note: it seems jimi si not able to load .jp2 (jpeg2000)
84
            try {
85
                image = new ImageIcon(Jimi.getImage(document.toURL()));
86
            } catch (MalformedURLException e) {
87
                NotificationManager.addWarning(PluginServices.getText(this,
88
                    "Hyperlink_linked_field_doesnot_exist"), e);
89
            }
90
        } else
91
            if (iString.endsWith("png") || iString.endsWith("tiff")
92
                || iString.endsWith("tif") || iString.endsWith("jpg")
93
                || iString.endsWith("ico") || iString.endsWith("xpm")
94
                || iString.endsWith("bmp")) {
95
                // note: it seems jimi si not able to load .tiff images
96
                try {
97
                    image = new ImageIcon(Jimi.getImage(document.toURL()));
98
                } catch (MalformedURLException e) {
99
                    NotificationManager.addWarning(PluginServices.getText(this,
100
                        "Hyperlink_linked_field_doesnot_exist"), e);
101
                }
102
            } else {
103
                try {
104
                    image = new ImageIcon(document.toURL());
105
                } catch (MalformedURLException e) {
106
                    NotificationManager.addWarning(PluginServices.getText(this,
107
                        "Hyperlink_linked_field_doesnot_exist"), e);
108
                }
109
            }
110
        if (image == null)
111
            ; // Incluir error
112
        this.setPreferredSize(new Dimension(image.getIconWidth(),
113
            image.getIconHeight()));
114
        this.setSize(new Dimension(image.getIconWidth(), image.getIconHeight()));
115
        JLabel label = new JLabel(image);
116
        this.add(label);
117
    }
118

  
119
}
0 120

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

Also available in: Unified diff