package rocks.inspectit.ui.rcp.wizard; import java.util.Objects; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import rocks.inspectit.ui.rcp.InspectIT; import rocks.inspectit.ui.rcp.InspectITImages; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition; import rocks.inspectit.ui.rcp.wizard.page.DefineCmrWizardPage; import rocks.inspectit.ui.rcp.wizard.page.PreviewCmrDataWizardPage; /** * Wizard for editing the {@link rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition}. * * @author Ivan Senic * */ public class EditCmrRepositoryWizard extends Wizard implements INewWizard { /** * {@link DefineCmrWizardPage}. */ private DefineCmrWizardPage defineCmrWizardPage; /** * {@link PreviewCmrDataWizardPage}. */ private PreviewCmrDataWizardPage previewCmrDataWizardPage; /** * Repository to edit. */ private CmrRepositoryDefinition cmrRepositoryDefinition; /** * Default constructor. * * @param cmrRepositoryDefinition * Repository to edit */ public EditCmrRepositoryWizard(CmrRepositoryDefinition cmrRepositoryDefinition) { Assert.isNotNull(cmrRepositoryDefinition); this.setWindowTitle("Edit Central Management Repository (CMR)"); this.setDefaultPageImageDescriptor(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_WIZBAN_EDIT)); this.cmrRepositoryDefinition = cmrRepositoryDefinition; } /** * {@inheritDoc} */ @Override public void init(IWorkbench workbench, IStructuredSelection selection) { } /** * {@inheritDoc} */ @Override public void addPages() { defineCmrWizardPage = new DefineCmrWizardPage("Edit CMR Repository", cmrRepositoryDefinition); addPage(defineCmrWizardPage); previewCmrDataWizardPage = new PreviewCmrDataWizardPage(); addPage(previewCmrDataWizardPage); } /** * {@inheritDoc} */ @Override public IWizardPage getNextPage(IWizardPage page) { if (Objects.equals(page, defineCmrWizardPage)) { previewCmrDataWizardPage.cancel(); previewCmrDataWizardPage.update(defineCmrWizardPage.getCmrRepositoryDefinition()); } return super.getNextPage(page); } /** * {@inheritDoc} */ @Override public boolean performFinish() { CmrRepositoryDefinition editedRepository = defineCmrWizardPage.getCmrRepositoryDefinition(); if (Objects.equals(editedRepository, cmrRepositoryDefinition)) { // if they equal port and IP did not change just update the name/desc cmrRepositoryDefinition.setName(editedRepository.getName()); cmrRepositoryDefinition.setDescription(editedRepository.getDescription()); InspectIT.getDefault().getCmrRepositoryManager().updateCmrRepositoryDefinitionData(cmrRepositoryDefinition); } else { // if not then remove and add InspectIT.getDefault().getCmrRepositoryManager().removeCmrRepositoryDefinition(cmrRepositoryDefinition); InspectIT.getDefault().getCmrRepositoryManager().addCmrRepositoryDefinition(editedRepository); } return true; } }