/*
* 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.screen;
import javax.enterprise.context.Dependent;
import javax.enterprise.event.Event;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import com.google.gwt.user.client.ui.IsWidget;
import org.uberfire.client.annotations.WorkbenchPartTitle;
import org.uberfire.client.annotations.WorkbenchPartView;
import org.uberfire.client.annotations.WorkbenchScreen;
import org.uberfire.ext.wires.bayesian.network.client.events.BayesianTemplateSelectedEvent;
import org.uberfire.ext.wires.bayesian.network.client.events.RenderBayesianNetworkEvent;
import org.uberfire.ext.wires.bayesian.network.client.factory.BayesianFactory;
import org.uberfire.ext.wires.bayesian.network.client.shapes.EditableBayesianNode;
import org.uberfire.ext.wires.core.api.events.ClearEvent;
import org.uberfire.ext.wires.core.api.events.ShapeAddedEvent;
import org.uberfire.ext.wires.core.api.events.ShapeSelectedEvent;
import org.uberfire.ext.wires.core.api.shapes.WiresBaseShape;
import org.uberfire.ext.wires.core.client.canvas.WiresCanvas;
/**
* A custom WiresCanvas implementation to handle Bayesian Networks
*/
@Dependent
@WorkbenchScreen(identifier = "BayesianScreen")
public class BayesianScreen extends WiresCanvas {
@Inject
private BayesianFactory factory;
@Inject
private Event<ClearEvent> clearEvent;
@Inject
private Event<ShapeSelectedEvent> shapeSelectedEvent;
@Inject
private Event<ShapeAddedEvent> shapeAddedEvent;
public void onBayesianEvent(@Observes BayesianTemplateSelectedEvent event) {
factory.init(event.getTemplate());
}
public void onReadyEvent(@Observes RenderBayesianNetworkEvent event) {
//ClearEvent clears Variables Panel and this Canvas
clearEvent.fire(new ClearEvent());
for (EditableBayesianNode node : event.getBayesianNodes()) {
addShape(node);
}
}
public void onClearEvent(@Observes ClearEvent clearEvent) {
clear();
}
@WorkbenchPartTitle
@Override
public String getTitle() {
return "Bayesian Network";
}
@WorkbenchPartView
public IsWidget getView() {
return this;
}
@Override
public void addShape(final WiresBaseShape shape) {
//ShapeAddedEvent integrates with Layers Panel
super.addShape(shape);
shapeAddedEvent.fire(new ShapeAddedEvent(shape));
}
@Override
public void selectShape(final WiresBaseShape shape) {
shapeSelectedEvent.fire(new ShapeSelectedEvent(shape));
}
public void onShapeSelected(@Observes ShapeSelectedEvent event) {
//ShapeSelectedEvent integrates with Layers Panel and this Canvas
super.selectShape(event.getShape());
}
}