org.jabylon.team.git.util.ProgressMonitorWrapper.java Source code

Java tutorial

Introduction

Here is the source code for org.jabylon.team.git.util.ProgressMonitorWrapper.java

Source

/**
 * (C) Copyright 2013 Jabylon (http://www.jabylon.org) and others.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 */
package org.jabylon.team.git.util;

import java.text.MessageFormat;

import org.eclipse.core.runtime.SubMonitor;
import org.eclipse.jgit.lib.ProgressMonitor;

public class ProgressMonitorWrapper implements ProgressMonitor {

    private SubMonitor delegate;
    private SubMonitor currentChild;

    private static final String SUB_TASK_MESSAGE = "{0} of {1}";

    private int remainingTicks;
    int total;
    int current;

    public ProgressMonitorWrapper(SubMonitor delegate) {
        super();
        this.delegate = delegate;
    }

    @Override
    public void start(int totalTasks) {
        remainingTicks = (totalTasks) * 100;
        delegate.setWorkRemaining(remainingTicks);
    }

    @Override
    public void beginTask(String title, int totalWork) {
        if (currentChild != null)
            currentChild.done();
        total = totalWork;
        current = 0;
        if (totalWork <= 0) {
            //don't take those as full tasks since they are undetermined
            currentChild = delegate.newChild(0);
            currentChild.beginTask(title, 100);
        } else {
            currentChild = delegate.newChild(100);
            currentChild.beginTask(title, totalWork);

        }
        delegate.setTaskName(title);
    }

    @Override
    public void update(int completed) {
        current += completed;

        if (currentChild != null)
            currentChild.worked(completed);
        else
            delegate.worked(completed);
        delegate.subTask(MessageFormat.format(SUB_TASK_MESSAGE, current, total));
    }

    @Override
    public void endTask() {
        if (currentChild != null) {
            currentChild.done();
        }
        currentChild = null;

    }

    @Override
    public boolean isCancelled() {
        return delegate.isCanceled();
    }

}