Compare commits

...

1 Commits

Author SHA1 Message Date
Chao MENG
a4cf0424dc tacokit refresh issue 2019-06-14 21:19:51 +08:00
36 changed files with 504 additions and 176 deletions

View File

@@ -284,8 +284,9 @@ public class ComponentModel extends AbstractBasicComponent implements IAdditiona
*/
@Override // TODO This is dummy implementation. Correct impl should be added soon
public List<? extends IElementParameter> createElementParameters(final INode node) {
aslkdf
ElementParameterCreator creator =
new ElementParameterCreator(this, detail, node, reportPath, isCatcherAvailable);
new ElementParameterCreator(this, detail, node, reportPath, isCatcherAvailable, null);
List<IElementParameter> parameters = (List<IElementParameter>) creator.createParameters();
return parameters;
}

View File

@@ -41,6 +41,7 @@ import org.talend.sdk.component.studio.service.ComponentService;
import org.talend.sdk.component.studio.service.Configuration;
import org.talend.sdk.component.studio.service.UiActionsThreadPool;
import org.talend.sdk.component.studio.ui.composite.TaCoKitComposite;
import org.talend.sdk.component.studio.ui.composite.problemmanager.ComponentViewProblemManager;
import org.talend.sdk.component.studio.util.TaCoKitConst;
import org.talend.sdk.component.studio.websocket.WebSocketClient;
@@ -212,7 +213,8 @@ public final class Lookups {
private Composite creatComposite(final Composite parent, final Element element, final EComponentCategory category,
final boolean isCompactView) {
return new TaCoKitComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.NO_FOCUS, category, element, isCompactView);
return new TaCoKitComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.NO_FOCUS, category, element, isCompactView,
new ComponentViewProblemManager());
}
}

View File

@@ -34,6 +34,7 @@ import org.talend.repository.model.RepositoryNode;
import org.talend.sdk.component.server.front.model.ConfigTypeNode;
import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel;
import org.talend.sdk.component.studio.metadata.node.ITaCoKitRepositoryNode;
import org.talend.sdk.component.studio.ui.composite.problemmanager.WizardProblemManager;
import org.talend.sdk.component.studio.ui.wizard.TaCoKitConfigurationRuntimeData;
import org.talend.sdk.component.studio.ui.wizard.TaCoKitCreateWizard;
@@ -101,6 +102,7 @@ public class CreateTaCoKitConfigurationAction extends TaCoKitMetadataContextualA
runtimeData.setCreation(true);
runtimeData.setReadonly(false);
runtimeData.setConnectionItem(createConnectionItem());
runtimeData.setProblemManager(new WizardProblemManager());
return runtimeData;
}

View File

@@ -40,6 +40,7 @@ import org.talend.sdk.component.studio.metadata.migration.TaCoKitMigrationManage
import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationItemModel;
import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel;
import org.talend.sdk.component.studio.metadata.node.ITaCoKitRepositoryNode;
import org.talend.sdk.component.studio.ui.composite.problemmanager.WizardProblemManager;
import org.talend.sdk.component.studio.ui.wizard.TaCoKitConfigurationRuntimeData;
import org.talend.sdk.component.studio.ui.wizard.TaCoKitEditWizard;
@@ -162,6 +163,7 @@ public class EditTaCoKitConfigurationAction extends TaCoKitMetadataContextualAct
runtimeData.setConnectionItem((ConnectionItem) repositoryNode.getObject().getProperty().getItem());
runtimeData.setCreation(false);
runtimeData.setReadonly(isReadonly());
runtimeData.setProblemManager(new WizardProblemManager());
return runtimeData;
}

View File

