/*******************************************************************************
* Copyright (c) 2000, 2011 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 API and implementation
*******************************************************************************/
package org.eclipse.jdt.ui.tests.packageview;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jdt.ui.PreferenceConstants;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart;
import org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer;
/**
* Helper to test the PackageExplorerContentProvider.
*
* @since 2.1
*/
public class MockPluginView extends PackageExplorerPart {
TreeViewer fViewer;
private ITreeContentProvider contentProvider;
private boolean fRefreshHappened;
private boolean fRemoveHappened;
private boolean fAddHappened;
private final List<Object> fRefreshedObjects;
private final List<Object> fRemovedObjects;
private Object fAddedObject;
private Object fAddedParentObject;
/**
* Constructor for MockPluginView.
*/
public MockPluginView() {
super();
fRefreshedObjects= new ArrayList<>();
fRemovedObjects= new ArrayList<>();
}
/**
* Creates only the viewer and the content provider.
*
* @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
*/
@Override
public void createPartControl(Composite parent) {
//create viewer
fViewer= createViewer(parent);
//create my contentProvider
contentProvider= createContentProvider();
contentProvider.inputChanged(fViewer, null, null);
//set content provider
fViewer.setContentProvider(contentProvider);
}
private TreeViewer createViewer(Composite parent) {
return new TestProblemTreeViewer(parent, SWT.MULTI);
}
@Override
public void dispose() {
if (fViewer != null) {
IContentProvider p = fViewer.getContentProvider();
if(p!=null)
p.dispose();
}
super.dispose();
}
/*
* @see org.eclipse.ui.IWorkbenchPart#setFocus()
*/
@Override
public void setFocus() {
}
@Override
public TreeViewer getTreeViewer(){
return fViewer;
}
private class TestProblemTreeViewer extends ProblemTreeViewer{
public TestProblemTreeViewer(Composite parent, int flag){
super(parent,flag);
}
@Override
public void refresh(Object object){
fRefreshHappened= true;
fRefreshedObjects.add(object);
}
@Override
public void refresh(final Object element, final boolean updateLabels) {
fRefreshHappened= true;
fRefreshedObjects.add(element);
}
@Override
public void remove(Object object) {
fRemoveHappened= true;
fRemovedObjects.add(object);
}
@Override
public void add(Object parentObject, Object object){
fAddHappened= true;
fAddedObject= object;
fAddedParentObject= parentObject;
}
@Override
public Widget[] testFindItems(Object element) {
return new Widget[1]; // for https://bugs.eclipse.org/311212
}
}
/**
* Returns whether the given object was refreshed.
*
* @param c the object to test
* @return <code>true</code> if the object was refreshed
*/
public boolean wasObjectRefreshed(Object c) {
return fRefreshedObjects.contains(c);
}
public List<Object> getRefreshedObject(){
return fRefreshedObjects;
}
/**
* Returns the object added to the tree viewer
* @return Object
*/
public Object getParentOfAddedObject() {
return fAddedParentObject;
}
/**
* Returns true if something was added to the viewer
* @return boolean
*/
public boolean hasAddHappened() {
return fAddHappened;
}
/**
* Returns true if an object was removed from the viewer
* @return boolean
*/
public boolean hasRemoveHappened() {
return fRemoveHappened;
}
/**
* Returns the object removed from the viewer
* @return Object
*/
public List<Object> getRemovedObjects() {
return fRemovedObjects;
}
/**
* Returns the object added to the viewer
* @return Object
*/
public Object getAddedObject() {
return fAddedObject;
}
/**
* Returns true if a refresh happened
* @return boolean
*/
public boolean hasRefreshHappened() {
return fRefreshHappened;
}
/**
* Sets the folding preference.
*
* @param fold <code>true</code> to enable folding, <code>false</code> otherwise
*/
public void setFolding(boolean fold) {
JavaPlugin.getDefault().getPreferenceStore().setValue(PreferenceConstants.APPEARANCE_FOLD_PACKAGES_IN_PACKAGE_EXPLORER, fold);
}
/**
*
*/
public void clear() {
fRefreshedObjects.clear();
fRemovedObjects.clear();
fAddHappened= false;
fRemoveHappened= false;
fRefreshHappened= false;
fAddedObject= null;
}
}