package org.objectstyle.wolips.core.resources; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.objectstyle.wolips.baseforuiplugins.utils.WorkbenchUtilities; import org.objectstyle.wolips.core.CorePlugin; import org.objectstyle.wolips.locate.LocatePlugin; import org.objectstyle.wolips.locate.result.LocalizedComponentsLocateResult; public class ComponentWOLipsResource implements IWOLipsResource { public static String[] EXTENSIONS = new String[] { "java", "groovy", "wo", "html", "wod", "woo", "api" }; private IResource _resource; public ComponentWOLipsResource(IResource resource) { _resource = resource; } public List<IResource> getRelatedResources() { List<IResource> list = new LinkedList<IResource>(); try { String fileName = _resource.getName(); String extension = _resource.getFileExtension(); int length = fileName.length() - extension.length() - 1; if (length > 0) { fileName = fileName.substring(0, length); LocalizedComponentsLocateResult results = LocatePlugin.getDefault().getLocalizedComponentsLocateResult(_resource); list.addAll(Arrays.asList(results.getResources())); if (results.getFirstHtmlFile() != null) { list.add(results.getFirstHtmlFile()); } if (results.getFirstWodFile() != null) { list.add(results.getFirstWodFile()); } if (results.getFirstWooFile() != null) { list.add(results.getFirstWooFile()); } } } catch (Exception e) { CorePlugin.getDefault().log(e); } return list; } public IResource getUnderlyingResource() { return _resource; } public void open() { String extension = _resource.getFileExtension(); if ("wo".equals(extension)) { String fileName = _resource.getName(); fileName = fileName.substring(0, fileName.length() - extension.length() - 1); IFile wodFile = (IFile) ((IFolder) _resource).findMember(fileName + ".wod"); if (wodFile != null) { WorkbenchUtilities.open(wodFile, "org.objectstyle.wolips.componenteditor.ComponentEditor"); } } else { WorkbenchUtilities.open((IFile) _resource, null); } } @Override public int hashCode() { return _resource.hashCode(); } public boolean equals(Object obj) { return obj instanceof IWOLipsResource && _resource.equals(((IWOLipsResource) obj).getUnderlyingResource()); } @Override public String toString() { return "[" + getClass().getSimpleName() + ": " + _resource + "]"; } public static boolean isComponentExtension(String extension) { if (extension != null) { String lowercaseExtension = extension.toLowerCase(); for (String componentExtension : ComponentWOLipsResource.EXTENSIONS) { if (lowercaseExtension.equals(componentExtension)) { return true; } } } return false; } }