stroom.widget.xsdbrowser.client.view.XSDDisplayBoxTitle.java Source code

Java tutorial

Introduction

Here is the source code for stroom.widget.xsdbrowser.client.view.XSDDisplayBoxTitle.java

Source

/*
 * Copyright 2016 Crown Copyright
 *
 * 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 stroom.widget.xsdbrowser.client.view;

import com.google.gwt.dom.client.Style.Cursor;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.DoubleClickEvent;
import com.google.gwt.event.dom.client.DoubleClickHandler;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;

import stroom.widget.util.client.DoubleSelectTest;

public class XSDDisplayBoxTitle extends Composite {
    private final Image imgImage;
    private final Label lblTitle;
    private final ClickPanel layout;
    private final DoubleSelectTest doubleClickTest = new DoubleSelectTest();

    public XSDDisplayBoxTitle(final ImageResource image, final String title, final XSDModel model,
            final XSDNode node) {
        imgImage = AbstractImagePrototype.create(image).createImage();
        lblTitle = new Label(title, false);
        lblTitle.getElement().setAttribute("unselectable", "on");
        lblTitle.getElement().getStyle().setColor("white");

        final HorizontalPanel hp = new HorizontalPanel();
        hp.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
        hp.add(imgImage);
        hp.add(lblTitle);

        imgImage.addStyleName("marginRight");

        layout = new ClickPanel();
        layout.add(hp);

        if (node != null) {
            setSelectable(true);
            layout.addClickHandler(new ClickHandler() {
                @Override
                public void onClick(final ClickEvent event) {
                    final boolean doubleClick = doubleClickTest.test(node);
                    model.setSelectedItem(node, doubleClick);
                }
            });
            layout.addDoubleClickHandler(new DoubleClickHandler() {
                @Override
                public void onDoubleClick(final DoubleClickEvent event) {
                    model.setSelectedItem(node, true);
                }
            });
        }

        initWidget(layout);
    }

    private void setSelectable(final boolean selectable) {
        if (selectable) {
            layout.getElement().getStyle().setCursor(Cursor.POINTER);
            imgImage.getElement().getStyle().setCursor(Cursor.POINTER);
            lblTitle.getElement().getStyle().setCursor(Cursor.POINTER);
        } else {
            layout.getElement().getStyle().setCursor(Cursor.DEFAULT);
            imgImage.getElement().getStyle().setCursor(Cursor.DEFAULT);
            lblTitle.getElement().getStyle().setCursor(Cursor.DEFAULT);
        }
    }
}