/*
* 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.gwt.client.action.menu;
import com.google.gwt.core.client.GWT;
import com.smartgwt.client.Version;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
import org.geomajas.command.EmptyCommandRequest;
import org.geomajas.command.dto.CopyrightRequest;
import org.geomajas.command.dto.CopyrightResponse;
import org.geomajas.global.CopyrightInfo;
import org.geomajas.gwt.client.Geomajas;
import org.geomajas.gwt.client.action.MenuAction;
import org.geomajas.gwt.client.command.AbstractCommandCallback;
import org.geomajas.gwt.client.command.GwtCommand;
import org.geomajas.gwt.client.command.GwtCommandDispatcher;
import org.geomajas.gwt.client.i18n.GlobalMessages;
import org.geomajas.gwt.client.util.WidgetLayout;
import java.util.Collection;
/**
* Menu item that tells the user something about the Geomajas technology.
*
* @author Pieter De Graef
*/
public class AboutAction extends MenuAction {
private static final GlobalMessages MESSAGES = GWT.create(GlobalMessages.class);
public AboutAction() {
super(MESSAGES.aboutMenuTitle(), WidgetLayout.iconTips);
}
public void onClick(MenuItemClickEvent event) {
VLayout layout = new VLayout();
layout.setPadding(WidgetLayout.marginLarge);
Img logo = new Img(WidgetLayout.aboutGeomajasLogo);
layout.addMember(logo);
HTMLFlow flow = new HTMLFlow("<h2>Geomajas " + Geomajas.getVersion() + "</h2>" +
"<p>" + MESSAGES.aboutCopyRight() + "</p>" + "<p>" + MESSAGES.aboutVisit()
+ ": <a href='http://www.geomajas.org/'>http://www.geomajas.org/</a><br />"
+ MESSAGES.sourceUrl() + ": <a href='https://github.com/geomajas/geomajas-project-client-gwt'>" +
"https://github.com/geomajas/geomajas-project-client-gwt</a> </p>");
HTMLFlow flowSmartgwt = new HTMLFlow("<h2>SmartGWT " + Version.getVersion() +
" " + Version.getSCVersionNumber() + "</h2>");
layout.addMember(flow);
layout.addMember(flowSmartgwt);
final HTMLFlow copyrightWidget = new HTMLFlow("Copyright info");
layout.addMember(copyrightWidget);
GwtCommand commandRequest = new GwtCommand(CopyrightRequest.COMMAND);
commandRequest.setCommandRequest(new EmptyCommandRequest());
GwtCommandDispatcher.getInstance().execute(commandRequest, new AbstractCommandCallback<CopyrightResponse>() {
public void execute(CopyrightResponse response) {
Collection<CopyrightInfo> copyrights = response.getCopyrights();
StringBuilder sb = new StringBuilder("<h2>");
sb.append(MESSAGES.copyrightListTitle());
sb.append("</h2><ul>");
for (CopyrightInfo copyright : copyrights) {
sb.append("<li>");
sb.append(copyright.getKey());
sb.append(" : ");
sb.append(MESSAGES.licensedAs());
sb.append(" ");
sb.append(copyright.getCopyright());
sb.append(" : <a target=\"_blank\" href=\"");
sb.append(copyright.getLicenseUrl());
sb.append("\">");
sb.append(copyright.getLicenseName());
sb.append("</a>");
if (null != copyright.getSourceUrl()) {
sb.append(" ");
sb.append(MESSAGES.sourceUrl());
sb.append(" : ");
sb.append(" <a target=\"_blank\" href=\"");
sb.append(copyright.getSourceUrl());
sb.append("\">");
sb.append(copyright.getSourceUrl());
sb.append("</a>");
}
sb.append("</li>");
}
sb.append("</ul>");
copyrightWidget.setContents(sb.toString());
}
});
Window window = new Window();
window.setHeaderIcon(WidgetLayout.iconGeomajas);
window.setTitle(MESSAGES.aboutMenuTitle());
window.setWidth(WidgetLayout.aboutGeomajasWidth);
window.setHeight(WidgetLayout.aboutGeomajasHeight);
window.setAutoCenter(true);
window.setPadding(WidgetLayout.marginLarge);
window.addItem(layout);
window.draw();
}
}