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 |
} |