[SourceEditor] Revise SourceEditor and related classes
- Correct namings
- Add more nullable annotations
- CleanUp
Change-Id: I8b435f3ecfd0edd18a745cb65fd90c66b3782da8
diff --git a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/refactoring/core/RefactoringAdapter.java b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/refactoring/core/RefactoringAdapter.java
index e778af2..0f7e8b6 100644
--- a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/refactoring/core/RefactoringAdapter.java
+++ b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/refactoring/core/RefactoringAdapter.java
@@ -69,6 +69,7 @@
import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.jcommons.text.core.BasicTextRegion;
import org.eclipse.statet.jcommons.text.core.TextRegion;
@@ -162,11 +163,12 @@
return checked.toArray(new SourceStructElement[checked.size()]);
}
- public IRegion getContinuousSourceRange(final SourceStructElement[] elements) {
- if (elements == null || elements.length == 0) {
+ public @Nullable IRegion getContinuousSourceRange(final List<SourceStructElement<?, ?>> elements) {
+ if (elements == null || elements.isEmpty()) {
return null;
}
- final SourceUnit su= elements[0].getSourceUnit();
+ final var element0= elements.get(0);
+ final SourceUnit su= element0.getSourceUnit();
if (su == null) {
return null;
}
@@ -180,15 +182,16 @@
try {
final BasicHeuristicTokenScanner scanner= getScanner(su);
scanner.configure(doc);
- final int start= elements[0].getSourceRange().getStartOffset();
- int end= elements[0].getSourceRange().getEndOffset();
+ final int start= element0.getSourceRange().getStartOffset();
+ int end= element0.getSourceRange().getEndOffset();
- for (int i= 1; i < elements.length; i++) {
- if (elements[i].getSourceUnit() != su) {
+ for (int i= 1; i < elements.size(); i++) {
+ final var element= elements.get(i);
+ if (element.getSourceUnit() != su) {
return null;
}
- final int elementStart= elements[i].getSourceRange().getStartOffset();
- final int elementEnd= elementStart + elements[i].getSourceRange().getLength();
+ final int elementStart= element.getSourceRange().getStartOffset();
+ final int elementEnd= elementStart + element.getSourceRange().getLength();
if (elementEnd <= end) {
continue;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/templates/TemplateVariableProcessor.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/templates/TemplateVariableProcessor.java
index 7f5de50..bfb8fc5 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/templates/TemplateVariableProcessor.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/templates/TemplateVariableProcessor.java
@@ -35,7 +35,7 @@
public final class TemplateVariableProcessor implements IContentAssistProcessor {
private static Comparator<TemplateVariableProposal> fgTemplateVariableProposalComparator=
- new Comparator<TemplateVariableProposal>() {
+ new Comparator<>() {
@Override
public int compare(final TemplateVariableProposal proposal0, final TemplateVariableProposal proposal1) {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/internal/ltk/ui/ActivatedContentTypeTester.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/internal/ltk/ui/ActivatedContentTypeTester.java
index 371ad8d..a7af2d4 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/internal/ltk/ui/ActivatedContentTypeTester.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/internal/ltk/ui/ActivatedContentTypeTester.java
@@ -86,7 +86,7 @@
catch (final CoreException e) {}
}
else {
- // get content type by ISourceEditor
+ // get content type by SourceEditor
if (receiver instanceof IAdaptable) {
contentType= ((IAdaptable) receiver).getAdapter(IContentType.class);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/ElementInfoController.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/ElementInfoController.java
index a71dc52..afb67a8 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/ElementInfoController.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/ElementInfoController.java
@@ -53,7 +53,7 @@
private final Object inputLock= new Object();
private volatile SourceUnit input;
- private SourceUnit newInput;
+ private @Nullable SourceUnit newInput;
private final NewInputUpdater newInputJob= new NewInputUpdater();
private class NewInputUpdater extends Job implements ISchedulingRule {
@@ -158,7 +158,7 @@
}
- public void setInput(final SourceUnit input) {
+ public void setInput(final @Nullable SourceUnit input) {
synchronized (this.inputLock) {
this.input= null;
this.newInput= input;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/LTKInputData.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/LTKInputData.java
index 9d09c03..1ace628 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/LTKInputData.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/LTKInputData.java
@@ -35,7 +35,7 @@
/**
* Data/state of LTK based input of a view/editor.
*
- * E.g. used for {@link ISelectionWithElementInfoListener} or {@link ShowInContext}
+ * E.g. used for {@link SelectionWithElementInfoListener} or {@link ShowInContext}
*/
@NonNullByDefault
public class LTKInputData implements ISelection {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/PostSelectionWithElementInfoController.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/PostSelectionWithElementInfoController.java
index b90248e..0c1a922 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/PostSelectionWithElementInfoController.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/PostSelectionWithElementInfoController.java
@@ -38,7 +38,7 @@
/**
* Controller implementation combining {@link IPostSelectionProvider} and
* {@link ModelElementInputProvider} to provide support for
- * {@link ISelectionWithElementInfoListener}.
+ * {@link SelectionWithElementInfoListener}.
*/
public class PostSelectionWithElementInfoController {
@@ -113,12 +113,12 @@
return Status.OK_STATUS;
}
- ImIdentityList<ISelectionWithElementInfoListener> listeners= PostSelectionWithElementInfoController.this.newListeners.clearToList();
+ ImIdentityList<SelectionWithElementInfoListener> listeners= PostSelectionWithElementInfoController.this.newListeners.clearToList();
if (run.stateNr != this.lastNr) {
listeners= PostSelectionWithElementInfoController.this.listeners.toList();
this.lastNr= run.stateNr;
}
- ITER_LISTENER: for (final ISelectionWithElementInfoListener listener : listeners) {
+ ITER_LISTENER: for (final SelectionWithElementInfoListener listener : listeners) {
if (ignore != null) {
for (int j= 0; j < ignore.length; j++) {
if (ignore[j] != null && ignore[j].listener == listener) {
@@ -151,8 +151,8 @@
synchronized (PostSelectionWithElementInfoController.this.inputLock) {
PostSelectionWithElementInfoController.this.inputChanged= false;
}
- final ImIdentityList<ISelectionWithElementInfoListener> listeners= PostSelectionWithElementInfoController.this.listeners.toList();
- for (final ISelectionWithElementInfoListener listener : listeners) {
+ final ImIdentityList<SelectionWithElementInfoListener> listeners= PostSelectionWithElementInfoController.this.listeners.toList();
+ for (final SelectionWithElementInfoListener listener : listeners) {
try {
listener.inputChanged();
}
@@ -186,11 +186,11 @@
public class IgnoreActivation {
- private final ISelectionWithElementInfoListener listener;
+ private final SelectionWithElementInfoListener listener;
private boolean marked;
private int nr;
- private IgnoreActivation(final ISelectionWithElementInfoListener listener) {
+ private IgnoreActivation(final SelectionWithElementInfoListener listener) {
this.listener= listener;
}
@@ -211,8 +211,8 @@
private final IPostSelectionProvider selectionProvider;
private final ModelElementInputProvider modelProvider;
- private final CopyOnWriteIdentityListSet<ISelectionWithElementInfoListener> listeners= new CopyOnWriteIdentityListSet<>();
- private final CopyOnWriteIdentityListSet<ISelectionWithElementInfoListener> newListeners= new CopyOnWriteIdentityListSet<>();
+ private final CopyOnWriteIdentityListSet<SelectionWithElementInfoListener> listeners= new CopyOnWriteIdentityListSet<>();
+ private final CopyOnWriteIdentityListSet<SelectionWithElementInfoListener> newListeners= new CopyOnWriteIdentityListSet<>();
private final Object inputLock= new Object();
private final ModelElementInputListener elementChangeListener;
@@ -313,18 +313,18 @@
}
- public void addListener(final ISelectionWithElementInfoListener listener) {
+ public void addListener(final SelectionWithElementInfoListener listener) {
this.listeners.add(listener);
this.newListeners.add(listener);
this.updateJob.schedule();
}
- public void removeListener(final ISelectionWithElementInfoListener listener) {
+ public void removeListener(final SelectionWithElementInfoListener listener) {
this.newListeners.remove(listener);
this.listeners.remove(listener);
}
- public IgnoreActivation ignoreNext(final ISelectionWithElementInfoListener listener) {
+ public IgnoreActivation ignoreNext(final SelectionWithElementInfoListener listener) {
final IgnoreActivation control= new IgnoreActivation(listener);
this.ignoreList.add(control);
return control;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/ISelectionWithElementInfoListener.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/SelectionWithElementInfoListener.java
similarity index 82%
rename from ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/ISelectionWithElementInfoListener.java
rename to ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/SelectionWithElementInfoListener.java
index 2c4ed35..0d3a114 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/ISelectionWithElementInfoListener.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/SelectionWithElementInfoListener.java
@@ -14,6 +14,8 @@
package org.eclipse.statet.ltk.ui;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
/**
* Interface to listen to {@link LTKInputData} state changes providing selection and model
@@ -21,12 +23,13 @@
*
* @see {@link PostSelectionWithElementInfoController}
*/
-public interface ISelectionWithElementInfoListener {
+@NonNullByDefault
+public interface SelectionWithElementInfoListener {
- public void inputChanged();
+ void inputChanged();
- public void stateChanged(LTKInputData state);
+ void stateChanged(LTKInputData state);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/refactoring/PasteElementsHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/refactoring/PasteElementsHandler.java
index 94db120..8bff5da 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/refactoring/PasteElementsHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/refactoring/PasteElementsHandler.java
@@ -45,7 +45,7 @@
import org.eclipse.statet.ltk.refactoring.core.CommonRefactoringFactory;
import org.eclipse.statet.ltk.refactoring.core.RefactoringAdapter;
import org.eclipse.statet.ltk.refactoring.core.RefactoringDestination;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -54,10 +54,10 @@
public class PasteElementsHandler extends AbstractElementsHandler {
- private final ISourceEditor editor;
+ private final SourceEditor editor;
- public PasteElementsHandler(final ISourceEditor editor,
+ public PasteElementsHandler(final SourceEditor editor,
final CommonRefactoringFactory refactoring) {
super(refactoring);
this.editor= editor;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractAutoEditStrategy.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractAutoEditStrategy.java
index c00eccb..0c35ae5 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractAutoEditStrategy.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractAutoEditStrategy.java
@@ -51,10 +51,10 @@
* Auto edit strategy for Wikitext markup
*/
public abstract class AbstractAutoEditStrategy extends DefaultIndentLineAutoEditStrategy
- implements ISourceEditorAddon, VerifyKeyListener {
+ implements SourceEditorAddon, VerifyKeyListener {
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private final ITextEditorExtension3 editor3;
private final DocContentSections documentContentInfo;
private final SourceViewer viewer;
@@ -65,7 +65,7 @@
private boolean ignoreCommands= false;
- public AbstractAutoEditStrategy(final ISourceEditor editor) {
+ public AbstractAutoEditStrategy(final SourceEditor editor) {
assert (editor != null);
this.editor= editor;
@@ -76,7 +76,7 @@
}
- public final ISourceEditor getEditor() {
+ public final SourceEditor getEditor() {
return this.editor;
}
@@ -92,13 +92,13 @@
return this.viewer;
}
- protected abstract ISmartInsertSettings getSettings();
+ protected abstract SmartInsertSettings getSettings();
protected abstract IIndentSettings getCodeStyleSettings();
@Override
- public void install(final ISourceEditor editor) {
+ public void install(final SourceEditor editor) {
assert (editor.getViewer() == this.viewer);
this.viewer.prependVerifyKeyListener(this);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractMarkOccurrencesProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractMarkOccurrencesProvider.java
index c790279..5361998 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractMarkOccurrencesProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/AbstractMarkOccurrencesProvider.java
@@ -14,6 +14,8 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
import java.util.Map;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -30,6 +32,10 @@
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.statet.jcommons.lang.NonNull;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.ecommons.text.core.PartitionConstraint;
import org.eclipse.statet.ltk.ast.core.util.AstSelection;
@@ -37,12 +43,13 @@
import org.eclipse.statet.ltk.model.core.ModelManager;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
-import org.eclipse.statet.ltk.ui.ISelectionWithElementInfoListener;
import org.eclipse.statet.ltk.ui.LTKInputData;
+import org.eclipse.statet.ltk.ui.SelectionWithElementInfoListener;
-public abstract class AbstractMarkOccurrencesProvider implements ISourceEditorAddon,
- ISelectionWithElementInfoListener {
+@NonNullByDefault
+public abstract class AbstractMarkOccurrencesProvider implements SourceEditorAddon,
+ SelectionWithElementInfoListener {
private static final int CLEAR= -1;
@@ -55,11 +62,11 @@
public final AbstractDocument doc;
public SourceModelStamp stamp;
- private Annotation[] annotations;
- private Point range;
+ private @NonNull Annotation[] annotations;
+ private @Nullable Point range;
private int set= 0;
- private Map<Annotation, Position> todo;
+ private @Nullable Map<Annotation, Position> todo;
RunData(final AbstractDocument doc, final SourceModelStamp stamp) {
@@ -70,8 +77,9 @@
public boolean isValid() {
final Point currentSelection= AbstractMarkOccurrencesProvider.this.editor.currentSelection;
- return (this.range != null && currentSelection.x >= this.range.x
- && currentSelection.x+currentSelection.y <= this.range.y
+ final var range= this.range;
+ return (range != null && currentSelection.x >= range.x
+ && currentSelection.x + currentSelection.y <= range.y
&& this.doc.getModificationStamp() == this.stamp.getContentStamp() );
}
@@ -106,24 +114,18 @@
private final PartitionConstraint toleratePartitions;
private boolean isMarkEnabled;
- private RunData lastRun;
+ private @Nullable RunData lastRun;
public AbstractMarkOccurrencesProvider(final SourceEditor1 editor,
final PartitionConstraint toleratePartitions) {
- if (editor == null) {
- throw new NullPointerException("editor");
- }
- if (toleratePartitions == null) {
- throw new NullPointerException("validPartitions");
- }
- this.editor= editor;
+ this.editor= nonNullAssert(editor);
this.partitioning= this.editor.getDocumentContentInfo().getPartitioning();
- this.toleratePartitions= toleratePartitions;
+ this.toleratePartitions= nonNullAssert(toleratePartitions);
}
@Override
- public void install(final ISourceEditor editor) {
+ public void install(final SourceEditor editor) {
this.isMarkEnabled= true;
this.editor.addPostSelectionWithElementInfoListener(this);
}
@@ -144,8 +146,8 @@
@Override
public void stateChanged(final LTKInputData state) {
final ISelection selection= state.getSelection();
- final boolean ok= update((SourceUnit) state.getInputElement(), state.getAstSelection(),
- (selection instanceof ITextSelection) ? (ITextSelection) selection : null );
+ final boolean ok= update((SourceUnit)state.getInputElement(), state.getAstSelection(),
+ (selection instanceof ITextSelection) ? (ITextSelection)selection : null );
if (!ok && state.isStillValid()) {
removeAnnotations();
}
@@ -154,11 +156,11 @@
/**
* Updates the occurrences annotations based on the current selection.
*
- * @return <code>true</code> if the annotation is ok (still valid or updated),
+ * @return <code>true</code> if the annotation is ok (still valid or updated),
* otherwise <code>false</code>
*/
- protected boolean update(final SourceUnit inputElement, final AstSelection astSelection,
- final ITextSelection orgSelection) {
+ protected boolean update(final SourceUnit inputElement,
+ final @Nullable AstSelection astSelection, final @Nullable ITextSelection orgSelection) {
if (!this.isMarkEnabled) {
return false;
}
@@ -172,7 +174,8 @@
if (run.doc == null) {
return false;
}
- if (this.lastRun != null && this.lastRun.isValid() && this.lastRun.stamp.equals(run.stamp)) {
+ final var lastRun= this.lastRun;
+ if (lastRun != null && lastRun.isValid() && lastRun.stamp.equals(run.stamp)) {
return true;
}
@@ -205,13 +208,14 @@
}
protected abstract void doUpdate(RunData run, SourceUnitModelInfo info,
- AstSelection astSelection, ITextSelection orgSelection)
+ AstSelection astSelection, @Nullable ITextSelection orgSelection)
throws BadLocationException, BadPartitioningException, UnsupportedOperationException;
- protected void checkKeep(final RunData run, final ITextSelection selection)
+ protected void checkKeep(final RunData run, final @Nullable ITextSelection selection)
throws BadLocationException, BadPartitioningException {
- if (this.lastRun == null || !this.lastRun.stamp.equals(run.stamp)) {
+ final var lastRun= this.lastRun;
+ if (lastRun == null || !lastRun.stamp.equals(run.stamp)) {
run.clear();
return;
}
@@ -242,7 +246,7 @@
throw new UnsupportedOperationException();
}
final IAnnotationModel annotationModel= documentProvider.getAnnotationModel(
- this.editor.getEditorInput());
+ this.editor.getEditorInput() );
if (annotationModel == null || !(annotationModel instanceof IAnnotationModelExtension)) {
throw new UnsupportedOperationException();
}
@@ -256,17 +260,20 @@
// Add occurrence annotations
final IAnnotationModel annotationModel= getAnnotationModel();
-// create diff ?
-// if (this.lastRun != null && Arrays.equals(run.name, this.lastRun.name)) {
-// }
- final Annotation[] lastAnnotations= (this.lastRun != null) ? this.lastRun.annotations : null;
+
+ final var lastRun= this.lastRun;
+ final Map<Annotation, Position> annotationMap= nonNullAssert(run.todo);
+// create diff ?
+// if (lastRun != null && Arrays.equals(run.name, lastRun.name)) {
+// }
+ run.annotations= annotationMap.keySet().toArray(new @NonNull Annotation[annotationMap.keySet().size()]);
+ run.todo= null;
synchronized (SourceEditor1.getLockObject(annotationModel)) {
if (!run.isValid()) {
return;
}
- ((IAnnotationModelExtension) annotationModel).replaceAnnotations(lastAnnotations, run.todo);
- run.annotations= run.todo.keySet().toArray(new Annotation[run.todo.keySet().size()]);
- run.todo= null;
+ ((IAnnotationModelExtension)annotationModel).replaceAnnotations(
+ (lastRun != null) ? lastRun.annotations : null, annotationMap );
this.lastRun= run;
}
}
@@ -274,11 +281,12 @@
protected void removeAnnotations() {
final IAnnotationModel annotationModel= getAnnotationModel();
synchronized (SourceEditor1.getLockObject(annotationModel)) {
- if (this.lastRun == null) {
+ final var lastRun= this.lastRun;
+ if (lastRun == null) {
return;
}
- ((IAnnotationModelExtension) annotationModel).replaceAnnotations(this.lastRun.annotations, null);
this.lastRun= null;
+ ((IAnnotationModelExtension)annotationModel).replaceAnnotations(lastRun.annotations, null);
}
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EcoReconciler2.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EcoReconciler2.java
index 660f220..78a12d5 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EcoReconciler2.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EcoReconciler2.java
@@ -42,7 +42,7 @@
/**
- * Reconciler for {@link ISourceEditor}s using Eclipse Job API.
+ * Reconciler for {@link SourceEditor}s using Eclipse Job API.
*/
public class EcoReconciler2 implements IReconciler {
@@ -168,7 +168,7 @@
/** The text viewer */
private ITextViewer viewer;
/** optional editor */
- private ISourceEditor editor;
+ private SourceEditor editor;
/** Tells whether this reconciler's editor is active. */
private volatile boolean isEditorVisible;
@@ -189,7 +189,7 @@
/**
* Creates a new reconciler without configuring it.
*/
- public EcoReconciler2(final ISourceEditor editor) {
+ public EcoReconciler2(final SourceEditor editor) {
super();
this.editor= editor;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorInformationProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorInformationProvider.java
index d718efd..d403dd1 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorInformationProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorInformationProvider.java
@@ -14,6 +14,8 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.atomic.AtomicReference;
@@ -53,21 +55,21 @@
implements IInformationProvider, IInformationProviderExtension, IInformationProviderExtension2 {
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private final ImList<? extends InfoHover> hovers;
private volatile @Nullable InfoHover bestHover;
- public EditorInformationProvider(final ISourceEditor editor,
+ public EditorInformationProvider(final SourceEditor editor,
final ImList<? extends InfoHover> hovers) {
this.editor= editor;
this.hovers= hovers;
}
- public ISourceEditor getEditor() {
+ public SourceEditor getEditor() {
return this.editor;
}
@@ -93,7 +95,8 @@
final AtomicReference<Object> info= new AtomicReference<>();
if (Display.getCurrent() != null) {
try {
- final IProgressService progressService= this.editor.getServiceLocator().getService(IProgressService.class);
+ final IProgressService progressService= nonNullAssert(this.editor
+ .getServiceLocator().getService(IProgressService.class) );
progressService.run(true, true, new IRunnableWithProgress() {
@Override
public void run(final IProgressMonitor monitor)
@@ -132,7 +135,8 @@
return null;
}
- protected abstract @Nullable AssistInvocationContext createContext(IRegion region, String contentType,
+ protected abstract @Nullable AssistInvocationContext createContext(IRegion region,
+ String contentType,
IProgressMonitor monitor );
private void getInfo0(final AssistInvocationContext context,
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorTextInfoHoverProxy.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorTextInfoHoverProxy.java
index 8cc79a0..87cfc28 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorTextInfoHoverProxy.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/EditorTextInfoHoverProxy.java
@@ -69,11 +69,10 @@
}
- protected ISourceEditor getEditor() {
+ protected SourceEditor getEditor() {
return this.sourceEditorConfig.getSourceEditor();
}
- @SuppressWarnings("null")
protected boolean ensureHover() {
InfoHover hover= this.hover;
if (hover == null) {
@@ -111,11 +110,11 @@
@Override
public @Nullable Object getHoverInfo2(final ITextViewer textViewer, final IRegion hoverRegion) {
- final ISourceEditor editor= getEditor();
+ final SourceEditor editor= getEditor();
if (editor != null && ensureHover()) {
try {
final String contentType= (hoverRegion instanceof TypedRegion) ?
- ((TypedRegion) hoverRegion).getType() :
+ ((TypedRegion)hoverRegion).getType() :
TextUtils.getContentType(editor.getViewer().getDocument(),
editor.getDocumentContentInfo(), hoverRegion.getOffset(),
hoverRegion.getLength() == 0 );
@@ -142,7 +141,8 @@
return null;
}
- protected abstract @Nullable AssistInvocationContext createContext(IRegion region, String contentType,
+ protected abstract @Nullable AssistInvocationContext createContext(IRegion region,
+ String contentType,
IProgressMonitor monitor );
private void getInfo0(final AssistInvocationContext context,
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FoldingActionGroup.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FoldingActionGroup.java
index 6d4dba0..e503bc6 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FoldingActionGroup.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FoldingActionGroup.java
@@ -132,20 +132,28 @@
public void fillMenu(final IMenuManager menuManager) {
if (this.viewer != null) {
update();
- menuManager.add(new CommandContributionItem(new CommandContributionItemParameter(
- this.editor.getSite(), null, IFoldingCommandIds.FOLDING_TOGGLE, null,
- null, null, null,
- EditingMessages.CodeFolding_Enable_label, EditingMessages.CodeFolding_Enable_mnemonic, null, SWT.CHECK, null, false) ));
+ final var site= this.editor.getSite();
+
+ menuManager.add(new CommandContributionItem(
+ new CommandContributionItemParameter(site,
+ null, IFoldingCommandIds.FOLDING_TOGGLE, null,
+ null, null, null,
+ EditingMessages.CodeFolding_Enable_label, EditingMessages.CodeFolding_Enable_mnemonic, null,
+ SWT.CHECK, null, false )));
menuManager.add(new Separator());
- menuManager.add(new HandlerContributionItem(new CommandContributionItemParameter(
- this.editor.getSite(), null, IFoldingCommandIds.FOLDING_EXPAND_ALL, null,
- null, null, null,
- EditingMessages.CodeFolding_ExpandAll_label, EditingMessages.CodeFolding_ExpandAll_mnemonic, null, SWT.CHECK, null, false),
+ menuManager.add(new HandlerContributionItem(
+ new CommandContributionItemParameter(site,
+ null, IFoldingCommandIds.FOLDING_EXPAND_ALL, null,
+ null, null, null,
+ EditingMessages.CodeFolding_ExpandAll_label, EditingMessages.CodeFolding_ExpandAll_mnemonic, null,
+ SWT.CHECK, null, false ),
this.expandAll ));
- menuManager.add(new HandlerContributionItem(new CommandContributionItemParameter(
- this.editor.getSite(), null, IFoldingCommandIds.FOLDING_COLLAPSE_ALL, null,
- null, null, null,
- EditingMessages.CodeFolding_CollapseAll_label, EditingMessages.CodeFolding_CollapseAll_mnemonic, null, SWT.CHECK, null, false),
+ menuManager.add(new HandlerContributionItem(
+ new CommandContributionItemParameter(site,
+ null, IFoldingCommandIds.FOLDING_COLLAPSE_ALL, null,
+ null, null, null,
+ EditingMessages.CodeFolding_CollapseAll_label, EditingMessages.CodeFolding_CollapseAll_mnemonic, null,
+ SWT.CHECK, null, false ),
this.collapseAll ));
}
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FragmentDocumentProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FragmentDocumentProvider.java
index 949a53b..d78a6a6 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FragmentDocumentProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/FragmentDocumentProvider.java
@@ -14,6 +14,8 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
import org.eclipse.core.filebuffers.IDocumentSetupParticipant;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -60,10 +62,7 @@
public FragmentDocumentProvider(final String modelTypeId,
final PartitionerDocumentSetupParticipant documentSetupParticipant) {
- if (modelTypeId == null) {
- throw new NullPointerException("modelTypeId"); //$NON-NLS-1$
- }
- this.modelTypeId= modelTypeId;
+ this.modelTypeId= nonNullAssert(modelTypeId);
this.documentSetupParticipant= documentSetupParticipant;
}
@@ -72,8 +71,8 @@
protected @Nullable ElementInfo createElementInfo(final Object element) throws CoreException {
SourceUnit su= null;
AbstractDocument document= null;
- if (element instanceof ISourceFragmentEditorInput) {
- final ISourceFragmentEditorInput fragmentInput= ((ISourceFragmentEditorInput) element);
+ if (element instanceof SourceFragmentEditorInput) {
+ final SourceFragmentEditorInput fragmentInput= (SourceFragmentEditorInput)element;
final SubMonitor m= SubMonitor.convert(getProgressMonitor(), 2);
try {
@@ -100,8 +99,8 @@
@Override
protected @Nullable AbstractDocument createDocument(final Object element) throws CoreException {
- if (element instanceof ISourceFragmentEditorInput) {
- final SourceFragment fragment= ((ISourceFragmentEditorInput) element).getSourceFragment();
+ if (element instanceof SourceFragmentEditorInput) {
+ final SourceFragment fragment= ((SourceFragmentEditorInput)element).getSourceFragment();
return fragment.getDocument();
}
return null;
@@ -130,7 +129,7 @@
@Override
protected void disposeElementInfo(final Object element, final ElementInfo elementInfo) {
- final SourceElementInfo info= (SourceElementInfo) elementInfo;
+ final SourceElementInfo info= (SourceElementInfo)elementInfo;
if (info.workingCopy != null) {
final SubMonitor m= SubMonitor.convert(getProgressMonitor(), 1);
try {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/MultiContentSectionSourceViewerConfiguration.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/MultiContentSectionSourceViewerConfiguration.java
index c684cc2..907120d 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/MultiContentSectionSourceViewerConfiguration.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/MultiContentSectionSourceViewerConfiguration.java
@@ -139,7 +139,7 @@
public MultiContentSectionSourceViewerConfiguration(final DocContentSections sections, final int flags,
- final ISourceEditor sourceEditor) {
+ final SourceEditor sourceEditor) {
super(sections, flags, sourceEditor);
this.sections= sections;
@@ -202,8 +202,8 @@
@Override
- public List<ISourceEditorAddon> getAddOns() {
- final List<ISourceEditorAddon> addOns= super.getAddOns();
+ public List<SourceEditorAddon> getAddOns() {
+ final List<SourceEditorAddon> addOns= super.getAddOns();
addOns.addAll(this.primaryConfig.getAddOns());
for (final SourceEditorViewerConfiguration config : this.secondaryConfigs.values()) {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/OutlineContentProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/OutlineContentProvider.java
index 725f75a..4eaa350 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/OutlineContentProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/OutlineContentProvider.java
@@ -33,7 +33,7 @@
public class OutlineContentProvider implements ITreeContentProvider {
- private static final SourceStructElement[] NO_CHILDREN= new SourceStructElement[0];
+ private static final @NonNull SourceStructElement<?, ?>[] NO_CHILDREN= new @NonNull SourceStructElement[0];
public interface OutlineContent {
@@ -73,7 +73,7 @@
protected SourceStructElement[] getElements(final @Nullable SourceUnitModelInfo modelInfo) {
if (modelInfo != null) {
- final List<? extends SourceStructElement> children= modelInfo.getSourceElement()
+ final List<? extends SourceStructElement<?, ?>> children= modelInfo.getSourceElement()
.getSourceChildren(getContent().getContentFilter());
return children.toArray(new @NonNull SourceStructElement[children.size()]);
}
@@ -100,7 +100,7 @@
@Override
- public Object[] getElements(final Object inputElement) {
+ public @NonNull Object[] getElements(final Object inputElement) {
return getElements(getContent().getModelInfo(inputElement));
}
@@ -115,7 +115,7 @@
}
@Override
- public Object[] getChildren(final Object element) {
+ public @NonNull Object[] getChildren(final Object element) {
return getChildren((SourceStructElement<?, ?>)element);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/QuickInformationProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/QuickInformationProvider.java
index 54bb7e1..3eb46ef 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/QuickInformationProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/QuickInformationProvider.java
@@ -23,6 +23,9 @@
import org.eclipse.jface.text.information.IInformationProviderExtension;
import org.eclipse.jface.text.information.IInformationProviderExtension2;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.ecommons.text.core.JFaceTextRegion;
import org.eclipse.statet.ltk.model.core.LtkModelUtils;
@@ -32,12 +35,13 @@
import org.eclipse.statet.ltk.ui.LTKUI;
+@NonNullByDefault
public abstract class QuickInformationProvider implements IInformationProvider,
IInformationProviderExtension, IInformationProviderExtension2 {
// see IJavaEditorActionDefinitionIds
- public static String viewerOperation2commandId(final int operation) {
+ private static String textOperation2commandId(final int operation) {
switch (operation) {
case SourceEditorViewer.SHOW_SOURCE_OUTLINE:
return LTKUI.SHOW_QUICK_SOURCE_OUTLINE_COMMAND_ID;
@@ -51,21 +55,21 @@
}
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private final String modelTypeId;
private final String commandId;
- private IInformationControlCreator creator;
+ private @Nullable IInformationControlCreator creator;
- public QuickInformationProvider(final ISourceEditor editor, final String modelType,
- final int viewerOperation) {
- this(editor, modelType, viewerOperation2commandId(viewerOperation));
+ public QuickInformationProvider(final SourceEditor editor, final String modelType,
+ final int textOperation) {
+ this(editor, modelType, textOperation2commandId(textOperation));
}
- public QuickInformationProvider(final ISourceEditor editor, final String modelType,
+ public QuickInformationProvider(final SourceEditor editor, final String modelType,
final String commandId) {
this.editor= editor;
this.modelTypeId= modelType;
@@ -73,7 +77,7 @@
}
- public ISourceEditor getEditor() {
+ public SourceEditor getEditor() {
return this.editor;
}
@@ -92,12 +96,12 @@
}
@Override
- public String getInformation(final ITextViewer textViewer, final IRegion subject) {
+ public @Nullable String getInformation(final ITextViewer textViewer, final IRegion subject) {
return null;
}
@Override
- public Object getInformation2(final ITextViewer textViewer, final IRegion subject) {
+ public @Nullable Object getInformation2(final ITextViewer textViewer, final IRegion subject) {
final SourceUnit su= this.editor.getSourceUnit();
if (su == null) {
return null;
@@ -113,10 +117,12 @@
@Override
public IInformationControlCreator getInformationPresenterControlCreator() {
- if (this.creator == null) {
- this.creator= createInformationPresenterControlCreator();
+ var creator= this.creator;
+ if (creator == null) {
+ creator= createInformationPresenterControlCreator();
+ this.creator= creator;
}
- return this.creator;
+ return creator;
}
protected abstract IInformationControlCreator createInformationPresenterControlCreator();
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISmartInsertSettings.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SmartInsertSettings.java
similarity index 86%
rename from ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISmartInsertSettings.java
rename to ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SmartInsertSettings.java
index 2ee4a20..cb5cf02 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISmartInsertSettings.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SmartInsertSettings.java
@@ -14,20 +14,23 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
-public interface ISmartInsertSettings {
+
+@NonNullByDefault
+public interface SmartInsertSettings {
enum TabAction {
INSERT_TAB_CHAR,
INSERT_TAB_LEVEL,
INSERT_INDENT_LEVEL,
- CORRECT_INDENT,
+ CORRECT_INDENT;
}
enum HardWrapMode {
UPTO_CURSOR,
- MERGE
+ MERGE;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SmartInsertSettingsUI.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SmartInsertSettingsUI.java
index 613a85d..4801e2a 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SmartInsertSettingsUI.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SmartInsertSettingsUI.java
@@ -16,16 +16,20 @@
import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
+@NonNullByDefault
public class SmartInsertSettingsUI {
public static class SettingsLabelProvider extends LabelProvider {
@Override
- public String getText(final Object element) {
- if (element instanceof ISmartInsertSettings.TabAction) {
- switch ((ISmartInsertSettings.TabAction) element) {
+ public String getText(final @Nullable Object element) {
+ if (element instanceof SmartInsertSettings.TabAction) {
+ switch ((SmartInsertSettings.TabAction) element) {
case INSERT_TAB_CHAR:
return "Insert Tab Char";
case INSERT_TAB_LEVEL:
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SnippetEditor.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SnippetEditor.java
index b4a2d82..f2dfb00 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SnippetEditor.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SnippetEditor.java
@@ -45,6 +45,9 @@
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.ui.texteditor.IUpdate;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.ecommons.preferences.ui.SettingsUpdater;
import org.eclipse.statet.ecommons.text.ui.TextViewerAction;
import org.eclipse.statet.ecommons.text.ui.TextViewerEditorColorUpdater;
@@ -59,6 +62,7 @@
/**
* Text snippet editor (no Eclipse editor) supporting {@link SourceEditorViewerConfigurator}.
*/
+@NonNullByDefault
public class SnippetEditor extends Object {
public static final int DEFAULT_SINGLE_LINE_STYLE= SWT.BORDER | SWT.SINGLE | SWT.LEFT_TO_RIGHT;
@@ -68,7 +72,7 @@
private static class ExtStyledText extends StyledText {
- private Color savedColor;
+ private @Nullable Color savedColor;
public ExtStyledText(final Composite parent, final int style) {
@@ -77,7 +81,7 @@
@Override
- public void setBackground(final Color color) {
+ public void setBackground(final @Nullable Color color) {
this.savedColor= color;
if (isEnabled()) {
super.setBackground(color);
@@ -153,15 +157,16 @@
private Updater updater;
private final HandlerCollection handlers;
- private final IServiceLocator serviceLocator;
+ private final @Nullable IServiceLocator serviceLocator;
private ControlServicesUtil serviceUtil;
/**
* Creates snippet editor with initial content.
*/
- public SnippetEditor(final SourceEditorViewerConfigurator configurator, final String initialContent,
- final IServiceLocator serviceParent, final boolean withToolButton) {
+ public SnippetEditor(final SourceEditorViewerConfigurator configurator,
+ final @Nullable String initialContent,
+ final @Nullable IServiceLocator serviceParent, final boolean withToolButton) {
this.configurator= configurator;
this.document= (initialContent != null) ? new Document(initialContent) : new Document();
this.configurator.getDocumentSetupParticipant().setup(this.document);
@@ -186,7 +191,7 @@
}
- protected final IServiceLocator getServiceLocator() {
+ protected final @Nullable IServiceLocator getServiceLocator() {
return this.serviceLocator;
}
@@ -282,7 +287,8 @@
this.globalActions= new HashMap<>(10);
if (this.serviceLocator != null) {
- this.serviceUtil= new ControlServicesUtil(this.serviceLocator, getClass().getName()+'#'+hashCode(), getSourceViewer().getControl());
+ this.serviceUtil= new ControlServicesUtil(this.serviceLocator,
+ getClass().getName() + '#'+hashCode(), getSourceViewer().getControl() );
this.serviceUtil.addControl(getSourceViewer().getControl());
if (this.toolButton != null) {
this.serviceUtil.addControl(this.toolButton.getButton());
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceDocumentProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceDocumentProvider.java
index bdcf27d..5476856 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceDocumentProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceDocumentProvider.java
@@ -14,6 +14,8 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.resources.IFile;
@@ -54,14 +56,12 @@
private final String modelTypeId;
- private final PartitionerDocumentSetupParticipant documentSetupParticipant;
+ private final @Nullable PartitionerDocumentSetupParticipant documentSetupParticipant;
- public SourceDocumentProvider(final String modelTypeId, final PartitionerDocumentSetupParticipant documentSetupParticipant) {
- if (modelTypeId == null) {
- throw new NullPointerException("modelTypeId"); //$NON-NLS-1$
- }
- this.modelTypeId= modelTypeId;
+ public SourceDocumentProvider(final String modelTypeId,
+ final @Nullable PartitionerDocumentSetupParticipant documentSetupParticipant) {
+ this.modelTypeId= nonNullAssert(modelTypeId);
this.documentSetupParticipant= documentSetupParticipant;
// final IDocumentProvider provider= new ForwardingDocumentProvider(documentSetupParticipant.getPartitioningId(),
// this.documentSetupParticipant, new TextFileDocumentProvider());
@@ -148,6 +148,7 @@
}
@Override
+ @SuppressWarnings("unchecked")
public @Nullable T getWorkingCopy(final Object element) {
final FileInfo fileInfo= getFileInfo(element);
if (fileInfo instanceof SourceFileInfo) {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditor.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor.java
similarity index 96%
rename from ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditor.java
rename to ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor.java
index 9de8640..5bf9d28 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditor.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor.java
@@ -35,7 +35,7 @@
* A interface for source editors independent of IEditorPart
*/
@NonNullByDefault
-public interface ISourceEditor extends IAdaptable {
+public interface SourceEditor extends IAdaptable {
/**
@@ -107,6 +107,6 @@
*/
void selectAndReveal(int offset, int length);
- @Nullable ITextEditToolSynchronizer getTextEditToolSynchronizer();
+ @Nullable TextEditToolSynchronizer getTextEditToolSynchronizer();
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1.java
index bf38193..60bb4f8 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1.java
@@ -14,8 +14,9 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -78,10 +79,10 @@
import org.eclipse.statet.jcommons.collections.CopyOnWriteIdentityListSet;
import org.eclipse.statet.jcommons.collections.ImCollections;
-import org.eclipse.statet.jcommons.collections.ImIdentityList;
import org.eclipse.statet.jcommons.collections.ImList;
+import org.eclipse.statet.jcommons.lang.NonNull;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.jcommons.lang.Nullable;
-import org.eclipse.statet.jcommons.text.core.BasicTextRegion;
import org.eclipse.statet.jcommons.text.core.TextRegion;
import org.eclipse.statet.ecommons.preferences.PreferencesUtil;
@@ -106,13 +107,13 @@
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
import org.eclipse.statet.ltk.ui.ElementInfoController;
-import org.eclipse.statet.ltk.ui.ISelectionWithElementInfoListener;
import org.eclipse.statet.ltk.ui.LTKInputData;
import org.eclipse.statet.ltk.ui.LTKUI;
import org.eclipse.statet.ltk.ui.ModelElementInputProvider;
import org.eclipse.statet.ltk.ui.PostSelectionCancelExtension;
import org.eclipse.statet.ltk.ui.PostSelectionWithElementInfoController;
import org.eclipse.statet.ltk.ui.PostSelectionWithElementInfoController.IgnoreActivation;
+import org.eclipse.statet.ltk.ui.SelectionWithElementInfoListener;
import org.eclipse.statet.ltk.ui.sourceediting.actions.DeleteNextWordHandler;
import org.eclipse.statet.ltk.ui.sourceediting.actions.DeletePreviousWordHandler;
import org.eclipse.statet.ltk.ui.sourceediting.actions.GotoMatchingBracketHandler;
@@ -122,12 +123,14 @@
import org.eclipse.statet.ltk.ui.sourceediting.actions.SelectPreviousWordHandler;
import org.eclipse.statet.ltk.ui.sourceediting.actions.SpecificContentAssistHandler;
import org.eclipse.statet.ltk.ui.sourceediting.actions.ToggleCommentHandler;
+import org.eclipse.statet.ltk.ui.util.LTKSelectionUtils;
/**
* Abstract LTK based source editor.
*/
-public abstract class SourceEditor1 extends TextEditor implements ISourceEditor,
+@NonNullByDefault
+public abstract class SourceEditor1 extends TextEditor implements SourceEditor,
SettingsChangeNotifier.ChangeListener, IPreferenceChangeListener,
IShowInSource, IShowInTargetList {
@@ -146,7 +149,7 @@
@Deprecated
protected static IProjectNature getProject(final IEditorInput input, final String projectNatureId) {
if (input != null && input instanceof IFileEditorInput) {
- final IProject project= ((IFileEditorInput) input).getFile().getProject();
+ final IProject project= ((IFileEditorInput)input).getFile().getProject();
try {
if (project != null && project.hasNature(projectNatureId)) {
return project.getNature(projectNatureId);
@@ -165,7 +168,7 @@
*/
protected static final Object getLockObject(final IAnnotationModel annotationModel) {
if (annotationModel instanceof ISynchronizable) {
- final Object lock= ((ISynchronizable) annotationModel).getLockObject();
+ final Object lock= ((ISynchronizable)annotationModel).getLockObject();
if (lock != null) {
return lock;
}
@@ -207,7 +210,7 @@
}
}
- private class EffectSynchonizer implements ITextEditToolSynchronizer, ILinkedModeListener {
+ private class EffectSynchonizer implements TextEditToolSynchronizer, ILinkedModeListener {
private EffectSynchonizer() {
}
@@ -215,15 +218,19 @@
@Override
public void install(final LinkedModeModel model) {
SourceEditor1.this.effectSynchonizerCounter++;
- if (SourceEditor1.this.markOccurrencesProvider != null) {
- SourceEditor1.this.markOccurrencesProvider.uninstall();
+
+ final var markOccurrencesProvider= SourceEditor1.this.markOccurrencesProvider;
+ if (markOccurrencesProvider != null) {
+ markOccurrencesProvider.uninstall();
}
+
model.addLinkingListener(this);
}
@Override
public void left(final LinkedModeModel model, final int flags) {
SourceEditor1.this.effectSynchonizerCounter--;
+
updateMarkOccurrencesEnablement();
}
@@ -245,26 +252,26 @@
private SourceEditorViewerConfigurator configurator;
private boolean lazySetup;
- private SourceUnit sourceUnit;
+ private @Nullable SourceUnit sourceUnit;
private ElementInfoController modelProvider;
- private PostSelectionWithElementInfoController modelPostSelection;
+ private @Nullable PostSelectionWithElementInfoController modelPostSelection;
protected volatile Point currentSelection;
/** The outline page of this editor */
- private SourceEditor1OutlinePage outlinePage;
+ private @Nullable SourceEditor1OutlinePage outlinePage;
/** The templates page of this editor */
- private ITemplatesPage templatesPage;
+ private @Nullable ITemplatesPage templatesPage;
private StructureSelectionHistory selectionHistory;
- private Preference<Boolean> foldingEnablement;
+ private @Nullable Preference<Boolean> foldingEnablement;
private ProjectionSupport foldingSupport;
- private ISourceEditorAddon foldingProvider;
- private FoldingActionGroup foldingActionGroup;
- private Preference<Boolean> markOccurrencesEnablement;
- private ISourceEditorAddon markOccurrencesProvider;
+ private @Nullable SourceEditorAddon foldingProvider;
+ private @Nullable FoldingActionGroup foldingActionGroup;
+ private @Nullable Preference<Boolean> markOccurrencesEnablement;
+ private @Nullable SourceEditorAddon markOccurrencesProvider;
- private EffectSynchonizer effectSynchronizer;
+ private @Nullable EffectSynchonizer effectSynchronizer;
private int effectSynchonizerCounter;
private final CopyOnWriteIdentityListSet<IUpdate> contentUpdateables= new CopyOnWriteIdentityListSet<>();
@@ -273,7 +280,7 @@
private boolean inputChange;
private int inputUpdate= Integer.MAX_VALUE;
- private ImageDescriptor imageDescriptor;
+ private @Nullable ImageDescriptor imageDescriptor;
/*- Contructors ------------------------------------------------------------*/
@@ -320,14 +327,14 @@
protected abstract SourceEditorViewerConfigurator createConfiguration();
- protected SourceEditorViewerConfigurator createInfoConfigurator() {
+ protected @Nullable SourceEditorViewerConfigurator createInfoConfigurator() {
return null;
}
protected void enableStructuralFeatures(final ModelManager modelManager,
- final Preference<Boolean> codeFoldingEnablement,
- final Preference<Boolean> markOccurrencesEnablement) {
+ final @Nullable Preference<Boolean> codeFoldingEnablement,
+ final @Nullable Preference<Boolean> markOccurrencesEnablement) {
this.modelProvider= new ElementInfoController(modelManager, Ltk.EDITOR_CONTEXT);
this.foldingEnablement= codeFoldingEnablement;
this.markOccurrencesEnablement= markOccurrencesEnablement;
@@ -344,21 +351,22 @@
*
* @param descriptor the image description of the icon or <code>null</code>
*/
- protected void overwriteTitleImage(final ImageDescriptor descriptor) {
- if (this.imageDescriptor == descriptor || (this.imageDescriptor == null && descriptor == null) ) {
+ protected void overwriteTitleImage(final @Nullable ImageDescriptor descriptor) {
+ final var oldDescriptor= this.imageDescriptor;
+ if (oldDescriptor == descriptor) {
return;
}
- if (this.imageDescriptor != null) {
- JFaceResources.getResources().destroyImage(this.imageDescriptor);
+ if (oldDescriptor != null) {
+ JFaceResources.getResources().destroyImage(oldDescriptor);
}
this.imageDescriptor= descriptor;
- if (this.imageDescriptor != null) {
+ if (descriptor != null) {
super.setTitleImage(JFaceResources.getResources().createImage(descriptor));
}
}
@Override
- protected void setTitleImage(final Image titleImage) {
+ protected void setTitleImage(final @Nullable Image titleImage) {
if (this.imageDescriptor == null) {
super.setTitleImage(titleImage);
}
@@ -375,11 +383,11 @@
}
@Override
- protected String[] collectContextMenuPreferencePages() {
+ protected @NonNull String[] collectContextMenuPreferencePages() {
final List<String> list= new ArrayList<>();
collectContextMenuPreferencePages(list);
- list.addAll(Arrays.asList(super.collectContextMenuPreferencePages()));
- return list.toArray(new String[list.size()]);
+ list.addAll(ImCollections.newList(super.collectContextMenuPreferencePages()));
+ return list.toArray(new @NonNull String[list.size()]);
}
protected void collectContextMenuPreferencePages(final List<String> pageIds) {
@@ -387,7 +395,7 @@
@Override
- protected void doSetInput(final IEditorInput input) throws CoreException {
+ protected void doSetInput(final @Nullable IEditorInput input) throws CoreException {
if (this.modelProvider != null && this.sourceUnit != null) {
this.modelProvider.setInput(null);
}
@@ -412,8 +420,11 @@
initSmartInsert();
- if (input != null && this.outlinePage != null) {
- updateOutlinePageInput(this.outlinePage);
+ if (input != null) {
+ final var outlinePage= this.outlinePage;
+ if (outlinePage != null) {
+ updateOutlinePageInput(outlinePage);
+ }
}
}
@@ -467,7 +478,7 @@
/**
* Subclasses should setup the SourceViewerConfiguration.
*/
- protected void setupConfiguration(final IEditorInput newInput) {
+ protected void setupConfiguration(final @Nullable IEditorInput newInput) {
final IDocumentProvider documentProvider= getDocumentProvider();
if (documentProvider instanceof DocumentModelProvider) {
this.sourceUnit= (newInput != null) ?
@@ -487,14 +498,14 @@
}
@Override
- public SourceUnit getSourceUnit() {
+ public @Nullable SourceUnit getSourceUnit() {
return this.sourceUnit;
}
@Override
public SourceViewer getViewer() {
- return (SourceViewer) super.getSourceViewer();
+ return (SourceViewer)super.getSourceViewer();
}
@Override
@@ -524,15 +535,17 @@
return this.modelProvider;
}
- public void addPostSelectionWithElementInfoListener(final ISelectionWithElementInfoListener listener) {
- if (this.modelPostSelection != null) {
- this.modelPostSelection.addListener(listener);
+ public void addPostSelectionWithElementInfoListener(final SelectionWithElementInfoListener listener) {
+ final var modelPostSelection= this.modelPostSelection;
+ if (modelPostSelection != null) {
+ modelPostSelection.addListener(listener);
}
}
- public void removePostSelectionWithElementInfoListener(final ISelectionWithElementInfoListener listener) {
- if (this.modelPostSelection != null) {
- this.modelPostSelection.removeListener(listener);
+ public void removePostSelectionWithElementInfoListener(final SelectionWithElementInfoListener listener) {
+ final var modelPostSelection= this.modelPostSelection;
+ if (modelPostSelection != null) {
+ modelPostSelection.removeListener(listener);
}
}
@@ -542,9 +555,10 @@
super.createPartControl(parent);
if (this.modelProvider != null) {
- this.modelPostSelection= new PostSelectionWithElementInfoController(this.modelProvider,
- (IPostSelectionProvider) getSelectionProvider(), new PostSelectionEditorCancel());
- this.modelPostSelection.addListener(new ISelectionWithElementInfoListener() {
+ final var modelPostSelection= new PostSelectionWithElementInfoController(
+ this.modelProvider, (IPostSelectionProvider)getSelectionProvider(),
+ new PostSelectionEditorCancel() );
+ modelPostSelection.addListener(new SelectionWithElementInfoListener() {
@Override
public void inputChanged() {
}
@@ -559,9 +573,10 @@
}
}
});
+ this.modelPostSelection= modelPostSelection;
}
if (this.foldingEnablement != null) {
- final ProjectionViewer viewer= (ProjectionViewer) getSourceViewer();
+ final ProjectionViewer viewer= (ProjectionViewer)getSourceViewer();
this.foldingSupport= new ProjectionSupport(viewer, getAnnotationAccess(), getSharedColors());
final SourceEditorViewerConfigurator config= createInfoConfigurator();
@@ -569,13 +584,15 @@
final IInformationControlCreator presentationCreator= new IInformationControlCreator() {
@Override
public IInformationControl createInformationControl(final Shell parent) {
- return new SourceViewerInformationControl(parent, createInfoConfigurator(), getOrientation());
+ return new SourceViewerInformationControl(parent,
+ createInfoConfigurator(), getOrientation() );
}
};
this.foldingSupport.setHoverControlCreator(new IInformationControlCreator() {
@Override
public IInformationControl createInformationControl(final Shell parent) {
- return new SourceViewerInformationControl(parent, createInfoConfigurator(), getOrientation(), presentationCreator);
+ return new SourceViewerInformationControl(parent,
+ createInfoConfigurator(), getOrientation(), presentationCreator );
}
});
this.foldingSupport.setInformationPresenterControlCreator(presentationCreator);
@@ -607,7 +624,8 @@
this.configurator.setTarget(this);
}
- { final IContextService contextService= getServiceLocator().getService(IContextService.class);
+ { final IContextService contextService= nonNullAssert(
+ getServiceLocator().getService(IContextService.class) );
for (final String id : getContextIds()) {
contextService.activateContext(id);
}
@@ -632,11 +650,12 @@
return 0;
}
- protected IRegion getRangeToReveal(final SourceUnitModelInfo modelInfo, final SourceStructElement element) {
+ protected @Nullable IRegion getRangeToReveal(final SourceUnitModelInfo modelInfo,
+ final SourceStructElement<?, ?> element) {
return null;
}
- protected TextRegion getRangeToHighlight(final LTKInputData state) {
+ protected @Nullable TextRegion getRangeToHighlight(final LTKInputData state) {
final SourceUnitModelInfo info= state.getInputInfo();
if (info == null) {
return null;
@@ -649,7 +668,7 @@
final AstNode root= info.getAst().getRoot();
TRY_AST: if (root != null) {
- final ITextSelection selection= (ITextSelection) state.getSelection();
+ final ITextSelection selection= (ITextSelection)state.getSelection();
final int n= root.getChildCount();
for (int i= 0; i < n; i++) {
final AstNode child= root.getChild(i);
@@ -666,7 +685,8 @@
return null;
}
- protected TextRegion getRangeToHighlight(final SourceUnitModelInfo info, SourceStructElement element) {
+ protected @Nullable TextRegion getRangeToHighlight(final SourceUnitModelInfo info,
+ @Nullable SourceStructElement element) {
while (element != null) {
switch (element.getElementType() & LtkModelElement.MASK_C1) {
case LtkModelElement.C1_CLASS:
@@ -691,22 +711,24 @@
}
- protected ISourceEditorAddon createCodeFoldingProvider() {
+ protected @Nullable SourceEditorAddon createCodeFoldingProvider() {
return null;
}
private void installFoldingProvider() {
uninstallFoldingProvider();
- this.foldingProvider= createCodeFoldingProvider();
- if (this.foldingProvider != null) {
- this.foldingProvider.install(this);
+ final var foldingProvider= createCodeFoldingProvider();
+ if (foldingProvider != null) {
+ foldingProvider.install(this);
+ this.foldingProvider= foldingProvider;
}
}
private void uninstallFoldingProvider() {
- if (this.foldingProvider != null) {
- this.foldingProvider.uninstall();
+ final var foldingProvider= this.foldingProvider;
+ if (foldingProvider != null) {
this.foldingProvider= null;
+ foldingProvider.uninstall();
}
}
@@ -715,8 +737,9 @@
UIAccess.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
- final Boolean enable= PreferenceUtils.getInstancePrefs().getPreferenceValue(SourceEditor1.this.foldingEnablement);
- final ProjectionViewer viewer= (ProjectionViewer) getSourceViewer();
+ final Boolean enable= PreferenceUtils.getInstancePrefs().getPreferenceValue(
+ SourceEditor1.this.foldingEnablement );
+ final ProjectionViewer viewer= (ProjectionViewer)getSourceViewer();
if (enable != null && UIAccess.isOkToUse(viewer)) {
if (enable != viewer.isProjectionMode()) {
viewer.doOperation(ProjectionViewer.TOGGLE);
@@ -728,14 +751,15 @@
}
- protected ISourceEditorAddon createMarkOccurrencesProvider() {
+ protected @Nullable SourceEditorAddon createMarkOccurrencesProvider() {
return null;
}
private void uninstallMarkOccurrencesProvider() {
- if (this.markOccurrencesProvider != null) {
- this.markOccurrencesProvider.uninstall();
+ final var markOccurrencesProvider= this.markOccurrencesProvider;
+ if (markOccurrencesProvider != null) {
this.markOccurrencesProvider= null;
+ markOccurrencesProvider.uninstall();
}
}
@@ -744,13 +768,16 @@
UIAccess.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
- final Boolean enable= PreferenceUtils.getInstancePrefs().getPreferenceValue(SourceEditor1.this.markOccurrencesEnablement);
+ final Boolean enable= PreferenceUtils.getInstancePrefs().getPreferenceValue(
+ SourceEditor1.this.markOccurrencesEnablement );
if (enable) {
- if (SourceEditor1.this.markOccurrencesProvider == null) {
- SourceEditor1.this.markOccurrencesProvider= createMarkOccurrencesProvider();
+ var provider= SourceEditor1.this.markOccurrencesProvider;
+ if (provider == null) {
+ provider= createMarkOccurrencesProvider();
+ SourceEditor1.this.markOccurrencesProvider= provider;
}
- if (SourceEditor1.this.markOccurrencesProvider != null && SourceEditor1.this.effectSynchonizerCounter == 0) {
- SourceEditor1.this.markOccurrencesProvider.install(SourceEditor1.this);
+ if (provider != null && SourceEditor1.this.effectSynchonizerCounter == 0) {
+ provider.install(SourceEditor1.this);
}
}
else {
@@ -771,7 +798,8 @@
@Override
protected void createActions() {
super.createActions();
- final IHandlerService handlerService= getServiceLocator().getService(IHandlerService.class);
+ final IHandlerService handlerService= nonNullAssert(
+ getServiceLocator().getService(IHandlerService.class) );
final StyledText textWidget= getViewer().getTextWidget();
{ final IHandler2 handler= new GotoNextWordHandler(this);
@@ -848,16 +876,16 @@
}
protected FoldingActionGroup createFoldingActionGroup() {
- return new FoldingActionGroup(this, (ProjectionViewer) getSourceViewer());
+ return new FoldingActionGroup(this, (ProjectionViewer)getSourceViewer());
}
- protected IHandler2 createToggleCommentHandler() {
+ protected @Nullable IHandler2 createToggleCommentHandler() {
final IHandler2 commentHandler= new ToggleCommentHandler(this);
markAsStateDependentHandler(commentHandler, true);
return commentHandler;
}
- protected IHandler2 createCorrectIndentHandler() {
+ protected @Nullable IHandler2 createCorrectIndentHandler() {
return null;
}
@@ -882,7 +910,7 @@
@Override
protected void updateContentDependentActions() {
super.updateContentDependentActions();
- for (final IUpdate handler : this.contentUpdateables.toList()) {
+ for (final IUpdate handler : this.contentUpdateables) {
handler.update();
}
}
@@ -890,8 +918,7 @@
@Override
protected void updateStateDependentActions() {
super.updateStateDependentActions();
- final ImIdentityList<IHandler2> listeners= this.stateUpdateables.toList();
- for (final IHandler2 handler : listeners) {
+ for (final IHandler2 handler : this.stateUpdateables) {
handler.setEnabled(this);
}
}
@@ -899,55 +926,63 @@
@Override
protected void rulerContextMenuAboutToShow(final IMenuManager menu) {
super.rulerContextMenuAboutToShow(menu);
- if (this.foldingActionGroup != null) {
+
+ final var foldingActionGroup= this.foldingActionGroup;
+ if (foldingActionGroup != null) {
final IMenuManager foldingMenu= new MenuManager(EditingMessages.CodeFolding_label, "projection"); //$NON-NLS-1$
menu.appendToGroup(ITextEditorActionConstants.GROUP_RULERS, foldingMenu);
- this.foldingActionGroup.fillMenu(foldingMenu);
+ foldingActionGroup.fillMenu(foldingMenu);
}
}
@Override
- public ITextEditToolSynchronizer getTextEditToolSynchronizer() {
- if (this.effectSynchronizer == null) {
- this.effectSynchronizer= new EffectSynchonizer();
+ public TextEditToolSynchronizer getTextEditToolSynchronizer() {
+ var effectSynchronizer= this.effectSynchronizer;
+ if (effectSynchronizer == null) {
+ effectSynchronizer= new EffectSynchonizer();
+ this.effectSynchronizer= effectSynchronizer;
}
- return this.effectSynchronizer;
+ return effectSynchronizer;
}
@Override
@SuppressWarnings("unchecked")
public <T> @Nullable T getAdapter(final Class<T> adapterType) {
- if (adapterType == ISourceEditor.class) {
- return (T) this;
+ if (adapterType == SourceEditor.class) {
+ return (T)this;
}
if (adapterType == ISourceViewer.class) {
- return (T) getSourceViewer();
+ return (T)getSourceViewer();
}
if (adapterType == IContentType.class) {
- return (T) this.contentType;
+ return (T)this.contentType;
}
if (adapterType == IContentOutlinePage.class) {
- if (this.outlinePage == null) {
- this.outlinePage= createOutlinePage();
- if (this.outlinePage != null) {
- updateOutlinePageInput(this.outlinePage);
+ var outlinePage= this.outlinePage;
+ if (outlinePage == null) {
+ outlinePage= createOutlinePage();
+ if (outlinePage != null) {
+ updateOutlinePageInput(outlinePage);
}
+ this.outlinePage= outlinePage;
}
- return (T) this.outlinePage;
+ return (T)outlinePage;
}
if (adapterType == ITemplatesPage.class) {
- if (this.templatesPage == null) {
- this.templatesPage= createTemplatesPage();
+ var templatesPage= this.templatesPage;
+ if (templatesPage == null) {
+ templatesPage= createTemplatesPage();
+ this.templatesPage= templatesPage;
}
- return (T) this.templatesPage;
+ return (T)templatesPage;
}
if (this.foldingSupport != null) {
final Object adapter= this.foldingSupport.getAdapter(getSourceViewer(), adapterType);
if (adapter != null) {
- return (T) adapter;
+ return (T)adapter;
}
}
@@ -997,7 +1032,7 @@
}
- protected SourceEditor1OutlinePage createOutlinePage() {
+ protected @Nullable SourceEditor1OutlinePage createOutlinePage() {
return null;
}
@@ -1005,25 +1040,29 @@
}
void handleOutlinePageClosed() {
- if (this.outlinePage != null) {
+ final var outlinePage= this.outlinePage;
+ if (outlinePage != null) {
this.outlinePage= null;
resetHighlightRange();
}
}
- protected ITemplatesPage createTemplatesPage() {
+ protected @Nullable ITemplatesPage createTemplatesPage() {
return null;
}
- @Override
// inject annotation painter workaround
+ @Override
protected SourceViewerDecorationSupport getSourceViewerDecorationSupport(final ISourceViewer viewer) {
- if (this.fSourceViewerDecorationSupport == null) {
- this.fSourceViewerDecorationSupport= new org.eclipse.statet.ltk.ui.sourceediting.SourceViewerDecorationSupport(viewer, getOverviewRuler(), getAnnotationAccess(), getSharedColors());
- configureSourceViewerDecorationSupport(this.fSourceViewerDecorationSupport);
+ var decorationSupport= this.fSourceViewerDecorationSupport;
+ if (decorationSupport == null) {
+ decorationSupport= new org.eclipse.statet.ltk.ui.sourceediting.SourceViewerDecorationSupport(
+ viewer, getOverviewRuler(), getAnnotationAccess(), getSharedColors() );
+ configureSourceViewerDecorationSupport(decorationSupport);
+ this.fSourceViewerDecorationSupport= decorationSupport;
}
- return this.fSourceViewerDecorationSupport;
+ return decorationSupport;
}
@Override
@@ -1032,14 +1071,16 @@
}
@Override
- protected void selectAndReveal(final int selectionStart, final int selectionLength, final int revealStart, final int revealLength) {
- if (this.modelPostSelection != null) {
- this.modelPostSelection.setUpdateOnSelection(true);
+ protected void selectAndReveal(final int selectionStart, final int selectionLength,
+ final int revealStart, final int revealLength) {
+ final var modelPostSelection= this.modelPostSelection;
+ if (modelPostSelection != null) {
+ modelPostSelection.setUpdateOnSelection(true);
try {
super.selectAndReveal(selectionStart, selectionLength, revealStart, revealLength);
}
finally {
- this.modelPostSelection.setUpdateOnSelection(false);
+ modelPostSelection.setUpdateOnSelection(false);
}
}
else {
@@ -1047,9 +1088,10 @@
}
}
- public void setSelection(final ISelection selection, final ISelectionWithElementInfoListener listener) {
- if (this.modelPostSelection != null && listener != null) {
- final IgnoreActivation activation= this.modelPostSelection.ignoreNext(listener);
+ public void setSelection(final ISelection selection, final SelectionWithElementInfoListener listener) {
+ final var modelPostSelection= this.modelPostSelection;
+ if (modelPostSelection != null && listener != null) {
+ final IgnoreActivation activation= modelPostSelection.ignoreNext(listener);
doSetSelection(selection);
activation.deleteNext();
}
@@ -1061,28 +1103,22 @@
@Override
protected void doSetSelection(final ISelection selection) {
if (selection instanceof IStructuredSelection) {
- final IStructuredSelection structured= (IStructuredSelection) selection;
+ final IStructuredSelection structured= (IStructuredSelection)selection;
if (!structured.isEmpty()) {
final Object first= structured.getFirstElement();
TextRegion region= null;
if (first instanceof SourceStructElement) {
- final SourceStructElement sourceElement= (SourceStructElement) first;
- region= sourceElement.getNameSourceRange();
- if (region == null) {
- region= sourceElement.getSourceRange();
- if (region != null) {
- region= new BasicTextRegion(region.getStartOffset());
- }
- }
+ final var sourceElement= (SourceStructElement<?, ?>)first;
+ region= LTKSelectionUtils.getRegionToSelect(sourceElement);
- final SourceUnit sourceUnit= sourceElement.getSourceUnit();
- final SourceUnitModelInfo modelInfo= sourceUnit.getModelInfo(getModelTypeId(), 0, null);
+ final var sourceUnit= sourceElement.getSourceUnit();
+ final var modelInfo= sourceUnit.getModelInfo(getModelTypeId(), 0, null);
if (modelInfo != null) {
final IRegion toReveal= getRangeToReveal(modelInfo, sourceElement);
if (toReveal != null) {
final SourceViewer viewer= getViewer();
if (viewer instanceof ITextViewerExtension5) {
- ((ITextViewerExtension5) viewer).exposeModelRange(toReveal);
+ ((ITextViewerExtension5)viewer).exposeModelRange(toReveal);
}
getViewer().revealRange(toReveal.getOffset(), toReveal.getLength());
}
@@ -1093,10 +1129,10 @@
}
}
if (region == null && first instanceof TextRegion) {
- region= (TextRegion) first;
+ region= (TextRegion)first;
}
else if (region == null && first instanceof IRegion) {
- region= JFaceTextRegion.toTextRegion((IRegion) first);
+ region= JFaceTextRegion.toTextRegion((IRegion)first);
}
if (region != null) {
@@ -1117,18 +1153,25 @@
}
PreferencesUtil.getSettingsChangeNotifier().removeChangeListener(this);
- if (this.modelPostSelection != null) {
- this.modelPostSelection.dispose();
+ { final var modelPostSelection= this.modelPostSelection;
+ if (modelPostSelection != null) {
+ this.modelPostSelection= null;
+ modelPostSelection.dispose();
+ }
}
- if (this.foldingEnablement != null) {
- PreferenceUtils.getInstancePrefs().removePreferenceNodeListener(
- this.foldingEnablement.getQualifier(), this);
- uninstallFoldingProvider();
+ { final var foldingEnablement= this.foldingEnablement;
+ if (foldingEnablement != null) {
+ PreferenceUtils.getInstancePrefs().removePreferenceNodeListener(
+ foldingEnablement.getQualifier(), this );
+ uninstallFoldingProvider();
}
- if (this.markOccurrencesEnablement != null) {
- PreferenceUtils.getInstancePrefs().removePreferenceNodeListener(
- this.markOccurrencesEnablement.getQualifier(), this);
- uninstallMarkOccurrencesProvider();
+ }
+ { final var markOccurrencesEnablement= this.markOccurrencesEnablement;
+ if (markOccurrencesEnablement != null) {
+ PreferenceUtils.getInstancePrefs().removePreferenceNodeListener(
+ markOccurrencesEnablement.getQualifier(), this );
+ uninstallMarkOccurrencesProvider();
+ }
}
super.dispose();
@@ -1140,7 +1183,6 @@
this.sourceUnit= null;
this.modelProvider= null;
- this.modelPostSelection= null;
}
@Override
@@ -1156,8 +1198,9 @@
}
@Override
- public String[] getShowInTargetIds() {
- return new String[] { IPageLayout.ID_PROJECT_EXPLORER };
+ public @NonNull String[] getShowInTargetIds() {
+ return new @NonNull String[] {
+ IPageLayout.ID_PROJECT_EXPLORER };
}
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1OutlinePage.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1OutlinePage.java
index 685ed75..3048d2c 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1OutlinePage.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor1OutlinePage.java
@@ -46,6 +46,7 @@
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.statet.jcommons.lang.NonNull;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.jcommons.lang.Nullable;
@@ -64,9 +65,9 @@
import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
-import org.eclipse.statet.ltk.ui.ISelectionWithElementInfoListener;
import org.eclipse.statet.ltk.ui.LTKInputData;
import org.eclipse.statet.ltk.ui.ModelElementInputListener;
+import org.eclipse.statet.ltk.ui.SelectionWithElementInfoListener;
/**
@@ -74,7 +75,7 @@
*/
@NonNullByDefault
public abstract class SourceEditor1OutlinePage extends BasicEditorOutlinePage
- implements IContentOutlinePage, IAdaptable, ISourceEditorAssociated,
+ implements IContentOutlinePage, IAdaptable, SourceEditorAssociated,
IShowInSource, IShowInTargetList, IShowInTarget,
IPostSelectionProvider, ModelElementInputListener<LtkModelElement<?>> {
@@ -109,7 +110,8 @@
@Override
public @Nullable SourceModelStamp getStamp(final Object inputElement) {
if (inputElement instanceof SourceUnit) {
- final AstInfo ast= ((SourceUnit)inputElement).getAstInfo(SourceEditor1OutlinePage.this.mainType, false, null);
+ final AstInfo ast= ((SourceUnit)inputElement).getAstInfo(
+ SourceEditor1OutlinePage.this.mainType, false, null );
if (ast != null) {
return ast.getStamp();
}
@@ -118,15 +120,16 @@
}
@Override
- public Object[] getElements(final Object inputElement) {
+ public @NonNull Object[] getElements(final Object inputElement) {
if (inputElement instanceof SourceUnit) {
- final AstInfo ast= ((SourceUnit)inputElement).getAstInfo(SourceEditor1OutlinePage.this.mainType, false, null);
+ final AstInfo ast= ((SourceUnit)inputElement).getAstInfo(
+ SourceEditor1OutlinePage.this.mainType, false, null );
if (ast != null) {
SourceEditor1OutlinePage.this.currentModelStamp= ast.getStamp();
- return new Object[] { ast.getRoot() };
+ return new @NonNull Object[] { ast.getRoot() };
}
}
- return new Object[0];
+ return new @NonNull Object[0];
}
}
@@ -180,7 +183,7 @@
}
- private class SyncWithEditorAction extends ToggleAction implements ISelectionWithElementInfoListener {
+ private class SyncWithEditorAction extends ToggleAction implements SelectionWithElementInfoListener {
public SyncWithEditorAction() {
super("sync.editor", true, 0); //$NON-NLS-1$
@@ -312,8 +315,8 @@
menuManager.add(this.syncWithEditorAction);
- final IContextService service= serviceLocator.getService(IContextService.class);
- service.activateContext("org.eclipse.statet.ltk.contexts.EditSource1MenuSet"); //$NON-NLS-1$
+ final IContextService contextService= nonNullAssert(serviceLocator.getService(IContextService.class));
+ contextService.activateContext("org.eclipse.statet.ltk.contexts.EditSource1MenuSet"); //$NON-NLS-1$
}
@Override
@@ -436,8 +439,8 @@
}
@Override
- public String[] getShowInTargetIds() {
- return new String[] { IPageLayout.ID_PROJECT_EXPLORER };
+ public @NonNull String[] getShowInTargetIds() {
+ return new @NonNull String[] { IPageLayout.ID_PROJECT_EXPLORER };
}
@Override
@@ -457,14 +460,14 @@
@Override
- public ISourceEditor getSourceEditor() {
+ public SourceEditor getSourceEditor() {
return this.editor;
}
@Override
@SuppressWarnings("unchecked")
public <T> @Nullable T getAdapter(final Class<T> adapterType) {
- if (adapterType == ISourceEditorAssociated.class) {
+ if (adapterType == SourceEditorAssociated.class) {
return (T)this;
}
if (adapterType == IEncodingSupport.class) {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor2OutlinePage.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor2OutlinePage.java
index d2829c4..eb4743e 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor2OutlinePage.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditor2OutlinePage.java
@@ -14,8 +14,6 @@
package org.eclipse.statet.ltk.ui.sourceediting;
-import java.util.Arrays;
-
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
@@ -24,9 +22,10 @@
import org.eclipse.ui.IWorkbenchCommandConstants;
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.menus.CommandContributionItemParameter;
-import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.services.IServiceLocator;
+import org.eclipse.statet.jcommons.collections.ImCollections;
+import org.eclipse.statet.jcommons.lang.NonNull;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.ecommons.ui.SharedUIResources;
@@ -61,13 +60,15 @@
@Override
public void run() {
- final SourceStructElement[] elements= LTKSelectionUtils.getSelectedSourceStructElements(getSelection());
- if (elements != null) {
- RefactoringAdapter adapter= SourceEditor2OutlinePage.this.refactoring.createAdapter(elements);
+ final @NonNull SourceStructElement<?, ?>[] elementArray= LTKSelectionUtils
+ .getSelectedSourceStructElements(getSelection());
+ if (elementArray != null) {
+ RefactoringAdapter adapter= SourceEditor2OutlinePage.this.refactoring.createAdapter(elementArray);
if (adapter == null) {
adapter= SourceEditor2OutlinePage.this.refactoring.createAdapter(null);
}
- Arrays.sort(elements, adapter.getModelElementComparator());
+ final var elements= ImCollections.newList(elementArray,
+ adapter.getModelElementComparator() );
final IRegion range= adapter.getContinuousSourceRange(elements);
if (range != null) {
selectInEditor(new TextSelection(range.getOffset(), range.getLength()));
@@ -118,22 +119,30 @@
}
@Override
- protected void contextMenuAboutToShow(final IMenuManager m) {
- final IPageSite site= getSite();
+ protected void contextMenuAboutToShow(final IMenuManager menuManager) {
+ final var site= getSite();
- m.add(new SelectCodeRangeAction(this.refactoring));
+ menuManager.add(new SelectCodeRangeAction(this.refactoring));
- m.add(new Separator(SharedUIResources.EDIT_COPYPASTE_MENU_ID));
- m.add(new CommandContributionItem(new CommandContributionItemParameter(
- site, null, IWorkbenchCommandConstants.EDIT_CUT, CommandContributionItem.STYLE_PUSH)));
- m.add(new CommandContributionItem(new CommandContributionItemParameter(
- site, null, IWorkbenchCommandConstants.EDIT_COPY, CommandContributionItem.STYLE_PUSH)));
- m.add(new CommandContributionItem(new CommandContributionItemParameter(
- site, null, ISourceEditorCommandIds.COPY_ELEMENT_NAME, CommandContributionItem.STYLE_PUSH)));
- m.add(new CommandContributionItem(new CommandContributionItemParameter(
- site, null, IWorkbenchCommandConstants.EDIT_PASTE, CommandContributionItem.STYLE_PUSH)));
+ menuManager.add(new Separator(SharedUIResources.EDIT_COPYPASTE_MENU_ID));
+ menuManager.add(new CommandContributionItem(
+ new CommandContributionItemParameter(site,
+ null, IWorkbenchCommandConstants.EDIT_CUT,
+ CommandContributionItem.STYLE_PUSH )));
+ menuManager.add(new CommandContributionItem(
+ new CommandContributionItemParameter(site,
+ null, IWorkbenchCommandConstants.EDIT_COPY,
+ CommandContributionItem.STYLE_PUSH )));
+ menuManager.add(new CommandContributionItem(
+ new CommandContributionItemParameter(site,
+ null, ISourceEditorCommandIds.COPY_ELEMENT_NAME,
+ CommandContributionItem.STYLE_PUSH )));
+ menuManager.add(new CommandContributionItem(
+ new CommandContributionItemParameter(site,
+ null, IWorkbenchCommandConstants.EDIT_PASTE,
+ CommandContributionItem.STYLE_PUSH )));
- super.contextMenuAboutToShow(m);
+ super.contextMenuAboutToShow(menuManager);
}
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditorAddon.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorAddon.java
similarity index 77%
rename from ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditorAddon.java
rename to ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorAddon.java
index 623b82a..5d41aa8 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditorAddon.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorAddon.java
@@ -14,15 +14,18 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
/**
- * Interface for {@link ISourceEditor} add-ons.
+ * Interface for {@link SourceEditor} add-ons.
*/
-public interface ISourceEditorAddon {
+@NonNullByDefault
+public interface SourceEditorAddon {
- public void install(ISourceEditor editor);
+ void install(SourceEditor editor);
- public void uninstall();
+ void uninstall();
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditorAssociated.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorAssociated.java
similarity index 81%
rename from ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditorAssociated.java
rename to ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorAssociated.java
index 2b31d08..9f95b5b 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceEditorAssociated.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorAssociated.java
@@ -14,14 +14,16 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
/**
- * Interface for a part which belongs to an editor but is not the editor itself or
- * its containers.
+ * Interface for a part which belongs to an editor but is not the editor itself or its containers.
*/
-public interface ISourceEditorAssociated {
+@NonNullByDefault
+public interface SourceEditorAssociated {
- public ISourceEditor getSourceEditor();
+ SourceEditor getSourceEditor();
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorProgressHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorProgressHandler.java
index f9e93af..c8f8ac6 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorProgressHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorProgressHandler.java
@@ -28,18 +28,22 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.statushandlers.StatusManager;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.internal.ltk.ui.EditingMessages;
import org.eclipse.statet.internal.ltk.ui.LTKUIPlugin;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
+@NonNullByDefault
public abstract class SourceEditorProgressHandler extends AbstractHandler {
- private final ISourceEditor editor;
+ private final SourceEditor editor;
- public SourceEditorProgressHandler(final ISourceEditor editor) {
+ public SourceEditorProgressHandler(final SourceEditor editor) {
this.editor= editor;
}
@@ -49,20 +53,20 @@
protected abstract boolean isEditTask();
- protected ISourceEditor getEditor(final Object context) {
+ protected @Nullable SourceEditor getEditor(final @Nullable Object context) {
return this.editor;
}
@Override
- public void setEnabled(final Object evaluationContext) {
- final ISourceEditor editor= getEditor(evaluationContext);
+ public void setEnabled(final @Nullable Object evaluationContext) {
+ final SourceEditor editor= getEditor(evaluationContext);
setBaseEnabled(editor != null
&& (!isEditTask() || editor.isEditable(false)) );
}
@Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
- final ISourceEditor editor= getEditor(event.getApplicationContext());
+ public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException {
+ final SourceEditor editor= getEditor(event.getApplicationContext());
if (editor == null) {
return null;
}
@@ -98,7 +102,7 @@
}
- protected abstract void doExecute(ISourceEditor editor, SourceUnit su,
+ protected abstract void doExecute(SourceEditor editor, SourceUnit su,
ITextSelection selection, IProgressMonitor monitor) throws Exception;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfiguration.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfiguration.java
index fc9796f..6aa572f 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfiguration.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfiguration.java
@@ -85,7 +85,7 @@
/**
- * Abstract configuration for {@link ISourceEditor}s.
+ * Abstract configuration for {@link SourceEditor}s.
*/
public abstract class SourceEditorViewerConfiguration extends TextSourceViewerConfiguration
implements ISettingsChangedHandler {
@@ -169,7 +169,7 @@
private final int flags;
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private TextStyleManager textStyles;
private final CopyOnWriteIdentityListSet<ISettingsChangedHandler> settingsHandler= new CopyOnWriteIdentityListSet<>();
@@ -189,7 +189,7 @@
public SourceEditorViewerConfiguration(final DocContentSections documentContentInfo, final int flags,
- final ISourceEditor sourceEditor) {
+ final SourceEditor sourceEditor) {
if (documentContentInfo == null) {
throw new NullPointerException("documentContentInfo"); //$NON-NLS-1$
}
@@ -253,7 +253,7 @@
}
- protected ISourceEditor getSourceEditor() {
+ protected SourceEditor getSourceEditor() {
return this.editor;
}
@@ -333,7 +333,7 @@
}
- public List<ISourceEditorAddon> getAddOns() {
+ public List<SourceEditorAddon> getAddOns() {
return new ArrayList<>();
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfigurator.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfigurator.java
index 446904a..23c41bf 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfigurator.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceEditorViewerConfigurator.java
@@ -14,6 +14,8 @@
package org.eclipse.statet.ltk.ui.sourceediting;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
@@ -36,6 +38,9 @@
import org.eclipse.ui.texteditor.SourceViewerDecorationSupport;
import org.eclipse.ui.texteditor.spelling.SpellingProblem;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.ecommons.text.IIndentSettings;
import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
import org.eclipse.statet.ecommons.text.ui.presentation.ITextPresentationConstants;
@@ -44,18 +49,19 @@
/**
- * Controls the configuration of an {@link ISourceEditor}.
+ * Controls the configuration of an {@link SourceEditor}.
*/
+@NonNullByDefault
public abstract class SourceEditorViewerConfigurator implements ISettingsChangedHandler,
PropertyChangeListener {
private final SourceEditorViewerConfiguration configuration;
- private ISourceEditor sourceEditor;
+ private @Nullable SourceEditor sourceEditor;
- private final List<ISourceEditorAddon> addons= new ArrayList<>();
- private List<ISourceEditorAddon> configurationAddons;
+ private final List<SourceEditorAddon> addons= new ArrayList<>();
+ private @Nullable List<SourceEditorAddon> configurationAddons;
protected boolean isConfigured;
@@ -67,10 +73,7 @@
protected SourceEditorViewerConfigurator(final SourceEditorViewerConfiguration config) {
- if (config == null) {
- throw new NullPointerException("config");
- }
- this.configuration= config;
+ this.configuration= nonNullAssert(config);
}
@@ -103,11 +106,10 @@
}
- public void setTarget(final ISourceEditor sourceEditor) {
- assert (sourceEditor != null);
- this.sourceEditor= sourceEditor;
- if (!(this.sourceEditor instanceof AbstractDecoratedTextEditor)) {
- this.sourceEditor.getViewer().getControl().addDisposeListener(new DisposeListener() {
+ public void setTarget(final SourceEditor sourceEditor) {
+ this.sourceEditor= nonNullAssert(sourceEditor);
+ if (!(sourceEditor instanceof AbstractDecoratedTextEditor)) {
+ sourceEditor.getViewer().getControl().addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(final DisposeEvent e) {
if (SourceEditorViewerConfigurator.this.isConfigured) {
@@ -119,60 +121,67 @@
}
else {
this.isConfigured= true;
- installCurrentAddons();
+ installCurrentAddons(sourceEditor);
}
handleSettingsChanged(null, null);
}
- protected ISourceViewer getSourceViewer() {
- if (this.sourceEditor != null) {
- return this.sourceEditor.getViewer();
+ protected @Nullable ISourceViewer getSourceViewer() {
+ final var sourceEditor= this.sourceEditor;
+ if (sourceEditor != null) {
+ return sourceEditor.getViewer();
}
return null;
}
public final void unconfigureTarget() {
- if (this.sourceEditor != null) {
+ final var sourceEditor= this.sourceEditor;
+ if (sourceEditor != null) {
this.isConfigured= false;
uninstallCurrentAddons();
- this.sourceEditor.getViewer().unconfigure();
+ sourceEditor.getViewer().unconfigure();
}
}
public final void configureTarget() {
- if (this.sourceEditor != null) {
+ final var sourceEditor= this.sourceEditor;
+ if (sourceEditor != null) {
this.isConfigured= true;
- this.sourceEditor.getViewer().configure(this.configuration);
- installCurrentAddons();
+ sourceEditor.getViewer().configure(this.configuration);
+ installCurrentAddons(sourceEditor);
}
}
- private void installCurrentAddons() {
- this.configurationAddons= getSourceViewerConfiguration().getAddOns();
- for (final ISourceEditorAddon addon : this.configurationAddons) {
- addon.install(this.sourceEditor);
+ private void installCurrentAddons(final SourceEditor sourceEditor) {
+ final var configurationAddons= getSourceViewerConfiguration().getAddOns();
+ this.configurationAddons= configurationAddons;
+ for (final SourceEditorAddon addon : configurationAddons) {
+ addon.install(sourceEditor);
}
- for (final ISourceEditorAddon addon : this.addons) {
- addon.install(this.sourceEditor);
+ for (final SourceEditorAddon addon : this.addons) {
+ addon.install(sourceEditor);
}
}
private void uninstallCurrentAddons() {
- for (final ISourceEditorAddon addon : this.addons) {
+ for (final SourceEditorAddon addon : this.addons) {
addon.uninstall();
}
- if (this.configurationAddons != null) {
- for (final ISourceEditorAddon addon : this.configurationAddons) {
- addon.uninstall();
+ { final var configurationAddons= this.configurationAddons;
+ if (configurationAddons != null) {
+ this.configurationAddons= null;
+ for (final SourceEditorAddon addon : configurationAddons) {
+ addon.uninstall();
+ }
}
- this.configurationAddons= null;
}
}
- public final void installAddon(final ISourceEditorAddon installable) {
+ public final void installAddon(final SourceEditorAddon installable) {
this.addons.add(installable);
if (this.isConfigured) {
- installable.install(this.sourceEditor);
+ final var sourceEditor= nonNullAssert(this.sourceEditor);
+ installable.install(sourceEditor);
}
}
@@ -192,9 +201,11 @@
}
@Override
- public void handleSettingsChanged(Set<String> groupIds, Map<String, Object> options) {
+ public void handleSettingsChanged(@Nullable Set<String> groupIds,
+ @Nullable Map<String, Object> options) {
+ final var sourceEditor= this.sourceEditor;
final SourceViewer viewer;
- if (this.sourceEditor == null || (viewer= this.sourceEditor.getViewer()) == null) {
+ if (sourceEditor == null || (viewer= sourceEditor.getViewer()) == null) {
return;
}
final Point selectedRange= viewer.getSelectedRange();
@@ -225,11 +236,13 @@
if (!this.isConfigured) {
return;
}
+ final var sourceEditor= nonNullAssert(this.sourceEditor);
+
if (this.updateCompleteConfig) {
- if (this.sourceEditor instanceof ITextEditor) {
- SpellingProblem.removeAllInActiveEditor((ITextEditor) this.sourceEditor, null);
+ if (sourceEditor instanceof ITextEditor) {
+ SpellingProblem.removeAllInActiveEditor((ITextEditor)sourceEditor, null);
}
- reconfigureSourceViewer();
+ reconfigureSourceViewer(sourceEditor.getViewer());
}
else {
if (this.updateTabSize) {
@@ -238,11 +251,11 @@
if (this.updateTextPresentation) {
viewer.invalidateTextPresentation();
}
- if (this.updateIndent && this.sourceEditor instanceof SourceEditor1) {
- ((SourceEditor1) this.sourceEditor).updateIndentSettings();
+ if (this.updateIndent && sourceEditor instanceof SourceEditor1) {
+ ((SourceEditor1)sourceEditor).updateIndentSettings();
}
if (this.updateInfoHovers) {
- updateConfiguredInfoHovers();
+ updateConfiguredInfoHovers(sourceEditor.getViewer());
}
}
@@ -252,17 +265,14 @@
this.updateIndent= false;
}
- private final void reconfigureSourceViewer() {
- if (this.isConfigured) {
- this.isConfigured= false;
- this.sourceEditor.getViewer().unconfigure();
- this.isConfigured= true;
- this.sourceEditor.getViewer().configure(this.configuration);
- }
+ private final void reconfigureSourceViewer(final SourceViewer viewer) {
+ this.isConfigured= false;
+ viewer.unconfigure();
+ this.isConfigured= true;
+ viewer.configure(this.configuration);
}
- private void updateConfiguredInfoHovers() {
- final SourceViewer viewer= this.sourceEditor.getViewer();
+ private void updateConfiguredInfoHovers(final SourceViewer viewer) {
final String[] contentTypes= this.configuration.getConfiguredContentTypes(viewer);
for (final String contentType : contentTypes) {
((ITextViewerExtension2)viewer).removeTextHovers(contentType);
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceFragmentEditorInput.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceFragmentEditorInput.java
similarity index 85%
rename from ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceFragmentEditorInput.java
rename to ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceFragmentEditorInput.java
index facf8bb..cbd0c4c 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ISourceFragmentEditorInput.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceFragmentEditorInput.java
@@ -16,10 +16,13 @@
import org.eclipse.ui.IEditorInput;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
import org.eclipse.statet.ltk.core.input.SourceFragment;
-public interface ISourceFragmentEditorInput extends IEditorInput {
+@NonNullByDefault
+public interface SourceFragmentEditorInput extends IEditorInput {
SourceFragment getSourceFragment();
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectHandler.java
index a47c92d..ff6e01f 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectHandler.java
@@ -36,7 +36,7 @@
public static class Enclosing extends StructureSelectHandler {
- public Enclosing(final ISourceEditor editor, final StructureSelectionHistory history) {
+ public Enclosing(final SourceEditor editor, final StructureSelectionHistory history) {
super(editor, history);
}
@@ -50,7 +50,7 @@
public static class Next extends StructureSelectHandler {
- public Next(final ISourceEditor editor, final StructureSelectionHistory history) {
+ public Next(final SourceEditor editor, final StructureSelectionHistory history) {
super(editor, history);
}
@@ -71,7 +71,7 @@
public static class Previous extends StructureSelectHandler {
- public Previous(final ISourceEditor editor, final StructureSelectionHistory history) {
+ public Previous(final SourceEditor editor, final StructureSelectionHistory history) {
super(editor, history);
}
@@ -91,11 +91,11 @@
}
- private final ISourceEditor sourceEditor;
+ private final SourceEditor sourceEditor;
private final StructureSelectionHistory selectionHistory;
- protected StructureSelectHandler(final ISourceEditor editor, final StructureSelectionHistory history) {
+ protected StructureSelectHandler(final SourceEditor editor, final StructureSelectionHistory history) {
super();
assert (editor != null);
assert (history != null);
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistory.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistory.java
index 69f02fa..736a1f2 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistory.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistory.java
@@ -33,7 +33,7 @@
public class StructureSelectionHistory {
- private final ISourceEditor sourceEditor;
+ private final SourceEditor sourceEditor;
private final List<IRegion> history;
@@ -43,7 +43,7 @@
private final CopyOnWriteIdentityListSet<IUpdate> updateActions= new CopyOnWriteIdentityListSet<>();
- public StructureSelectionHistory(final ISourceEditor editor) {
+ public StructureSelectionHistory(final SourceEditor editor) {
this.sourceEditor= editor;
this.history= new ArrayList<>();
this.selectionListener= new ISelectionChangedListener() {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistoryBackHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistoryBackHandler.java
index 02b67b0..a16332d 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistoryBackHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/StructureSelectionHistoryBackHandler.java
@@ -29,12 +29,12 @@
public class StructureSelectionHistoryBackHandler extends AbstractHandler implements IUpdate {
- private final ISourceEditor sourceEditor;
+ private final SourceEditor sourceEditor;
private final StructureSelectionHistory history;
- public StructureSelectionHistoryBackHandler(final ISourceEditor editor, final StructureSelectionHistory history) {
+ public StructureSelectionHistoryBackHandler(final SourceEditor editor, final StructureSelectionHistory history) {
super();
assert (editor != null);
assert (history != null);
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ITextEditToolSynchronizer.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/TextEditToolSynchronizer.java
similarity index 84%
rename from ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ITextEditToolSynchronizer.java
rename to ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/TextEditToolSynchronizer.java
index 59a1769..d406cf2 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ITextEditToolSynchronizer.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/TextEditToolSynchronizer.java
@@ -16,15 +16,18 @@
import org.eclipse.jface.text.link.LinkedModeModel;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
/**
* Ensures that not too much effects are enabled.
* <p>
* Must used in UI thread only.</p>
*/
-public interface ITextEditToolSynchronizer {
+@NonNullByDefault
+public interface TextEditToolSynchronizer {
- public void install(final LinkedModeModel model);
+ void install(LinkedModeModel model);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ViewerSourceEditorAdapter.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ViewerSourceEditorAdapter.java
index 1aa9c18..6c9a62d 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ViewerSourceEditorAdapter.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/ViewerSourceEditorAdapter.java
@@ -19,6 +19,9 @@
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.services.IServiceLocator;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
import org.eclipse.statet.ecommons.ui.util.UIAccess;
@@ -26,9 +29,10 @@
/**
- * Simple {@link ISourceEditor} for snippet editors or previewers.
+ * Simple {@link SourceEditor} for snippet editors or previewers.
*/
-public class ViewerSourceEditorAdapter implements ISourceEditor {
+@NonNullByDefault
+public class ViewerSourceEditorAdapter implements SourceEditor {
private final SourceViewer sourceViewer;
@@ -40,7 +44,7 @@
* Creates a new adapter for the given viewer.
*
* @param viewer the viewer
- * @param configurator a configurator used for {@link ISourceEditorAddon}, may be <code>null</code> (disables modules)
+ * @param configurator a configurator used for {@link SourceEditorAddon}, may be <code>null</code> (disables modules)
*/
public ViewerSourceEditorAdapter(final SourceViewer viewer, final SourceEditorViewerConfigurator configurator) {
this.sourceViewer= viewer;
@@ -49,22 +53,22 @@
@Override
- public IContentType getContentType() {
+ public @Nullable IContentType getContentType() {
return null;
}
@Override
- public SourceUnit getSourceUnit() {
+ public @Nullable SourceUnit getSourceUnit() {
return null;
}
@Override
- public IWorkbenchPart getWorkbenchPart() {
+ public @Nullable IWorkbenchPart getWorkbenchPart() {
return null;
}
@Override
- public IServiceLocator getServiceLocator() {
+ public @Nullable IServiceLocator getServiceLocator() {
return null;
}
@@ -80,7 +84,7 @@
@Override
- public ITextEditToolSynchronizer getTextEditToolSynchronizer() {
+ public @Nullable TextEditToolSynchronizer getTextEditToolSynchronizer() {
return null;
}
@@ -99,7 +103,7 @@
@Override
- public <T> T getAdapter(final Class<T> adapterType) {
+ public <T> @Nullable T getAdapter(final Class<T> adapterType) {
return null;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractOpenDeclarationHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractOpenDeclarationHandler.java
index 1b14546..2826f8b 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractOpenDeclarationHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractOpenDeclarationHandler.java
@@ -14,26 +14,27 @@
package org.eclipse.statet.ltk.ui.sourceediting.actions;
-import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.text.Region;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.statushandlers.StatusManager;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+import org.eclipse.statet.jcommons.text.core.TextRegion;
+
+import org.eclipse.statet.ecommons.text.core.JFaceTextRegion;
import org.eclipse.statet.ecommons.ui.SharedUIResources;
-import org.eclipse.statet.ecommons.ui.workbench.WorkbenchUIUtils;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
-public abstract class AbstractOpenDeclarationHandler extends AbstractHandler {
+@NonNullByDefault
+public abstract class AbstractOpenDeclarationHandler extends AbstractSourceEditorHandler {
public AbstractOpenDeclarationHandler() {
@@ -41,20 +42,22 @@
@Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
- final IWorkbenchPart activePart= WorkbenchUIUtils.getActivePart(event.getApplicationContext());
- final ISourceEditor editor= activePart.getAdapter(ISourceEditor.class);
- if (editor != null) {
- final ITextSelection selection= (ITextSelection) editor.getViewer().getSelection();
- if (execute(editor, new Region(selection.getOffset(), selection.getLength()))) {
- return null;
- }
+ public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException {
+ final SourceEditor editor= getSourceEditor(event.getApplicationContext());
+ if (editor == null || !isSupported(editor)) {
+ return null;
+ }
+
+ final ITextSelection selection= (ITextSelection)editor.getViewer().getSelection();
+ if (execute(editor,
+ JFaceTextRegion.newByStartLength(selection.getOffset(), selection.getLength())) ) {
+ return null;
}
Display.getCurrent().beep();
return null;
}
- public abstract boolean execute(final ISourceEditor editor, final IRegion selection);
+ protected abstract boolean execute(SourceEditor editor, TextRegion selection);
protected void logError(final Exception e, final String name) {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractSourceDocumentHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractSourceDocumentHandler.java
index a57c13b..ffcc56e 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractSourceDocumentHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractSourceDocumentHandler.java
@@ -36,6 +36,8 @@
import org.eclipse.statet.jcommons.collections.ImCollections;
import org.eclipse.statet.jcommons.collections.ImList;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.ecommons.ui.workbench.WorkbenchUIUtils;
@@ -43,11 +45,12 @@
import org.eclipse.statet.ltk.model.core.ElementSet;
import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditorAssociated;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorAssociated;
import org.eclipse.statet.ltk.ui.util.LTKSelectionUtils;
+@NonNullByDefault
public abstract class AbstractSourceDocumentHandler<TSourceUnit extends SourceUnit>
extends AbstractHandler {
@@ -55,17 +58,18 @@
protected class ExecData {
private final IWorkbenchPart activePart;
- private final ISourceEditor sourceEditor;
+ private final @Nullable SourceEditor sourceEditor;
private final ImList<? extends TSourceUnit> sourceUnits;
- final ITextSelection textSelection;
+ final @Nullable ITextSelection textSelection;
- final ElementSet elementSelection;
+ final @Nullable ElementSet elementSelection;
- public ExecData(final IWorkbenchPart activePart, final ISourceEditor sourceEditor,
+ public ExecData(final IWorkbenchPart activePart, final @Nullable SourceEditor sourceEditor,
final ImList<? extends TSourceUnit> sourceUnits,
- final ITextSelection textSelection, final ElementSet elementSet) {
+ final @Nullable ITextSelection textSelection,
+ final @Nullable ElementSet elementSet) {
this.activePart= activePart;
this.sourceEditor= sourceEditor;
this.sourceUnits= sourceUnits;
@@ -78,7 +82,7 @@
return this.activePart;
}
- public ISourceEditor getSourceEditor() {
+ public @Nullable SourceEditor getSourceEditor() {
return this.sourceEditor;
}
@@ -86,11 +90,11 @@
return this.sourceUnits;
}
- public ITextSelection getTextSelection() {
+ public @Nullable ITextSelection getTextSelection() {
return this.textSelection;
}
- public ElementSet getElementSelection() {
+ public @Nullable ElementSet getElementSelection() {
return this.elementSelection;
}
@@ -111,10 +115,13 @@
@Override
- public void setEnabled(final Object evaluationContext) {
+ public void setEnabled(final @Nullable Object evaluationContext) {
final IWorkbenchPart activePart= WorkbenchUIUtils.getActivePart(evaluationContext);
final ISelection selection= WorkbenchUIUtils.getCurrentSelection(evaluationContext);
- final ISourceEditor sourceEditor= getSourceEditor(activePart);
+ if (activePart == null) {
+ return;
+ }
+ final SourceEditor sourceEditor= getSourceEditor(activePart);
if (sourceEditor != null && selection instanceof ITextSelection) {
final SourceUnit sourceUnit= sourceEditor.getSourceUnit();
@@ -125,7 +132,7 @@
if (selection instanceof IStructuredSelection) {
final SourceStructElement[] selectedElements= LTKSelectionUtils
- .getSelectedSourceStructElements((IStructuredSelection) selection);
+ .getSelectedSourceStructElements((IStructuredSelection)selection);
setBaseEnabled(selectedElements != null && selectedElements.length > 0
&& checkSourceUnits(selectedElements) );
return;
@@ -135,10 +142,13 @@
}
@Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
+ public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException {
final IWorkbenchPart activePart= WorkbenchUIUtils.getActivePart(event.getApplicationContext());
final ISelection selection= WorkbenchUIUtils.getCurrentSelection(event.getApplicationContext());
- final ISourceEditor sourceEditor= getSourceEditor(activePart);
+ if (activePart == null) {
+ return null;
+ }
+ final SourceEditor sourceEditor= getSourceEditor(activePart);
try {
final IProgressMonitor monitor= new NullProgressMonitor();
@@ -147,8 +157,8 @@
if (sourceUnit != null && isSourceUnitSupported(sourceUnit)) {
if (!isEditTask() || sourceEditor.isEditable(true)) {
final ExecData data= createExecData(event, activePart, sourceEditor,
- ImCollections.newList((TSourceUnit) sourceUnit),
- (ITextSelection) selection, null, monitor );
+ ImCollections.newList((TSourceUnit)sourceUnit),
+ (ITextSelection)selection, null, monitor );
if (data != null) {
execute(data);
return null;
@@ -159,12 +169,13 @@
}
if (selection instanceof IStructuredSelection) {
final SourceStructElement[] selectedElements= LTKSelectionUtils
- .getSelectedSourceStructElements((IStructuredSelection) selection);
+ .getSelectedSourceStructElements((IStructuredSelection)selection);
if (selectedElements != null && selectedElements.length > 0) {
final ImList<TSourceUnit> sourceUnits= createSourceUnits(selectedElements, monitor);
if (sourceUnits != null) {
final ExecData data= createExecData(event, activePart, sourceEditor,
- sourceUnits, null, selectedElements, monitor );
+ sourceUnits,
+ null, ImCollections.newList(selectedElements), monitor );
if (data != null) {
execute(data);
return null;
@@ -182,17 +193,17 @@
}
}
- private ISourceEditor getSourceEditor(final IWorkbenchPart part) {
- if (part instanceof ISourceEditor) {
- return (ISourceEditor) part;
+ private @Nullable SourceEditor getSourceEditor(final IWorkbenchPart part) {
+ if (part instanceof SourceEditor) {
+ return (SourceEditor)part;
}
- { final ISourceEditor editor= part.getAdapter(ISourceEditor.class);
+ { final SourceEditor editor= part.getAdapter(SourceEditor.class);
if (editor != null) {
return editor;
}
}
- { final ISourceEditorAssociated editorAssociated= part
- .getAdapter(ISourceEditorAssociated.class);
+ { final SourceEditorAssociated editorAssociated= part
+ .getAdapter(SourceEditorAssociated.class);
if (editorAssociated != null) {
return editorAssociated.getSourceEditor();
}
@@ -234,7 +245,7 @@
return true;
}
- private ImList<TSourceUnit> createSourceUnits(final SourceStructElement[] selectedElements,
+ private @Nullable ImList<TSourceUnit> createSourceUnits(final SourceStructElement[] selectedElements,
final IProgressMonitor monitor) {
TSourceUnit lastSourceUnit= null;
List<TSourceUnit> sourceUnits= null;
@@ -252,7 +263,7 @@
return null;
}
if (lastSourceUnit == null) {
- lastSourceUnit= (TSourceUnit) sourceUnit;
+ lastSourceUnit= (TSourceUnit)sourceUnit;
}
else {
if (sourceUnits == null) {
@@ -262,8 +273,8 @@
sourceUnits= new ArrayList<>();
sourceUnits.add(lastSourceUnit);
}
- sourceUnits.add((TSourceUnit) sourceUnit);
- lastSourceUnit= (TSourceUnit) sourceUnit;
+ sourceUnits.add((TSourceUnit)sourceUnit);
+ lastSourceUnit= (TSourceUnit)sourceUnit;
}
}
return (sourceUnits == null) ?
@@ -290,7 +301,7 @@
});
}
catch (final InvocationTargetException e) {
- error.set((Exception) e.getTargetException());
+ error.set((Exception)e.getTargetException());
}
catch (final InterruptedException e) {}
break;
@@ -324,11 +335,14 @@
return false;
}
- protected ExecData createExecData(final ExecutionEvent event, final IWorkbenchPart activePart,
- final ISourceEditor sourceEditor, final ImList<? extends TSourceUnit> sourceUnits,
- final ITextSelection textSelection, final SourceStructElement[] selectedElements,
+ protected ExecData createExecData(final ExecutionEvent event,
+ final IWorkbenchPart activePart, final @Nullable SourceEditor sourceEditor,
+ final ImList<? extends TSourceUnit> sourceUnits,
+ final @Nullable ITextSelection textSelection,
+ final @Nullable List<SourceStructElement> selectedElements,
final IProgressMonitor monitor) throws Exception {
- return new ExecData(activePart, sourceEditor, sourceUnits, textSelection,
+ return new ExecData(activePart, sourceEditor, sourceUnits,
+ textSelection,
(selectedElements != null) ? new ElementSet(selectedElements) : null );
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractSourceEditorHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractSourceEditorHandler.java
new file mode 100644
index 0000000..099a331
--- /dev/null
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/AbstractSourceEditorHandler.java
@@ -0,0 +1,84 @@
+/*=============================================================================#
+ # Copyright (c) 2021 Stephan Wahlbrink and others.
+ #
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
+ # which is available at https://www.apache.org/licenses/LICENSE-2.0.
+ #
+ # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
+ #
+ # Contributors:
+ # Stephan Wahlbrink - initial API and implementation
+ #=============================================================================*/
+
+package org.eclipse.statet.ltk.ui.sourceediting.actions;
+
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.ui.IWorkbenchPart;
+
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
+import org.eclipse.statet.ecommons.ui.util.UIAccess;
+import org.eclipse.statet.ecommons.ui.workbench.WorkbenchUIUtils;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+
+
+@NonNullByDefault
+public abstract class AbstractSourceEditorHandler extends AbstractHandler {
+
+
+ private final @Nullable SourceEditor editor;
+
+
+ public AbstractSourceEditorHandler() {
+ this.editor= null;
+ }
+
+ public AbstractSourceEditorHandler(final SourceEditor editor) {
+ this.editor= nonNullAssert(editor);
+ }
+
+
+ protected @Nullable SourceEditor getSourceEditor(final @Nullable Object context) {
+ SourceEditor editor= this.editor;
+ if (editor != null) {
+ return editor;
+ }
+ final IWorkbenchPart part= WorkbenchUIUtils.getActivePart(context);
+ if (part != null) {
+ if (part instanceof SourceEditor) {
+ return (SourceEditor)part;
+ }
+ editor= part.getAdapter(SourceEditor.class);
+ if (editor != null) {
+ return editor;
+ }
+ }
+ return null;
+ }
+
+ protected boolean isSupported(final SourceEditor sourceEditor) {
+ final SourceViewer viewer= sourceEditor.getViewer();
+ return (UIAccess.isOkToUse(viewer) && viewer.getDocument() != null);
+ }
+
+
+ @Override
+ public void setEnabled(@Nullable final Object evaluationContext) {
+ final SourceEditor editor= getSourceEditor(evaluationContext);
+ if (editor == null || !isSupported(editor)) {
+ setBaseEnabled(false);
+ return;
+ }
+
+ setBaseEnabled(true);
+ }
+
+
+}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutLineHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutLineHandler.java
index 7e0c200..67e3637 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutLineHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutLineHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class CutLineHandler extends SourceEditorTextHandler {
- public CutLineHandler(final ISourceEditor editor) {
+ public CutLineHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineBeginHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineBeginHandler.java
index 78aec69..79f2e2c 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineBeginHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineBeginHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class CutToLineBeginHandler extends SourceEditorTextHandler {
- public CutToLineBeginHandler(final ISourceEditor editor) {
+ public CutToLineBeginHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineEndHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineEndHandler.java
index a4203ad..866b36a 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineEndHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/CutToLineEndHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class CutToLineEndHandler extends SourceEditorTextHandler {
- public CutToLineEndHandler(final ISourceEditor editor) {
+ public CutToLineEndHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteLineHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteLineHandler.java
index 47c96cd..d46ffb1 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteLineHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteLineHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class DeleteLineHandler extends SourceEditorTextHandler {
- public DeleteLineHandler(final ISourceEditor editor) {
+ public DeleteLineHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteNextWordHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteNextWordHandler.java
index 8897e6a..d97bccf 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteNextWordHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteNextWordHandler.java
@@ -20,13 +20,16 @@
import org.eclipse.jface.text.Region;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class DeleteNextWordHandler extends SourceEditorTextHandler {
- public DeleteNextWordHandler(final ISourceEditor editor) {
+ public DeleteNextWordHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeletePreviousWordHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeletePreviousWordHandler.java
index abd4863..eb1141e 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeletePreviousWordHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeletePreviousWordHandler.java
@@ -20,13 +20,16 @@
import org.eclipse.jface.text.Region;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class DeletePreviousWordHandler extends SourceEditorTextHandler {
- public DeletePreviousWordHandler(final ISourceEditor editor) {
+ public DeletePreviousWordHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineBeginHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineBeginHandler.java
index 4c0c288..0c004c3 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineBeginHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineBeginHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class DeleteToLineBeginHandler extends SourceEditorTextHandler {
- public DeleteToLineBeginHandler(final ISourceEditor editor) {
+ public DeleteToLineBeginHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineEndHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineEndHandler.java
index 73a043c..0930d76 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineEndHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/DeleteToLineEndHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class DeleteToLineEndHandler extends SourceEditorTextHandler {
- public DeleteToLineEndHandler(final ISourceEditor editor) {
+ public DeleteToLineEndHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineBeginHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineBeginHandler.java
index ae2b13f..d37f028 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineBeginHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineBeginHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class GotoLineBeginHandler extends SourceEditorTextHandler {
- public GotoLineBeginHandler(final ISourceEditor editor) {
+ public GotoLineBeginHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineEndHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineEndHandler.java
index df225ea..9c25de7 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineEndHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoLineEndHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class GotoLineEndHandler extends SourceEditorTextHandler {
- public GotoLineEndHandler(final ISourceEditor editor) {
+ public GotoLineEndHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoMatchingBracketHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoMatchingBracketHandler.java
index 18f6387..bf7c130 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoMatchingBracketHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoMatchingBracketHandler.java
@@ -29,18 +29,18 @@
import org.eclipse.statet.ecommons.text.ICharPairMatcher;
import org.eclipse.statet.internal.ltk.ui.EditingMessages;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
public class GotoMatchingBracketHandler extends AbstractHandler {
- private final ISourceEditor sourceEditor;
+ private final SourceEditor sourceEditor;
private final ICharPairMatcher pairMatcher;
- public GotoMatchingBracketHandler(final ICharPairMatcher pairMatcher, final ISourceEditor editor) {
+ public GotoMatchingBracketHandler(final ICharPairMatcher pairMatcher, final SourceEditor editor) {
assert (pairMatcher != null);
assert (editor != null);
this.sourceEditor= editor;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoNextWordHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoNextWordHandler.java
index 42f0cc7..bda1910 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoNextWordHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoNextWordHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class GotoNextWordHandler extends SourceEditorTextHandler {
- public GotoNextWordHandler(final ISourceEditor editor) {
+ public GotoNextWordHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoPreviousWordHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoPreviousWordHandler.java
index ee0cb76..1a28dbc 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoPreviousWordHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/GotoPreviousWordHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class GotoPreviousWordHandler extends SourceEditorTextHandler {
- public GotoPreviousWordHandler(final ISourceEditor editor) {
+ public GotoPreviousWordHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionElementSearchContributionItem.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionElementSearchContributionItem.java
index 67c4a0f..0f65816 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionElementSearchContributionItem.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionElementSearchContributionItem.java
@@ -31,7 +31,7 @@
import org.eclipse.statet.ecommons.ui.actions.ListContributionItem;
import org.eclipse.statet.ecommons.ui.util.UIAccess;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -170,8 +170,8 @@
@Override
public void createContributionItems(final List<IContributionItem> items) {
final IWorkbenchPart part= UIAccess.getActiveWorkbenchPart(true);
- if (part instanceof ISourceEditor) {
- final ISourceEditor editor= (ISourceEditor) part;
+ if (part instanceof SourceEditor) {
+ final SourceEditor editor= (SourceEditor) part;
final SourceViewer viewer= editor.getViewer();
final ListContributionItem item= getItem(
this.sections.getType(viewer.getDocument(), viewer.getSelectedRange().x) );
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionHandler.java
index 55d05c9..8d860ac 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/MultiContentSectionHandler.java
@@ -14,6 +14,9 @@
package org.eclipse.statet.ltk.ui.sourceediting.actions;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullElse;
+
import java.util.IdentityHashMap;
import java.util.Map;
@@ -22,12 +25,13 @@
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler2;
import org.eclipse.jface.text.source.SourceViewer;
-import org.eclipse.ui.IWorkbenchPart;
+
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.ecommons.text.core.sections.DocContentSections;
-import org.eclipse.statet.ecommons.ui.workbench.WorkbenchUIUtils;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -38,24 +42,25 @@
*
* @see DocContentSections
*/
-public class MultiContentSectionHandler extends AbstractHandler {
+@NonNullByDefault
+public class MultiContentSectionHandler extends AbstractSourceEditorHandler {
- private static final Object NULL= new Object();
+ private static final IHandler2 NULL= new AbstractHandler() {
+ @Override
+ public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException {
+ return null;
+ }
+ };
private final DocContentSections sections;
- private final Map<String, Object> handlers= new IdentityHashMap<>(8);
-
- private ISourceEditor expliciteEditor;
+ private final Map<String, IHandler2> handlers= new IdentityHashMap<>(8);
public MultiContentSectionHandler(final DocContentSections sections) {
- if (sections == null) {
- throw new NullPointerException("sections"); //$NON-NLS-1$
- }
- this.sections= sections;
+ this.sections= nonNullAssert(sections);
}
public MultiContentSectionHandler(final DocContentSections sections,
@@ -64,8 +69,8 @@
}
public MultiContentSectionHandler(final DocContentSections sections,
- final String sectionType1, final IHandler2 handler1,
- final String sectionType2, final IHandler2 handler2) {
+ final @Nullable String sectionType1, final @Nullable IHandler2 handler1,
+ final @Nullable String sectionType2, final @Nullable IHandler2 handler2) {
this(sections);
if (sectionType1 != null) {
@@ -77,10 +82,6 @@
}
- protected void setEditor(final ISourceEditor editor) {
- this.expliciteEditor= editor;
- }
-
protected final DocContentSections getSections() {
return this.sections;
}
@@ -92,68 +93,47 @@
for (final Object handler : this.handlers.values()) {
if (handler != NULL) {
- ((IHandler2) handler).dispose();
+ ((IHandler2)handler).dispose();
}
}
this.handlers.clear();
}
- protected ISourceEditor getEditor(final Object applicationContext) {
- if (this.expliciteEditor != null) {
- return this.expliciteEditor;
- }
- final IWorkbenchPart activePart= WorkbenchUIUtils.getActivePart(applicationContext);
- if (activePart instanceof ISourceEditor) {
- return (ISourceEditor) activePart;
- }
- return activePart.getAdapter(ISourceEditor.class);
+ public void registerHandler(final String sectionType, final @Nullable IHandler2 handler) {
+ this.handlers.put(nonNullAssert(sectionType), nonNullElse(handler, NULL));
}
-
- public void registerHandler(final String sectionType, final IHandler2 handler) {
- if (sectionType == null) {
- throw new NullPointerException("sectionType");
- }
- this.handlers.put(sectionType, handler);
- }
-
- protected final IHandler2 getHandler(final String sectionType) {
+ protected final @Nullable IHandler2 getHandler(final String sectionType) {
if (sectionType == DocContentSections.ERROR) {
return null;
}
- Object handler= this.handlers.get(sectionType);
+ IHandler2 handler= this.handlers.get(sectionType);
if (handler == null) {
- handler= NULL;
try {
- final IHandler2 newHandler= createHandler(sectionType);
- if (newHandler != null) {
- handler= newHandler;
- }
+ handler= createHandler(sectionType);
}
finally {
- this.handlers.put(sectionType, handler);
+ registerHandler(sectionType, handler);
}
}
- return (handler != NULL) ? (IHandler2) handler : null;
+ return (handler != NULL) ? handler : null;
}
- protected IHandler2 createHandler(final String sectionType) {
+ protected @Nullable IHandler2 createHandler(final String sectionType) {
return null;
}
@Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
- final ISourceEditor editor= getEditor(event.getApplicationContext());
- if (editor == null) {
+ public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException {
+ final SourceEditor editor= getSourceEditor(event.getApplicationContext());
+ if (editor == null || !isSupported(editor)) {
return null;
}
+
final SourceViewer viewer= editor.getViewer();
- if (viewer == null) {
- return null;
- }
- final IHandler2 handler= getHandler(
- this.sections.getType(viewer.getDocument(), viewer.getSelectedRange().x) );
+ final IHandler2 handler= getHandler(this.sections.getType(
+ nonNullAssert(viewer.getDocument()), viewer.getSelectedRange().x ));
if (handler != null) {
return handler.execute(event);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/OpenDeclaration.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/OpenDeclaration.java
index 0773283..de0d615 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/OpenDeclaration.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/OpenDeclaration.java
@@ -34,7 +34,8 @@
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.statet.jcommons.text.core.TextRegion;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.ecommons.ui.util.UIAccess;
@@ -43,9 +44,11 @@
import org.eclipse.statet.ltk.model.core.element.SourceElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.WorkspaceSourceUnit;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+import org.eclipse.statet.ltk.ui.util.LTKSelectionUtils;
+@NonNullByDefault
public class OpenDeclaration {
@@ -53,7 +56,7 @@
}
- public <T> T selectElement(final List<? extends T> list, final IWorkbenchPart part)
+ public <T> @Nullable T selectElement(final List<? extends T> list, final IWorkbenchPart part)
throws CoreException {
if (list.isEmpty()) {
return null;
@@ -62,17 +65,19 @@
return list.get(0);
}
else {
- final ListDialog dialog= new ListDialog(part != null ? part.getSite().getShell() : UIAccess.getActiveWorkbenchShell(true));
+ final ListDialog dialog= new ListDialog(part != null ?
+ part.getSite().getShell() :
+ UIAccess.getActiveWorkbenchShell(true) );
dialog.setTitle("Open Declaration");
dialog.setMessage("Select the appropriate declaration:");
dialog.setHelpAvailable(false);
dialog.setContentProvider(new ArrayContentProvider());
dialog.setLabelProvider(createLabelProvider());
dialog.setInput(list);
- dialog.setInitialSelections(new Object[] { list.get(0) });
+ dialog.setInitialSelections(list.get(0));
if (dialog.open() == Window.OK) {
- return (T) dialog.getResult()[0];
+ return (T)dialog.getResult()[0];
}
else {
throw new CoreException(Status.CANCEL_STATUS);
@@ -80,7 +85,8 @@
}
}
- public <TNameAccess extends NameAccess<?, ?>> TNameAccess selectAccess(final List<? extends TNameAccess> accessList) {
+ public <TNameAccess extends NameAccess<?, ?>> @Nullable TNameAccess selectAccess(
+ final List<? extends TNameAccess> accessList) {
for (final TNameAccess candidate : accessList) {
if (candidate.isWriteAccess()) {
return candidate;
@@ -93,20 +99,23 @@
return new LabelProvider();
}
- public void open(final SourceElement element, final boolean activate) throws PartInitException {
+ public void open(final SourceElement<?> element, final boolean activate)
+ throws PartInitException {
final SourceUnit su= element.getSourceUnit();
if (su instanceof WorkspaceSourceUnit) {
- final IResource resource= ((WorkspaceSourceUnit) su).getResource();
+ final IResource resource= ((WorkspaceSourceUnit)su).getResource();
if (resource.getType() == IResource.FILE) {
- open((IFile) resource, activate, element.getNameSourceRange());
+ open((IFile)resource, activate, element);
return;
}
}
}
- public void open(final IFile file, final boolean activate, final TextRegion region) throws PartInitException {
+ public void open(final IFile file, final boolean activate,
+ final @Nullable SourceElement<?> element)
+ throws PartInitException {
final IWorkbenchPage page= UIAccess.getActiveWorkbenchPage(true);
- final IEditorDescriptor editorDescriptor= IDE.getEditorDescriptor(file, true);
+ final IEditorDescriptor editorDescriptor= IDE.getEditorDescriptor(file, true, true);
final FileEditorInput input= new FileEditorInput(file);
IEditorPart editorPart= page.findEditor(input);
if (editorPart == null || !(editorPart instanceof ITextEditor)) {
@@ -115,12 +124,18 @@
else if (activate) {
page.activate(editorPart);
}
- if (editorPart instanceof ITextEditor) {
- ((ITextEditor) editorPart).selectAndReveal(region.getStartOffset(), region.getLength());
+
+ if (element != null) {
+ if (editorPart instanceof ITextEditor) {
+ final var region= LTKSelectionUtils.getRegionToSelect(element);
+ if (region != null) {
+ ((ITextEditor)editorPart).selectAndReveal(region.getStartOffset(), region.getLength());
+ }
+ }
}
}
- public void open(final ISourceEditor editor, final NameAccess<?, ?> access) {
+ public void open(final SourceEditor editor, final NameAccess<?, ?> access) {
AstNode node= access.getNameNode();
if (node != null) {
editor.selectAndReveal(node.getStartOffset(), node.getLength());
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineBeginHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineBeginHandler.java
index 3ae09b9..23fcec7 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineBeginHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineBeginHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class SelectLineBeginHandler extends SourceEditorTextHandler {
- public SelectLineBeginHandler(final ISourceEditor editor) {
+ public SelectLineBeginHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineEndHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineEndHandler.java
index 095dd51..dd5cb5b 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineEndHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectLineEndHandler.java
@@ -17,13 +17,16 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class SelectLineEndHandler extends SourceEditorTextHandler {
- public SelectLineEndHandler(final ISourceEditor editor) {
+ public SelectLineEndHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectNextWordHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectNextWordHandler.java
index 47728ed..b2abdcf 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectNextWordHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectNextWordHandler.java
@@ -18,13 +18,16 @@
import org.eclipse.jface.text.BlockTextSelection;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class SelectNextWordHandler extends SourceEditorTextHandler {
- public SelectNextWordHandler(final ISourceEditor editor) {
+ public SelectNextWordHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectPreviousWordHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectPreviousWordHandler.java
index 952ce04..432c08a 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectPreviousWordHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SelectPreviousWordHandler.java
@@ -18,13 +18,16 @@
import org.eclipse.jface.text.BlockTextSelection;
import org.eclipse.swt.custom.ST;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public class SelectPreviousWordHandler extends SourceEditorTextHandler {
- public SelectPreviousWordHandler(final ISourceEditor editor) {
+ public SelectPreviousWordHandler(final SourceEditor editor) {
super(editor);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorOperationHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorOperationHandler.java
index 7d9c17d..56ba3ba 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorOperationHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorOperationHandler.java
@@ -14,59 +14,40 @@
package org.eclipse.statet.ltk.ui.sourceediting.actions;
-import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
-
-import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.text.ITextOperationTarget;
-import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.jcommons.lang.Nullable;
-import org.eclipse.statet.ecommons.ui.util.UIAccess;
-import org.eclipse.statet.ecommons.ui.workbench.WorkbenchUIUtils;
-
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
@NonNullByDefault
-public class SourceEditorOperationHandler extends AbstractHandler {
+public class SourceEditorOperationHandler extends AbstractSourceEditorHandler {
- private final @Nullable ISourceEditor editor;
-
private final int textOperation;
- public SourceEditorOperationHandler(final ISourceEditor editor, final int textOperation) {
- this.editor= nonNullAssert(editor);
- this.textOperation= textOperation;
- }
-
public SourceEditorOperationHandler(final int textOperation) {
- this.editor= null;
+ super();
+ this.textOperation= textOperation;
+ }
+
+ public SourceEditorOperationHandler(final SourceEditor editor, final int textOperation) {
+ super(editor);
this.textOperation= textOperation;
}
- protected int getTextOperation() {
+ protected final int getTextOperation() {
return this.textOperation;
}
- protected @Nullable ISourceEditor getSourceEditor(final @Nullable Object context) {
- if (this.editor != null) {
- return this.editor;
- }
- final IWorkbenchPart part= WorkbenchUIUtils.getActivePart(context);
- if (part == null) {
- return null;
- }
- return part.getAdapter(ISourceEditor.class);
- }
-
- protected @Nullable ITextOperationTarget getOperationTarget(final ISourceEditor editor) {
+ protected @Nullable ITextOperationTarget getOperationTarget(final SourceEditor editor) {
ITextOperationTarget target= editor.getAdapter(ITextOperationTarget.class);
if (target == null) {
target= editor.getViewer().getTextOperationTarget();
@@ -76,8 +57,8 @@
@Override
public void setEnabled(final @Nullable Object evaluationContext) {
- final ISourceEditor editor= getSourceEditor(evaluationContext);
- if (editor == null || !UIAccess.isOkToUse(editor.getViewer())) {
+ final SourceEditor editor= getSourceEditor(evaluationContext);
+ if (editor == null || !isSupported(editor)) {
setBaseEnabled(false);
return;
}
@@ -89,15 +70,17 @@
@Override
public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException {
- final ISourceEditor editor= getSourceEditor(event.getApplicationContext());
- if (editor == null || !UIAccess.isOkToUse(editor.getViewer())) {
+ final SourceEditor editor= getSourceEditor(event.getApplicationContext());
+ if (editor == null || !isSupported(editor)) {
return null;
}
final ITextOperationTarget operationTarget= getOperationTarget(editor);
if (operationTarget != null && operationTarget.canDoOperation(this.textOperation)) {
operationTarget.doOperation(this.textOperation);
+ return null;
}
+ Display.getCurrent().beep();
return null;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorTextHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorTextHandler.java
index aabbf88..b899b88 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorTextHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SourceEditorTextHandler.java
@@ -37,14 +37,18 @@
import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.ui.texteditor.AbstractTextEditor;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.ecommons.text.DocumentCodepointIterator;
import org.eclipse.statet.ecommons.text.ICodepointIterator;
import org.eclipse.statet.ecommons.text.TextUtil;
import org.eclipse.statet.ecommons.ui.util.DNDUtils;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+@NonNullByDefault
public abstract class SourceEditorTextHandler extends AbstractHandler {
// TODO Add CamelCase support
@@ -57,7 +61,7 @@
protected static class ExecData {
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private final SourceViewer viewer;
private final StyledText widget;
@@ -67,16 +71,16 @@
private final int caretDocOffset;
private int caretDocLine= Integer.MIN_VALUE;
- private IRegion caretDocLineInfo;
+ private @Nullable IRegion caretDocLineInfo;
- private LinkedModeModel linkedModel;
+ private @Nullable LinkedModeModel linkedModel;
- public ExecData(final ISourceEditor editor) throws BadLocationException {
+ public ExecData(final SourceEditor editor) throws BadLocationException {
this.editor= editor;
this.viewer= editor.getViewer();
this.widget= getViewer().getTextWidget();
- this.document= (AbstractDocument) getViewer().getDocument();
+ this.document= (AbstractDocument)getViewer().getDocument();
this.caretWidgetOffset= getWidget().getCaretOffset();
this.caretDocOffset= getViewer().widgetOffset2ModelOffset(getCaretWidgetOffset());
if (this.caretDocOffset < 0) {
@@ -91,7 +95,7 @@
&& store.getBoolean(AbstractTextEditor.PREFERENCE_NAVIGATION_SMART_HOME_END) );
}
- public ISourceEditor getEditor() {
+ public SourceEditor getEditor() {
return this.editor;
}
@@ -125,17 +129,21 @@
}
public int getCaretDocLine() throws BadLocationException {
- if (this.caretDocLine == Integer.MIN_VALUE) {
- this.caretDocLine= getDocument().getLineOfOffset(getCaretDocOffset());
+ var line= this.caretDocLine;
+ if (line == Integer.MIN_VALUE) {
+ line= getDocument().getLineOfOffset(getCaretDocOffset());
+ this.caretDocLine= line;
}
- return this.caretDocLine;
+ return line;
}
public IRegion getCaretDocLineInformation() throws BadLocationException {
- if (this.caretDocLineInfo == null) {
- this.caretDocLineInfo= getDocument().getLineInformation(getCaretDocLine());
+ var lineInfo= this.caretDocLineInfo;
+ if (lineInfo == null) {
+ lineInfo= getDocument().getLineInformation(getCaretDocLine());
+ this.caretDocLineInfo= lineInfo;
}
- return this.caretDocLineInfo;
+ return lineInfo;
}
public int getCaretDocLineStartOffset() throws BadLocationException {
@@ -151,25 +159,27 @@
return getCaretDocOffset() - getCaretDocLineStartOffset();
}
- public LinkedModeModel getLinkedModel() {
- if (this.linkedModel == null) {
- this.linkedModel= LinkedModeModel.getModel(getDocument(), getCaretDocOffset());
+ public @Nullable LinkedModeModel getLinkedModel() {
+ var linkedModel= this.linkedModel;
+ if (linkedModel == null) {
+ linkedModel= LinkedModeModel.getModel(getDocument(), getCaretDocOffset());
+ this.linkedModel= linkedModel;
}
- return this.linkedModel;
+ return linkedModel;
}
}
- private final ISourceEditor editor;
+ private final SourceEditor editor;
- public SourceEditorTextHandler(final ISourceEditor editor) {
+ public SourceEditorTextHandler(final SourceEditor editor) {
this.editor= editor;
}
- private ISourceEditor getEditor(final Object context) {
+ private @Nullable SourceEditor getEditor(final @Nullable Object context) {
return this.editor;
}
@@ -190,15 +200,15 @@
}
@Override
- public void setEnabled(final Object evaluationContext) {
- final ISourceEditor editor= getEditor(evaluationContext);
+ public void setEnabled(final @Nullable Object evaluationContext) {
+ final SourceEditor editor= getEditor(evaluationContext);
setBaseEnabled(editor != null
&& (!isEditAction() || editor.isEditable(false)) );
}
@Override
- public Object execute(final ExecutionEvent event) throws ExecutionException {
- final ISourceEditor editor= getEditor(event.getApplicationContext());
+ public @Nullable Object execute(final ExecutionEvent event) throws ExecutionException {
+ final SourceEditor editor= getEditor(event.getApplicationContext());
if (editor == null) {
return null;
}
@@ -243,13 +253,15 @@
protected int findPreviousWordOffset(final ExecData data, final int offset,
final boolean sameLine) throws BadLocationException {
int bound= 0;
- if (data.getLinkedModel() != null) {
- final LinkedPosition linkedPosition= data.getLinkedModel().findPosition(
- new LinkedPosition(data.getDocument(), offset, 0) );
- if (linkedPosition != null) {
- final int begin= linkedPosition.getOffset();
- if (begin < offset) {
- bound= begin;
+ { final var linkedModel= data.getLinkedModel();
+ if (linkedModel != null) {
+ final LinkedPosition linkedPosition= linkedModel.findPosition(
+ new LinkedPosition(data.getDocument(), offset, 0) );
+ if (linkedPosition != null) {
+ final int begin= linkedPosition.getOffset();
+ if (begin < offset) {
+ bound= begin;
+ }
}
}
}
@@ -298,13 +310,15 @@
protected int findNextWordOffset(final ExecData data, final int offset,
final boolean sameLine) throws BadLocationException {
int bound= data.getDocument().getLength();
- if (data.getLinkedModel() != null) {
- final LinkedPosition linkedPosition= data.getLinkedModel().findPosition(
- new LinkedPosition(data.getDocument(), offset, 0) );
- if (linkedPosition != null) {
- final int end= linkedPosition.getOffset() + linkedPosition.getLength();
- if (end > offset) {
- bound= end;
+ { final var linkedModel= data.getLinkedModel();
+ if (linkedModel != null) {
+ final LinkedPosition linkedPosition= linkedModel.findPosition(
+ new LinkedPosition(data.getDocument(), offset, 0) );
+ if (linkedPosition != null) {
+ final int end= linkedPosition.getOffset() + linkedPosition.getLength();
+ if (end > offset) {
+ bound= end;
+ }
}
}
}
@@ -424,7 +438,7 @@
widgetSelection.y : widgetSelection.x);
}
if (data.toWidgetOffset(newDocOffset) < 0 && data.getViewer() instanceof ProjectionViewer) {
- ((ProjectionViewer) data.getViewer()).exposeModelRange(new Region(newDocOffset, 0));
+ ((ProjectionViewer)data.getViewer()).exposeModelRange(new Region(newDocOffset, 0));
}
selectAndReveal(data, otherDocOffset, newDocOffset - otherDocOffset);
}
@@ -446,7 +460,7 @@
protected void delete(final ExecData data, final IRegion docRegion)
throws BadLocationException {
if (data.getViewer() instanceof ProjectionViewer) {
- ((ProjectionViewer) data.getViewer()).exposeModelRange(docRegion);
+ ((ProjectionViewer)data.getViewer()).exposeModelRange(docRegion);
}
data.getViewer().setSelectedRange(docRegion.getOffset(), 0);
if (docRegion.getLength() > 0) {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SpecificContentAssistHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SpecificContentAssistHandler.java
index 5685938..f97528a 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SpecificContentAssistHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/actions/SpecificContentAssistHandler.java
@@ -24,8 +24,8 @@
import org.eclipse.statet.ecommons.ui.util.UIAccess;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditorCommandIds;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.assist.ContentAssist;
@@ -44,7 +44,7 @@
*
* @param registry the computer registry to use for the enablement of proposal categories
*/
- public SpecificContentAssistHandler(final ISourceEditor editor, final ContentAssist contentAssist) {
+ public SpecificContentAssistHandler(final SourceEditor editor, final ContentAssist contentAssist) {
super(editor, ISourceViewer.CONTENTASSIST_PROPOSALS);
this.contentAssist= contentAssist;
}
@@ -63,7 +63,7 @@
if (par == null) {
return null;
}
- final ISourceEditor editor= getSourceEditor(event.getApplicationContext());
+ final SourceEditor editor= getSourceEditor(event.getApplicationContext());
if (editor == null || !UIAccess.isOkToUse(editor.getViewer())) {
return null;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistInvocationContext.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistInvocationContext.java
index 4a61244..3e41612 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistInvocationContext.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistInvocationContext.java
@@ -33,14 +33,14 @@
import org.eclipse.statet.ltk.ast.core.util.AstSelection;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
@NonNullByDefault
public class AssistInvocationContext implements IQuickAssistInvocationContext, TextRegion {
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private final SourceViewer sourceViewer;
private final int invocationOffset;
@@ -61,7 +61,7 @@
int session;
- public AssistInvocationContext(final ISourceEditor editor,
+ public AssistInvocationContext(final SourceEditor editor,
final int offset, final String contentType,
final int synch, final IProgressMonitor monitor) {
this.editor= editor;
@@ -80,7 +80,7 @@
init(synch, monitor);
}
- public AssistInvocationContext(final ISourceEditor editor,
+ public AssistInvocationContext(final SourceEditor editor,
final IRegion region, final String contentType,
final int synch, final IProgressMonitor monitor) {
if (region.getOffset() < 0 || region.getLength() < 0) {
@@ -101,7 +101,7 @@
init(synch, monitor);
}
- public AssistInvocationContext(final ISourceEditor editor,
+ public AssistInvocationContext(final SourceEditor editor,
final TextRegion region, final String contentType,
final int synch, final IProgressMonitor monitor) {
if (region.getStartOffset() < 0 || region.getLength() < 0) {
@@ -137,7 +137,7 @@
return (selectedRange.x == getOffset() && selectedRange.y == getLength());
}
- protected boolean reuse(final ISourceEditor editor, final int offset) {
+ protected boolean reuse(final SourceEditor editor, final int offset) {
return (this.editor == editor
&& this.invocationOffset == offset
&& isInitialState() );
@@ -149,7 +149,7 @@
}
- public ISourceEditor getEditor() {
+ public SourceEditor getEditor() {
return this.editor;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistComputer.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistComputer.java
index 506aee6..aa8b7f4 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistComputer.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistComputer.java
@@ -18,7 +18,7 @@
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -44,7 +44,7 @@
* @param editor the source editor the session belong to
* @param assist the content assistant of the editor starting the session
*/
- void onSessionStarted(ISourceEditor editor, ContentAssist assist);
+ void onSessionStarted(SourceEditor editor, ContentAssist assist);
/**
* Informs the computer that a content assist session has ended. This call will always be after
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistProcessor.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistProcessor.java
index 7a29e3f..1acad62 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistProcessor.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ContentAssistProcessor.java
@@ -51,7 +51,7 @@
import org.eclipse.statet.internal.ltk.ui.EditingMessages;
import org.eclipse.statet.ltk.core.Ltk;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -77,7 +77,7 @@
private static final Collator NAME_COLLATOR= Collator.getInstance();
- static final Comparator<AssistProposal> PROPOSAL_COMPARATOR= new Comparator<AssistProposal>() {
+ static final Comparator<AssistProposal> PROPOSAL_COMPARATOR= new Comparator<>() {
@Override
public int compare(final AssistProposal proposal1, final AssistProposal proposal2) {
@@ -136,7 +136,7 @@
*/
private final ContentAssistComputerRegistry computerRegistry;
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private char[] completionProposalsAutoActivationCharacters;
private char[] contextInformationAutoActivationCharacters;
@@ -164,7 +164,7 @@
public ContentAssistProcessor(final ContentAssist assistant, final String contentType,
- final ContentAssistComputerRegistry registry, final ISourceEditor editor) {
+ final ContentAssistComputerRegistry registry, final SourceEditor editor) {
super(assistant, contentType);
assert(registry != null);
assert(editor != null);
@@ -177,7 +177,7 @@
}
- protected ISourceEditor getEditor() {
+ protected SourceEditor getEditor() {
return this.editor;
}
@@ -713,7 +713,7 @@
included.add(category);
}
}
- for (final ContentAssistCategory category : this.expliciteCategories.toList()) {
+ for (final ContentAssistCategory category : this.expliciteCategories) {
if (category.isEnabledInDefault() && category.hasComputers(getContentType())) {
included.add(category);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/InsertEditorTemplateHandler.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/InsertEditorTemplateHandler.java
index 165411c..6aeee45 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/InsertEditorTemplateHandler.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/InsertEditorTemplateHandler.java
@@ -33,7 +33,7 @@
import org.eclipse.statet.ecommons.ui.workbench.WorkbenchUIUtils;
import org.eclipse.statet.ltk.model.core.ModelManager;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.assist.TemplateProposal.TemplateProposalParameters;
import org.eclipse.statet.ltk.ui.templates.SourceEditorTemplateContext;
@@ -52,7 +52,7 @@
protected abstract @Nullable TemplateCompletionComputer getComputer();
- protected AssistInvocationContext createContext(final ISourceEditor editor)
+ protected AssistInvocationContext createContext(final SourceEditor editor)
throws BadPartitioningException, BadLocationException {
final TextRegion region= editor.getSelectedRegion();
final String contentType= TextUtils.getContentType(editor.getViewer().getDocument(),
@@ -76,11 +76,9 @@
if (template == null) {
return null;
}
- final ISourceEditor editor;
+ final SourceEditor editor;
{ final IWorkbenchPart activePart= WorkbenchUIUtils.getActivePart(event.getApplicationContext());
- editor= (activePart != null) ?
- activePart.getAdapter(ISourceEditor.class) :
- null;
+ editor= (activePart != null) ? activePart.getAdapter(SourceEditor.class) : null;
}
if (editor == null) {
return null;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/LinkedNamesAssistProposal.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/LinkedNamesAssistProposal.java
index bc75abd..639e408 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/LinkedNamesAssistProposal.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/LinkedNamesAssistProposal.java
@@ -47,8 +47,8 @@
import org.eclipse.statet.internal.ltk.ui.LTKUIPlugin;
import org.eclipse.statet.ltk.ui.LTKUI;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
-import org.eclipse.statet.ltk.ui.sourceediting.ITextEditToolSynchronizer;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.TextEditToolSynchronizer;
@NonNullByDefault
@@ -143,8 +143,8 @@
model.addGroup(group);
model.forceInstall();
- { final ISourceEditor editor= this.context.getEditor();
- final ITextEditToolSynchronizer synchronizer;
+ { final SourceEditor editor= this.context.getEditor();
+ final TextEditToolSynchronizer synchronizer;
if (editor != null && (synchronizer= editor.getTextEditToolSynchronizer()) != null) {
synchronizer.install(model);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/PathCompletionComputor.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/PathCompletionComputor.java
index 8c9fc5f..b60049c 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/PathCompletionComputor.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/PathCompletionComputor.java
@@ -51,7 +51,7 @@
import org.eclipse.statet.ecommons.ui.SharedUIResources;
import org.eclipse.statet.internal.ltk.ui.LTKUIPlugin;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.assist.SourceProposal.ProposalParameters;
@@ -211,7 +211,7 @@
@Override
- public void onSessionStarted(final ISourceEditor editor, final ContentAssist assist) {
+ public void onSessionStarted(final SourceEditor editor, final ContentAssist assist) {
int matchRules= SearchPattern.PREFIX_MATCH;
if (assist.getShowSubstringMatches()) {
matchRules |= SearchPattern.SUBSTRING_MATCH;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/QuickAssistProcessor.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/QuickAssistProcessor.java
index 418adb7..dd0a8b3 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/QuickAssistProcessor.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/QuickAssistProcessor.java
@@ -47,7 +47,7 @@
import org.eclipse.statet.ecommons.text.core.util.TextUtils;
import org.eclipse.statet.ltk.model.core.ModelManager;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -156,12 +156,12 @@
}
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private @Nullable String errorMessage;
- public QuickAssistProcessor(final ISourceEditor editor) {
+ public QuickAssistProcessor(final SourceEditor editor) {
this.editor= nonNullAssert(editor);
}
@@ -169,7 +169,7 @@
/**
* @return the editor
*/
- public final ISourceEditor getEditor() {
+ public final SourceEditor getEditor() {
return this.editor;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ReshowCompletionsRunnable.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ReshowCompletionsRunnable.java
index 8b271f8..595f273 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ReshowCompletionsRunnable.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/ReshowCompletionsRunnable.java
@@ -28,14 +28,14 @@
import org.eclipse.statet.ecommons.ui.util.UIAccess;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
public class ReshowCompletionsRunnable implements Runnable, Listener, ICompletionListener {
// Snapshot of current state
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private final ISourceViewer viewer;
private final SourceUnit su;
private final AbstractDocument document;
@@ -48,7 +48,7 @@
private boolean assistSelection;
- public ReshowCompletionsRunnable(final ISourceEditor editor, final ContentAssist assist) {
+ public ReshowCompletionsRunnable(final SourceEditor editor, final ContentAssist assist) {
this.editor= editor;
this.viewer= editor.getViewer();
this.su= editor.getSourceUnit();
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateCompletionComputer.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateCompletionComputer.java
index b82f5ed..2f1d781 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateCompletionComputer.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateCompletionComputer.java
@@ -42,7 +42,7 @@
import org.eclipse.statet.internal.ltk.ui.LTKUIPlugin;
import org.eclipse.statet.ltk.ui.LTKUI;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.assist.SourceProposal.ProposalParameters;
import org.eclipse.statet.ltk.ui.sourceediting.assist.TemplateProposal.TemplateProposalParameters;
import org.eclipse.statet.ltk.ui.templates.SourceEditorTemplateContext;
@@ -90,7 +90,7 @@
@Override
- public void onSessionStarted(final ISourceEditor editor, final ContentAssist assist) {
+ public void onSessionStarted(final SourceEditor editor, final ContentAssist assist) {
int matchRules= SearchPattern.PREFIX_MATCH;
if (assist.getShowSubstringMatches()) {
matchRules |= SearchPattern.SUBSTRING_MATCH;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateProposal.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateProposal.java
index 0ef0c12..f88d933 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateProposal.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/TemplateProposal.java
@@ -59,7 +59,7 @@
import org.eclipse.statet.internal.ltk.ui.LTKUIPlugin;
import org.eclipse.statet.ltk.ui.LTKUI;
-import org.eclipse.statet.ltk.ui.sourceediting.ITextEditToolSynchronizer;
+import org.eclipse.statet.ltk.ui.sourceediting.TextEditToolSynchronizer;
import org.eclipse.statet.ltk.ui.templates.IWorkbenchTemplateContext;
import org.eclipse.statet.ltk.ui.util.LTKSelectionUtils;
@@ -68,7 +68,7 @@
* Like default {@link org.eclipse.jface.text.templates.TemplateProposal}, but
* <ul>
* <li>supports substring matching
- * <li>supports {@link ITextEditToolSynchronizer}</li>
+ * <li>supports {@link TextEditToolSynchronizer}</li>
* </ul>
*/
@NonNullByDefault
@@ -320,7 +320,7 @@
if (hasPositions) {
model.forceInstall();
- final ITextEditToolSynchronizer toolSynchronizer= getInvocationContext().getEditor()
+ final TextEditToolSynchronizer toolSynchronizer= getInvocationContext().getEditor()
.getTextEditToolSynchronizer();
if (toolSynchronizer != null) {
toolSynchronizer.install(model);
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/AbstractFoldingPosition.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/AbstractFoldingPosition.java
index 473f41f..090ddab 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/AbstractFoldingPosition.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/AbstractFoldingPosition.java
@@ -16,7 +16,11 @@
import org.eclipse.jface.text.Position;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
+@NonNullByDefault
public abstract class AbstractFoldingPosition<E extends AbstractFoldingPosition<E>> extends Position {
@@ -29,11 +33,14 @@
@Override
- public boolean equals(final Object obj) {
+ public boolean equals(final @Nullable Object obj) {
+ if (this == obj) {
+ return true;
+ }
if (obj instanceof AbstractFoldingPosition<?>
&& this.getClass() == obj.getClass() ) {
- final AbstractFoldingPosition<?> other= (AbstractFoldingPosition<?>) obj;
- return ((this.offset == other.offset) && (this.length == other.length));
+ final AbstractFoldingPosition<?> other= (AbstractFoldingPosition<?>)obj;
+ return (this.offset == other.offset && this.length == other.length);
}
return false;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingAnnotation.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingAnnotation.java
index c35b412..76548e3 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingAnnotation.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingAnnotation.java
@@ -16,7 +16,10 @@
import org.eclipse.jface.text.source.projection.ProjectionAnnotation;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+@NonNullByDefault
public final class FoldingAnnotation extends ProjectionAnnotation {
@@ -65,10 +68,11 @@
return this.position;
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
protected boolean update(final FoldingAnnotation newAnn) {
if (this.type == newAnn.type && newAnn.getClass() == FoldingAnnotation.class
&& this.position.getClass() == newAnn.position.getClass()
- && ((AbstractFoldingPosition) this.position).update(newAnn.position) ) {
+ && ((AbstractFoldingPosition)this.position).update(newAnn.position) ) {
this.initialState= newAnn.initialState;
return true;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingEditorAddon.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingEditorAddon.java
index 90a1699..c83cbf2 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingEditorAddon.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingEditorAddon.java
@@ -53,12 +53,13 @@
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
import org.eclipse.statet.ltk.model.core.element.WorkspaceSourceUnit;
import org.eclipse.statet.ltk.ui.ModelElementInputListener;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditorAddon;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor1;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorAddon;
-public class FoldingEditorAddon implements ISourceEditorAddon, ModelElementInputListener, ChangeListener {
+public class FoldingEditorAddon implements SourceEditorAddon, ModelElementInputListener,
+ ChangeListener {
public static final class FoldingStructureComputationContext {
@@ -122,8 +123,8 @@
@Override
- public void install(final ISourceEditor editor) {
- this.editor= (SourceEditor1) editor;
+ public void install(final SourceEditor editor) {
+ this.editor= (SourceEditor1)editor;
PreferencesUtil.getSettingsChangeNotifier().addChangeListener(this);
this.provider.checkConfig(null);
this.editor.getModelInputProvider().addListener(this);
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingProvider.java
index a3d8141..7af95ef 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/FoldingProvider.java
@@ -17,9 +17,12 @@
import java.lang.reflect.InvocationTargetException;
import java.util.Set;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
import org.eclipse.statet.ltk.ui.sourceediting.folding.FoldingEditorAddon.FoldingStructureComputationContext;
+@NonNullByDefault
public interface FoldingProvider {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/NodeFoldingProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/NodeFoldingProvider.java
index ef27100..d7b8319 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/NodeFoldingProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/NodeFoldingProvider.java
@@ -18,14 +18,19 @@
import java.util.IdentityHashMap;
import java.util.Map;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
import org.eclipse.statet.ltk.ast.core.AstNode;
import org.eclipse.statet.ltk.ast.core.AstVisitor;
import org.eclipse.statet.ltk.ui.sourceediting.folding.FoldingEditorAddon.FoldingStructureComputationContext;
+@NonNullByDefault
public interface NodeFoldingProvider extends FoldingProvider {
+ @SuppressWarnings("serial")
class VisitorMap extends IdentityHashMap<String, AstVisitor> {
@@ -45,7 +50,7 @@
}
- public AstVisitor getOrCreate(final String type,
+ public @Nullable AstVisitor getOrCreate(final String type,
final FoldingStructureComputationContext context) {
AstVisitor visitor= super.get(type);
if (visitor == null) {
@@ -62,7 +67,7 @@
}
@Override
- public AstVisitor get(final Object key) {
+ public @Nullable AstVisitor get(@SuppressWarnings("null") final Object key) {
final AstVisitor visitor= super.get(key);
return (visitor != NONE) ? visitor : null;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/SimpleFoldingPosition.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/SimpleFoldingPosition.java
index 6c2fddd..1c306ec 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/SimpleFoldingPosition.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/folding/SimpleFoldingPosition.java
@@ -14,7 +14,10 @@
package org.eclipse.statet.ltk.ui.sourceediting.folding;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+@NonNullByDefault
public final class SimpleFoldingPosition extends AbstractFoldingPosition<SimpleFoldingPosition> {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java
index 127d4c9..8b6dfd0 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java
@@ -22,7 +22,7 @@
import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -34,7 +34,7 @@
public @Nullable SourceUnit getSourceUnit();
- public @Nullable ISourceEditor getEditor();
+ public @Nullable SourceEditor getEditor();
public @Nullable String evaluateInfo(Template template)
throws BadLocationException, TemplateException;
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorTemplateContext.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorTemplateContext.java
index 84a3a87..0d75221 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorTemplateContext.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorTemplateContext.java
@@ -39,7 +39,7 @@
import org.eclipse.statet.ecommons.text.TextUtil;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
@NonNullByDefault
@@ -54,14 +54,14 @@
protected static final String INDENTATION_VAR_NAME= "indentation"; //$NON-NLS-1$
- private final ISourceEditor editor;
+ private final SourceEditor editor;
private final int flags;
public SourceEditorTemplateContext(final TemplateContextType type, final IDocument document,
final TextRegion region,
- final ISourceEditor editor, final int flags) {
+ final SourceEditor editor, final int flags) {
super(type, document, region.getStartOffset(), region.getLength());
this.editor= editor;
this.flags= flags;
@@ -69,7 +69,7 @@
@Override
- public ISourceEditor getEditor() {
+ public SourceEditor getEditor() {
return this.editor;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/TemplatePreview.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/TemplatePreview.java
index 944e978..6593053 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/TemplatePreview.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/TemplatePreview.java
@@ -35,7 +35,7 @@
import org.eclipse.statet.ecommons.ui.ISettingsChangedHandler;
import org.eclipse.statet.ecommons.ui.util.UIAccess;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
import org.eclipse.statet.ltk.ui.sourceediting.ViewerSourceEditorAdapter;
@@ -49,7 +49,7 @@
private TextViewerJFaceUpdater viewerUpdater= null;
private SourceEditorViewerConfigurator configurator;
- private ISourceEditor editor;
+ private SourceEditor editor;
public TemplatePreview() {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/config/AbstractEditorTemplatesPage.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/config/AbstractEditorTemplatesPage.java
index 4d002cb..d22346a 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/config/AbstractEditorTemplatesPage.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/config/AbstractEditorTemplatesPage.java
@@ -53,7 +53,7 @@
import org.eclipse.statet.internal.ltk.ui.LTKUIPlugin;
import org.eclipse.statet.ltk.model.core.ModelManager;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
import org.eclipse.statet.ltk.ui.sourceediting.ViewerSourceEditorAdapter;
import org.eclipse.statet.ltk.ui.sourceediting.assist.AssistInvocationContext;
@@ -77,9 +77,9 @@
private @Nullable Runnable templateStoreListener;
private final ITextEditor editorPart;
- private final ISourceEditor sourceEditor;
+ private final SourceEditor sourceEditor;
- private ISourceEditor previewEditor;
+ private SourceEditor previewEditor;
private final TemplateVariableProcessor previewTemplateProcessor;
private final TemplateVariableProcessor editTemplateProcessor;
@@ -88,7 +88,7 @@
protected AbstractEditorTemplatesPage(final EnhTemplateStore templateStore,
- final ITextEditor editorPart, final ISourceEditor sourceEditor) {
+ final ITextEditor editorPart, final SourceEditor sourceEditor) {
super(editorPart, sourceEditor.getViewer());
this.templateStore= templateStore;
@@ -102,12 +102,12 @@
}
- protected ISourceEditor getSourceEditor() {
+ protected SourceEditor getSourceEditor() {
return this.sourceEditor;
}
protected AssistInvocationContext createContext(
- final ISourceEditor editor, final TextRegion region)
+ final SourceEditor editor, final TextRegion region)
throws BadPartitioningException, BadLocationException {
final String contentType= TextUtils.getContentType(editor.getViewer().getDocument(),
editor.getDocumentContentInfo(), region.getStartOffset(), true );
@@ -131,7 +131,7 @@
@Override
protected boolean isValidTemplate(final IDocument document, final Template template,
final int offset, final int length) {
- final ISourceEditor sourceEditor= getSourceEditor();
+ final SourceEditor sourceEditor= getSourceEditor();
if (sourceEditor == null) {
return false;
}
@@ -158,7 +158,7 @@
@Override
protected void insertTemplate(final Template template, final IDocument document) {
- final ISourceEditor sourceEditor= getSourceEditor();
+ final SourceEditor sourceEditor= getSourceEditor();
if (sourceEditor == null || !sourceEditor.isEditable(true)) {
return;
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKSelectionUtils.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKSelectionUtils.java
index 30cd7ae..d7d3bd6 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKSelectionUtils.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKSelectionUtils.java
@@ -30,6 +30,7 @@
import org.eclipse.statet.jcommons.lang.NonNull;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
import org.eclipse.statet.jcommons.lang.Nullable;
+import org.eclipse.statet.jcommons.text.core.BasicTextRegion;
import org.eclipse.statet.jcommons.text.core.TextRegion;
import org.eclipse.statet.ecommons.text.core.JFaceTextRegion;
@@ -40,10 +41,11 @@
import org.eclipse.statet.ltk.model.core.LtkModelUtils;
import org.eclipse.statet.ltk.model.core.ModelManager;
import org.eclipse.statet.ltk.model.core.element.LtkModelElement;
+import org.eclipse.statet.ltk.model.core.element.SourceElement;
import org.eclipse.statet.ltk.model.core.element.SourceStructElement;
import org.eclipse.statet.ltk.model.core.element.SourceUnit;
import org.eclipse.statet.ltk.model.core.element.SourceUnitModelInfo;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
@NonNullByDefault
@@ -67,6 +69,26 @@
}
+ public static @Nullable TextRegion getRegionToSelect(final SourceElement<?> element) {
+ { final var region= element.getNameSourceRange();
+ if (region != null) {
+ return region;
+ }
+ }
+ { final var region= element.getSourceRange();
+ if (region != null) {
+ return new BasicTextRegion(region.getStartOffset());
+ }
+ }
+ { final var region= element.getDocumentationRange();
+ if (region != null) {
+ return new BasicTextRegion(region.getStartOffset());
+ }
+ }
+ return null;
+ }
+
+
public static LtkModelElement @Nullable [] getSelectedElements(final @Nullable ISelection selection) {
if (selection instanceof IStructuredSelection) {
return getSelectedElements((IStructuredSelection) selection);
@@ -90,7 +112,7 @@
}
public static @Nullable SourceUnit getSingleSourceUnit(final IWorkbenchPart part) {
- final ISourceEditor editor= part.getAdapter(ISourceEditor.class);
+ final SourceEditor editor= part.getAdapter(SourceEditor.class);
if (editor == null) {
return null;
}
@@ -117,7 +139,7 @@
return null;
}
- public static SourceStructElement @Nullable [] getSelectedSourceStructElements(
+ public static @NonNull SourceStructElement @Nullable [] getSelectedSourceStructElements(
final @Nullable ISelection selection) {
if (selection instanceof IStructuredSelection) {
return getSelectedSourceStructElements((IStructuredSelection) selection);
@@ -125,9 +147,9 @@
return null;
}
- public static SourceStructElement @Nullable [] getSelectedSourceStructElements(
+ public static @NonNull SourceStructElement @Nullable [] getSelectedSourceStructElements(
final IStructuredSelection selection) {
- final SourceStructElement[] elements= new @NonNull SourceStructElement[selection.size()];
+ final @NonNull SourceStructElement[] elements= new @NonNull SourceStructElement[selection.size()];
final Iterator<?> iter= selection.iterator();
for (int i= 0; i < elements.length; i++) {
final Object next= iter.next();
@@ -140,7 +162,7 @@
return elements;
}
- public static IFile @Nullable [] getSelectedFiles(final @Nullable ISelection selection) {
+ public static @NonNull IFile @Nullable [] getSelectedFiles(final @Nullable ISelection selection) {
if (selection instanceof IStructuredSelection) {
return getSelectedFiles((IStructuredSelection) selection);
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKWorkbenchUIUtil.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKWorkbenchUIUtil.java
index 154886a..44f5a11 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKWorkbenchUIUtil.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/LTKWorkbenchUIUtil.java
@@ -44,7 +44,7 @@
import org.eclipse.statet.ecommons.ui.SharedUIResources;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
/**
@@ -54,7 +54,7 @@
public static AbstractDocument getDocument(final IWorkbenchPart part) {
- { final ISourceEditor editor= part.getAdapter(ISourceEditor.class);
+ { final SourceEditor editor= part.getAdapter(SourceEditor.class);
if (editor != null) {
return (AbstractDocument) editor.getViewer().getDocument();
}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ViewerSelectionTransferDropAdapter.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ViewerSelectionTransferDropAdapter.java
index 27819ac..4eb6239 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ViewerSelectionTransferDropAdapter.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ViewerSelectionTransferDropAdapter.java
@@ -53,8 +53,8 @@
import org.eclipse.statet.ltk.refactoring.core.RefactoringAdapter;
import org.eclipse.statet.ltk.refactoring.core.RefactoringDestination;
import org.eclipse.statet.ltk.ui.refactoring.RefactoringExecutionHelper;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditorAssociated;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorAssociated;
public class ViewerSelectionTransferDropAdapter extends ViewerDropAdapter implements TransferDropTargetListener {
@@ -320,12 +320,12 @@
RefactoringCore.getConditionCheckingFailedSeverity(),
getShell(), context );
- ISourceEditor editor= null;
+ SourceEditor editor= null;
if (this.part != null) {
- editor= this.part.getAdapter(ISourceEditor.class);
+ editor= this.part.getAdapter(SourceEditor.class);
if (editor == null) {
- final ISourceEditorAssociated associated= this.part
- .getAdapter(ISourceEditorAssociated.class);
+ final SourceEditorAssociated associated= this.part
+ .getAdapter(SourceEditorAssociated.class);
if (associated != null) {
editor= associated.getSourceEditor();
}