cc.kune.gspace.client.share.ShareToTheNetPanel.java Source code

Java tutorial

Introduction

Here is the source code for cc.kune.gspace.client.share.ShareToTheNetPanel.java

Source

/*******************************************************************************
 * Copyright (C) 2007, 2013 The kune development team (see CREDITS for details)
 * This file is part of kune.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *******************************************************************************/

package cc.kune.gspace.client.share;

import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionStyles;
import cc.kune.common.client.actions.ui.ActionSimplePanel;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.shared.i18n.I18n;
import cc.kune.gspace.client.actions.share.ShareInDiggMenuItem;
import cc.kune.gspace.client.actions.share.ShareInFacebookMenuItem;
import cc.kune.gspace.client.actions.share.ShareInGPlusMenuItem;
import cc.kune.gspace.client.actions.share.ShareInIdenticaMenuItem;
import cc.kune.gspace.client.actions.share.ShareInLinkedinMenuItem;
import cc.kune.gspace.client.actions.share.ShareInRedditMenuItem;
import cc.kune.gspace.client.actions.share.ShareInTumblrMenuItem;
import cc.kune.gspace.client.actions.share.ShareInTwitterMenuItem;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.inject.Inject;
import com.google.inject.Singleton;

@Singleton
public class ShareToTheNetPanel extends Composite implements ShareToTheNetView {
    private final TextBox linkToShare;

    @Inject
    public ShareToTheNetPanel(final ShareInTwitterMenuItem twitterItem, final ShareInGPlusMenuItem gPlusItem,
            final ShareInIdenticaMenuItem identicaItem, final ShareInLinkedinMenuItem linkedItem,
            final ShareInTumblrMenuItem tumblrItem, final ShareInDiggMenuItem diggItem,
            final ShareInRedditMenuItem redditItem, final ShareInFacebookMenuItem facebookItem,
            final ActionSimplePanel actionsPanel) {
        final FlowPanel flow = new FlowPanel();

        final Label shareThisLinkTitle = new Label(I18n.t("share this link via:"));
        shareThisLinkTitle.setStyleName("k-sharetonet-introtexts");

        final Label linkToShareIntro = new Label(I18n.t("Link to share:"));
        linkToShareIntro.addStyleName("k-sharetonet-introtexts");
        linkToShare = new TextBox();
        linkToShare.setVisibleLength(35);
        linkToShare.setReadOnly(true);
        linkToShare.addStyleName("k-sharelink-box");

        linkToShare.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(final ClickEvent event) {
                linkToShare.setSelectionRange(0, linkToShare.getValue().length());
            }
        });

        flow.add(linkToShareIntro);
        flow.add(linkToShare);
        flow.add(shareThisLinkTitle);

        actionsPanel.add(btnFrom(twitterItem));
        actionsPanel.add(btnFrom(gPlusItem));
        actionsPanel.add(btnFrom(facebookItem));
        actionsPanel.add(btnFrom(redditItem));
        actionsPanel.add(btnFrom(diggItem));
        actionsPanel.add(btnFrom(linkedItem));
        actionsPanel.add(btnFrom(tumblrItem));

        flow.add(actionsPanel);

        shareThisLinkTitle.addStyleName("k-fl");
        actionsPanel.addStyleName("k-fl");

        initWidget(flow);
    }

    private ButtonDescriptor btnFrom(final MenuItemDescriptor menuItem) {
        // We convert ShareIn menu items to small buttons
        final ButtonDescriptor btn = new ButtonDescriptor(menuItem);
        final String text = (String) menuItem.getValue(Action.NAME);
        btn.withParent(GuiActionDescrip.NO_PARENT).withText("").withToolTip(text)
                .withStyles(ActionStyles.MENU_BTN_STYLE_NO_BORDER_LEFT);
        return btn;
    }

    @Override
    public void setLinkToShare(final String link) {
        linkToShare.setText(link);
    }
}