/*
* Copyright 2015 JBoss, by Red Hat, Inc
*
* 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.uberfire.ext.wires.bayesian.network.client.shapes;
import java.util.Map;
import com.ait.lienzo.client.core.shape.Rectangle;
import com.ait.lienzo.client.core.shape.Text;
import com.ait.lienzo.shared.core.types.ColorName;
import com.google.common.collect.Maps;
import org.uberfire.ext.wires.core.api.shapes.WiresBaseShape;
public class EditableBayesianProbability extends WiresBaseShape {
private final Rectangle rectangle;
private Map<Text, Rectangle> parentNode;
private Map<Text, Rectangle> porcentualOptions;
private Map<Text, Rectangle> porcentualValues;
private Map<Map<Text, Rectangle>, Map<Text, Rectangle>> incomingNodes;
public EditableBayesianProbability() {
this(0,
0,
0,
0);
}
public EditableBayesianProbability(final double width,
final double height,
final double positionXNode,
final double positionYNode) {
rectangle = new Rectangle(width,
height);
rectangle.setStrokeColor(ColorName.WHITE.getValue());
add(rectangle);
setX(positionXNode);
setY(positionYNode);
setDraggable(false);
this.parentNode = Maps.newHashMap();
this.porcentualOptions = Maps.newHashMap();
this.porcentualValues = Maps.newHashMap();
this.incomingNodes = Maps.newHashMap();
}
@Override
public void setSelected(final boolean isSelected) {
//It's not possible to select these Shapes
}
@Override
public boolean contains(double cx,
double cy) {
//We don't have any ControlPoints so no need to worry about whether we contain a given point
return false;
}
public void buildGrid() {
drawComponents(this.parentNode);
drawComponents(this.porcentualOptions);
drawComponents(this.porcentualValues);
if (this.incomingNodes != null && !this.incomingNodes.isEmpty()) {
for (Map.Entry<Map<Text, Rectangle>, Map<Text, Rectangle>> porc : incomingNodes.entrySet()) {
drawComponents(porc.getValue());
drawComponents(porc.getKey());
}
}
}
private void drawComponents(final Map<Text, Rectangle> hash) {
for (Map.Entry<Text, Rectangle> parent : hash.entrySet()) {
add(parent.getValue());
add(parent.getKey());
}
}
public Map<Text, Rectangle> getParentNode() {
return parentNode;
}
public void setParentNode(final Map<Text, Rectangle> parentNode) {
this.parentNode = parentNode;
}
public Map<Text, Rectangle> getPorcentualOptions() {
return porcentualOptions;
}
public void setPorcentualOptions(final Map<Text, Rectangle> porcentualOptions) {
this.porcentualOptions = porcentualOptions;
}
public Map<Text, Rectangle> getPorcentualValues() {
return porcentualValues;
}
public void setPorcentualValues(final Map<Text, Rectangle> porcentualValues) {
this.porcentualValues = porcentualValues;
}
public Map<Map<Text, Rectangle>, Map<Text, Rectangle>> getIncomingNodes() {
return incomingNodes;
}
public void setIncomingNodes(final Map<Map<Text, Rectangle>, Map<Text, Rectangle>> incomingNodes) {
this.incomingNodes = incomingNodes;
}
}