com.liferay.ide.xml.search.ui.markerResolutions.DecreaseInstanceScopeXmlValidationLevel.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.ide.xml.search.ui.markerResolutions.DecreaseInstanceScopeXmlValidationLevel.java

Source

/*******************************************************************************
 * 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.xml.search.ui.markerResolutions;

import com.liferay.ide.project.core.ProjectCore;
import com.liferay.ide.project.core.ValidationPreferences;
import com.liferay.ide.server.util.ComponentUtil;
import com.liferay.ide.xml.search.ui.LiferayXMLSearchUI;
import com.liferay.ide.xml.search.ui.XMLSearchConstants;

import java.net.URL;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IMarkerResolution2;

/**
 * @author Kuo Zhang
 */
public class DecreaseInstanceScopeXmlValidationLevel implements IMarkerResolution2 {

    private final static String MESSAGE = "Disable this type of validation in all projects";

    public DecreaseInstanceScopeXmlValidationLevel() {
    }

    @Override
    public String getDescription() {
        return MESSAGE;
    }

    @Override
    public Image getImage() {
        final URL url = LiferayXMLSearchUI.getDefault().getBundle().getEntry("/icons/arrow_down.png");
        return ImageDescriptor.createFromURL(url).createImage();
    }

    @Override
    public String getLabel() {
        return MESSAGE;
    }

    @Override
    public void run(IMarker marker) {
        // if the project scope is used, set its validation level to "Ignore" first.
        final IEclipsePreferences node = new ProjectScope(marker.getResource().getProject())
                .getNode(ProjectCore.PLUGIN_ID);

        String liferayPluginValidationType = marker.getAttribute(XMLSearchConstants.LIFERAY_PLUGIN_VALIDATION_TYPE,
                null);

        if (liferayPluginValidationType == null) {
            liferayPluginValidationType = marker.getAttribute(XMLSearchConstants.LIFERAY_PLUGIN_VALIDATION_TYPE_OLD,
                    null);
        }

        if (liferayPluginValidationType != null) {
            if (node.getBoolean(ProjectCore.USE_PROJECT_SETTINGS, false)) {
                ValidationPreferences.setProjectScopeValidationLevel(marker.getResource().getProject(),
                        liferayPluginValidationType, -1);
            }

            ValidationPreferences.setInstanceScopeValidationLevel(liferayPluginValidationType, -1);
            ComponentUtil.validateFile((IFile) marker.getResource(), new NullProgressMonitor());
        }
    }

}