Java tutorial
/******************************************************************************* * 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); } }