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 @ 726

History | View | Annotate | Download (8.02 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 javax.swing.DefaultListModel;
7
import javax.swing.JComponent;
8
import javax.swing.event.ListSelectionEvent;
9
import javax.swing.event.ListSelectionListener;
10
import org.gvsig.tools.ToolsLocator;
11
import org.gvsig.tools.i18n.I18nManager;
12
import org.gvsig.tools.swing.api.ListElement;
13
import org.gvsig.tools.swing.api.ToolsSwingLocator;
14
import org.gvsig.tools.swing.api.ToolsSwingManager;
15
import org.gvsig.tools.swing.api.windowmanager.Dialog;
16
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
17
import org.gvsig.topology.lib.api.TopologyDataSet;
18
import org.gvsig.topology.lib.api.TopologyLocator;
19
import org.gvsig.topology.lib.api.TopologyPlan;
20
import org.gvsig.topology.lib.api.TopologyRule;
21
import org.gvsig.topology.swing.api.JTopologyPlanProperties;
22

    
23
/**
24
 *
25
 * @author jjdelcerro
26
 */
27
public class DefaultJTopologyPlanProperties
28
        extends DefaultJTopologyPlanPropertiesView
29
        implements JTopologyPlanProperties {
30

    
31
    private TopologyPlan plan;
32

    
33
    public DefaultJTopologyPlanProperties() {
34
        this.plan = TopologyLocator.getTopologyManager().createTopologyPlan();
35

    
36
        this.initComponents();
37
    }
38

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

    
83
    
84
    private void translate() {
85
        ToolsSwingManager tsm = ToolsSwingLocator.getToolsSwingManager();
86
        tsm.translate(this.btnAddRule);
87
        tsm.translate(this.btnRemoveRule);
88
        tsm.translate(this.btnAddDataSet);
89
        tsm.translate(this.btnRemoveDataSet);
90
        tsm.translate(this.lblName);
91
        tsm.translate(this.tabPanel);
92
        tsm.translate(this.lblTolerance);
93
    }
94
    
95
    public void performDataSetSelected() {
96
        if( lstDataSets.getValueIsAdjusting()  ) {
97
            return;
98
        }
99
        btnRemoveDataSet.setEnabled(!lstDataSets.isSelectionEmpty());
100
    }
101
    
102
    public void performRuleSelected() {
103
        if( lstRules.getValueIsAdjusting()  ) {
104
            return;
105
        }
106
        btnRemoveRule.setEnabled(!lstRules.isSelectionEmpty());
107
    }
108

    
109
    @Override
110
    public void put(TopologyPlan thePlan) {
111
        this.plan = TopologyLocator.getTopologyManager().createTopologyPlan();
112
        this.plan.setName(thePlan.getName());
113
        this.plan.setTolerance(thePlan.getTolerance());
114
        for (TopologyDataSet dataSet : thePlan.getDataSets()) {
115
            this.plan.addDataSet(dataSet);
116
        }
117
        for (TopologyRule rule : thePlan.getRules()) {
118
            this.plan.addRule(rule);
119
        }
120
        
121
        this.txtName.setText(this.plan.getName());
122
        this.txtTolerance.setText(String.valueOf(this.plan.getTolerance()));
123
        this.lstDataSets.removeAll();
124
        DefaultListModel<TopologyDataSet> modelDataSets = new DefaultListModel<>();
125
        for (TopologyDataSet dataSet : thePlan.getDataSets()) {
126
            modelDataSets.addElement(dataSet);
127
        }
128
        this.lstDataSets.setModel(modelDataSets);
129

    
130
        this.lstRules.removeAll();
131
        DefaultListModel<ListElement<TopologyRule>> modelRules = new DefaultListModel<>();
132
        for (TopologyRule rule : thePlan.getRules()) {
133
            modelRules.addElement(new ListElement<>(
134
                    rule.getName() + " ["+rule.getDataSet1().getName()+"]",
135
                    rule
136
                )
137
            );
138
        }
139
        this.lstRules.setModel(modelRules);
140
    }
141

    
142
    @Override
143
    public TopologyPlan fetch(TopologyPlan thePlan) {
144
        if( thePlan == null ) {
145
            thePlan = TopologyLocator.getTopologyManager().createTopologyPlan();
146
        } else {
147
            thePlan.clear();
148
        }
149
        thePlan.setName(thePlan.getName());
150
        for (TopologyDataSet dataSet : this.plan.getDataSets()) {
151
            thePlan.addDataSet(dataSet);
152
        }
153
        for (TopologyRule rule : this.plan.getRules()) {
154
            thePlan.addRule(rule);
155
        }
156
        return thePlan;
157
    }
158

    
159
    @Override
160
    public JComponent asJComponent() {
161
        return this;
162
    }
163

    
164
    private void performAddDataSet() {
165
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
166
        SelectDataSetDialog panel = new SelectDataSetDialog();
167
        Dialog dlg = winManager.createDialog(
168
                panel,
169
                "_Select_a_dataset",
170
                null, 
171
                WindowManager_v2.BUTTONS_OK_CANCEL
172
        );
173
        panel.setDialog(dlg);
174
        dlg.show(WindowManager_v2.MODE.DIALOG);
175
        if( dlg.getAction()==WindowManager_v2.BUTTON_OK) {
176
            TopologyDataSet dataSet = panel.getDataSet();
177
            if( dataSet != null ) {
178
                this.plan.addDataSet(dataSet);
179
                DefaultListModel model = (DefaultListModel) this.lstDataSets.getModel();
180
                model.addElement(dataSet);
181
            }
182
        }
183
    }
184

    
185
    private void performRemoveDataSet() {
186
        if( lstDataSets.getValueIsAdjusting()  ) {
187
            return;
188
        }
189
        if( lstDataSets.isSelectionEmpty() ) {
190
            return;
191
        }
192
        TopologyDataSet dataSet = (TopologyDataSet) lstDataSets.getSelectedValue();
193
        this.plan.removeDataSet(dataSet);
194
        lstDataSets.remove(lstDataSets.getSelectedIndex());
195
    }
196

    
197
    private void performAddRule() {
198
        I18nManager i18n = ToolsLocator.getI18nManager();
199
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
200
        CreateRuleDialog panel = new CreateRuleDialog(this.plan);
201
        Dialog dlg = winManager.createDialog(
202
                panel,
203
                i18n.getTranslation("_Add_new_rule"),
204
                null, 
205
                WindowManager_v2.BUTTONS_OK_CANCEL
206
        );
207
        panel.setDialog(dlg);
208
        dlg.show(WindowManager_v2.MODE.DIALOG);
209
        if( dlg.getAction()==WindowManager_v2.BUTTON_OK) {
210
            TopologyRule rule = panel.getRule();
211
            if( rule != null ) {
212
                this.plan.addRule(rule);
213
                DefaultListModel model = (DefaultListModel) this.lstRules.getModel();
214
                model.addElement(new ListElement(
215
                        rule.getName() + " ["+rule.getDataSet1().getName()+"]",
216
                        rule
217
                    )
218
                );
219
            }
220
        }
221
    }
222

    
223
    private void performRemoveRule() {
224
        if( lstRules.getValueIsAdjusting()  ) {
225
            return;
226
        }
227
        if( lstRules.isSelectionEmpty() ) {
228
            return;
229
        }
230
        int index = lstRules.getSelectedIndex();
231
        TopologyRule rule = (TopologyRule) ListElement.getSelected(lstRules);
232
        this.plan.removeRule(rule);
233
        lstRules.remove(index);
234
    }
235

    
236
}