Revision 39185

View differences:

tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
	<modelVersion>4.0.0</modelVersion>
6
	<artifactId>org.gvsig.hyperlink.app</artifactId>
7
	<packaging>pom</packaging>
8
	<version>1.0.0-SNAPSHOT</version>
9
	<name>org.gvsig.hyperlink.app</name>
10
	<description>View. Hyperlink support</description>
11
    <parent>
12
        <groupId>org.gvsig</groupId>
13
        <artifactId>org.gvsig.maven.base.extension.pom</artifactId>
14
        <version>1.0.8-SNAPSHOT</version>
15
    </parent>
16

  
17
    <scm>
18
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.hyperlink.app</connection>
19
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/extensions/org.gvsig.hyperlink.app</developerConnection>
20
        <url>https://devel.gvsig.org/redmine/projects/gvsig-desktop/repository/show/branches/v2_0_0_prep/extensions/org.gvsig.hyperlink.app</url>
21
    </scm>
22

  
23
	<developers>
24
		<developer>
25
			<id>jjdelcerro</id>
26
			<name>Joaqu?n Jos? del Cerro</name>
27
			<email>jjdelcerro@gvsig.org</email>
28
			<roles>
29
				<role>Architect</role>
30
				<role>Developer</role>
31
			</roles>
32
		</developer>
33
		<developer>
34
			<id>jbadia</id>
35
			<name>Jos? Bad?a</name>
36
			<email>badia_jos@gva.es</email>
37
			<roles>
38
				<role>Developer</role>
39
			</roles>
40
		</developer>
41
		<developer>
42
			<id>cordinyana</id>
43
			<name>C?sar Ordi?ana</name>
44
			<email>cordinyana@gvsig.com</email>
45
			<roles>
46
				<role>Architect</role>
47
				<role>Developer</role>
48
			</roles>
49
		</developer>
50
	</developers>
51

  
52
	<repositories>
53
		<repository>
54
			<id>gvsig-public-http-repository</id>
55
			<name>gvSIG maven public HTTP repository</name>
56
            <url>http://devel.gvsig.org/m2repo/j2se</url>
57
			<releases>
58
				<enabled>true</enabled>
59
				<updatePolicy>daily</updatePolicy>
60
				<checksumPolicy>warn</checksumPolicy>
61
			</releases>
62
			<snapshots>
63
				<enabled>true</enabled>
64
				<updatePolicy>daily</updatePolicy>
65
				<checksumPolicy>warn</checksumPolicy>
66
			</snapshots>
67
		</repository>
68
	</repositories>
69
    <dependencyManagement>
70
        <dependencies>          
71
            <dependency>
72
                <groupId>org.gvsig</groupId>
73
                <artifactId>org.gvsig.core.maven.dependencies</artifactId>
74
                <version>2.0.1-SNAPSHOT</version>
75
                <type>pom</type>
76
                <scope>import</scope>
77
            </dependency>
78
            <dependency>
79
                <groupId>org.gvsig</groupId>
80
                <artifactId>org.gvsig.fmap.dal.store.raster</artifactId>
81
                <version>2.0-SNAPSHOT</version>
82
                <scope>compile</scope>
83
            </dependency>
84
            <dependency>
85
                <groupId>org.gvsig</groupId>
86
                <artifactId>org.gvsig.app</artifactId>
87
                <version>2.0-SNAPSHOT</version>
88
                <scope>compile</scope>
89
            </dependency>
90
            <dependency>
91
                <groupId>org.gvsig</groupId>
92
                <artifactId>org.gvsig.dwg.extension</artifactId>
93
                <version>2.0-SNAPSHOT</version>
94
                <scope>compile</scope>
95
            </dependency>
96
		</dependencies>
97
	</dependencyManagement>
98

  
99
	<modules>
100
		<module>org.gvsig.hyperlink.app.extension</module>
101
	</modules>
102
	<properties>
103
		<package.info.state>devel</package.info.state>
104
		<!-- alpha-devel -->
105
	</properties>
106
</project>
0 107

  
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/README.txt
1
The first time you checkout the current project to a new workspace, 
2
you have to prepare it to be able to work easily with maven from
3
eclipse itself.
4

  
5
Perform the following steps:
6

  
7
1.- Launch the *prepare-workspace.xml* ant build file. 
8
    You can do it by loading the file into the ant view, 
9
    and running the default task, or right-clicking the 
10
    file from the package explorer or the navigator and
11
    select the option: *Run as > Ant build*. 
12
    
13
2.- Restart eclipse.
14

  
15
3.- Import the subprojects of the project you have just checked out.
16

  
17
Those steps are only needed once per workspace.     
18

  
0 19

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

  
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Mon Nov 05 17:11:55 CET 2012
3
buildNumber=2076
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
5
	<modelVersion>4.0.0</modelVersion>
6
	<artifactId>org.gvsig.hyperlink.app.extension</artifactId>
7
	<packaging>jar</packaging>
8
	<name>Tools: Hyperlink</name>
9
	<parent>
10
		<groupId>org.gvsig</groupId>
11
		<artifactId>org.gvsig.hyperlink.app</artifactId>
12
		<version>1.0.0-SNAPSHOT</version>
13
	</parent>
14

  
15
	<dependencies>
16
		<dependency>
17
			<groupId>org.gvsig</groupId>
18
			<artifactId>org.gvsig.andami</artifactId>
19
            <scope>compile</scope>
