Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] MapGraphic RenderManager disposed ( IllegalStateException )

Found a solution , i hope this can be a bug fix ,  looks like opening IMap  using new editor , it does not update MapGraphicContext viewportmodel , but IMap. Changing  "!context.getViewportModel()"  to "context.getMap().getViewportModel()" solved problem. 


public MapGraphicContextImpl(final IRenderContext context,
Graphics2D destination) {
super();
setGeoResourceInternal(context.getGeoResource());
setLayerInternal((Layer) context.getLayer());
setRenderManagerInternal((RenderManager) context.getRenderManager());
setMapInternal((Map) context.getMap());
vpg = new AWTGraphics(destination, context.getMapDisplay().getDPI());

// add listener if doesn't already exist for layer
IViewportModelListener listener = (IViewportModelListener) context
.getLayer().getBlackboard().get(BLACKBOARD_LAYER_KEY);
if (listener == null) {
listener = new IViewportModelListener() {
public void changed(ViewportModelEvent event) {
// need to invalidate image & refresh the layer


if (renderManagerInternal.isDisposed()) {
setRenderManagerInternal(new RenderManagerDynamic());


}



try
//if (!context.getViewportModel().isBoundsChanging()) {   <-- old code
if (!context.getMap().getViewportModel().isBoundsChanging()) {  // <-- new code
context.getLayer() 
.getBlackboard()
.put(MapGraphicRenderer.BLACKBOARD_IMAGE_KEY,
null); 
context.getLayer().refresh(null);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
};



context.getViewportModel().addViewportModelListener(listener);
context.getLayer().getBlackboard()
.put(BLACKBOARD_LAYER_KEY, listener);
}



On Jul 31, 2012, at 6:06 PM, omur yavuz wrote:

Hello Everyone , 

i ve a problem with MapGraphics. if i close the map and reopen ,  it does not render MapGraphic Layers : throws IllegalStateException because of MapGraphicsContext renderManager is disposed .

!ENTRY net.refractions.udig.project 1 0 2012-07-31 17:51:08.665
!MESSAGE 
!STACK 0
java.lang.IllegalStateException: RenderManager is disposed
at net.refractions.udig.project.internal.render.impl.RenderManagerImpl.checkState(RenderManagerImpl.java:472)
at net.refractions.udig.project.internal.render.impl.RenderManagerImpl.getViewportModelInternal(RenderManagerImpl.java:359)
at net.refractions.udig.project.internal.impl.AbstractContextImpl.getViewportModel(AbstractContextImpl.java:87)
at net.refractions.udig.mapgraphic.internal.MapGraphicContextImpl$1.changed(MapGraphicContextImpl.java:37)
at net.refractions.udig.project.internal.render.impl.ViewportModelImpl.notifyListeners(ViewportModelImpl.java:1378)
at net.refractions.udig.project.internal.render.impl.ViewportModelImpl.fireNotification(ViewportModelImpl.java:873)
at net.refractions.udig.project.internal.render.impl.ViewportModelImpl.setBounds(ViewportModelImpl.java:420)
at net.refractions.udig.project.internal.render.impl.ViewportModelImpl.zoom(ViewportModelImpl.java:749)
at net.refractions.udig.project.internal.command.navigation.ZoomCommand.runImpl(ZoomCommand.java:60)
at net.refractions.udig.project.internal.command.navigation.AbstractNavCommand.run(AbstractNavCommand.java:72)
at net.refractions.udig.project.internal.command.navigation.NavComposite.runCommand(NavComposite.java:100)
at net.refractions.udig.project.internal.command.navigation.NavComposite.execute(NavComposite.java:80)

Back to the top