blob: c1de79a0f4455360c855213337468fd172bdafc6 [file] [log] [blame]
package org.eclipse.jst.jsf.facelet.core.internal.view;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
import org.eclipse.jst.jsf.designtime.context.DTFacesContext;
import org.eclipse.jst.jsf.designtime.internal.view.AbstractViewDefnAdapterFactory;
import org.eclipse.jst.jsf.designtime.internal.view.IViewDefnAdapter;
import org.eclipse.jst.jsf.designtime.internal.view.IViewDefnAdapterFactory;
import org.eclipse.jst.jsf.designtime.internal.view.IDTViewHandler.ViewHandlerException;
import org.eclipse.jst.jsf.designtime.internal.view.model.ITagRegistry;
class ViewDefnAdapterFactory extends AbstractViewDefnAdapterFactory
{
private final DTFaceletViewHandler _myViewHandler;
private final IViewDefnAdapterFactory _defaultViewDefnAdapterFactory;
ViewDefnAdapterFactory(final DTFaceletViewHandler viewHandler, final IViewDefnAdapterFactory defaultViewDefnAdapterFactory)
{
_myViewHandler = viewHandler;
_defaultViewDefnAdapterFactory = defaultViewDefnAdapterFactory;
}
@Override
public IViewDefnAdapter<?, ?> createAdapter(DTFacesContext context, String viewId)
{
try
{
final IResource res =
_myViewHandler.getActionDefinition(context, viewId);
if (res instanceof IFile)
{
final IFile srcFile = (IFile) res;
final ITagRegistry registry = findTagRegistry(srcFile);
if (registry != null) {
if (_myViewHandler.isHTMLContent(srcFile))
{
return new FaceletViewDefnAdapter(registry);
}
// if we have a jsp file, then return the default
// adapter
return _defaultViewDefnAdapterFactory.createAdapter(context, viewId);
}
}
}
catch (final ViewHandlerException vhe)
{
JSFCorePlugin.log(vhe, "While acquiring view adapter"); //$NON-NLS-1$
}
// not found or failed
return null;
}
}