/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2015 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/
package org.geomajas.widget.layer.client.view;
import com.google.gwt.core.client.GWT;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.LayoutSpacer;
import com.smartgwt.client.widgets.layout.VLayout;
import org.geomajas.gwt.client.util.WidgetLayout;
import org.geomajas.widget.layer.client.i18n.LayerMessages;
import org.geomajas.widget.layer.client.presenter.CreateClientWmsPresenter;
/**
* Inspired by {@link org.geomajas.plugin.deskmanager.client.gwt.manager.datalayer.NewLayerModelWizardWindow}.
* @author Kristof Heirwegh
* @author Jan Venstermans
*/
public class ControllerButtonsViewImpl extends Window implements CreateClientWmsPresenter.ControllerButtonsView {
private static final LayerMessages MESSAGES = GWT.create(LayerMessages.class);
private CreateClientWmsPresenter.ControllersButtonHandler controllersButtonHandler;
private static final int WIDTH = 650;
private static final int HEIGHT = 400;
private Canvas panelContainer;
private Label warningLabel;
/* buttons */
private IButton saveButton;
private IButton cancelButton;
private IButton prevButton;
private IButton nextButton;
public ControllerButtonsViewImpl() {
/* window config */
setHeight(HEIGHT);
setWidth(WIDTH);
setCanDragReposition(true);
setCanDragResize(false);
setKeepInParentRect(true);
setOverflow(Overflow.HIDDEN);
setAutoCenter(true);
setShowCloseButton(false);
setShowMinimizeButton(false);
setShowMaximizeButton(false);
setIsModal(true);
setShowModalMask(true);
setPadding(10);
panelContainer = new Canvas();
panelContainer.setWidth100();
panelContainer.setHeight("*");
// ----------------------------------------------------------
warningLabel = new Label();
warningLabel.setWidth100();
warningLabel.setAutoHeight();
warningLabel.setPadding(3);
warningLabel.setOverflow(Overflow.VISIBLE);
warningLabel.setVisible(false);
// ----------------------------------------------------------
HLayout buttons = new HLayout(10);
buttons.setWidth100();
buttons.setHeight(25);
prevButton = new IButton(MESSAGES.layerListClientWmsWizardPreviousButtonText());
prevButton.setIcon(WidgetLayout.iconZoomLast);
prevButton.setDisabled(true);
prevButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
controllersButtonHandler.onPrevious();
}
});
nextButton = new IButton(MESSAGES.layerListClientWmsWizardNextButtonText());
nextButton.setIcon(WidgetLayout.iconZoomNext);
nextButton.setDisabled(true);
nextButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
controllersButtonHandler.onNext();
}
});
saveButton = new IButton(MESSAGES.layerListClientWmsWizardSaveButtonText());
saveButton.setIcon(WidgetLayout.iconAdd);
saveButton.setDisabled(true);
saveButton.setVisible(false);
saveButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
controllersButtonHandler.onSave();
}
});
cancelButton = new IButton(MESSAGES.layerListClientWmsWizardCancelButtonText());
cancelButton.setIcon(WidgetLayout.iconCancel);
cancelButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
controllersButtonHandler.onCancel();
}
});
LayoutSpacer ls = new LayoutSpacer();
ls.setWidth("*");
buttons.addMember(ls);
buttons.addMember(prevButton);
buttons.addMember(nextButton);
buttons.addMember(saveButton);
buttons.addMember(cancelButton);
// ----------------------------------------------------------
VLayout vl = new VLayout(10);
vl.setWidth100();
vl.setMargin(10);
vl.addMember(panelContainer);
vl.addMember(warningLabel);
vl.addMember(buttons);
addItem(vl);
}
@Override
public void setControllersButtonHandler(CreateClientWmsPresenter.ControllersButtonHandler handler) {
this.controllersButtonHandler = handler;
}
@Override
public void setSaveButtonVisible(boolean visible) {
saveButton.setVisible(visible);
}
@Override
public void setCancelButtonVisible(boolean visible) {
cancelButton.setVisible(visible);
}
@Override
public void setNextButtonVisible(boolean visible) {
nextButton.setVisible(visible);
}
@Override
public void setPreviousButtonVisible(boolean visible) {
prevButton.setVisible(visible);
}
@Override
public void setSaveButtonEnabled(boolean enabled) {
saveButton.setDisabled(!enabled);
}
@Override
public void setCancelButtonEnabled(boolean enabled) {
cancelButton.setDisabled(!enabled);
}
@Override
public void setNextButtonEnabled(boolean enabled) {
nextButton.setDisabled(!enabled);
}
@Override
public void setPreviousButtonEnabled(boolean enabled) {
prevButton.setDisabled(!enabled);
}
@Override
public Canvas getPanelContainer() {
return panelContainer;
}
@Override
public void setWarningLabelText(String text, boolean error) {
if (text == null || text.isEmpty()) {
warningLabel.clear();
warningLabel.setVisible(false);
} else {
warningLabel.setVisible(true);
warningLabel.setContents("<b><i>" + text + "</i></b>");
}
warningLabel.setBackgroundColor(error ? "#FFCCCC" : "transparent");
}
@Override
public void setSubTitle(String subTitle) {
setTitle(MESSAGES.layerListClientWmsWizardGeneralTitle() + " : " + subTitle);
}
}