/*
 * 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.core.client.actions;

import com.ait.lienzo.client.core.event.NodeMouseClickHandler;
import com.ait.lienzo.client.core.shape.Picture;
import com.ait.lienzo.client.core.shape.Rectangle;
import com.ait.lienzo.shared.core.types.ColorName;
import com.google.gwt.resources.client.ImageResource;

public class StencilActionBuilder {

    private static final int HEIGHT_BOUNDING = 20;
    private static final int WIDTH_BOUNDING = 20;
    private static final int HEIGHT_PICTURE = 16;
    private static final int WIDTH_PICTURE = 16;

    public ActionShape build(final NodeMouseClickHandler clickHandler,
                             final ImageResource img) {
        final Rectangle bounding = getBoundingImage(clickHandler);
        final ActionShape shape = new ActionShape();
        shape.setBounding(bounding);
        new Picture(img,
                    shape::setPicture,
                    WIDTH_PICTURE,
                    HEIGHT_PICTURE,
                    false);
        return shape;
    }

    private Rectangle getBoundingImage(final NodeMouseClickHandler clickHandler) {
        final Rectangle bounding = new Rectangle(WIDTH_BOUNDING,
                                                 HEIGHT_BOUNDING).setX(0).setY(0).setStrokeColor(ColorName.WHITE.getValue());
        bounding.addNodeMouseClickHandler(clickHandler);
        return bounding;
    }
}
