/******************************************************************************* * Copyright (c) 2007-2009 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.hibernate.eclipse.jdt.ui.internal.jpa.process.wizard; import org.eclipse.jdt.ui.refactoring.RefactoringSaveHelper; import org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter; import org.eclipse.jface.dialogs.IPageChangingListener; import org.eclipse.jface.dialogs.PageChangingEvent; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.wizard.IWizardContainer; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.ltk.ui.refactoring.RefactoringWizard; import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.hibernate.console.ImageConstants; import org.hibernate.eclipse.console.utils.EclipseImages; import org.hibernate.eclipse.jdt.ui.internal.JdtUiMessages; /** * Hibernate JPA refactoring wizard dialog * * @author Vitali */ @SuppressWarnings("restriction") public class HibernateJPAWizard extends RefactoringWizard implements IPageChangingListener { protected final String wizard_title = JdtUiMessages.AllEntitiesProcessor_header; protected IHibernateJPAWizardData data; protected IHibernateJPAWizardParams params; public HibernateJPAWizard(IHibernateJPAWizardData data, IHibernateJPAWizardParams params) { super(new HibernateJPARefactoring(data.getChanges()), RefactoringWizard.WIZARD_BASED_USER_INTERFACE); this.data = data; this.params = params; setDefaultPageImageDescriptor(EclipseImages.getImageDescriptor(ImageConstants.NEW_WIZARD)); setWindowTitle(wizard_title); setDefaultPageTitle(wizard_title); } @Override protected void addUserInputPages() { IStructuredSelection selection = null; if (data != null && data.getSelection2Update() != null) { selection = data.getSelection2Update(); } if (selection == null) { selection = new StructuredSelection(); } String title = JdtUiMessages.EntitiesSource_header; EntitiesSource page0 = new EntitiesSource(title, selection); addPage(page0); title = JdtUiMessages.EntitiesList_header; UserInputWizardPage page1 = new EntitiesList(title, data, params); addPage(page1); setDefaultPageTitle(page1.getName()); /** / UserInputWizardPage page2 = new ResolveAmbiguous(wizard_title, data, params); addPage(page2); /**/ } public HibernateJPARefactoring getHibernateJPARefactoring() { return (HibernateJPARefactoring)getRefactoring(); } public boolean showWizard() { final IWorkbenchWindow win = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); final Shell shell = win.getShell(); final RefactoringStarter refactoringStarter = new RefactoringStarter(); boolean res = refactoringStarter.activate(this, shell, wizard_title, RefactoringSaveHelper.SAVE_ALL); //RefactoringStatus rs = refactoringStarter.getInitialConditionCheckingStatus(); return res; } public IWizardPage getStartingPage() { if (getPages().length <= 0) { return null; } if (getPages().length == 1) { return getPages()[0]; } return getPages()[1]; } @Override public void setContainer(IWizardContainer wizardContainer) { if (getContainer() instanceof WizardDialog) { ((WizardDialog) getContainer()).removePageChangingListener(this); } super.setContainer(wizardContainer); if (getContainer() instanceof WizardDialog) { ((WizardDialog) getContainer()).addPageChangingListener(this); } } public void handlePageChanging(PageChangingEvent event) { Object currentPage = event.getCurrentPage(); Object targetPage = event.getTargetPage(); if (targetPage instanceof IWizardPage) { setDefaultPageTitle(((IWizardPage)targetPage).getName()); } if (currentPage instanceof EntitiesSource && targetPage instanceof EntitiesList){ EntitiesSource entitiesSource = (EntitiesSource)currentPage; EntitiesList entitiesList = (EntitiesList)targetPage; final IStructuredSelection selection = entitiesSource.getSelection(); IHibernateJPAWizardData data = HibernateJPAWizardDataFactory.createHibernateJPAWizardData( selection, params, entitiesSource.getProcessDepth()); entitiesList.setData(data); } } }