package com.vividsolutions.jump.workbench.ui.plugin.imagery;
import java.awt.Color;
import java.util.Collection;
import com.vividsolutions.jump.I18N;
import com.vividsolutions.jump.feature.FeatureDataset;
import com.vividsolutions.jump.workbench.imagery.ImageryLayerDataset;
import com.vividsolutions.jump.workbench.imagery.ReferencedImageStyle;
import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.model.LayerManager;
import com.vividsolutions.jump.workbench.model.StandardCategoryNames;
import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.ui.MenuNames;
import org.openjump.core.ui.plugin.AbstractUiPlugIn;
public class AddImageLayerPlugIn extends AbstractUiPlugIn {
private static int nameCounter = 1;
public void initialize(final PlugInContext context) throws Exception {
super.initialize(context);
context.getFeatureInstaller()
.addMainMenuItem(new String[]{MenuNames.FILE},this,4);
}
public String getName(){
return I18N.get("ui.plugin.imagery.AddImageLayerPlugIn.Add-Image-Layer");
}
public boolean execute(PlugInContext context) throws Exception {
LayerManager lm = context.getLayerManager();
ImageFeatureCreator ifc = new ImageFeatureCreator();
lm.setFiringEvents(false);
Layer layer = createLayer(lm);
lm.setFiringEvents(true);
Collection features = ifc.getImages(context, layer);
if ( features != null ) {
lm.addLayer(chooseCategory(context), layer);
layer.getFeatureCollectionWrapper().addAll(features);
ifc.setLayerSelectability(layer);
}
return false;
}
private String chooseCategory(PlugInContext context) {
return context.getLayerNamePanel() == null ? StandardCategoryNames.WORKING
: context.getLayerNamePanel().getSelectedCategories().isEmpty() ? StandardCategoryNames.WORKING
: context.getLayerNamePanel().getSelectedCategories().iterator().next().toString();
}
private Layer createLayer(LayerManager lm) {
String newLayerName = I18N.get("ui.plugin.imagery.AddImageLayerPlugIn.Image")+"_"+nameCounter++;
Layer layer = new Layer(newLayerName,
Color.black,
new FeatureDataset(ImageryLayerDataset.getSchema()),
lm);
layer.setEditable(true);
// Set fill just for the icon beside the layer name [Jon Aquino
// 2005-04-11]
layer.getBasicStyle().setRenderingFill(false);
layer.getBasicStyle().setEnabled(false);
layer.addStyle(new ReferencedImageStyle());
return layer;
}
}