blob: d070efb982b62ede0e0adc4bea192d7a5933b922 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2017 IBM Corporation and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
*******************************************************************************/
package org.eclipse.dltk.ui.tests.navigator.scriptexplorer;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.IModelElementDelta;
import org.eclipse.dltk.core.IScriptFolder;
import org.eclipse.dltk.core.IScriptModel;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.core.ISourceModule;
/**
* @author Jen's account
*
*/
public class TestDelta implements IModelElementDelta {
private int fKind;
private IModelElement fElement;
private IModelElementDelta[] fAffectedChildren;
public TestDelta(int kind, IModelElement element) {
fKind= kind;
fElement= element;
}
@Override
public IModelElementDelta[] getAddedChildren() {
return null;
}
@Override
public IModelElementDelta[] getAffectedChildren() {
if (fAffectedChildren == null)
return new IModelElementDelta[0];
else
return fAffectedChildren;
}
public IModelElementDelta[] getChangedChildren() {
return null;
}
@Override
public IModelElement getElement() {
return fElement;
}
@Override
public int getFlags() {
return 0;
}
@Override
public int getKind() {
return fKind;
}
@Override
public IModelElement getMovedFromElement() {
return null;
}
@Override
public IModelElement getMovedToElement() {
return null;
}
public IModelElementDelta[] getRemovedChildren() {
return null;
}
@Override
public IResourceDelta[] getResourceDeltas() {
return null;
}
public void setAffectedChildren(IModelElementDelta[] children) {
fAffectedChildren= children;
}
public static TestDelta createParentDeltas(IScriptFolder frag, TestDelta delta) {
IModelElement root= frag.getParent();
TestDelta rootDelta= new TestDelta(IModelElementDelta.CHANGED, root);
IScriptProject proj= root.getScriptProject();
TestDelta projectDelta= new TestDelta(IModelElementDelta.CHANGED, proj);
IScriptModel model= proj.getModel();
TestDelta modelDelta= new TestDelta(IModelElementDelta.CHANGED, model);
//set affected children
modelDelta.setAffectedChildren(new IModelElementDelta[] { projectDelta });
projectDelta.setAffectedChildren(new IModelElementDelta[] { rootDelta });
rootDelta.setAffectedChildren(new IModelElementDelta[] { delta });
return modelDelta;
}
public static IModelElementDelta createCUDelta(ISourceModule[] cu, IScriptFolder parent, int action) {
TestDelta fragmentDelta= new TestDelta(IModelElementDelta.CHANGED, parent);
TestDelta[] deltas= new TestDelta[cu.length];
for (int i= 0; i < cu.length; i++) {
deltas[i]= new TestDelta(action, cu[i]);
}
fragmentDelta.setAffectedChildren(deltas);
return createParentDeltas(parent, fragmentDelta);
}
public static IModelElementDelta createDelta(IScriptFolder frag, int action) {
TestDelta delta= new TestDelta(action, frag);
return createParentDeltas(frag, delta);
}
}