All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jresearch.commons.gwt.app.client.widget.AboutDialog Maven / Gradle / Ivy

package org.jresearch.commons.gwt.app.client.widget;

import java.util.List;

import javax.annotation.Nonnull;

import org.fusesource.restygwt.client.Method;
import org.fusesource.restygwt.client.REST;
import org.jresearch.commons.gwt.app.client.resource.AppRs;
import org.jresearch.commons.gwt.client.mvc.AbstractMethodCallback;
import org.jresearch.commons.gwt.client.mvc.event.Bus;
import org.jresearch.commons.gwt.client.service.AboutRestService;
import org.jresearch.commons.gwt.shared.model.about.AboutModel;

import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.HasData;
import com.google.inject.Inject;
import com.sencha.gxt.widget.core.client.Dialog;

public class AboutDialog extends Dialog {

	@Inject
	public AboutDialog(@Nonnull final AboutRestService srv, final Bus bus) {

		setHeadingHtml(AppRs.MSG.aboutDialog());
		setModal(true);
		setResizable(true);
		setPixelSize(700, 350);
		setOnEsc(true);

		final CellTable versionTable = new CellTable<>();

		// Initialize the columns.
		initTableColumns(versionTable);

		new AsyncDataProvider() {
			@Override
			protected void onRangeChanged(final HasData display) {
				REST.withCallback(new AbstractMethodCallback>(bus) {
					@Override
					public void onSuccess(final Method method, final List response) {
						if (response != null) {
							versionTable.setRowCount(response.size());
							updateRowData(0, response);
						}
					}
				}).call(srv).getAll();
			}
		}.addDataDisplay(versionTable);

		add(versionTable);
	}

	/**
	 * Add the columns to the table.
	 */
	private static void initTableColumns(final CellTable versionTable) {
		addColumn(versionTable, AppRs.MSG.module(), 100, new TextColumn() {
			@Override
			public String getValue(final AboutModel object) {
				return object.getModuleName();
			}
		});
		addColumn(versionTable, AppRs.MSG.version(), 120, new TextColumn() {
			@Override
			public String getValue(final AboutModel object) {
				return object.getModuleVersion();
			}
		});
		addColumn(versionTable, AppRs.MSG.buildNumber(), 80, new TextColumn() {
			@Override
			public String getValue(final AboutModel object) {
				return object.getBuildNum();
			}
		});
		addColumn(versionTable, AppRs.MSG.buildAt(), 100, new TextColumn() {
			@Override
			public String getValue(final AboutModel object) {
				return object.getBuildDate();
			}
		});
		addColumn(versionTable, AppRs.MSG.buildOn(), 300, new TextColumn() {
			@Override
			public String getValue(final AboutModel object) {
				return object.getBuildServer();
			}
		});
	}

	private static void addColumn(final CellTable versionTable, final String header, final int pixelWidth, final TextColumn textColumn) {
		versionTable.addColumn(textColumn, header);
		versionTable.setColumnWidth(textColumn, pixelWidth, Unit.PX);

	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy