/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * *******************************************************************************/ package com.liferay.ide.layouttpl.ui.wizard; import com.liferay.ide.layouttpl.core.operation.INewLayoutTplDataModelProperties; import com.liferay.ide.layouttpl.core.operation.NewLayoutTplDataModelProvider; import com.liferay.ide.layouttpl.ui.LayoutTplUI; import com.liferay.ide.project.ui.wizard.ValidProjectChecker; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IFile; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.templates.TemplateContextType; import org.eclipse.jface.text.templates.persistence.TemplateStore; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation; import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider; import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard; /** * @author Greg Amerson */ @SuppressWarnings( "restriction" ) public class NewLayoutTplWizard extends DataModelWizard implements INewWizard, INewLayoutTplDataModelProperties { public static final String ID = "com.liferay.ide.eclipse.layouttpl.ui.wizard.layouttemplate"; //$NON-NLS-1$ public static final String LAYOUTTPL_LAYOUT_PAGE = "layoutTplLayoutPage"; //$NON-NLS-1$ public static final String LAYOUTTPL_PAGE = "layoutTplPage"; //$NON-NLS-1$ public static final String[] WIZARD_PAGES = new String[] { LAYOUTTPL_PAGE, LAYOUTTPL_LAYOUT_PAGE }; protected NewLayoutTplWizardPage layoutTplPage; protected NewLayoutTplLayoutWizardPage layoutTplStartPage; public NewLayoutTplWizard() { this( null ); } public NewLayoutTplWizard( IDataModel dataModel ) { super( dataModel ); this.setWindowTitle( Msgs.newLayoutTemplate ); this.setDefaultPageImageDescriptor( getDefaultImageDescriptor() ); } public void init( IWorkbench workbench, IStructuredSelection selection ) { getDataModel(); ValidProjectChecker checker = new ValidProjectChecker( ID ); checker.checkValidProjectTypes(); } @Override protected void doAddPages() { layoutTplPage = new NewLayoutTplWizardPage( getDataModel(), LAYOUTTPL_PAGE ); addPage( layoutTplPage ); layoutTplStartPage = new NewLayoutTplLayoutWizardPage( getDataModel(), LAYOUTTPL_LAYOUT_PAGE ); addPage( layoutTplStartPage ); } protected ImageDescriptor getDefaultImageDescriptor() { return LayoutTplUI.imageDescriptorFromPlugin( LayoutTplUI.PLUGIN_ID, "/icons/wizban/layout_template_wiz.png" ); //$NON-NLS-1$ } @Override protected IDataModelProvider getDefaultProvider() { final TemplateStore templateStore = LayoutTplUI.getDefault().getTemplateStore(); final TemplateContextType contextType = LayoutTplUI.getDefault().getTemplateContextRegistry().getContextType( LayoutTplTemplateContextTypeIds.NEW ); return new NewLayoutTplDataModelProvider() { @Override public IDataModelOperation getDefaultOperation() { return new AddLayoutTplOperation( getDataModel(), templateStore, contextType ); } }; } protected void openEditor( final IFile file ) { if( file != null ) { getShell().getDisplay().asyncExec ( new Runnable() { public void run() { try { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IDE.openEditor( page, file, true ); } catch( PartInitException e ) { LayoutTplUI.logError( e ); } } } ); } } protected void openWebFile( IFile file ) { try { openEditor( file ); } catch( Exception cantOpen ) { LayoutTplUI.logError( cantOpen ); } } @Override protected void postPerformFinish() throws InvocationTargetException { super.postPerformFinish(); IFile layoutTplFile = (IFile) getDataModel().getProperty( LAYOUT_TPL_FILE_CREATED ); if( layoutTplFile != null && layoutTplFile.exists() ) { openWebFile( layoutTplFile ); } } @Override protected boolean runForked() { return false; } private static class Msgs extends NLS { public static String newLayoutTemplate; static { initializeMessages( NewLayoutTplWizard.class.getName(), Msgs.class ); } } }