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

History | View | Annotate | Download (10.7 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.HashMap;
30
import java.util.List;
31
import java.util.Map;
32
import java.util.Set;
33
import javax.swing.JOptionPane;
34
import javax.swing.SwingUtilities;
35
import org.apache.commons.lang3.StringUtils;
36
import org.gvsig.fmap.dal.AbstractStoresRepository;
37
import org.gvsig.fmap.dal.BaseStoresRepository;
38
import org.gvsig.fmap.dal.DALLocator;
39
import org.gvsig.fmap.dal.DataManager;
40
import org.gvsig.fmap.dal.DataStoreParameters;
41
import org.gvsig.fmap.dal.OpenDataStoreParameters;
42
import org.gvsig.fmap.dal.StoresRepository;
43
import org.gvsig.fmap.dal.feature.FeatureStore;
44
import org.gvsig.fmap.geom.Geometry;
45
import org.gvsig.fmap.geom.GeometryUtils;
46
import org.gvsig.fmap.geom.primitive.Envelope;
47
import org.gvsig.tools.ToolsLocator;
48
import org.gvsig.tools.i18n.I18nManager;
49
import org.gvsig.tools.swing.api.ToolsSwingLocator;
50
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
51
import org.gvsig.tools.util.UnmodifiableBasicSet;
52
import org.gvsig.tools.util.UnmodifiableBasicSetAdapter;
53
import org.gvsig.vcsgis.lib.VCSGisEntity;
54
import org.gvsig.vcsgis.lib.VCSGisLocator;
55
import org.gvsig.vcsgis.lib.VCSGisManager;
56
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_AUTHENTICATION_EXPIRED;
57
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_CANT_AUTHENTICATE_USER;
58
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_INVALID_AUTHENTICATION_TOKEN;
59
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_INVALID_USERCODE;
60
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_USER_NOT_AUTHORIZED;
61
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_CONFLICT;
62
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_MODIFIED;
63
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_NEW;
64
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_OUTDATED;
65
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_OUTDATED_AND_MODIFIED;
66
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_UNMODIFIED;
67
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_REPOSITORY_NEW;
68
import org.gvsig.vcsgis.lib.VCSGisRuntimeException;
69
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace;
70
import org.gvsig.vcsgis.swing.VCSGisSwingLocator;
71
import org.gvsig.vcsgis.swing.VCSGisSwingManager;
72

    
73
/**
74
 *
75
 * @author gvSIG Team
76
 */
77
public class VCSGisSwingCommons {
78

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

    
178
    public static boolean notInSwingThreadInvokeLater(Runnable x) {
179
        if( SwingUtilities.isEventDispatchThread() ) {
180
            return false;
181
        }
182
        SwingUtilities.invokeLater(x);
183
        return true;
184
    }
185
    
186
    public static void cleanHighligthed() {
187
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
188
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
189
        swingManager.getDefaultServices().cleanHighligthed();
190
    }
191

    
192
    public static void refreshDocument(FeatureStore store) {
193
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
194
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
195
        swingManager.getDefaultServices().refreshDocument(store);
196
    }
197
    
198
    public static void refreshDocument(Set<FeatureStore> stores) {
199
        VCSGisManager manager = VCSGisLocator.getVCSGisManager();
200
        VCSGisSwingManager swingManager = VCSGisSwingLocator.getVCSGisSwingManager();
201
        swingManager.getDefaultServices().refreshDocument(stores);
202
    }
203
    
204
    public static Geometry createBBox(Geometry geom1, Geometry geom2){
205
        if(geom1 == null && geom2 == null){
206
            return null;
207
        }
208
        Envelope env = GeometryUtils.createEnvelope(Geometry.SUBTYPES.GEOM2D);
209
        if(geom1 != null){
210
            env.add(geom1);
211
        }
212
        if(geom2 != null){
213
            env.add(geom2);
214
        }
215
        return env.getGeometry();
216
    }
217

    
218
    public static boolean showAuthenticationErrors(String title, VCSGisRuntimeException ex) {
219
        return showAuthenticationErrors(title, ex.getErrnum(), ex.getMessage());
220
    }
221

    
222
    public static boolean showAuthenticationErrors(String title, int errNum) {
223
        return showAuthenticationErrors(title, errNum, null);
224
    }
225

    
226
    public static boolean showAuthenticationErrors(String title, int errNum, String message) {
227
        if(StringUtils.isBlank(message)){
228
            message = VCSGisLocator.getManager().getErrorMessage(errNum);
229
        }
230
        switch (errNum) {
231
            case ERR_CANT_AUTHENTICATE_USER:
232
            case ERR_INVALID_AUTHENTICATION_TOKEN:
233
            case ERR_USER_NOT_AUTHORIZED:
234
            case ERR_AUTHENTICATION_EXPIRED:
235
            case ERR_INVALID_USERCODE:
236
                ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
237
                I18nManager i18n = ToolsLocator.getI18nManager();
238
                dialogs.messageDialog(
239
                        "[" + errNum + "] " + message,
240
                        i18n.getTranslation(title),
241
                        JOptionPane.WARNING_MESSAGE
242
                );
243
                return true;
244
        }
245
        return false;
246
    }
247

    
248
    public static boolean showAuthenticationRequiredMessage(String title) {
249
        ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
250
        I18nManager i18n = ToolsLocator.getI18nManager();
251
        dialogs.messageDialog(
252
                i18n.getTranslation("_Authorization_required_for_this_operation"),
253
                i18n.getTranslation(title),
254
                JOptionPane.WARNING_MESSAGE
255
        );
256
        return true;
257
    }
258

    
259
}