/*******************************************************************************
* Copyright (c) 2009, 2010 Dejan Spasic
* 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.phpmd.views;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.widgets.Display;
import org.phpsrc.eclipse.pti.tools.phpmd.model.IViolationManagerListener;
import org.phpsrc.eclipse.pti.tools.phpmd.model.ViolationManager;
import org.phpsrc.eclipse.pti.tools.phpmd.model.ViolationManagerEvent;
public class PhpmdViewContentProvider implements IStructuredContentProvider, IViolationManagerListener {
private ViolationManager manager;
private TableViewer viewer;
public Object[] getElements(Object inputElement) {
return manager.getViolations();
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
this.viewer = (TableViewer) viewer;
if (null != manager)
manager.removeViolationManagerListener(this);
manager = (ViolationManager) newInput;
if (null != manager)
manager.addViolationManagerListener(this);
}
public void violationsChanged(final ViolationManagerEvent event) {
Display.getDefault().syncExec(new Runnable() {
public void run() {
viewer.getTable().setRedraw(false);
try {
viewer.remove(event.getRemovedViolations());
viewer.add(event.getAddedViolations());
} finally {
viewer.getTable().setRedraw(true);
}
}
});
}
public void dispose() {
}
}