1
0
Fork 0
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:
Pawel Piech 2007-11-15 16:44:56 +00:00
parent 1d31b66b19
commit 6e8c328c01
5 changed files with 47 additions and 8 deletions

View file

@ -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));
}
}

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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.