Revision 11342 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/saveraster/ui/listener/WriterPropertiesListener.java

View differences:

WriterPropertiesListener.java
18 18
 */
19 19
package org.gvsig.rastertools.saveraster.ui.listener;
20 20

  
21
import java.util.ArrayList;
22

  
23
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
21 24
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
22 25
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
26
import org.gvsig.gui.beans.propertiespanel.PropertiesPanel;
27
import org.gvsig.gui.beans.propertiespanel.PropertiesPanel.PropertyStruct;
23 28
import org.gvsig.raster.dataset.WriterParams;
29
import org.gvsig.raster.dataset.WriterParams.Param;
24 30
import org.gvsig.rastertools.saveraster.ui.properties.WriterPropertiesDialog;
25 31

  
32
import com.iver.andami.PluginServices;
33

  
26 34
/**
27 35
 * Listener para el dialogo de propiedades de los escritores.
28 36
 * 
......
34 42

  
35 43
	private WriterPropertiesDialog dialog = null;
36 44
	private WriterParams params = null;
45
	private PropertiesPanel panel = null;
37 46
	
38 47
	/**
39 48
	 * Constructor
......
42 51
	public WriterPropertiesListener(WriterPropertiesDialog dialog, WriterParams params) {
43 52
		this.dialog = dialog;
44 53
		this.params = params;
54
		this.panel = dialog.getPropertiesPanel();
55
		loadPropertiesFromWriterParams(panel, params);
45 56
	}
46 57
	/*
47 58
	 * (non-Javadoc)
48 59
	 * @see org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener#actionButtonPressed(org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent)
49 60
	 */
50 61
	public void actionButtonPressed(ButtonsPanelEvent e) {
62
		switch (e.getButton()) {
63
		case ButtonsPanel.BUTTON_APPLY:
64
			loadWriterParamsFromPropertiesPanel();
65
			break;
66
		case ButtonsPanel.BUTTON_ACCEPT:
67
			loadWriterParamsFromPropertiesPanel();
68
		case ButtonsPanel.BUTTON_CANCEL:
69
			PluginServices.getMDIManager().closeWindow(dialog);
70
			break;
71
		}
72
		
51 73
	}
74
	
75
	/**
76
	 * Carga los par?metros del escritor WriterParams con los valores obtenidos de la
77
	 * ventana de propiedades.
78
	 */
79
	private void loadWriterParamsFromPropertiesPanel() {
80
		ArrayList values = panel.getValues();
81
		for (int iParam = 0; iParam < params.getNumParams(); iParam++) {
82
			Param p = (Param)params.getParam(iParam);
83
			for (int iValue = 0; iValue < values.size(); iValue++) {
84
				PropertyStruct prop = ((PropertyStruct)values.get(iValue));
85
				if(p.id.compareTo(prop.key) == 0) {
86
					switch(p.type) {
87
					case WriterParams.CHECK:
88
						p.defaultValue = String.valueOf(((Boolean)prop.newValue).booleanValue());
89
						break;
90
					case WriterParams.CHOICE:
91
						p.defaultValue = p.list[((Integer)prop.newValue).intValue()];
92
					break;
93
					case WriterParams.SLIDER: 
94
						p.defaultValue = String.valueOf(((Integer)prop.newValue).intValue());	
95
					}
96
					break;
97
				}
98
			}
99
		}
100
	}
101
	
102
	 /**
103
     * Selecciona los controles del panel de propiedades a partir de los par?mtros
104
     * obtenidos del driver. Este m?todo realiza una transformaci?n entre WriterParams
105
     * obtenido del driver de escritura y los par?metros del panel de propiedades. 
106
     * 
107
     * @param panel Panel de propiedades
108
     * @param params Par?metros del driver
109
     */
110
    private void loadPropertiesFromWriterParams(PropertiesPanel panel, WriterParams params) {
111
    	for (int i = 0; i < params.getNumParams(); i++) {
112
			Param p = params.getParam(i);
113
			String name = p.id;
114
			String key = p.id;
115
			Object[] types = null;
116
			int selectedValue = 0;
117
			
118
			if(p.type == WriterParams.CHOICE) {
119
				ArrayList list = new ArrayList();
120
				for (int j = 0; j < p.list.length; j++) {
121
					list.add(p.list[j]);
122
					if(p.defaultValue.compareTo(p.list[j]) == 0)
123
						selectedValue = j;
124
				}
125
				types = new Object[]{new Integer(PropertiesPanel.TYPE_COMBO), list};
126
			}
127
			
128
			if(p.type == WriterParams.SLIDER) 
129
				types = new Object[]{new Integer(PropertiesPanel.TYPE_SLIDER), new Integer(p.list[1]), new Integer(p.list[0])};
130
			switch(p.type) {
131
			case WriterParams.CHECK:panel.addValue(name, key, new Boolean(p.defaultValue), types);break;
132
			case WriterParams.CHOICE:panel.addValue(name, key, new Integer(selectedValue), types);break;
133
			case WriterParams.SLIDER:panel.addValue(name, key, new Integer(p.defaultValue), types);break;
134
			}
135
		}
136
    }
52 137

  
53 138
}

Also available in: Unified diff