package au.com.vaadinutils.dashboard.example;
import org.apache.commons.lang3.StringUtils;
import com.vaadin.server.ExternalResource;
import com.vaadin.server.FontAwesome;
import com.vaadin.ui.BrowserFrame;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.UI;
import com.vaadin.ui.themes.ValoTheme;
import au.com.vaadinutils.dashboard.BasePortal;
import au.com.vaadinutils.dashboard.BasePortalAdder;
import au.com.vaadinutils.dashboard.DashBoardController;
import au.com.vaadinutils.dashboard.Portal;
import au.com.vaadinutils.dashboard.PortalConfigDelgate;
import au.com.vaadinutils.dashboard.Tblportal;
import au.com.vaadinutils.editors.InputDialog;
import au.com.vaadinutils.editors.Recipient;
public class ExamplePortal extends BasePortalAdder
{
public ExamplePortal(String portalLayoutGuid)
{
super(portalLayoutGuid);
}
private static final long serialVersionUID = 1L;
@Override
public String getTitle()
{
return "Example title";
}
@Override
protected Enum<?> getPortalEnum()
{
return ExampleDashboardEnum.EXAMPLE;
}
@Override
protected Portal instancePortal(DashBoardController dashBoard, Tblportal portal)
{
return new IFramePortal(portal, dashBoard, this);
}
final static class IFramePortal extends BasePortal
{
private static final long serialVersionUID = 1L;
final BrowserFrame iFrame = new BrowserFrame();
public IFramePortal(Tblportal portal, DashBoardController dashBoard, PortalConfigDelgate configDelegate)
{
super(portal, dashBoard, configDelegate);
iFrame.setSizeFull();
String url = getConfigDelegate().getValueString(portal, "url");
if (StringUtils.isNotEmpty(url))
{
iFrame.setSource(new ExternalResource(url));
}
else
{
iFrame.setSource(new ExternalResource("http://www.bom.gov.au/products/IDR023.loop.shtml#skip"));
}
iFrame.setSizeFull();
addComponent(iFrame);
setExpandRatio(iFrame, 1.0f);
setSizeFull();
}
@Override
protected void addCustomHeaderButtons(HorizontalLayout controlLayout)
{
Button config = new Button(FontAwesome.COG);
config.setStyleName(ValoTheme.BUTTON_LINK);
config.addClickListener(new ClickListener()
{
private static final long serialVersionUID = -2021410912212917005L;
@Override
public void buttonClick(ClickEvent event)
{
InputDialog dialog = new InputDialog(UI.getCurrent(), "Set Web Address", "Web Address?",
new Recipient()
{
@Override
public boolean onOK(String input)
{
iFrame.setSource(new ExternalResource(input));
getConfigDelegate().setValue(getPortal(), "url", input);
return true;
}
@Override
public boolean onCancel()
{
return true;
}
});
String url = getConfigDelegate().getValueString(getPortal(), "url");
if (StringUtils.isNotEmpty(url))
{
dialog.setDefaultValue(url);
}
}
});
controlLayout.addComponent(config);
}
}
}