20
		</dependency>
21
		<dependency>
22
			<groupId>org.gvsig</groupId>
23
			<artifactId>org.gvsig.i18n</artifactId>
24
            <scope>compile</scope>
25
		</dependency>
26
		<dependency>
27
			<groupId>org.gvsig</groupId>
28
			<artifactId>org.gvsig.tools.lib</artifactId>
29
            <scope>compile</scope>
30
		</dependency>
31
        <dependency>
32
            <groupId>org.gvsig</groupId>
33
            <artifactId>org.gvsig.fmap.dal.file</artifactId>
34
            <classifier>store.dxf</classifier>
35
            <scope>compile</scope>
36
        </dependency>
37
        <dependency>
38
            <groupId>org.gvsig</groupId>
39
            <artifactId>org.gvsig.fmap.dal.file</artifactId>
40
            <classifier>store.dgn</classifier>
41
            <scope>compile</scope>
42
        </dependency>
43
        <dependency>
44
            <groupId>org.gvsig</groupId>
45
            <artifactId>org.gvsig.fmap.dal.file</artifactId>
46
            <classifier>store.shp</classifier>
47
            <scope>compile</scope>
48
        </dependency>
49
		<dependency>
50
			<groupId>org.gvsig</groupId>
51
			<artifactId>org.gvsig.fmap.control</artifactId>
52
            <scope>compile</scope>
53
		</dependency>
54
		<dependency>
55
			<groupId>org.gvsig</groupId>
56
			<artifactId>org.gvsig.fmap.mapcontext</artifactId>
57
            <scope>compile</scope>
58
		</dependency>
59
		<dependency>
60
			<groupId>org.gvsig</groupId>
61
			<artifactId>org.gvsig.fmap.mapcontext</artifactId>
62
			<classifier>impl</classifier>
63
			<scope>runtime</scope>
64
		</dependency>
65
		<dependency>
66
			<groupId>org.gvsig</groupId>
67
			<artifactId>org.gvsig.fmap.mapcontext</artifactId>
68
			<classifier>operation</classifier>
69
			<scope>compile</scope>
70
		</dependency>
71
		<dependency>
72
			<groupId>org.gvsig</groupId>
73
			<artifactId>org.gvsig.app</artifactId>
74
            <scope>compile</scope>
75
		</dependency>
76
		<dependency>
77
			<groupId>org.gvsig</groupId>
78
			<artifactId>org.gvsig.dwg.extension</artifactId>
79
            <scope>compile</scope>
80
		</dependency>
81
        <dependency>
82
            <groupId>org.gvsig</groupId>
83
            <artifactId>org.gvsig.fmap.dal</artifactId>
84
            <scope>compile</scope>
85
        </dependency>
86
        <dependency>
87
            <groupId>org.gvsig</groupId>
88
            <artifactId>org.gvsig.projection</artifactId>
89
            <scope>compile</scope>
90
        </dependency>
91
        <dependency>
92
            <groupId>org.gvsig</groupId>
93
            <artifactId>org.gvsig.utils</artifactId>
94
            <scope>compile</scope>
95
        </dependency>
96
        <dependency>
97
            <groupId>org.gvsig</groupId>
98
            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
99
            <scope>compile</scope>
100
        </dependency>        
101
        <dependency>
102
            <groupId>org.gvsig</groupId>
103
            <artifactId>org.gvsig.ui</artifactId>
104
            <scope>compile</scope>
105
        </dependency>        
106
        <dependency>
107
            <groupId>org.slf4j</groupId>
108
            <artifactId>slf4j-api</artifactId>
109
            <scope>compile</scope>
110
        </dependency>
111
        <dependency>
112
            <groupId>org.jpedal</groupId>
113
            <artifactId>jpedal_lgpl</artifactId>
114
            <scope>compile</scope>
115
        </dependency>
116
        <dependency>
117
            <groupId>com.sun</groupId>
118
            <artifactId>jimi</artifactId>
119
            <scope>compile</scope>
120
        </dependency>
121
        <dependency>
122
            <groupId>org.apache.xmlgraphics</groupId>
123
            <artifactId>batik-gvt</artifactId>
124
            <scope>compile</scope>
125
        </dependency>
126
        <dependency>
127
            <groupId>org.apache.xmlgraphics</groupId>
128
            <artifactId>batik-bridge</artifactId>
129
            <scope>compile</scope>
130
        </dependency>
131
        <dependency>
132
            <groupId>org.apache.xmlgraphics</groupId>
133
            <artifactId>batik-script</artifactId>
134
            <scope>compile</scope>
135
        </dependency>
136
        <dependency>
137
            <groupId>xml-apis</groupId>
138
            <artifactId>xml-apis-ext</artifactId>
139
            <scope>compile</scope>
140
        </dependency>
141
		<dependency>
142
			<groupId>org.gvsig</groupId>
143
			<artifactId>org.gvsig.fmap.geometry</artifactId>
144
            <scope>compile</scope>
145
		</dependency>
146
	</dependencies>
147
	<profiles>
148
		<profile>
149
			<id>gvsig-install</id>
150
			<activation>
151
				<activeByDefault>true</activeByDefault>
152
			</activation>
153
			<properties>
154
				<!-- Default gvSIG installation folder relative to the current workspace -->
155
				<gvsig.install.dir>${basedir}/../../build/product</gvsig.install.dir>
156
			</properties>
157
		</profile>
158
	</profiles>
