Author: scabanovich
Date: 2011-06-07 14:06:36 -0400 (Tue, 07 Jun 2011)
New Revision: 31880
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPMultiPageSelectionProvider.java
Log:
JBIDE-9070
https://issues.jboss.org/browse/JBIDE-9070
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPMultiPageSelectionProvider.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPMultiPageSelectionProvider.java 2011-06-07
18:00:32 UTC (rev 31879)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/jspeditor/JSPMultiPageSelectionProvider.java 2011-06-07
18:06:36 UTC (rev 31880)
@@ -14,9 +14,13 @@
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.core.runtime.SafeRunner;
+import org.eclipse.jface.text.TextSelection;
import org.eclipse.jface.util.Assert;
import org.eclipse.jface.util.SafeRunnable;
import org.eclipse.jface.viewers.*;
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.filesystems.impl.FileAnyImpl;
+import org.jboss.tools.common.model.util.PositionSearcher;
/**
*
@@ -78,6 +82,7 @@
}
public void setSelection(ISelection selection) {
+ selection = convertObjectSelection(selection);
if (!isAppropriateSelected(selection))
return;
if (isFiringSelection)
@@ -96,6 +101,27 @@
}
}
+ private ISelection convertObjectSelection(ISelection selection) {
+ if(selection instanceof IStructuredSelection && !selection.isEmpty()
+ && ((IStructuredSelection)selection).getFirstElement() instanceof
XModelObject) {
+ XModelObject o = (XModelObject)((IStructuredSelection)selection).getFirstElement();
+ XModelObject f = o;
+ while(f != null && f.getFileType() != XModelObject.FILE) f = f.getParent();
+ if(((JSPMultiPageEditor)multiPageEditor).getModelObject() == f) {
+ String text = ((FileAnyImpl)f).getAsText();
+ PositionSearcher searcher = new PositionSearcher();
+ searcher.init(text, o, null);
+ searcher.execute();
+ int bp = searcher.getStartPosition();
+ int ep = searcher.getEndPosition();
+ if(bp >= 0 && ep >= bp) {
+ selection = new TextSelection(bp, ep - bp);
+ }
+ }
+ }
+ return selection;
+ }
+
private boolean isAppropriateSelected(ISelection selection) {
if (!(selection instanceof IStructuredSelection))
return true;