提交 931f7cd0 编写于 作者: S Serge Rider

dbeaver/dbeaver-ee#954 Merge entities support check

上级 a9e5dd3d
......@@ -134,7 +134,10 @@ public class ConnectionViewSettingsContributor extends DataSourceMenuContributor
if (!isChecked()) {
return;
}
EditConnectionNavigatorSettingsDialog dialog = new EditConnectionNavigatorSettingsDialog(UIUtils.getActiveWorkbenchShell(), dsContainer.getNavigatorSettings());
EditConnectionNavigatorSettingsDialog dialog = new EditConnectionNavigatorSettingsDialog(
UIUtils.getActiveWorkbenchShell(),
dsContainer.getNavigatorSettings(),
dsContainer);
if (dialog.open() == IDialogConstants.OK_ID) {
updateSettings(dialog.getNavigatorSettings());
}
......
......@@ -26,6 +26,7 @@ import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPDataSourceFolder;
......@@ -328,7 +329,7 @@ public class ConnectionPageGeneral extends ConnectionWizardPage implements Navig
}
{
navigatorSettingsCombo = createNavigatorSettingsCombo(miscGroup, this);
navigatorSettingsCombo = createNavigatorSettingsCombo(miscGroup, this, dataSourceDescriptor);
}
folderSelector = new ConnectionFolderSelector(miscGroup);
......@@ -448,7 +449,7 @@ public class ConnectionPageGeneral extends ConnectionWizardPage implements Navig
UIUtils.setHelp(group, IHelpContextIds.CTX_CON_WIZARD_FINAL);
}
public static Combo createNavigatorSettingsCombo(Composite composite, NavigatorSettingsStorage settingsStorage) {
public static Combo createNavigatorSettingsCombo(Composite composite, NavigatorSettingsStorage settingsStorage, DBPDataSourceContainer dataSourceDescriptor) {
UIUtils.createControlLabel(composite, CoreMessages.dialog_connection_wizard_final_label_navigator_settings);
Composite ctGroup = UIUtils.createComposite(composite, 2);
......@@ -478,7 +479,8 @@ public class ConnectionPageGeneral extends ConnectionWizardPage implements Navig
UIUtils.createDialogButton(ctGroup, CoreMessages.dialog_connection_wizard_final_label_navigator_settings_customize, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
settingsStorage.setNavigatorSettings(editNavigatorSettings(navigatorSettingsCombo, settingsStorage.getNavigatorSettings()));
settingsStorage.setNavigatorSettings(
editNavigatorSettings(navigatorSettingsCombo, settingsStorage.getNavigatorSettings(), dataSourceDescriptor));
}
});
return navigatorSettingsCombo;
......@@ -499,8 +501,14 @@ public class ConnectionPageGeneral extends ConnectionWizardPage implements Navig
return connectionTypeCombo;
}
private static DBNBrowseSettings editNavigatorSettings(Combo navigatorSettingsCombo, DBNBrowseSettings navigatorSettings) {
EditConnectionNavigatorSettingsDialog dialog = new EditConnectionNavigatorSettingsDialog(navigatorSettingsCombo.getShell(), navigatorSettings);
private static DBNBrowseSettings editNavigatorSettings(
@NotNull Combo navigatorSettingsCombo,
@NotNull DBNBrowseSettings navigatorSettings,
@Nullable DBPDataSourceContainer dataSourceDescriptor) {
EditConnectionNavigatorSettingsDialog dialog = new EditConnectionNavigatorSettingsDialog(
navigatorSettingsCombo.getShell(),
navigatorSettings,
dataSourceDescriptor);
if (dialog.open() == IDialogConstants.OK_ID) {
navigatorSettings = dialog.getNavigatorSettings();
updateNavigatorSettingsPreset(navigatorSettingsCombo, navigatorSettings);
......
......@@ -21,14 +21,19 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
import org.jkiss.dbeaver.registry.DataSourceNavigatorSettings;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.BaseDialog;
public class EditConnectionNavigatorSettingsDialog extends BaseDialog {
private DataSourceNavigatorSettings navigatorSettings;
private final DataSourceNavigatorSettings navigatorSettings;
@Nullable
private final DBPDataSourceContainer dataSourceDescriptor;
private Button showSystemObjects;
private Button showUtilityObjects;
......@@ -36,9 +41,13 @@ public class EditConnectionNavigatorSettingsDialog extends BaseDialog {
private Button mergeEntities;
private Button hideFolders;
public EditConnectionNavigatorSettingsDialog(Shell shell, DBNBrowseSettings navigatorSettings) {
public EditConnectionNavigatorSettingsDialog(
@NotNull Shell shell,
@NotNull DBNBrowseSettings navigatorSettings,
@Nullable DBPDataSourceContainer dataSourceDescriptor) {
super(shell, CoreMessages.dialog_connection_wizard_final_group_navigator, null);
this.navigatorSettings = new DataSourceNavigatorSettings(navigatorSettings);
this.dataSourceDescriptor = dataSourceDescriptor;
}
@Override
......@@ -80,6 +89,11 @@ public class EditConnectionNavigatorSettingsDialog extends BaseDialog {
navigatorSettings.isMergeEntities(),
1);
if (dataSourceDescriptor != null) {
mergeEntities.setEnabled(
dataSourceDescriptor.getDriver().getProviderDescriptor().getTreeDescriptor().supportsEntityMerge());
}
hideFolders = UIUtils.createCheckbox(
miscGroup,
CoreMessages.dialog_connection_wizard_final_checkbox_hide_folders,
......
......@@ -51,7 +51,7 @@ public class PrefPageConnectionsGeneral extends AbstractPrefPage implements IWor
defaultConnectionType = connectionTypeCombo.getSelectedItem();
}
});
navigatorSettingsCombo = ConnectionPageGeneral.createNavigatorSettingsCombo(groupDefaults, this);
navigatorSettingsCombo = ConnectionPageGeneral.createNavigatorSettingsCombo(groupDefaults, this, null);
}
{
......
......@@ -28,7 +28,7 @@
label="Generic"
icon="#database_icon_default"
dialect="generic">
<tree path="generic" label="Generic data source">
<tree path="generic" label="Generic data source" supportsEntityMerge="true">
<items label="#catalog" path="catalog" property="catalogList" icon="#database" optional="true">
<items label="#schema" path="schema" property="schemaList" icon="#schema" optional="true">
<folder type="org.jkiss.dbeaver.ext.generic.model.GenericTable" label="%tree.tables.node.name" icon="#folder_table" description="%tree.tables.node.tip">
......
......@@ -19,7 +19,7 @@ package org.jkiss.dbeaver.model.connection;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.DBPNamedObject;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode;
import org.jkiss.dbeaver.model.navigator.meta.DBXTreeDescriptor;
import org.jkiss.dbeaver.model.sql.SQLDialectMetadata;
import java.util.List;
......@@ -41,7 +41,7 @@ public interface DBPDataSourceProviderDescriptor extends DBPNamedObject {
String getPluginId();
DBXTreeNode getTreeDescriptor();
DBXTreeDescriptor getTreeDescriptor();
@NotNull
SQLDialectMetadata getScriptDialect();
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2021 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.model.navigator.meta;
import org.eclipse.core.runtime.IConfigurationElement;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.impl.AbstractDescriptor;
import org.jkiss.utils.CommonUtils;
/**
* DBXTreeDescriptor
*/
public class DBXTreeDescriptor extends DBXTreeItem {
private final boolean supportsEntityMerge;
public DBXTreeDescriptor(AbstractDescriptor source, DBXTreeNode parent, IConfigurationElement config, String path, String propertyName, boolean optional, boolean navigable, boolean inline, boolean virtual, boolean standalone, String visibleIf, String recursiveLink) {
super(source, parent, config, path, propertyName, optional, navigable, inline, virtual, standalone, visibleIf, recursiveLink);
this.supportsEntityMerge = config != null && CommonUtils.toBoolean(config.getAttribute("supportsEntityMerge"));
}
public DBXTreeDescriptor(@NotNull AbstractDescriptor source, @NotNull DBXTreeDescriptor item) {
super(source, null, item);
this.supportsEntityMerge = item.supportsEntityMerge;
}
public boolean supportsEntityMerge() {
return supportsEntityMerge;
}
}
......@@ -64,7 +64,7 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor implements
private final boolean temporary;
private DBPImage icon;
private DBPDataSourceProvider instance;
private DBXTreeItem treeDescriptor;
private DBXTreeDescriptor treeDescriptor;
private final Map<String, DBXTreeNode> treeNodeMap = new HashMap<>();
private boolean driversManagable;
private final List<DBPPropertyDescriptor> driverProperties = new ArrayList<>();
......@@ -113,7 +113,7 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor implements
this.treeDescriptor = this.loadTreeInfo(trees[0]);
} else if (parentProvider != null) {
// Use parent's tree
this.treeDescriptor = new DBXTreeItem(this, null, parentProvider.treeDescriptor);
this.treeDescriptor = new DBXTreeDescriptor(this, parentProvider.treeDescriptor);
}
// Load tree injections
......@@ -190,7 +190,7 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor implements
this.description = "Missing datasource provider " + id;
this.implType = new ObjectType(MissingDataSourceProvider.class.getName());
this.temporary = true;
this.treeDescriptor = new DBXTreeItem(this, null, null, id, id, false, true, false, false, true, null, null);
this.treeDescriptor = new DBXTreeDescriptor(this, null, null, id, id, false, true, false, false, true, null, null);
this.scriptDialect = SQLDialectRegistry.getInstance().getDialect(BasicSQLDialect.ID);
}
......@@ -264,7 +264,7 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor implements
}
@Override
public DBXTreeNode getTreeDescriptor()
public DBXTreeDescriptor getTreeDescriptor()
{
return treeDescriptor;
}
......@@ -378,9 +378,9 @@ public class DataSourceProviderDescriptor extends AbstractDescriptor implements
{
}
private DBXTreeItem loadTreeInfo(IConfigurationElement config)
private DBXTreeDescriptor loadTreeInfo(IConfigurationElement config)
{
DBXTreeItem treeRoot = new DBXTreeItem(
DBXTreeDescriptor treeRoot = new DBXTreeDescriptor(
this,
null,
config,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册