diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/BaseValueEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/BaseValueEditor.java index da5895118bc6f24bd3ed21be667ad09319f1d94c..64642c810b6af3e6a4bb44f3c0093b9079df455e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/BaseValueEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/BaseValueEditor.java @@ -170,7 +170,9 @@ public abstract class BaseValueEditor implements IValueEditor valueController.updateSelectionValue(newValue); } } catch (DBException e) { - ((IMultiController) valueController).closeInlineEditor(); + if (valueController instanceof IMultiController) { + ((IMultiController) valueController).closeInlineEditor(); + } DBUserInterface.getInstance().showError("Value save", "Can't save edited value", e); } } diff --git a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java index 02bfc10e277aeb82c190375dc335b146a0baaf98..63734ce470ad2a9945c230320b93f54d60731b85 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java +++ b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GISGeometryValueHandler.java @@ -63,6 +63,8 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler { return object; } else if (object instanceof byte[]) { return GeometryConverter.getInstance().from((byte[]) object); + } else if (object instanceof String) { + return GeometryConverter.getInstance().from((String)object); } else { throw new DBCException("Unsupported geometry value: " + object); } diff --git a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java index 852145b7a2e72c9fee85b489b4c124eced38eb44..bc0b1f4c4c3180fd03e1e751ff2d4acee54d5b52 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java +++ b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/data/gis/handlers/GeometryConverter.java @@ -5,12 +5,7 @@ import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.PrecisionModel; import com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory; -import com.vividsolutions.jts.io.ByteOrderValues; -import com.vividsolutions.jts.io.InputStreamInStream; -import com.vividsolutions.jts.io.OutputStreamOutStream; -import com.vividsolutions.jts.io.ParseException; -import com.vividsolutions.jts.io.WKBReader; -import com.vividsolutions.jts.io.WKBWriter; +import com.vividsolutions.jts.io.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -71,6 +66,14 @@ public class GeometryConverter { } } + public Geometry from(String str) { + try { + return new WKTReader().read(str); + } catch (ParseException e) { + throw new IllegalArgumentException(e); + } + } + /** * Convert Geometry object into byte array containing SRID + WKB Geometry */ diff --git a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/ui/data/managers/GeometryValueManager.java b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/ui/data/managers/GeometryValueManager.java index 4cd3c981e274caab8b4777342145bc5c61dbe24d..2b70ea085825d84c20aa4ae446ff4ac127261836 100644 --- a/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/ui/data/managers/GeometryValueManager.java +++ b/plugins/org.jkiss.dbeaver.data.gis/src/org/jkiss/dbeaver/ui/data/managers/GeometryValueManager.java @@ -18,9 +18,13 @@ package org.jkiss.dbeaver.ui.data.managers; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.data.IValueEditor; +import org.jkiss.dbeaver.ui.data.editors.StringInlineEditor; +import org.jkiss.dbeaver.ui.dialogs.data.TextViewDialog; +import org.jkiss.dbeaver.ui.editors.content.ContentEditor; /** * Geometry value manager @@ -32,7 +36,7 @@ public class GeometryValueManager extends BaseValueManager { @NotNull @Override public IValueController.EditType[] getSupportedEditTypes() { - return new IValueController.EditType[] {IValueController.EditType.PANEL, IValueController.EditType.EDITOR}; + return new IValueController.EditType[] {IValueController.EditType.INLINE, IValueController.EditType.PANEL, IValueController.EditType.EDITOR}; } @Override @@ -40,10 +44,11 @@ public class GeometryValueManager extends BaseValueManager { throws DBException { switch (controller.getEditType()) { - case EDITOR: - return null; + case INLINE: case PANEL: - return null; + return new StringInlineEditor(controller); + case EDITOR: + return new TextViewDialog(controller); default: return null; }