159
</project>
0 160

  
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/distribution/distribution.xml
1
<assembly>
2
	<id>distribution</id>
3
	<formats>
4
		<format>dir</format>
5
	</formats>
6
	<fileSets>
7
		<!-- Estructure for the extension -->
8
		<fileSet>
9
			<directory>src/main/resources</directory>
10
			<outputDirectory>${extension.install.dir.name}
11
			</outputDirectory>
12
		</fileSet>
13
	</fileSets>
14
    <files>
15
        <file>
16
            <source>package.info</source>
17
            <outputDirectory>${extension.install.dir.name}
18
            </outputDirectory>
19
        </file>
20
    </files>
21
   	<dependencySets>
22
		<dependencySet>
23
			<outputDirectory>${extension.install.dir.name}/${library-dir}
24
			</outputDirectory>
25
			<includes>
26
				<include>org.gvsig:org.gvsig.hyperlink.app.extension</include>
27
			</includes>
28
		</dependencySet>
29
	</dependencySets>
30
</assembly>
0 31

  
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Mon Nov 05 17:11:56 CET 2012
3
buildNumber=2068
tags/v2_0_0_Build_2057/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_2057/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_2057/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LayerLinkConfig.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.config;
24

  
25
import java.util.ArrayList;
26
import java.util.List;
27

  
28
import org.gvsig.tools.ToolsLocator;
29
import org.gvsig.tools.dynobject.DynStruct;
30
import org.gvsig.tools.persistence.PersistenceManager;
31
import org.gvsig.tools.persistence.Persistent;
32
import org.gvsig.tools.persistence.PersistentState;
33
import org.gvsig.tools.persistence.exception.PersistenceException;
34
import org.gvsig.tools.util.Callable;
35

  
36
public class LayerLinkConfig implements Persistent {
37

  
38
    protected List<LinkConfig> linkList;
39
    protected boolean enabled;
40
    public static final String LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME = "LayerLinkConfig";
41

  
42
    public LayerLinkConfig() {
43
        linkList = new ArrayList<LinkConfig>();
44
    }
45

  
46
    public void addLink(LinkConfig config) {
47
        linkList.add(config);
48
    }
49

  
50
    public void addLink(int position, LinkConfig config) {
51
        linkList.add(position, config);
52
    }
53

  
54
    public void addLink(String actionCode, String fieldName) {
55
        linkList.add(new LinkConfig(actionCode, fieldName));
56
    }
57

  
58
    public void addLink(String actionCode, String fieldName, String extension) {
59
        linkList.add(new LinkConfig(actionCode, fieldName, extension));
60
    }
61

  
62
    public LinkConfig removeLink(int linkIndex) {
63
        try {
64
            return linkList.remove(linkIndex);
65
        } catch (IndexOutOfBoundsException ex) {
66
            return null;
67
        }
68
    }
69

  
70
    public LinkConfig getLink(int index) {
71
        return linkList.get(index);
72
    }
73

  
74
    public int linkCount() {
75
        return linkList.size();
76
    }
77

  
78
    public String getClassName() {
79
        return this.getClass().getName();
80
    }
81

  
82
    public boolean isEnabled() {
83
        return enabled;
84
    }
85

  
86
    public void setEnabled(boolean enabled) {
87
        this.enabled = enabled;
88
    }
89

  
90
    public void saveToState(PersistentState state) throws PersistenceException {
91
        state.set("enabled", this.enabled);
92
        state.set("linkList", this.linkList);
93
    }
94

  
95
    @SuppressWarnings("unchecked")
96
    public void loadFromState(PersistentState state) throws PersistenceException {
97
        this.enabled = state.getBoolean("enabled");
98
        this.linkList = new ArrayList<LinkConfig>();
99
        this.linkList.addAll(state.getList("linkList"));
100
    }
101
    
102
    public static class RegisterPersistence implements Callable {
103

  
104
        public Object call() throws Exception {
105
            PersistenceManager manager = ToolsLocator.getPersistenceManager();
106
            if( manager.getDefinition(LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME)==null ) {
107
                DynStruct definition = manager.addDefinition(
108
                        LayerLinkConfig.class,
109
                        LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME,
110
                        LAYERLINKCONFIG_PERSISTENCE_DEFINITION_NAME+" Persistence definition",
111
                        null, 
112
                        null
113
                );
114

  
115
                definition.addDynFieldBoolean("enabled").setMandatory(true);
116
                definition.addDynFieldList("linkList").setMandatory(false).setClassOfItems(LinkConfig.class);
117
            }
118
            return Boolean.TRUE;
119
        }
120
        
121
    }
122

  
123
}
0 124

  
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/LinkConfig.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.config;
24

  
25
import org.gvsig.tools.ToolsLocator;
26
import org.gvsig.tools.dynobject.DynStruct;
27
import org.gvsig.tools.persistence.PersistenceManager;
28
import org.gvsig.tools.persistence.Persistent;
29
import org.gvsig.tools.persistence.PersistentState;
30
import org.gvsig.tools.persistence.exception.PersistenceException;
31
import org.gvsig.tools.util.Callable;
32

  
33
public class LinkConfig implements Persistent {
34

  
35
    private String fieldName;
36
    private String extension = "";
37
    private String actionCode;
38
    public static final String LINKCONFIG_PERSISTENCE_DEFINITION_NAME = "LinkConfig";
39

  
40
    public LinkConfig() {
41
    }
42

  
43
    public LinkConfig(String actionCode, String fieldName) {
44
        this.actionCode = actionCode;
45
        this.fieldName = fieldName;
46
    }
47

  
48
    public LinkConfig(String actionCode, String fieldName, String extension) {
49
        this.actionCode = actionCode;
50
        this.fieldName = fieldName;
51
        this.extension = extension;
52
    }
53

  
54
    public String getFieldName() {
55
        return fieldName;
56
    }
57

  
58
    public String getActionCode() {
59
        return actionCode;
60
    }
61

  
62
    public void setFieldName(String fieldName) {
63
        this.fieldName = fieldName;
64
    }
65

  
66
    public void setActionCode(String actionCode) {
67
        this.actionCode = actionCode;
68
    }
69

  
70
    public void setExtension(String extension) {
71
        this.extension = extension;
72
    }
73

  
74
    public String getExtension() {
75
        return extension;
76
    }
77

  
78
    public String getClassName() {
79
        return this.getClass().getName();
80
    }
81

  
82
    public void saveToState(PersistentState state) throws PersistenceException {
83
        state.set("fieldName", this.fieldName);
84
        state.set("extension", this.extension);
85
        state.set("actionCode", this.actionCode);
86
    }
87

  
88
    public void loadFromState(PersistentState state) throws PersistenceException {
89
        this.fieldName = state.getString("fieldName");
90
        this.extension = state.getString("extension");
91
        this.actionCode = state.getString("actionCode");
92
    }
93
    
94
    public static class RegisterPersistence implements Callable {
95

  
96
        public Object call() throws Exception {
97
            PersistenceManager manager = ToolsLocator.getPersistenceManager();
98
            if( manager.getDefinition(LINKCONFIG_PERSISTENCE_DEFINITION_NAME)==null ) {
99
                DynStruct definition = manager.addDefinition(
100
                        LinkConfig.class,
101
                        LINKCONFIG_PERSISTENCE_DEFINITION_NAME,
102
                        LINKCONFIG_PERSISTENCE_DEFINITION_NAME+" Persistence definition",
103
                        null, 
104
                        null
105
                );
106

  
107
                definition.addDynFieldString("fieldName").setMandatory(true);
108
                definition.addDynFieldString("extension").setMandatory(false);
109
                definition.addDynFieldString("actionCode").setMandatory(true);
110
            }
111
            return Boolean.TRUE;
112
        }
113
        
114
    }
115

  
116
}
0 117

  
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/ConfigTab.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.config.gui;
24

  
25
import java.awt.GridBagConstraints;
26
import java.awt.GridBagLayout;
27
import java.awt.Insets;
28
import java.awt.event.ActionEvent;
29
import java.awt.event.ActionListener;
30
import java.awt.event.ItemEvent;
31
import java.awt.event.ItemListener;
32
import java.util.ArrayList;
33

  
34
import javax.swing.BorderFactory;
35
import javax.swing.JButton;
36
import javax.swing.JCheckBox;
37
import javax.swing.JPanel;
38
import javax.swing.JScrollPane;
39
import javax.swing.border.EtchedBorder;
40
import javax.swing.border.TitledBorder;
41

  
42
import org.gvsig.andami.PluginServices;
43
import org.gvsig.andami.ui.mdiManager.IWindow;
44
import org.gvsig.andami.ui.mdiManager.WindowInfo;
45
import org.gvsig.app.project.documents.view.legend.gui.AbstractThemeManagerPage;
46
import org.gvsig.fmap.mapcontext.layers.FLayer;
47
import org.gvsig.hyperlink.app.extension.AbstractActionManager;
48
import org.gvsig.hyperlink.app.extension.HyperlinkExtension;
49
import org.gvsig.hyperlink.app.extension.config.LayerLinkConfig;
50
import org.gvsig.hyperlink.app.extension.config.LinkConfig;
51
import org.gvsig.hyperlink.app.extension.layers.ILinkLayerManager;
52
import org.gvsig.hyperlink.app.extension.layers.IncompatibleLayerException;
53
import org.gvsig.hyperlink.app.extension.layers.ManagerRegistry;
54
import org.gvsig.tools.ToolsLocator;
55
import org.gvsig.tools.extensionpoint.ExtensionPoint;
56

  
57
public class ConfigTab extends AbstractThemeManagerPage implements IWindow,
58
    ActionListener, ItemListener {
59

  
60
    FLayer layer;
61
    ArrayList rows = new ArrayList();
62
    JPanel rowList = null;
63
    GridBagLayout listLayout = null;
64
    private String[] actionCodes = null;
65
    private String[] actionNames = null;
66
    WindowInfo _windowInfo = null;
67
    JButton jbt_accept = null, jbt_cancel = null;
68
    JPanel emptyRow;
69
    JCheckBox jcb_enabled = null;
70
    JPanel borderPanel = null;
71
    JButton jbt_addAction = null, jbt_removeAction = null;
72

  
73
    public ConfigTab() {
74
        super();
75
        initialize();
76
    }
77

  
78
    private void initialize() {
79
        this.setLayout(new GridBagLayout());
80

  
81
        Insets insets = new Insets(8, 8, 8, 8);
82
        GridBagConstraints constraints = new GridBagConstraints();
83
        constraints.gridx = 0;
84
        constraints.gridy = 0;
85
        constraints.weightx = 1.0;
86
        constraints.fill = GridBagConstraints.NONE;
87
        constraints.insets = insets;
88
        constraints.anchor = GridBagConstraints.NORTHWEST;
89
        this.add(getEnabledCheckBox(), constraints);
90

  
91
        borderPanel = new JPanel(new GridBagLayout());
92
        borderPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED),
93
            PluginServices.getText(this, "Actions"),
94
            TitledBorder.DEFAULT_JUSTIFICATION,
95
            TitledBorder.DEFAULT_POSITION,
96
            null,
97
            null));
