Revision 244

View differences:

org.gvsig.about/trunk/org.gvsig.about/org.gvsig.about.impl/src/main/javadoc/overview.html
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml">
4
<head>
5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
<title>org.gvsig.scripting package documentation</title>
7
</head>
8
<body>
9

  
10
	<p>TODO: Example library overview.</p>
11
	
12
	<p>See the <a href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html#overviewcomment">Javadoc Tool documentation about the overview file</a></p>
13

  
14
</body>
15
</html>
org.gvsig.about/trunk/org.gvsig.about/org.gvsig.about.impl/src/main/resources/README.txt
1
Put into this folder the resources needed by your library classes.
2

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

  
6
By default, into this folder you can find some examples of resource bundle 
7
property files that may be used by your library classes.
org.gvsig.about/trunk/org.gvsig.about/org.gvsig.about.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.about.impl.AboutDefaultImplLibrary
org.gvsig.about/trunk/org.gvsig.about/org.gvsig.about.impl/src/main/java/org/gvsig/about/impl/DefaultAboutDeveloper.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.about.impl;
23

  
24
import java.net.URL;
25

  
26
import org.gvsig.about.AboutDeveloper;
27

  
28
/**
29
 * @author gvSIG Team
30
 * @version $Id$
31
 * 
32
 */
