Revision 3102 trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/gui/Panels/ZoomControlPanel.java

View differences:

ZoomControlPanel.java
100 100
	 */
101 101
	public void loadLayer() throws InstantiationException{
102 102
		//Cargamos la capa
103
		View theView = (View) PluginServices.getMDIManager().getActiveView();
103
		View  theView = null;
104
		try{
105
			theView = (View)PluginServices.getMDIManager().getActiveView();
106
		}catch(ClassCastException exc){
107
			return;
108
		}
104 109
		for(int i=0;i<theView.getMapControl().getMapContext().getLayers().getLayersCount();i++){
105 110
			FLayer lyr = theView.getMapControl().getMapContext().getLayers().getLayer(i);
106 111
			if(	lyr instanceof FLyrGeoRaster && 
107 112
				lyr.getName().startsWith("*") &&
108 113
				lyr.isActive()){
109 114
				lyrGeoRaster = (FLyrGeoRaster)lyr;
110
				lyrPoints = lyrGeoRaster.getFLyrPoints();
115
				try{
116
					lyrPoints = lyrGeoRaster.getFLyrPoints();
117
				}catch(ClassCastException exc){
118
					throw new InstantiationException("No se ha podido instanciar la capa de puntos o georreferenciada");
119
				}
111 120
			}
112 121
		}
122
		
113 123
		if(lyrGeoRaster == null || lyrPoints == null)
114 124
			throw new InstantiationException("No se ha podido instanciar la capa de puntos o georreferenciada");
115 125
		
......
343 353
	    private ViewPort viewPort = null;
344 354
	    private ViewPort newViewPort = null;
345 355
	    private Point2D centerPoint = null;
346
	    private int zoom = 20;
356
	    private int initZoom = 20;
347 357
	    private boolean dragged = false;
348 358
	    private Image dobleBuffer = null;
349 359
	    private BufferedImage imgTmp = null;
350 360
	    private Graphics dbGraphics = null;
351 361
	    private boolean cleanCanvas = false;
352
	    
362
		    
353 363
	    /**
354 364
	     * Puntos inicial y final para el desplazamiento del punto de control
355 365
	     */
......
402 412
			r.width = newViewPort.getExtent().getWidth() * factor;
403 413
			r.height = newViewPort.getExtent().getHeight() * factor;
404 414
			newViewPort.setExtent(r);
405
	    }
415
			newViewPort.setScale();
416
		}
417
	
406 418
	    
407 419
	    /**
408 420
	     *Calculamos el viewPort para el zoom de la minimagen
......
411 423
	    	if(centerPoint != null){
412 424
	    		newViewPort = this.viewPort.cloneViewPort();
413 425
	        	//Hallamos la relaci?n entre el pixel y las WC a partir de la imagen de la capa
414
				double relacionPixelWcWidth =  ((viewPort.getExtent().getMaxX() - viewPort.getExtent().getMinX()) / zoom)/ancho;
415
				double relacionPixelWcHeight = ((viewPort.getExtent().getMaxY() - viewPort.getExtent().getMinY()) / zoom)/alto;
426
				double relacionPixelWcWidth =  ((viewPort.getExtent().getMaxX() - viewPort.getExtent().getMinX()) / initZoom)/ancho;
427
				double relacionPixelWcHeight = ((viewPort.getExtent().getMaxY() - viewPort.getExtent().getMinY()) / initZoom)/alto;
416 428
				
417 429
				double wcOriginX = centerPoint.getX() - ((viewPort.getImageWidth()*relacionPixelWcWidth)/2);
418 430
				double wcOriginY = centerPoint.getY() - ((viewPort.getImageHeight()*relacionPixelWcHeight)/2);
......
457 469
			        	}				        	
458 470
			        	//Si no tenemos las capas las cargamos
459 471
			        	if(flayers == null){
460
			        	 	View theView = (View) PluginServices.getMDIManager().getActiveView();
472
			        		View  theView = null;
473
	            			try{
474
	            				theView = (View)PluginServices.getMDIManager().getActiveView();
475
	            			}catch(ClassCastException exc){
476
	            				return;
477
	            			}
461 478
			        	 	flayers = theView.getMapControl().getMapContext().getLayers();
462 479
			        	}
463 480
			        	//dibujamos
......
521 538
	    public void setCenterPoint(Point2D pto){
522 539
	    	this.centerPoint = pto;
523 540
	    }
524
	    	    
541
	    
542
	    /**
543
	     * Desplaza el extent al nuevo centro 
544
	     * @param pto
545
	     */
