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