提交 8fd59b1d 编写于 作者: S Serge Rider

#6474 Virtual unique key edit enhancement

上级 143686e4
......@@ -403,6 +403,9 @@ public class EditForeignKeyPage extends BaseObjectEditPage {
if (page.edit()) {
constraint.setAttributes(page.getSelectedAttributes());
handleRefTableSelect(DBWorkbench.getPlatform().getNavigatorModel().getNodeByObject(curRefTable));
int constraintIndex = curConstraints.indexOf(constraint);
uniqueKeyCombo.select(constraintIndex);
handleUniqueKeySelect();
}
}
......@@ -676,15 +679,7 @@ public class EditForeignKeyPage extends BaseObjectEditPage {
curConstraint = curConstraints.get(0);
}
if (enableCustomKeys) {
if (curConstraint == null) {
customUKButton.setEnabled(true);
customUKButton.setText("Create");
} else if (curConstraint instanceof DBVEntityConstraint) {
customUKButton.setEnabled(true);
customUKButton.setText("Edit");
} else {
customUKButton.setEnabled(false);
}
enableCurConstraintEdit();
}
} catch (InvocationTargetException e) {
......@@ -696,6 +691,23 @@ public class EditForeignKeyPage extends BaseObjectEditPage {
updatePageState();
}
private void enableCurConstraintEdit() {
if (curConstraint instanceof DBVEntityConstraint) {
customUKButton.setEnabled(true);
customUKButton.setText("Edit");
} else {
boolean hasLogicalConstraint = false;
for (DBSEntityConstraint constraint : curConstraints) {
if (constraint instanceof DBVEntityConstraint) {
hasLogicalConstraint = true;
break;
}
}
customUKButton.setText("Create");
customUKButton.setEnabled(!hasLogicalConstraint);
}
}
private boolean isConstraintIndex(DBRProgressMonitor monitor, List<DBSEntityConstraint> constraints, DBSTableIndex index) throws DBException {
List<? extends DBSTableIndexColumn> iAttrs = index.getAttributeReferences(monitor);
......@@ -719,6 +731,9 @@ public class EditForeignKeyPage extends BaseObjectEditPage {
if ((curConstraints.isEmpty() || ukSelectionIndex < 0) && !enableCustomKeys) {
return;
}
if (ukSelectionIndex >= 0) {
curConstraint = curConstraints.get(ukSelectionIndex);
}
DBSEntity curEntity = foreignKey.getParentObject();
DBRProgressMonitor monitor = new VoidProgressMonitor();
try {
......@@ -776,6 +791,9 @@ public class EditForeignKeyPage extends BaseObjectEditPage {
EditorsMessages.dialog_struct_edit_fk_error_load_constraint_columns_title,
EditorsMessages.dialog_struct_edit_fk_error_load_constraint_columns_message, e);
}
if (enableCustomKeys) {
enableCurConstraintEdit();
}
UIUtils.packColumns(columnsTable, true);
}
......
......@@ -138,16 +138,14 @@ class EditVirtualEntityDialog extends BaseDialog {
}
private void createUniqueKeysPage(TabFolder tabFolder) {
DBDRowIdentifier virtualEntityIdentifier = viewer.getVirtualEntityIdentifier();
if (virtualEntityIdentifier == null) {
uniqueConstraint = vEntity.getBestIdentifier();
if (uniqueConstraint == null) {
return;
}
TabItem ukItem = new TabItem(tabFolder, SWT.NONE);
ukItem.setText("Virtual Unique Key");
ukItem.setData(InitPage.UNIQUE_KEY);
uniqueConstraint = (DBVEntityConstraint) virtualEntityIdentifier.getUniqueKey();
editUniqueKeyPage = new EditConstraintPage(
"Define unique identifier",
uniqueConstraint);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册