package org.activityinfo.ui.client.widget; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.SpanElement; import com.google.gwt.dom.client.Style; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; import org.activityinfo.i18n.shared.I18N; import org.activityinfo.i18n.shared.UiMessages; public class ProgressBar implements IsWidget { @UiField DivElement barElement; @UiField SpanElement screenReaderText; private final HTMLPanel rootElement; interface ProgressBarUiBinder extends UiBinder<HTMLPanel, ProgressBar> { } private static ProgressBarUiBinder ourUiBinder = GWT.create(ProgressBarUiBinder.class); public ProgressBar() { rootElement = ourUiBinder.createAndBindUi(this); } @Override public Widget asWidget() { return rootElement; } /** * * @param percentComplete a percentage between 0 and 100 */ public void setValue(int percentComplete) { assert percentComplete >= 0 && percentComplete <= 100; barElement.getStyle().setWidth(percentComplete, Style.Unit.PCT); barElement.setAttribute("aria-valuenow", Integer.toString(percentComplete)); screenReaderText.setInnerText(I18N.MESSAGES.percentComplete(percentComplete)); } public void setVisible(boolean visible) { rootElement.setVisible(visible); } public boolean isVisible() { return rootElement.isVisible(); } }