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 688 jjdelcerro
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 727 jjdelcerro
import java.net.URL;
7
import java.util.List;
8 688 jjdelcerro
import javax.swing.DefaultListModel;
9 727 jjdelcerro
import javax.swing.ImageIcon;
10 688 jjdelcerro
import javax.swing.JComponent;
11
import javax.swing.event.ListSelectionEvent;
12
import javax.swing.event.ListSelectionListener;
13 727 jjdelcerro
import org.apache.commons.io.FilenameUtils;
14 688 jjdelcerro
import org.gvsig.tools.ToolsLocator;
15
import org.gvsig.tools.i18n.I18nManager;
16 722 jjdelcerro
import org.gvsig.tools.swing.api.ListElement;
17 688 jjdelcerro
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 727 jjdelcerro
import org.gvsig.tools.swing.icontheme.IconTheme;
22 688 jjdelcerro
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 727 jjdelcerro
    @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 688 jjdelcerro
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 722 jjdelcerro
        DefaultListModel<ListElement<TopologyRule>> modelRules = new DefaultListModel<>();
150 688 jjdelcerro
        for (TopologyRule rule : thePlan.getRules()) {
151 722 jjdelcerro
            modelRules.addElement(new ListElement<>(
152
                    rule.getName() + " ["+rule.getDataSet1().getName()+"]",
153
                    rule
154
                )
155
            );
156 688 jjdelcerro
        }
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 727 jjdelcerro
        I18nManager i18n = ToolsLocator.getI18nManager();
184 688 jjdelcerro
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
185
        SelectDataSetDialog panel = new SelectDataSetDialog();
186
        Dialog dlg = winManager.createDialog(
187
                panel,
188 727 jjdelcerro
                i18n.getTranslation("_Select_a_dataset"),
189 688 jjdelcerro
                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 727 jjdelcerro
            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 688 jjdelcerro
            }
203
        }
204
    }
205
206
    private void performRemoveDataSet() {
207
        if( lstDataSets.getValueIsAdjusting()  ) {
208
            return;
209
        }
210
        if( lstDataSets.isSelectionEmpty() ) {
211
            return;
212
        }
213 727 jjdelcerro
        int index = lstRules.getSelectedIndex();
214 688 jjdelcerro
        TopologyDataSet dataSet = (TopologyDataSet) lstDataSets.getSelectedValue();
215
        this.plan.removeDataSet(dataSet);
216 727 jjdelcerro
        ((DefaultListModel)(lstRules.getModel())).remove(index);
217 688 jjdelcerro
    }
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 722 jjdelcerro
                model.addElement(new ListElement(
237
                        rule.getName() + " ["+rule.getDataSet1().getName()+"]",
238
                        rule
239
                    )
240
                );
241 688 jjdelcerro
            }
242
        }
243
    }
244
245
    private void performRemoveRule() {
246
        if( lstRules.getValueIsAdjusting()  ) {
247
            return;
248
        }
249
        if( lstRules.isSelectionEmpty() ) {
250
            return;
251
        }
252 726 jjdelcerro
        int index = lstRules.getSelectedIndex();
253 722 jjdelcerro
        TopologyRule rule = (TopologyRule) ListElement.getSelected(lstRules);
254 688 jjdelcerro
        this.plan.removeRule(rule);
255 727 jjdelcerro
        ((DefaultListModel)(lstRules.getModel())).remove(index);
256 688 jjdelcerro
    }
257
258
}