[jbosstools-commits] JBoss Tools SVN: r42961 - in trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common: editor and 1 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Thu Aug 9 19:44:45 EDT 2012
Author: scabanovich
Date: 2012-08-09 19:44:45 -0400 (Thu, 09 Aug 2012)
New Revision: 42961
Modified:
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/core/resources/XModelObjectEditorInput.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/editor/ObjectMultiPageEditor.java
trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/texteditors/TextEditorSupport.java
Log:
JBIDE-12411
https://issues.jboss.org/browse/JBIDE-12410
When file systems in model are rebuilt, for example after web content path is replaced, editors that use xmodel object representing a file resource should check if the xmodel object is deleted from the model, and in this case find the new valid object.
Modified: trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/core/resources/XModelObjectEditorInput.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/core/resources/XModelObjectEditorInput.java 2012-08-09 23:24:29 UTC (rev 42960)
+++ trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/core/resources/XModelObjectEditorInput.java 2012-08-09 23:44:45 UTC (rev 42961)
@@ -47,6 +47,22 @@
this.object = object;
cache = new XModelObjectCache(object);
}
+
+ /**
+ * Returns true if XModelObject corresponding to the file is replaced.
+ *
+ * @return
+ */
+ public boolean updateXModelObject() {
+ IFile file = getFile();
+ XModelObject o = EclipseResourceUtil.createObjectForResource(file);
+ if(o != null && o != object) {
+ object = o;
+ cache = new XModelObjectCache(object);
+ return true;
+ }
+ return false;
+ }
private static XModelObject getMainObject(XModelObject object) {
if(object instanceof FileAnyAuxiliaryImpl) {
@@ -135,10 +151,7 @@
}
public IFile getFile() {
-// XModelObject o = getXModelObject();
-// if (o == null || o.getPath() == null)
- return super.getFile();
-// return getFileByObject(o);
+ return super.getFile();
}
public boolean isFileChanged() {
Modified: trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/editor/ObjectMultiPageEditor.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/editor/ObjectMultiPageEditor.java 2012-08-09 23:24:29 UTC (rev 42960)
+++ trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/editor/ObjectMultiPageEditor.java 2012-08-09 23:44:45 UTC (rev 42961)
@@ -12,13 +12,10 @@
import java.io.*;
import java.text.MessageFormat;
-import java.util.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.Properties;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.*;
-import org.jboss.tools.common.CommonPlugin;
import org.jboss.tools.common.core.resources.XModelObjectEditorInput;
import org.jboss.tools.common.model.util.XModelTreeListenerSWTSync;
import org.jboss.tools.common.model.ui.outline.XModelObjectContentOutlineProvider;
@@ -53,6 +50,7 @@
import org.jboss.tools.common.model.event.XModelTreeListener;
import org.jboss.tools.common.model.filesystems.FileSystemsHelper;
import org.jboss.tools.common.model.filesystems.impl.FileAnyImpl;
+import org.jboss.tools.common.model.filesystems.impl.FileSystemImpl;
import org.jboss.tools.common.model.filesystems.impl.FolderImpl;
import org.jboss.tools.common.model.options.Preference;
import org.jboss.tools.common.model.options.PreferenceModelUtilities;
@@ -552,6 +550,33 @@
public void structureChanged(XModelTreeEvent event) {
if(lock2) return;
if(waitForMerge) return;
+
+ if((event.getModelObject() instanceof FileSystemImpl || event.getDetails() instanceof FileSystemImpl) &&
+ getFile() != null && getFile().exists() && getEditorInput() instanceof XModelObjectEditorInput) {
+ XModelObjectEditorInput ei = (XModelObjectEditorInput)getEditorInput();
+ if(ei.updateXModelObject()) {
+ lock2 = true;
+ try {
+ XModelObject o = ei.getXModelObject();
+
+ if(textEditor != null) textEditor.setObject(o);
+ object = o;
+ setInput(ei);
+
+ lastModifiedTimeStamp = (object == null || object.isModified()) ? -1 : object.getLastModificationTimeStamp();
+ cache = new XModelObjectCache(object);
+ outline.setCache(cache);
+ model = object.getModel();
+
+ updateTitle();
+ timeStamp = -1;
+ update0();
+ } finally {
+ lock2 = false;
+ }
+ }
+ }
+
if(needsUpdate()) {
Display.getDefault().syncExec(new U());
}
Modified: trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/texteditors/TextEditorSupport.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/texteditors/TextEditorSupport.java 2012-08-09 23:24:29 UTC (rev 42960)
+++ trunk/common/plugins/org.jboss.tools.common.model.ui/src/org/jboss/tools/common/model/ui/texteditors/TextEditorSupport.java 2012-08-09 23:44:45 UTC (rev 42961)
@@ -41,7 +41,7 @@
}
public void update() {
- if(lock > 0) return;
+ if(lock > 0 || modified) return;
if(!needsUpdate()) return;
lock++;
try {
@@ -85,7 +85,8 @@
lock++;
try {
FileAnyImpl f = (FileAnyImpl)getModelObject();
- if(f != null) f.edit(provider.getText());
+ if(f != null) f.edit(provider.getText());
+ timeStamp = f.getTimeStamp();
} catch (XModelException e) {
ModelUIPlugin.getPluginLog().logError(e);
} finally {
More information about the jbosstools-commits
mailing list