1
0
Fork 0
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:
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.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));
}
} }

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

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.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().

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

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