/*
* Copyright (c) 2009-2011 Lockheed Martin Corporation
*
* 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
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.web.client.ui.common.dialog.tos;
import org.eurekastreams.server.domain.TermsOfServiceDTO;
import org.eurekastreams.web.client.events.EventBus;
import org.eurekastreams.web.client.ui.Session;
import org.eurekastreams.web.client.ui.common.dialog.BaseDialogContent;
import org.eurekastreams.web.client.ui.pages.master.StaticResourceBundle;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
/**
* The terms of service dialog.
*/
public class TermsOfServiceDialogContent extends BaseDialogContent
{
/**
* Terms of service.
*/
TermsOfServiceDTO tos;
/**
* Body of the modal.
*/
FlowPanel body = new FlowPanel();
/**
* Accept button.
*/
private final Hyperlink acceptTos;
/**
* Cancel button.
*/
private final Anchor cancelTos;
/**
* Confirm checkbox.
*/
private final CheckBox confirmCheckBox;
/**
* Constructor.
*
* @param inTos
* the terms of service.
* @param readOnly
* if the TOS modal is read only.
*/
public TermsOfServiceDialogContent(final TermsOfServiceDTO inTos, final boolean readOnly)
{
tos = inTos;
HTML tosText = new HTML(tos.getTermsOfService());
tosText.addStyleName(StaticResourceBundle.INSTANCE.coreCss().tosBody());
Label tosExplanation = new Label("Please confirm below you have read and understand the terms of service.");
tosExplanation.addStyleName(StaticResourceBundle.INSTANCE.coreCss().explanation());
Label tosHeader = new Label("Terms of Service");
tosHeader.addStyleName(StaticResourceBundle.INSTANCE.coreCss().header());
body.add(tosExplanation);
body.add(tosHeader);
body.add(tosText);
acceptTos = new Hyperlink("Accept", History.getToken());
acceptTos.addStyleName(StaticResourceBundle.INSTANCE.coreCss().agreeButton());
acceptTos.addStyleName(StaticResourceBundle.INSTANCE.coreCss().agreeButtonDisabled());
cancelTos = new Anchor("Cancel", "http://www.eurekastreams.org");
cancelTos.addStyleName(StaticResourceBundle.INSTANCE.coreCss().disagreeButton());
confirmCheckBox = new CheckBox("I have read and understand the terms of service.");
confirmCheckBox.addStyleName(StaticResourceBundle.INSTANCE.coreCss().confirmCheckbox());
if (!readOnly)
{
body.add(confirmCheckBox);
body.add(acceptTos);
body.add(cancelTos);
}
else
{
body.addStyleName(StaticResourceBundle.INSTANCE.coreCss().readOnlyTos());
}
final TermsOfServiceDialogModel model = new TermsOfServiceDialogModel(Session.getInstance(), EventBus
.getInstance());
new TermsOfServiceDialogController(this, model, EventBus.getInstance());
}
/**
* Add a handler to the agree button.
*
* @param handler
* the handler.
*/
public void addAgreeClickHandler(final ClickHandler handler)
{
acceptTos.addClickHandler(handler);
}
/**
* Add a value change handler to the checkbox.
*
* @param handler
* the handler.
*/
public void addConfirmCheckBoxValueHandler(final ValueChangeHandler<Boolean> handler)
{
confirmCheckBox.addValueChangeHandler(handler);
}
/**
* Get the body.
*
* @return the body.s
*/
public Widget getBody()
{
return body;
}
/**
* Get the CSS class for the modal.
*
* @return the CSS class.
*/
public String getCssName()
{
return StaticResourceBundle.INSTANCE.coreCss().termsOfServiceModal();
}
/**
* Get the title.
*
* @return the title.
*/
public String getTitle()
{
return "Terms of Service";
}
/**
* Respond to setting the accept checkbox value.
*
* @param agree
* the value.
*/
public void setAcceptEnabled(final Boolean agree)
{
if (agree)
{
acceptTos.removeStyleName(StaticResourceBundle.INSTANCE.coreCss().agreeButtonDisabled());
}
else
{
acceptTos.addStyleName(StaticResourceBundle.INSTANCE.coreCss().agreeButtonDisabled());
}
}
}