layer.setResourceID(resourceID);
// process the style content extension point to initially populate
// the style blackboard with style info
// TODO: the style objects need access to preference system
final Layer theLayer = layer;
ICatalog localCatalog = local;
ID layerResourceID = layer.getResourceID();
IProgressMonitor monitor = ProgressManager.instance().get();
List<IResolve> resolves = localCatalog.find(layerResourceID, monitor);
if (resolves.isEmpty()) {
// Identifier lookup is being inconsistent; this often happens when code trips up over
// converting URLs to and from Files
throw new IOException("Could not find " + layerResourceID + " in local catalog");
}
EList resources = new EDataTypeUniqueEList(IGeoResource.class, this,
ProjectPackage.LAYER__GEO_RESOURCES);
LayerResource preferredResource = null;
for (IResolve resolve : resolves) {
if (resolve instanceof IGeoResource) {
LayerResource layerResource = new LayerResource((LayerImpl) layer,
(IGeoResource) resolve);
if (resolve.getID().equals(layerResourceID)) {
resources.add(0, layerResource);
} else {
resources.add(layerResource);
}
if (resolve == resource) {
preferredResource = layerResource;
}
}
}
// This is the total list of resources capable of providing information
((LayerImpl) layer).geoResources = resources;
// This is the "best" match; usually the one the user supplied
layer.setGeoResource(preferredResource);
// determine the default colour
ColourScheme colourScheme = getColorScheme();
Color colour = colourScheme.addItem(theLayer.getID().toString());
theLayer.setDefaultColor(colour);
runLayerCreatedInterceptor(layer);
return layer;
}