提交 464a9267 编写于 作者: S serge-rider

RSV fixes (editors with disconnected datasource)

上级 72665428
......@@ -234,7 +234,7 @@ public class ViewValuePanel implements IResultSetPanel {
valueManager = previewController.getValueManager();
try {
valueEditor = valueManager.createEditor(previewController);
} catch (DBException e) {
} catch (Throwable e) {
UIUtils.showErrorDialog(viewPlaceholder.getShell(), "Value preview", "Can't create value viewer", e);
return;
}
......@@ -288,7 +288,15 @@ public class ViewValuePanel implements IResultSetPanel {
// Do not check for difference
valueEditor.primeEditorValue(newValue);
} else {
Object oldValue = valueEditor.extractEditorValue();
Object oldValue = null;
try {
if (previewController.getExecutionContext() != null) {
oldValue = valueEditor.extractEditorValue();
}
} catch (Throwable e) {
// Some error extracting current value
// This may happen if we were disconnected
}
if (!CommonUtils.equalObjects(oldValue, newValue)) {
valueEditor.primeEditorValue(newValue);
}
......
......@@ -227,7 +227,11 @@ public class ContentPanelEditor extends BaseValueEditor<Control> {
} else {
valueId = valueController.getValueName();
}
return valueController.getExecutionContext().getDataSource().getContainer().getId() + ":" + valueId;
String dsId = "unknown";
if (valueController.getExecutionContext() != null) {
dsId = valueController.getExecutionContext().getDataSource().getContainer().getId();
}
return dsId + ":" + valueId;
}
public static void setEditorSettings(Control control) {
......
......@@ -27,6 +27,7 @@ import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.data.DBDDataFormatter;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.registry.formatter.DataFormatterRegistry;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.data.IValueController;
import org.jkiss.utils.CommonUtils;
......@@ -46,7 +47,11 @@ public class NumberInlineEditor extends BaseValueEditor<Text> {
public NumberInlineEditor(IValueController controller) {
super(controller);
this.formatterProfile = valueController.getExecutionContext().getDataSource().getContainer().getDataFormatterProfile();
if (valueController.getExecutionContext() != null) {
this.formatterProfile = valueController.getExecutionContext().getDataSource().getContainer().getDataFormatterProfile();
} else {
this.formatterProfile = DataFormatterRegistry.getInstance().getGlobalProfile();
}
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册