plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/model/ResourceManager.java
changeset 471 06589bf52fa7
child 484 f5df819c1852
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/model/ResourceManager.java	Mon Aug 23 09:55:57 2010 -0700
@@ -0,0 +1,71 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.symbian.tools.tmw.debug.internal.model;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.chromium.debug.core.model.VmResourceId;
+import org.chromium.sdk.Script;
+import org.eclipse.core.resources.IFile;
+import org.symbian.tools.tmw.previewer.PreviewerPlugin;
+
+/**
+ * This object handles the mapping between {@link Script}s and their
+ * corresponding resources inside Eclipse.
+ */
+public class ResourceManager {
+	private final Map<IFile, Script> resourceToScript = new HashMap<IFile, Script>();
+    private final Map<VmResourceId, IFile> scriptIdToResource = new HashMap<VmResourceId, IFile>();
+
+    public synchronized void addScript(Script script) {
+		IFile scriptFile = getResource(script);
+		if (scriptFile == null) {
+			scriptFile = getFile(script.getName());
+			if (scriptFile != null) {
+                VmResourceId scriptId = VmResourceId.forScript(script);
+                resourceToScript.put(scriptFile, script);
+                scriptIdToResource.put(scriptId, scriptFile);
+			}
+		}
+	}
+
+	public synchronized void clear() {
+		resourceToScript.clear();
+		scriptIdToResource.clear();
+	}
+
+	private IFile getFile(String name) {
+		if (name == null) {
+			return null;
+		}
+		IFile file = PreviewerPlugin.getDefault().getHttpPreviewer().getFileFromUrl(name);
+		if (file != null && !file.isAccessible()) {
+			file = null;
+		}
+		return file;
+	}
+
+    public synchronized IFile getResource(Script script) {
+        return scriptIdToResource.get(VmResourceId.forScript(script));
+	}
+
+    public synchronized boolean scriptHasResource(Script script) {
+		return getResource(script) != null;
+	}
+
+    public String translateResourceToScript(IFile resource) {
+		return PreviewerPlugin.getDefault().getHttpPreviewer().getHttpUrl(resource);
+	}
+
+    public VmResourceId findVmResource(IFile resource) {
+        Script script = resourceToScript.get(resource);
+        return script != null ? VmResourceId.forScript(script) : null;
+    }
+
+    public Script getScript(IFile file) {
+        return resourceToScript.get(file);
+    }
+}