org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.info.GadgetInfoWidget.java Source code

Java tutorial

Introduction

Here is the source code for org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.info.GadgetInfoWidget.java

Source

/**
 * Copyright 2010 Google 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.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.info;

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;

import org.waveprotocol.wave.client.wavepanel.impl.toolbar.gadget.GadgetInfo;

/**
 * Widget implementation of a blip link info popup.
 *
 * @author vega113@gmail.com (Yuri Z.)
 */
public final class GadgetInfoWidget extends Composite {

    interface Binder extends UiBinder<CaptionPanel, GadgetInfoWidget> {
    }

    /** Resources used by this widget. */
    public interface Resources extends ClientBundle {
        /** CSS */
        @Source("GadgetInfoWidget.css")
        Style style();
    }

    interface Style extends CssResource {

        String explanation();

        String link();

        String self();

        String title();

        String valueTxt();

        String gadgetImg();

        String urlStyle();

        String textInfoPnl();

        String imgInfoPnl();
    }

    private final static Binder BINDER = GWT.create(Binder.class);

    @UiField(provided = true)
    final static Resources res = GWT.<Resources>create(Resources.class);

    @UiField(provided = true)
    final static Style style = res.style();

    static {
        // StyleInjector's default behaviour of deferred injection messes up
        // popups, which do synchronous layout queries for positioning. Therefore,
        // we force synchronous injection.
        StyleInjector.inject(style.getText(), true);
    }

    private static final HTML NO_IMAGE = new HTML("No image");

    @UiField
    Label name;

    @UiField
    Label description;

    @UiField
    Label primaryCategory;

    @UiField
    Label secondaryCategory;

    @UiField
    Label gadgetUrl;

    @UiField
    Label author;

    @UiField
    Label submittedby;

    @UiField
    VerticalPanel gadgetImagePanel;

    private Image gadgetImage;

    /**
     * Creates link info popup.
     */
    public GadgetInfoWidget() {
        initWidget(BINDER.createAndBindUi(this));
    }

    public void setGadgetInfo(final GadgetInfo gadgetInfo) {
        gadgetImagePanel.clear();
        String imageUrl = gadgetInfo.getImageUrl();
        if (false && imageUrl != null && !imageUrl.isEmpty()) {
            gadgetImage = new Image(new ImageResource() {

                @Override
                public String getName() {
                    return gadgetInfo.getName();
                }

                @Override
                public boolean isAnimated() {
                    return false;
                }

                @Override
                public int getWidth() {
                    return 150;
                }

                @Override
                public String getURL() {
                    return gadgetInfo.getImageUrl();
                }

                @Override
                public int getTop() {
                    return 0;
                }

                @Override
                public int getLeft() {
                    return 0;
                }

                @Override
                public int getHeight() {
                    return 150;
                }
            });
            gadgetImagePanel.add(gadgetImage);
        }
        gadgetUrl.setText(gadgetInfo.getGadgetUrl());
        name.setText(gadgetInfo.getName());
        description.setText(gadgetInfo.getDescription());
        primaryCategory.setText(gadgetInfo.getPrimaryCategory().getValue());
        secondaryCategory.setText(gadgetInfo.getSecondaryCategory().getValue());
        author.setText(gadgetInfo.getAuthor());
        submittedby.setText(gadgetInfo.getSubmittedBy());
    }
}