Statistics
| Revision:

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

History | View | Annotate | Download (4.82 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.rastertools.saveraster.ui.listener;
20

    
21
import java.util.ArrayList;
22

    
23
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
24
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
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;
28
import org.gvsig.raster.dataset.WriterParams;
29
import org.gvsig.raster.dataset.WriterParams.Param;
30
import org.gvsig.rastertools.saveraster.ui.properties.WriterPropertiesDialog;
31

    
32
import com.iver.andami.PluginServices;
33

    
34
/**
35
 * Listener para el dialogo de propiedades de los escritores.
36
 * 
37
 * @version 24/04/2007
38
 * @author Nacho Brodin (nachobrodin@gmail.com)
39
 *
40
 */
41
public class WriterPropertiesListener implements ButtonsPanelListener {
42

    
43
        private WriterPropertiesDialog dialog = null;
44
        private WriterParams params = null;
45
        private PropertiesPanel panel = null;
46
        
47
        /**
48
         * Constructor
49
         * @param dialog
50
         */
51
        public WriterPropertiesListener(WriterPropertiesDialog dialog, WriterParams params) {
52
                this.dialog = dialog;
53
                this.params = params;
54
                this.panel = dialog.getPropertiesPanel();
55
                loadPropertiesFromWriterParams(panel, params);
56
        }
57
        /*
58
         * (non-Javadoc)
59
         * @see org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener#actionButtonPressed(org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent)
60
         */
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
                
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
    }
137

    
138
}