Index: /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java
===================================================================
--- /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java	(revision 6924)
+++ /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeVisualDomBuilder.java	(working copy)
@@ -71,6 +71,7 @@
 import org.jboss.tools.vpe.editor.util.TextUtil;
 import org.jboss.tools.vpe.editor.util.VisualDomUtil;
 import org.jboss.tools.vpe.editor.util.VpeStyleUtil;
+import org.jboss.tools.vpe.xulrunner.ProxyManager;
 import org.jboss.tools.vpe.xulrunner.editor.XulRunnerEditor;
 import org.jboss.tools.vpe.xulrunner.editor.XulRunnerVpeUtils;
 import org.mozilla.interfaces.nsIDOMAttr;
@@ -848,8 +849,11 @@
 	    nsIDOMNode visualContainer = visualOldNode.getParentNode();
 	    nsIDOMNode visualNextNode = visualOldNode.getNextSibling();
 	    if (visualContainer != null) {
+	    	
+	   //jbide-675 non ui thread added by Max Areshkau
+	    visualContainer=ProxyManager.createProxyForNode(visualContainer);
 		visualContainer.removeChild(visualOldNode);
-		addNode(sourceNode, visualNextNode, visualContainer);
+		addNode(sourceNode, ProxyManager.createProxyForNode(visualNextNode), visualContainer);
 	    }
 	} else {
 	    // Max Areshkau Why we need update parent node when we update text
Index: /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeController.java
===================================================================
--- /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeController.java	(revision 6924)
+++ /Users/mareshkau/develop/rhds/normal_update/org.jboss.tools.vpe/src/org/jboss/tools/vpe/editor/VpeController.java	(working copy)
@@ -144,6 +144,7 @@
 import org.jboss.tools.vpe.selbar.SelectionBar;
 import org.jboss.tools.vpe.xulrunner.browser.util.DOMTreeDumper;
 import org.jboss.tools.vpe.xulrunner.editor.XulRunnerEditor;
+import org.mozilla.interfaces.nsIComponentManager;
 import org.mozilla.interfaces.nsIDOMDocument;
 import org.mozilla.interfaces.nsIDOMElement;
 import org.mozilla.interfaces.nsIDOMEvent;
@@ -151,8 +152,12 @@
 import org.mozilla.interfaces.nsIDOMMouseEvent;
 import org.mozilla.interfaces.nsIDOMMutationEvent;
 import org.mozilla.interfaces.nsIDOMNode;
+import org.mozilla.interfaces.nsIEventQueue;
+import org.mozilla.interfaces.nsIEventQueueService;
+import org.mozilla.interfaces.nsIProxyObjectManager;
 import org.mozilla.interfaces.nsISelection;
 import org.mozilla.interfaces.nsISelectionListener;
+import org.mozilla.interfaces.nsIServiceManager;
 import org.mozilla.interfaces.nsISupports;
 import org.mozilla.xpcom.Mozilla;
 import org.w3c.dom.Attr;
@@ -378,7 +383,18 @@
         display= PlatformUI.getWorkbench().getDisplay();
 
         if (display != null && (Thread.currentThread() == display.getThread())) {
-        notifyChangedInUiThread(notifier, eventType, feature, oldValue, newValue, pos);
+        	Job nonUIJob = new Job("Update Job"){ //$NON-NLS-1$
+
+				@Override
+				protected IStatus run(IProgressMonitor monitor) {
+					synchronized (this) {
+					notifyChangedInUiThread(notifier, eventType, feature, oldValue, newValue, pos);
+					}
+					return Status.OK_STATUS;
+				}};
+				nonUIJob.setPriority(Job.LONG);
+				nonUIJob.schedule();
+//        notifyChangedInUiThread(notifier, eventType, feature, oldValue, newValue, pos);
         return;
         } 
 		//start job when we modify file in non ui thread