/******************************************************************************* * Copyright (c) 2008, 2017 xored software, Inc. 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: * xored software, Inc. - initial API and Implementation (Andrei Sobolev) *******************************************************************************/ package org.eclipse.dltk.core.tests.model; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.dltk.core.IModelElement; import org.eclipse.dltk.core.IModelProvider; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.dltk.internal.core.ModelElement; public class TestModelProvider implements IModelProvider { public TestModelProvider() { } @Override public void provideModelChanges(IModelElement parentElement, List<IModelElement> children) { IScriptProject project = parentElement.getScriptProject(); if (!"ModelMembersq".equals(project.getElementName())) { return; } switch (parentElement.getElementType()) { case IModelElement.PROJECT_FRAGMENT: List<TestFolder> addon = new ArrayList<>(); for (Iterator<IModelElement> iterator = children .iterator(); iterator.hasNext();) { IModelElement el = iterator.next(); if (el.getElementType() == IModelElement.SCRIPT_FOLDER) { addon.add(new TestFolder((ModelElement) parentElement, el.getPath().removeFirstSegments( el.getParent().getPath().segmentCount()))); } } children.addAll(addon); break; case IModelElement.SCRIPT_FOLDER: break; } } @Override public boolean isModelChangesProvidedFor(IModelElement modelElement, String name) { IScriptProject project = modelElement.getScriptProject(); if (!"ModelMembersq".equals(project.getElementName())) { return false; } if (modelElement.getElementType() == IModelElement.PROJECT_FRAGMENT) { return true; } return false; } }