/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* 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
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.project;
import org.eclipse.che.ide.api.editor.reconciler.ReconcilingStrategy;
/**
* Keeper for the state of Resolving Project process.
* Resolving Project process has the meaning for {@link ReconcilingStrategy}.
* For example, 'Resolving Project process' for a Maven project means reimporting maven model.
* <p/>
* <ul> Makes it possible to:
* <li> keep the state of Resolving Project process</li>
* <li> get the state of Resolving Project process when you need</li>
* <li> notify the corresponding listener when the state of Resolving Project process has been changed</li>
* </ul>
*
* @author Roman Nikitenko
*/
public interface ResolvingProjectStateHolder {
/** Describes state of Resolving Project process. */
public enum ResolvingProjectState {
NOT_RESOLVED, IN_PROGRESS, RESOLVED
}
/**
* Returns the current state for Resolving Project process.
* See {@link ResolvingProjectState}
*/
ResolvingProjectState getState();
/**
* Returns the project type for which it holds the state of Resolving project process.
*/
String getProjectType();
/**
* Adds {@link ResolvingProjectStateListener} that should be called
* every time when the state of Resolving Project process has been changed.
*/
void addResolvingProjectStateListener(ResolvingProjectStateListener listener);
/**
* Removes {@link ResolvingProjectStateListener} to don't get notification about changes of the state of Resolving Project process.
*/
void removeResolvingProjectStateListener(ResolvingProjectStateListener listener);
/** Listener that will be called when resolving project state has been changed. */
public interface ResolvingProjectStateListener {
/**
* Will be called when the resolving project state has been changed
*
* @param state
* the current state of Resolving Project process, see {@link ResolvingProjectState}
*/
void onResolvingProjectStateChanged(ResolvingProjectState state);
}
}