/*
 * Copyright (c) 2013, the Dart project authors.
 * 
 * Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html
 * 
 * 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.dart.engine.services.refactoring;

/**
 * {@link ProgressMonitor} which ignores interactions.
 */
public class NullProgressMonitor implements ProgressMonitor {
  @Override
  public void beginTask(String name, int totalWork) {
  }

  @Override
  public void done() {
  }

  @Override
  public void internalWorked(double work) {
  }

  @Override
  public boolean isCanceled() {
    return false;
  }

  @Override
  public void setCanceled() {
  }

  @Override
  public void subTask(String name) {
  }

  @Override
  public void worked(int work) {
  }
}