98

  
99
        insets = new Insets(8, 8, 8, 8);
100
        constraints = new GridBagConstraints();
101
        constraints.gridx = 0;
102
        constraints.gridy = 0;
103
        constraints.weightx = 1.0;
104
        constraints.fill = GridBagConstraints.NONE;
105
        constraints.insets = insets;
106
        constraints.anchor = GridBagConstraints.NORTHWEST;
107
        borderPanel.add(getAddRemoveActionsPanel(), constraints);
108

  
109
        listLayout = new GridBagLayout();
110
        rowList = new JPanel(listLayout);
111

  
112
        constraints.gridx = 0;
113
        constraints.gridy = 0;
114
        constraints.weightx = 1.0;
115
        constraints.weighty = 1.0;
116
        constraints.fill = GridBagConstraints.NONE;
117
        constraints.insets = insets;
118
        constraints.anchor = GridBagConstraints.SOUTH;
119
        emptyRow = new JPanel();
120
        rowList.add(emptyRow, constraints);
121

  
122
        JScrollPane scrolledList = new JScrollPane();
123
        scrolledList.setBorder(null);
124
        scrolledList.setViewportView(rowList);
125

  
126
        constraints.gridx = 0;
127
        constraints.gridy = 1;
128
        constraints.weightx = 1.0;
