/******************************************************************************* * Copyright (c) 2010 Sven Kiera * 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 *******************************************************************************/ package org.phpsrc.eclipse.pti.tools.phpdepend.ui.actions; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.IAction; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.ui.IWorkbenchWindowPulldownDelegate; import org.phpsrc.eclipse.pti.tools.phpdepend.IPHPDependConstants; import org.phpsrc.eclipse.pti.tools.phpdepend.core.PHPDepend; import org.phpsrc.eclipse.pti.tools.phpdepend.core.PHPDependOptions; import org.phpsrc.eclipse.pti.ui.actions.ResourceAction; public class ValidateResourcesAction extends ResourceAction implements IWorkbenchWindowPulldownDelegate { private final static String OPTION_KEY = "OPTION_KEY"; private SelectionListener optionsListener; public ValidateResourcesAction() { optionsListener = new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { MenuItem item = (MenuItem) e.widget; PHPDepend.getInstance().getOptions().put((String) item.getData(OPTION_KEY), new Boolean(item.getSelection())); } }; } public void run(IAction arg0) { final IResource[] resources = getSelectedResources(); if (resources.length > 0) { Job job = new Job("PHP Depend") { protected IStatus run(IProgressMonitor monitor) { monitor.beginTask("Validation", resources.length * 2); PHPDepend pdepend = PHPDepend.getInstance(); int completed = 0; for (IResource resource : resources) { if (monitor.isCanceled()) return Status.CANCEL_STATUS; try { resource.deleteMarkers(IPHPDependConstants.VALIDATOR_PHP_DEPEND_MARKER, false, IResource.DEPTH_INFINITE); } catch (CoreException e) { } monitor.worked(++completed); // createFileMarker(pdepend.validateResource(resource)); pdepend.validateResource(resource); monitor.worked(++completed); } return Status.OK_STATUS; } }; job.setUser(false); job.schedule(); } } public Menu getMenu(Control parent) { Menu menu = new Menu(parent); PHPDependOptions options = PHPDepend.getInstance().getOptions(); for (String key : options.keySet()) { MenuItem item = new MenuItem(menu, SWT.CHECK); item.setSelection(options.get(key).booleanValue()); item.setText(key); item.setData(OPTION_KEY, key); item.addSelectionListener(optionsListener); } return menu; } }