mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-23 16:23:52 +02:00
[205334] Implemented viewer input provider to set the default input in expressions view. Also, added more expression manager event handling.
This commit is contained in:
parent
1d31b66b19
commit
6e8c328c01
5 changed files with 47 additions and 8 deletions
|
@ -24,8 +24,8 @@ import org.eclipse.dd.dsf.ui.viewmodel.IVMLayoutNode;
|
||||||
import org.eclipse.dd.dsf.ui.viewmodel.IVMRootLayoutNode;
|
import org.eclipse.dd.dsf.ui.viewmodel.IVMRootLayoutNode;
|
||||||
import org.eclipse.dd.dsf.ui.viewmodel.dm.DMVMRootLayoutNode;
|
import org.eclipse.dd.dsf.ui.viewmodel.dm.DMVMRootLayoutNode;
|
||||||
import org.eclipse.debug.core.DebugPlugin;
|
import org.eclipse.debug.core.DebugPlugin;
|
||||||
import org.eclipse.debug.core.IExpressionsListener;
|
|
||||||
import org.eclipse.debug.core.model.IExpression;
|
import org.eclipse.debug.core.model.IExpression;
|
||||||
|
import org.eclipse.debug.internal.core.IExpressionsListener2;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
|
||||||
|
@ -33,10 +33,10 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("restriction")
|
@SuppressWarnings("restriction")
|
||||||
public class ExpressionVMProvider extends AbstractDebugDMVMProviderWithCache implements IExpressionsListener
|
public class ExpressionVMProvider extends AbstractDebugDMVMProviderWithCache implements IExpressionsListener2
|
||||||
{
|
{
|
||||||
public static class ExpressionsChangedEvent {
|
public static class ExpressionsChangedEvent {
|
||||||
enum Type {ADDED, CHANGED, REMOVED}
|
enum Type {ADDED, CHANGED, REMOVED, MOVED, INSERTED}
|
||||||
public final Type fType;
|
public final Type fType;
|
||||||
public final IExpression[] fExpressions;
|
public final IExpression[] fExpressions;
|
||||||
public ExpressionsChangedEvent(Type type, IExpression[] expressions) {
|
public ExpressionsChangedEvent(Type type, IExpression[] expressions) {
|
||||||
|
@ -162,4 +162,12 @@ public class ExpressionVMProvider extends AbstractDebugDMVMProviderWithCache imp
|
||||||
public void expressionsRemoved(IExpression[] expressions) {
|
public void expressionsRemoved(IExpression[] expressions) {
|
||||||
handleEvent(new ExpressionsChangedEvent(ExpressionsChangedEvent.Type.REMOVED, expressions));
|
handleEvent(new ExpressionsChangedEvent(ExpressionsChangedEvent.Type.REMOVED, expressions));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void expressionsInserted(IExpression[] expressions, int index) {
|
||||||
|
handleEvent(new ExpressionsChangedEvent(ExpressionsChangedEvent.Type.INSERTED, expressions));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void expressionsMoved(IExpression[] expressions, int index) {
|
||||||
|
handleEvent(new ExpressionsChangedEvent(ExpressionsChangedEvent.Type.MOVED, expressions));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentati
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -110,7 +111,7 @@ abstract public class AbstractVMAdapter implements IVMAdapter
|
||||||
public void update(final IChildrenUpdate[] updates) {
|
public void update(final IChildrenUpdate[] updates) {
|
||||||
handleUpdates(updates);
|
handleUpdates(updates);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleUpdates(final IViewerUpdate[] updates) {
|
private void handleUpdates(final IViewerUpdate[] updates) {
|
||||||
try {
|
try {
|
||||||
getExecutor().execute(new DsfRunnable() {
|
getExecutor().execute(new DsfRunnable() {
|
||||||
|
@ -131,6 +132,10 @@ abstract public class AbstractVMAdapter implements IVMAdapter
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch(RejectedExecutionException e) {
|
} catch(RejectedExecutionException e) {
|
||||||
|
for (IViewerUpdate update : updates) {
|
||||||
|
update.setStatus(new Status(IStatus.ERROR, DsfUIPlugin.PLUGIN_ID, "VM adapter executor not available", e)); //$NON-NLS-1$
|
||||||
|
update.done();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,7 +195,15 @@ abstract public class AbstractVMAdapter implements IVMAdapter
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void update(IViewerInputUpdate update) {
|
||||||
|
final IVMProvider provider = getVMProvider(update.getPresentationContext());
|
||||||
|
if (provider != null) {
|
||||||
|
provider.update(update);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new View Model Provider for given presentation context. Returns null
|
* Creates a new View Model Provider for given presentation context. Returns null
|
||||||
* if the presentation context is not supported.
|
* if the presentation context is not supported.
|
||||||
|
|
|
@ -38,6 +38,8 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdat
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy;
|
import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy;
|
||||||
import org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousContentAdapter;
|
import org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousContentAdapter;
|
||||||
|
@ -486,7 +488,21 @@ abstract public class AbstractVMProvider implements IVMProvider
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates the proxy input object to be used for the given input in the given
|
||||||
|
* viewer. By default no proxy object is used an the given element is used
|
||||||
|
* as the input into the view.
|
||||||
|
* <p>
|
||||||
|
* Sub classes can override this method for view-specific behavior.
|
||||||
|
*
|
||||||
|
* @see IViewerInputProvider
|
||||||
|
*/
|
||||||
|
public void update(IViewerInputUpdate update) {
|
||||||
|
update.setViewerInput(update.getElement());
|
||||||
|
update.done();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience method that finds the VMC corresponding to given parent
|
* Convenience method that finds the VMC corresponding to given parent
|
||||||
* argument given to isContainer() or retrieveChildren().
|
* argument given to isContainer() or retrieveChildren().
|
||||||
|
|
|
@ -5,6 +5,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentati
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The View Model adapter handles the layout of a given data model within a
|
* The View Model adapter handles the layout of a given data model within a
|
||||||
|
@ -15,7 +16,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
@SuppressWarnings("restriction")
|
@SuppressWarnings("restriction")
|
||||||
public interface IVMAdapter
|
public interface IVMAdapter
|
||||||
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory
|
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory, IViewerInputProvider
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns the View Model Provider that is registered for the given presentation
|
* Returns the View Model Provider that is registered for the given presentation
|
||||||
|
|
|
@ -5,6 +5,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentati
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The View Model Provider handles the layout of a given model within a
|
* The View Model Provider handles the layout of a given model within a
|
||||||
|
@ -14,7 +15,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
@SuppressWarnings("restriction")
|
@SuppressWarnings("restriction")
|
||||||
public interface IVMProvider
|
public interface IVMProvider
|
||||||
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory
|
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory, IViewerInputProvider
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns the VM Adapter associated with the provider.
|
* Returns the VM Adapter associated with the provider.
|
||||||
|
|
Loading…
Add table
Reference in a new issue