/******************************************************************************* * Copyright (c) 2011 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 * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.jsf.jsf2.bean.model; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; import org.jboss.tools.jsf.JSFModelPlugin; import org.jboss.tools.jsf.jsf2.bean.model.impl.JSF2Project; import org.jboss.tools.jsf.messages.JSFUIMessages; import org.jboss.tools.jst.web.kb.KbProjectFactory; import org.jboss.tools.jst.web.kb.internal.KbProject; /** * * @author Viacheslav Kabanovich * */ public class JSF2ProjectFactory { private static final String MODEL_ID = "JSF2"; public static IJSF2Project getJSF2Project(IProject project, boolean resolve) { JSF2Project result = null; KbProject kb = (KbProject)KbProjectFactory.getKbProject(project, resolve); if(kb != null) { result = (JSF2Project)kb.getExtensionModel(MODEL_ID); if(result == null) { result = new JSF2Project(); result.setProject(project); kb.setExtensionModel(MODEL_ID, result); } } if(result != null && resolve) { result.resolve(); } return result; } public static IJSF2Project getJSF2ProjectWithProgress(final IProject project){ final IJSF2Project jsf = getJSF2Project(project, false); if(jsf != null && !jsf.isStorageResolved()){ if (Display.getCurrent() != null) { try{ PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress(){ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask(JSFUIMessages.BUILD_JSF2_MODEL, 10); monitor.worked(3); getJSF2Project(project, true); monitor.worked(7); } }); }catch(InterruptedException ie){ JSFModelPlugin.getDefault().logError(ie); }catch(InvocationTargetException ite){ JSFModelPlugin.getDefault().logError(ite); } } else { getJSF2Project(project, true); } } return jsf; } }