Package com.google.livingstories.client.lsp.views.contentitems

Source Code of com.google.livingstories.client.lsp.views.contentitems.ImagePopupView$ImagePopupViewUiBinder

/**
* 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 com.google.livingstories.client.lsp.views.contentitems;

import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.livingstories.client.AssetContentItem;
import com.google.livingstories.client.lsp.BylineWidget;
import com.google.livingstories.client.lsp.LspMessageHolder;
import com.google.livingstories.client.lsp.event.EventBus;
import com.google.livingstories.client.lsp.event.PopupImageLoadedEvent;
import com.google.livingstories.client.lsp.views.Resources;
import com.google.livingstories.client.ui.OverlayLabel;
import com.google.livingstories.client.util.BoundedImage;

/**
* Popup view for an image.  Fires a PopupImageLoadedEvent through the event bus so
* popup panels can recenter themselves based on the size of the image.
*/
public class ImagePopupView extends Composite {
  private static ImagePopupViewUiBinder uiBinder = GWT.create(ImagePopupViewUiBinder.class);
  interface ImagePopupViewUiBinder extends UiBinder<Widget, ImagePopupView> {
  }

  private static String BROKEN_LINK_TEXT = LspMessageHolder.consts.imageUnavailable();
  private static final int WINDOW_PADDING = 200;

  @UiField SimplePanel image;
  @UiField OverlayLabel caption;
  @UiField SimplePanel byline;

  public ImagePopupView(final AssetContentItem contentItem) {
    initWidget(uiBinder.createAndBindUi(this));
   
    new BoundedImage(
        contentItem.getContent(),
        Window.getClientWidth() - WINDOW_PADDING,
        Window.getClientHeight() - WINDOW_PADDING) {
      @Override
      public void onImageLoad(boolean failed) {
        PopupImageLoadedEvent event;
        if (failed) {
          Label brokenLink = new Label(BROKEN_LINK_TEXT);
          brokenLink.setStylePrimaryName(Resources.INSTANCE.css().error());
          image.setWidget(brokenLink);
          image.setSize("250px", "150px");
          event = new PopupImageLoadedEvent(250, 150);
        } else {
          image.setWidget(this);
          event = new PopupImageLoadedEvent(this.getDisplayWidth(), this.getDisplayHeight());
        }
        caption.setText(contentItem.getCaption());
        if (!contentItem.getContributorIds().isEmpty()) {
          byline.setWidget(new BylineWidget(contentItem, false));
        }
        EventBus.INSTANCE.fireEvent(event);
      }
    };
  }
}
TOP

Related Classes of com.google.livingstories.client.lsp.views.contentitems.ImagePopupView$ImagePopupViewUiBinder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.