/*******************************************************************************
* Copyright 2011 Antti Havanko
*
* This file is part of Motiver.fi.
* Motiver.fi is licensed under one open source license and one commercial license.
*
* Commercial license: This is the appropriate option if you want to use Motiver.fi in
* commercial purposes. Contact license@motiver.fi for licensing options.
*
* Open source license: This is the appropriate option if you are creating an open source
* application with a license compatible with the GNU GPL license v3. Although the GPLv3 has
* many terms, the most important is that you must provide the source code of your application
* to your users so they can be free to modify your application for their own needs.
******************************************************************************/
package com.delect.motiver.client.view.blog;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Widget;
import com.delect.motiver.client.AppController;
import com.delect.motiver.client.presenter.blog.SingleBlogPagePresenter;
import com.delect.motiver.client.presenter.blog.SingleBlogPagePresenter.BlogPageHandler;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
public class SingleBlogPageView extends SingleBlogPagePresenter.SingleBlogPageDisplay {
private BlogPageHandler handler;
//panels
private LayoutContainer panelBody = new LayoutContainer();
private LayoutContainer panelFriends = new LayoutContainer();
private LayoutContainer panelLinkToBlog = new LayoutContainer();
private LayoutContainer panelUser = new LayoutContainer();
private long uid = 0;
public SingleBlogPageView() {
//right panel
LayoutContainer panelRight = new LayoutContainer();
panelRight.setLayout(new RowLayout());
panelRight.setStyleAttribute("float", "right");
panelRight.setStyleAttribute("margin-left", "40px");
panelRight.setWidth(200);
this.add(panelRight);
//user whose blog this is
panelUser.setLayout(new RowLayout());
Text textUser = new Text(AppController.Lang.BlogsOwner());
textUser.setStyleName("label-title-medium");
panelUser.add(textUser, new RowData(-1, -1, new Margins(0, 0, 20, 0)));
panelRight.add(panelUser, new RowData(-1, -1, new Margins(40, 0, 100, 50)));
//friends
panelRight.add(panelFriends);
panelBody.setStyleAttribute("overflow", "auto");
panelBody.add(panelLinkToBlog, new RowData(-1, -1, new Margins(0, 0, 20, 0)));
this.add(panelBody);
}
@Override
public Widget asWidget() {
return this;
}
@Override
public LayoutContainer getBodyContainer() {
return panelBody;
}
@Override
public LayoutContainer getFriendsContainer() {
return panelFriends;
}
@Override
public LayoutContainer getUserContainer() {
return panelUser;
}
@Override
public void setHandler(BlogPageHandler handler) {
this.handler = handler;
}
@Override
public void setShowSingleDay(boolean singleDay) {
panelLinkToBlog.setVisible( singleDay );
if(uid > 0) {
//link to blog
Anchor link = new Anchor();
link.setHTML("Go to <fb:name uid=\"" + uid + "\" useyou=false linked=false possessive=true></fb:name> blog");
link.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
handler.showFullBlog();
}
});
panelLinkToBlog.removeAll();
panelLinkToBlog.add(link);
panelLinkToBlog.layout();
}
}
@Override
public void setUid(long uid) {
this.uid = uid;
}
}