org.ebayopensource.turmeric.policy.adminui.client.view.SummaryPanel.java Source code

Java tutorial

Introduction

Here is the source code for org.ebayopensource.turmeric.policy.adminui.client.view.SummaryPanel.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
 * 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
 *******************************************************************************/
package org.ebayopensource.turmeric.policy.adminui.client.view;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.Widget;

/**
 * The Class SummaryPanel.
 */
public class SummaryPanel extends Composite {

    private FlowPanel panel;
    private ScrollPanel scroller;
    private Label headingLabel;
    private Image downloadImg;
    private String downloadUrl;
    private Image infoImg;
    private String info;
    private Image downloadImgLight;
    private Image infoImgLight;

    /**
    * Instantiates a new summary panel.
    */
    public SummaryPanel() {
        panel = new FlowPanel();
        panel.addStyleName("summary-panel-item");

        Grid headingGrid = new Grid(1, 2);

        headingLabel = new Label("");
        headingGrid.setWidget(0, 0, headingLabel);
        headingGrid.setWidth("100%");

        Grid buttonGrid = new Grid(1, 2);
        headingGrid.setWidget(0, 1, buttonGrid);
        headingGrid.getCellFormatter().setHorizontalAlignment(0, 1, HasHorizontalAlignment.ALIGN_RIGHT);

        infoImg = new Image();
        infoImg.setUrl("images/info.png");

        infoImgLight = new Image();
        infoImgLight.setUrl("images/info-light.png");

        PushButton ib = new PushButton(infoImg, infoImgLight);
        ib.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                if (info != null) {
                    InfoDialog dialog = new InfoDialog(false);
                    dialog.setMessage(info);
                    int x = infoImg.getAbsoluteLeft();
                    int y = infoImg.getAbsoluteTop() + infoImg.getOffsetHeight();
                    dialog.getDialog().setAutoHideEnabled(true);
                    dialog.getDialog().setPopupPosition(x, y);
                    dialog.getDialog().show();
                }
            }
        });

        downloadImg = new Image();
        downloadImg.setUrl("images/dwnld.png");
        downloadImg.addStyleName("dwnld");

        downloadImgLight = new Image();
        downloadImgLight.setUrl("images/dwnld-light.png");

        PushButton db = new PushButton(downloadImg, downloadImgLight);
        db.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent arg0) {
                final Element downloadIframe = RootPanel.get("__download").getElement();
                if (downloadIframe == null)
                    Window.open(downloadUrl, "_blank", "");
                else
                    DOM.setElementAttribute(downloadIframe, "src", downloadUrl);
            }
        });

        buttonGrid.setWidget(0, 0, ib);
        buttonGrid.setWidget(0, 1, db);

        panel.add(headingGrid);
        panel.setWidth("50em");
        scroller = new ScrollPanel();
        scroller.addStyleName("summary-scroll");
        panel.add(scroller);
        initWidget(panel);
    }

    /**
    * Sets the heading.
    * 
    * @param text
    *            the new heading
    */
    public void setHeading(String text) {
        headingLabel.setText(text);
    }

    /**
    * Sets the contents.
    * 
    * @param widget
    *            the new contents
    */
    public void setContents(Widget widget) {
        scroller.clear();
        scroller.add(widget);
    }

    /**
    * Gets the info button.
    * 
    * @return the info button
    */
    public HasClickHandlers getInfoButton() {
        return infoImg;
    }

    /**
    * Sets the info.
    * 
    * @param info
    *            the new info
    */
    public void setInfo(String info) {
        this.info = info;
    }

    /**
    * Sets the content container width.
    * 
    * @param width
    *            the new content container width
    */
    public void setContentContainerWidth(String width) {
        scroller.setWidth(width);
    }

    /**
    * Sets the content container height.
    * 
    * @param height
    *            the new content container height
    */
    public void setContentContainerHeight(String height) {
        scroller.setHeight(height);
    }

    /**
    * Gets the content container.
    * 
    * @return the content container
    */
    public Panel getContentContainer() {
        return scroller;
    }

    /**
    * Sets the download url.
    * 
    * @param url
    *            the new download url
    */
    public void setDownloadUrl(String url) {
        downloadUrl = url;
    }

}