129
        constraints.weighty = 1.0;
130
        constraints.fill = GridBagConstraints.BOTH;
131
        constraints.insets = insets;
132
        constraints.anchor = GridBagConstraints.CENTER;
133
        borderPanel.add(scrolledList, constraints);
134

  
135
        constraints.gridx = 0;
136
        constraints.gridy = 1;
137
        constraints.weightx = 1.0;
138
        constraints.weighty = 1.0;
139
        constraints.fill = GridBagConstraints.BOTH;
140
        constraints.insets = insets;
141
        constraints.anchor = GridBagConstraints.NORTHWEST;
142
        this.add(borderPanel, constraints);
143

  
144
        // initAcceptCancelButtons(); uncomment this if you want to use this
145
        // window outside the ThemeManager
146
    }
147

  
148
    private void initAcceptCancelButtons() {
149
        JPanel acceptCancelButtons = new JPanel(new GridBagLayout());
150
        Insets insets = new Insets(14, 4, 8, 8);
151
        GridBagConstraints constraints = new GridBagConstraints();
152
        constraints.gridx = 0;
153
        constraints.gridy = 0;
154
        constraints.weightx = 1.0;
155
        constraints.fill = GridBagConstraints.NONE;
156
        constraints.insets = insets;
157
        constraints.anchor = GridBagConstraints.EAST;
158
        acceptCancelButtons.add(getAcceptButton(), constraints);
159

  
160
        constraints.gridx = 1;
161
        constraints.gridy = 0;
162
        constraints.weightx = 0.0;
163
        constraints.fill = GridBagConstraints.NONE;
164
        constraints.insets = insets;
165
        constraints.anchor = GridBagConstraints.EAST;
166
        acceptCancelButtons.add(getCancelButton(), constraints);
167

  
168
        constraints.gridx = 0;
169
        constraints.gridy = 2;
170
        constraints.weightx = 0.0;
171
        constraints.fill = GridBagConstraints.NONE;
172
        constraints.insets = insets;
173
        constraints.anchor = GridBagConstraints.SOUTHEAST;
174
        this.add(acceptCancelButtons, constraints);
175
    }
176

  
177
    private String[] getActionNames() {
178
        if (actionNames == null) {
179
            ExtensionPoint actions =
180
                ToolsLocator.getExtensionPointManager()
181
                    .get(HyperlinkExtension.ACTIONSEXTENSIONPOINT);
182

  
183
            String[] actionArray = new String[actions.getCount()];
184
            String[] codes = getActionCodes();
185
            for (int i = 0; i < codes.length; i++) {
186
                try {
187
                    AbstractActionManager aam =
188
                        (AbstractActionManager) actions.get(codes[i])
189
                            .getExtension()
190
                            .newInstance();
191
                    actionArray[i] = aam.getName();
192
                } catch (InstantiationException e) {
193
                    // TODO Auto-generated catch block
194
                    e.printStackTrace();
195
                } catch (IllegalAccessException e) {
196
                    // TODO Auto-generated catch block
197
                    e.printStackTrace();
198
                }
199
            }
200
            actionNames = actionArray;
201
        }
202
        return actionNames;
203
    }
204

  
205
    private String[] getActionCodes() {
206
        if (actionCodes == null) {
207
            ExtensionPoint actions =
208
                ToolsLocator.getExtensionPointManager()
209
                    .get(HyperlinkExtension.ACTIONSEXTENSIONPOINT);
210
            String[] actionArray = new String[actions.getCount()];
211
            actionArray = (String[]) actions.getNames().toArray(actionArray);
212
            actionCodes = actionArray;
213
        }
214
        return actionCodes;
215
    }
