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

#1676 GIS geometry editor support

上级 3d2359f0
......@@ -170,7 +170,9 @@ public abstract class BaseValueEditor<T extends Control> 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);
}
}
......
......@@ -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);
}
......
......@@ -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
*/
......
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册