blob: 8d6dfebabe593f12f1a0107c7bccce82a446a48f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 University of Illinois at Urbana-Champaign 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:
* UIUC - Initial API and implementation
*******************************************************************************/
package org.eclipse.photran.internal.ui.views.vpgproblems;
import java.util.Iterator;
import org.eclipse.cdt.ui.actions.SelectionDispatchAction;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.PlatformUI;
/**
* Action to remove a marker.
*
* @author Timofey Yuvashev
*/
public class RemoveMarkerAction extends SelectionDispatchAction
{
/**
* @param site
*/
public RemoveMarkerAction(IWorkbenchSite site)
{
super(site);
setText(Messages.RemoveMarkerAction_Delete);
setToolTipText(Messages.RemoveMarkerAction_DeleteTooltip);
}
public RemoveMarkerAction(IWorkbenchSite site, String text, String toolTipText)
{
super(site);
setText(text);
setToolTipText(toolTipText);
// TODO Auto-generated constructor stub
}
@Override public ImageDescriptor getImageDescriptor()
{
Image img = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_TOOL_DELETE);
return ImageDescriptor.createFromImage(img);
}
/*protected void deleteMarkers(IMarker[] markers)
{
try
{
ResourcesPlugin.getWorkspace().deleteMarkers(markers);
}
catch (CoreException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
/* (non-Javadoc)
* Method declared on SelectionDispatchAction.
*/
@Override
public void selectionChanged(IStructuredSelection selection) {
setEnabled(checkEnabled(selection));
}
//Only enables if the selected type is an IMarker
private boolean checkEnabled(IStructuredSelection selection) {
if (selection.isEmpty())
return false;
for (Iterator<?> iter= selection.iterator(); iter.hasNext();) {
Object element= iter.next();
if (element instanceof IMarker)
continue;
return false;
}
return true;
}
/* (non-Javadoc)
* Method declared on SelectionDispatchAction.
*/
@Override
public void run(IStructuredSelection selection)
{
if (!checkEnabled(selection))
return;
//ArrayList<IMarker> markers = new ArrayList<IMarker>();
for (Iterator<?> iter= selection.iterator(); iter.hasNext();)
{
Object element= iter.next();
if (element instanceof IMarker)
{
IMarker marker = (IMarker)element;
try
{
//FIXME: We should figure out a way to delete marker(s)
// from the log. Should we clear them out for the whole
// resource, or just delete one(s) selected? Should user
// be able to delete markers that are tied to a particular
// resource, or only non-resource specific ones?
//PhotranVPG.getInstance().log.clearEntriesFor(marker.getResource().getFullPath());
marker.delete();
}
catch (CoreException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//markers.add(marker);
}
}
// IMarker[] marks = new IMarker[markers.size()];
// deleteMarkers(markers.toArray(marks));
}
}