/* * 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.components.palette.impl; import java.util.LinkedList; import java.util.List; import javax.annotation.PostConstruct; import javax.enterprise.context.Dependent; import javax.inject.Inject; import org.kie.workbench.common.stunner.client.lienzo.components.palette.AbstractLienzoGlyphItemsPalette; import org.kie.workbench.common.stunner.client.lienzo.components.palette.LienzoDefinitionSetFlatPalette; import org.kie.workbench.common.stunner.client.lienzo.components.palette.view.LienzoPaletteViewImpl; import org.kie.workbench.common.stunner.client.lienzo.components.palette.view.element.LienzoPaletteElementView; import org.kie.workbench.common.stunner.client.lienzo.components.palette.view.element.LienzoSeparatorPaletteElementView; import org.kie.workbench.common.stunner.client.lienzo.components.palette.view.element.LienzoSeparatorPaletteElementViewImpl; import org.kie.workbench.common.stunner.client.lienzo.components.palette.view.element.LienzoTextPaletteElementView; import org.kie.workbench.common.stunner.client.lienzo.components.palette.view.element.LienzoTextPaletteElementViewImpl; import org.kie.workbench.common.stunner.core.client.api.ShapeManager; import org.kie.workbench.common.stunner.core.client.components.glyph.DefinitionGlyphTooltip; import org.kie.workbench.common.stunner.core.client.components.palette.model.GlyphPaletteItem; import org.kie.workbench.common.stunner.core.client.components.palette.model.HasPaletteItems; import org.kie.workbench.common.stunner.core.client.components.palette.model.definition.DefinitionPaletteCategory; import org.kie.workbench.common.stunner.core.client.components.palette.model.definition.DefinitionPaletteItem; import org.kie.workbench.common.stunner.core.client.components.palette.model.definition.DefinitionSetPalette; import org.kie.workbench.common.stunner.core.client.components.palette.view.PaletteGrid; import org.kie.workbench.common.stunner.core.client.shape.factory.ShapeFactory; @Dependent public class LienzoDefinitionSetFlatPaletteImpl extends AbstractLienzoGlyphItemsPalette<HasPaletteItems<? extends GlyphPaletteItem>, LienzoPaletteViewImpl> implements LienzoDefinitionSetFlatPalette { private String lastCategory = null; private final List<GlyphPaletteItem> items = new LinkedList<>(); protected LienzoDefinitionSetFlatPaletteImpl() { this(null, null, null); } @Inject public LienzoDefinitionSetFlatPaletteImpl(final ShapeManager shapeManager, final LienzoPaletteViewImpl view, final DefinitionGlyphTooltip definitionGlyphTooltip) { super(shapeManager, definitionGlyphTooltip, view); } @PostConstruct public void init() { super.doInit(); } @Override protected void doBind() { items.clear(); final DefinitionSetPalette definitionSetPalette = (DefinitionSetPalette) paletteDefinition; final List<DefinitionPaletteCategory> categories = definitionSetPalette.getItems(); if (null != categories && !categories.isEmpty()) { final PaletteGrid grid = getGrid(); for (final DefinitionPaletteCategory category : categories) { final List<DefinitionPaletteItem> categoryItems = category.getItems(); if (null != categoryItems && !categoryItems.isEmpty()) { for (final GlyphPaletteItem item : categoryItems) { addGlyphItemIntoView(item, grid); items.add(item); } // TODO: addSeparatorIntoView( grid ); - Too much height as using static grid size. } } } } @Override protected ShapeFactory getShapeFactory() { final ShapeFactory f = super.getShapeFactory(); if (null == f) { final DefinitionSetPalette definitionSetPalette = (DefinitionSetPalette) paletteDefinition; return shapeManager.getDefaultShapeSet(definitionSetPalette.getDefinitionSetId()).getShapeFactory(); } return f; } @Override public List<GlyphPaletteItem> getItems() { return items; } protected void addTextIntoView(final String text, final PaletteGrid grid) { final LienzoTextPaletteElementView separatorPaletteTextView = new LienzoTextPaletteElementViewImpl(text, "Verdana", 10); addElementIntoView(separatorPaletteTextView); } protected void addSeparatorIntoView(final PaletteGrid grid) { final LienzoSeparatorPaletteElementView separatorPaletteElementView = new LienzoSeparatorPaletteElementViewImpl(grid.getIconSize(), grid.getIconSize()); addElementIntoView(separatorPaletteElementView); } protected void addElementIntoView(final LienzoPaletteElementView paletteElementView) { itemViews.add(paletteElementView); view.add(paletteElementView); } }