Revision 38514 branches/v2_0_0_prep/libraries/libFMap_controls/src/org/gvsig/fmap/mapcontrol/MapControl.java

View differences:

MapControl.java
105 105
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapperGeometriesVectorial;
106 106
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapperRaster;
107 107
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapperVectorial;
108
import org.gvsig.tools.ToolsLocator;
109
import org.gvsig.tools.dispose.Disposable;
110
import org.gvsig.tools.dispose.impl.AbstractDisposable;
111
import org.gvsig.tools.exception.BaseException;
108 112
import org.gvsig.tools.observer.Observable;
109 113
import org.gvsig.tools.observer.Observer;
110 114
import org.gvsig.tools.task.Cancellable;
......
272 276
 * @author Pablo Piqueras Bartolom? (pablo.piqueras@iver.es)
273 277
 */
274 278
public class MapControl extends JComponent implements ComponentListener,
275
    Observer {
279
    Observer, Disposable {
276 280

  
277 281
    protected static final GeometryManager geomManager =
278 282
        GeometryLocator.getGeometryManager();
279
    protected static final Logger logger =
283
    private static final Logger LOG =
280 284
        LoggerFactory.getLogger(GeometryManager.class);
281 285

  
282 286
    /**
......
585 589
     */
586 590
    private MapControlDrawer mapControlDrawer = null;
587 591
	private Cursor transparentCursor;
592
	
593
	private boolean disposed = false;
588 594

  
589 595
    /**
590 596
     * <p>
......
654 660
                    }
655 661
                });
656 662
        initializeGrid();
663
        
664
        if(ToolsLocator.getDisposableManager() != null) {
665
			ToolsLocator.getDisposableManager().bind(this);
666
		} else {
667
			LOG.warn("Can't retrieve the disposable manager,");
668
		}
657 669
    }
658 670

  
659 671
    /**
......
1099 1111
        try {
1100 1112
            mapControlDrawer.startDrawing(this);
1101 1113
        } catch (InterruptedException e) {
1102
            logger.error("Error locking the MapControlDrawer", e);
1114
            LOG.error("Error locking the MapControlDrawer", e);
1103 1115
        }
1104 1116
        mapControlDrawer.setGraphics(g);
1105 1117
        mapControlDrawer.stopDrawing(this);
......
1429 1441
         */
1430 1442
        private boolean shutdown;
1431 1443

  
1444
		private Thread worker;
1445

  
1432 1446
        /**
1433 1447
         * <p>
1434 1448
         * Sets this <code>Drawer2</code>'s worker to finish or continue with
......
1440 1454
         */
1441 1455
        public void setShutdown(boolean isShutdown) {
1442 1456
            shutdown = isShutdown;
1457
            if (shutdown) {
1458
            	worker.interrupt();
1459
            }
1443 1460
        }
1444 1461

  
1445 1462
        /**
......
1466 1483
            waitingRequest = null;
1467 1484
            waiting = false;
1468 1485
            shutdown = false;
1469
            new Thread(new Worker(), "MapControl Drawer Worker").start();
1486
            worker = new Thread(new Worker(), "MapControl Drawer Worker");
1487
            worker.start();
1470 1488
        }
1471 1489

  
1472 1490
        /**
......
1552 1570
                    // System.out.println("Pintando");
1553 1571
                    if (image != null) {
1554 1572
                        cancelDrawing();
1555
                        p.paint();
1573
                        if (p != null) {
1574
                        	p.paint();
1575
                        }
1556 1576
                    } else {
1557 1577
                        status = DESACTUALIZADO;
1558 1578
                    }
......
1806 1826
                            vp.setEnvelope(geomManager.createEnvelope(x, y, x
1807 1827
                                + width, y + height, SUBTYPES.GEOM2D));
1808 1828
                        } catch (CreateEnvelopeException e1) {
1809
                            logger.error("Error creating the envelope", e);
1829
                            LOG.error("Error creating the envelope", e);
1810 1830
                        }
1811 1831
                    }
1812 1832

  
......
2430 2450

  
2431 2451
            e = Converter.convertEnvelopeToJTS(r);
2432 2452
        } catch (CreateEnvelopeException e1) {
2433
            logger.error("Error creating the envelope", e1);
2453
            LOG.error("Error creating the envelope", e1);
2434 2454
        }
2435 2455

  
2436 2456
        usedSnap = null;
......
2630 2650
            return getViewPort().toMapPoint(adjustedPoint);
2631 2651
        }
2632 2652
    }
2653

  
2654
	public synchronized void dispose() {
2655
		// Check if we have already been disposed, and don't do it again
2656
		if (!disposed && ToolsLocator.getDisposableManager().release(this)) {
2657
			drawer.setShutdown(true);
2658
			disposed = true;
2659
		}
2660
	}
2633 2661
}

Also available in: Unified diff