546
	    public void shiftExtent(Point2D pto){
547
	    	this.setCenterPoint(pto);
548
	    	this.calcZoom(1);
549
	    }
550
	    
525 551
		/* (non-Javadoc)
526 552
		 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
527 553
		 */
......
565 591
		 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
566 592
		 */
567 593
		public void mouseReleased(MouseEvent ev) {
568
			View theView = (View) PluginServices.getMDIManager().getActiveView();
594
			View  theView = null;
595
			try{
596
				theView = (View) PluginServices.getMDIManager().getActiveView();
597
			}catch(ClassCastException exc){
598
				return;
599
			}
569 600
			ViewPort viewPort = theView.getMapControl().getMapContext().getViewPort();
570 601
			ptoFin = ev.getPoint();
571 602
			this.dragged = false;
572 603

  
573 604
			double destX = newViewPort.getExtent().getMinX() + ((ptoFin.getX() * (centerPoint.getX() - newViewPort.getExtent().getMinX())) / ptoIni.getX()); 
574 605
			double destY = newViewPort.getExtent().getMinY() + (((this.getHeight() - ptoFin.getY()) * (centerPoint.getY() - newViewPort.getExtent().getMinY())) / (this.getHeight() - ptoIni.getY()));
575
						
606
					
607
			int nPoint = Integer.valueOf(zoomControl.getDialog().getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue();
608
			
576 609
			if(flayers == null)
577 610
        	 	flayers = theView.getMapControl().getMapContext().getLayers();
578 611
        	 for(int i=0;i<flayers.getLayersCount();i++){
......
588 621
	     							PluginServices.getText(this, "fuera_de_extent"));
589 622
	     					return;
590 623
	     				 }
591
	        			 zoomControl.getLyrGeoRaster().updateData(	Integer.valueOf(zoomControl.getDialog().getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue(),
624
	        			 zoomControl.getLyrGeoRaster().updateData(	nPoint,
592 625
	        			 											pixelImg, 
593 626
																	null, 
594 627
																	zoomControl.getDialog(),
595
																	theView, 
628
																	null, 
596 629
																	lp);
597 630
	        			 
631
	        			 //Actualizamos la otra miniimagen
632
	        			 //zoomControl.getDialog().getConectorPanel().getAdjustGeorefPanel().getZoomRight().getCanvas().calcStoreZoom();
633
	        			 //setCenterPoint(zoomControl.getLyrGeoRaster().img2World(pixelImg));
634
	        			 shiftExtent(zoomControl.getLyrGeoRaster().img2World(pixelImg));
635
	        			 zoomControl.getDialog().getConectorPanel().getAdjustGeorefPanel().getZoomLeft().draw();
636
	        			 zoomControl.getDialog().getConectorPanel().getAdjustGeorefPanel().getZoomRight().draw();
598 637
        			 }else{ //Control de actualizaci?n de coordenadas del mundo
599 638
        			 	 Point2D mapPoint = new Point2D.Double();
600 639
        			 	 mapPoint.setLocation(destX, destY);
601
        			 	 zoomControl.getLyrGeoRaster().updateData(	Integer.valueOf(zoomControl.getDialog().getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue(),
640
        			 	 zoomControl.getLyrGeoRaster().updateData(	nPoint,
602 641
																	null, 
603 642
																	mapPoint, 
604 643
																	zoomControl.getDialog(),
605
																	theView, 
644
																	null, 
606 645
																	lp);
646
        			 	 
647
        			 	 //Actualizamos la otra miniimagen
648
        			 	//zoomControl.getDialog().getConectorPanel().getAdjustGeorefPanel().getZoomLeft().getCanvas().calcStoreZoom();
649
        			 	//setCenterPoint(mapPoint);
650
        			 	shiftExtent(mapPoint);
651
        			 	zoomControl.getDialog().getConectorPanel().getAdjustGeorefPanel().getZoomRight().draw();
652
        			 	zoomControl.getDialog().getConectorPanel().getAdjustGeorefPanel().getZoomLeft().draw();
607 653
        			 }
654
        		        			        
608 655
        		 }
609 656
        	 }
610 657
        	 
611
			
658
        	theView.getMapControl().getMapContext().invalidate();
612 659
			repaint();
613 660
		}
614 661
		

Also available in: Unified diff