/*******************************************************************************
 * Copyright (c) 2007-2010 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.web.validation.jsf2.action;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.quickassist.IQuickAssistInvocationContext;
import org.eclipse.jface.text.quickassist.IQuickAssistProcessor;
import org.eclipse.jface.text.source.Annotation;
import org.eclipse.wst.sse.ui.StructuredTextInvocationContext;
import org.jboss.tools.jsf.jsf2.util.JSF2ResourceUtil;
import org.jboss.tools.jsf.web.validation.jsf2.util.JSF2ValidatorConstants;

/**
 * 
 * @author yzhishko
 *
 */

public class JSF2QuickFixProcessor implements IQuickAssistProcessor {

	public boolean canAssist(IQuickAssistInvocationContext invocationContext) {
		return false;
	}

	public boolean canFix(Annotation annotation) {
		return false;
	}

	public ICompletionProposal[] computeQuickAssistProposals(
			IQuickAssistInvocationContext invocationContext) {
//		if (invocationContext instanceof StructuredTextInvocationContext) {
//			StructuredTextInvocationContext context = (StructuredTextInvocationContext) invocationContext;
//			String type = (String) context
//					.getAttribute(JSF2ValidatorConstants.JSF2_TYPE_KEY);
//			IResource resource = ResourcesPlugin.getWorkspace().getRoot()
//					.findMember(
//							(String) context
//									.getAttribute("validateResourcePath")); //$NON-NLS-1$
//			String compPath = (String) context
//					.getAttribute(JSF2ResourceUtil.COMPONENT_RESOURCE_PATH_KEY);
//
//			if (type.equals(JSF2ValidatorConstants.JSF2_FIXABLE_ATTR_TYPE)) {
//				String[] attrs = new String[] { (String) context
//						.getAttribute(JSF2ValidatorConstants.JSF2_ATTR_NAME_KEY) };
//				ICompletionProposal proposal = new JSF2CompositeAttrsProposal(
//						resource, compPath, attrs,(String)context.getAttribute(JSF2ValidatorConstants.JSF2_ATTR_NAME_KEY),
//						(String)context.getAttribute(JSF2ResourceUtil.JSF2_COMPONENT_NAME));
//				return new ICompletionProposal[] { proposal };
//			} else if (type
//					.equals(JSF2ValidatorConstants.JSF2_COMPOSITE_COMPONENT_TYPE)) {
//				ICompletionProposal proposal = new JSF2CompositeComponentProposal(
//						resource, compPath, retriveAttrsFromContext(context),(String)context.getAttribute(JSF2ResourceUtil.JSF2_COMPONENT_NAME));
//				return new ICompletionProposal[] { proposal };
//			} else if (type.equals(JSF2ValidatorConstants.JSF2_URI_TYPE)) {
//				String uriPath = (String) context
//						.getAttribute(JSF2ValidatorConstants.JSF2_URI_NAME_KEY);
//				ICompletionProposal proposal = new JSF2ResourcesFolderProposal(
//						resource, uriPath,(String)context.getAttribute(JSF2ValidatorConstants.JSF2_URI_NAME_KEY));
//				return new ICompletionProposal[] { proposal };
//			}
//		}
		return null;
	}

	private String[] retriveAttrsFromContext(
			StructuredTextInvocationContext context) {
		List<String> attrsList = new ArrayList<String>();
		int i = 0;
		while (!(context
				.getAttribute(JSF2ValidatorConstants.JSF2_ATTR_NAME_KEY
						+ String.valueOf(i)) == null)) {
			attrsList.add((String) context
					.getAttribute(JSF2ValidatorConstants.JSF2_ATTR_NAME_KEY
							+ String.valueOf(i)));
			i++;
		}
		return attrsList.toArray(new String[0]);
	}

	public String getErrorMessage() {
		return null;
	}

}
