source: josm/trunk/src/org/openstreetmap/josm/tools/UrlLabel.java @ 6267

Last change on this file since 6267 was 6267, checked in by Don-vip, 5 years ago

Sonar/FindBugs - Replace singular fields by local variables

  • Property svn:eol-style set to native
File size: 2.9 KB
Line 
1// License: GPL. Copyright 2007 by Immanuel Scholz and others
2package org.openstreetmap.josm.tools;
3
4import java.awt.Cursor;
5import java.awt.event.MouseEvent;
6import java.awt.event.MouseListener;
7import javax.swing.JLabel;
8import javax.swing.SwingUtilities;
9import static org.openstreetmap.josm.tools.I18n.tr;
10
11/**
12 * Label that contains a clickable link.
13 * @author Imi
14 * 5050: Simplifications by Zverikk included by akks
15 */
16public class UrlLabel extends JLabel implements MouseListener {
17
18    private String url = "";
19    private String description = "";
20
21    /**
22     * Constructs a new {@code UrlLabel}.
23     */
24    public UrlLabel() {
25        addMouseListener(this);
26        setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
27    }
28
29    public UrlLabel(String url) {
30        this (url, url, 0);
31    }
32
33    public UrlLabel(String url, int fontPlus) {
34        this (url, url, fontPlus);
35    }
36
37    public UrlLabel(String url, String description) {
38        this (url, url, 0);
39    }
40
41    public UrlLabel(String url, String description, int fontPlus) {
42        this();
43        setUrl(url);
44        setDescription(description);
45        if (fontPlus!=0) {
46            setFont(getFont().deriveFont(0, getFont().getSize()+fontPlus));
47        }
48        refresh();
49    }
50
51    protected void refresh() {
52        if (url != null) {
53            setText("<html><a href=\""+url+"\">"+description+"</a></html>");
54            setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
55            setToolTipText(String.format("<html>%s<br/>%s</html>", url, tr("Right click = copy to clipboard")));
56        } else {
57            setText("<html>" + description + "</html>");
58            setCursor(null);
59            setToolTipText(null);
60        }
61    }
62
63    /**
64     * Sets the URL to be visited if the user clicks on this URL label. If null, the
65     * label turns into a normal label without hyperlink.
66     *
67     * @param url the url. Can be null.
68     */
69    public void setUrl(String url) {
70        this.url = url;
71        refresh();
72    }
73
74    /**
75     * Sets the text part of the URL label. Defaults to the empty string if description is null.
76     *
77     * @param description the description
78     */
79    public void setDescription(String description) {
80        this.description = description == null? "" : description;
81        this.description = this.description.replace("&", "&amp;").replace(">", "&gt;").replace("<", "&lt;");
82        refresh();
83    }
84
85    @Override
86    public void mouseClicked(MouseEvent e) {
87        if( SwingUtilities.isLeftMouseButton(e) ) {
88            OpenBrowser.displayUrl(url);
89        } else if( SwingUtilities.isRightMouseButton(e) ) {
90            Utils.copyToClipboard(url);
91        }
92    }
93    @Override
94    public void mousePressed(MouseEvent e) {    }
95    @Override
96    public void mouseEntered(MouseEvent e) {    }
97    @Override
98    public void mouseExited(MouseEvent e) {    }
99    @Override
100    public void mouseReleased(MouseEvent e) {    }
101
102}
Note: See TracBrowser for help on using the repository browser.