Java tutorial
/******************************************************************************* * 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.project.ui.wizard; import com.liferay.ide.core.util.CoreUtil; import com.liferay.ide.core.util.StringPool; import com.liferay.ide.project.core.util.ProjectUtil; import com.liferay.ide.project.ui.action.NewPluginProjectDropDownAction; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; /** * @author Cindy Li * @author Kuo Zhang */ public class ValidProjectChecker { private static final String ATT_ID = "id"; //$NON-NLS-1$ private static final String ATT_NAME = "name"; //$NON-NLS-1$ private static final String ATT_VALID_PROJECT_TYPES = "validProjectTypes"; //$NON-NLS-1$ private static final String TAG_NEW_WIZARDS = "newWizards"; //$NON-NLS-1$ private static final String TAG_PARAMETER = "parameter"; //$NON-NLS-1$ private static final String TAG_VALUE = "value"; //$NON-NLS-1$ private static final String TAG_WIZARD = "wizard"; //$NON-NLS-1$ protected boolean isJsfPortlet = false; protected String validProjectTypes = null; protected String wizardId = null; protected String wizardName = null; public ValidProjectChecker(String wizardId) { this.wizardId = wizardId; init(); } public void checkValidProjectTypes() { IProject[] projects = CoreUtil.getAllProjects(); boolean hasValidProjectTypes = false; boolean hasJsfFacet = false; for (IProject project : projects) { if (ProjectUtil.isLiferayFacetedProject(project)) { Set<IProjectFacetVersion> facets = ProjectUtil.getFacetedProject(project).getProjectFacets(); if (validProjectTypes != null && facets != null) { String[] validTypes = validProjectTypes.split(StringPool.COMMA); for (String validProjectType : validTypes) { for (IProjectFacetVersion facet : facets) { String id = facet.getProjectFacet().getId(); if (isJsfPortlet && id.equals("jst.jsf")) //$NON-NLS-1$ { hasJsfFacet = true; } if (id.startsWith("liferay.") && id.equals("liferay." + validProjectType)) //$NON-NLS-1$ //$NON-NLS-2$ { hasValidProjectTypes = true; } } } } } } if (isJsfPortlet) { hasValidProjectTypes = hasJsfFacet && hasValidProjectTypes; } if (!hasValidProjectTypes) { final Shell activeShell = Display.getDefault().getActiveShell(); Boolean openNewLiferayProjectWizard = MessageDialog.openQuestion(activeShell, NLS.bind(Msgs.newElement, wizardName), NLS.bind(Msgs.noSuitableLiferayProjects, wizardName)); if (openNewLiferayProjectWizard) { final Action defaultAction = NewPluginProjectDropDownAction.getPluginProjectAction(); if (defaultAction != null) { defaultAction.run(); this.checkValidProjectTypes(); } } } } private String getValidProjectTypesFromConfig(IConfigurationElement config) { IConfigurationElement[] classElements = config.getChildren(); if (classElements.length > 0) { for (IConfigurationElement classElement : classElements) { IConfigurationElement[] paramElements = classElement.getChildren(TAG_PARAMETER); for (IConfigurationElement paramElement : paramElements) { if (ATT_VALID_PROJECT_TYPES.equals(paramElement.getAttribute(ATT_NAME))) { return paramElement.getAttribute(TAG_VALUE); } } } } return null; } protected void init() { if (wizardId != null && wizardId.equals("com.liferay.ide.eclipse.portlet.jsf.ui.wizard.portlet")) //$NON-NLS-1$ { setJsfPortlet(true); } IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(PlatformUI.PLUGIN_ID, TAG_NEW_WIZARDS); if (extensionPoint != null) { IConfigurationElement[] elements = extensionPoint.getConfigurationElements(); for (IConfigurationElement element : elements) { if (element.getName().equals(TAG_WIZARD) && element.getAttribute(ATT_ID).equals(wizardId)) { // getValidProjectTypesFromConfig( element )!=null && isLiferayArtifactWizard(element, // "liferay_artifact") setValidProjectTypes(getValidProjectTypesFromConfig(element)); wizardName = element.getAttribute(ATT_NAME); break; } } } } public void setJsfPortlet(boolean isJsfPortlet) { this.isJsfPortlet = isJsfPortlet; } public void setValidProjectTypes(String validProjectTypes) { this.validProjectTypes = validProjectTypes; } private static class Msgs extends NLS { public static String newElement; public static String noSuitableLiferayProjects; static { initializeMessages(ValidProjectChecker.class.getName(), Msgs.class); } } }