mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-23 08:13:50 +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.dm.DMVMRootLayoutNode;
|
||||
import org.eclipse.debug.core.DebugPlugin;
|
||||
import org.eclipse.debug.core.IExpressionsListener;
|
||||
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.IPresentationContext;
|
||||
|
||||
|
@ -33,10 +33,10 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
|
|||
*
|
||||
*/
|
||||
@SuppressWarnings("restriction")
|
||||
public class ExpressionVMProvider extends AbstractDebugDMVMProviderWithCache implements IExpressionsListener
|
||||
public class ExpressionVMProvider extends AbstractDebugDMVMProviderWithCache implements IExpressionsListener2
|
||||
{
|
||||
public static class ExpressionsChangedEvent {
|
||||
enum Type {ADDED, CHANGED, REMOVED}
|
||||
enum Type {ADDED, CHANGED, REMOVED, MOVED, INSERTED}
|
||||
public final Type fType;
|
||||
public final IExpression[] fExpressions;
|
||||
public ExpressionsChangedEvent(Type type, IExpression[] expressions) {
|
||||
|
@ -162,4 +162,12 @@ public class ExpressionVMProvider extends AbstractDebugDMVMProviderWithCache imp
|
|||
public void expressionsRemoved(IExpression[] 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.IModelProxy;
|
||||
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;
|
||||
|
||||
/**
|
||||
|
@ -131,6 +132,10 @@ abstract public class AbstractVMAdapter implements IVMAdapter
|
|||
}
|
||||
});
|
||||
} 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -191,6 +196,14 @@ abstract public class AbstractVMAdapter implements IVMAdapter
|
|||
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
|
||||
* 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.IModelProxy;
|
||||
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.provisional.AbstractModelProxy;
|
||||
import org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousContentAdapter;
|
||||
|
@ -486,6 +488,20 @@ abstract public class AbstractVMProvider implements IVMProvider
|
|||
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
|
||||
|
|
|
@ -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.IModelProxyFactory;
|
||||
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
|
||||
|
@ -15,7 +16,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
|
|||
@ThreadSafe
|
||||
@SuppressWarnings("restriction")
|
||||
public interface IVMAdapter
|
||||
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory
|
||||
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory, IViewerInputProvider
|
||||
{
|
||||
/**
|
||||
* 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.IModelProxyFactory;
|
||||
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
|
||||
|
@ -14,7 +15,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
|
|||
@ThreadSafe
|
||||
@SuppressWarnings("restriction")
|
||||
public interface IVMProvider
|
||||
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory
|
||||
extends IElementContentProvider, IModelProxyFactory, IColumnPresentationFactory, IViewerInputProvider
|
||||
{
|
||||
/**
|
||||
* Returns the VM Adapter associated with the provider.
|
||||
|
|
Loading…
Add table
Reference in a new issue