提交 9b9aba34 编写于 作者: S serge-rider

#1676 GIS geometry editor support

上级 3d2359f0
...@@ -170,7 +170,9 @@ public abstract class BaseValueEditor<T extends Control> implements IValueEditor ...@@ -170,7 +170,9 @@ public abstract class BaseValueEditor<T extends Control> implements IValueEditor
valueController.updateSelectionValue(newValue); valueController.updateSelectionValue(newValue);
} }
} catch (DBException e) { } catch (DBException e) {
((IMultiController) valueController).closeInlineEditor(); if (valueController instanceof IMultiController) {
((IMultiController) valueController).closeInlineEditor();
}
DBUserInterface.getInstance().showError("Value save", "Can't save edited value", e); DBUserInterface.getInstance().showError("Value save", "Can't save edited value", e);
} }
} }
......
...@@ -63,6 +63,8 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler { ...@@ -63,6 +63,8 @@ public class GISGeometryValueHandler extends JDBCAbstractValueHandler {
return object; return object;
} else if (object instanceof byte[]) { } else if (object instanceof byte[]) {
return GeometryConverter.getInstance().from((byte[]) object); return GeometryConverter.getInstance().from((byte[]) object);
} else if (object instanceof String) {
return GeometryConverter.getInstance().from((String)object);
} else { } else {
throw new DBCException("Unsupported geometry value: " + object); throw new DBCException("Unsupported geometry value: " + object);
} }
......
...@@ -5,12 +5,7 @@ import com.vividsolutions.jts.geom.Geometry; ...@@ -5,12 +5,7 @@ import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.PrecisionModel; import com.vividsolutions.jts.geom.PrecisionModel;
import com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory; import com.vividsolutions.jts.geom.impl.CoordinateArraySequenceFactory;
import com.vividsolutions.jts.io.ByteOrderValues; import com.vividsolutions.jts.io.*;
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 java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
...@@ -71,6 +66,14 @@ public class GeometryConverter { ...@@ -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 * Convert Geometry object into byte array containing SRID + WKB Geometry
*/ */
......
...@@ -18,9 +18,13 @@ package org.jkiss.dbeaver.ui.data.managers; ...@@ -18,9 +18,13 @@ package org.jkiss.dbeaver.ui.data.managers;
import org.jkiss.code.NotNull; import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.data.IValueController;
import org.jkiss.dbeaver.ui.data.IValueEditor; 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 * Geometry value manager
...@@ -32,7 +36,7 @@ public class GeometryValueManager extends BaseValueManager { ...@@ -32,7 +36,7 @@ public class GeometryValueManager extends BaseValueManager {
@NotNull @NotNull
@Override @Override
public IValueController.EditType[] getSupportedEditTypes() { 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 @Override
...@@ -40,10 +44,11 @@ public class GeometryValueManager extends BaseValueManager { ...@@ -40,10 +44,11 @@ public class GeometryValueManager extends BaseValueManager {
throws DBException throws DBException
{ {
switch (controller.getEditType()) { switch (controller.getEditType()) {
case EDITOR: case INLINE:
return null;
case PANEL: case PANEL:
return null; return new StringInlineEditor(controller);
case EDITOR:
return new TextViewDialog(controller);
default: default:
return null; return null;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册