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)
> at
> net.refractions.udig.project.command.CommandManager$Executor.execute(CommandManager.java:394)
> at
> net.refractions.udig.project.command.CommandManager$Executor.run(CommandManager.java:325)
> at
> net.refractions.udig.project.command.CommandManager$Executor.run(CommandManager.java:311)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
>
>
> This s same for all MapGraphic layers. Any advice to fix this bug? Im
> looking for recreating MapGraphicContext but couldn't find yet
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel