Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.swing / org.gvsig.vcsgis.swing.impl / src / main / java / org / gvsig / vcsgis / swing / impl / VCSGisSwingCommons.java @ 3458

History | View | Annotate | Download (8.88 KB)

1
/*
2
 * gvSIG. Desktop Geographic Information System.
3
 * 
4
 * Copyright (C) 2007-2020 gvSIG Association.
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 3
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, see <https://www.gnu.org/licenses/>. 
18
 * 
19
 * For any additional information, do not hesitate to contact us
20
 * at info AT gvsig.com, or visit our website www.gvsig.com.
21
 */
22

    
23
package org.gvsig.vcsgis.swing.impl;
24

    
25
import java.awt.Color;
26
import java.awt.Component;
27
import java.awt.Font;
28
import java.awt.font.TextAttribute;
29
import java.util.Map;
30
import javax.swing.JOptionPane;
31
import javax.swing.SwingUtilities;
32
import org.gvsig.fmap.dal.feature.FeatureStore;
33
import org.gvsig.fmap.geom.Geometry;
34
import org.gvsig.fmap.geom.GeometryUtils;
35
import org.gvsig.fmap.geom.primitive.Envelope;
36
import org.gvsig.tools.ToolsLocator;
37
import org.gvsig.tools.i18n.I18nManager;
38
import org.gvsig.tools.swing.api.ToolsSwingLocator;
39
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
40
import org.gvsig.vcsgis.lib.VCSGisLocator;
41
import org.gvsig.vcsgis.lib.VCSGisManager;
42
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_AUTHENTICATION_EXPIRED;
43
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_CANT_AUTHENTICATE_USER;
44
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_INVALID_AUTHENTICATION_TOKEN;
45
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_INVALID_USERCODE;
46
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_USER_NOT_AUTHORIZED;
47
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_CONFLICT;
48
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_UNMODIFIED;
49
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_NEW;
50
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_MODIFIED;
51
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_OUTDATED;
52
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_OUTDATED_AND_MODIFIED;
53
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_REPOSITORY_NEW;
54
import org.gvsig.vcsgis.lib.VCSGisRuntimeException;
55
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
56
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
57

    
58
/**
59
 *
60
 * @author gvSIG Team
61
 */
