Statistics
| Revision:

gvsig-projects-pool / org.gvsig.topology / trunk / org.gvsig.topology / org.gvsig.topology.swing / org.gvsig.topology.swing.impl / src / main / java / org / gvsig / topology / swing / impl / DefaultJTopologyPlanProperties.java @ 727

History | View | Annotate | Download (8.88 KB)

1
package org.gvsig.topology.swing.impl;
2

    
3
import java.awt.Dimension;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.net.URL;
7
import java.util.List;
8
import javax.swing.DefaultListModel;
9
import javax.swing.ImageIcon;
10
import javax.swing.JComponent;
11
import javax.swing.event.ListSelectionEvent;
12
import javax.swing.event.ListSelectionListener;
13
import org.apache.commons.io.FilenameUtils;
14
import org.gvsig.tools.ToolsLocator;
15
import org.gvsig.tools.i18n.I18nManager;
16
import org.gvsig.tools.swing.api.ListElement;
17
import org.gvsig.tools.swing.api.ToolsSwingLocator;
18
import org.gvsig.tools.swing.api.ToolsSwingManager;
19
import org.gvsig.tools.swing.api.windowmanager.Dialog;
20
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
21
import org.gvsig.tools.swing.icontheme.IconTheme;
22
import org.gvsig.topology.lib.api.TopologyDataSet;
23
import org.gvsig.topology.lib.api.TopologyLocator;
24
import org.gvsig.topology.lib.api.TopologyPlan;
25
import org.gvsig.topology.lib.api.TopologyRule;
26
import org.gvsig.topology.swing.api.JTopologyPlanProperties;
27

    
28
/**
29
 *
30
 * @author jjdelcerro
31
 */
32
public class DefaultJTopologyPlanProperties
33
        extends DefaultJTopologyPlanPropertiesView
