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 @ 3459

History | View | Annotate | Download (10.1 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 java.util.Set;
31
import javax.swing.JOptionPane;
32
import javax.swing.SwingUtilities;
33
import org.apache.commons.lang3.StringUtils;
34
import org.gvsig.fmap.dal.feature.FeatureStore;
35
import org.gvsig.fmap.geom.Geometry;
36
import org.gvsig.fmap.geom.GeometryUtils;
37
import org.gvsig.fmap.geom.primitive.Envelope;
38
import org.gvsig.tools.ToolsLocator;
39
import org.gvsig.tools.i18n.I18nManager;
40
import org.gvsig.tools.swing.api.ToolsSwingLocator;
41
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
42
import org.gvsig.vcsgis.lib.VCSGisLocator;
43
import org.gvsig.vcsgis.lib.VCSGisManager;
44
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_AUTHENTICATION_EXPIRED;
45
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_CANT_AUTHENTICATE_USER;
46
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_INVALID_AUTHENTICATION_TOKEN;
47
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_INVALID_USERCODE;
48
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_USER_NOT_AUTHORIZED;
49
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_CONFLICT;
50
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_MODIFIED;
51
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_NEW;
52
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_OUTDATED;
53
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_OUTDATED_AND_MODIFIED;
54
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_UNMODIFIED;
55
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_REPOSITORY_NEW;
56
import org.gvsig.vcsgis.lib.VCSGisRuntimeException;
57
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
58
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
59

    
60
/**
61
 *
62
 * @author gvSIG Team
63
 */
64
public class VCSGisSwingCommons {
65

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

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

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

    
205
    public static boolean showAuthenticationErrors(String title, VCSGisRuntimeException ex) {
206
        return showAuthenticationErrors(title, ex.getErrnum(), ex.getMessage());
207
    }
208

    
209
    public static boolean showAuthenticationErrors(String title, int errNum) {
210
        return showAuthenticationErrors(title, errNum, null);
211
    }
212

    
213
    public static boolean showAuthenticationErrors(String title, int errNum, String message) {
214
        if(StringUtils.isBlank(message)){
215
            message = VCSGisLocator.getManager().getErrorMessage(errNum);
216
        }
217
        switch (errNum) {
218
            case ERR_CANT_AUTHENTICATE_USER:
219
            case ERR_INVALID_AUTHENTICATION_TOKEN:
220
            case ERR_USER_NOT_AUTHORIZED:
221
            case ERR_AUTHENTICATION_EXPIRED:
222
            case ERR_INVALID_USERCODE:
223
                ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
224
                I18nManager i18n = ToolsLocator.getI18nManager();
225
                dialogs.messageDialog(
226
                        "[" + errNum + "] " + message,
227
                        i18n.getTranslation(title),
228
                        JOptionPane.WARNING_MESSAGE
229
                );
230
                return true;
231
        }
232
        return false;
233
    }
234

    
235
    public static boolean showAuthenticationRequiredMessage(String title) {
236
        ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
237
        I18nManager i18n = ToolsLocator.getI18nManager();
238
        dialogs.messageDialog(
239
                i18n.getTranslation("_Authorization_required_for_this_operation"),
240
                i18n.getTranslation(title),
241
                JOptionPane.WARNING_MESSAGE
242
        );
243
        return true;
244
    }
245

    
246
}