62
public class VCSGisSwingCommons {
63

    
64
//    public static final Color COLOR_LOCAL_NEW = Color.GREEN.darker();
65
//    public static final Color COLOR_LOCAL_MODIFIED = Color.BLUE.darker();
66
//    public static final Color COLOR_LOCAL_UNMODIFIED = Color.BLACK;
67
//    * public static final Color COLOR_REPOSITORY_MODIFIED = Color.BLACK; // bold
68
//    * public static final Color COLOR_LOCAL_AND_REPOSITORY_MODIFIED = Color.RED;
69
//    * public static final Color COLOR_CONFLICT = Color.RED;
70
    
71
    public static final Color COLOR_LOCAL_NEW = Color.GREEN.darker();
72
    public static final Color COLOR_LOCAL_MODIFIED = Color.BLUE.darker();
73
    public static final Color COLOR_LOCAL_UNMODIFIED = Color.BLACK;
74
    public static final Color COLOR_LOCAL_AND_REPOSITORY_MODIFIED = Color.RED.brighter();
75
    public static final Color COLOR_REPOSITORY_NEW = Color.MAGENTA.darker();
76
    public static final Color COLOR_REPOSITORY_MODIFIED = Color.DARK_GRAY;
77
    public static final Color COLOR_CONFLICT = Color.RED;
78
    public static final Color COLOR_UNKNOWN_STATE = Color.LIGHT_GRAY;
79
    
80
    public static final Color COLOR_OUTDATED = COLOR_REPOSITORY_MODIFIED;
81
    public static final Color COLOR_OUTDATED_AND_MODIFIED = COLOR_LOCAL_AND_REPOSITORY_MODIFIED;
82
    
83
    public static String getHTMLColorTag(Color color, String text) {
84
        return getHTMLColorTag(color, false, text);
85
    }
86
    
87
    public static String getHTMLColorTag(Color color, boolean bold, String text) {
88
        String pattern;
89
        if( bold ) {
90
            pattern = "<html><font color='rgb(%s, %s, %s)'><b>%s</b></font></html>";
91
        } else {
92
            pattern = "<html><font color='rgb(%s, %s, %s)'>%s</font></html>";
93
        }
94
        String tag = String.format(pattern, 
95
            color.getRed(),
96
            color.getGreen(),
97
            color.getBlue(),
98
            text
99
        );
100
        return tag;
101
    }
102
    
103
    public static String getHTMLColorTag(int state, String text) {
104
        switch (state) {
105
            case STATE_LOCAL_UNMODIFIED:
106
                return getHTMLColorTag(COLOR_LOCAL_UNMODIFIED, false, text);
107
            case STATE_LOCAL_NEW:
108
                return getHTMLColorTag(COLOR_LOCAL_NEW, false, text);
109
            case STATE_LOCAL_MODIFIED:
110
                return getHTMLColorTag(COLOR_LOCAL_MODIFIED, false, text);
111
            case STATE_LOCAL_OUTDATED:
112
                return getHTMLColorTag(COLOR_REPOSITORY_MODIFIED, false, text);
113
            case STATE_LOCAL_OUTDATED_AND_MODIFIED:
114
                return getHTMLColorTag(COLOR_LOCAL_AND_REPOSITORY_MODIFIED, false, text);
115
            case STATE_CONFLICT:
116
                return getHTMLColorTag(COLOR_CONFLICT, false, text);
117
            case STATE_REPOSITORY_NEW:
118
                return getHTMLColorTag(COLOR_REPOSITORY_NEW, false, text);
119
            default:
120
                return getHTMLColorTag(COLOR_UNKNOWN_STATE, false, text);
121
        }
122
    }
123
    
124
    public static void setColorCompoment(Component c, Color color, boolean bold) {
125
        if( bold ) {
126
            Font f = c.getFont();
127
            Map attributes = f.getAttributes();
128
            attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
129
            c.setFont(c.getFont().deriveFont(attributes));
130
        }
131
        c.setForeground(color);
132
    }
133
    
134
    public static void setColorCompoment(Component c, int state) {
135
        switch (state) {
136
            case STATE_LOCAL_UNMODIFIED:
137
                setColorCompoment(c, COLOR_LOCAL_UNMODIFIED, false);
138
                break;
139
            case STATE_LOCAL_NEW:
140
                setColorCompoment(c, COLOR_LOCAL_NEW, false);
141
                break;
142
            case STATE_LOCAL_MODIFIED:
143
                setColorCompoment(c, COLOR_LOCAL_MODIFIED, false);
144
                break;
145
            case STATE_LOCAL_OUTDATED:
146
                setColorCompoment(c, COLOR_REPOSITORY_MODIFIED, false);
147
                break;
148
            case STATE_LOCAL_OUTDATED_AND_MODIFIED:
149
                setColorCompoment(c, COLOR_LOCAL_AND_REPOSITORY_MODIFIED, false);
150
                break;
151
            case STATE_CONFLICT:
152
                setColorCompoment(c, COLOR_CONFLICT, false);
153
                break;
154
            case STATE_REPOSITORY_NEW:
155
                setColorCompoment(c, COLOR_REPOSITORY_NEW, false);
156
                break;
157
            default:
158
                setColorCompoment(c, COLOR_UNKNOWN_STATE, false);
159
                break;
160
        }
161
    }
162

    
163
    public static boolean notInSwingThreadInvokeLater(Runnable x) {
164
        if( SwingUtilities.isEventDispatchThread() ) {
165
            return false;
166
        }
167
        SwingUtilities.invokeLater(x);
168
        return true;
169
    }
170
    
171
    public static void cleanHighligthed() {
172
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
173
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
174
        swingManager.getDefaultServices().cleanHighligthed();
175
    }
176

    
177
    public static void refreshDocument(FeatureStore store) {
178
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
179
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
180
        swingManager.getDefaultServices().refreshDocument(store);
181
    }
182
    
183
    public static Geometry createBBox(Geometry geom1, Geometry geom2){
184
        if(geom1 == null && geom2 == null){
185
            return null;
186
        }
187
        Envelope env = GeometryUtils.createEnvelope(Geometry.SUBTYPES.GEOM2D);
188
        if(geom1 != null){
189
            env.add(geom1);
190
        }
191
        if(geom2 != null){
192
            env.add(geom2);
193
        }
194
        return env.getGeometry();
195
    }
196

    
197
    public static boolean showAuthenticationsErrors(String title, VCSGisRuntimeException ex) {
198
        switch (ex.getErrnum()) {
199
            case ERR_CANT_AUTHENTICATE_USER:
200
            case ERR_INVALID_AUTHENTICATION_TOKEN:
201
            case ERR_USER_NOT_AUTHORIZED:
202
            case ERR_AUTHENTICATION_EXPIRED:
203
            case ERR_INVALID_USERCODE:
204
                ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
205
                I18nManager i18n = ToolsLocator.getI18nManager();
206
                dialogs.messageDialog(
207
                        "[" + ex.getErrnum() + "] " + ex.getMessage(),
208
                        i18n.getTranslation(title),
209
                        JOptionPane.WARNING_MESSAGE
210
                );
211
                return true;
212
        }
213
        return false;
214
    }
215

    
216
}