Revision 3603 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
VCSGisSwingCommons.java | ||
---|---|---|
26 | 26 |
import java.awt.Component; |
27 | 27 |
import java.awt.Font; |
28 | 28 |
import java.awt.font.TextAttribute; |
29 |
import java.io.IOException; |
|
30 |
import java.io.InputStream; |
|
29 | 31 |
import java.util.HashMap; |
30 |
import java.util.List; |
|
31 | 32 |
import java.util.Map; |
33 |
import java.util.Objects; |
|
34 |
import java.util.Properties; |
|
32 | 35 |
import java.util.Set; |
33 | 36 |
import javax.swing.JOptionPane; |
34 | 37 |
import javax.swing.SwingUtilities; |
35 | 38 |
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 | 39 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
44 | 40 |
import org.gvsig.fmap.geom.Geometry; |
45 | 41 |
import org.gvsig.fmap.geom.GeometryUtils; |
46 | 42 |
import org.gvsig.fmap.geom.primitive.Envelope; |
47 | 43 |
import org.gvsig.tools.ToolsLocator; |
44 |
import org.gvsig.tools.dataTypes.Coercion; |
|
45 |
import org.gvsig.tools.dataTypes.CoercionException; |
|
48 | 46 |
import org.gvsig.tools.i18n.I18nManager; |
47 |
import org.gvsig.tools.swing.api.DataTypes; |
|
49 | 48 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
50 | 49 |
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 | 50 |
import org.gvsig.vcsgis.lib.VCSGisLocator; |
55 | 51 |
import org.gvsig.vcsgis.lib.VCSGisManager; |
56 | 52 |
import static org.gvsig.vcsgis.lib.VCSGisManager.ERR_AUTHENTICATION_EXPIRED; |
... | ... | |
66 | 62 |
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_LOCAL_UNMODIFIED; |
67 | 63 |
import static org.gvsig.vcsgis.lib.VCSGisManager.STATE_REPOSITORY_NEW; |
68 | 64 |
import org.gvsig.vcsgis.lib.VCSGisRuntimeException; |
69 |
import org.gvsig.vcsgis.lib.workspace.VCSGisWorkspace; |
|
70 | 65 |
import org.gvsig.vcsgis.swing.VCSGisSwingLocator; |
71 | 66 |
import org.gvsig.vcsgis.swing.VCSGisSwingManager; |
67 |
import org.gvsig.vcsgis.swing.impl.checkout.VCSGisJCheckoutImpl; |
|
68 |
import org.slf4j.LoggerFactory; |
|
72 | 69 |
|
73 | 70 |
/** |
74 | 71 |
* |
... | ... | |
76 | 73 |
*/ |
77 | 74 |
public class VCSGisSwingCommons { |
78 | 75 |
|
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; |
|
76 |
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(VCSGisSwingCommons.class); |
|
77 |
|
|
78 |
private static final String ID_COLOR_LOCAL_NEW = "COLOR_LOCAL_NEW"; |
|
79 |
private static final String ID_COLOR_LOCAL_MODIFIED = "COLOR_LOCAL_MODIFIED"; |
|
80 |
private static final String ID_COLOR_LOCAL_UNMODIFIED = "COLOR_LOCAL_UNMODIFIED"; |
|
81 |
private static final String ID_COLOR_LOCAL_AND_REPOSITORY_MODIFIED = "COLOR_LOCAL_AND_REPOSITORY_MODIFIED"; |
|
82 |
private static final String ID_COLOR_REPOSITORY_NEW = "COLOR_REPOSITORY_NEW"; |
|
83 |
private static final String ID_COLOR_REPOSITORY_MODIFIED = "COLOR_REPOSITORY_MODIFIED"; |
|
84 |
private static final String ID_COLOR_CONFLICT = "COLOR_CONFLICT"; |
|
85 |
private static final String ID_COLOR_UNKNOWN_STATE = "COLOR_UNKNOWN_STATE"; |
|
85 | 86 |
|
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;
|
|
87 |
private static final Color COLOR_LOCAL_NEW = Color.GREEN.darker();
|
|
88 |
private static final Color COLOR_LOCAL_MODIFIED = Color.BLUE.darker();
|
|
89 |
private static final Color COLOR_LOCAL_UNMODIFIED = Color.BLACK;
|
|
90 |
private static final Color COLOR_LOCAL_AND_REPOSITORY_MODIFIED = Color.RED.brighter();
|
|
91 |
private static final Color COLOR_REPOSITORY_NEW = Color.ORANGE.darker().darker();
|
|
92 |
private static final Color COLOR_REPOSITORY_MODIFIED = Color.MAGENTA.darker();
|
|
93 |
private static final Color COLOR_CONFLICT = Color.RED;
|
|
94 |
private static final Color COLOR_UNKNOWN_STATE = Color.LIGHT_GRAY;
|
|
94 | 95 |
|
95 |
public static final Color COLOR_OUTDATED = COLOR_REPOSITORY_MODIFIED; |
|
96 |
public static final Color COLOR_OUTDATED_AND_MODIFIED = COLOR_LOCAL_AND_REPOSITORY_MODIFIED; |
|
96 |
private static Map<String, Color> entityColors = null; |
|
97 | 97 |
|
98 |
static { |
|
99 |
loadColors(); |
|
100 |
} |
|
101 |
|
|
98 | 102 |
public static String getHTMLColorTag(Color color, String text) { |
99 | 103 |
return getHTMLColorTag(color, false, text); |
100 | 104 |
} |
... | ... | |
102 | 106 |
public static String getHTMLColorTag(Color color, boolean bold, String text) { |
103 | 107 |
String pattern; |
104 | 108 |
if( bold ) { |
105 |
pattern = "<html><font color='rgb(%s, %s, %s)'><b>%s</b></font></html>";
|
|
109 |
pattern = "<html><font color='rgb(%s, %s, %s)'><i>%s</i></font></html>";
|
|
106 | 110 |
} else { |
107 | 111 |
pattern = "<html><font color='rgb(%s, %s, %s)'>%s</font></html>"; |
108 | 112 |
} |
... | ... | |
118 | 122 |
public static String getHTMLColorTag(int state, String text) { |
119 | 123 |
switch (state) { |
120 | 124 |
case STATE_LOCAL_UNMODIFIED: |
121 |
return getHTMLColorTag(COLOR_LOCAL_UNMODIFIED, false, text);
|
|
125 |
return getHTMLColorTag(entityColors.get(ID_COLOR_LOCAL_UNMODIFIED), false, text);
|
|
122 | 126 |
case STATE_LOCAL_NEW: |
123 |
return getHTMLColorTag(COLOR_LOCAL_NEW, false, text);
|
|
127 |
return getHTMLColorTag(entityColors.get(ID_COLOR_LOCAL_NEW), false, text);
|
|
124 | 128 |
case STATE_LOCAL_MODIFIED: |
125 |
return getHTMLColorTag(COLOR_LOCAL_MODIFIED, false, text);
|
|
129 |
return getHTMLColorTag(entityColors.get(ID_COLOR_LOCAL_MODIFIED), false, text);
|
|
126 | 130 |
case STATE_LOCAL_OUTDATED: |
127 |
return getHTMLColorTag(COLOR_REPOSITORY_MODIFIED, false, text);
|
|
131 |
return getHTMLColorTag(entityColors.get(ID_COLOR_REPOSITORY_MODIFIED), false, text);
|
|
128 | 132 |
case STATE_LOCAL_OUTDATED_AND_MODIFIED: |
129 |
return getHTMLColorTag(COLOR_LOCAL_AND_REPOSITORY_MODIFIED, false, text);
|
|
133 |
return getHTMLColorTag(entityColors.get(ID_COLOR_LOCAL_AND_REPOSITORY_MODIFIED), false, text);
|
|
130 | 134 |
case STATE_CONFLICT: |
131 |
return getHTMLColorTag(COLOR_CONFLICT, false, text);
|
|
135 |
return getHTMLColorTag(entityColors.get(ID_COLOR_CONFLICT), false, text);
|
|
132 | 136 |
case STATE_REPOSITORY_NEW: |
133 |
return getHTMLColorTag(COLOR_REPOSITORY_NEW, false, text);
|
|
137 |
return getHTMLColorTag(entityColors.get(ID_COLOR_REPOSITORY_NEW), false, text);
|
|
134 | 138 |
default: |
135 |
return getHTMLColorTag(COLOR_UNKNOWN_STATE, false, text);
|
|
139 |
return getHTMLColorTag(entityColors.get(ID_COLOR_UNKNOWN_STATE), false, text);
|
|
136 | 140 |
} |
137 | 141 |
} |
138 | 142 |
|
... | ... | |
149 | 153 |
public static void setColorCompoment(Component c, int state) { |
150 | 154 |
switch (state) { |
151 | 155 |
case STATE_LOCAL_UNMODIFIED: |
152 |
setColorCompoment(c, COLOR_LOCAL_UNMODIFIED, false);
|
|
156 |
setColorCompoment(c, entityColors.get(ID_COLOR_LOCAL_UNMODIFIED), false);
|
|
153 | 157 |
break; |
154 | 158 |
case STATE_LOCAL_NEW: |
155 |
setColorCompoment(c, COLOR_LOCAL_NEW, false);
|
|
159 |
setColorCompoment(c, entityColors.get(ID_COLOR_LOCAL_NEW), false);
|
|
156 | 160 |
break; |
157 | 161 |
case STATE_LOCAL_MODIFIED: |
158 |
setColorCompoment(c, COLOR_LOCAL_MODIFIED, false);
|
|
162 |
setColorCompoment(c, entityColors.get(ID_COLOR_LOCAL_MODIFIED), false);
|
|
159 | 163 |
break; |
160 | 164 |
case STATE_LOCAL_OUTDATED: |
161 |
setColorCompoment(c, COLOR_REPOSITORY_MODIFIED, false);
|
|
165 |
setColorCompoment(c, entityColors.get(ID_COLOR_REPOSITORY_MODIFIED), false);
|
|
162 | 166 |
break; |
163 | 167 |
case STATE_LOCAL_OUTDATED_AND_MODIFIED: |
164 |
setColorCompoment(c, COLOR_LOCAL_AND_REPOSITORY_MODIFIED, false);
|
|
168 |
setColorCompoment(c, entityColors.get(ID_COLOR_LOCAL_AND_REPOSITORY_MODIFIED), false);
|
|
165 | 169 |
break; |
166 | 170 |
case STATE_CONFLICT: |
167 |
setColorCompoment(c, COLOR_CONFLICT, false);
|
|
171 |
setColorCompoment(c, entityColors.get(ID_COLOR_CONFLICT), false);
|
|
168 | 172 |
break; |
169 | 173 |
case STATE_REPOSITORY_NEW: |
170 |
setColorCompoment(c, COLOR_REPOSITORY_NEW, false);
|
|
174 |
setColorCompoment(c, entityColors.get(ID_COLOR_REPOSITORY_NEW), false);
|
|
171 | 175 |
break; |
172 | 176 |
default: |
173 |
setColorCompoment(c, COLOR_UNKNOWN_STATE, false);
|
|
177 |
setColorCompoment(c, entityColors.get(ID_COLOR_UNKNOWN_STATE), false);
|
|
174 | 178 |
break; |
175 | 179 |
} |
176 | 180 |
} |
... | ... | |
255 | 259 |
); |
256 | 260 |
return true; |
257 | 261 |
} |
262 |
|
|
263 |
private static void loadColors() { |
|
264 |
entityColors = new HashMap<>(); |
|
265 |
entityColors.put(ID_COLOR_LOCAL_NEW,COLOR_LOCAL_NEW); |
|
266 |
entityColors.put(ID_COLOR_LOCAL_MODIFIED,COLOR_LOCAL_MODIFIED); |
|
267 |
entityColors.put(ID_COLOR_LOCAL_UNMODIFIED,COLOR_LOCAL_UNMODIFIED); |
|
268 |
entityColors.put(ID_COLOR_LOCAL_AND_REPOSITORY_MODIFIED,COLOR_LOCAL_AND_REPOSITORY_MODIFIED); |
|
269 |
entityColors.put(ID_COLOR_REPOSITORY_NEW,COLOR_REPOSITORY_NEW); |
|
270 |
entityColors.put(ID_COLOR_REPOSITORY_MODIFIED,COLOR_REPOSITORY_MODIFIED); |
|
271 |
entityColors.put(ID_COLOR_CONFLICT,COLOR_CONFLICT); |
|
272 |
entityColors.put(ID_COLOR_UNKNOWN_STATE,COLOR_UNKNOWN_STATE); |
|
273 |
InputStream x = VCSGisSwingCommons.class.getClassLoader().getResourceAsStream("/VCSGisEntityColors.properties"); |
|
274 |
Coercion toColor = ToolsLocator.getDataTypesManager().getCoercion(DataTypes.COLOR); |
|
275 |
if(x != null){ |
|
276 |
try { |
|
277 |
Properties prop = new Properties(); |
|
278 |
prop.load(x); |
|
279 |
for (Map.Entry<Object, Object> entry : prop.entrySet()) { |
|
280 |
try { |
|
281 |
entityColors.put((String)entry.getKey(), (Color) toColor.coerce(entry.getValue())); |
|
282 |
} catch (CoercionException ex) { |
|
283 |
LOGGER.trace("Can't parse color "+Objects.toString(entry.getKey()), ex); |
|
284 |
//DO NOTHING |
|
285 |
} |
|
286 |
} |
|
287 |
} catch (IOException ex) { |
|
288 |
LOGGER.trace("Can't load colors.", ex); |
|
289 |
//DO NOTHING |
|
290 |
} |
|
291 |
} |
|
292 |
|
|
293 |
} |
|
258 | 294 |
|
259 | 295 |
} |
Also available in: Unified diff