提交 29967149 编写于 作者: E Evgeny Fradkin

#3149 Presets in the generator combo

上级 43efce07
......@@ -24,7 +24,6 @@ import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.app.DBPRegistryDescriptor;
import org.jkiss.dbeaver.model.impl.AbstractDescriptor;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor;
import org.jkiss.dbeaver.registry.RegistryConstants;
import java.lang.reflect.Field;
......@@ -40,7 +39,7 @@ public abstract class DataTypeAbstractDescriptor<DESCRIPTOR> extends AbstractDes
public static final String ALL_TYPES_PATTERN = "*";
private final Class<DESCRIPTOR> instanceType;
private final String id;
protected String id;
private ObjectType implType;
private Set<Object> supportedTypes = new HashSet<>();
private List<String> supportedDataSources = new ArrayList<>();
......
......@@ -66,7 +66,6 @@ public class MockDataWizardPageSettings extends ActiveWizardPage<MockDataExecute
private DBSAttributeBase selectedAttribute;
private boolean firstInit = true;
private Combo generatorCombo;
private Combo presetCombo;
private Label generatorDescriptionLabel;
private Link generatorDescriptionLink;
private Font boldFont;
......@@ -180,17 +179,7 @@ public class MockDataWizardPageSettings extends ActiveWizardPage<MockDataExecute
if (attributeGeneratorProperties != null && !attributeGeneratorProperties.isEmpty()) {
String selectedGeneratorId = attributeGeneratorProperties.getSelectedGeneratorId();
String label = mockDataSettings.getGeneratorDescriptor(selectedGeneratorId).getLabel();
String presetId = attributeGeneratorProperties.getPresetId();
if (presetId != null) {
List<MockGeneratorDescriptor.Preset> presets = mockDataSettings.getGeneratorDescriptor(selectedGeneratorId).getPresets();
for (MockGeneratorDescriptor.Preset preset : presets) {
if (presetId.equals(preset.getId())) {
label += " [" + preset.getMnemonics() + "]";
break;
}
}
}
cell.setText(label);
cell.setText(label.trim());
}
}
}
......@@ -307,18 +296,6 @@ public class MockDataWizardPageSettings extends ActiveWizardPage<MockDataExecute
gd.horizontalIndent = 5;
generatorDescriptionLink.setLayoutData(gd);
presetCombo = new Combo(labelCombo, SWT.READ_ONLY | SWT.DROP_DOWN);
gd = new GridData();
gd.horizontalIndent = 5;
presetCombo.setLayoutData(gd);
presetCombo.setVisible(false);
presetCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
selectPreset(presetCombo.getText());
}
});
Button resetButton = new Button(labelCombo, SWT.PUSH);
resetButton.setText("Reset");
resetButton.addSelectionListener(new SelectionAdapter() {
......@@ -328,11 +305,6 @@ public class MockDataWizardPageSettings extends ActiveWizardPage<MockDataExecute
propertySource.resetPropertyValueToDefault(key);
}
propsEditor.loadProperties(propertySource);
mockDataSettings.getAttributeGeneratorProperties(selectedAttribute).setPresetId(null);
if (presetCombo.getItemCount() > 0) {
presetCombo.select(0);
}
columnsTableViewer.refresh(true, true);
}
});
......@@ -517,7 +489,6 @@ public class MockDataWizardPageSettings extends ActiveWizardPage<MockDataExecute
}
// generator combo & description
presetCombo.setVisible(false);
List<String> generators = new ArrayList<>();
for (String genId : attributeGeneratorProperties.getGenerators()) {
generators.add(mockDataSettings.getGeneratorDescriptor(genId).getLabel());
......@@ -534,24 +505,6 @@ public class MockDataWizardPageSettings extends ActiveWizardPage<MockDataExecute
generatorLinkUrl = generatorDescriptor.getUrl();
generatorDescriptionLink.setVisible(true);
}
// presets
List<MockGeneratorDescriptor.Preset> presets = generatorDescriptor.getPresets();
if (!presets.isEmpty()) {
presetCombo.removeAll();
presetCombo.add("Select preset...");
int presetIndex = 0, i = 1;
String presetId = attributeGeneratorProperties.getPresetId();
for (MockGeneratorDescriptor.Preset preset : presets) {
presetCombo.add(preset.getLabel());
if (presetId != null && preset.getId().equals(presetId)) {
presetIndex = i;
}
i++;
}
presetCombo.select(presetIndex);
presetCombo.setVisible(true);
}
} else {
generatorCombo.setItems(new String[] {"Not found"});
generatorCombo.setText("Not found");
......
......@@ -24,6 +24,7 @@ import org.jkiss.dbeaver.model.impl.PropertyDescriptor;
import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
import org.jkiss.dbeaver.registry.RegistryConstants;
import org.jkiss.dbeaver.registry.datatype.DataTypeAbstractDescriptor;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -37,8 +38,8 @@ public class MockGeneratorDescriptor extends DataTypeAbstractDescriptor<MockValu
public static final String TAG_PRESET = "preset"; //NON-NLS-1
private final String label;
private final String description;
private String label;
private String description;
private final String link;
private final String url;
private final DBPImage icon;
......@@ -63,11 +64,35 @@ public class MockGeneratorDescriptor extends DataTypeAbstractDescriptor<MockValu
preset.getAttribute("id"),
preset.getAttribute("label"),
preset.getAttribute("mnemonics"),
preset.getAttribute("description"),
PropertyDescriptor.extractProperties(preset)
));
}
}
public MockGeneratorDescriptor(IConfigurationElement config, Preset preset) {
this(config);
this.id += "_" + preset.id;
this.label = " " + preset.label;
if (!CommonUtils.isEmpty(preset.description)) {
this.description = preset.description;
}
for (DBPPropertyDescriptor prop : preset.getProperties()) {
setDefaultProperty(prop.getId(), prop.getDefaultValue());
}
this.presets.clear();
}
private void setDefaultProperty(Object id, Object defaultValue) {
for (DBPPropertyDescriptor property : properties) {
if (property.getId().equals(id)) {
((PropertyDescriptor) property).setDefaultValue(defaultValue); break;
}
}
}
public String getLabel() {
return label;
}
......@@ -114,12 +139,14 @@ public class MockGeneratorDescriptor extends DataTypeAbstractDescriptor<MockValu
private final String id;
private final String label;
private final String mnemonics;
private final String description;
private final List<DBPPropertyDescriptor> properties;
public Preset(String id, String label, String mnemonics, List<DBPPropertyDescriptor> properties) {
public Preset(String id, String label, String mnemonics, String description, List<DBPPropertyDescriptor> properties) {
this.id = id;
this.label = label;
this.mnemonics = mnemonics;
this.description = description;
this.properties = properties;
}
......@@ -135,6 +162,10 @@ public class MockGeneratorDescriptor extends DataTypeAbstractDescriptor<MockValu
return mnemonics;
}
public String getDescription() {
return description;
}
public List<DBPPropertyDescriptor> getProperties() {
return properties;
}
......
......@@ -22,14 +22,11 @@ import org.eclipse.core.runtime.Platform;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.dbeaver.registry.driver.DriverDescriptor;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MockGeneratorRegistry
{
......@@ -62,6 +59,12 @@ public class MockGeneratorRegistry
if (TAG_GENERATOR.equals(ext.getName())) {
MockGeneratorDescriptor generatorDescriptor = new MockGeneratorDescriptor(ext);
this.generators.add(generatorDescriptor);
if (!CommonUtils.isEmpty(generatorDescriptor.getPresets())) {
for (MockGeneratorDescriptor.Preset preset : generatorDescriptor.getPresets()) {
this.generators.add(new MockGeneratorDescriptor(ext, preset));
}
}
}
}
}
......
......@@ -191,6 +191,10 @@ public class PropertyDescriptor implements DBPPropertyDescriptor, IPropertyValue
return defaultValue;
}
public void setDefaultValue(Object defaultValue) {
this.defaultValue = defaultValue;
}
@Override
public boolean isEditable(Object object)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册