/* * 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.session.impl; import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvas; import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler; import org.kie.workbench.common.stunner.core.client.canvas.controls.builder.ElementBuilderControl; import org.kie.workbench.common.stunner.core.client.canvas.controls.connection.ConnectionAcceptorControl; import org.kie.workbench.common.stunner.core.client.canvas.controls.containment.ContainmentAcceptorControl; import org.kie.workbench.common.stunner.core.client.canvas.controls.docking.DockingAcceptorControl; import org.kie.workbench.common.stunner.core.client.canvas.controls.pan.PanControl; import org.kie.workbench.common.stunner.core.client.canvas.controls.select.SelectionControl; import org.kie.workbench.common.stunner.core.client.canvas.controls.zoom.ZoomControl; import org.kie.workbench.common.stunner.core.client.command.CanvasCommandManager; import org.kie.workbench.common.stunner.core.client.command.CanvasViolation; import org.kie.workbench.common.stunner.core.client.command.RequiresCommandManager; import org.kie.workbench.common.stunner.core.client.session.ClientFullSession; import org.kie.workbench.common.stunner.core.command.Command; import org.kie.workbench.common.stunner.core.graph.Element; import org.kie.workbench.common.stunner.core.registry.command.CommandRegistry; public abstract class AbstractClientFullSession extends AbstractClientReadOnlySession implements ClientFullSession<AbstractCanvas, AbstractCanvasHandler> { private CanvasCommandManager<AbstractCanvasHandler> canvasCommandManager; private CommandRegistry<Command<AbstractCanvasHandler, CanvasViolation>> commandRegistry; private ConnectionAcceptorControl<AbstractCanvasHandler> connectionAcceptorControl; private ContainmentAcceptorControl<AbstractCanvasHandler> containmentAcceptorControl; private DockingAcceptorControl<AbstractCanvasHandler> dockingAcceptorControl; private ElementBuilderControl<AbstractCanvasHandler> builderControl; public AbstractClientFullSession(final AbstractCanvas canvas, final AbstractCanvasHandler canvasHandler, final SelectionControl<AbstractCanvasHandler, Element> selectionControl, final ZoomControl<AbstractCanvas> zoomControl, final PanControl<AbstractCanvas> panControl, final CanvasCommandManager<AbstractCanvasHandler> canvasCommandManager, final RequiresCommandManager.CommandManagerProvider<AbstractCanvasHandler> sessionCommandManagerProvider, final RequiresCommandManager.CommandManagerProvider<AbstractCanvasHandler> requestCommandManagerProvider, final CommandRegistry<Command<AbstractCanvasHandler, CanvasViolation>> commandRegistry, final ConnectionAcceptorControl<AbstractCanvasHandler> connectionAcceptorControl, final ContainmentAcceptorControl<AbstractCanvasHandler> containmentAcceptorControl, final DockingAcceptorControl<AbstractCanvasHandler> dockingAcceptorControl, final ElementBuilderControl<AbstractCanvasHandler> builderControl) { super(canvas, canvasHandler, selectionControl, zoomControl, panControl); this.canvasCommandManager = canvasCommandManager; this.commandRegistry = commandRegistry; this.connectionAcceptorControl = connectionAcceptorControl; this.containmentAcceptorControl = containmentAcceptorControl; this.dockingAcceptorControl = dockingAcceptorControl; this.builderControl = builderControl; getRegistrationHandler().registerCanvasHandlerControl(connectionAcceptorControl); connectionAcceptorControl.setCommandManagerProvider(requestCommandManagerProvider); getRegistrationHandler().registerCanvasHandlerControl(containmentAcceptorControl); containmentAcceptorControl.setCommandManagerProvider(requestCommandManagerProvider); getRegistrationHandler().registerCanvasHandlerControl(dockingAcceptorControl); dockingAcceptorControl.setCommandManagerProvider(requestCommandManagerProvider); getRegistrationHandler().registerCanvasHandlerControl(builderControl); builderControl.setCommandManagerProvider(sessionCommandManagerProvider); } @Override public SelectionControl<AbstractCanvasHandler, Element> getSelectionControl() { return selectionControl; } @Override public ZoomControl<AbstractCanvas> getZoomControl() { return zoomControl; } @Override public PanControl<AbstractCanvas> getPanControl() { return panControl; } @Override public CanvasCommandManager<AbstractCanvasHandler> getCommandManager() { return canvasCommandManager; } @Override public CommandRegistry<Command<AbstractCanvasHandler, CanvasViolation>> getCommandRegistry() { return commandRegistry; } @Override public ConnectionAcceptorControl<AbstractCanvasHandler> getConnectionAcceptorControl() { return connectionAcceptorControl; } @Override public ContainmentAcceptorControl<AbstractCanvasHandler> getContainmentAcceptorControl() { return containmentAcceptorControl; } @Override public DockingAcceptorControl<AbstractCanvasHandler> getDockingAcceptorControl() { return dockingAcceptorControl; } @Override public ElementBuilderControl<AbstractCanvasHandler> getBuilderControl() { return builderControl; } @Override public void doDestroy() { super.doDestroy(); if (null != commandRegistry) { commandRegistry.clear(); } } }