blob: 01095259c88903603b933653e888d46f4fa62663 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2007 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.wst.common.componentcore.internal.util;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.wst.common.componentcore.internal.ComponentResource;
import org.eclipse.wst.common.componentcore.internal.ComponentcorePackage;
import org.eclipse.wst.common.componentcore.internal.StructureEdit;
/**
* <p>
* The following class is experimental until fully documented.
* </p>
*/
public class EclipseResourceAdapter extends AdapterImpl implements Adapter {
public static final Class ADAPTER_TYPE = EclipseResourceAdapter.class;
private IResource resource;
/*
* (non-Javadoc)
*
* @see org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
*/
public void notifyChanged(Notification aNotification) {
if (aNotification.getFeature() == ComponentcorePackage.eINSTANCE.getComponentResource_SourcePath()) {
if (aNotification.getEventType() == Notification.SET) {
resource = null;
}
}
}
public IResource getEclipseResource() {
synchronized (this) {
if (resource == null) {
IProject container = null;
ComponentResource moduleResource = (ComponentResource) getTarget();
if (moduleResource != null) {
IPath sourcePath = moduleResource.getSourcePath();
if (moduleResource.getOwningProject() != null)
container = moduleResource.getOwningProject();
else
container = StructureEdit.getContainingProject(moduleResource.getComponent());
if (container != null)
resource = container.findMember(sourcePath);
if(resource == null)
resource = ResourcesPlugin.getWorkspace().getRoot().findMember(sourcePath);
}
}
}
return resource;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.emf.common.notify.Adapter#isAdapterForType(java.lang.Object)
*/
public boolean isAdapterForType(Object aType) {
return ADAPTER_TYPE == aType;
}
}