提交 67613f98 编写于 作者: J jurgen

Use unified editor dialog for numbers and complex types

Former-commit-id: fae642c4
上级 1deca142
......@@ -37,6 +37,7 @@ import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.ui.dialogs.data.ComplexObjectEditor;
import org.jkiss.dbeaver.ui.dialogs.data.DefaultValueViewDialog;
import org.jkiss.dbeaver.ui.properties.PropertySourceAbstract;
import java.sql.Array;
......@@ -81,7 +82,7 @@ public class JDBCArrayValueHandler extends JDBCAbstractValueHandler {
@Override
public int getFeatures()
{
return FEATURE_NONE;
return FEATURE_VIEWER | FEATURE_EDITOR;
}
@Override
......@@ -145,8 +146,9 @@ public class JDBCArrayValueHandler extends JDBCAbstractValueHandler {
public DBDValueEditor createEditor(DBDValueController controller)
throws DBException
{
if (controller.getEditType() == DBDValueController.EditType.PANEL) {
return new ValueEditor<Tree>(controller) {
switch (controller.getEditType()) {
case PANEL:
return new ValueEditor<Tree>(controller) {
ComplexObjectEditor editor;
@Override
public void refreshValue()
......@@ -168,8 +170,11 @@ public class JDBCArrayValueHandler extends JDBCAbstractValueHandler {
return editor.getInput();
}
};
case EDITOR:
return new DefaultValueViewDialog(controller);
default:
return null;
}
return null;
}
}
\ No newline at end of file
......@@ -34,7 +34,7 @@ import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.ui.dialogs.data.NumberViewDialog;
import org.jkiss.dbeaver.ui.dialogs.data.DefaultValueViewDialog;
import java.sql.SQLException;
......@@ -159,7 +159,7 @@ public class JDBCBooleanValueHandler extends JDBCAbstractValueHandler {
};
}
case EDITOR:
return new NumberViewDialog(controller);
return new DefaultValueViewDialog(controller);
default:
return null;
}
......
......@@ -38,14 +38,13 @@ import org.jkiss.dbeaver.model.impl.data.DefaultDataFormatter;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.data.NumberViewDialog;
import org.jkiss.dbeaver.ui.dialogs.data.DefaultValueViewDialog;
import org.jkiss.dbeaver.ui.properties.PropertySourceAbstract;
import org.jkiss.utils.CommonUtils;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.SQLException;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;
import java.util.Locale;
......@@ -271,7 +270,7 @@ public class JDBCNumberValueHandler extends JDBCAbstractValueHandler {
};
}
case EDITOR:
return new NumberViewDialog(controller);
return new DefaultValueViewDialog(controller);
default:
return null;
}
......
......@@ -40,6 +40,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSDataType;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.ui.dialogs.data.ComplexObjectEditor;
import org.jkiss.dbeaver.ui.dialogs.data.DefaultValueViewDialog;
import org.jkiss.dbeaver.ui.properties.PropertySourceAbstract;
import java.sql.SQLException;
......@@ -69,7 +70,7 @@ public class JDBCStructValueHandler extends JDBCAbstractValueHandler {
@Override
public synchronized String getValueDisplayString(DBSTypedObject column, Object value)
{
JDBCStruct struct = (JDBCStruct)value;
JDBCStruct struct = (JDBCStruct) value;
return struct == null || struct.isNull() ? DBConstants.NULL_VALUE_LABEL : struct.getStringRepresentation();
}
......@@ -161,10 +162,9 @@ public class JDBCStructValueHandler extends JDBCAbstractValueHandler {
propertySource.addProperty(
"sql_type", //$NON-NLS-1$
CoreMessages.model_jdbc_type_name,
((JDBCStruct)value).getTypeName());
((JDBCStruct) value).getTypeName());
}
}
catch (Exception e) {
} catch (Exception e) {
log.warn("Could not extract struct value information", e); //$NON-NLS-1$
}
}
......@@ -173,31 +173,36 @@ public class JDBCStructValueHandler extends JDBCAbstractValueHandler {
public DBDValueEditor createEditor(final DBDValueController controller)
throws DBException
{
if (controller.getEditType() == DBDValueController.EditType.PANEL) {
return new ValueEditor<Tree>(controller) {
ComplexObjectEditor editor;
@Override
public void refreshValue()
{
editor.setModel((DBDStructure) controller.getValue());
}
@Override
protected Tree createControl(Composite editPlaceholder)
{
editor = new ComplexObjectEditor(controller.getEditPlaceholder(), SWT.BORDER);
editor.setModel((DBDStructure) controller.getValue());
return editor.getTree();
}
@Override
public Object extractValue(DBRProgressMonitor monitor)
{
return editor.getInput();
}
};
switch (controller.getEditType()) {
case PANEL:
return new ValueEditor<Tree>(controller) {
ComplexObjectEditor editor;
@Override
public void refreshValue()
{
editor.setModel((DBDStructure) controller.getValue());
}
@Override
protected Tree createControl(Composite editPlaceholder)
{
editor = new ComplexObjectEditor(controller.getEditPlaceholder(), SWT.BORDER);
editor.setModel((DBDStructure) controller.getValue());
return editor.getTree();
}
@Override
public Object extractValue(DBRProgressMonitor monitor)
{
return editor.getInput();
}
};
case EDITOR:
return new DefaultValueViewDialog(controller);
default:
return null;
}
return null;
}
}
\ No newline at end of file
......@@ -31,13 +31,14 @@ import org.jkiss.dbeaver.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.ui.UIUtils;
/**
* TextViewDialog
* Default value view dialog.
* Uses panel editor inside of value viewer.
*/
public class NumberViewDialog extends ValueViewDialog {
public class DefaultValueViewDialog extends ValueViewDialog {
private DBDValueEditor panelEditor;
public NumberViewDialog(DBDValueController valueController) {
public DefaultValueViewDialog(DBDValueController valueController) {
super(valueController);
}
......
/*
* Copyright (C) 2010-2012 Serge Rieder
* serge@jkiss.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.jkiss.dbeaver.ext.mysql.data;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.jkiss.dbeaver.ext.mysql.MySQLConstants;
import org.jkiss.dbeaver.model.data.DBDValueController;
import org.jkiss.dbeaver.ui.dialogs.data.ValueViewDialog;
import org.jkiss.utils.CommonUtils;
/**
* Enum editor dialog
*/
public class EnumViewDialog extends ValueViewDialog {
private org.eclipse.swt.widgets.List enumEdit;
protected EnumViewDialog(DBDValueController valueController)
{
super(valueController);
}
@Override
protected Control createDialogArea(Composite parent)
{
Composite dialogGroup = (Composite)super.createDialogArea(parent);
MySQLTypeEnum value = (MySQLTypeEnum) getValueController().getValue();
boolean isForeignKey = super.isForeignKey();
Label label = new Label(dialogGroup, SWT.NONE);
label.setText("Value: ");
int style = SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL;
if (value.getColumn().getTypeName().equalsIgnoreCase(MySQLConstants.TYPE_NAME_SET)) {
style = style | SWT.MULTI;
}
enumEdit = new List(dialogGroup, style);
MySQLSetValueHandler.fillSetList(enumEdit, value);
enumEdit.setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_WHITE));
GridData gd = new GridData(isForeignKey ? GridData.FILL_HORIZONTAL : GridData.FILL_BOTH);
gd.widthHint = 300;
if (!isForeignKey) {
gd.heightHint = 200;
gd.grabExcessVerticalSpace = true;
}
enumEdit.setLayoutData(gd);
enumEdit.setFocus();
enumEdit.setEnabled(!getValueController().isReadOnly());
return dialogGroup;
}
@Override
protected Object getEditorValue()
{
MySQLTypeEnum value = (MySQLTypeEnum) getValueController().getValue();
String[] selection = enumEdit.getSelection();
StringBuilder resultString = new StringBuilder();
for (String selString : selection) {
if (CommonUtils.isEmpty(selString)) {
continue;
}
if (resultString.length() > 0) resultString.append(',');
resultString.append(selString);
}
return new MySQLTypeEnum(value.getColumn(), resultString.toString());
}
@Override
public void refreshValue()
{
MySQLSetValueHandler.fillSetList(enumEdit, (MySQLTypeEnum) getValueController().getValue());
}
}
......@@ -38,6 +38,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSEntityAttribute;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.model.struct.rdb.DBSTableColumn;
import org.jkiss.dbeaver.ui.dialogs.data.DefaultValueViewDialog;
import org.jkiss.utils.CommonUtils;
import java.sql.SQLException;
......@@ -203,7 +204,7 @@ public class MySQLEnumValueHandler extends JDBCAbstractValueHandler {
protected List createControl(Composite editPlaceholder)
{
final MySQLTableColumn column = ((MySQLTypeEnum) controller.getValue()).getColumn();
final List editor = new List(controller.getEditPlaceholder(), SWT.READ_ONLY);
final List editor = new List(controller.getEditPlaceholder(), SWT.BORDER | SWT.READ_ONLY | SWT.V_SCROLL);
Collection<String> enumValues = column.getEnumValues();
if (enumValues != null) {
for (String enumValue : enumValues) {
......@@ -225,7 +226,7 @@ public class MySQLEnumValueHandler extends JDBCAbstractValueHandler {
};
}
case EDITOR:
return new EnumViewDialog(controller);
return new DefaultValueViewDialog(controller);
default:
return null;
}
......
......@@ -25,6 +25,7 @@ import org.jkiss.dbeaver.ext.mysql.model.MySQLTableColumn;
import org.jkiss.dbeaver.model.data.DBDValueController;
import org.jkiss.dbeaver.model.data.DBDValueEditor;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.ui.dialogs.data.DefaultValueViewDialog;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
......@@ -76,7 +77,7 @@ public class MySQLSetValueHandler extends MySQLEnumValueHandler {
}
};
case EDITOR:
return new EnumViewDialog(controller);
return new DefaultValueViewDialog(controller);
default:
return null;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册