33
public class DefaultAboutDeveloper extends AbstractParticipant implements
34
    AboutDeveloper {
35

  
36
    public DefaultAboutDeveloper(DefaultAboutManager manager, String name,
37
        URL description, int priority, URL icon) {
38
        super(manager, name, description, priority, icon);
39
    }
40

  
41
    public DefaultAboutDeveloper(DefaultAboutManager manager, String name,
42
        URL description, int priority) {
43
        super(manager, name, description, priority, null);
44
    }
45

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

  
24
import org.gvsig.about.AboutLibrary;
25
import org.gvsig.about.AboutLocator;
26
import org.gvsig.tools.ToolsLibrary;
27
import org.gvsig.tools.library.AbstractLibrary;
28
import org.gvsig.tools.library.LibraryException;
29

  
30
/**
31
 * @author gvSIG Team
32
 * @version $Id$
33
 */
34
public class AboutDefaultImplLibrary extends AbstractLibrary {
35

  
36
    public AboutDefaultImplLibrary() {
37
        super(AboutLibrary.class, TYPE.IMPL);
38
        require(ToolsLibrary.class);
39
    }
40

  
41
    @Override
42
    protected void doInitialize() throws LibraryException {
43
        AboutLocator.registerManager(DefaultAboutManager.class);
44
    }
45

  
46
    @Override
47
    protected void doPostInitialize() throws LibraryException {
48
        // Nothing to do
49
    }
50

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

  
24
import java.net.URL;
25
import java.util.HashMap;
26
import java.util.Map;
27

  
28
import org.gvsig.about.AboutProject;
29

  
30
/**
31
 * @author gvSIG Team
32
 * @version $Id$
33
 * 
34
 */
35
public class DefaultAboutProject implements AboutProject {
36

  
37
    protected String name;
38
    protected URL description;
39
    protected URL icon;
40
    private DefaultAboutManager manager;
41
    private Map<String, String> vars;
42

  
43
    public DefaultAboutProject(DefaultAboutManager manager, String name,
44
        URL description, URL icon) {
45
        this(manager, name, description, icon, null);
46
    }
47

  
48
    public DefaultAboutProject(DefaultAboutManager manager, String name,
49
        URL description, URL icon, Map<String, String> vars) {
50
        this.manager = manager;
51
        this.name = name;
52
        this.description = description;
53
        this.icon = icon;
54
        this.vars = new HashMap<String, String>();
55
        if (vars != null) {
56
            this.vars.putAll(vars);
57
        }
58
    }
59

  
60
    public void set(String name, String value) {
61
        this.vars.put(name, value);
62
    }
63

  
64
    public String getName() {
65
        return this.name;
66
    }
67

  
68
    public URL getDescription() {
69
        return this.description;
70
    }
71

  
72
    public URL getIcon() {
73
        return this.icon;
74
    }
75

  
76
    @Override
77
    public String toString() {
78
        return this.name;
79
    }
80

  
81
    public String getInformationPage() {
82
        String description = null;
83

  
84
        if (this.description != null) {
85
            description = manager.getStringFromUrl(this.description, this.vars);
86
        }
87
        if (description == null) {
88
            return "<html><body></body></html>";
89
        }
90
        return description;
91
    }
92

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

  
24
import java.net.URL;
25

  
26
import org.gvsig.about.AboutTranslator;
27

  
28
/**
29
 * @author gvSIG Team
30
 * @version $Id$
31
 * 
32
 */
33
public class DefaultAboutTranslator extends AbstractParticipant implements
34
    AboutTranslator {
35

  
36
    public DefaultAboutTranslator(DefaultAboutManager manager, String name,
37
        URL description, int priority, URL icon) {
38
        super(manager, name, description, priority, icon);
39
    }
40

  
41
    public DefaultAboutTranslator(DefaultAboutManager manager, String name,
42
        URL description, int priority) {
43
        super(manager, name, description, priority, null);
44
    }
45

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

  
24
import java.io.BufferedReader;
25
import java.io.FileNotFoundException;
26
import java.io.FileReader;
27
import java.io.IOException;
28
import java.io.InputStream;
29
import java.io.InputStreamReader;
30
import java.net.URL;
31
import java.util.ArrayList;
32
import java.util.Collections;
33
import java.util.Comparator;
34
import java.util.Iterator;
35
import java.util.List;
36
import java.util.Map;
37

  
38
import javax.swing.ImageIcon;
39
import javax.swing.JPanel;
40

  
41
import org.gvsig.about.AboutContribution;
42
import org.gvsig.about.AboutDeveloper;
43
import org.gvsig.about.AboutManager;
44
import org.gvsig.about.AboutParticipant;
45
import org.gvsig.about.AboutProject;
46
import org.gvsig.about.AboutSponsor;
47
import org.gvsig.about.AboutTranslator;
48
import org.gvsig.about.swing.JAboutPanel;
49

  
50
/**
51
 * @author gvSIG Team
52
 * @version $Id$
53
 * 
54
 */
55
public class DefaultAboutManager implements AboutManager {
56

  
57
    protected List<AboutDeveloper> developers;
58
    protected List<AboutTranslator> translators;
59
    protected List<AboutSponsor> sponsors;
60

  
61
    protected DefaultAboutProject root;
62

  
63
    protected int ICON_SIZE = 16;
64

  
65
    public DefaultAboutManager() {
66
        developers = new ArrayList<AboutDeveloper>();
67
        sponsors = new ArrayList<AboutSponsor>();
68
        translators = new ArrayList<AboutTranslator>();
69
    }
70

  
71
    public void setProject(String name, URL description, URL icon) {
72
        root = new DefaultAboutProject(this, name, description, icon);
73
    }
74

  
75
    public void setProject(String name, URL description, URL icon,
76
        Map<String, String> vars) {
77
        root = new DefaultAboutProject(this, name, description, icon, vars);
78

  
79
    }
80

  
81
    // public AboutContribution addContribution(AboutParticipant participant,
82
    // String title, String description) {
83
    // return participant.addContribution(title, description, null, null);
84
    // }
85
    //
86
    // public AboutContribution addContribution(AboutParticipant participant,
87
    // String title, String description, Date begin) {
88
    // return participant.addContribution(title, description, begin, null);
89
    // }
90
    //
91
    // public AboutContribution addContribution(AboutParticipant participant,
92
    // String title, String description, Date begin, Date end) {
93
    // return participant.addContribution(title, description, begin, end);
94
    // }
95

  
96
    public AboutParticipant addDeveloper(String name, URL description,
97
        int priority) {
98
        return addDeveloper(name, description, priority, null);
99
    }
100

  
101
    public AboutParticipant addDeveloper(String name, URL description,
102
        int priority, URL icon) {
103

  
104
        AboutDeveloper participant = this.getDeveloper(name);
105

  
106
        if (participant == null) {
107
            participant =
108
                new DefaultAboutDeveloper(this, name, description, priority,
109
                    icon);
110
            // Añadimos a la lista de contribuciones
111
            this.developers.add(participant);
112
            // Ordenamos por prioridad creciente
113
            Collections.sort(this.developers, new Comparator<AboutDeveloper>() {
114

  
115
                public int compare(AboutDeveloper p1, AboutDeveloper p2) {
116
                    return p1.getPriority() < p2.getPriority() ? -1 : (p1
117
                        .getPriority() > p2.getPriority() ? +1 : 0);
118
                }
119
            });
120
        }
121

  
122
        return participant;
123
    }
124

  
125
    public AboutParticipant addSponsor(String name, URL description,
126
        int priority) {
127
        return addSponsor(name, description, priority, null);
128
    }
129

  
130
    public AboutParticipant addSponsor(String name, URL description,
131
        int priority, URL icon) {
132

  
133
        AboutSponsor participant = this.getSponsor(name);
134

  
135
        if (participant == null) {
136
            participant =
137
                new DefaultAboutSponsor(this, name, description, priority, icon);
138
            // Añadimos a la lista de contribuciones
139
            this.sponsors.add(participant);
140
            // Ordenamos por prioridad creciente
141
            Collections.sort(this.sponsors, new Comparator<AboutSponsor>() {
142

  
143
                public int compare(AboutSponsor p1, AboutSponsor p2) {
144
                    return p1.getPriority() < p2.getPriority() ? -1 : (p1
145
                        .getPriority() > p2.getPriority() ? +1 : 0);
146
                }
147
            });
148
        }
149

  
150
        return participant;
151
    }
152

  
153
    public AboutParticipant addTranslator(String name, URL description,
154
        int priority) {
155
        return addTranslator(name, description, priority, null);
156
    }
157

  
158
    public AboutParticipant addTranslator(String name, URL description,
159
        int priority, URL icon) {
160

  
161
        AboutTranslator participant = this.getTranslator(name);
162

  
163
        if (participant == null) {
164
            participant =
165
                new DefaultAboutTranslator(this, name, description, priority,
166
                    icon);
167
            // Añadimos a la lista de contribuciones
168
            this.translators.add(participant);
169
            // Ordenamos por prioridad creciente
170
            Collections.sort(this.translators,
171
                new Comparator<AboutTranslator>() {
172

  
173
                    public int compare(AboutTranslator p1, AboutTranslator p2) {
174
                        return p1.getPriority() < p2.getPriority() ? -1 : (p1
175
                            .getPriority() > p2.getPriority() ? +1 : 0);
176
                    }
177
                });
178
        }
179

  
180
        return participant;
181
    }
182

  
183
    public JPanel getAboutPanel() {
184
        JPanel panel = new JAboutPanel(this);
185
        return panel;
186
    }
187

  
188
    public List<AboutContribution> getContributions(AboutParticipant participant) {
189
        return participant.getContributions();
190
    }
191

  
192
    public ImageIcon getImageIcon(String name) {
193
        return this.getImageIcon(name, null);
194
    }
195

  
196
    public ImageIcon getImageIcon(URL url) {
197
        return this.getImageIcon(url, null);
198
    }
199

  
200
    public ImageIcon getImageIcon(String name, String defaultName) {
201
        URL url =
202
            this.getClass().getClassLoader()
203
                .getResource("org/gvsig/about/images/i16x16/" + name);
204
        return this.getImageIcon(url, defaultName);
205
    }
206

  
207
    public ImageIcon getImageIcon(URL url, String defaultName) {
208
        if (url == null) {
209
            url =
210
                this.getClass()
211
                    .getClassLoader()
212
                    .getResource("org/gvsig/about/images/i16x16/" + defaultName);
213
        }
214
        if (url == null) {
215
            url =
216
                this.getClass()
217
                    .getClassLoader()
218
                    .getResource(
219
                        "org/gvsig/about/images/i16x16/image-missing.png");
220
        }
221
        if (url == null) {
222
            url =
223
                this.getClass()
224
                    .getClassLoader()
225
                    .getResource("org/gvsig/about/images/i16x16/" + defaultName);
226
        }
227
        if (url == null) {
228
            return new ImageIcon();
229
        }
230
        return new ImageIcon(url);
231
    }
232

  
233
    public AboutProject getProject() {
234
        return this.root;
235
    }
236

  
237
    public List<AboutDeveloper> getDevelopers() {
238
        return this.developers;
239
    }
240

  
241
    public List<AboutSponsor> getSponsors() {
242
        return this.sponsors;
243
    }
244

  
245
    public List<AboutTranslator> getTranslators() {
246
        return this.translators;
247
    }
248

  
249
    // public ImageIcon validIconFormat(URL iconUrl){
250
    // // comprobar si existe y comprobar si es imagen
251
    // if(iconUrl!=null){
252
    //
253
    // File f = new File(iconUrl.getFile());
254
    // String mimeType=null;
255
    //
256
    // try {
257
    // mimeType = iconUrl.openConnection().getContentType();
258
    // } catch (IOException e) {
259
    // // TODO Auto-generated catch block
260
    // e.printStackTrace();
261
    // }
262
    // boolean isImage = false;
263
    // String[] formatNames = ImageIO.getWriterMIMETypes();
264
    // for(int i=0;i<formatNames.length;i++){
265
    // if(formatNames[i].equals(mimeType)){
266
    // isImage = true;
267
    // }
268
    // }
269
    //
270
    // if(f.exists() && isImage){
271
    // ImageIcon image = new ImageIcon(iconUrl);
272
    // // Escalamos, si corresponde, el tamaño del icono
273
    // if(image.getIconHeight()>ICON_SIZE || image.getIconWidth()>ICON_SIZE){
274
    // float height = image.getIconHeight();
275
    // float width = image.getIconWidth();
276
    // if(height>=width && height>ICON_SIZE){
277
    // width = (width/height*ICON_SIZE);
278
    // height = ICON_SIZE;
279
    // }else if(width>height && width>ICON_SIZE){
280
    // height = (height/width*ICON_SIZE);
281
    // width = ICON_SIZE;
282
    // }
283
    // Image im = image.getImage();
284
    // image.setImage(im.getScaledInstance((int)width,(int)height, 0));
285
    // }
286
    // return image;
287
    // }
288
    // }
289
    //
290
    // return null;
291
    // }
292

  
293
    @SuppressWarnings("rawtypes")
294
    private AboutParticipant getParticipantByName(List l, String name) {
295
        Iterator it = l.iterator();
296
        while (it.hasNext()) {
297
            AboutParticipant ap = (AboutParticipant) it.next();
298
            if (ap.getName().equals(name)) {
299
                return ap;
300
            }
301
        }
302
        return null;
303
    }
304

  
305
    public AboutDeveloper getDeveloper(String name) {
306
        AboutDeveloper ap =
307
            (AboutDeveloper) this.getParticipantByName(this.developers, name);
308
        if (ap != null) {
309
            return ap;
310
        }
311
        return null;
312
    }
313

  
314
    public AboutSponsor getSponsor(String name) {
315
        AboutSponsor ap =
316
            (AboutSponsor) this.getParticipantByName(this.sponsors, name);
317
        if (ap != null) {
318
            return ap;
319
        }
320
        return null;
321
    }
322

  
323
    public AboutTranslator getTranslator(String name) {
324
        AboutTranslator ap =
325
            (AboutTranslator) this.getParticipantByName(this.translators, name);
326
        if (ap != null) {
327
            return ap;
328
        }
329
        return null;
330
    }
331

  
332
    public String getStringFromFile(String filename)
333
        throws FileNotFoundException, IOException {
334

  
335
        BufferedReader b = new BufferedReader(new FileReader(filename));
336
        StringBuffer sb = new StringBuffer();
337
        String str;
338
        while ((str = b.readLine()) != null) {
339
            sb.append(str);
340
            sb.append('\n');
341
        }
342
        return sb.toString();
343

  
344
    }
345

  
346
    public String getStringFromUrl(URL url) {
347
        InputStream imp = null;
348
        try {
349
            imp = url.openStream();
350
        } catch (IOException e) {
351
            return null;
352
        }
353
        BufferedReader b = new BufferedReader(new InputStreamReader(imp));
354
        StringBuffer sb = new StringBuffer();
355
        String str;
356
        try {
357
            while ((str = b.readLine()) != null) {
358
                sb.append(str);
359
                sb.append('\n');
360
            }
361
            b.close();
362
        } catch (IOException e) {
363
            // Ignore it
364
        }
365
        String data = sb.toString();
366

  
367
        return addBaseURLTag(url, data);
368
    }
369

  
370
    /**
371
     * Add an HTML base tag to the document.
372
     */
373
    private String addBaseURLTag(URL url, String data) {
374
        String baseTag = "<base href=\"" + getURLBase(url) + "\"/>";
375
        int index = data.indexOf("<head>");
376
        // Document contains a head section
377
        if (index > -1) {
378
            data =
379
                data.substring(0, index) // HTML init
380
                    + "<head>"
381
                    + baseTag
382
                    + data.substring(index + "<head>".length());
383
        } else {
384
            index = data.indexOf("<html>");
385
            // Document contains an html section
386
            if (index > -1) {
387
                data = data.substring(0, index + "<html>".length()) // HTML init
388
                    + "<head>" + baseTag + "</head>" // Head
389
                    + data.substring(index + "<html>".length());
390
            } else {
391
                // Document doesn't contain nor a head nor an html section
392
                data = "<head>" + baseTag + "</head>" // Head
393
                    + data;
394
            }
395
        }
396
        return data;
397
    }
398

  
399
    public String getStringFromUrl(URL url, Map<String, String> vars) {
400
        String data = this.getStringFromUrl(url);
401
        return this.expandVars(data, vars);
402
    }
403

  
404
    public String expandVars(String data, Map<String, String> vars) {
405
        Iterator<Map.Entry<String, String>> it = vars.entrySet().iterator();
406
        while (it.hasNext()) {
407
            Map.Entry<String, String> entry = it.next();
408
            data = replaceVariable(data, entry.getKey(), entry.getValue());
409
        }
410
        return data;
411
    }
412

  
413
    private String replaceVariable(String text, String varName,
414
        String replacementString) {
415
        String searchString = "%(".concat(varName).concat(")");
416
        StringBuffer sBuffer = new StringBuffer();
417
        int pos = 0;
418
        while ((pos = text.indexOf(searchString)) != -1) {
419
            sBuffer.append(text.substring(0, pos) + replacementString);
420
            text = text.substring(pos + searchString.length());
421
        }
422
        sBuffer.append(text);
423
        return sBuffer.toString();
424
    }
425

  
426
    public String getURLBase(URL fileURL) {
427
        if (fileURL != null) {
428
            String urlStr = fileURL.toString();
429
            int index = urlStr.lastIndexOf('/');
430
            if (index == urlStr.length() - 1) {
431
                // It is a / ending the URL, get the previous one
432
                index = urlStr.substring(0, index).lastIndexOf('/');
433
            }
434
            return urlStr.substring(0, index + 1);
435
        }
436
        return null;
437
    }
438

  
439
    // public String generateContributorsPage(AboutParticipant participant) {
440
    // String fileString=null;
441
    //
442
    // String page=null;
443
    //
444
    // URL resource = participant.getDescription();
445
    // if( resource!=null ) {
446
    // page = this.getStringFromUrl(resource);
447
    // }
448
    //
449
    // if( page != null ) {
450
    // String[] s = fileString.split("</body>");
451
    // String result = "";
452
    // for(int i=0;i<s.length-1;i++){
453
    // result = result + s[i];
454
    // if(i<s.length-2){
455
    // result = result + "</body>";
456
    // }
457
    // }
458
    // }
459
    //
460
    // //Si tiene contribuciones
461
    // List contributions = participant.getContributions();
462
    // if(contributions.size()>0){
463
    // String table = "\t<div style=\"padding-top:5px\">\n" +
464
    // "\t\t<div style=\"background-color: white;padding-top: 5px\">\n" +
465
    // "\t\t\t<center><h3>Contribuciones realizadas</h3></center>\n" +
466
    // "\t\t\t<br>\n" +
467
    // "\t\t\t<table width=\"100%\" border=\"1\">\n" +
468
    // "\t\t\t\t<tr>\n" +
469
    // "\t\t\t\t\t<td valign=\"top\" align=\"center\">Nombre</td>\n" +
470
    // "\t\t\t\t\t<td valign=\"top\" align=\"center\">Descripcion</td>\n" +
471
    // "\t\t\t\t\t<td valign=\"top\" colspan=\"2\" align=\"center\">Periodo</td>\n"
472
    // +
473
    // "\t\t\t\t</tr>\n";
474
    // Iterator it = contributions.iterator();
475
    // SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
476
    // while(it.hasNext()){
477
    // AboutContribution ap = (AboutContribution)it.next();
478
    // String cont = "";
479
    // if(ap.getDescription()!=null){
480
    // cont=ap.getDescription();
481
    // }
482
    //
483
    // table = table +
484
    // "\t\t\t\t<tr>\n" +
485
    // "\t\t\t\t\t <td valign=\"top\">"+ap.getTitle()+"</td>\n" +
486
    // "\t\t\t\t\t <td valign=\"top\">"+cont+"</td>\n" +
487
    // "\t\t\t\t\t  <td valign=\"top\">"+formatter.format(ap.getBegin().getTime())+"</td>\n"
488
    // +
489
    // "\t\t\t\t\t  <td valign=\"top\">"+formatter.format(ap.getEnd().getTime())+"</td>\n"
490
    // +
491
    // "\t\t\t\t</tr>\n" ;
492
    // }
493
    // table = table + "\t\t\t</table>\n\t\t</div>\n\t</div>\n";
494
    // result = result + table+"</body>\n";
495
    // }
496
    //
497
    //
498
    // result = result+s[s.length-1];
499
    // return result;
500
    // }
501

  
502
}
org.gvsig.about/trunk/org.gvsig.about/org.gvsig.about.impl/src/main/java/org/gvsig/about/impl/package.html
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml">
4
<head>
5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
<title>org.gvsig.scripting.impl package documentation</title>
7
</head>
8
<body>
9

  
10
	<p>TODO: Example library default implementation description.</p>
11
	
12
	<p>See the <a href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html#packagecomment">Javadoc Tool documentation about the package file</a></p>
13

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

  
24
import java.util.Date;
25

  
26
import org.gvsig.about.AboutContribution;
27
import org.gvsig.about.AboutManager;
28
import org.gvsig.about.AboutParticipant;
29

  
30
/**
31
 * @author gvSIG Team
32
 * @version $Id$
33
 * 
34
 */
35
public class DefaultAboutContribution implements AboutContribution {
36

  
37
    private AboutParticipant participant;
38
    private Date begin;
39
    private Date end;
40
    private String description;
41
    private String title;
42

  
43
    public DefaultAboutContribution(AboutParticipant participant, String title,
44
        String description, Date begin, Date end) {
45
        this.participant = participant;
46
        this.title = title;
47
        this.description = description;
48
        this.begin = begin;
49
        this.end = end;
50
    }
51

  
52
    public DefaultAboutContribution(AboutManager manager, String tipo,
53
        String participantName, String title, String description, Date begin,
54
        Date end) {
55
        AboutParticipant ap = null;
56
        if (tipo.equals("AboutDeveloper")) {
57
            ap = manager.getDeveloper(participantName);
58
        } else
59
            if (tipo.equals("AboutSponsor")) {
60
                ap = manager.getSponsor(participantName);
61
            } else
62
                if (tipo.equals("AboutTranslator")) {
63
                    ap = manager.getTranslator(participantName);
64
                }
65
        this.participant = ap;
66
        this.title = title;
67
        this.description = description;
68
        this.begin = begin;
69
        this.end = end;
70
    }
71

  
72
    public String getTitle() {
73
        return this.title;
74
    }
75

  
76
    public Date getEnd() {
77
        return this.end;
78
    }
79

  
80
    public Date getBegin() {
81
        return this.begin;
82
    }
83

  
84
    public AboutParticipant getParticipant() {
85
        return this.participant;
86
    }
87

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

  
24
import java.net.URL;
25
import java.text.SimpleDateFormat;
26
import java.util.ArrayList;
27
import java.util.Calendar;
28
import java.util.Collections;
29
import java.util.Comparator;
30
import java.util.Date;
31
import java.util.HashMap;
32
import java.util.Iterator;
33
import java.util.List;
34
import java.util.Map;
35
import java.util.regex.Pattern;
36

  
37
import org.gvsig.about.AboutContribution;
38
import org.gvsig.about.AboutManager;
39
import org.gvsig.about.AboutParticipant;
40

  
41
/**
42
 * @author gvSIG Team
43
 * @version $Id$
44
 * 
45
 */
46
public class AbstractParticipant implements AboutParticipant {
47

  
48
    private String name;
49
    private URL description;
50
    private int priority;
51
    private URL icon;
52
    protected List<AboutContribution> contributions;
53
    private DefaultAboutManager manager;
54
    private Map<String, String> vars;
55

  
56
    public AbstractParticipant(AboutManager manager, String name,
57
        URL description, int priority, URL icon) {
58
        this.manager = (DefaultAboutManager) manager;
59
        this.name = name;
60
        this.description = description;
61
        this.priority = priority;
62
        this.icon = icon;
63
        this.contributions = new ArrayList<AboutContribution>();
64
        this.vars = new HashMap<String, String>();
65
    }
66

  
67
    public void addVariables(Map<String, String> vars) {
68
        this.vars.putAll(vars);
69
    }
70

  
71
    public void set(String name, String value) {
72
        this.vars.put(name, value);
73
    }
74

  
75
    public String getName() {
76
        return this.name;
77
    }
78

  
79
    public URL getDescription() {
80
        return this.description;
81
    }
82

  
83
    public int getPriority() {
84
        return this.priority;
85
    }
86

  
87
    @Override
88
    public String toString() {
89
        return this.name;
90
    }
91

  
92
    public URL getIcon() {
93
        return this.icon;
94
    }
95

  
96
    public AboutManager getManager() {
97
        return this.manager;
98
    }
99

  
100
    protected Date getDate(int year, int month, int day) {
101
        Calendar cal = Calendar.getInstance();
102
        cal.set(year, month, day);
103
        return cal.getTime();
104
    }
105

  
106
    public AboutContribution addContribution(String title, String description,
107
        int begin_year, int begin_month, int begin_day, int end_year,
108
        int end_month, int end_day) {
109
        return this.addContribution(title, description,
110
            getDate(begin_year, begin_month, begin_day),
111
            getDate(end_year, end_month, end_day));
112
    }
113

  
114
    public AboutContribution addContribution(String title, String description,
115
        Date begin, Date end) {
116
        AboutContribution contribution =
117
            new DefaultAboutContribution(this, title, description, begin, end);
118
        // Añadimos a la lista de contribuciones
119
        this.contributions.add(contribution);
120
        // Ordenamos por fecha de inicio
121
        Collections.sort(this.contributions,
122
            new Comparator<AboutContribution>() {
123

  
124
                public int compare(AboutContribution p1, AboutContribution p2) {
125
                    if (p1.getBegin().before(p2.getBegin())) {
126
                        return -1;
127
                    } else
128
                        if (p1.getBegin().after(p2.getBegin())) {
129
                            return 1;
130
                        } else {
131
                            return 0;
132
                        }
133
                }
134
            });
135

  
136
        return contribution;
137
    }
138

  
139
    public List<AboutContribution> getContributions() {
140
        return this.contributions;
141
    }
142

  
143
    public String getInformationPage() {
144
        String description = null;
145
        String contributionsTable = this.getContributionsTable();
146

  
147
        if (this.description != null) {
148
            description = manager.getStringFromUrl(this.description, this.vars);
149
        }
150
        if (description == null) {
151
            return "<html>\n" // Begin html
152
                + "<body>\n" + contributionsTable + "</body>\n" // Body
153
                + "</html>"; // End html
154
        }
155

  
156
        String baseTag =
157
            "<base href=\"" + manager.getURLBase(getDescription()) + "\"/>";
158

  
159
        int index = description.indexOf("<head>");
160
        if (index > -1) {
161
            description =
162
                description.substring(0, index) // HTML init
163
                    + "<head>"
164
                    + baseTag
165
                    + description.substring(index + "<head>".length());
166
        } else {
167
            index = description.indexOf("<html>");
168
            if (index > -1) {
169
                description =
170
                    description.substring(0, index + "<html>".length())
171
                        + "<head>" + baseTag + "</head>" // Head
172
                        + description.substring(index + "<html>".length());
173
            } else {
174
                description = "<head>" + baseTag + "</head>" // Head
175
                    + description;
176
            }
177
        }
178

  
179
        if (description.toLowerCase().indexOf("</body>") < 0) {
180
            return description + "\n" + contributionsTable;
181
        }
182
        return Pattern.compile("</body>", Pattern.CASE_INSENSITIVE)
183
            .matcher(description)
184
            .replaceFirst(contributionsTable + "\n</body>");
185
    }
186

  
187
    public String getContributionsTable() {
188
        List<AboutContribution> contributions = this.getContributions();
189
        if (contributions.size() < 1) {
190
            return "";
191
        }
192
        String table =
193
            "\t<div style=\"padding-top:5px\">\n"
194
                + "\t\t<div style=\"background-color: white;padding-top: 5px\">\n"
195
                + "\t\t\t<center><h3>Contribuciones realizadas</h3></center>\n"
196
                + "\t\t\t<br>\n"
197
                + "\t\t\t<table width=\"100%\" border=\"1\">\n"
198
                + "\t\t\t\t<tr>\n"
199
                + "\t\t\t\t\t<td valign=\"top\" align=\"center\">Nombre</td>\n"
200
                + "\t\t\t\t\t<td valign=\"top\" align=\"center\">Descripcion</td>\n"
201
                + "\t\t\t\t\t<td valign=\"top\" colspan=\"2\" align=\"center\">Periodo</td>\n"
202
                + "\t\t\t\t</tr>\n";
203
        Iterator<AboutContribution> it = contributions.iterator();
204
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
205
        while (it.hasNext()) {
206
            AboutContribution ap = it.next();
207
            String cont = "";
208
            if (ap.getDescription() != null) {
209
                cont = ap.getDescription();
210
            }
211

  
212
            table =
213
                table + "\t\t\t\t<tr>\n" + "\t\t\t\t\t <td valign=\"top\">"
214
                    + ap.getTitle() + "</td>\n"
215
                    + "\t\t\t\t\t <td valign=\"top\">" + cont + "</td>\n"
216
                    + "\t\t\t\t\t  <td valign=\"top\">"
217
                    + formatter.format(ap.getBegin().getTime()) + "</td>\n"
218
                    + "\t\t\t\t\t  <td valign=\"top\">"
219
                    + formatter.format(ap.getEnd().getTime()) + "</td>\n"
220
                    + "\t\t\t\t</tr>\n";
221
        }
222
        table = table + "\t\t\t</table>\n\t\t</div>\n\t</div>\n";
223
        return table;
224
    }
225

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

  
24
import java.net.URL;
25

  
26
import org.gvsig.about.AboutSponsor;
27

  
28
/**
29
 * @author gvSIG Team
30
 * @version $Id$
31
 * 
32
 */
33
public class DefaultAboutSponsor extends AbstractParticipant implements
34
    AboutSponsor {
35

  
36
    public DefaultAboutSponsor(DefaultAboutManager manager, String name,
37
        URL description, int priority, URL icon) {
38
        super(manager, name, description, priority, icon);
39
    }
40

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

  
24
import java.awt.BorderLayout;
25
import java.awt.Dimension;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28

  
29
import javax.swing.BorderFactory;
30
import javax.swing.JPanel;
31

  
32
import org.gvsig.about.AboutParticipant;
33
import org.gvsig.about.AboutProject;
34
import org.gvsig.about.impl.DefaultAboutManager;
35

  
36
/**
37
 * @author gvSIG Team
38
 * @version $Id$
39
 * 
40
 */
41
public class JAboutPanel extends JPanel implements ActionListener {
42

  
43
    /**
44
	 * 
45
	 */
46
    private static final long serialVersionUID = 5605530722128487156L;
47
    protected DefaultAboutManager manager;
48
    protected JAboutBrowser browser;
49
    protected JContentPanel content;
50

  
51
    public JAboutPanel(DefaultAboutManager manager) {
52
        this.manager = manager;
53

  
54
        setLayout(new BorderLayout());
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff