use of org.eclipse.wst.sse.ui.internal.selection.SelectionHistory in project webtools.sourceediting by eclipse.
the class StructuredSelectHistoryHandler method execute.
public Object execute(ExecutionEvent event) throws ExecutionException {
IEditorPart editor = HandlerUtil.getActiveEditor(event);
SelectionHistory history = editor.getAdapter(SelectionHistory.class);
if (history != null) {
IRegion old = history.getLast();
if (old != null) {
try {
history.ignoreSelectionChanges();
ITextEditor textEditor = null;
if (editor instanceof ITextEditor)
textEditor = (ITextEditor) editor;
else {
Object o = editor.getAdapter(ITextEditor.class);
if (o != null)
textEditor = (ITextEditor) o;
}
if (textEditor != null)
textEditor.selectAndReveal(old.getOffset(), old.getLength());
} finally {
history.listenToSelectionChanges();
}
}
}
return null;
}
use of org.eclipse.wst.sse.ui.internal.selection.SelectionHistory in project webtools.sourceediting by eclipse.
the class AbstractStructuredSelectHandler method execute.
public Object execute(ExecutionEvent event) throws ExecutionException {
IEditorPart editor = HandlerUtil.getActiveEditor(event);
ITextEditor textEditor = null;
if (editor instanceof ITextEditor)
textEditor = (ITextEditor) editor;
else {
Object o = editor.getAdapter(ITextEditor.class);
if (o != null)
textEditor = (ITextEditor) o;
}
if (textEditor != null) {
ISelection selection = textEditor.getSelectionProvider().getSelection();
IDocument document = textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
// determine current text selection
if (selection instanceof ITextSelection && document != null) {
ITextSelection textSelection = (ITextSelection) selection;
if (textSelection.getLength() < document.getLength()) {
// get current indexed region
IndexedRegion cursorIndexedRegion = getCursorIndexedRegion(document, textSelection);
// determine new selection based on current indexed region
Region newSelectionRegion = getNewSelectionRegion(cursorIndexedRegion, textSelection);
// select new selection
if (newSelectionRegion != null) {
SelectionHistory history = editor.getAdapter(SelectionHistory.class);
if (history != null) {
history.remember(new Region(textSelection.getOffset(), textSelection.getLength()));
try {
history.ignoreSelectionChanges();
textEditor.selectAndReveal(newSelectionRegion.getOffset(), newSelectionRegion.getLength());
} finally {
history.listenToSelectionChanges();
}
}
}
}
}
}
return null;
}
use of org.eclipse.wst.sse.ui.internal.selection.SelectionHistory in project webtools.sourceediting by eclipse.
the class StructuredTextEditor method getAdapter.
/*
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
*/
public Object getAdapter(Class required) {
if (org.eclipse.wst.sse.core.internal.util.Debug.perfTestAdapterClassLoading) {
startPerfTime = System.currentTimeMillis();
}
Object result = null;
// text editor
IStructuredModel internalModel = getInternalModel();
if (ITextEditor.class.equals(required) || ITextEditorExtension5.class.equals(required) || ITextEditorExtension4.class.equals(required) || ITextEditorExtension3.class.equals(required) || ITextEditorExtension2.class.equals(required) || ITextEditorExtension.class.equals(required)) {
result = this;
} else if (IWorkbenchSiteProgressService.class.equals(required)) {
return getEditorPart().getSite().getAdapter(IWorkbenchSiteProgressService.class);
} else // content outline page
if (IContentOutlinePage.class.equals(required)) {
if (fOutlinePage == null && !fEditorDisposed) {
ContentOutlineConfiguration cfg = createContentOutlineConfiguration();
if (cfg != null) {
ConfigurableContentOutlinePage outlinePage = new ConfigurableContentOutlinePage();
outlinePage.setConfiguration(cfg);
if (internalModel != null) {
outlinePage.setInputContentTypeIdentifier(internalModel.getContentTypeIdentifier());
outlinePage.setInput(internalModel);
}
if (fOutlinePageListener == null) {
fOutlinePageListener = new OutlinePageListener();
}
outlinePage.addSelectionChangedListener(fOutlinePageListener);
outlinePage.addDoubleClickListener(fOutlinePageListener);
fOutlinePage = outlinePage;
}
}
result = fOutlinePage;
} else // property sheet page, but only if the input's editable
if (IPropertySheetPage.class.equals(required) && isEditable()) {
if (fPropertySheetPage == null || fPropertySheetPage.getControl() == null || fPropertySheetPage.getControl().isDisposed()) {
PropertySheetConfiguration cfg = createPropertySheetConfiguration();
if (cfg != null) {
ConfigurablePropertySheetPage propertySheetPage = new ConfigurablePropertySheetPage();
propertySheetPage.setConfiguration(cfg);
fPropertySheetPage = propertySheetPage;
}
}
result = fPropertySheetPage;
} else if (IDocument.class.equals(required)) {
result = getDocumentProvider().getDocument(getEditorInput());
} else if (ISourceEditingTextTools.class.equals(required)) {
result = createSourceEditingTextTools();
} else if (IToggleBreakpointsTarget.class.equals(required)) {
result = ToggleBreakpointsTarget.getInstance();
} else if (ITextEditorExtension4.class.equals(required)) {
result = this;
} else if (IShowInTargetList.class.equals(required)) {
result = new ShowInTargetListAdapter();
} else if (IVerticalRuler.class.equals(required)) {
return getVerticalRuler();
} else if (SelectionHistory.class.equals(required)) {
if (fSelectionHistory == null)
fSelectionHistory = new SelectionHistory(this);
result = fSelectionHistory;
} else if (IResource.class.equals(required)) {
IEditorInput input = getEditorInput();
if (input != null) {
result = input.getAdapter(required);
}
} else {
if (result == null && internalModel != null) {
result = internalModel.getAdapter(required);
}
// others
if (result == null)
result = super.getAdapter(required);
}
if (result == null) {
// Logger.log(Logger.INFO_DEBUG, "StructuredTextEditor.getAdapter returning null for " + required); //$NON-NLS-1$
}
if (org.eclipse.wst.sse.core.internal.util.Debug.perfTestAdapterClassLoading) {
long stop = System.currentTimeMillis();
adapterRequests++;
adapterTime += (stop - startPerfTime);
}
if (org.eclipse.wst.sse.core.internal.util.Debug.perfTestAdapterClassLoading) {
// $NON-NLS-1$
System.out.println("Total calls to getAdapter: " + adapterRequests);
// $NON-NLS-1$
System.out.println("Total time in getAdapter: " + adapterTime);
// $NON-NLS-1$
System.out.println("Average time per call: " + (adapterTime / adapterRequests));
}
return result;
}
Aggregations