Revision 38514 branches/v2_0_0_prep/libraries/libFMap_controls/src/org/gvsig/fmap/mapcontrol/MapControl.java
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