Java tutorial
/****************************************************************************** * Copyright (c) 2005, 2006 BEA Systems, Inc. * 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: * Konstantin Komissarchik - initial API and implementation ******************************************************************************/ package org.eclipse.jst.common.jdt.internal.classpath; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.ClasspathContainerInitializer; import org.eclipse.jdt.core.IClasspathAttribute; import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; /** * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a> */ public abstract class FlexibleProjectContainerInitializer extends ClasspathContainerInitializer { private static final ClasspathDecorationsManager decorations = FlexibleProjectContainer.getDecorationsManager(); @Override public boolean canUpdateClasspathContainer(final IPath containerPath, final IJavaProject project) { return true; } @Override public void requestClasspathContainerUpdate(final IPath containerPath, final IJavaProject project, final IClasspathContainer sg) throws CoreException { final String key = FlexibleProjectContainer.getDecorationManagerKey(project.getProject(), containerPath.toString()); final IClasspathEntry[] entries = sg.getClasspathEntries(); decorations.clearAllDecorations(key); for (int i = 0; i < entries.length; i++) { final IClasspathEntry entry = entries[i]; final IPath srcpath = entry.getSourceAttachmentPath(); final IPath srcrootpath = entry.getSourceAttachmentRootPath(); final IClasspathAttribute[] attrs = entry.getExtraAttributes(); if (srcpath != null || attrs.length > 0) { final String eid = entry.getPath().toString(); final ClasspathDecorations dec = new ClasspathDecorations(); dec.setSourceAttachmentPath(srcpath); dec.setSourceAttachmentRootPath(srcrootpath); dec.setExtraAttributes(attrs); decorations.setDecorations(key, eid, dec); } } decorations.save(); final IClasspathContainer container = JavaCore.getClasspathContainer(containerPath, project); ((FlexibleProjectContainer) container).refresh(); } }