Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / gui / preferencespage / LayerOrderPage.java @ 43983

History | View | Annotate | Download (6.07 KB)

1
package org.gvsig.app.gui.preferencespage;
2

    
3
import java.awt.Color;
4
import java.awt.Component;
5
import java.awt.Dimension;
6
import java.awt.Font;
7
import java.awt.GridBagConstraints;
8
import java.awt.GridBagLayout;
9
import java.awt.GridLayout;
10
import java.awt.Insets;
11
import java.awt.event.ActionEvent;
12
import java.awt.event.ActionListener;
13
import java.util.Iterator;
14
import java.util.List;
15

    
16
import javax.swing.ImageIcon;
17
import javax.swing.JComboBox;
18
import javax.swing.JLabel;
19
import javax.swing.JPanel;
20
import javax.swing.JTextArea;
21

    
22
import org.gvsig.andami.IconThemeHelper;
23
import org.gvsig.andami.PluginsLocator;
24
import org.gvsig.andami.PluginsManager;
25
import org.gvsig.andami.preferences.AbstractPreferencePage;
26
import org.gvsig.andami.preferences.StoreException;
27
import org.gvsig.app.extension.AddLayer;
28
import org.gvsig.fmap.mapcontext.MapContextLocator;
29
import org.gvsig.fmap.mapcontext.layers.order.LayerOrderManager;
30
import org.gvsig.i18n.Messages;
31
import org.gvsig.tools.dynobject.DynObject;
32
import org.slf4j.Logger;
33
import org.slf4j.LoggerFactory;
34

    
35
public class LayerOrderPage extends AbstractPreferencePage implements ActionListener {
36

    
37
        private static Logger logger = LoggerFactory.getLogger(LayerOrderPage.class);
38
        public static String PREFERENCES_ID = "current_layer_order_manager";
39
        
40
        private ImageIcon icon;
41
        private JComboBox orderCombo = null;
42
        private JTextArea descArea = null;
43
        
44
        public LayerOrderPage() {
45
                super();
46
                setParentID(ViewPage.id);
47
                initUI();
48
        }
49
        
50
        
51
        private void initUI() {
52
                
53
                JPanel panel = new JPanel(new GridBagLayout());
54
                
55
                GridBagConstraints gbc = new GridBagConstraints();
56
                
57
                gbc.insets = new Insets(5, 8, 5, 8);
58
                gbc.anchor = GridBagConstraints.NORTHWEST;
59
                
60
                gbc.gridx = 0;
61
                gbc.gridy = 0;
62
                panel.add(new JLabel(Messages.getText("_Order")), gbc);
63
                
64
                gbc.gridx = 1;
65
                panel.add(getOrderCombo(), gbc);
66
                
67
                gbc.gridx = 0;
68
                gbc.gridy = 1;
69
                panel.add(new JLabel(Messages.getText("_Description")), gbc);
70
                
71
                gbc.gridx = 1;
72
                panel.add(getDescArea(getOrderCombo().getFont(), panel.getBackground()), gbc);
73
                
74
                this.addComponent(panel);
75
                
76
        }
77

    
78

    
79
        private JTextArea getDescArea(Font fnt, Color bg) {
80
                
81
                if (descArea == null) {
82
                        
83
                        descArea = new JTextArea();
84
                        descArea.setWrapStyleWord(true);
85
                        descArea.setLineWrap(true);
86
                        descArea.setPreferredSize(new Dimension(250, 80));
87
                        if (fnt != null) {
88
                                descArea.setFont(fnt);
89
                        }
90
                        if (bg != null) {
91
                                descArea.setBackground(bg);
92
                        }
93
                }
94
                return descArea;
95
        }
96

    
97

    
98
        private JComboBox getOrderCombo() {
99
                
100
                if (orderCombo == null) {
101
                        orderCombo = new JComboBox();
102
                        orderCombo.addActionListener(this);
103
                        
104
                }
105
                return orderCombo;
106
        }
107

    
108

    
109
        public String getID() {
110
                return this.getClass().getName();
111
        }
112

    
113
        public String getTitle() {
114
                return Messages.getText("_Layer_order_in_TOC");
115
        }
116

    
117
        public JPanel getPanel() {
118
                return this;
119
        }
120

    
121
        public void initializeValues() {
122
                
123
                this.getOrderCombo().removeAllItems();
124
                loadAvailables();
125
                
126
                DynObject props = this.getPluginProperties();
127
                // current_layer_order_manager
128
                Object val_obj = null;
129
                if (props.hasDynValue(PREFERENCES_ID)) {
130
                        val_obj = props.getDynValue(PREFERENCES_ID);
131
                }
132
                if (val_obj != null && val_obj instanceof LayerOrderManager) {
133
                        LayerOrderManager lom = (LayerOrderManager) val_obj;
134
                        String code = lom.getCode();
135
                        setSelected(code);
136
                        return;
137
                }
138
                // init to default
139
                LayerOrderManager lom = MapContextLocator.getDefaultOrderManager();
140
                if (lom != null) {
141
                        setSelected(lom.getCode());
142
                } else {
143
                        logger.warn("No default order manager set!");
144
                }
145
        }
146

    
147
        private void setSelected(String code) {
148
                
149
                int n = this.getOrderCombo().getItemCount();
150
                LayerOrderManager lom = null;
151
                for (int i=0; i<n; i++) {
152
                        lom = ((LayerOrderComboItem) getOrderCombo().getItemAt(i)).getManager();
153
                        if (lom.getCode().compareTo(code) == 0) {
154
                                this.getOrderCombo().setSelectedIndex(i);
155
                                return;
156
                        }
157
                }
158
                
159
                logger.warn("Did not find code in list of order managers: " + code);
160
                getOrderCombo().setSelectedIndex(0);
161
        }
162

    
163

    
164
        private void loadAvailables() {
165
                
166
                List avs = MapContextLocator.getOrderManagers();
167
                LayerOrderManager lom = null;
168
                Iterator iter = avs.iterator();
169
                while (iter.hasNext()) {
170
                        lom = (LayerOrderManager) iter.next();
171
                        this.getOrderCombo().addItem(new LayerOrderComboItem(lom));
172
                }
173
                
174
        }
175

    
176

    
177
        public void initializeDefaults() {
178
                
179
                this.getOrderCombo().removeAllItems();
180
                loadAvailables();
181
                // init to default
182
                LayerOrderManager lom = MapContextLocator.getDefaultOrderManager();
183
                if (lom != null) {
184
                        setSelected(lom.getCode());
185
                } else {
186
                        logger.warn("No default order manager set!");
187
                }
188
                
189
        }
190

    
191
        public ImageIcon getIcon() {
192
                
193
                if (icon == null) {
194
                        icon = IconThemeHelper.getImageIcon("layer-order-preferences");
195
                }
196
                return icon;
197
        }
198

    
199
        public boolean isValueChanged() {
200
                return true;
201
        }
202

    
203
        public void storeValues() throws StoreException {
204
                
205
                LayerOrderComboItem loci =
206
                                (LayerOrderComboItem) getOrderCombo().getSelectedItem();
207
                
208
                DynObject props = this.getPluginProperties();
209
                props.setDynValue(PREFERENCES_ID, loci.getManager());
210
        }
211

    
212

    
213
        public void setChangesApplied() {
214
        }
215
        
216
        
217
        private DynObject getPluginProperties() {
218
        PluginsManager pluginsManager = PluginsLocator.getManager();
219
        return pluginsManager.getPlugin(AddLayer.class).getPluginProperties();
220
        }
221
        
222
        
223
        public class LayerOrderComboItem {
224
                
225
                private LayerOrderManager lom = null;
226
                
227
                public LayerOrderComboItem(LayerOrderManager _lom) {
228
                        lom = _lom;
229
                }
230
                
231
                public String toString() {
232
                        return lom.getName();
233
                }
234
                
235
                public LayerOrderManager getManager() {
236
                        return lom;
237
                }
238
        }
239

    
240

    
241
        public void actionPerformed(ActionEvent e) {
242
                
243
                Object src = e.getSource();
244
                if (src == getOrderCombo()) {
245
                        LayerOrderComboItem item = null;
246
                        item = (LayerOrderComboItem) getOrderCombo().getSelectedItem(); 
247
                        if (item == null) {
248
                                return;
249
                        }
250
                        String desc = item.getManager().getDescription();
251
                        this.getDescArea(null, null).setText(desc);
252
                }
253
                
254
        }
255

    
256
}