package rocks.inspectit.ui.rcp.wizard;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import rocks.inspectit.shared.all.exception.BusinessException;
import rocks.inspectit.shared.cs.storage.label.management.AbstractLabelManagementAction;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.InspectITImages;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition.OnlineStatus;
import rocks.inspectit.ui.rcp.wizard.page.ManageLabelWizardPage;
/**
* Manage Labels wizard.
*
* @author Ivan Senic
*
*/
public class ManageLabelWizard extends Wizard implements INewWizard {
/**
* CMR to manage labels for.
*/
private CmrRepositoryDefinition cmrRepositoryDefinition;
/**
* Page.
*/
private ManageLabelWizardPage manageLabelsPage;
/**
* Default constructor.
*
* @param cmrRepositoryDefinition
* Repository to manage labels for.
*/
public ManageLabelWizard(CmrRepositoryDefinition cmrRepositoryDefinition) {
this.cmrRepositoryDefinition = cmrRepositoryDefinition;
this.setWindowTitle("Manage Labels");
this.setDefaultPageImageDescriptor(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_WIZBAN_LABEL));
}
/**
* {@inheritDoc}
*/
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
}
/**
* {@inheritDoc}
*/
@Override
public void addPages() {
manageLabelsPage = new ManageLabelWizardPage(cmrRepositoryDefinition);
addPage(manageLabelsPage);
}
/**
* {@inheritDoc}
*/
@Override
public boolean performFinish() {
List<AbstractLabelManagementAction> actions = manageLabelsPage.getManagementActions();
if (!actions.isEmpty()) {
if (cmrRepositoryDefinition.getOnlineStatus() != OnlineStatus.OFFLINE) {
try {
cmrRepositoryDefinition.getStorageService().executeLabelManagementActions(actions);
} catch (BusinessException e) {
InspectIT.getDefault().createErrorDialog("There was an exception trying to execute label management operation.", e, -1);
}
} else {
InspectIT.getDefault().createInfoDialog("Can not execute label management operation, selected CMR repository is offline.", -1);
}
}
return true;
}
/**
* Gets {@link #shouldRefreshStorages}.
*
* @return {@link #shouldRefreshStorages}
*/
public boolean isShouldRefreshStorages() {
return manageLabelsPage.isShouldRefreshStorages();
}
}