/******************************************************************************* * 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.ui.marker; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.ui.IMarkerResolution; import org.eclipse.ui.IMarkerResolutionGenerator2; import org.eclipse.wst.validation.IMutableValidator; import org.eclipse.wst.validation.MutableWorkspaceSettings; import org.eclipse.wst.validation.ValidationFramework; import org.jboss.tools.jsf.ui.JsfUiPlugin; /** * @author Daniel Azarov */ public class DisableFaceletHTMLValidatorResolutionGenerator implements IMarkerResolutionGenerator2 { private static final String ATTRIBUTE_NAME = "ValidationId"; public static final String VALIDATOR_ID = "org.eclipse.jst.jsf.facelet.ui.FaceletHTMLValidator"; private static final String MESSAGE = "converter id is not registered."; public IMarkerResolution[] getResolutions(IMarker marker) { if(isNeedToCreate(marker)){ IMutableValidator[] validators; try { MutableWorkspaceSettings workspaceSettings = ValidationFramework.getDefault().getWorkspaceSettings(); validators = workspaceSettings.getValidators(); if(DisableFaceletHTMLValidatorMarkerResolution.findValidator(validators, VALIDATOR_ID) != null){ return new IMarkerResolution[] {new DisableFaceletHTMLValidatorMarkerResolution((IFile)marker.getResource())}; } } catch (InvocationTargetException e) { JsfUiPlugin.getPluginLog().logError(e); } } return new IMarkerResolution[] {}; } private boolean isNeedToCreate(IMarker marker){ String message = marker.getAttribute(IMarker.MESSAGE, ""); String attribute = marker.getAttribute(ATTRIBUTE_NAME, ""); if(attribute.equals(VALIDATOR_ID) && marker.getResource() instanceof IFile && message.endsWith(MESSAGE)){ return true; } return false; } public boolean hasResolutions(IMarker marker) { return marker.exists() && isNeedToCreate(marker); } }