@@ -48,7 +48,7 @@ public class UpdateResolver extends AbstractParameterResolver {
actionOwner.getProperty().getUpdatable().orElseThrow(IllegalStateException::new).getActionName(),
Action.Type.UPDATE));
this.button = new ButtonParameter(element) {
this.button = new ButtonParameter(element, actionOwner.getProblemManager()) {
@Override
public boolean isShow(final List<? extends IElementParameter> listParam) {
return isShown.getAsBoolean();

View File

@@ -18,6 +18,7 @@ package org.talend.sdk.component.studio.model.parameter;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.IElement;
import org.talend.sdk.component.studio.model.parameter.command.TacokitCommand;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* ElementParameter which represents button and stores button command, which is executed on button pushed
@@ -26,8 +27,8 @@ public class ButtonParameter extends TaCoKitElementParameter {
private TacokitCommand command;
public ButtonParameter(final IElement element) {
super(element);
public ButtonParameter(final IElement element, final IProblemManager problemManager) {
super(element, problemManager);
setFieldType(EParameterFieldType.TACOKIT_BUTTON);
}
@@ -41,17 +42,21 @@ public class ButtonParameter extends TaCoKitElementParameter {
@Override
public boolean equals(final Object o) {
if (o == this)
if (o == this) {
return true;
if (!(o instanceof ButtonParameter))
}
if (!(o instanceof ButtonParameter)) {
return false;
}
final ButtonParameter other = (ButtonParameter) o;
if (!other.canEqual(this))
if (!other.canEqual(this)) {
return false;
}
final Object this$command = this.getCommand();
final Object other$command = other.getCommand();
if (this$command == null ? other$command != null : !this$command.equals(other$command))
if (this$command == null ? other$command != null : !this$command.equals(other$command)) {
return false;
}
return true;
}

View File

@@ -16,6 +16,7 @@
package org.talend.sdk.component.studio.model.parameter;
import org.talend.core.model.process.IElement;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Represents Check parameter. Check parameter is ElementParameter, which EParameterFieldType is CHECK.
@@ -24,8 +25,8 @@ import org.talend.core.model.process.IElement;
*/
public class CheckElementParameter extends TaCoKitElementParameter {
public CheckElementParameter(final IElement element) {
super(element);
public CheckElementParameter(final IElement element, final IProblemManager problemManager) {
super(element, problemManager);
}
/**

View File

@@ -18,6 +18,7 @@ package org.talend.sdk.component.studio.model.parameter;
import org.talend.core.model.process.IElement;
import org.talend.sdk.component.studio.Lookups;
import org.talend.sdk.component.studio.debounce.DebouncedAction;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Fires parameter change events only if {@code TIMEOUT} passed from last value changed event
@@ -28,8 +29,8 @@ public class DebouncedParameter extends TaCoKitElementParameter {
private final DebouncedAction debounced = Lookups.debouncer().createAction();
public DebouncedParameter(final IElement element) {
super(element);
public DebouncedParameter(final IElement element, final IProblemManager problemManager) {
super(element, problemManager);
}
@Override

View File

@@ -44,6 +44,7 @@ import org.talend.sdk.component.server.front.model.ConfigTypeNodes;
import org.talend.sdk.component.studio.ComponentModel;
import org.talend.sdk.component.studio.Lookups;
import org.talend.sdk.component.studio.model.connector.ConnectorCreatorFactory;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
import org.talend.sdk.component.studio.util.TaCoKitUtil;
import org.talend.sdk.studio.process.TaCoKitNode;
@@ -76,8 +77,10 @@ public class ElementParameterCreator {
*/
private ElementParameter updateComponentsParameter;
private IProblemManager problemManager;
public ElementParameterCreator(final ComponentModel component, final ComponentDetail detail, final INode node,
final String reportPath, final boolean isCatcherAvailable) {
final String reportPath, final boolean isCatcherAvailable, final IProblemManager problemManager) {
this.component = component;
this.detail = detail;
this.node = node;
@@ -88,6 +91,7 @@ public class ElementParameterCreator {
} else {
this.properties = emptyList();
}
this.problemManager = problemManager;
}
public List<? extends IElementParameter> createParameters() {
@@ -101,7 +105,8 @@ public class ElementParameterCreator {
*/
private void addSettings() {
if (!properties.isEmpty()) {
final PropertyNode root = new PropertyTreeCreator(new WidgetTypeMapper()).createPropertyTree(properties);
final PropertyNode root = new PropertyTreeCreator(new WidgetTypeMapper(), problemManager)
.createPropertyTree(properties);
final SettingVisitor settingVisitor = new SettingVisitor(node, updateComponentsParameter, detail);
root.accept(settingVisitor.withCategory(BASIC), Metadatas.MAIN_FORM);
root.accept(settingVisitor.withCategory(ADVANCED), Metadatas.ADVANCED_FORM);
@@ -111,7 +116,9 @@ public class ElementParameterCreator {
// create config type version param
properties.stream().filter(p -> p.getConfigurationType() != null && p.getConfigurationTypeName() != null)
.forEach(p -> parameters.add(new VersionParameter(node, p.getPath(),
String.valueOf(getConfigTypeVersion(p, component.getConfigTypeNodes(), component.getId().getFamilyId())))));
String.valueOf(
getConfigTypeVersion(p, component.getConfigTypeNodes(), component.getId().getFamilyId())),
problemManager)));
}
checkSchemaProperties(new SettingVisitor(node, updateComponentsParameter, detail).withCategory(BASIC));
@@ -198,7 +205,7 @@ public class ElementParameterCreator {
parameters.add(mainSettingsCreator.createSchemaParameter(connectorWithoutSchema.getName(),
"SCHEMA_" + connectorWithoutSchema.getName(),
"default",
showSchema(connectorWithoutSchema)));
showSchema(connectorWithoutSchema), problemManager));
}
}

View File

@@ -21,6 +21,7 @@ import org.talend.core.model.process.IConnection;
import org.talend.core.model.process.IElement;
import org.talend.core.model.utils.NodeUtil;
import org.talend.designer.core.ui.editor.nodes.Node;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* SchemaElementParameter for Component input schema.
@@ -32,12 +33,14 @@ public class InputSchemaParameter extends SchemaElementParameter {
/**
* Constructor
*
* @param element IElement to which this parameter belongs
* @param name parameter name - unique identifier
* @param element IElement to which this parameter belongs
* @param name parameter name - unique identifier
* @param connectionName a name of connections with which this schema associated
* @param IProblemManager manage parameter problems
*/
public InputSchemaParameter(final IElement element, final String name, final String connectionName) {
super(element);
public InputSchemaParameter(final IElement element, final String name, final String connectionName,
final IProblemManager problemManager) {
super(element, problemManager);
setName(name);
setDisplayName(DISPLAY_NAME);
setFieldType(EParameterFieldType.TACOKIT_INPUT_SCHEMA);

View File

@@ -23,6 +23,7 @@ import java.util.List;
import java.util.stream.Collectors;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Property node, which contains nested properties. This node is used for Tables and Schema
@@ -37,8 +38,8 @@ public class ListPropertyNode extends PropertyNode {
* @param root specifies whether this node is root node
*/
public ListPropertyNode(final PropertyDefinitionDecorator property, final EParameterFieldType fieldType,
final boolean root) {
super(property, fieldType, root);
final boolean root, IProblemManager problemManager) {
super(property, fieldType, root, problemManager);
}
/**

View File

@@ -26,8 +26,7 @@ import org.talend.designer.core.model.components.EParameterName;
import org.talend.designer.core.model.components.ElementParameter;
import org.talend.designer.core.ui.editor.nodes.Node;
import org.talend.sdk.component.studio.i18n.Messages;
import org.talend.sdk.component.studio.util.TaCoKitConst;
import org.talend.sdk.component.studio.util.TaCoKitUtil;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* SchemaElementParameter for Component output schema.
@@ -38,8 +37,8 @@ public class OutputSchemaParameter extends SchemaElementParameter {
public static final String ADDITIONAL_PARAM_METADATA_ELEMENT = "TACOKIT_ADDITIONAL_PARAM_METADATA_ELEMENT";
public OutputSchemaParameter(final IElement element, final String name, final String connectionName,
final String discoverSchema, final boolean show) {
super(element);
final String discoverSchema, final boolean show, final IProblemManager problemManager) {
super(element, problemManager);
setName(name);
setDisplayName(DISPLAY_NAME);
@@ -95,7 +94,7 @@ public class OutputSchemaParameter extends SchemaElementParameter {
private void createGuessSchema(final String name, final String connectionName, final String discoverSchemaAction,
final boolean show) {
if (canAddGuessSchema(connectionName)) {
final TaCoKitElementParameter guessSchemaParameter = new TaCoKitElementParameter(getElement());
final TaCoKitElementParameter guessSchemaParameter = new TaCoKitElementParameter(getElement(), getProblemManager());
guessSchemaParameter.setCategory(EComponentCategory.BASIC);
guessSchemaParameter.setContext(connectionName);
guessSchemaParameter.updateValueOnly(discoverSchemaAction);
@@ -153,6 +152,7 @@ public class OutputSchemaParameter extends SchemaElementParameter {
*
* @return metedata
*/
@Override
protected Optional<IMetadataTable> getMetadata() {
IElement elem = getElement();
if (elem == null || !(elem instanceof Node)) {

View File

@@ -32,6 +32,7 @@ import javax.json.bind.annotation.JsonbCreator;
import javax.json.bind.annotation.JsonbProperty;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
public class PropertyNode {
@@ -56,12 +57,14 @@ public class PropertyNode {
*/
private final boolean root;
public PropertyNode(final PropertyDefinitionDecorator property,
final EParameterFieldType fieldType,
final boolean root) {
private IProblemManager problemManager;
public PropertyNode(final PropertyDefinitionDecorator property, final EParameterFieldType fieldType, final boolean root,
IProblemManager problemManager) {
this.property = property;
this.fieldType = fieldType;
this.root = root;
this.problemManager = problemManager;
this.children = new ArrayList<>();
}
@@ -444,37 +447,54 @@ public class PropertyNode {
return this.root;
}
public IProblemManager getProblemManager() {
return problemManager;
}
public void setProblemManager(IProblemManager problemManager) {
this.problemManager = problemManager;
}
@Override
public boolean equals(final Object o) {
if (o == this)
if (o == this) {
return true;
if (!(o instanceof PropertyNode))
}
if (!(o instanceof PropertyNode)) {
return false;
}
final PropertyNode other = (PropertyNode) o;
if (!other.canEqual(this))
if (!other.canEqual(this)) {
return false;
}
final Object this$parent = this.getParent();
final Object other$parent = other.getParent();
if (this$parent == null ? other$parent != null : !this$parent.equals(other$parent))
if (this$parent == null ? other$parent != null : !this$parent.equals(other$parent)) {
return false;
}
final Object this$children = this.getChildren();
final Object other$children = other.getChildren();
if (this$children == null ? other$children != null : !this$children.equals(other$children))
if (this$children == null ? other$children != null : !this$children.equals(other$children)) {
return false;
}
final Object this$layouts = this.getLayouts();
final Object other$layouts = other.getLayouts();
if (this$layouts == null ? other$layouts != null : !this$layouts.equals(other$layouts))
if (this$layouts == null ? other$layouts != null : !this$layouts.equals(other$layouts)) {
return false;
}
final Object this$property = this.getProperty();
final Object other$property = other.getProperty();
if (this$property == null ? other$property != null : !this$property.equals(other$property))
if (this$property == null ? other$property != null : !this$property.equals(other$property)) {
return false;
}
final Object this$fieldType = this.getFieldType();
final Object other$fieldType = other.getFieldType();
if (this$fieldType == null ? other$fieldType != null : !this$fieldType.equals(other$fieldType))
if (this$fieldType == null ? other$fieldType != null : !this$fieldType.equals(other$fieldType)) {
return false;
if (this.isRoot() != other.isRoot())
}
if (this.isRoot() != other.isRoot()) {
return false;
}
return true;
}

View File

@@ -28,6 +28,7 @@ import java.util.stream.Collectors;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.sdk.component.server.front.model.ConfigTypeNode;
import org.talend.sdk.component.server.front.model.SimplePropertyDefinition;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Provides methods for handling {@link PropertyNode} tree
@@ -39,8 +40,11 @@ public class PropertyTreeCreator {
*/
private final WidgetTypeMapper typeMapper;
public PropertyTreeCreator(final WidgetTypeMapper typeMapper) {
private final IProblemManager problemManager;
public PropertyTreeCreator(final WidgetTypeMapper typeMapper, final IProblemManager problemManager) {
this.typeMapper = typeMapper;
this.problemManager = problemManager;
}
/**
@@ -138,11 +142,11 @@ public class PropertyTreeCreator {
case TACOKIT_SUGGESTABLE_TABLE:
case TACOKIT_INPUT_SCHEMA:
case SCHEMA_TYPE:
node = new ListPropertyNode(property, fieldType, isRoot);
node = new ListPropertyNode(property, fieldType, isRoot, problemManager);
break;
default:
node = new PropertyNode(property, fieldType, isRoot);
node = new PropertyNode(property, fieldType, isRoot, problemManager);
}
return node;
}

View File

@@ -13,6 +13,7 @@ import org.talend.core.model.metadata.IMetadataTable;
import org.talend.core.model.metadata.MetadataColumn;
import org.talend.core.model.process.IElement;
import org.talend.sdk.component.studio.model.action.IActionParameter;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* TacokitElementParameter, which provides a view for Component metadata (schema) if the form of {@code List<String>}
@@ -36,8 +37,8 @@ public abstract class SchemaElementParameter extends TaCoKitElementParameter {
*/
private static final String STRING = "id_String";
public SchemaElementParameter(final IElement element) {
super(element);
public SchemaElementParameter(final IElement element, final IProblemManager problemManager) {
super(element, problemManager);
}
@Override

View File

@@ -15,6 +15,25 @@
*/
package org.talend.sdk.component.studio.model.parameter;
import static java.util.Collections.emptyMap;
import static java.util.Collections.unmodifiableList;
import static java.util.Optional.ofNullable;
import static java.util.function.Function.identity;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.talend.core.model.process.EComponentCategory;
@@ -40,25 +59,7 @@ import org.talend.sdk.component.studio.model.parameter.resolver.HealthCheckResol
import org.talend.sdk.component.studio.model.parameter.resolver.ParameterResolver;
import org.talend.sdk.component.studio.model.parameter.resolver.SuggestionsResolver;
import org.talend.sdk.component.studio.model.parameter.resolver.ValidationResolver;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
import static java.util.Collections.emptyMap;
import static java.util.Collections.unmodifiableList;
import static java.util.Optional.ofNullable;
import static java.util.function.Function.identity;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Creates properties from leafs
@@ -115,19 +116,18 @@ public class SettingVisitor implements PropertyVisitor {
private final List<ParameterResolver> parameterResolvers = new ArrayList<>();
public SettingVisitor(final IElement iNode,
final ElementParameter redrawParameter, final ConfigTypeNode config) {
public SettingVisitor(final IElement iNode, final ElementParameter redrawParameter, final ConfigTypeNode config) {
this(iNode, redrawParameter, config.getActions());
this.rootConfigNode = config;
}
public SettingVisitor(final IElement iNode,
final ElementParameter redrawParameter, final ComponentDetail detail) {
public SettingVisitor(final IElement iNode, final ElementParameter redrawParameter, final ComponentDetail detail) {
this(iNode, redrawParameter, detail.getActions());
}
public SettingVisitor(final IElement iNode,
final ElementParameter redrawParameter, final Collection<ActionReference> actions) {
public SettingVisitor(final IElement iNode, final ElementParameter redrawParameter,
final Collection<ActionReference> actions) {
this.element = iNode;
this.redrawParameter = redrawParameter;
this.actions = ofNullable(actions).orElseGet(Collections::emptyList);
@@ -240,9 +240,9 @@ public class SettingVisitor implements PropertyVisitor {
default:
final IElementParameter text;
if (node.getProperty().getPlaceholder() == null) {
text = new TaCoKitElementParameter(element);
text = new TaCoKitElementParameter(element, node.getProblemManager());
} else {
final TextElementParameter advancedText = new TextElementParameter(element);
final TextElementParameter advancedText = new TextElementParameter(element, node.getProblemManager());
advancedText.setMessage(node.getProperty().getPlaceholder());
text = advancedText;
}
@@ -342,7 +342,7 @@ public class SettingVisitor implements PropertyVisitor {
* Converts default value from String to Boolean and sets it
*/
private CheckElementParameter visitCheck(final PropertyNode node) {
final CheckElementParameter parameter = new CheckElementParameter(element);
final CheckElementParameter parameter = new CheckElementParameter(element, node.getProblemManager());
commonSetup(parameter, node);
return parameter;
}
@@ -352,7 +352,7 @@ public class SettingVisitor implements PropertyVisitor {
* Sets Closed List possible values and sets 1st element as default
*/
private TaCoKitElementParameter visitClosedList(final PropertyNode node) {
final TaCoKitElementParameter parameter = new TaCoKitElementParameter(element);
final TaCoKitElementParameter parameter = new TaCoKitElementParameter(element, node.getProblemManager());
commonSetup(parameter, node);
final PropertyValidation validation = node.getProperty().getValidation();
@@ -412,7 +412,7 @@ public class SettingVisitor implements PropertyVisitor {
}
private TaCoKitElementParameter visitPrevColumnList(final PropertyNode node) {
final TaCoKitElementParameter parameter = new TaCoKitElementParameter(element);
final TaCoKitElementParameter parameter = new TaCoKitElementParameter(element, node.getProblemManager());
commonSetup(parameter, node);
return parameter;
}
@@ -424,7 +424,8 @@ public class SettingVisitor implements PropertyVisitor {
* If parameter is based on schema, then toolbox is not shown
*/
private TaCoKitElementParameter visitTable(final ListPropertyNode tableNode) {
final TaCoKitElementParameter parameter = new TableElementParameter(element, createTableParameters(tableNode));
final TaCoKitElementParameter parameter = new TableElementParameter(element, createTableParameters(tableNode),
tableNode.getProblemManager());
commonSetup(parameter, tableNode);
return parameter;
}
@@ -436,7 +437,8 @@ public class SettingVisitor implements PropertyVisitor {
* If parameter is based on schema, then toolbox is not shown
*/
private TaCoKitElementParameter visitSuggestableTable(final ListPropertyNode tableNode) {
final TaCoKitElementParameter parameter = new SuggestableTableParameter(element, createTableParameters(tableNode));
final TaCoKitElementParameter parameter = new SuggestableTableParameter(element, createTableParameters(tableNode),
tableNode.getProblemManager());
commonSetup(parameter, tableNode);
return parameter;
}
@@ -445,11 +447,11 @@ public class SettingVisitor implements PropertyVisitor {
final String connectionName = getConnectionName(node);
final String discoverSchemaAction = node.getProperty().getConnection().getDiscoverSchema();
return new OutputSchemaParameter(getNode(), node.getProperty().getPath(), connectionName, discoverSchemaAction,
true);
true, node.getProblemManager());
}
private TaCoKitElementParameter visitInSchema(final PropertyNode node) {
return new InputSchemaParameter(getNode(), node.getProperty().getPath(), getConnectionName(node));
return new InputSchemaParameter(getNode(), node.getProperty().getPath(), getConnectionName(node), node.getProblemManager());
}
/**
@@ -469,7 +471,7 @@ public class SettingVisitor implements PropertyVisitor {
private ValueSelectionParameter visitValueSelection(final PropertyNode node) {
final SuggestionsAction action = createSuggestionsAction(node);
final ValueSelectionParameter parameter = new ValueSelectionParameter(element, action);
final ValueSelectionParameter parameter = new ValueSelectionParameter(element, action, node.getProblemManager());
commonSetup(parameter, node);
return parameter;
}
@@ -482,9 +484,8 @@ public class SettingVisitor implements PropertyVisitor {
}
protected TaCoKitElementParameter createSchemaParameter(final String connectionName, final String schemaName,
final String discoverSchemaAction,
final boolean show) {
return new OutputSchemaParameter(getNode(), schemaName, connectionName, discoverSchemaAction, show);
final String discoverSchemaAction, final boolean show, final IProblemManager problemManager) {
return new OutputSchemaParameter(getNode(), schemaName, connectionName, discoverSchemaAction, show, problemManager);
}
/**
@@ -536,8 +537,8 @@ public class SettingVisitor implements PropertyVisitor {
layout.setPosition(tableNode.getLayout(form).getPosition());
c.addLayout(form, layout);
});
final SettingVisitor creator =
new SettingVisitor(new FakeElement("table"), redrawParameter, actions).withCategory(category);
final SettingVisitor creator = new SettingVisitor(new FakeElement("table"), redrawParameter, actions)
.withCategory(category);
columns.forEach(creator::visit);
return unmodifiableList(new ArrayList<>(creator.settings.values()));
}
@@ -547,13 +548,7 @@ public class SettingVisitor implements PropertyVisitor {
* It is shown on the next row, but may be shown in the next
*/
private void createValidationLabel(final PropertyNode node, final TaCoKitElementParameter target) {
final ValidationLabel label = new ValidationLabel(element);
label.setCategory(category);
label.setName(node.getProperty().getPath() + PropertyNode.VALIDATION);
label.setRedrawParameter(redrawParameter);
// it is shown on the next row by default, but may be changed
label.setNumRow(node.getLayout(form).getPosition() + 1);
settings.put(label.getName(), label);
final ValidationLabel label = new ValidationLabel(target, node.getProblemManager());
processConstraints(node, target, label);
processValidations(node, target, label);

View File

@@ -26,6 +26,7 @@ import org.talend.core.model.process.IConnection;
import org.talend.core.model.process.IElement;
import org.talend.core.model.process.IElementParameter;
import org.talend.designer.core.ui.editor.nodes.Node;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Table Element Parameter with single column, which rows can be chosen from multiple provided suggestions.
@@ -43,12 +44,14 @@ public class SuggestableTableParameter extends TableElementParameter {
/**
* Constructor setups Table columns and sets empty list as initial value
*
* @param element represents persisted element, to which this parameter belongs (it can be component Node
* or Connection instance)
* @param element represents persisted element, to which this parameter belongs (it can be component Node or
* Connection instance)
* @param columns a list of parameters, which represents Table columns
* @param problemManager manage parameter problems
*/
public SuggestableTableParameter(final IElement element, final List<IElementParameter> columns) {
super(element, columns);
public SuggestableTableParameter(final IElement element, final List<IElementParameter> columns,
final IProblemManager problemManager) {
super(element, columns, problemManager);
final String[] columnNames = getListItemsDisplayCodeName();
if (columnNames.length != 1) {
throw new IllegalArgumentException("SuggestableTableParameter can have only 1 column");

View File

@@ -24,6 +24,7 @@ import org.talend.core.runtime.IAdditionalInfo;
import org.talend.designer.core.model.components.ElementParameter;
import org.talend.sdk.component.studio.model.action.IActionParameter;
import org.talend.sdk.component.studio.model.action.SettingsActionParameter;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* DOC cmeng class global comment. Detailled comment
@@ -43,8 +44,10 @@ public class TaCoKitElementParameter extends ElementParameter implements IAdditi
private Map<String, Object> additionalInfoMap = new HashMap<>();
private IProblemManager problemManager;
public TaCoKitElementParameter() {
this(null);
this(null, null);
}
/**
@@ -52,8 +55,9 @@ public class TaCoKitElementParameter extends ElementParameter implements IAdditi
*
* @param element {@link IElement} to which this parameter belongs to
*/
public TaCoKitElementParameter(final IElement element) {
public TaCoKitElementParameter(final IElement element, final IProblemManager problemManager) {
super(element);
this.problemManager = problemManager;
setTaggedValue("org.talend.sdk.component.source", "tacokit");
}
@@ -69,6 +73,10 @@ public class TaCoKitElementParameter extends ElementParameter implements IAdditi
return (String) getValue();
}
public IProblemManager getProblemManager() {
return this.getProblemManager();
}
public void registerListener(final String propertyName, final PropertyChangeListener listener) {
pcs.addPropertyChangeListener(propertyName, listener);
}

View File

@@ -30,6 +30,7 @@ import org.talend.core.model.process.IElement;
import org.talend.core.model.process.IElementParameter;
import org.talend.designer.core.model.components.ElementParameter;
import org.talend.sdk.component.studio.model.action.IActionParameter;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Represents Table parameter. Table parameter is ElementParameter, which EParameterFieldType is TABLE
@@ -49,8 +50,9 @@ public class TableElementParameter extends TaCoKitElementParameter {
* or Connection instance)
* @param columns a list of parameters, which represents Table columns
*/
public TableElementParameter(final IElement element, final List<IElementParameter> columns) {
super(element);
public TableElementParameter(final IElement element, final List<IElementParameter> columns,
final IProblemManager problemManager) {
super(element, problemManager);
final List<String> columnNames = new ArrayList<>(columns.size());
final List<String> displayNames = new ArrayList<>(columns.size());
for (final IElementParameter param : columns) {

View File

@@ -14,8 +14,9 @@ package org.talend.sdk.component.studio.model.parameter;
import org.talend.core.model.process.IAdvancedElementParameter;
import org.talend.core.model.process.IElement;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
public class TextElementParameter extends DebouncedParameter implements IAdvancedElementParameter {
public class TextElementParameter extends TaCoKitElementParameter implements IAdvancedElementParameter {
private String placeholder;
@@ -24,8 +25,8 @@ public class TextElementParameter extends DebouncedParameter implements IAdvance
*
* @param element {@link IElement} to which this parameter belongs to
*/
public TextElementParameter(final IElement element) {
super(element);
public TextElementParameter(final IElement element, final IProblemManager problemManager) {
super(element, problemManager);
}
@Override

View File

@@ -19,18 +19,18 @@ import static java.util.stream.Stream.of;
import java.util.HashSet;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.eclipse.swt.graphics.RGB;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.IElement;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Synthetic Element Parameter which shows validation message
*/
public class ValidationLabel extends TaCoKitElementParameter {
public class ValidationLabel {
/**
* Delimiter between messages in resulting validation message
@@ -46,39 +46,33 @@ public class ValidationLabel extends TaCoKitElementParameter {
*/
private String validationMessage;
public ValidationLabel(final IElement element) {
super(element);
setColor(RED);
setFieldType(EParameterFieldType.LABEL);
setDisplayName("");
setShow(false);
setSerialized(false);
setReadOnly(true);
setValue("");
private TaCoKitElementParameter elementParameter;
private Optional<IProblemManager> problemManager;
public ValidationLabel(final TaCoKitElementParameter elementParameter, final IProblemManager problemManager) {
this.elementParameter = elementParameter;
this.problemManager = Optional.ofNullable(problemManager);
}
public void showValidation(final String message) {
validationMessage = message;
setShow(true);
setValue(buildValue());
problemManager.ifPresent(p -> p.setError(elementParameter, buildValue()));
}
public void hideValidation() {
validationMessage = null;
setShow(false);
setValue("");
problemManager.ifPresent(p -> p.setError(elementParameter, null));
}
public void showConstraint(final String message) {
constraintMessages.add(message);
setShow(true);
setValue(buildValue());
problemManager.ifPresent(p -> p.setError(elementParameter, buildValue()));
}
public void hideConstraint(final String message) {
constraintMessages.remove(message);
setShow(false);
setValue(buildValue());
problemManager.ifPresent(p -> p.setError(elementParameter, null));
}
private String buildValue() {
@@ -87,15 +81,4 @@ public class ValidationLabel extends TaCoKitElementParameter {
.filter(Objects::nonNull)
.collect(Collectors.joining(DELIMITER));
}
/**
* {@inheritDoc}
*
* @return false
*/
@Override
public boolean isPersisted() {
return false;
}
}

View File

@@ -19,6 +19,7 @@ import java.util.Map;
import org.talend.core.model.process.IElement;
import org.talend.sdk.component.studio.model.action.SuggestionsAction;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* TacokitElementParameter which provides possible values list
@@ -27,8 +28,8 @@ public class ValueSelectionParameter extends TaCoKitElementParameter {
private final SuggestionsAction action;
public ValueSelectionParameter(IElement element, final SuggestionsAction action) {
super(element);
public ValueSelectionParameter(IElement element, final SuggestionsAction action, final IProblemManager problemManager) {
super(element, problemManager);
this.action = action;
}

View File

@@ -3,14 +3,15 @@ package org.talend.sdk.component.studio.model.parameter;
import org.talend.core.model.process.EComponentCategory;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.IElement;
import org.talend.designer.core.model.components.ElementParameter;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
public class VersionParameter extends TaCoKitElementParameter {
public static final String VERSION_SUFFIX = ".__version";
public VersionParameter(final IElement element, final String path, final String version) {
super(element);
public VersionParameter(final IElement element, final String path, final String version,
final IProblemManager problemManager) {
super(element, problemManager);
setTaggedValue("org.talend.sdk.component.source", "tacokit");
setName(path + VERSION_SUFFIX);
updateValueOnly(version);

View File

@@ -19,7 +19,6 @@ import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.regex.Pattern;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.sdk.component.studio.model.parameter.ValidationLabel;
/**
@@ -35,9 +34,6 @@ public abstract class PropertyValidator implements PropertyChangeListener {
private final String validationMessage;
PropertyValidator(final ValidationLabel label, final String validationMessage) {
if (label.getFieldType() != EParameterFieldType.LABEL) {
throw new IllegalArgumentException("parameter should be a LABEL");
}
this.label = label;
this.validationMessage = validationMessage;
}
@@ -55,13 +51,10 @@ public abstract class PropertyValidator implements PropertyChangeListener {
if (isContextualValue(event.getNewValue())) {
label.hideConstraint(validationMessage);
label.firePropertyChange("show", null, false);
} else if (!validate(event.getNewValue())) {
label.showConstraint(validationMessage);
label.firePropertyChange("show", null, true);
} else {
label.hideConstraint(validationMessage);
label.firePropertyChange("show", null, false);
}
}

View File

@@ -15,15 +15,15 @@
*/
package org.talend.sdk.component.studio.model.parameter.listener;
import org.talend.sdk.component.studio.Lookups;
import org.talend.sdk.component.studio.model.action.Action;
import org.talend.sdk.component.studio.model.parameter.ValidationLabel;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import org.talend.sdk.component.studio.Lookups;
import org.talend.sdk.component.studio.model.action.Action;
import org.talend.sdk.component.studio.model.parameter.ValidationLabel;
public class ValidationListener extends Action<String> implements PropertyChangeListener {
private final ValidationLabel label;
@@ -49,10 +49,8 @@ public class ValidationListener extends Action<String> implements PropertyChange
private void notify(final Map<String, String> validation) {
if (OK.equals(validation.get(STATUS))) {
label.hideValidation();
label.firePropertyChange("show", null, false);
} else {
label.showValidation(validation.get(MESSAGE));
label.firePropertyChange("show", null, true);
}
}

View File

@@ -28,7 +28,6 @@ import org.talend.sdk.component.server.front.model.ActionReference;
import org.talend.sdk.component.studio.i18n.Messages;
import org.talend.sdk.component.studio.model.action.Action;
import org.talend.sdk.component.studio.model.action.IActionParameter;
import org.talend.sdk.component.studio.model.action.SettingsActionParameter;
import org.talend.sdk.component.studio.model.parameter.ButtonParameter;
import org.talend.sdk.component.studio.model.parameter.PathCollector;
import org.talend.sdk.component.studio.model.parameter.PropertyDefinitionDecorator;
@@ -66,7 +65,7 @@ public class HealthCheckResolver {
}
public void resolveParameters(final Map<String, IElementParameter> settings) {
final ButtonParameter button = new ButtonParameter(element);
final ButtonParameter button = new ButtonParameter(element, node.getProblemManager());
button.setCategory(category);
button.setDisplayName(ofNullable(action.getDisplayName())
.filter(it -> !action.getName().equals(it))
@@ -100,7 +99,8 @@ public class HealthCheckResolver {
*/
private String getParameterAlias() {
final Collection<PropertyDefinitionDecorator> properties = PropertyDefinitionDecorator.wrap(action.getProperties());
final PropertyNode root = new PropertyTreeCreator(new WidgetTypeMapper()).createPropertyTree(properties);
final PropertyNode root = new PropertyTreeCreator(new WidgetTypeMapper(), node.getProblemManager())
.createPropertyTree(properties);
return root.getProperty().getPath();
}
}

View File

@@ -46,6 +46,7 @@ import org.talend.sdk.component.studio.model.parameter.Layout;
import org.talend.sdk.component.studio.model.parameter.LayoutParameter;
import org.talend.sdk.component.studio.model.parameter.Level;
import org.talend.sdk.component.studio.model.parameter.TaCoKitElementParameter;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Registers PropertyChangeListener for each IElementParameter during instantiation
@@ -60,6 +61,8 @@ public class TaCoKitComposite extends MissingSettingsMultiThreadDynamicComposite
private List<? extends IElementParameter> parameters;
private final IProblemManager problemManager;
private PropertyChangeListener redrawListener = evt -> {
if (!"show".equals(evt.getPropertyName())) {
return;
@@ -68,14 +71,22 @@ public class TaCoKitComposite extends MissingSettingsMultiThreadDynamicComposite
};
public TaCoKitComposite(final Composite parentComposite, final int styles, final EComponentCategory section,
final Element element, final boolean isCompactView) {
final Element element, final boolean isCompactView, final IProblemManager problemManager) {
super(parentComposite, styles, section, element, isCompactView);
this.problemManager = problemManager;
if (this.problemManager != null) {
this.problemManager.setTckComposite(this);
}
postInit();
}
TaCoKitComposite(final Composite parentComposite, final int styles, final EComponentCategory section,
final Element element, final boolean isCompactView, final Color backgroundColor) {
TaCoKitComposite(final Composite parentComposite, final int styles, final EComponentCategory section, final Element element,
final boolean isCompactView, final Color backgroundColor, final IProblemManager problemManager) {
super(parentComposite, styles, section, element, isCompactView, backgroundColor);
this.problemManager = problemManager;
if (this.problemManager != null) {
this.problemManager.setTckComposite(this);
}
postInit();
}
@@ -99,6 +110,7 @@ public class TaCoKitComposite extends MissingSettingsMultiThreadDynamicComposite
@Override
public synchronized void dispose() {
this.problemManager.setTckComposite(null);
preDispose();
super.dispose();
}

View File

@@ -26,6 +26,7 @@ import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel;
import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel.ValueModel;
import org.talend.sdk.component.studio.model.parameter.TaCoKitElementParameter;
import org.talend.sdk.component.studio.model.parameter.TaCoKitElementParameter.IValueChangedListener;
import org.talend.sdk.component.studio.ui.composite.problemmanager.IProblemManager;
/**
* Stores {@link TaCoKitConfigurationModel} and sets Configuration Model Updater listener for each
@@ -41,8 +42,8 @@ public class TaCoKitWizardComposite extends TaCoKitComposite {
public TaCoKitWizardComposite(final Composite parentComposite, final int styles, final EComponentCategory section,
final Element element, final TaCoKitConfigurationModel model, final boolean isCompactView,
final Color backgroundColor, final boolean isNew) {
super(parentComposite, styles, section, element, isCompactView, backgroundColor);
final Color backgroundColor, final boolean isNew, final IProblemManager problemManager) {
super(parentComposite, styles, section, element, isCompactView, backgroundColor, problemManager);
this.configurationModel = model;
this.isNew = isNew;
configurationUpdater = new ConfigurationModelUpdater();

View File

@@ -0,0 +1,21 @@
// ============================================================================
//
// Copyright (C) 2006-2019 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.sdk.component.studio.ui.composite.problemmanager;
/**
* DOC cmeng class global comment. Detailled comment
*/
public class ColorfulProblemManager extends ProblemManager {
}

View File

@@ -0,0 +1,22 @@
// ============================================================================
//
// Copyright (C) 2006-2019 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.sdk.component.studio.ui.composite.problemmanager;
/**
* DOC cmeng class global comment. Detailled comment
*/
public class ComponentViewProblemManager extends ProblemManager {
}

View File

@@ -0,0 +1,45 @@
// ============================================================================
//
// Copyright (C) 2006-2019 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.sdk.component.studio.ui.composite.problemmanager;
import org.talend.core.model.process.IElementParameter;
import org.talend.sdk.component.studio.ui.composite.TaCoKitComposite;
/**
* DOC cmeng class global comment. Detailled comment
*/
public interface IProblemManager {
TaCoKitComposite getTckComposite();
void setTckComposite(TaCoKitComposite tckComposite);
void setError(IElementParameter ep, String errMsg);
void setWarn(IElementParameter ep, String warnMsg);
void setInfo(IElementParameter ep, String infoMsg);
void addUnresolvedRequriedElem(IElementParameter ep);
void removeUnresolvedRequriedElem(IElementParameter ep);
boolean hasUnresolvedRequiredElem();
boolean hasInfo();
boolean hasWarn();
boolean hasError();
}

View File

@@ -0,0 +1,105 @@
// ============================================================================
//
// Copyright (C) 2006-2019 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.sdk.component.studio.ui.composite.problemmanager;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.talend.core.model.process.IElementParameter;
import org.talend.sdk.component.studio.ui.composite.TaCoKitComposite;
import org.talend.sdk.component.studio.util.TaCoKitUtil;
/**
* DOC cmeng class global comment. Detailled comment
*/
public class ProblemManager implements IProblemManager {
private TaCoKitComposite tckComposite;
private Map<IElementParameter, String> errMap = new HashMap<>();
private Map<IElementParameter, String> warnMap = new HashMap<>();
private Map<IElementParameter, String> infoMap = new HashMap<>();
private Set<IElementParameter> unresolvedRequriedElems = new HashSet<>();
@Override
public TaCoKitComposite getTckComposite() {
return tckComposite;
}
@Override
public void setTckComposite(TaCoKitComposite tckComposite) {
this.tckComposite = tckComposite;
}
@Override
public void setError(IElementParameter ep, String errMsg) {
if (TaCoKitUtil.isBlank(errMsg)) {
errMap.remove(ep);
} else {
errMap.put(ep, errMsg);
}
}
@Override
public boolean hasError() {
return !errMap.isEmpty();
}
@Override
public void setWarn(IElementParameter ep, String warnMsg) {
if (TaCoKitUtil.isBlank(warnMsg)) {
warnMap.remove(ep);
} else {
warnMap.put(ep, warnMsg);
}
}
@Override
public boolean hasWarn() {
return !warnMap.isEmpty();
}
@Override
public void setInfo(IElementParameter ep, String infoMsg) {
if (TaCoKitUtil.isBlank(infoMsg)) {
infoMap.remove(ep);
} else {
infoMap.put(ep, infoMsg);
}
}
@Override
public boolean hasInfo() {
return !infoMap.isEmpty();
}
@Override
public void addUnresolvedRequriedElem(IElementParameter ep) {
unresolvedRequriedElems.add(ep);
}
@Override
public void removeUnresolvedRequriedElem(IElementParameter ep) {
unresolvedRequriedElems.remove(ep);
}
@Override
public boolean hasUnresolvedRequiredElem() {
return !unresolvedRequriedElems.isEmpty();
}
}

View File

@@ -0,0 +1,41 @@
// ============================================================================
//
// Copyright (C) 2006-2019 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.sdk.component.studio.ui.composite.problemmanager;
import java.util.Optional;
import org.eclipse.swt.widgets.Display;
import org.talend.core.model.process.IElementParameter;
/**
* DOC cmeng class global comment. Detailled comment
*/
public class WizardProblemManager extends ColorfulProblemManager {
private Optional<IWizardHandler> wizardHandler = Optional.ofNullable(null);
public void setWizardHandler(IWizardHandler wizardHandler) {
this.wizardHandler = Optional.ofNullable(wizardHandler);
}
@Override
public void setError(IElementParameter ep, String errMsg) {
super.setError(ep, errMsg);
this.wizardHandler.ifPresent(c -> Display.getDefault().asyncExec(() -> c.showError(errMsg)));
}
public interface IWizardHandler {
public void showError(String error);
}
}

View File

@@ -15,6 +15,7 @@ package org.talend.sdk.component.studio.ui.wizard;
import org.talend.core.model.properties.ConnectionItem;
import org.talend.sdk.component.server.front.model.ConfigTypeNode;
import org.talend.sdk.component.studio.metadata.node.ITaCoKitRepositoryNode;
import org.talend.sdk.component.studio.ui.composite.problemmanager.WizardProblemManager;
public class TaCoKitConfigurationRuntimeData {
@@ -24,6 +25,8 @@ public class TaCoKitConfigurationRuntimeData {
private ConfigTypeNode configTypeNode;
private WizardProblemManager problemManager;
private boolean isCreation = true;
private boolean isReadonly = false;
@@ -91,36 +94,54 @@ public class TaCoKitConfigurationRuntimeData {
this.existingNames = existingNames;
}
public WizardProblemManager getProblemManager() {
return problemManager;
}
public void setProblemManager(WizardProblemManager problemManager) {
this.problemManager = problemManager;
}
@Override
public boolean equals(final Object o) {
if (o == this)
if (o == this) {
return true;
if (!(o instanceof TaCoKitConfigurationRuntimeData))
}
if (!(o instanceof TaCoKitConfigurationRuntimeData)) {
return false;
}
final TaCoKitConfigurationRuntimeData other = (TaCoKitConfigurationRuntimeData) o;
if (!other.canEqual(this))
if (!other.canEqual(this)) {
return false;
}
final Object this$taCoKitRepositoryNode = this.getTaCoKitRepositoryNode();
final Object other$taCoKitRepositoryNode = other.getTaCoKitRepositoryNode();
if (this$taCoKitRepositoryNode == null ? other$taCoKitRepositoryNode != null
: !this$taCoKitRepositoryNode.equals(other$taCoKitRepositoryNode))
: !this$taCoKitRepositoryNode.equals(other$taCoKitRepositoryNode)) {
return false;
}
final Object this$connectionItem = this.getConnectionItem();
final Object other$connectionItem = other.getConnectionItem();
if (this$connectionItem == null ? other$connectionItem != null : !this$connectionItem.equals(other$connectionItem))
if (this$connectionItem == null ? other$connectionItem != null : !this$connectionItem.equals(other$connectionItem)) {
return false;
}
final Object this$configTypeNode = this.getConfigTypeNode();
final Object other$configTypeNode = other.getConfigTypeNode();
if (this$configTypeNode == null ? other$configTypeNode != null : !this$configTypeNode.equals(other$configTypeNode))
if (this$configTypeNode == null ? other$configTypeNode != null : !this$configTypeNode.equals(other$configTypeNode)) {
return false;
if (this.isCreation() != other.isCreation())
}
if (this.isCreation() != other.isCreation()) {
return false;
if (this.isReadonly() != other.isReadonly())
}
if (this.isReadonly() != other.isReadonly()) {
return false;
if (this.isAddContextFields() != other.isAddContextFields())
}
if (this.isAddContextFields() != other.isAddContextFields()) {
return false;
if (!java.util.Arrays.deepEquals(this.getExistingNames(), other.getExistingNames()))
}
if (!java.util.Arrays.deepEquals(this.getExistingNames(), other.getExistingNames())) {
return false;
}
return true;
}

View File

@@ -145,7 +145,8 @@ public abstract class TaCoKitConfigurationWizard extends CheckLastVersionReposit
configTypeNode.getDisplayName(), configTypeNode.getConfigurationType()));
wizardPropertiesPage.setDescription(""); //$NON-NLS-1$
addPage(wizardPropertiesPage);
final PropertyNode root = new PropertyTreeCreator(new WizardTypeMapper()).createPropertyTree(configTypeNode);
final PropertyNode root = new PropertyTreeCreator(new WizardTypeMapper(), runtimeData.getProblemManager())
.createPropertyTree(configTypeNode);
if (root.hasLeaves(Metadatas.MAIN_FORM)) {
mainPage = new TaCoKitConfigurationWizardPage(runtimeData, Metadatas.MAIN_FORM, isNew());
addPage(mainPage);

View File

@@ -18,6 +18,7 @@ import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
@@ -45,7 +46,10 @@ import org.talend.sdk.component.studio.model.parameter.PropertyNode;
import org.talend.sdk.component.studio.model.parameter.PropertyTreeCreator;
import org.talend.sdk.component.studio.model.parameter.SettingVisitor;
import org.talend.sdk.component.studio.model.parameter.VersionParameter;
import org.talend.sdk.component.studio.ui.composite.TaCoKitComposite;
import org.talend.sdk.component.studio.ui.composite.TaCoKitWizardComposite;
import org.talend.sdk.component.studio.ui.composite.problemmanager.WizardProblemManager;
import org.talend.sdk.component.studio.ui.composite.problemmanager.WizardProblemManager.IWizardHandler;
import org.talend.sdk.component.studio.ui.wizard.TaCoKitConfigurationRuntimeData;
/**
@@ -57,7 +61,7 @@ public class TaCoKitConfigurationWizardPage extends AbsTaCoKitWizardPage {
private Element element;
private TaCoKitWizardComposite tacokitComposite;
private TaCoKitComposite tacokitComposite;
private TaCoKitConfigurationModel configurationModel;
@@ -102,8 +106,10 @@ public class TaCoKitConfigurationWizardPage extends AbsTaCoKitWizardPage {
final ConfigTypeNode configTypeNode = runtimeData.getConfigTypeNode();
final DummyComponent component = new DummyComponent(configTypeNode.getDisplayName());
final DataNode node = new DataNode(component, component.getName());
final WizardProblemManager problemManager = runtimeData.getProblemManager();
final PropertyNode root =
new PropertyTreeCreator(new WizardTypeMapper()).createPropertyTree(configTypeNode);
new PropertyTreeCreator(new WizardTypeMapper(), problemManager)
.createPropertyTree(configTypeNode);
element = new FakeElement(runtimeData.getTaCoKitRepositoryNode().getConfigTypeNode().getDisplayName());
element.setReadOnly(runtimeData.isReadonly());
final ElementParameter updateParameter = createUpdateComponentsParameter(element);
@@ -126,18 +132,36 @@ public class TaCoKitConfigurationWizardPage extends AbsTaCoKitWizardPage {
.filter(n -> p.getMetadata().get("configurationtype::type").equals(n.getConfigurationType()))
.filter(n -> n.getName().equals(p.getMetadata().get("configurationtype::name")))
.findFirst()
.map(n -> String.valueOf(n.getVersion())).orElse("-1")))
.map(n -> String.valueOf(n.getVersion())).orElse("-1"),
runtimeData.getProblemManager()))
.forEach(p -> configurationModel.setValue(p));
element.setElementParameters(parameters);
tacokitComposite = new TaCoKitWizardComposite(container, SWT.H_SCROLL | SWT.V_SCROLL | SWT.NO_FOCUS, category,
element, configurationModel, true, container.getBackground(), isNew);
element, configurationModel, true, container.getBackground(), isNew, null);
tacokitComposite.setLayoutData(createMainFormData(runtimeData.isAddContextFields()));
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
private void setWizardErrorMessage(String error) {
setMessage(error, WizardPage.ERROR);
}
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible) {
getTaCoKitConfigurationRuntimeData().getProblemManager().setWizardHandler(new IWizardHandler() {
@Override
public void showError(String error) {
setWizardErrorMessage(error);
}
});
}
}
private TaCoKitConfigurationModel getConfigurationItemModel() {
if (this.configurationModel == null) {
try {