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

Reply via email to