/* * SK's Minecraft Launcher * Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors * Please see LICENSE.txt for license information. */ package com.skcraft.concurrency; public class SettableProgress implements ProgressObservable { private ProgressObservable delegate; private String status = ""; private double progress = -1; public SettableProgress(String status, double progress) { this.status = status; this.progress = progress; } public SettableProgress(ProgressObservable observable) { this.delegate = observable; } public synchronized void observe(ProgressObservable observable) { delegate = observable; } public synchronized void set(String status, double progress) { delegate = null; this.progress = progress; this.status = status; } @Override public double getProgress() { ProgressObservable delegate = this.delegate; return delegate != null ? delegate.getProgress() : progress; } @Override public String getStatus() { ProgressObservable delegate = this.delegate; return delegate != null ? delegate.getStatus() : status; } }