/* * 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.client.widgets.canvas.wires; import javax.enterprise.context.Dependent; import javax.enterprise.event.Event; import javax.inject.Inject; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; import org.kie.workbench.common.stunner.client.lienzo.Lienzo; import org.kie.workbench.common.stunner.client.lienzo.canvas.wires.WiresCanvas; import org.kie.workbench.common.stunner.client.widgets.canvas.view.LienzoPanel; import org.kie.workbench.common.stunner.core.client.canvas.Canvas; import org.kie.workbench.common.stunner.core.client.canvas.Layer; import org.kie.workbench.common.stunner.core.client.canvas.event.CanvasClearEvent; import org.kie.workbench.common.stunner.core.client.canvas.event.CanvasDrawnEvent; import org.kie.workbench.common.stunner.core.client.canvas.event.CanvasFocusedEvent; import org.kie.workbench.common.stunner.core.client.canvas.event.registration.CanvasShapeAddedEvent; import org.kie.workbench.common.stunner.core.client.canvas.event.registration.CanvasShapeRemovedEvent; @Dependent public class WiresCanvasPresenter extends WiresCanvas implements IsWidget { private static final int PADDING = 15; private final LienzoPanel lienzoPanel; protected WiresCanvasPresenter() { this(null, null, null, null, null, null, null, null); } @Inject public WiresCanvasPresenter(final Event<CanvasClearEvent> canvasClearEvent, final Event<CanvasShapeAddedEvent> canvasShapeAddedEvent, final Event<CanvasShapeRemovedEvent> canvasShapeRemovedEvent, final Event<CanvasDrawnEvent> canvasDrawnEvent, final Event<CanvasFocusedEvent> canvasFocusedEvent, final @Lienzo Layer layer, final WiresCanvas.View view, final LienzoPanel lienzoPanel) { super(canvasClearEvent, canvasShapeAddedEvent, canvasShapeRemovedEvent, canvasDrawnEvent, canvasFocusedEvent, layer, view); this.lienzoPanel = lienzoPanel; } @Override public Widget asWidget() { return view.asWidget(); } @Override public Canvas initialize(final int width, final int height) { lienzoPanel.show(width, height, PADDING); // Show a decorator to represent the diagram's bounds. view .setDecoratorStrokeWidth(1) .setDecoratorStrokeAlpha(0.8) .setDecoratorStrokeColor("#d3d3d3"); show(lienzoPanel.asWidget(), width, height, layer); layer.onAfterDraw(WiresCanvasPresenter.this::afterDrawCanvas); return this; } @Override public void addControl(final IsWidget control) { view.add(control); } @Override public void deleteControl(final IsWidget control) { view.remove(control); } @Override public void destroy() { super.destroy(); lienzoPanel.destroy(); } public LienzoPanel getLienzoPanel() { return lienzoPanel; } }