Revision 852 org.gvsig.proj/branches/refactor2018/org.gvsig.proj/org.gvsig.proj.swing/org.gvsig.proj.swing.impl/src/main/java/org/gvsig/proj/swing/impl/DefaultCoordinateReferenceSystemSwingManager.java

View differences:

DefaultCoordinateReferenceSystemSwingManager.java
23 23
 */
24 24
package org.gvsig.proj.swing.impl;
25 25

  
26
import java.awt.EventQueue;
27
import java.net.URL;
28

  
29
import org.gvsig.proj.CoordinateReferenceSystem;
26 30
import org.gvsig.proj.CoordinateReferenceSystemLocator;
27 31
import org.gvsig.proj.CoordinateReferenceSystemManager;
32
import org.gvsig.proj.CoordinateTransformation;
28 33
import org.gvsig.proj.catalog.CRSCatalogLocator;
29 34
import org.gvsig.proj.catalog.CRSCatalogManager;
30 35
import org.gvsig.proj.swing.CoordinateReferenceSystemSelectorComponent;
31 36
import org.gvsig.proj.swing.CoordinateReferenceSystemSwingManager;
32 37
import org.gvsig.proj.swing.CoordinateTransformationSelectorComponent;
38
import org.gvsig.proj.swing.RecentHistory;
39
import org.gvsig.proj.swing.impl.history.History;
33 40
import org.gvsig.tools.ToolsLocator;
34 41
import org.gvsig.tools.i18n.I18nManager;
35 42
import org.gvsig.tools.swing.api.ToolsSwingLocator;
36 43
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
44
import org.gvsig.tools.swing.icontheme.IconTheme;
45
import org.slf4j.Logger;
46
import org.slf4j.LoggerFactory;
37 47

  
38 48
/**
39 49
 * Default implementation of the {@link CoordinateReferenceSystemSwingManager}.
......
43 53
 */
