/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.text.ext.util;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.TextSelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
import org.eclipse.wst.sse.ui.StructuredTextEditor;
import org.jboss.tools.common.text.ext.IMultiPageEditor;
import org.jboss.tools.common.util.IEditorWrapper;
/**
* @author Jeremy
*/
public class StructuredSelectionHelper {
public static IndexedRegion getSourceElement(StructuredTextEditor editor, int offset) {
return editor.getModel().getIndexedRegion(offset);
}
public static void setSelectionAndRevealInActiveEditor(IRegion region) {
setSelectionAndReveal(null, region);
}
public static StructuredTextEditor getStructuredTextEditor (IEditorPart editorPart) {
IEditorPart activeEditorPart = editorPart;
if (activeEditorPart == null) {
IWorkbenchPage workbenchPage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
activeEditorPart = workbenchPage.getActiveEditor();
}
if (activeEditorPart instanceof IMultiPageEditor) {
IMultiPageEditor mpEditor = (IMultiPageEditor)activeEditorPart;
mpEditor.switchToSourceTab();
return (StructuredTextEditor)mpEditor.getSourceEditor();
} else if (activeEditorPart instanceof IEditorWrapper) {
IEditorWrapper editorPartWraper = (IEditorWrapper)activeEditorPart;
return getStructuredTextEditor(editorPartWraper.getEditor());
} else if (activeEditorPart instanceof StructuredTextEditor) {
return (StructuredTextEditor)activeEditorPart;
}
return null;
}
public static void setSelectionAndReveal(IEditorPart editorPart, IRegion region) {
StructuredTextEditor sourceEditor = getStructuredTextEditor(editorPart);
if (sourceEditor == null) {
if (editorPart instanceof ITextEditor) {
((ITextEditor)editorPart).selectAndReveal(region.getOffset(), region.getLength());
}
return;
}
ISelectionProvider provider = sourceEditor.getSelectionProvider();
provider.setSelection(new TextSelection(region.getOffset(), region.getLength()));
}
}