blob: 22e682eae9ab3ab407c361a4d55af3212108a051 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2008 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.ui.util;
import java.util.ArrayList;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.epf.authoring.ui.AuthoringUIPlugin;
import org.eclipse.epf.authoring.ui.AuthoringUIResources;
import org.eclipse.epf.library.edit.util.LibraryEditUtil;
import org.eclipse.epf.library.edit.validation.IValidationManager;
import org.eclipse.epf.library.validation.ValidationManager;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IMarkerResolution;
import org.eclipse.ui.IMarkerResolutionGenerator;
import org.eclipse.ui.views.markers.WorkbenchMarkerResolution;
/**
* Generates ValidationMarkerResolution's
* @author Weiping Lu
* @since 1.5.1.2
*/
public class ValidationMarkerResolutionGenerator implements IMarkerResolutionGenerator {
private static final IMarkerResolution[] EMPTY_RESOLUTIONS = new IMarkerResolution[0];
private static boolean acceptedType(IMarker marker) {
boolean ret = false;
try {
ret = ValidationManager.MARKER_ID.equals(marker.getType());
if (ret) {
Object typeValue = marker.getAttribute(ValidationManager.validationType);
ret = ValidationManager.validationType_undeclaredDependancyCheck.equals(typeValue);
}
} catch (CoreException e) {
AuthoringUIPlugin.getDefault().getLogger().logError(e);
}
return ret;
}
public IMarkerResolution[] getResolutions(IMarker marker) {
try {
if (acceptedType(marker)) {
return new IMarkerResolution[] {
new AddPluginResolution(marker),
new RemoveUndeclaredResolution(marker),
};
}
} catch (Exception e) {
AuthoringUIPlugin.getDefault().getLogger().logError(e);
}
return EMPTY_RESOLUTIONS;
}
public static abstract class ValidationMarkerResolution extends WorkbenchMarkerResolution {
private IMarker currentMarker;
public ValidationMarkerResolution(IMarker currentMarker) {
this.currentMarker = currentMarker;
}
@Override
public IMarker[] findOtherMarkers(IMarker[] markers) {
ArrayList<IMarker> similarMarkerList = new ArrayList<IMarker>();
// for (int i = 0; i < markers.length; i++) {
// IMarker marker = markers[i];
// if(! currentMarker.equals(marker)) {
// if(acceptedType(marker)) {
// similarMarkerList.add(marker);
// }
// }
// }
IMarker[] similarMarkers = new IMarker[similarMarkerList.size()];
similarMarkerList.toArray(similarMarkers);
return similarMarkers;
}
public String getDescription() {
// TODO provide detailed description
return null;
}
public Image getImage() {
// TODO provide image
return null;
}
}
private static class AddPluginResolution extends ValidationMarkerResolution {
public AddPluginResolution(IMarker currentMarker) {
super(currentMarker);
}
/**
* @see org.eclipse.ui.IMarkerResolution#getLabel()
*/
public String getLabel() {
return AuthoringUIResources.ValidationMarkerResolutionGenerator_0;
}
public void run(IMarker marker) {
try {
IValidationManager mgr = LibraryEditUtil.getInstance().getValidationManager();
String msg = ((ValidationManager) mgr).UndeclaredDependencyCheckAddPluginFix(marker);
if (msg != null && msg.length() > 0) {
AuthoringUIPlugin.getDefault().getMsgDialog()
.displayWarning(
AuthoringUIResources.ValidationMarkerResolutionGenerator_0,
msg);
}
} catch (Throwable e) {
AuthoringUIPlugin.getDefault().getLogger().logError(e);
}
}
}
private static class RemoveUndeclaredResolution extends ValidationMarkerResolution {
public RemoveUndeclaredResolution(IMarker currentMarker) {
super(currentMarker);
}
/**
* @see org.eclipse.ui.IMarkerResolution#getLabel()
*/
public String getLabel() {
return AuthoringUIResources.ValidationMarkerResolutionGenerator_1;
}
public void run(IMarker marker) {
try {
IValidationManager mgr = LibraryEditUtil.getInstance().getValidationManager();
((ValidationManager) mgr).UndeclaredDependencyCheckRemoveReferenceFix(marker);
} catch (Throwable e) {
AuthoringUIPlugin.getDefault().getLogger().logError(e);
}
}
}
}