34
        implements JTopologyPlanProperties {
35

    
36
    private TopologyPlan plan;
37

    
38
    public DefaultJTopologyPlanProperties() {
39
        this.plan = TopologyLocator.getTopologyManager().createTopologyPlan();
40

    
41
        this.initComponents();
42
    }
43

    
44
    private void initComponents() {
45
        this.translate();
46
        
47
        this.btnAddDataSet.addActionListener(new ActionListener() {
48
            @Override
49
            public void actionPerformed(ActionEvent e) {
50
                performAddDataSet();
51
            }
52
        });
53
        this.btnRemoveDataSet.addActionListener(new ActionListener() {
54
            @Override
55
            public void actionPerformed(ActionEvent e) {
56
                performRemoveDataSet();
57
            }
58
        });
59
        this.btnAddRule.addActionListener(new ActionListener() {
60
            @Override
61
            public void actionPerformed(ActionEvent e) {
62
                performAddRule();
63
            }
64
        });
65
        this.btnRemoveRule.addActionListener(new ActionListener() {
66
            @Override
67
            public void actionPerformed(ActionEvent e) {
68
                performRemoveRule();
69
            }
70
        });
71
        this.lstDataSets.setModel(new DefaultListModel());
72
        this.lstDataSets.addListSelectionListener(new ListSelectionListener() {
73
            @Override
74
            public void valueChanged(ListSelectionEvent e) {
75
                performDataSetSelected();
76
            }
77
        });
78
        this.lstRules.setModel(new DefaultListModel());
79
        this.lstRules.addListSelectionListener(new ListSelectionListener() {
80
            @Override
81
            public void valueChanged(ListSelectionEvent e) {
82
                performRuleSelected();
83
            }
84
        });
85
        this.setPreferredSize(new Dimension(450, 300));
86
    }
87

    
88
    @Override
89
    public ImageIcon loadImage(String imageName) {
90
        String name = FilenameUtils.getBaseName(imageName);
91
        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getDefault();
92
        if (theme.exists(name)) {
93
            return theme.get(name);
94
        }
95
        URL url = this.getClass().getResource("/"+imageName);
96
        if (url == null) {
97
            return null;
98
        }
99
        return new ImageIcon(url);
100
    }
101
    
102
    private void translate() {
103
        ToolsSwingManager tsm = ToolsSwingLocator.getToolsSwingManager();
104
        tsm.translate(this.btnAddRule);
105
        tsm.translate(this.btnRemoveRule);
106
        tsm.translate(this.btnAddDataSet);
107
        tsm.translate(this.btnRemoveDataSet);
108
        tsm.translate(this.lblName);
109
        tsm.translate(this.tabPanel);
110
        tsm.translate(this.lblTolerance);
111
    }
112
    
113
    public void performDataSetSelected() {
114
        if( lstDataSets.getValueIsAdjusting()  ) {
115
            return;
116
        }
117
        btnRemoveDataSet.setEnabled(!lstDataSets.isSelectionEmpty());
118
    }
119
    
120
    public void performRuleSelected() {
121
        if( lstRules.getValueIsAdjusting()  ) {
122
            return;
123
        }
124
        btnRemoveRule.setEnabled(!lstRules.isSelectionEmpty());
125
    }
126

    
127
    @Override
128
    public void put(TopologyPlan thePlan) {
129
        this.plan = TopologyLocator.getTopologyManager().createTopologyPlan();
130
        this.plan.setName(thePlan.getName());
131
        this.plan.setTolerance(thePlan.getTolerance());
132
        for (TopologyDataSet dataSet : thePlan.getDataSets()) {
133
            this.plan.addDataSet(dataSet);
134
        }
135
        for (TopologyRule rule : thePlan.getRules()) {
136
            this.plan.addRule(rule);
137
        }
138
        
139
        this.txtName.setText(this.plan.getName());
140
        this.txtTolerance.setText(String.valueOf(this.plan.getTolerance()));
141
        this.lstDataSets.removeAll();
142
        DefaultListModel<TopologyDataSet> modelDataSets = new DefaultListModel<>();
143
        for (TopologyDataSet dataSet : thePlan.getDataSets()) {
144
            modelDataSets.addElement(dataSet);
145
        }
146
        this.lstDataSets.setModel(modelDataSets);
147

    
148
        this.lstRules.removeAll();
149
        DefaultListModel<ListElement<TopologyRule>> modelRules = new DefaultListModel<>();
150
        for (TopologyRule rule : thePlan.getRules()) {
151
            modelRules.addElement(new ListElement<>(
152
                    rule.getName() + " ["+rule.getDataSet1().getName()+"]",
153
                    rule
154
                )
155
            );
156
        }
157
        this.lstRules.setModel(modelRules);
158
    }
159

    
160
    @Override
161
    public TopologyPlan fetch(TopologyPlan thePlan) {
162
        if( thePlan == null ) {
163
            thePlan = TopologyLocator.getTopologyManager().createTopologyPlan();
164
        } else {
165
            thePlan.clear();
166
        }
167
        thePlan.setName(thePlan.getName());
168
        for (TopologyDataSet dataSet : this.plan.getDataSets()) {
169
            thePlan.addDataSet(dataSet);
170
        }
171
        for (TopologyRule rule : this.plan.getRules()) {
172
            thePlan.addRule(rule);
173
        }
174
        return thePlan;
175
    }
176

    
177
    @Override
178
    public JComponent asJComponent() {
179
        return this;
180
    }
181

    
182
    private void performAddDataSet() {
183
        I18nManager i18n = ToolsLocator.getI18nManager();
184
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
185
        SelectDataSetDialog panel = new SelectDataSetDialog();
186
        Dialog dlg = winManager.createDialog(
187
                panel,
188
                i18n.getTranslation("_Select_a_dataset"),
189
                null, 
190
                WindowManager_v2.BUTTONS_OK_CANCEL
191
        );
192
        panel.setDialog(dlg);
193
        dlg.show(WindowManager_v2.MODE.DIALOG);
194
        if( dlg.getAction()==WindowManager_v2.BUTTON_OK) {
195
            List<TopologyDataSet> dataSets = panel.getDataSets();
196
            if( dataSets != null ) {
197
                for (TopologyDataSet dataSet : dataSets) {
198
                    this.plan.addDataSet(dataSet);
199
                    DefaultListModel model = (DefaultListModel) this.lstDataSets.getModel();
200
                    model.addElement(dataSet);
201
                }
202
            }
203
        }
204
    }
205

    
206
    private void performRemoveDataSet() {
207
        if( lstDataSets.getValueIsAdjusting()  ) {
208
            return;
209
        }
210
        if( lstDataSets.isSelectionEmpty() ) {
211
            return;
212
        }
213
        int index = lstRules.getSelectedIndex();
214
        TopologyDataSet dataSet = (TopologyDataSet) lstDataSets.getSelectedValue();
215
        this.plan.removeDataSet(dataSet);
216
        ((DefaultListModel)(lstRules.getModel())).remove(index);
217
    }
218

    
219
    private void performAddRule() {
220
        I18nManager i18n = ToolsLocator.getI18nManager();
221
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
222
        CreateRuleDialog panel = new CreateRuleDialog(this.plan);
223
        Dialog dlg = winManager.createDialog(
224
                panel,
225
                i18n.getTranslation("_Add_new_rule"),
226
                null, 
227
                WindowManager_v2.BUTTONS_OK_CANCEL
228
        );
229
        panel.setDialog(dlg);
230
        dlg.show(WindowManager_v2.MODE.DIALOG);
231
        if( dlg.getAction()==WindowManager_v2.BUTTON_OK) {
232
            TopologyRule rule = panel.getRule();
233
            if( rule != null ) {
234
                this.plan.addRule(rule);
235
                DefaultListModel model = (DefaultListModel) this.lstRules.getModel();
236
                model.addElement(new ListElement(
237
                        rule.getName() + " ["+rule.getDataSet1().getName()+"]",
238
                        rule
239
                    )
240
                );
241
            }
242
        }
243
    }
244

    
245
    private void performRemoveRule() {
246
        if( lstRules.getValueIsAdjusting()  ) {
247
            return;
248
        }
249
        if( lstRules.isSelectionEmpty() ) {
250
            return;
251
        }
252
        int index = lstRules.getSelectedIndex();
253
        TopologyRule rule = (TopologyRule) ListElement.getSelected(lstRules);
254
        this.plan.removeRule(rule);
255
        ((DefaultListModel)(lstRules.getModel())).remove(index);
256
    }
257

    
258
}