44 54
public class DefaultCoordinateReferenceSystemSwingManager implements
45 55
    CoordinateReferenceSystemSwingManager {
46

  
47
    private CoordinateReferenceSystemManager manager;
56
	private static Logger logger = LoggerFactory.getLogger(DefaultCoordinateReferenceSystemSwingManager.class);
48 57
    private I18nManager i18nmanager = null;
58
    private RecentHistory<CoordinateReferenceSystem> crsHistory;
59
    private RecentHistory<CoordinateTransformation> transformationHistory;
60
    private RecentHistory<String> crsTextFilterHistory;
61
    private RecentHistory<String> transformationTextFilterHistory;
62
    private volatile IconTheme iconTheme = null;
63
    private volatile boolean registeredIcons = false;
49 64

  
50 65
    public DefaultCoordinateReferenceSystemSwingManager() {
51
        this.manager = CoordinateReferenceSystemLocator.getManager();
66
    	this.iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
67
        //this.manager = CoordinateReferenceSystemLocator.getManager();
52 68
        this.i18nmanager = ToolsLocator.getI18nManager();
69
        crsHistory = new History<CoordinateReferenceSystem>();
70
        transformationHistory = new History<CoordinateTransformation>();
71
        crsTextFilterHistory = new History<String>();
72
        transformationTextFilterHistory = new History<String>();
53 73
    }
54 74

  
55
    public CoordinateReferenceSystemManager getManager() {
56
        return this.manager;
75
    @Override
76
    public CoordinateReferenceSystemManager getCRSManager() {
77
    	return CoordinateReferenceSystemLocator.getManager();
78
        //return this.manager;
57 79
    }
58 80

  
59 81
    public String getTranslation(String key) {
......
65 87
    }
66 88

  
67 89
    public CoordinateReferenceSystemSelectorComponent createCoordinateReferenceSystemSelectionComponent() {
68
        return new DefaultCoordinateReferenceSystemSelectorComponent(this);
90
    	/**
91
    	 * Ensures the icons have been registered. We can't do it at manager initialization because the
92
    	 * IconThemeManager may not be initialized at that point
93
    	 */
94
    	registerIcons();
95
        return new CrsSelectorComponent(this);
69 96
    }
70 97

  
71 98
	@Override
72 99
	public CoordinateTransformationSelectorComponent createCoordinateTransformSelectionComponent() {
73
		// TODO Auto-generated method stub
100
    	/**
101
    	 * Ensures the icons have been registered. We can't do it at manager initialization because the
102
    	 * IconThemeManager may not be initialized at that point
103
    	 */
104
    	registerIcons();
74 105
		return null;
75 106
	}
107
	
108
	/**
109
	 * Ensures the icons have been registered.
110
	 */
111
	protected void registerIcons() {
112
		if (registeredIcons == false) {
113
			final IconTheme theme = getIconTheme();
114
			synchronized (this) {
115
				if (registeredIcons == false) {
116
					doRegisterIcons(theme);
117
					registeredIcons = true;
118
				}
119
				
120
			}
121
		}
122
	}
123
	
124
	protected void doRegisterIcons(IconTheme iconTheme) {
125
		String group = "swingproj";
126
		registerIcon(group, "bullet_add", null, iconTheme);
127
		registerIcon(group, "bullet_remove", null, iconTheme);
128
		registerIcon(group, "bullet_share", null, iconTheme);
129
		registerIcon(group, "crs_add", null, iconTheme);
130
		registerIcon(group, "crs", null, iconTheme);
131
		registerIcon(group, "ct_add", null, iconTheme);
132
		registerIcon(group, "ct", null, iconTheme);
133
		registerIcon(group, "dropdown", null, iconTheme);
134
		registerIcon(group, "favourite_add", null, iconTheme);
135
		registerIcon(group, "favourite", null, iconTheme);
136
		registerIcon(group, "favourite_remove", null, iconTheme);
137
		registerIcon(group, "filter_alpha", null, iconTheme);
138
		registerIcon(group, "filter_spatial", null, iconTheme);
139
		registerIcon(group, "folder_closed", null, iconTheme);
140
		registerIcon(group, "folder_open", null, iconTheme);
141
		registerIcon(group, "recent", null, iconTheme);
142
		registerIcon(group, "recent_remove", null, iconTheme);
143
		registerIcon(group, "search", null, iconTheme);
144
		registerIcon(group, "search_remove", null, iconTheme);
145
		registerIcon(group, "unlock", null, iconTheme);
146
		registerIcon(group, "spinner", ".gif", iconTheme);
147
	}
148
	
149
	protected void registerIcon(String group, String name, String extension, IconTheme iconTheme) {
150
		if (extension==null) {
151
			extension = ".png";
152
		}
153
		String resourceName = "images/" + group + "/" + name + extension;
154
		String provider = this.getClass().getName();
155
		ClassLoader loader = this.getClass().getClassLoader();
156
		URL resource = null;
157
		try {
158
			resource = loader.getResource(resourceName);
159
			iconTheme.registerDefault(provider, group, name, null, resource);
160
		} catch( Throwable e) {
161
			logger.info("Can't register icon '" + name + "'.",e);
162
		}
163
	}
76 164

  
77 165
	@Override
78 166
	public CRSCatalogManager getCatalogManager() {
79 167
		return CRSCatalogLocator.getManager();
80 168
	}
169

  
170
	@Override
171
	public IconTheme getIconTheme() {
172
		return iconTheme;
173
	}
174

  
175
	@Override
176
	public RecentHistory<CoordinateReferenceSystem> getCoordinateReferenceSystemHistory() {
177
		return crsHistory;
178
	}
179

  
180
	@Override
181
	public RecentHistory<CoordinateTransformation> getTransformationHistory() {
182
		return transformationHistory;
183
	}
184

  
185
	@Override
186
	public RecentHistory<String> getCoordinateReferenceSystemTextFilterHistory() {
187
		return crsTextFilterHistory;
188
	}
189

  
190
	@Override
191
	public RecentHistory<String> getTransformationTextFilterHistory() {
192
		return transformationTextFilterHistory;
193
	}
81 194
}

Also available in: Unified diff