Lines 8-17
Link Here
|
8 |
****************************************************************************/ |
8 |
****************************************************************************/ |
9 |
package org.eclipse.wst.xml.ui.internal.tabletree; |
9 |
package org.eclipse.wst.xml.ui.internal.tabletree; |
10 |
|
10 |
|
|
|
11 |
import java.util.Iterator; |
12 |
|
11 |
import org.eclipse.core.resources.IMarker; |
13 |
import org.eclipse.core.resources.IMarker; |
12 |
import org.eclipse.core.runtime.IProgressMonitor; |
14 |
import org.eclipse.core.runtime.IProgressMonitor; |
13 |
import org.eclipse.core.runtime.IStatus; |
15 |
import org.eclipse.core.runtime.IStatus; |
14 |
import org.eclipse.core.runtime.Status; |
16 |
import org.eclipse.core.runtime.Status; |
|
|
17 |
import org.eclipse.emf.common.notify.Notifier; |
15 |
import org.eclipse.jface.preference.IPreferenceStore; |
18 |
import org.eclipse.jface.preference.IPreferenceStore; |
16 |
import org.eclipse.jface.text.IDocument; |
19 |
import org.eclipse.jface.text.IDocument; |
17 |
import org.eclipse.jface.text.ITextInputListener; |
20 |
import org.eclipse.jface.text.ITextInputListener; |
Lines 22-27
Link Here
|
22 |
import org.eclipse.jface.viewers.ISelectionProvider; |
25 |
import org.eclipse.jface.viewers.ISelectionProvider; |
23 |
import org.eclipse.jface.viewers.IStructuredSelection; |
26 |
import org.eclipse.jface.viewers.IStructuredSelection; |
24 |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
27 |
import org.eclipse.jface.viewers.SelectionChangedEvent; |
|
|
28 |
import org.eclipse.jface.viewers.StructuredSelection; |
25 |
import org.eclipse.swt.SWT; |
29 |
import org.eclipse.swt.SWT; |
26 |
import org.eclipse.swt.widgets.Control; |
30 |
import org.eclipse.swt.widgets.Control; |
27 |
import org.eclipse.swt.widgets.Event; |
31 |
import org.eclipse.swt.widgets.Event; |
Lines 40-49
Link Here
|
40 |
import org.eclipse.ui.PlatformUI; |
44 |
import org.eclipse.ui.PlatformUI; |
41 |
import org.eclipse.ui.ide.IDE; |
45 |
import org.eclipse.ui.ide.IDE; |
42 |
import org.eclipse.ui.ide.IGotoMarker; |
46 |
import org.eclipse.ui.ide.IGotoMarker; |
|
|
47 |
import org.eclipse.ui.part.ISetSelectionTarget; |
43 |
import org.eclipse.ui.part.MultiPageEditorPart; |
48 |
import org.eclipse.ui.part.MultiPageEditorPart; |
44 |
import org.eclipse.ui.part.MultiPageEditorSite; |
49 |
import org.eclipse.ui.part.MultiPageEditorSite; |
45 |
import org.eclipse.ui.part.MultiPageSelectionProvider; |
50 |
import org.eclipse.ui.part.MultiPageSelectionProvider; |
46 |
import org.eclipse.ui.progress.UIJob; |
51 |
import org.eclipse.ui.progress.UIJob; |
|
|
52 |
import org.eclipse.wst.common.internal.emf.resource.EMF2DOMAdapter; |
47 |
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; |
53 |
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; |
48 |
import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; |
54 |
import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; |
49 |
import org.eclipse.wst.sse.ui.StructuredTextEditor; |
55 |
import org.eclipse.wst.sse.ui.StructuredTextEditor; |
Lines 51-58
Link Here
|
51 |
import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML; |
57 |
import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML; |
52 |
import org.eclipse.wst.xml.ui.internal.Logger; |
58 |
import org.eclipse.wst.xml.ui.internal.Logger; |
53 |
import org.eclipse.wst.xml.ui.internal.XMLUIPlugin; |
59 |
import org.eclipse.wst.xml.ui.internal.XMLUIPlugin; |
|
|
60 |
import org.w3c.dom.Node; |
54 |
|
61 |
|
55 |
public class XMLMultiPageEditorPart extends MultiPageEditorPart { |
62 |
public class XMLMultiPageEditorPart extends MultiPageEditorPart implements ISetSelectionTarget { |
56 |
|
63 |
|
57 |
/** |
64 |
/** |
58 |
* Internal part activation listener, copied from AbstractTextEditor |
65 |
* Internal part activation listener, copied from AbstractTextEditor |
Lines 770-773
Link Here
|
770 |
fDesignViewer.setDocument(getDocument()); |
777 |
fDesignViewer.setDocument(getDocument()); |
771 |
setPartName(input.getName()); |
778 |
setPartName(input.getName()); |
772 |
} |
779 |
} |
|
|
780 |
|
781 |
/** |
782 |
* Reveals and selects the given element within this target view. |
783 |
* |
784 |
* @param selection the new element to select |
785 |
*/ |
786 |
public void selectReveal(ISelection selection) { |
787 |
if (selection instanceof IStructuredSelection) { |
788 |
Object obj = ((IStructuredSelection) selection).getFirstElement(); |
789 |
EMF2DOMAdapter emf2dom = getEMF2DOMAdapter(obj); |
790 |
|
791 |
if (emf2dom != null) { |
792 |
Node node = emf2dom.getNode(); |
793 |
if (getActivePage() == fSourcePageIndex) { |
794 |
// if the active editor page is the source editor, set the selection there |
795 |
getTextEditor().getSelectionProvider().setSelection(new StructuredSelection(node)); |
796 |
} else if (getActivePage() == fDesignPageIndex) { |
797 |
// if the active editor page is the design viewer, set the selection there |
798 |
fDesignViewer.getSelectionProvider().setSelection(new StructuredSelection(node)); |
799 |
} |
800 |
} |
801 |
} |
802 |
} |
803 |
|
804 |
/** |
805 |
* Returns EMF2DOMAdapter for the specified object. This adapter is used |
806 |
* to convert the EMF object to the corresponding DOM node. |
807 |
* |
808 |
* @param o the object that contains the adapter |
809 |
* |
810 |
* @return returns instance to the EMF2DOMAdapter, or <code>null</code> if |
811 |
* the object has no such adapter. |
812 |
*/ |
813 |
private EMF2DOMAdapter getEMF2DOMAdapter(Object o) { |
814 |
EMF2DOMAdapter emf2dom = null; |
815 |
|
816 |
if (o != null && o instanceof Notifier) { |
817 |
Iterator iter = ((Notifier) o).eAdapters().iterator(); |
818 |
while (iter.hasNext()) { |
819 |
Object obj = iter.next(); |
820 |
if (obj instanceof EMF2DOMAdapter) { |
821 |
emf2dom = (EMF2DOMAdapter) obj; |
822 |
break; |
823 |
} |
824 |
} |
825 |
} |
826 |
|
827 |
return emf2dom; |
828 |
} |
773 |
} |
829 |
} |