From 078eb939c19eea3e0a35e5066ed3ccbed92fbefd Mon Sep 17 00:00:00 2001 From: jurgen Date: Fri, 5 Jun 2015 11:42:41 +0000 Subject: [PATCH] Properties model refactoring Former-commit-id: 3dfa8ff3e701b89edb4c7e081c08b84e0cbd7286 --- .../ui/controls/itemlist/NodeListControl.java | 8 ++-- .../controls/itemlist/ObjectListControl.java | 14 +++---- .../resultset/ResultSetAdapterFactory.java | 4 +- .../ui/properties/PropertySourceAbstract.java | 13 +++--- .../model/plan/PostgrePlanNode.java | 35 +++++++++++++--- .../ext/wmi/model/WMIPropertySource.java | 41 +++++++++++++------ 6 files changed, 76 insertions(+), 39 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java index aade26bd85..070ebcccb9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/NodeListControl.java @@ -25,13 +25,13 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.IWorkbenchSite; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPObject; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.edit.DBECommandContext; import org.jkiss.dbeaver.model.edit.DBEObjectEditor; @@ -369,10 +369,10 @@ public abstract class NodeListControl extends ObjectListControl impleme } @Override - public IPropertyDescriptor[] getPropertyDescriptors() + public DBPPropertyDescriptor[] getPropertyDescriptors2() { - Set props = getAllProperties(); - return props.toArray(new IPropertyDescriptor[props.size()]); + Set props = getAllProperties(); + return props.toArray(new DBPPropertyDescriptor[props.size()]); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java index 98b447958e..2d623e9308 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/itemlist/ObjectListControl.java @@ -18,7 +18,6 @@ */ package org.jkiss.dbeaver.ui.controls.itemlist; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.IJobChangeEvent; @@ -30,9 +29,10 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; -import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.runtime.AbstractJob; @@ -673,9 +673,9 @@ public abstract class ObjectListControl extends ProgressPageControl return false; } - protected Set getAllProperties() + protected Set getAllProperties() { - Set props = new LinkedHashSet(); + Set props = new LinkedHashSet(); for (ObjectColumn column : columns) { props.addAll(column.propMap.values()); } @@ -818,10 +818,10 @@ public abstract class ObjectListControl extends ProgressPageControl } @Override - public IPropertyDescriptor[] getPropertyDescriptors() + public DBPPropertyDescriptor[] getPropertyDescriptors2() { - Set props = getAllProperties(); - return props.toArray(new IPropertyDescriptor[props.size()]); + Set props = getAllProperties(); + return props.toArray(new DBPPropertyDescriptor[props.size()]); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetAdapterFactory.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetAdapterFactory.java index 0ad75de4f2..e21d1a3b1a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetAdapterFactory.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetAdapterFactory.java @@ -19,14 +19,13 @@ package org.jkiss.dbeaver.ui.controls.resultset; import org.eclipse.core.runtime.IAdapterFactory; import org.eclipse.jface.dialogs.IPageChangeProvider; -import org.eclipse.ui.views.properties.IPropertySource; /** * ResultSetAdapterFactory */ public class ResultSetAdapterFactory implements IAdapterFactory { - private static final Class[] ADAPTER_LIST = { IPropertySource.class, ResultSetViewer.class }; + private static final Class[] ADAPTER_LIST = { ResultSetViewer.class }; @Override public Object getAdapter(Object adaptableObject, Class adapterType) @@ -40,7 +39,6 @@ public class ResultSetAdapterFactory implements IAdapterFactory if (adaptableObject instanceof IPageChangeProvider) { return getAdapter(((IPageChangeProvider) adaptableObject).getSelectedPage(), ResultSetViewer.class); } - } else if (adapterType == IPropertySource.class) { } return null; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java index 362d2bf488..d354a29509 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/PropertySourceAbstract.java @@ -22,7 +22,6 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.viewers.IFilter; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.views.properties.IPropertyDescriptor; -import org.eclipse.ui.views.properties.IPropertySource; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.DBPContextProvider; @@ -52,7 +51,7 @@ public abstract class PropertySourceAbstract implements DBPPropertySource, IProp private Object sourceObject; private Object object; private boolean loadLazyProps; - private final List props = new ArrayList(); + private final List props = new ArrayList(); private final Map propValues = new HashMap(); private final Map lazyValues = new HashMap(); private final List lazyProps = new ArrayList(); @@ -69,7 +68,7 @@ public abstract class PropertySourceAbstract implements DBPPropertySource, IProp this.loadLazyProps = loadLazyProps; } - public PropertySourceAbstract addProperty(IPropertyDescriptor prop) + public PropertySourceAbstract addProperty(DBPPropertyDescriptor prop) { if (prop instanceof ObjectPropertyDescriptor && ((ObjectPropertyDescriptor) prop).isHidden()) { // Do not add it to property list @@ -311,11 +310,11 @@ public abstract class PropertySourceAbstract implements DBPPropertySource, IProp for (final ObjectPropertyDescriptor desc : annoProps) { addProperty(desc); } - if (editableValue instanceof IPropertySource) { - IPropertySource ownPropSource = (IPropertySource) editableValue; - IPropertyDescriptor[] ownProperties = ownPropSource.getPropertyDescriptors(); + if (editableValue instanceof DBPPropertySource) { + DBPPropertySource ownPropSource = (DBPPropertySource) editableValue; + DBPPropertyDescriptor[] ownProperties = ownPropSource.getPropertyDescriptors2(); if (!ArrayUtils.isEmpty(ownProperties)) { - for (IPropertyDescriptor prop : ownProperties) { + for (DBPPropertyDescriptor prop : ownProperties) { props.add(prop); propValues.put(prop.getId(), ownPropSource.getPropertyValue(prop.getId())); } diff --git a/plugins/org.jkiss.dbeaver.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/plan/PostgrePlanNode.java b/plugins/org.jkiss.dbeaver.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/plan/PostgrePlanNode.java index 6289a02d55..aed3374b2c 100644 --- a/plugins/org.jkiss.dbeaver.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/plan/PostgrePlanNode.java +++ b/plugins/org.jkiss.dbeaver.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/plan/PostgrePlanNode.java @@ -17,8 +17,8 @@ */ package org.jkiss.dbeaver.ext.postgresql.model.plan; -import org.eclipse.ui.views.properties.IPropertyDescriptor; -import org.eclipse.ui.views.properties.IPropertySource; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; +import org.jkiss.dbeaver.model.DBPPropertySource; import org.jkiss.dbeaver.model.exec.plan.DBCPlanNode; import org.jkiss.dbeaver.model.meta.Property; import org.jkiss.dbeaver.ui.properties.PropertyDescriptorEx; @@ -27,12 +27,15 @@ import org.jkiss.utils.xml.XMLUtils; import org.w3c.dom.Element; import org.w3c.dom.Node; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; /** * MySQL execution plan node */ -public class PostgrePlanNode implements DBCPlanNode, IPropertySource { +public class PostgrePlanNode implements DBCPlanNode, DBPPropertySource { public static final String ATTR_NODE_TYPE = "Node-Type"; public static final String ATTR_RELATION_NAME = "Relation-Name"; @@ -115,8 +118,8 @@ public class PostgrePlanNode implements DBCPlanNode, IPropertySource { } @Override - public IPropertyDescriptor[] getPropertyDescriptors() { - IPropertyDescriptor[] props = new IPropertyDescriptor[attributes.size()]; + public DBPPropertyDescriptor[] getPropertyDescriptors2() { + DBPPropertyDescriptor[] props = new DBPPropertyDescriptor[attributes.size()]; int index = 0; for (Map.Entry attr : attributes.entrySet()) { props[index++] = new PropertyDescriptorEx("Source", attr.getKey(), attr.getKey(), null, String.class, false, null, null, false); @@ -134,16 +137,36 @@ public class PostgrePlanNode implements DBCPlanNode, IPropertySource { return false;//attributes.containsKey(id.toString()); } + @Override + public boolean isPropertyResettable(Object id) { + return false; + } + @Override public void resetPropertyValue(Object id) { } + @Override + public void resetPropertyValueToDefault(Object id) { + + } + @Override public void setPropertyValue(Object id, Object value) { } + @Override + public boolean isDirty(Object id) { + return false; + } + + @Override + public boolean hasDefaultValue(Object id) { + return false; + } + @Override public String toString() { StringBuilder title = new StringBuilder(); diff --git a/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/model/WMIPropertySource.java b/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/model/WMIPropertySource.java index 39031cca1f..064dbc1f95 100644 --- a/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/model/WMIPropertySource.java +++ b/plugins/org.jkiss.dbeaver.wmi/src/org/jkiss/dbeaver/ext/wmi/model/WMIPropertySource.java @@ -17,12 +17,11 @@ */ package org.jkiss.dbeaver.ext.wmi.model; -import org.jkiss.dbeaver.core.Log; -import org.eclipse.ui.views.properties.IPropertyDescriptor; -import org.eclipse.ui.views.properties.IPropertySource; -import org.eclipse.ui.views.properties.PropertyDescriptor; import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.ui.properties.DefaultPropertyLabelProvider; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPropertyDescriptor; +import org.jkiss.dbeaver.model.DBPPropertySource; +import org.jkiss.dbeaver.ui.properties.PropertyDescriptorEx; import org.jkiss.wmi.service.WMIException; import org.jkiss.wmi.service.WMIQualifiedObject; import org.jkiss.wmi.service.WMIQualifier; @@ -32,10 +31,10 @@ import java.util.Collection; /** * Property source based on WMI qualifiers */ -public abstract class WMIPropertySource implements IPropertySource +public abstract class WMIPropertySource implements DBPPropertySource { static final Log log = Log.getLog(WMIPropertySource.class); - private static final IPropertyDescriptor[] EMPTY_PROPERTIES = new IPropertyDescriptor[0]; + private static final DBPPropertyDescriptor[] EMPTY_PROPERTIES = new DBPPropertyDescriptor[0]; protected abstract WMIQualifiedObject getQualifiedObject(); @@ -57,7 +56,7 @@ public abstract class WMIPropertySource implements IPropertySource } @Override - public IPropertyDescriptor[] getPropertyDescriptors() + public DBPPropertyDescriptor[] getPropertyDescriptors2() { try { WMIQualifiedObject qualifiedObject = getQualifiedObject(); @@ -65,13 +64,11 @@ public abstract class WMIPropertySource implements IPropertySource return EMPTY_PROPERTIES; } Collection qualifiers = qualifiedObject.getQualifiers(); - IPropertyDescriptor[] result = new IPropertyDescriptor[qualifiers.size()]; + DBPPropertyDescriptor[] result = new DBPPropertyDescriptor[qualifiers.size()]; int index = 0; for (WMIQualifier qualifier : qualifiers) { String name = qualifier.getName(); - PropertyDescriptor prop = new PropertyDescriptor(name, name); - prop.setLabelProvider(DefaultPropertyLabelProvider.INSTANCE); - prop.setCategory("WMI"); + PropertyDescriptorEx prop = new PropertyDescriptorEx("WMI", name, name, null, null, false, null, null, false); result[index++] = prop; } return result; @@ -115,4 +112,24 @@ public abstract class WMIPropertySource implements IPropertySource } + @Override + public boolean isPropertyResettable(Object id) { + return false; + } + + @Override + public void resetPropertyValueToDefault(Object id) { + + } + + @Override + public boolean isDirty(Object id) { + return false; + } + + @Override + public boolean hasDefaultValue(Object id) { + return false; + } + } -- GitLab