自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。

2010年4月21日水曜日

SmartGWT プログレスバーサンプル

GWTコンポーネントSmartGWTのプログレスバーサンプルをメモします。

コード詳細:

private int hBar1Value;
private int hBar2Value;

/**
 * This is the entry point method.
 */
public void onModuleLoad()
{

    VLayout horizontalBars = new VLayout(4);
    horizontalBars.setWidth(300);

    final Label hBar1Label = new Label("Current File Progress");
    hBar1Label.setHeight(16);
    horizontalBars.addMember(hBar1Label);

    final Progressbar hBar1 = new Progressbar();
    hBar1.setHeight(24);
    hBar1.setVertical(false);
    horizontalBars.addMember(hBar1);

    final Label hBar2Label = new Label("Total Progress");
    hBar2Label.setHeight(16);
    horizontalBars.addMember(hBar2Label);

    final Progressbar hBar2 = new Progressbar();
    hBar2.setVertical(false);
    hBar2.setHeight(24);
    horizontalBars.addMember(hBar2);

    final IButton buttonStart = new IButton("Start Demo");
    buttonStart.setAutoFit(true);
    buttonStart.addClickHandler(new ClickHandler()
    {
        public void onClick(ClickEvent event)
        {
            buttonStart.setDisabled(true);
            hBar1Value = 0;
            hBar2Value = 0;
            hBar1.setPercentDone(hBar1Value);
            hBar1Label.setContents("Current File Progress");
            hBar2.setPercentDone(hBar2Value);
            hBar2Label.setContents("Total Progress");

            new Timer()
            {
                public void run()
                {
                    hBar1Value += 1 + (int) (10 * Math.random());
                    if (hBar1Value > 100)
                    {

                        hBar1Value = 0;
                        hBar2Value += 1 + (int) (5 * Math.random());
                        if (hBar2Value >= 100)
                            hBar1Value = hBar2Value = 100;

                        hBar2.setPercentDone(hBar2Value);
                        hBar2Label.setContents("Total Progress: "
                                + hBar2Value + "%");
                    }
                    hBar1.setPercentDone(hBar1Value);
                    hBar1Label.setContents("Current File Progress: "
                            + hBar1Value + "%");

                    if (hBar2Value != 100)
                        schedule(5 + (int) (50 * Math.random()));
                    else
                        buttonStart.setDisabled(false);
                }
            }.schedule(50);
        }
    });

    HLayout buttonCanvas = new HLayout();
    buttonCanvas.setMargin(10);
    buttonCanvas.addMember(buttonStart);

    horizontalBars.addMember(buttonCanvas);

    Canvas canvas = new Canvas();
    canvas.addChild(horizontalBars);
    canvas.draw();
}

0 件のコメント:

コメントを投稿

ホームページ