216

  
217
    private String[] getCandidateFields() {
218
        HyperlinkExtension ext =
219
            (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
220
        ManagerRegistry registry = ext.getLayerManager();
221
        try {
222
            ILinkLayerManager manager;
223
            manager = registry.get(layer);
224
            manager.setLayer(layer);
225
            return manager.getFieldCandidates();
226
        } catch (InstantiationException e) {
227
            PluginServices.getLogger()
228
                .warn("Hyperlink: error getting candidate fields", e);
229
        } catch (IllegalAccessException e) {
230
            PluginServices.getLogger()
231
                .warn("Hyperlink: error getting candidate fields", e);
232
        } catch (ClassNotFoundException e) {
233
            PluginServices.getLogger()
234
                .warn("Hyperlink: error getting candidate fields", e);
235
        } catch (IncompatibleLayerException e) {
236
            PluginServices.getLogger()
237
                .warn("Hyperlink: error getting candidate fields", e);
238
        } catch (NullPointerException e) {
239
            PluginServices.getLogger().warn("Hyperlink: error getting manager", e);
240
        }
241
        return new String[0];
242
    }
243

  
244
    public void acceptAction() {
245
        applyAction();
246
    }
247

  
248
    public void applyAction() {
249
        LayerLinkConfig config = new LayerLinkConfig();
250
        for (int i = 0; i < rows.size(); i++) {
251
            LinkRow row = (LinkRow) rows.get(i);
252
            
253
            if (row.getSelectedField() != null
254
                && row.getSelectedAction() != -1) {
255
                
256
                config.addLink(getActionCodes()[row.getSelectedAction()],
257
                    row.getSelectedField(),
258
                    row.getExtension());
259
            }
260
        }
261
        config.setEnabled(getEnabledCheckBox().isSelected());
262
        layer.setProperty(HyperlinkExtension.LAYERPROPERTYNAME, config);
263
    }
264

  
265
    public void cancelAction() {
266
    }
267

  
268
    public String getName() {
269
        return PluginServices.getText(this, "Hyperlink");
270
    }
271

  
272
    public void setModel(FLayer layer) {
273
        this.layer = layer;
274
        synchronized (rows) {
275
            HyperlinkExtension ext =
276
                (HyperlinkExtension) PluginServices.getExtension(HyperlinkExtension.class);
277
            LayerLinkConfig layerConfig = ext.loadLegacyConfig(layer);
278
            for (int i = rows.size() - 1; i >= 0; i--) { // clean rows
279
                LinkRow row = (LinkRow) rows.remove(i);
280
                rowList.remove(row);
281
            }
282

  
283
            if (layerConfig != null) {
284
                for (int i = 0; i < layerConfig.linkCount(); i++) {
285
                    LinkRow row = addRow();
286
                    LinkConfig config = layerConfig.getLink(i);
287
                    String selectedAction = config.getActionCode();
288
                    String[] actions = getActionCodes();
289
                    for (int j = 0; j < actions.length; j++) {
290
                        if (actions[j].equals(selectedAction)) {
291
                            row.setSelectedAction(j);
292
                        }
293
                    }
294
                    row.setSelectedField(config.getFieldName());
295
                    row.setExtension(config.getExtension());
296
                }
297
                if (layerConfig.linkCount() < 1) {
298
                    addRow(); // just one row by default
299
                }
300
                setLinkEnabled(layerConfig.isEnabled());
301
            } else {
302
                addRow(); // just one row by default
303
                setLinkEnabled(false);
304
            }
305
        }
306
    }
307

  
308
    protected JPanel getAddRemoveActionsPanel() {
309
        JPanel container = new JPanel();
310
        container.add(getAddActionButton());
311
        container.add(getRemoveActionButton());
312
        return container;
313
    }
314

  
315
    protected LinkRow addRow() {
316
        LinkRow row = new LinkRow();
317
        row.setFields(getCandidateFields());
318
        row.setActions(getActionNames());
319
        synchronized (rows) {
320
            rows.add(row);
321

  
322
            GridBagConstraints constraints = new GridBagConstraints();
323
            constraints.gridx = 0;
324
            constraints.gridy = rows.size() - 1;
325
            constraints.weightx = 1.0;
326
            constraints.weighty = 0.0;
327
            constraints.fill = GridBagConstraints.HORIZONTAL;
328
            constraints.insets = new Insets(2, 4, 2, 4);
329
            constraints.anchor = GridBagConstraints.NORTH;
330
            rowList.add(row, constraints);
331

  
332
            constraints = new GridBagConstraints();
333
            constraints.gridx = 0;
334
            constraints.gridy = rows.size();
335
            constraints.weightx = 1.0;
336
            constraints.weighty = 1.0;
337
            constraints.fill = GridBagConstraints.NONE;
338
            constraints.anchor = GridBagConstraints.CENTER;
339
            listLayout.setConstraints(emptyRow, constraints);
340
        }
341
        validate();
342
        return row;
343
    }
344

  
345
    protected boolean removeBottomRow() {
346
        LinkRow row;
347
        synchronized (rows) {
348
            if (rows.size() <= 1)
349
                return false;
350
            row = (LinkRow) rows.get(rows.size() - 1);
351
            rows.remove(rows.size() - 1);
352
        }
353
        rowList.remove(row);
354
        GridBagConstraints constraints = new GridBagConstraints();
355
        constraints.gridx = 0;
356
        constraints.gridy = rows.size();
357
        constraints.weightx = 1.0;
358
        constraints.weighty = 1.0;
359
        constraints.fill = GridBagConstraints.NONE;
360
        constraints.anchor = GridBagConstraints.CENTER;
361
        listLayout.setConstraints(emptyRow, constraints);
362

  
363
        validate();
364
        repaint();
365
        return true;
366
    }
367

  
368
    protected JButton getAddActionButton() {
369
        if (jbt_addAction == null) {
370
            jbt_addAction =
371
                new JButton(PluginServices.getText(this, "Add_action"));
372
            jbt_addAction.setSize(150, 70);
373
            jbt_addAction.setActionCommand("addButton");
374
            jbt_addAction.addActionListener(new ActionListener() {
375

  
376
                public void actionPerformed(ActionEvent e) {
377
                    if (e.getActionCommand().equals("addButton")) {
378
                        addRow();
379
                    }
380
                }
381
            });
382
        }
383
        return jbt_addAction;
384
    }
385

  
386
    protected JButton getRemoveActionButton() {
387
        if (jbt_removeAction == null) {
388
            jbt_removeAction =
389
                new JButton(PluginServices.getText(this, "Remove_action"));
390
            jbt_removeAction.setActionCommand("removeButton");
391
            jbt_removeAction.addActionListener(new ActionListener() {
392

  
393
                public void actionPerformed(ActionEvent e) {
394
                    if (e.getActionCommand().equals("removeButton")) {
395
                        removeBottomRow();
396
                    }
397
                }
398
            });
399
            return jbt_removeAction;
400
        }
401
        return jbt_removeAction;
402
    }
403

  
404
    public WindowInfo getWindowInfo() {
405
        if (_windowInfo == null) {
406
            _windowInfo =
407
                new WindowInfo(WindowInfo.ICONIFIABLE | WindowInfo.MAXIMIZABLE
408
                    | WindowInfo.RESIZABLE);
409
            _windowInfo.setWidth(680);
410
            _windowInfo.setHeight(500);
411
            _windowInfo.setTitle(PluginServices.getText(this,
412
                "Hyperlink_Settings"));
413
        }
414
        return _windowInfo;
415
    }
416

  
417
    protected JButton getAcceptButton() {
418
        if (jbt_accept == null) {
419
            jbt_accept =
420
                new org.gvsig.gui.beans.swing.JButton(PluginServices.getText(this,
421
                    "Aceptar"));
422
            jbt_accept.addActionListener(this);
423
        }
424
        return jbt_accept;
425
    }
426

  
427
    protected JButton getCancelButton() {
428
        if (jbt_cancel == null) {
429
            jbt_cancel =
430
                new org.gvsig.gui.beans.swing.JButton(PluginServices.getText(this,
431
                    "Cancel"));
432
            jbt_cancel.addActionListener(this);
433
        }
434
        return jbt_cancel;
435
    }
436

  
437
    protected JCheckBox getEnabledCheckBox() {
438
        if (jcb_enabled == null) {
439
            jcb_enabled =
440
                new JCheckBox(PluginServices.getText(this, "Enable_hyperlink"),
441
                    true);
442
            jcb_enabled.addItemListener(this);
443
        }
444
        return jcb_enabled;
445
    }
446

  
447
    public void actionPerformed(ActionEvent e) {
448
        if (e.getSource() == getAcceptButton()) {
449
            acceptAction();
450
            PluginServices.getMDIManager().closeWindow(this);
451

  
452
        } else
453
            if (e.getSource() == getCancelButton()) {
454
                cancelAction();
455
                PluginServices.getMDIManager().closeWindow(this);
456
            }
457
    }
458

  
459
    protected void setListEnabled(boolean enabled) {
460
        getAddActionButton().setEnabled(enabled);
461
        getRemoveActionButton().setEnabled(enabled);
462
        synchronized (rows) {
463
            for (int i = 0; i < rows.size(); i++) {
464
                LinkRow row = (LinkRow) rows.get(i);
465
                row.setEnabled(enabled);
466
            }
467
        }
468
    }
469

  
470
    protected void setLinkEnabled(boolean enabled) {
471
        getEnabledCheckBox().setSelected(enabled);
472
        setListEnabled(enabled);
473
    }
474

  
475
    public void itemStateChanged(ItemEvent e) {
476
        if (e.getSource() == getEnabledCheckBox()) {
477
            if (e.getStateChange() == ItemEvent.DESELECTED) {
478
                setListEnabled(false);
479
            } else {
480
                setListEnabled(true);
481
            }
482
        }
483
    }
484

  
485
    public Object getWindowProfile() {
486
        return WindowInfo.DIALOG_PROFILE;
487
    }
488
}
0 489

  
tags/v2_0_0_Build_2057/extensions/org.gvsig.hyperlink.app/org.gvsig.hyperlink.app.extension/src/main/java/org/gvsig/hyperlink/app/extension/config/gui/LinkRow.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.config.gui;
24

  
25
import java.awt.BorderLayout;
26
import java.awt.Dimension;
27

  
28
import javax.swing.BorderFactory;
29
import javax.swing.JComboBox;
30
import javax.swing.JLabel;
31
import javax.swing.JPanel;
32
import javax.swing.JTextField;
33
import javax.swing.border.BevelBorder;
34

  
35
import org.gvsig.andami.PluginServices;
36
import org.gvsig.gui.beans.swing.GridBagLayoutPanel;
37

  
38
public class LinkRow extends JPanel {
39

  
40
    JPanel pnlFieldAndExtension = null;
41
    JPanel pnlHyperLinkAction = null;
42
    JLabel lblLinkExtension = null;
43
    JLabel lblLinkField = null;
44
    JLabel lblDefaultAction = null;
45
    JTextField txtLinkExtension = null;
46
    JComboBox cmbLinkField = null;
47
    JComboBox cmbLinkType = null;
48

  
49
    public LinkRow() {
50
        super();
51
        initialize();
52
    }
53

  
54
    private void initialize() {
55
        GridBagLayoutPanel aux = new GridBagLayoutPanel();
56
        aux.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
57
        aux.addComponent(getPnlFieldAndExtension(), getPnlHyperLinkAction());
58
        this.setLayout(new BorderLayout());
59
        this.add(aux, BorderLayout.CENTER);
60
    }
61

  
62
    public String getSelectedField() {
63
        return (String) getCmbLinkField().getSelectedItem();
64
    }
65

  
66
    public void setFields(String[] fields) {
67
        for (int i = 0; i < fields.length; i++) {
68
            getCmbLinkField().addItem(fields[i]);
69
        }
70
    }
71

  
72
    public void setSelectedField(String field) {
73
        getCmbLinkField().setSelectedItem(field);
74
    }
75

  
76
    public int getSelectedAction() {
77
        return getCmbLinkType().getSelectedIndex();
78
    }
79

  
80
    public String getSelectedActionName() {
81
        return (String) getCmbLinkType().getSelectedItem();
82
    }
83

  
84
    public void setActions(String[] actions) {
85
        for (int i = 0; i < actions.length; i++) {
86
            getCmbLinkType().addItem(actions[i]);
87
        }
88
    }
89

  
90
    public void setSelectedAction(String action) {
91
        getCmbLinkType().setSelectedItem(action);
92
    }
93

  
94
    public void setSelectedAction(int action) {
95
        getCmbLinkType().setSelectedIndex(action);
96
    }
97

  
98
    public String getExtension() {
99
        return getTxtLinkExtension().getText();
100
    }
101

  
102
    public void setExtension(String extension) {
103
        getTxtLinkExtension().setText(extension);
104
    }
105

  
106
    private JPanel getPnlFieldAndExtension() {
107
        if (pnlFieldAndExtension == null) {
108
            lblLinkExtension = new JLabel();
109
            lblLinkExtension.setText(" \t \t"
110
                + PluginServices.getText(this, "Extension"));
111
            lblLinkField = new JLabel();
112
            lblLinkField.setText(PluginServices.getText(this, "Campo"));
113
            pnlFieldAndExtension = new JPanel();
114
            pnlFieldAndExtension.add(lblLinkField, null);
115
            pnlFieldAndExtension.add(getCmbLinkField(), null);
116
            pnlFieldAndExtension.add(lblLinkExtension, null);
117
            pnlFieldAndExtension.add(getTxtLinkExtension(), null);
118
        }
119
        return pnlFieldAndExtension;
120
    }
121

  
122
    /**
123
     * This method initializes jPanel8. This panel contains the ComboBox to
124
     * select
125
     * the action, (type of HyperLink)
126
     * 
127
     * @return javax.swing.JPanel
128
     */
129
    private JPanel getPnlHyperLinkAction() {
130
        if (pnlHyperLinkAction == null) {
131
            lblDefaultAction = new JLabel();
132
            lblDefaultAction.setText(PluginServices.getText(this, "Action")
133
                + "  ");
134
            pnlHyperLinkAction = new JPanel();
135
            pnlHyperLinkAction.add(lblDefaultAction, null);
136
            pnlHyperLinkAction.add(getCmbLinkType(), null);
137
        }
138
        return pnlHyperLinkAction;
139
    }
140

  
141
    /**
142
     * This method initializes jComboBox
143
     * 
144
     * @return javax.swing.JComboBox
145
     */
146
    private JComboBox getCmbLinkField() {
147
        if (cmbLinkField == null) {
148
            cmbLinkField = new JComboBox();
149
        }
150
        return cmbLinkField;
151
    }
152

  
153
    /**
154
     * This method initializes jTextField
155
     * 
156
     * @return javax.swing.JTextField
157
     */
158
    private JTextField getTxtLinkExtension() {
159
        if (txtLinkExtension == null) {
160
            txtLinkExtension = new JTextField();
161
            txtLinkExtension.setPreferredSize(new Dimension(40, 20));
162
        }
163
        return txtLinkExtension;
164
    }
165

  
166
    /**
167
     * This method initializes jComboBox1
168
     * 
169
     * @return javax.swing.JComboBox
170
     */
171
    private JComboBox getCmbLinkType() {
172
        if (cmbLinkType == null) {
173
            cmbLinkType = new JComboBox();
174

  
175
        }
176
        return cmbLinkType;
177
    }
178

  
179
    public void setEnabled(boolean enabled) {
180
        super.setEnabled(enabled);
181
        getTxtLinkExtension().setEnabled(enabled);
182
        getCmbLinkField().setEnabled(enabled);
183
        getCmbLinkType().setEnabled(enabled);
184
        lblLinkField.setEnabled(enabled);
185
        lblDefaultAction.setEnabled(enabled);
186
        lblLinkExtension.setEnabled(enabled);
187
    }
188
}
0 189

  
tags/v2_0_0_Build_2057/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) {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff