Revision 4161 branches/v051/applications/appgvSIG/src/com/iver/cit/gvsig/gui/Panels/PropertiesRasterDialog.java

View differences:

PropertiesRasterDialog.java
57 57
import javax.swing.JOptionPane;
58 58
import javax.swing.JPanel;
59 59
import javax.swing.filechooser.FileFilter;
60
import javax.swing.table.JTableHeader;
61 60

  
62 61
import org.cresques.cts.IProjection;
63 62
import org.cresques.io.GeoRasterFile;
63
import org.cresques.io.raster.RasterFilter;
64 64
import org.cresques.io.raster.RasterFilterStackManager;
65 65
import org.cresques.px.Extent;
66 66
import org.cresques.ui.raster.BandSetupPanel;
......
172 172
		 * @param status Estado
173 173
		 */
174 174
		public void restoreStatus(PropertiesRasterDialog props){
175
			//Devolvemos la pila de filtros al estado inicial
176
			//if(stackManager != null)
177
			//	stackManager.deleteTempFilters();
178
			
179 175
			//Devolvemos el alpha al estado inicial
180 176
			int opac = Integer.parseInt(status.inicAlpha);
181 177
			opac = (int)((opac*255)/100);
......
193 189
				rasterStatus.bandG = status.bandG;
194 190
				rasterStatus.bandB = status.bandB;
195 191
			}
196
			
197
			BandSetupPanel bandSetup = ((FilterRasterDialogPanel)props.getContentPane()).getBandSetup();
198
			
192
						
199 193
			//Los que han sido a?adidos los quitamos
200 194
			for(int i=0;i<filesAdd.size();i++)
201 195
				fLayer.delFile((String)this.filesAdd.get(i));
......
206 200
				
207 201
			//Restauramos los filtros
208 202
			if(filters!=null)
209
				stackManager.createStackFromStrings(filters);
203
				stackManager.createStackFromStrings(filters, ((FLyrRaster)fLayer).getSource().getFiles());
210 204
						
211 205
			fLayer.getFMap().invalidate();
212
			//this.show();
213 206
		}
214 207
		
215 208
		public void show(){
......
311 304
		this.getAcceptButton().setText(PluginServices.getText(this,"Aceptar"));
312 305
		this.getApplyButton().setText(PluginServices.getText(this,"Aplicar"));
313 306
		this.getCancelButton().setText(PluginServices.getText(this,"Cancelar"));
307
		
308
		this.getSharpeningPanel().getCbActiveSharpening().setText(PluginServices.getText(this,"onSharpening"));
309
		this.getSharpeningPanel().getPSharpNorth().setBorder(javax.swing.BorderFactory.createTitledBorder(null, PluginServices.getText(this,"selectBandaRefinado"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
314 310
	}
315 311
	
316 312
	/**
......
524 520
	 * @return true si estaba seleccionado el panel de bandas y se ha procesado la
525 521
	 * acci?n y false si no lo estaba.
526 522
	 */
527
	public boolean processBandPanel(){
523
	public void processBandPanel(){
528 524
		//if(this.getTab().getSelectedComponent() == this.getBandSetup()){		
529 525
		fLayer.getSource().setBand(GeoRasterFile.RED_BAND,
530 526
					getAssignedBand(GeoRasterFile.RED_BAND));
......
549 545
			stackManager.addRemoveBands(sb.toString());
550 546
		else
551 547
			stackManager.removeFilter(stackManager.getTypeFilter("removebands"));
548
		
549
		//Al reasignar las bandas tenemos que tenerlo en cuenta en el sharpening
550
		RasterFilter sharp = stackManager.getFilter("sharpening");
551
		if(sharp != null){
552
			int[] order = {getAssignedBand(GeoRasterFile.RED_BAND),getAssignedBand(GeoRasterFile.GREEN_BAND),getAssignedBand(GeoRasterFile.BLUE_BAND)};
553
			sharp.removeParam("order");
554
			sharp.addParam("order", order);
555
		}
552 556
		fLayer.getFMap().invalidate();
553
		return true;
554 557
	}
555 558
	
556 559
	/**
......
559 562
	 * @return true si estaba seleccionado el panel de transparencias y se ha procesado la
560 563
	 * acci?n y false si no lo estaba.
561 564
	 */
562
	public boolean processTransparencyPanel(){
565
	public void processTransparencyPanel(){
563 566
		//OPACIDAD
564 567
		String sOpac = this.getTransparencyPanel().getOpacityText().getText();
565 568
		if(!sOpac.equals("") && this.getTransparencyPanel().getOpacityCheck().isSelected()){
......
587 590
		}else{
588 591
			fLayer.getSource().getFilterStack().removeFilter(stackManager.getTypeFilter("transparency"));
589 592
		}
590
			
591
		return true;
593

  
592 594
	}
593 595
	
594 596
	/**
......
597 599
	 * @return true si estaba seleccionado el panel de realce y se ha procesado la
598 600
	 * acci?n y false si no lo estaba.
599 601
	 */
600
	public boolean processEnhancedPanel(){
602
	public void processEnhancedPanel(){
601 603
		//Filtro lineal seleccionado
602 604
		if(	this.getEnhancedPanel().getLinealDirectoRadioButton().isSelected()){
603 605
			if(	this.getEnhancedPanel().getRemoveCheck().isSelected() &&
......
627 629
			stackManager.removeFilter(stackManager.getTypeFilter("enhanced"));
628 630
		}
629 631
		fLayer.getFMap().invalidate();
632
	}
633
	
634
	/**
635
	 * Pulsar aceptar hace que se procesen los valores introducidos en el panel de 
636
	 * sharpening.
637
	 * @return true 
638
	 */
639
	public void processSharpeningPanel(){
640
		if(this.getSharpeningPanel().getCbActiveSharpening().isSelected()){
641
			String pancr = null;
630 642
			
631
		return true;
643
			//Obtenemos el nombre de la banda seleccionada
644
			for(int i=0;i<(getSharpeningPanel().getRGBTable()).getRowCount();i++){
645
				if(((Boolean) (getSharpeningPanel().getRGBTable()).getValueAt(i, 0)).booleanValue())
646
					pancr = ((String) (getSharpeningPanel().getRGBTable()).getValueAt(i, 1));
647
			}
648
		
649
			//Buscamos el GeoRasterFile que corresponde a la capa y a?adimos el filtro con el
650
			if(pancr!=null){
651
				pancr = pancr.substring(pancr.lastIndexOf("] ") + 2, pancr.length());
652
				for(int i=0; i<fLayer.getSource().getFiles().length;i++){
653
				 if(fLayer.getSource().getFiles()[i].getName().endsWith(File.separator+pancr)){
654
				 	int[] order = {getAssignedBand(GeoRasterFile.RED_BAND),getAssignedBand(GeoRasterFile.GREEN_BAND),getAssignedBand(GeoRasterFile.BLUE_BAND)};
655
				 	
656
				 	int opac = Integer.parseInt(this.getTransparencyPanel().getOpacityText().getText());
657
				 	opac = (int)((opac*255)/100);
658
				 	
659
				 	String method = "brovey";
660
				 	if(getSharpeningPanel().getRbHSL().isSelected())
661
				 		method = "hsl";
662
				 	
663
				 	double coef = 0D;
664
				 	if(getSharpeningPanel().getRbHSL().isSelected())
665
				 		coef = Double.parseDouble(pSharp.getJTextField().getText());
666
				 					 	
667
				 	int coefBrovey = 0;
668
				 	if(getSharpeningPanel().getRbBrovey().isSelected())
669
				 		coefBrovey = Integer.parseInt(pSharp.getJTextField1().getText());
670
				 	
671
				 	stackManager.addSharpeningFilter(fLayer.getSource().getFiles(), i, order, opac, method, coef, coefBrovey);
672
				 }
673
				}
674
				
675
			}
676
		}else{
677
			stackManager.removeFilter(stackManager.getTypeFilter("sharpening"));
678
		}
679
		fLayer.getFMap().invalidate();
632 680
	}
633 681
	
634 682
	/**
......
639 687
	private void acceptButtonActionPerformed(ActionEvent e) {
640 688
		this.processBandPanel();
641 689
		this.processTransparencyPanel();	
642
		this.processEnhancedPanel();	
690
		this.processEnhancedPanel();
691
		this.processSharpeningPanel();
643 692
	}
644 693
	
645 694
	/**
......
750 799
            		v.add(fLayer.getSource().getFiles()[i]);
751 800
            }
752 801
            
753
            GeoRasterFile[] grf = new GeoRasterFile[v.size()];
802
            grf = new GeoRasterFile[v.size()];
754 803
            for(int i=0;i<grf.length;i++){
755 804
            	grf[i] = (GeoRasterFile)v.get(i);
756 805
            }
757
            bandSetup.addFiles(grf);
806
            this.addFiles(grf);
758 807
		}
759 808
	}
760 809
	
761 810
	/**
811
	 * Asigna la lista de GeoRasterFile 
812
	 * @return
813
	 */
814
	public void setGeoRasterFile(GeoRasterFile[] grf){
815
		this.grf = grf;
816
	}
817
	
818
	/**
762 819
	 * Elimina una banda del raster. Si queda solo un fichero o no se ha 
763 820
	 * seleccionado ninguna banda no hace nada.
764 821
	 * @param e
......
774 831
			fLayer.delFile(pathName);
775 832
			String file = pathName.substring(pathName.lastIndexOf("/")+1);
776 833
			file = file.substring(file.lastIndexOf("\\")+1);
777
			bandSetup.removeFile(file);
834
			this.removeFile(file);
778 835
			
779 836
			//Mantiene la lista de ficheros eliminados por si se cancela
780 837
			status.removeFile(pathName);

Also available in: Unified diff