diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListDialogActionAdapter.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListDialogActionAdapter.java index 947cb6e75..635076b59 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListDialogActionAdapter.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionListDialogActionAdapter.java @@ -37,6 +37,9 @@ public class ConnectionListDialogActionAdapter extends DialogActionAdapter { return; } try { + // 校验数据库类型 + connectionManagerPane.validateDatabaseType(connectionConfig); + connectionManagerPane.update(connectionConfig); } catch (Exception e) { connectionListDialog.setDoOKSucceed(false); diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java index 33925dcd3..0c1d88022 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionManagerPane.java @@ -1,9 +1,14 @@ package com.fr.design.data.datapane.connect; +import com.fr.data.impl.Connection; import com.fr.design.gui.frpane.LoadingBasicPane; +import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.file.ConnectionConfig; - +import com.fr.general.NameObject; +import com.fr.license.database.DatabaseTypeValidateUtil; +import com.fr.license.exception.DataBaseNotSupportedException; +import com.fr.stable.Nameable; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -61,4 +66,23 @@ public class ConnectionManagerPane extends LoadingBasicPane implements Connectio return connectionListPane.isNamePermitted(); } + /** + * 校验是否支持当前选中连接的数据库类型 + */ + public void validateDatabaseType(ConnectionConfig connectionConfig) { + ListModelElement selectedValue = this.connectionListPane.getSelectedValue(); + if (selectedValue != null) { + Nameable wrapper = selectedValue.wrapper; + try { + Connection connection = (Connection) ((NameObject) wrapper).getObject(); + DatabaseTypeValidateUtil.validateDatabaseType(connection.getDriver(), connection.feature()); + } catch (DataBaseNotSupportedException e) { + // 仅抛出数据库类型不支持异常 + throw e; + } catch (Exception e) { + // ignore + } + } + } + } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java index 24ca54277..e9917d2c2 100644 --- a/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java +++ b/designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellDSColumnEditor.java @@ -162,6 +162,7 @@ public class CellDSColumnEditor extends CellQuickEditor { // 由于多选的时候修改了 cellDSColumnBasicPane 中组件的visiable属性,切换时需要将其设置为false cellDSColumnBasicPane.setVisible(false); + cellDSColumnAdvancedPane.setVisible(false); card.show(cardContainer, paneList.get(index).title4PopupWindow()); paneList.get(index).populate(); @@ -1065,6 +1066,10 @@ public class CellDSColumnEditor extends CellQuickEditor { public void refreshMultipleDetails() { tabsHeaderIconPane.setVisible(tc.isSelectedOneCell()); + // 需要结合AdvancedPane的原始visible状态设置单选多选visible + boolean advancedPaneVisible = cellDSColumnAdvancedPane.isVisible(); + cellDSColumnAdvancedPane.setVisible(advancedPaneVisible && tc.isSelectedOneCell()); + cellDSColumnBasicPane.setMultipleVisible(tc.isSelectedOneCell()); }