blob: f133e4d7d12943d1ee10ac289c55f096d05e0d07 [file] [log] [blame]
// Copyright (C) 2009 The Android Open Source Project
//
// 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 com.google.gwtexpui.progress.client;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
/**
* A simple progress bar with a text label.
*
* <p>The bar is 200 pixels wide and 20 pixels high. To keep the implementation simple and
* lightweight this dimensions are fixed and shouldn't be modified by style overrides in client code
* or CSS.
*/
public class ProgressBar extends Composite {
static {
ProgressResources.I.css().ensureInjected();
}
private final String callerText;
private final Label bar;
private final Label msg;
private int value;
/** Create a bar with no message text. */
public ProgressBar() {
this("");
}
/** Create a bar displaying the specified message. */
public ProgressBar(String text) {
if (text == null || text.length() == 0) {
callerText = "";
} else {
callerText = text + " ";
}
final FlowPanel body = new FlowPanel();
body.setStyleName(ProgressResources.I.css().container());
msg = new Label(callerText);
msg.setStyleName(ProgressResources.I.css().text());
body.add(msg);
bar = new Label("");
bar.setStyleName(ProgressResources.I.css().bar());
body.add(bar);
initWidget(body);
}
/** @return the current value of the progress meter. */
public int getValue() {
return value;
}
/** Update the bar's percent completion. */
public void setValue(int pComplete) {
assert 0 <= pComplete && pComplete <= 100;
value = pComplete;
bar.setWidth(2 * pComplete + "px");
msg.setText(callerText + pComplete + "%");
}
}