private static Lock blackboardLock = new ReentrantLock();
public static EditBlackboard getEditBlackboard( IToolContext context, ILayer layer2 ) {
if( layer2==null || !ApplicationGIS.getOpenMaps().contains(layer2.getMap()))
return EMPTY_BLACKBOARD;
ILayer layer = layer2;
EditBlackboard editBlackBoard;
blackboardLock.lock();
try {
EditManager editManager = ((EditManager) context.getEditManager());
if (editManager.getEditLayer() != null && editManager.isEditLayerLocked()) {
layer = context.getEditManager().getEditLayer();
}
editBlackBoard = getEditBlackBoardFromLayer(layer);
if (editBlackBoard == null) {
MathTransform layerToMapTransform;
try {
layerToMapTransform = layer.layerToMapTransform();
} catch (IOException e) {
EditPlugin.log("", e); //$NON-NLS-1$
layerToMapTransform = IDENTITY;
}
editBlackBoard = new EditBlackboard(context.getMapDisplay().getWidth(), context
.getMapDisplay().getHeight(), context.worldToScreenTransform(),
layerToMapTransform);
final EditBlackboard bb = editBlackBoard;
context.getViewportPane().addPaneListener(new IMapDisplayListener(){
public void sizeChanged( MapDisplayEvent event ) {
if (event.getOldSize() != null
&& event.getOldSize().width != event.getSize().width)
bb.setWidth(event.getSize().width);
if (event.getOldSize() != null
&& event.getOldSize().height != event.getSize().height)
bb.setHeight(event.getSize().height);
}
});
layer.getBlackboard().put(EDIT_BLACKBOARD_KEY, editBlackBoard);
}
enableViewportListener((ViewportModel) context.getViewportModel());
//Vitalus: moved to EditToolHandler.enableListeners().