提交 a4e98239 编写于 作者: N Nikita Akilov

#10573 track changes to current tile layer and select it after editing is complete

上级 cf6d40d4
......@@ -29,7 +29,6 @@ import org.jkiss.dbeaver.ui.gis.internal.GISMessages;
import org.jkiss.dbeaver.ui.gis.registry.GeometryViewerRegistry;
import org.jkiss.dbeaver.ui.gis.registry.LeafletTilesDescriptor;
import java.util.Objects;
import java.util.stream.Stream;
class SelectTilesAction extends Action {
......@@ -73,15 +72,9 @@ class SelectTilesAction extends Action {
menuManager.add(new Action(GISMessages.panel_select_tiles_action_manage_tiles_action) {
@Override
public void run() {
LeafletTilesDescriptor descriptor = GeometryViewerRegistry.getInstance().getDefaultLeafletTiles();
int result = new TilesManagementDialog(valueEditor.getEditorControl().getShell()).open();
if (result == IDialogConstants.OK_ID && valueEditor instanceof GISLeafletViewer) {
GISLeafletViewer leaflet = (GISLeafletViewer) valueEditor;
leaflet.updateToolbar();
LeafletTilesDescriptor newDescriptor = GeometryViewerRegistry.getInstance().getDefaultLeafletTiles();
if (!Objects.equals(descriptor, newDescriptor)) {
valueEditor.refresh();
}
if (result == IDialogConstants.OK_ID) {
valueEditor.refresh();
}
}
});
......
......@@ -41,6 +41,10 @@ class TilesManagementDialog extends BaseDialog {
private final List<LeafletTilesDescriptor> predefinedTiles;
private final List<LeafletTilesDescriptor> userDefinedTiles;
@Nullable
private final LeafletTilesDescriptor oldSelectedTileLayer;
@Nullable
private LeafletTilesDescriptor currentSelectedTileLayer;
private Tree tree;
@Nullable
private TreeItem predefinedTilesRootItem;
......@@ -54,6 +58,8 @@ class TilesManagementDialog extends BaseDialog {
super(parentShell, GISMessages.panel_select_tiles_action_manage_dialog_title, null);
predefinedTiles = new ArrayList<>(GeometryViewerRegistry.getInstance().getPredefinedLeafletTiles());
userDefinedTiles = new ArrayList<>(GeometryViewerRegistry.getInstance().getUserDefinedLeafletTiles());
oldSelectedTileLayer = GeometryViewerRegistry.getInstance().getDefaultLeafletTiles();
currentSelectedTileLayer = oldSelectedTileLayer;
}
@Override
......@@ -131,6 +137,9 @@ class TilesManagementDialog extends BaseDialog {
}
replace(userDefinedTiles, originalDescriptor, editedDescriptor);
repopulateTree(editedDescriptor, true);
if (originalDescriptor.equals(currentSelectedTileLayer)) {
currentSelectedTileLayer = editedDescriptor;
}
}
});
viewOrEditTilesItem.setEnabled(false);
......@@ -165,6 +174,9 @@ class TilesManagementDialog extends BaseDialog {
} else {
repopulateTree(null, true);
}
if (descriptor.equals(currentSelectedTileLayer)) {
currentSelectedTileLayer = null;
}
}
});
deleteTilesItem.setEnabled(false);
......@@ -326,6 +338,9 @@ class TilesManagementDialog extends BaseDialog {
protected void buttonPressed(int buttonId) {
if (buttonId == IDialogConstants.OK_ID) {
GeometryViewerRegistry.getInstance().updateTiles(predefinedTiles, userDefinedTiles);
if (!Objects.equals(oldSelectedTileLayer, currentSelectedTileLayer)) {
GeometryViewerRegistry.getInstance().setDefaultLeafletTiles(currentSelectedTileLayer);
}
}
super.buttonPressed(buttonId);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册