package bndtools;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;

import bndtools.central.Central;

public class RefreshReposHandler extends AbstractHandler {

	@Override
	public Object execute(ExecutionEvent event) throws ExecutionException {
		new WorkspaceJob("Refreshing repositories...") {

			@Override
			public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
				if (monitor == null)
					monitor = new NullProgressMonitor();

				try {
					Central.refreshPlugins();
				} catch (Exception e) {
					return new Status(IStatus.ERROR, Plugin.PLUGIN_ID, "Failed to refresh repositories", e);
				}

				return Status.OK_STATUS;
			}
		}.schedule();

		return null;
	}
}
