Index: /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/browser/XulRunnerBrowser.java
===================================================================
--- /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/browser/XulRunnerBrowser.java	(revision 6924)
+++ /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/browser/XulRunnerBrowser.java	(working copy)
@@ -93,7 +93,7 @@
 	    
 	    webBrowser = (nsIWebBrowser) browser.getWebBrowser();
             if (webBrowser == null) {
-                throw new XulRunnerException("nsIWebBrowser is not available"); // $NON-NLS-1$
+                throw new XulRunnerException("nsIWebBrowser is not available"); //$NON-NLS-1$
             }
 
             setBoolRootPref(PREFERENCE_DISABLEOPENDURINGLOAD, true);
@@ -108,7 +108,7 @@
             //	nsIWebProgressListener.NS_IWEBPROGRESSLISTENER_IID);
             nsIServiceManager serviceManager = mozilla.getServiceManager();
             nsIWebProgress webProgress = (nsIWebProgress) serviceManager
-    		.getServiceByContractID("@mozilla.org/docloaderservice;1", // $NON-NLS-1$
+    		.getServiceByContractID("@mozilla.org/docloaderservice;1", //$NON-NLS-1$
     			nsIWebProgress.NS_IWEBPROGRESS_IID);
             webProgress.addProgressListener(this, nsIWebProgress.NOTIFY_ALL);
             
Index: /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/browser/util/DOMTreeDumper.java
===================================================================
--- /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/browser/util/DOMTreeDumper.java	(revision 6924)
+++ /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/browser/util/DOMTreeDumper.java	(working copy)
@@ -63,6 +63,12 @@
     	dumpDocument(doc);
     }
 
+	public void dumpNodeToStream(PrintStream ps, nsIDOMNode domNode) {
+		
+		this.ps=ps;
+		dumpNode(domNode);
+	}
+	
     private void dumpDocument(nsIDOMDocument doc) {
     	if (doc == null) {
     		return;
Index: /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerEditor.java
===================================================================
--- /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerEditor.java	(revision 6924)
+++ /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/editor/XulRunnerEditor.java	(working copy)
@@ -22,6 +22,7 @@
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.jboss.tools.vpe.xulrunner.BrowserPlugin;
+import org.jboss.tools.vpe.xulrunner.ProxyManager;
 import org.jboss.tools.vpe.xulrunner.XPCOM;
 import org.jboss.tools.vpe.xulrunner.XulRunnerException;
 import org.jboss.tools.vpe.xulrunner.browser.XulRunnerBrowser;
@@ -392,7 +393,9 @@
 			nsIServiceManager serviceManager = Mozilla.getInstance().getServiceManager();
 			iFlasher = (inIFlasher) serviceManager.getServiceByContractID(XPCOM.IN_FLASHER_CONTRACTID, inIFlasher.INIFLASHER_IID);
 			iFlasher.setThickness(2);
+//			iFlasher = ProxyManager.createProxyForFlasher(iFlasher);
 		}
+		iFlasher = ProxyManager.createProxyForFlasher(iFlasher);
 		return iFlasher;
 	}
 	
Index: /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/ProxyManager.java
===================================================================
--- /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/ProxyManager.java	(revision 0)
+++ /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe.xulrunner/src/org/jboss/tools/vpe/xulrunner/ProxyManager.java	(revision 0)
@@ -0,0 +1,90 @@
+/******************************************************************************* 
+* Copyright (c) 2007 Red Hat, Inc.
+* Distributed under license by Red Hat, Inc. All rights reserved.
+* This program is 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:
+*     Red Hat, Inc. - initial API and implementation
+******************************************************************************/
+package org.jboss.tools.vpe.xulrunner;
+
+import org.mozilla.interfaces.inIFlasher;
+import org.mozilla.interfaces.nsIComponentManager;
+import org.mozilla.interfaces.nsIDOMElement;
+import org.mozilla.interfaces.nsIDOMNode;
+import org.mozilla.interfaces.nsIEventQueue;
+import org.mozilla.interfaces.nsIEventQueueService;
+import org.mozilla.interfaces.nsIProxyObjectManager;
+import org.mozilla.interfaces.nsIServiceManager;
+import org.mozilla.xpcom.Mozilla;
+
+/**
+ * @author mareshkau
+ * We can access from mozilla DOM only from proxy in non ui threads
+ */
+public class ProxyManager {
+	
+	 private static nsIProxyObjectManager proxyObjectManager;
+	 
+	 private static nsIEventQueue eventQueue;
+	 
+	/**
+	 * Creates a proxy for node
+	 * @param proxy for nodes
+	 * @return
+	 */
+	public static nsIDOMNode createProxyForNode(nsIDOMNode node) {
+
+		nsIDOMNode proxyNode =null;
+		proxyNode = (nsIDOMNode)getProxyObjectManager().getProxyForObject(getEventQueue(), nsIDOMNode.NS_IDOMNODE_IID, 
+											node, nsIProxyObjectManager.INVOKE_SYNC);
+		return proxyNode;
+	}
+	/**
+	 * 
+	 * @param element
+	 * @return proxy for element
+	 */
+	public static nsIDOMElement createProxyForElement(nsIDOMElement element) {
+		
+		nsIDOMElement proxyElement =null;
+		proxyElement = (nsIDOMElement)getProxyObjectManager().getProxyForObject(getEventQueue(), nsIDOMElement.NS_IDOMELEMENT_IID, 
+											element, nsIProxyObjectManager.INVOKE_SYNC);
+		return proxyElement;
+	}
+	/**
+	 * 
+	 * @param element
+	 * @return proxy for element
+	 */
+	public static inIFlasher createProxyForFlasher(inIFlasher flasher) {
+		
+		inIFlasher proxyFlasher =null;
+		proxyFlasher = (inIFlasher)getProxyObjectManager().getProxyForObject(getEventQueue(), inIFlasher.INIFLASHER_IID, 
+											flasher, nsIProxyObjectManager.INVOKE_ASYNC);
+		return proxyFlasher;
+	}
+	/**
+	 * @return the proxyObjectManager
+	 */
+	private static nsIProxyObjectManager getProxyObjectManager() {
+		if(proxyObjectManager==null) {
+			nsIComponentManager componentManager = Mozilla.getInstance().getComponentManager();
+			proxyObjectManager = (nsIProxyObjectManager)componentManager.createInstanceByContractID("@mozilla.org/xpcomproxy;1",null,nsIProxyObjectManager.NS_IPROXYOBJECTMANAGER_IID);  //$NON-NLS-1$
+		}
+		return proxyObjectManager;
+	}
+	/**
+	 * @return the eventQueue
+	 */
+	private static nsIEventQueue getEventQueue() {
+		if(eventQueue==null) {
+			nsIServiceManager serviceManager = Mozilla.getInstance().getServiceManager();
+			nsIEventQueueService eventQueueServive = (nsIEventQueueService)serviceManager.getServiceByContractID("@mozilla.org/event-queue-service;1",nsIEventQueueService.NS_IEVENTQUEUESERVICE_IID); //$NON-NLS-1$
+			eventQueue = eventQueueServive.getSpecialEventQueue(nsIEventQueueService.UI_THREAD_EVENT_QUEUE);
+		}
+		return eventQueue;
+	}
+}