package name.abuchen.portfolio.ui.wizards.client;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import name.abuchen.portfolio.model.Client;
import name.abuchen.portfolio.model.ClientFactory;
import name.abuchen.portfolio.money.CurrencyUnit;
import name.abuchen.portfolio.ui.Images;
import name.abuchen.portfolio.ui.Messages;
import name.abuchen.portfolio.ui.wizards.AbstractWizardPage;
public class ClientMigrationDialog extends WizardDialog
{
private static class MigrationWizard extends Wizard
{
private Client client;
private BaseCurrencySelectionPage currencySelectionPage;
private MarkSecurityAsIndexPage markSecuritiesPage;
public MigrationWizard(Client client)
{
this.client = client;
}
@Override
public Image getDefaultPageImage()
{
return Images.BANNER.image();
}
@Override
public void addPages()
{
currencySelectionPage = new BaseCurrencySelectionPage(Messages.BaseCurrencySelectionPage_Title,
Messages.BaseCurrencyMigrationPage_Description,
Messages.BaseCurrencyMigrationPage_ExplanationIndividualCurrency);
addPage(currencySelectionPage);
markSecuritiesPage = new MarkSecurityAsIndexPage(client);
addPage(markSecuritiesPage);
AbstractWizardPage.attachPageListenerTo(getContainer());
}
@Override
public boolean performFinish()
{
CurrencyUnit currency = currencySelectionPage.getSelectedCurrency();
if (!CurrencyUnit.EUR.equals(currency))
ClientFactory.setAllCurrencies(client, currency.getCurrencyCode());
markSecuritiesPage.getSelectedSecurities().forEach(s -> s.setCurrencyCode(null));
return true;
}
}
public ClientMigrationDialog(Shell parentShell, Client client)
{
super(parentShell, new MigrationWizard(client));
}
@Override
protected void createButtonsForButtonBar(Composite parent)
{
super.createButtonsForButtonBar(parent);
// migration cannot be aborted, use must choose a currency
getButton(IDialogConstants.CANCEL_ID).setEnabled(false);
}
}