Revision 9512 org.gvsig.online/trunk/org.gvsig.online/org.gvsig.online.swing/org.gvsig.online.swing.impl/src/main/java/org/gvsig/online/swing/impl/changes/RemoteChangesController.java
RemoteChangesController.java | ||
---|---|---|
28 | 28 |
import java.awt.event.KeyAdapter; |
29 | 29 |
import java.awt.event.KeyEvent; |
30 | 30 |
import java.util.ArrayList; |
31 |
import java.util.Iterator; |
|
32 | 31 |
import java.util.List; |
33 | 32 |
import javax.swing.JButton; |
34 | 33 |
import javax.swing.JLabel; |
... | ... | |
36 | 35 |
import javax.swing.JTable; |
37 | 36 |
import javax.swing.ListSelectionModel; |
38 | 37 |
import javax.swing.SwingUtilities; |
39 |
import javax.swing.event.ChangeEvent; |
|
40 | 38 |
import javax.swing.event.ListSelectionEvent; |
39 |
import javax.swing.event.TableModelEvent; |
|
40 |
import javax.swing.event.TableModelListener; |
|
41 | 41 |
import javax.swing.table.DefaultTableCellRenderer; |
42 |
import javax.swing.table.DefaultTableModel;
|
|
42 |
import javax.swing.table.TableModel; |
|
43 | 43 |
import org.apache.commons.collections.CollectionUtils; |
44 | 44 |
import org.apache.commons.lang3.mutable.MutableLong; |
45 | 45 |
import org.apache.commons.lang3.mutable.MutableObject; |
... | ... | |
47 | 47 |
import org.gvsig.fmap.dal.feature.Feature; |
48 | 48 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
49 | 49 |
import org.gvsig.fmap.dal.feature.FeatureType; |
50 |
import org.gvsig.fmap.dal.feature.exception.ConcurrentDataModificationException; |
|
50 | 51 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
51 | 52 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
52 | 53 |
import org.gvsig.fmap.geom.Geometry; |
53 | 54 |
import org.gvsig.fmap.geom.GeometryLocator; |
54 | 55 |
import org.gvsig.fmap.geom.GeometryUtils; |
55 | 56 |
import org.gvsig.fmap.geom.aggregate.MultiPrimitive; |
57 |
import org.gvsig.fmap.geom.primitive.Envelope; |
|
56 | 58 |
import org.gvsig.json.Json; |
57 | 59 |
import static org.gvsig.online.lib.api.OnlineManager.ERR_OK; |
58 | 60 |
import static org.gvsig.online.lib.api.OnlineManager.OP_DELETE; |
59 | 61 |
import org.gvsig.online.lib.api.OnlineRuntimeException; |
60 |
import org.gvsig.online.lib.api.workingcopy.OnlineChange; |
|
61 | 62 |
import org.gvsig.online.lib.api.workingcopy.OnlineEntity; |
62 | 63 |
import org.gvsig.online.lib.api.workingcopy.OnlineRemoteChange; |
63 | 64 |
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopy; |
64 |
import org.gvsig.online.lib.api.workingcopy.OnlineWorkingcopyChanges; |
|
65 |
import org.gvsig.online.swing.api.OnlineEntitySelectorController; |
|
66 | 65 |
import org.gvsig.online.swing.api.OnlineSwingLocator; |
67 | 66 |
import org.gvsig.online.swing.api.OnlineSwingManager; |
68 | 67 |
import org.gvsig.online.swing.api.OnlineSwingServices; |
... | ... | |
70 | 69 |
import static org.gvsig.online.swing.api.OnlineSwingServices.HIGHLIGHT_WORKSPACE; |
71 | 70 |
import org.gvsig.online.swing.impl.OnlineSwingCommons; |
72 | 71 |
import static org.gvsig.online.swing.impl.OnlineSwingCommons.cleanHighligthed; |
72 |
import static org.gvsig.online.swing.impl.OnlineSwingCommons.getHTMLFontColorTag; |
|
73 | 73 |
import static org.gvsig.online.swing.impl.OnlineSwingCommons.notInSwingThreadInvokeLater; |
74 | 74 |
import static org.gvsig.online.swing.impl.OnlineSwingCommons.refreshDocument; |
75 | 75 |
import static org.gvsig.online.swing.impl.OnlineSwingCommons.showAuthenticationErrors; |
... | ... | |
91 | 91 |
import org.gvsig.tools.task.UserCancelTaskException; |
92 | 92 |
import org.slf4j.Logger; |
93 | 93 |
import org.slf4j.LoggerFactory; |
94 |
import org.gvsig.online.lib.api.workingcopy.OnlineChanges; |
|
94 | 95 |
|
95 | 96 |
/** |
96 | 97 |
* |
... | ... | |
100 | 101 |
public class RemoteChangesController extends AbstractDisposable { |
101 | 102 |
|
102 | 103 |
private static final Logger LOGGER = LoggerFactory.getLogger(RemoteChangesController.class); |
104 |
private static final int MAX_SELECTED_ROWS_TO_SHOW_GEOMETRIES = 200; |
|
103 | 105 |
|
104 | 106 |
private final PickerController<OnlineWorkingcopy> workspacePicker; |
105 | 107 |
private final JTable tblRemoteChanges; |
... | ... | |
109 | 111 |
private final JButton btnRemoteReloadChanges; |
110 | 112 |
private final JButton btnRemoteCheckAll; |
111 | 113 |
private final JButton btnRemoteUnCheckAll; |
112 |
// private final JButton btnRemoteExpandAllEntities; |
|
113 |
// private final JButton btnRemoteCollapseAllEntities; |
|
114 |
// private final JTree treeRepositoryTables; |
|
115 |
// private final JTextComponent txtRepositoryTablesFilter; |
|
116 |
// private final JButton btnRepositoryTablesFilter; |
|
117 | 114 |
|
118 |
private OnlineWorkingcopyChanges<OnlineRemoteChange> changes;
|
|
115 |
// private OnlineChanges<OnlineRemoteChange> changes;
|
|
119 | 116 |
|
120 |
// private final JButton btnRemoteTablesReload; |
|
121 | 117 |
private final JButton btnRemoteCleanChanges; |
122 | 118 |
private final OnlineJChangesImpl context; |
123 | 119 |
|
... | ... | |
125 | 121 |
private final JButton btnRemoteZoom; |
126 | 122 |
private final JButton btnRemoteCenter; |
127 | 123 |
private final JButton btnRemoteHighlight; |
128 |
// private final JButton btnRemoteCheckout; |
|
129 |
// private final JButton btnRemoteCheckoutOverwrite; |
|
130 | 124 |
private final JButton btnRemoteCleanHighligthed; |
131 | 125 |
|
132 | 126 |
private final JLabel lblRemoteChangesCount; |
133 |
// private OnlineEntitySelectorController entitySelector; |
|
134 |
// private final JButton btnRemoteCheckRecomendedEntities; |
|
135 |
// private final JButton btnRemoteUnCheckAllEntities; |
|
136 | 127 |
|
137 | 128 |
public RemoteChangesController( |
138 | 129 |
OnlineJChangesImpl context, |
139 | 130 |
PickerController<OnlineWorkingcopy> workspacePicker, |
140 |
// JTree treeRepositoryTables, |
|
141 |
// JTextComponent txtRepositoryTablesFilter, |
|
142 |
// JButton btnRepositoryTablesFilter, |
|
143 |
// JButton btnRemoteTablesReload, |
|
144 | 131 |
JTable tblRemoteChanges, |
145 | 132 |
JButton btnRemoteCheckAll, |
146 | 133 |
JButton btnRemoteUnCheckAll, |
147 |
// JButton btnRemoteExpandAllEntities, |
|
148 |
// JButton btnRemoteCollapseAllEntities, |
|
149 | 134 |
JButton btnRemoteReloadChanges, |
150 | 135 |
JButton btnRemoteCleanChanges, |
151 | 136 |
JButton btnRemoteUpdate, |
... | ... | |
155 | 140 |
JButton btnRemoteCenter, |
156 | 141 |
JButton btnRemoteHighlight, |
157 | 142 |
JButton btnRemoteCleanHighligthed, |
158 |
JLabel lblRemoteChangesCount//, |
|
159 |
// JButton btnRemoteCheckRecomendedEntities, |
|
160 |
// JButton btnRemoteUnCheckAllEntities |
|
143 |
JLabel lblRemoteChangesCount |
|
161 | 144 |
) { |
162 | 145 |
this.context = context; |
163 | 146 |
|
164 | 147 |
this.workspacePicker = workspacePicker; |
165 | 148 |
|
166 |
// this.treeRepositoryTables = treeRepositoryTables; |
|
167 |
// this.txtRepositoryTablesFilter = txtRepositoryTablesFilter; |
|
168 |
// this.btnRepositoryTablesFilter = btnRepositoryTablesFilter; |
|
169 |
|
|
170 |
// this.btnRemoteTablesReload = btnRemoteTablesReload; |
|
171 |
|
|
172 | 149 |
this.tblRemoteChanges = tblRemoteChanges; |
173 | 150 |
this.btnRemoteCheckAll = btnRemoteCheckAll; |
174 | 151 |
this.btnRemoteUnCheckAll = btnRemoteUnCheckAll; |
175 | 152 |
|
176 |
// this.btnRemoteExpandAllEntities = btnRemoteExpandAllEntities; |
|
177 |
// this.btnRemoteCollapseAllEntities = btnRemoteCollapseAllEntities; |
|
178 |
|
|
179 | 153 |
this.btnRemoteCleanChanges = btnRemoteCleanChanges; |
180 | 154 |
this.btnRemoteReloadChanges = btnRemoteReloadChanges; |
181 | 155 |
|
... | ... | |
191 | 165 |
|
192 | 166 |
this.lblRemoteChangesCount= lblRemoteChangesCount; |
193 | 167 |
|
194 |
// this.btnRemoteCheckRecomendedEntities = btnRemoteCheckRecomendedEntities; |
|
195 |
// this.btnRemoteUnCheckAllEntities = btnRemoteUnCheckAllEntities; |
|
196 |
|
|
197 | 168 |
initComponents(); |
198 | 169 |
} |
199 | 170 |
|
... | ... | |
213 | 184 |
this.btnRemoteMerge.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
214 | 185 |
this.btnRemoteReloadChanges.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
215 | 186 |
this.btnRemoteShowForm.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
216 |
// this.btnRemoteTablesReload.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
|
217 | 187 |
this.btnRemoteUnCheckAll.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
218 | 188 |
this.btnRemoteUpdate.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
219 | 189 |
this.btnRemoteZoom.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
... | ... | |
223 | 193 |
|
224 | 194 |
translate(); |
225 | 195 |
|
226 |
// this.entitySelector = OnlineSwingLocator.getOnlineSwingManager().createEntitySelectorController( |
|
227 |
// this.treeRepositoryTables, |
|
228 |
// this.txtRepositoryTablesFilter, |
|
229 |
// this.btnRepositoryTablesFilter |
|
230 |
// ); |
|
231 |
// this.entitySelector.setViewFilter(OnlineEntitySelectorController.ALL_ENTITIES); |
|
232 |
// this.entitySelector.setFilter(OnlineEntitySelectorController.ALL_ENTITIES); |
|
233 |
// this.entitySelector.setChecksEnabled(true); |
|
234 |
// this.entitySelector.addChangeListener((ChangeEvent e) -> { |
|
235 |
// doReloadChanges(); |
|
236 |
// }); |
|
237 |
// this.entitySelector.addActionListener((ActionEvent e) -> { |
|
238 |
// switch(e.getID()) { |
|
239 |
// case OnlineEntitySelectorController.ACTION_SELECT_ID: |
|
240 |
// doUpdateComponents(); |
|
241 |
// break; |
|
242 |
// case OnlineEntitySelectorController.ACTION_CHECK_ID: |
|
243 |
// doReloadChanges(); |
|
244 |
// doUpdateComponents(); |
|
245 |
// break; |
|
246 |
// case OnlineEntitySelectorController.ACTION_RELOAD_ID: |
|
247 |
// doReloadChanges(); |
|
248 |
// doUpdateComponents(); |
|
249 |
// break; |
|
250 |
// } |
|
251 |
// }); |
|
252 |
|
|
253 |
|
|
254 |
// lstRemoteTables.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); |
|
255 |
// |
|
256 |
// lstRemoteTables.setCellRenderer(new DefaultListCellRenderer() { |
|
257 |
// @Override |
|
258 |
// public java.awt.Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { |
|
259 |
// JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); |
|
260 |
// LabeledValue lvalue = (LabeledValue) value; |
|
261 |
// OnlineEntity entity = (OnlineEntity) lvalue.getValue(); |
|
262 |
// String entityCode = entity.getEntityCode(); |
|
263 |
// OnlineEntity lentity = getUndisposableWorkspace().getWorkspaceEntity(entityCode); |
|
264 |
// String s = OnlineSwingCommons.getHTMLColorTag( |
|
265 |
// lentity == null ? OnlineManager.STATE_REPOSITORY_NEW : lentity.getState(), |
|
266 |
// lvalue.getLabel() |
|
267 |
// ); |
|
268 |
// label.setText(s); |
|
269 |
// return label; |
|
270 |
// } |
|
271 |
// }); |
|
272 |
// |
|
273 |
// this.lstRemoteTables.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> { |
|
274 |
// doReloadChanges(); |
|
275 |
// }); |
|
276 |
|
|
277 |
// this.btnRemoteTablesReload.addActionListener((ActionEvent e) -> { |
|
278 |
// doReloadTables(); |
|
279 |
// doReloadChanges(); |
|
280 |
// }); |
|
281 |
|
|
282 | 196 |
this.tblRemoteChanges.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); |
283 | 197 |
|
284 | 198 |
this.tblRemoteChanges.addKeyListener(new KeyAdapter() { |
... | ... | |
292 | 206 |
|
293 | 207 |
this.tblRemoteChanges.getSelectionModel().addListSelectionListener((ListSelectionEvent e) -> { |
294 | 208 |
context.doUpdateComponents(); |
209 |
doUpdateChangesCount(); |
|
295 | 210 |
}); |
296 |
|
|
211 |
|
|
297 | 212 |
this.btnRemoteCheckAll.addActionListener((ActionEvent e) -> { |
298 |
if (changes != null) { |
|
299 |
doCheckAll(); |
|
300 |
doReloadChanges(); |
|
301 |
} |
|
213 |
doCheckAll(); |
|
302 | 214 |
}); |
303 | 215 |
|
304 | 216 |
this.btnRemoteUnCheckAll.addActionListener((ActionEvent e) -> { |
305 |
if (changes != null) { |
|
306 |
doUnCheckAll(); |
|
307 |
doReloadChanges(); |
|
308 |
} |
|
217 |
doUnCheckAll(); |
|
309 | 218 |
}); |
310 | 219 |
|
311 |
// this.btnRemoteCollapseAllEntities.addActionListener((ActionEvent e) -> { |
|
312 |
// this.entitySelector.collapseAll(); |
|
313 |
// }); |
|
314 |
// this.btnRemoteExpandAllEntities.addActionListener((ActionEvent e) -> { |
|
315 |
// this.entitySelector.expandAll(); |
|
316 |
// }); |
|
317 |
|
|
318 | 220 |
this.btnRemoteReloadChanges.addActionListener((ActionEvent e) -> { |
319 |
// doDownloadChangesOfSelectedTable(); |
|
320 |
// doReloadTables(); |
|
221 |
doReloadChanges(); |
|
321 | 222 |
}); |
322 | 223 |
|
323 | 224 |
this.btnRemoteCleanChanges.addActionListener((ActionEvent e) -> { |
324 | 225 |
doCleanChanges(); |
325 |
doReloadChanges(); |
|
326 | 226 |
}); |
327 | 227 |
|
328 | 228 |
this.btnRemoteUpdate.addActionListener((ActionEvent e) -> { |
... | ... | |
353 | 253 |
cleanHighligthed(); |
354 | 254 |
}); |
355 | 255 |
|
356 |
// this.btnRemoteCheckRecomendedEntities.addActionListener((ActionEvent e) -> { |
|
357 |
// doCheckRecomendedEntities(); |
|
358 |
// }); |
|
359 |
// this.btnRemoteUnCheckAllEntities.addActionListener((ActionEvent e) -> { |
|
360 |
// this.entitySelector.clearChecks(); |
|
361 |
// }); |
|
362 |
|
|
363 |
|
|
364 | 256 |
context.doUpdateComponents(); |
365 | 257 |
|
366 | 258 |
SwingUtilities.invokeLater(() -> { |
259 |
doReloadChanges(); |
|
367 | 260 |
message(i18n.getTranslation("_Ready")); |
368 | 261 |
this.lblRemoteChangesCount.setText(""); |
369 | 262 |
}); |
370 | 263 |
|
371 | 264 |
} |
372 | 265 |
|
373 |
// private boolean askUserOverwriteSelectedTables() { |
|
374 |
// I18nManager i18n = ToolsLocator.getI18nManager(); |
|
375 |
// ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager(); |
|
376 |
// int n = dialogs.confirmDialog( |
|
377 |
// i18n.getTranslation("_Are_you_sure_you_want_to_overwrite_the_selected_tables"), |
|
378 |
// i18n.getTranslation("_Online_Checkout_overwrite"), |
|
379 |
// JOptionPane.YES_NO_OPTION, |
|
380 |
// JOptionPane.QUESTION_MESSAGE |
|
381 |
// ); |
|
382 |
// return n == JOptionPane.YES_OPTION; |
|
383 |
// } |
|
384 |
|
|
385 |
// public void doChangeWorkspace() { |
|
386 |
// OnlineWorkingcopy ws = this.context.getWorkspace(); |
|
387 |
// this.entitySelector.setWorkspace(ws); |
|
388 |
// if( ws!=null ) { |
|
389 |
// for (String tableName : this.context.getDefaultTablesSelection()) { |
|
390 |
// OnlineEntity entity = ws.getWorkspaceEntity(tableName); |
|
391 |
// if( entity!=null ) { |
|
392 |
// this.entitySelector.check(entity); |
|
393 |
// } |
|
394 |
// } |
|
395 |
// } |
|
396 |
// doReloadChanges(); |
|
397 |
// } |
|
398 |
|
|
399 | 266 |
public void translate() { |
400 | 267 |
ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager(); |
401 | 268 |
|
... | ... | |
410 | 277 |
swingManager.translate(this.btnRemoteHighlight); |
411 | 278 |
swingManager.translate(this.btnRemoteZoom); |
412 | 279 |
swingManager.translate(this.btnRemoteCleanHighligthed); |
413 |
|
|
414 |
// swingManager.translate(this.btnRemoteCheckRecomendedEntities); |
|
415 |
// swingManager.translate(this.btnRemoteUnCheckAllEntities); |
|
416 |
// |
|
417 |
// swingManager.translate(this.btnRemoteCollapseAllEntities); |
|
418 |
// swingManager.translate(this.btnRemoteExpandAllEntities); |
|
419 | 280 |
} |
420 | 281 |
|
421 | 282 |
private OnlineWorkingcopy getUndisposableWorkspace() { |
... | ... | |
432 | 293 |
return; |
433 | 294 |
} |
434 | 295 |
OnlineWorkingcopy ws; |
435 |
try { |
|
436 |
this.context.setVisibleStatus(context.processing); |
|
437 |
this.context.btnClose.setEnabled(!context.processing); |
|
438 |
ws = this.getUndisposableWorkspace(); |
|
439 |
List<OnlineEntity> checkedEntities = context.getEntitySelector().getCheckedEntities(); |
|
296 |
for (int i = 0; i < 10; i++) { |
|
440 | 297 |
|
441 |
boolean hasLocalTables = false; |
|
442 |
// boolean hasRemoteTables = false; |
|
443 |
// for (OnlineEntity checkedEntity : checkedEntities) { |
|
444 |
// if( ws.getWorkspaceEntityByName(checkedEntity.getEntityName())!=null ) { |
|
445 |
// hasLocalTables = true; |
|
446 |
// } else { |
|
447 |
// hasRemoteTables = true; |
|
448 |
// } |
|
449 |
// } |
|
450 |
|
|
451 |
this.btnRemoteCheckAll.setEnabled(!context.processing && changes != null); |
|
452 |
this.btnRemoteUnCheckAll.setEnabled(!context.processing && changes != null); |
|
298 |
try { |
|
299 |
RemoteChangesTableModel tableModel = (RemoteChangesTableModel) this.tblRemoteChanges.getModel(); |
|
300 |
this.context.setVisibleStatus(context.processing); |
|
301 |
this.context.btnClose.setEnabled(!context.processing); |
|
302 |
ws = this.getUndisposableWorkspace(); |
|
303 |
List<OnlineEntity> checkedEntities = context.getEntitySelector().getCheckedEntities(); |
|
453 | 304 |
|
454 |
this.btnRemoteReloadChanges.setEnabled(!context.processing && ws != null && hasLocalTables); |
|
455 |
this.btnRemoteCleanChanges.setEnabled(!context.processing && ws != null && hasLocalTables); |
|
456 |
|
|
457 |
// this.btnRemoteTablesReload.setEnabled(!context.processing); |
|
458 |
// |
|
459 |
// this.btnRemoteTablesReload.setEnabled(!context.processing && ws != null); |
|
305 |
this.btnRemoteCheckAll.setEnabled(!context.processing && !tableModel.isEmpty()); |
|
306 |
this.btnRemoteUnCheckAll.setEnabled(!context.processing && !tableModel.isEmpty()); |
|
460 | 307 |
|
461 |
//Show form |
|
462 |
boolean enableShowForm = false; |
|
463 |
int row = this.tblRemoteChanges.getSelectedRow(); |
|
464 |
if (row >= 0) { |
|
465 |
OnlineRemoteChange change = this.changes.get64(row); |
|
466 |
// if (change.getOperation() != OP_ADD_ENTITY) { |
|
467 |
// enableShowForm = true; |
|
468 |
// } |
|
469 |
} |
|
470 |
this.btnRemoteShowForm.setEnabled(!context.processing && enableShowForm); |
|
308 |
this.btnRemoteReloadChanges.setEnabled(!context.processing && ws != null); |
|
309 |
this.btnRemoteCleanChanges.setEnabled(!context.processing && ws != null); |
|
471 | 310 |
|
472 |
context.getEntitySelector().setEnabled(!context.processing); |
|
473 |
this.tblRemoteChanges.setEnabled(!context.processing); |
|
474 |
this.workspacePicker.setEnabled(!context.processing); |
|
475 |
|
|
476 |
if ( CollectionUtils.isEmpty(checkedEntities) ) { |
|
477 |
this.btnRemoteMerge.setEnabled(false); |
|
478 |
this.btnRemoteUpdate.setEnabled(false); |
|
479 |
} else { |
|
480 |
MutableObject<String> msg = new MutableObject<>(); |
|
481 |
for (OnlineEntity checkedEntity : checkedEntities) { |
|
482 |
if( !ws.canUpdate(msg,checkedEntity.getEntityName())) { |
|
483 |
break; |
|
484 |
} |
|
311 |
//Show form |
|
312 |
boolean enableShowForm = false; |
|
313 |
int row = this.tblRemoteChanges.getSelectedRow(); |
|
314 |
if (row >= 0) { |
|
315 |
enableShowForm = true; |
|
485 | 316 |
} |
486 |
if( msg.getValue()!=null ) { |
|
317 |
this.btnRemoteShowForm.setEnabled(!context.processing && enableShowForm); |
|
318 |
|
|
319 |
context.getEntitySelector().setEnabled(!context.processing); |
|
320 |
this.tblRemoteChanges.setEnabled(!context.processing); |
|
321 |
this.workspacePicker.setEnabled(!context.processing); |
|
322 |
|
|
323 |
if (CollectionUtils.isEmpty(checkedEntities)) { |
|
487 | 324 |
this.btnRemoteMerge.setEnabled(false); |
488 | 325 |
this.btnRemoteUpdate.setEnabled(false); |
489 |
this.alert(msg.getValue()); |
|
490 | 326 |
} else { |
491 |
if( checkedEntities.size()==1 ) { |
|
492 |
OnlineEntity checkedEntity = checkedEntities.get(0); |
|
493 |
if ( ws.updateNeedMerge(checkedEntity.getEntityName())) { |
|
494 |
this.btnRemoteMerge.setEnabled(!context.processing); |
|
495 |
this.btnRemoteUpdate.setEnabled(false); |
|
496 |
} else { |
|
497 |
this.btnRemoteMerge.setEnabled(false); |
|
498 |
this.btnRemoteUpdate.setEnabled(!context.processing && changes != null && !this.changes.isSelectionEmpty()); |
|
327 |
MutableObject<String> msg = new MutableObject<>(); |
|
328 |
for (OnlineEntity checkedEntity : checkedEntities) { |
|
329 |
if (!ws.canUpdate(msg, checkedEntity.getEntityName())) { |
|
330 |
break; |
|
499 | 331 |
} |
500 |
} else { |
|
332 |
} |
|
333 |
if (msg.getValue() != null) { |
|
501 | 334 |
this.btnRemoteMerge.setEnabled(false); |
502 |
this.btnRemoteUpdate.setEnabled(!context.processing && changes != null && !this.changes.isSelectionEmpty()); |
|
503 |
for (OnlineEntity checkedEntity : checkedEntities) { |
|
504 |
if( ws.updateNeedMerge(checkedEntity.getEntityName())) { |
|
335 |
this.btnRemoteUpdate.setEnabled(false); |
|
336 |
this.alert(msg.getValue()); |
|
337 |
} else { |
|
338 |
if (checkedEntities.size() == 1) { |
|
339 |
OnlineEntity checkedEntity = checkedEntities.get(0); |
|
340 |
if (ws.updateNeedMerge(checkedEntity.getEntityName())) { |
|
505 | 341 |
this.btnRemoteMerge.setEnabled(!context.processing); |
506 | 342 |
this.btnRemoteUpdate.setEnabled(false); |
507 |
break; |
|
343 |
} else { |
|
344 |
this.btnRemoteMerge.setEnabled(false); |
|
345 |
this.btnRemoteUpdate.setEnabled(!context.processing && !tableModel.isSelectionEmpty()); |
|
508 | 346 |
} |
347 |
} else { |
|
348 |
this.btnRemoteMerge.setEnabled(false); |
|
349 |
this.btnRemoteUpdate.setEnabled(!context.processing && !tableModel.isSelectionEmpty()); |
|
350 |
for (OnlineEntity checkedEntity : checkedEntities) { |
|
351 |
if (ws.updateNeedMerge(checkedEntity.getEntityName())) { |
|
352 |
this.btnRemoteMerge.setEnabled(!context.processing); |
|
353 |
this.btnRemoteUpdate.setEnabled(false); |
|
354 |
break; |
|
355 |
} |
|
356 |
} |
|
509 | 357 |
} |
510 | 358 |
} |
511 | 359 |
} |
512 |
} |
|
513 | 360 |
|
514 |
Geometry repoGeom = getRepositoryGeometryOfSelectedChange(); |
|
515 |
Geometry wsGeom = getWorkspaceGeometryOfSelectedChange(); |
|
516 |
Geometry bbox = OnlineSwingCommons.createBBox(repoGeom, wsGeom); |
|
517 |
this.btnRemoteZoom.setEnabled(!context.processing && bbox != null); |
|
518 |
this.btnRemoteCenter.setEnabled(!context.processing && bbox != null); |
|
519 |
this.btnRemoteHighlight.setEnabled(!context.processing && bbox != null); |
|
520 |
this.btnRemoteCleanHighligthed.setEnabled(!context.processing); |
|
521 |
} catch (OnlineRuntimeException e1) { |
|
522 |
LOGGER.warn("Can't updating components.", e1); |
|
523 |
if (showAuthenticationErrors("_Online_Changes", e1)) { |
|
524 |
this.workspacePicker.set(null); |
|
361 |
Geometry repoGeom = getRepositoryGeometryOfSelectedChange(); |
|
362 |
Geometry wsGeom = getWorkspaceGeometryOfSelectedChange(); |
|
363 |
Geometry bbox = OnlineSwingCommons.createBBox(repoGeom, wsGeom); |
|
364 |
this.btnRemoteZoom.setEnabled(!context.processing); // && bbox != null); |
|
365 |
this.btnRemoteCenter.setEnabled(!context.processing); // && bbox != null); |
|
366 |
this.btnRemoteHighlight.setEnabled(!context.processing && bbox != null); |
|
367 |
this.btnRemoteCleanHighligthed.setEnabled(!context.processing); |
|
368 |
} catch (ConcurrentDataModificationException e3) { |
|
369 |
try { |
|
370 |
Thread.sleep(1000); |
|
371 |
} catch (InterruptedException ex) { |
|
372 |
//Do nothing |
|
373 |
} |
|
374 |
LOGGER.info("Retrying doUpdateComponents "+i); |
|
375 |
continue; |
|
376 |
} catch (OnlineRuntimeException e1) { |
|
377 |
LOGGER.warn("Can't updating components.", e1); |
|
378 |
if (showAuthenticationErrors("_Online_Changes", e1)) { |
|
379 |
this.workspacePicker.set(null); |
|
525 | 380 |
// doChangeWorkspace(); |
381 |
} |
|
382 |
} catch (Exception e2) { |
|
383 |
LOGGER.warn("Can't updating components.", e2); |
|
526 | 384 |
} |
527 |
} catch (Exception e2) { |
|
528 |
LOGGER.warn("Can't updating components.", e2); |
|
385 |
break; |
|
529 | 386 |
} |
530 | 387 |
|
531 | 388 |
} |
... | ... | |
535 | 392 |
try { |
536 | 393 |
context.processing = true; |
537 | 394 |
context.doUpdateComponents(); |
538 |
Iterator<Long> rows = getChangesSelectionIterator(); |
|
539 |
|
|
540 |
this.changes.process(rows, (OnlineRemoteChange change) -> { |
|
541 |
change.setSelected(!change.isSelected()); |
|
542 |
return true; |
|
543 |
}); |
|
395 |
ListSelectionModel selectionModel = this.tblRemoteChanges.getSelectionModel(); |
|
396 |
RemoteChangesTableModel model = (RemoteChangesTableModel) this.tblRemoteChanges.getModel(); |
|
397 |
model.toggleSelection(selectionModel); |
|
544 | 398 |
} finally { |
545 | 399 |
context.processing = false; |
546 | 400 |
context.doUpdateComponents(); |
... | ... | |
549 | 403 |
task.start(); |
550 | 404 |
} |
551 | 405 |
|
552 |
private Iterator<Long> getChangesSelectionIterator() { |
|
553 |
ListSelectionModel selection = this.tblRemoteChanges.getSelectionModel(); |
|
554 |
return new Iterator<Long>() { |
|
555 |
long n = selection.getMinSelectionIndex(); |
|
406 |
// private Iterator<Long> getChangesSelectionIterator() { |
|
407 |
// ListSelectionModel selection = this.tblRemoteChanges.getSelectionModel(); |
|
408 |
// return new Iterator<Long>() { |
|
409 |
// long n = selection.getMinSelectionIndex(); |
|
410 |
// |
|
411 |
// @Override |
|
412 |
// public boolean hasNext() { |
|
413 |
// while (n <= selection.getMaxSelectionIndex()) { |
|
414 |
// if (selection.isSelectedIndex((int) n)) { |
|
415 |
// return true; |
|
416 |
// } |
|
417 |
// n++; |
|
418 |
// } |
|
419 |
// return false; |
|
420 |
// } |
|
421 |
// |
|
422 |
// @Override |
|
423 |
// public Long next() { |
|
424 |
// if (n > selection.getMaxSelectionIndex()) { |
|
425 |
// throw new IllegalStateException(); |
|
426 |
// } |
|
427 |
// return n++; |
|
428 |
// } |
|
429 |
// }; |
|
430 |
// } |
|
431 |
// |
|
432 |
// private Iterator<Long> getRowsIterator() { |
|
433 |
// long size = changes.size64(); |
|
434 |
// return new Iterator<Long>() { |
|
435 |
// long n = 0; |
|
436 |
// |
|
437 |
// @Override |
|
438 |
// public boolean hasNext() { |
|
439 |
// return (n < size); |
|
440 |
// } |
|
441 |
// |
|
442 |
// @Override |
|
443 |
// public Long next() { |
|
444 |
// return n++; |
|
445 |
// } |
|
446 |
// }; |
|
447 |
// } |
|
556 | 448 |
|
557 |
@Override |
|
558 |
public boolean hasNext() { |
|
559 |
while (n <= selection.getMaxSelectionIndex()) { |
|
560 |
if (selection.isSelectedIndex((int) n)) { |
|
561 |
return true; |
|
562 |
} |
|
563 |
n++; |
|
564 |
} |
|
565 |
return false; |
|
566 |
} |
|
567 |
|
|
568 |
@Override |
|
569 |
public Long next() { |
|
570 |
if (n > selection.getMaxSelectionIndex()) { |
|
571 |
throw new IllegalStateException(); |
|
572 |
} |
|
573 |
return n++; |
|
574 |
} |
|
575 |
}; |
|
576 |
} |
|
577 |
|
|
578 |
private Iterator<Long> getRowsIterator() { |
|
579 |
long size = changes.size64(); |
|
580 |
return new Iterator<Long>() { |
|
581 |
long n = 0; |
|
582 |
|
|
583 |
@Override |
|
584 |
public boolean hasNext() { |
|
585 |
return (n < size); |
|
586 |
} |
|
587 |
|
|
588 |
@Override |
|
589 |
public Long next() { |
|
590 |
return n++; |
|
591 |
} |
|
592 |
}; |
|
593 |
} |
|
594 |
|
|
595 | 449 |
private void doCheckAll() { |
596 | 450 |
Thread task = new Thread(() -> { |
597 | 451 |
try { |
598 | 452 |
context.processing = true; |
599 | 453 |
context.doUpdateComponents(); |
600 |
Iterator<Long> rows = getRowsIterator(); |
|
601 |
|
|
602 |
this.changes.process(rows, (OnlineRemoteChange change) -> { |
|
603 |
change.setSelected(true); |
|
604 |
return true; |
|
605 |
}); |
|
454 |
RemoteChangesTableModel model = (RemoteChangesTableModel) this.tblRemoteChanges.getModel(); |
|
455 |
model.selectAll(); |
|
606 | 456 |
} finally { |
607 | 457 |
context.processing = false; |
608 | 458 |
context.doUpdateComponents(); |
... | ... | |
616 | 466 |
try { |
617 | 467 |
context.processing = true; |
618 | 468 |
context.doUpdateComponents(); |
619 |
Iterator<Long> rows = getRowsIterator(); |
|
620 |
|
|
621 |
this.changes.process(rows, (OnlineRemoteChange change) -> { |
|
622 |
change.setSelected(false); |
|
623 |
return true; |
|
624 |
}); |
|
469 |
RemoteChangesTableModel model = (RemoteChangesTableModel) this.tblRemoteChanges.getModel(); |
|
470 |
model.deselectAll(); |
|
625 | 471 |
} finally { |
626 | 472 |
context.processing = false; |
627 | 473 |
context.doUpdateComponents(); |
... | ... | |
640 | 486 |
return; |
641 | 487 |
} |
642 | 488 |
|
643 |
this.tblRemoteChanges.setModel(new RemoteChangesTableModel(ws));
|
|
489 |
this.tblRemoteChanges.setModel(createEmptyTableModel());
|
|
644 | 490 |
|
645 | 491 |
SimpleTaskStatus taskStatus = ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("_Download_changes"); |
646 | 492 |
Thread task = new Thread(() -> { |
... | ... | |
719 | 565 |
// OnlineEntity entity = checkedEntities.get(0); |
720 | 566 |
// String tableName = entity.getEntityName(); |
721 | 567 |
|
722 |
this.tblRemoteChanges.setModel(new RemoteChangesTableModel(ws));
|
|
568 |
this.tblRemoteChanges.setModel(createEmptyTableModel());
|
|
723 | 569 |
|
724 | 570 |
Thread task = new Thread(() -> { |
725 | 571 |
try { |
... | ... | |
790 | 636 |
} |
791 | 637 |
|
792 | 638 |
private void doShowForm() { |
793 |
if (this.changes == null) { |
|
639 |
RemoteChangesTableModel model = (RemoteChangesTableModel)this.tblRemoteChanges.getModel(); |
|
640 |
int row = this.tblRemoteChanges.getSelectedRow(); |
|
641 |
OnlineRemoteChange change = model.getRow(row); |
|
642 |
if(change == null) { |
|
794 | 643 |
return; |
795 | 644 |
} |
796 |
int row = this.tblRemoteChanges.getSelectedRow(); |
|
797 |
OnlineRemoteChange change = this.changes.get64(row); |
|
798 | 645 |
if (change.getOperation() == OP_DELETE) { |
799 | 646 |
return; |
800 | 647 |
} |
... | ... | |
842 | 689 |
if (ws == null) { |
843 | 690 |
return; |
844 | 691 |
} |
845 |
if (this.changes != null) { |
|
846 |
this.changes.removeAllChangeListener(); |
|
847 |
} |
|
848 |
List<OnlineEntity> checkedEntities = context.getEntitySelector().getCheckedEntities(); |
|
849 |
if ( CollectionUtils.isEmpty(checkedEntities) ) { |
|
850 |
this.changes = null; |
|
851 |
this.tblRemoteChanges.setModel(new DefaultTableModel()); |
|
852 |
this.lblRemoteChangesCount.setText("0"); |
|
853 |
return; |
|
854 |
} |
|
855 | 692 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
856 |
message("Reloading list of remote changes..."); |
|
857 |
this.changes = ws.getRemoteChangesByEntity( |
|
858 |
checkedEntities.stream() |
|
859 |
.map((t) -> {return t.getEntityName();}) |
|
860 |
.toArray((n) -> { return new String[n];}) |
|
861 |
); |
|
862 |
this.changes.addChangeListener((ChangeEvent e) -> { |
|
863 |
context.doUpdateComponents(); |
|
864 |
}); |
|
865 |
RemoteChangesTableModel changesModel = new RemoteChangesTableModel(changes, ws); |
|
693 |
RemoteChangesTableModel changesModel = createTableModel(); |
|
866 | 694 |
this.tblRemoteChanges.setModel(changesModel); |
867 |
|
|
868 | 695 |
int columns = this.tblRemoteChanges.getColumnModel().getColumnCount(); |
869 | 696 |
for (int i = 1; i < columns; i++) { |
870 | 697 |
this.tblRemoteChanges.getColumnModel().getColumn(i).setCellRenderer(new DefaultTableCellRenderer() { |
871 | 698 |
@Override |
872 | 699 |
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { |
873 | 700 |
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); |
874 |
OnlineChange changeRow = changes.get64(row); |
|
875 |
OnlineSwingCommons.setColorCompoment(c, changeRow.getStatus()); |
|
701 |
OnlineRemoteChange changeRow = null; |
|
702 |
try { |
|
703 |
changeRow = changesModel.getRow(row); |
|
704 |
} catch (IndexOutOfBoundsException ex) { |
|
705 |
//Do nothing |
|
706 |
} |
|
707 |
if(changeRow != null){ |
|
708 |
OnlineSwingCommons.setColorCompoment(c, changeRow.getStatus()); |
|
709 |
} |
|
876 | 710 |
return c; |
877 | 711 |
} |
878 | 712 |
}); |
879 | 713 |
} |
880 | 714 |
|
881 | 715 |
context.doUpdateComponents(); |
716 |
doUpdateChangesCount(); |
|
882 | 717 |
context.message(i18n.getTranslation( |
883 | 718 |
"_Repository_changes_list_updated", |
884 |
new String[] { String.valueOf(changes.size64()) }
|
|
719 |
new String[] { String.valueOf(changesModel.getRowCount()) }
|
|
885 | 720 |
) |
886 | 721 |
); |
887 |
this.lblRemoteChangesCount.setText(String.valueOf(changes.size64())); |
|
888 | 722 |
} |
723 |
|
|
724 |
private void doUpdateChangesCount() { |
|
725 |
TableModel model = tblRemoteChanges.getModel(); |
|
726 |
int selectedCounts = tblRemoteChanges.getSelectedRowCount(); |
|
727 |
if(selectedCounts<1){ |
|
728 |
this.lblRemoteChangesCount.setText(String.valueOf(model.getRowCount())); |
|
729 |
} else if (selectedCounts < MAX_SELECTED_ROWS_TO_SHOW_GEOMETRIES) { |
|
730 |
this.lblRemoteChangesCount.setText("<html>"+getHTMLFontColorTag(java.awt.Color.GREEN.darker(),true, false, String.valueOf(selectedCounts))+"/"+model.getRowCount()+"</html>"); |
|
731 |
} else { |
|
732 |
this.lblRemoteChangesCount.setText(selectedCounts+"/"+model.getRowCount()); |
|
733 |
} |
|
734 |
|
|
735 |
} |
|
889 | 736 |
|
737 |
protected RemoteChangesTableModel createEmptyTableModel() { |
|
738 |
OnlineWorkingcopy ws = this.getUndisposableWorkspace(); |
|
739 |
if (ws == null) { |
|
740 |
return null; |
|
741 |
} |
|
742 |
RemoteChangesTableModel changesModel = new RemoteChangesTableModel(ws); |
|
743 |
return changesModel; |
|
744 |
} |
|
745 |
|
|
746 |
protected RemoteChangesTableModel createTableModel() { |
|
747 |
OnlineWorkingcopy ws = this.getUndisposableWorkspace(); |
|
748 |
if (ws == null) { |
|
749 |
return null; |
|
750 |
} |
|
751 |
List<OnlineEntity> checkedEntities = context.getEntitySelector().getCheckedEntities(); |
|
752 |
if ( CollectionUtils.isEmpty(checkedEntities) ) { |
|
753 |
return new RemoteChangesTableModel(ws); |
|
754 |
} |
|
755 |
|
|
756 |
message("Reloading list of remote changes..."); |
|
757 |
OnlineChanges<OnlineRemoteChange> theChanges = ws.getRemoteChangesByEntity( |
|
758 |
checkedEntities.stream() |
|
759 |
.map((t) -> {return t.getEntityName();}) |
|
760 |
.toArray((n) -> { return new String[n];}) |
|
761 |
); |
|
762 |
RemoteChangesTableModel changesModel = new RemoteChangesTableModel(theChanges, ws); |
|
763 |
changesModel.addTableModelListener(new TableModelListener() { |
|
764 |
@Override |
|
765 |
public void tableChanged(TableModelEvent e) { |
|
766 |
context.doUpdateComponents(); |
|
767 |
} |
|
768 |
}); |
|
769 |
return changesModel; |
|
770 |
} |
|
771 |
|
|
890 | 772 |
private List<OnlineEntity> getWorkspaceCheckedEntities() { |
891 | 773 |
OnlineWorkingcopy ws = this.getUndisposableWorkspace(); |
892 | 774 |
if (ws == null) { |
... | ... | |
940 | 822 |
} |
941 | 823 |
Thread task = new Thread(() -> { |
942 | 824 |
try { |
825 |
RemoteChangesTableModel model = (RemoteChangesTableModel) tblRemoteChanges.getModel(); |
|
943 | 826 |
context.processing = true; |
944 | 827 |
context.doUpdateComponents(); |
945 | 828 |
for (OnlineEntity checkedEntity : entitiesToCleanChanges) { |
946 | 829 |
message("Removing list of remote changes from selected tables" + checkedEntity.getEntityName() + "..."); |
947 |
ws.updateClean(checkedEntity.getEntityName()); |
|
830 |
// ws.removeRemoteChanges(checkedEntity.getEntityName()); |
|
831 |
model.removeRemoteChanges(checkedEntity.getEntityName()); |
|
948 | 832 |
} |
833 |
// doReloadChanges(); |
|
834 |
context.doReloadTables(); |
|
949 | 835 |
message("Ready."); |
950 | 836 |
} finally { |
951 | 837 |
context.processing = false; |
... | ... | |
972 | 858 |
private Geometry getRepositoryGeometryOfSelectedChange() { |
973 | 859 |
Geometry geom = null; |
974 | 860 |
try { |
975 |
if( this.tblRemoteChanges.getSelectedRowCount()>1 && this.tblRemoteChanges.getSelectedRowCount()<200 ) { |
|
861 |
RemoteChangesTableModel model = (RemoteChangesTableModel) tblRemoteChanges.getModel(); |
|
862 |
if( this.tblRemoteChanges.getSelectedRowCount()>1 && this.tblRemoteChanges.getSelectedRowCount()<MAX_SELECTED_ROWS_TO_SHOW_GEOMETRIES ) { |
|
976 | 863 |
for (int selectedRow : this.tblRemoteChanges.getSelectedRows()) { |
977 |
OnlineRemoteChange change = changes.get64(selectedRow);
|
|
864 |
OnlineRemoteChange change = model.getRow(selectedRow);
|
|
978 | 865 |
Geometry currentGeom = change.getGeometry(); |
979 | 866 |
if( currentGeom!=null ) { |
980 | 867 |
if( geom == null ) { |
... | ... | |
995 | 882 |
} else { |
996 | 883 |
int selected = this.tblRemoteChanges.getSelectedRow(); |
997 | 884 |
if(selected >= 0){ |
998 |
OnlineRemoteChange change = changes.get64(selected);
|
|
885 |
OnlineRemoteChange change = model.getRow(selected);
|
|
999 | 886 |
geom = change.getGeometry(); |
1000 | 887 |
} |
1001 | 888 |
} |
... | ... | |
1004 | 891 |
return geom; |
1005 | 892 |
} |
1006 | 893 |
} |
894 |
|
|
895 |
private Envelope getEnvelopeOfAllRepositoryChanges() { |
|
896 |
Envelope env = GeometryUtils.createEnvelope(Geometry.SUBTYPES.GEOM2D); |
|
897 |
try { |
|
898 |
RemoteChangesTableModel model = (RemoteChangesTableModel) tblRemoteChanges.getModel(); |
|
899 |
OnlineChanges<OnlineRemoteChange> changes = model.getChanges(); |
|
900 |
for (int i = 0; i < changes.size64(); i++) { |
|
901 |
OnlineRemoteChange change = changes.get64(i); |
|
902 |
Geometry currentGeom = change.getGeometry(); |
|
903 |
env.add(currentGeom); |
|
904 |
} |
|
905 |
return env; |
|
906 |
} catch (Exception ex) { |
|
907 |
return env; |
|
908 |
} |
|
909 |
} |
|
1007 | 910 |
|
1008 | 911 |
private Geometry getWorkspaceGeometryOfSelectedChange() { |
1009 | 912 |
Geometry geom = null; |
1010 | 913 |
try { |
1011 | 914 |
OnlineWorkingcopy ws = getUndisposableWorkspace(); |
1012 |
if( this.tblRemoteChanges.getSelectedRowCount()>1 && this.tblRemoteChanges.getSelectedRowCount()<200 ) { |
|
915 |
RemoteChangesTableModel model = (RemoteChangesTableModel) tblRemoteChanges.getModel(); |
|
916 |
if( this.tblRemoteChanges.getSelectedRowCount()>1 && this.tblRemoteChanges.getSelectedRowCount()<MAX_SELECTED_ROWS_TO_SHOW_GEOMETRIES ) { |
|
1013 | 917 |
for (int selectedRow : this.tblRemoteChanges.getSelectedRows()) { |
1014 |
OnlineRemoteChange change = changes.get64(selectedRow);
|
|
918 |
OnlineRemoteChange change = model.getRow(selectedRow);
|
|
1015 | 919 |
Feature f = ws.getRelatedFeature(change); |
1016 | 920 |
if(f!= null){ |
1017 | 921 |
Geometry currentGeom = f.getDefaultGeometry(); |
... | ... | |
1035 | 939 |
} else { |
1036 | 940 |
int selected = this.tblRemoteChanges.getSelectedRow(); |
1037 | 941 |
if(selected >= 0){ |
1038 |
OnlineRemoteChange change = changes.get64(selected);
|
|
942 |
OnlineRemoteChange change = model.getRow(selected);
|
|
1039 | 943 |
Feature f = ws.getRelatedFeature(change); |
1040 | 944 |
if(f!= null){ |
1041 | 945 |
geom = f.getDefaultGeometry(); |
... | ... | |
1051 | 955 |
private FeatureStore getWorkspaceStoreOfSelectedChange() { |
1052 | 956 |
FeatureStore store = null; |
1053 | 957 |
int selected = this.tblRemoteChanges.getSelectedRow(); |
958 |
RemoteChangesTableModel model = (RemoteChangesTableModel) tblRemoteChanges.getModel(); |
|
959 |
|
|
1054 | 960 |
if(selected >= 0){ |
1055 |
OnlineRemoteChange change = changes.get64(selected);
|
|
961 |
OnlineRemoteChange change = model.getRow(selected);
|
|
1056 | 962 |
|
1057 | 963 |
OnlineWorkingcopy ws = getUndisposableWorkspace(); |
1058 | 964 |
OnlineEntity entity = ws.getWorkspaceEntityByCode(change.getEntityCode()); |
... | ... | |
1060 | 966 |
} |
1061 | 967 |
return store; |
1062 | 968 |
} |
969 |
|
|
1063 | 970 |
|
1064 | 971 |
private void doZoomToSelectedChange() { |
1065 | 972 |
cleanHighligthed(); |
1066 | 973 |
OnlineSwingManager swingManager = OnlineSwingLocator.getOnlineSwingManager(); |
1067 | 974 |
OnlineSwingServices services = swingManager.getDefaultServices(); |
975 |
if(tblRemoteChanges.getSelectionModel().isSelectionEmpty()) { |
|
976 |
FeatureStore store = this.context.getWorkspaceStoreOfSelectedEntity(); |
|
977 |
if(store == null){ |
|
978 |
return; |
|
979 |
} |
|
980 |
Envelope env = getEnvelopeOfAllRepositoryChanges(); |
|
981 |
services.zoomViewsHavingAStoreToGeometry(store, env.getBox2D()); |
|
982 |
return; |
|
983 |
} |
|
1068 | 984 |
FeatureStore store = getWorkspaceStoreOfSelectedChange(); |
1069 | 985 |
Geometry repoGeom = getRepositoryGeometryOfSelectedChange(); |
1070 | 986 |
Geometry geom = getWorkspaceGeometryOfSelectedChange(); |
... | ... | |
1081 | 997 |
cleanHighligthed(); |
1082 | 998 |
OnlineSwingManager swingManager = OnlineSwingLocator.getOnlineSwingManager(); |
1083 | 999 |
OnlineSwingServices services = swingManager.getDefaultServices(); |
1000 |
if(tblRemoteChanges.getSelectionModel().isSelectionEmpty()) { |
|
1001 |
FeatureStore store = this.context.getWorkspaceStoreOfSelectedEntity(); |
|
1002 |
if(store == null){ |
|
1003 |
return; |
|
1004 |
} |
|
1005 |
Envelope env = getEnvelopeOfAllRepositoryChanges(); |
|
1006 |
services.centerViewsHavingAStoreToGeometry(store, env.getBox2D()); |
|
1007 |
return; |
|
1008 |
} |
|
1084 | 1009 |
FeatureStore store = getWorkspaceStoreOfSelectedChange(); |
1085 | 1010 |
Geometry repoGeom = getRepositoryGeometryOfSelectedChange(); |
1086 | 1011 |
Geometry geom = getWorkspaceGeometryOfSelectedChange(); |
... | ... | |
1115 | 1040 |
// DisposeUtils.disposeQuietly(entitySelector); |
1116 | 1041 |
} |
1117 | 1042 |
|
1118 |
// private void doCheckRecomendedEntities() { |
|
1119 |
// final OnlineWorkingcopy workspace = this.getUndisposableWorkspace(); |
|
1120 |
// if( workspace==null ) { |
|
1121 |
// return; |
|
1122 |
// } |
|
1123 |
// Set<String> updateEntities = new HashSet<>(); |
|
1124 |
// Collection<OnlineEntity> entities = this.entitySelector.getEntities(); |
|
1125 |
// for (OnlineEntity entity : entities) { |
|
1126 |
// if (workspace.existsInWorkspace(entity)) { |
|
1127 |
// OnlineEntity lentity = workspace.getWorkspaceEntityByCode(entity.getEntityCode()); |
|
1128 |
// switch (lentity.getState()) { |
|
1129 |
// case OnlineManager.STATE_LOCAL_MODIFIED: |
|
1130 |
// case OnlineManager.STATE_LOCAL_NEW: |
|
1131 |
// case OnlineManager.STATE_LOCAL_UNMODIFIED: |
|
1132 |
// case OnlineManager.STATE_REMOTE_NEW: |
|
1133 |
// default: |
|
1134 |
// break; |
|
1135 |
// case OnlineManager.STATE_CONFLICT: |
|
1136 |
// case OnlineManager.STATE_LOCAL_OUTDATED: |
|
1137 |
// case OnlineManager.STATE_LOCAL_OUTDATED_AND_MODIFIED: |
|
1138 |
// updateEntities.add(entity.getEntityCode()); |
|
1139 |
// break; |
|
1140 |
// } |
|
1141 |
// } |
|
1142 |
// } |
|
1143 |
// this.entitySelector.setCheck(updateEntities, true); |
|
1144 |
// } |
|
1145 |
|
|
1146 | 1043 |
} |
Also available in: Unified diff