package com.mobilesorcery.sdk.html5.live; import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.util.HashSet; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IResourceDeltaVisitor; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import com.mobilesorcery.sdk.html5.debug.JSODDSupport; public class ReloadManager implements IResourceChangeListener { public ReloadManager() { ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE); } public void dispose() { } @Override public void resourceChanged(IResourceChangeEvent event) { IResourceDelta delta = event.getDelta(); final HashSet<IProject> projectsToReload = new HashSet<IProject>(); if (delta != null) { try { delta.accept(new IResourceDeltaVisitor() { @Override public boolean visit(IResourceDelta delta) throws CoreException { IResource resource = delta.getResource(); if (resource != null && (delta.getFlags() & IResourceDelta.CONTENT) != 0) { IProject project = resource.getProject(); if (project != null && resource.getType() == IResource.FILE) { projectsToReload.add(resource.getProject()); } //try { if (resource.getType() == IResource.FILE) { //op.rewrite(resource.getFullPath()); } /*} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ } return true; } }); } catch (CoreException e) { // Ignore. e.printStackTrace(); } } try { for (IProject projectToReload : projectsToReload) { reload(projectToReload); } } catch (IOException e) { // Ignore? Put in status line? e.printStackTrace(); } } public void reload(IProject projectToReload) throws IOException { URL reloadServerURL = new URL("http", "localhost", 8282, "/" + projectToReload.getName() + "/LocalFiles.html"); // Just ping & close. TODO: Seperate thread, please. // Activate if we ever want to support Reload in the IDE. /* URLConnection connection = reloadServerURL.openConnection(); connection.connect(); connection.getInputStream().close();*/ } }