/*
* Copyright 2017 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.stunner.core.client.canvas.command;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.command.CanvasCommand;
import org.kie.workbench.common.stunner.core.client.command.CanvasCommandFactory;
import org.kie.workbench.common.stunner.core.definition.morph.MorphDefinition;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Element;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.content.definition.Definition;
import org.kie.workbench.common.stunner.core.graph.content.view.View;
import org.kie.workbench.common.stunner.core.graph.processing.traverse.tree.TreeWalkTraverseProcessor;
@ApplicationScoped
public class DefaultCanvasCommandFactory implements CanvasCommandFactory<AbstractCanvasHandler> {
private final TreeWalkTraverseProcessor treeWalkTraverseProcessor;
protected DefaultCanvasCommandFactory() {
this.treeWalkTraverseProcessor = null;
}
@Inject
public DefaultCanvasCommandFactory(final TreeWalkTraverseProcessor treeWalkTraverseProcessor) {
this.treeWalkTraverseProcessor = treeWalkTraverseProcessor;
}
@Override
public CanvasCommand<AbstractCanvasHandler> addNode(final Node candidate,
final String shapeSetId) {
return new AddNodeCommand(candidate,
shapeSetId);
}
@Override
public CanvasCommand<AbstractCanvasHandler> addChildNode(final Node parent,
final Node candidate,
final String shapeSetId) {
return new AddChildNodeCommand(parent,
candidate,
shapeSetId);
}
@Override
public CanvasCommand<AbstractCanvasHandler> addDockedNode(final Node parent,
final Node candidate,
final String shapeSetId) {
return new AddDockedNodeCommand(parent,
candidate,
shapeSetId);
}
@Override
public CanvasCommand<AbstractCanvasHandler> addConnector(final Node sourceNode,
final Edge candidate,
final int magnetIndex,
final String shapeSetId) {
return new AddConnectorCommand(sourceNode,
candidate,
magnetIndex,
shapeSetId);
}
@Override
public CanvasCommand<AbstractCanvasHandler> setChildNode(final Node parent,
final Node candidate) {
return new SetChildNodeCommand(parent,
candidate);
}
@Override
public CanvasCommand<AbstractCanvasHandler> dockNode(final Node parent,
final Node candidate) {
return new DockNodeCommand(parent,
candidate);
}
@Override
public CanvasCommand<AbstractCanvasHandler> deleteNode(final Node candidate) {
return new DeleteNodeCommand(candidate);
}
@Override
public CanvasCommand<AbstractCanvasHandler> removeChild(final Node parent,
final Node candidate) {
return new RemoveChildCommand(parent,
candidate);
}
@Override
public CanvasCommand<AbstractCanvasHandler> unDockNode(final Node parent,
final Node candidate) {
return new UnDockNodeCommand(parent,
candidate);
}
@Override
public CanvasCommand<AbstractCanvasHandler> deleteConnector(final Edge candidate) {
return new DeleteConnectorCommand(candidate);
}
@Override
public CanvasCommand<AbstractCanvasHandler> draw() {
return new DrawCanvasCommand(treeWalkTraverseProcessor);
}
@Override
public CanvasCommand<AbstractCanvasHandler> morphNode(final Node<? extends Definition<?>, Edge> candidate,
final MorphDefinition morphDefinition,
final String morphTarget,
final String shapeSetId) {
return new MorphNodeCommand(candidate,
morphDefinition,
morphTarget,
shapeSetId);
}
@Override
public CanvasCommand<AbstractCanvasHandler> setSourceNode(final Node<? extends View<?>, Edge> node,
final Edge<? extends View<?>, Node> edge,
final int magnetIndex) {
return new SetConnectionSourceNodeCommand(node,
edge,
magnetIndex);
}
@Override
public CanvasCommand<AbstractCanvasHandler> setTargetNode(final Node<? extends View<?>, Edge> node,
final Edge<? extends View<?>, Node> edge,
final int magnetIndex) {
return new SetConnectionTargetNodeCommand(node,
edge,
magnetIndex);
}
@Override
public CanvasCommand<AbstractCanvasHandler> updatePosition(final Node<View<?>, Edge> element,
final Double x,
final Double y) {
return new UpdateElementPositionCommand(element,
x,
y);
}
@Override
public CanvasCommand<AbstractCanvasHandler> updatePropertyValue(final Element element,
final String propertyId,
final Object value) {
return new UpdateElementPropertyCommand(element,
propertyId,
value);
}
@Override
public CanvasCommand<AbstractCanvasHandler> clearCanvas() {
return new ClearCommand();
}
}