/*
* Copyright 2016 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.lienzo.canvas.controls.toolbox.command.palette;
import javax.annotation.PostConstruct;
import com.ait.lienzo.client.core.shape.Shape;
import org.kie.workbench.common.stunner.client.lienzo.LienzoLayer;
import org.kie.workbench.common.stunner.client.lienzo.components.palette.AbstractLienzoGlyphItemsPalette;
import org.kie.workbench.common.stunner.client.lienzo.components.palette.LienzoGlyphsHoverPalette;
import org.kie.workbench.common.stunner.client.lienzo.components.palette.LienzoPalette;
import org.kie.workbench.common.stunner.client.lienzo.util.SVGUtils;
import org.kie.workbench.common.stunner.core.client.api.ShapeManager;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.controls.builder.NodeBuilderControl;
import org.kie.workbench.common.stunner.core.client.canvas.controls.toolbox.command.Context;
import org.kie.workbench.common.stunner.core.client.canvas.controls.toolbox.command.palette.NewPaletteNodeCommand;
import org.kie.workbench.common.stunner.core.client.components.drag.NodeDragProxy;
import org.kie.workbench.common.stunner.core.client.components.palette.model.definition.DefinitionsPalette;
import org.kie.workbench.common.stunner.core.client.components.palette.model.definition.DefinitionsPaletteBuilder;
import org.kie.workbench.common.stunner.core.client.components.palette.view.PaletteView;
import org.kie.workbench.common.stunner.core.client.service.ClientFactoryService;
import org.kie.workbench.common.stunner.core.graph.processing.index.bounds.GraphBoundsIndexer;
import org.kie.workbench.common.stunner.core.lookup.util.CommonLookups;
/// Abstract for not being discovered by the CDI environment, for now...
public abstract class LienzoNewPaletteNodeToolboxCommand extends NewPaletteNodeCommand<Shape<?>> {
public LienzoNewPaletteNodeToolboxCommand(final ClientFactoryService clientFactoryServices,
final CommonLookups commonLookups,
final ShapeManager shapeManager,
final DefinitionsPaletteBuilder definitionsPaletteBuilder,
final LienzoGlyphsHoverPalette palette,
final NodeDragProxy<AbstractCanvasHandler> nodeDragProxyFactory,
final NodeBuilderControl<AbstractCanvasHandler> nodeBuilderControl,
final GraphBoundsIndexer graphBoundsIndexer) {
super(clientFactoryServices,
commonLookups,
shapeManager,
definitionsPaletteBuilder,
palette,
nodeDragProxyFactory,
nodeBuilderControl,
graphBoundsIndexer,
SVGUtils.createSVGIcon(SVGUtils.getAddIcon()));
}
// TODO: i18n.
@PostConstruct
public void init() {
getLienzoPalette()
.expand()
.setIconSize(15)
.setPadding(5)
.setLayout(LienzoPalette.Layout.VERTICAL);
((AbstractLienzoGlyphItemsPalette) getLienzoPalette()).getDefinitionGlyphTooltip().setPrefix("Click to create a ");
}
@Override
protected void beforeBindPalette(final DefinitionsPalette paletteDefinition,
final Context<AbstractCanvasHandler> context) {
super.beforeBindPalette(paletteDefinition,
context);
final String ssid = canvasHandler.getDiagram().getMetadata().getShapeSetId();
getLienzoPalette().setShapeSetId(ssid);
}
@Override
@SuppressWarnings("unchecked")
protected void attachPaletteView() {
final LienzoLayer lienzoLayer = (LienzoLayer) canvasHandler.getCanvas().getLayer();
getPaletteView().attach(lienzoLayer.getLienzoLayer());
}
@Override
protected PaletteView getPaletteView() {
return getLienzoPalette().getView();
}
protected LienzoGlyphsHoverPalette getLienzoPalette() {
return (LienzoGlyphsHoverPalette) palette;
}
}