diff options
author | Darin Wright | 2009-09-21 18:53:36 +0000 |
---|---|---|
committer | Darin Wright | 2009-09-21 18:53:36 +0000 |
commit | ed78ed05880e04b3e9e062ef2a4d9da484d793d5 (patch) | |
tree | 97fd1fae36cd24e39178924e00af21565e36f943 /org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples | |
parent | c1a8f2cccf676d67c324b0ca4c8e0f14a8751ca3 (diff) | |
download | eclipse.platform.debug-ed78ed05880e04b3e9e062ef2a4d9da484d793d5.tar.gz eclipse.platform.debug-ed78ed05880e04b3e9e062ef2a4d9da484d793d5.tar.xz eclipse.platform.debug-ed78ed05880e04b3e9e062ef2a4d9da484d793d5.zip |
Bug 286310 - Checkbox support for Flexible Hierachy view
Diffstat (limited to 'org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples')
9 files changed, 189 insertions, 13 deletions
diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/CheckboxModelProxyFactory.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/CheckboxModelProxyFactory.java new file mode 100644 index 000000000..31d375ab8 --- /dev/null +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/CheckboxModelProxyFactory.java @@ -0,0 +1,39 @@ +/***************************************************************** + * Copyright (c) 2009 Texas Instruments and others + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 286310) + *****************************************************************/ +package org.eclipse.debug.examples.ui.midi.adapters; + +import javax.sound.midi.MidiEvent; +import javax.sound.midi.Track; + +import org.eclipse.debug.examples.ui.pda.views.CheckboxView; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; + +public class CheckboxModelProxyFactory implements IModelProxyFactory { + private MidiEventModelProxy fMidiEventProxy = new MidiEventModelProxy(); + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory#createModelProxy(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext) + */ + public IModelProxy createModelProxy(Object element, IPresentationContext context) { + if (CheckboxView.ID.equals(context.getId())) { + if (element instanceof Track) { + return new TrackModelProxy((Track) element); + } else if (element instanceof MidiEvent) { + return fMidiEventProxy; + } + } + + return null; + } + +} diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiAdapterFactory.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiAdapterFactory.java index 26696b1c6..9ddbf24df 100644 --- a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiAdapterFactory.java +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiAdapterFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Patrick Chuong (Texas Instruments) - Checkbox support for Flexible Hierachy view (Bug 286310) *******************************************************************************/ package org.eclipse.debug.examples.ui.midi.adapters; @@ -46,6 +47,8 @@ public class MidiAdapterFactory implements IAdapterFactory { private static IElementMementoProvider fgMementoProvider = new ControlsMementoProvider(); private static IStepOverHandler fgStepOverHandler = new MidiStepOverHandler(); + + private static IModelProxyFactory fgCheckboxModelProxyFactory = new CheckboxModelProxyFactory(); public Object getAdapter(Object adaptableObject, Class adapterType) { if (IElementContentProvider.class.equals(adapterType)) { @@ -81,9 +84,14 @@ public class MidiAdapterFactory implements IAdapterFactory { return new ControlEditor(); } } + if (IModelProxyFactory.class.equals(adapterType)) { if (adaptableObject instanceof MidiLaunch) { return fgSequencerModelProxyFactory; + } else if (adaptableObject instanceof Track) { + return fgCheckboxModelProxyFactory; + } else if (adaptableObject instanceof MidiEvent) { + return fgCheckboxModelProxyFactory; } } if (IElementMementoProvider.class.equals(adapterType)) { @@ -92,10 +100,11 @@ public class MidiAdapterFactory implements IAdapterFactory { if (IStepOverHandler.class.equals(adapterType)) { return fgStepOverHandler; } + return null; } public Class[] getAdapterList() { - return new Class[]{IElementContentProvider.class, IElementLabelProvider.class, IStepOverHandler.class}; + return new Class[]{IElementContentProvider.class, IElementLabelProvider.class, IStepOverHandler.class,}; } } diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventLabelProvider.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventLabelProvider.java index b357c67b7..6ea60ef96 100644 --- a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventLabelProvider.java +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventLabelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Patrick Chuong (Texas Instruments) - Checkbox support for Flexible Hierachy view (Bug 286310) *******************************************************************************/ package org.eclipse.debug.examples.ui.midi.adapters; @@ -57,6 +58,16 @@ public class MidiEventLabelProvider extends ElementLabelProvider { return ""; } + + /* + * (non-Javadoc) + * @see org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider#getChecked(org.eclipse.jface.viewers.TreePath, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext) + */ + public boolean getChecked(TreePath path, IPresentationContext presentationContext) throws CoreException { + Boolean result = (Boolean) MidiEventModelProxy.gChecked.get(path); + return result == null ? false : result.booleanValue(); + } + /** * Appends a byte to the buffer with 2 hex characters. * diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventModelProxy.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventModelProxy.java new file mode 100644 index 000000000..b535c3d2d --- /dev/null +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventModelProxy.java @@ -0,0 +1,34 @@ +/***************************************************************** + * Copyright (c) 2009 Texas Instruments and others + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 286310) + *****************************************************************/ +package org.eclipse.debug.examples.ui.midi.adapters; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.debug.internal.ui.viewers.model.provisional.ICheckboxModelProxy; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; +import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy; +import org.eclipse.jface.viewers.TreePath; + +public class MidiEventModelProxy extends AbstractModelProxy implements ICheckboxModelProxy { + static Map gChecked = new HashMap(); + + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.model.provisional.ICheckboxModelProxy#setChecked(org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.Object, org.eclipse.jface.viewers.TreePath, boolean) + */ + public boolean setChecked(IPresentationContext context, Object viewerInput, TreePath path, boolean checked) { + System.out.println("TrackCheckListener.setChecked() element = " + path.getLastSegment() + " checked = " + checked); + gChecked.put(path, Boolean.valueOf(checked)); + return true; + } + +} diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnFactory.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnFactory.java index c102fdc37..5a9fc55b1 100644 --- a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnFactory.java +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,9 +7,11 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Patrick Chuong (Texas Instruments) - Checkbox support for Flexible Hierachy view (Bug 286310) *******************************************************************************/ package org.eclipse.debug.examples.ui.midi.adapters; +import org.eclipse.debug.examples.ui.pda.views.CheckboxView; import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation; import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory; import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; @@ -26,7 +28,7 @@ public class SequencerColumnFactory implements IColumnPresentationFactory { * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory#createColumnPresentation(org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.Object) */ public IColumnPresentation createColumnPresentation(IPresentationContext context, Object element) { - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId())) { + if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId()) || CheckboxView.ID.equals(context.getId())) { return new SequencerColumnPresentation(); } return null; @@ -36,7 +38,7 @@ public class SequencerColumnFactory implements IColumnPresentationFactory { * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory#getColumnPresentationId(org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.Object) */ public String getColumnPresentationId(IPresentationContext context, Object element) { - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId())) { + if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId()) || CheckboxView.ID.equals(context.getId())) { return SequencerColumnPresentation.ID; } return null; diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnFactory.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnFactory.java index 0a5b5fb7e..66b9063e1 100644 --- a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnFactory.java +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,9 +7,11 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Patrick Chuong (Texas Instruments) - Checkbox support for Flexible Hierachy view (Bug 286310) *******************************************************************************/ package org.eclipse.debug.examples.ui.midi.adapters; +import org.eclipse.debug.examples.ui.pda.views.CheckboxView; import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation; import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory; import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; @@ -26,7 +28,7 @@ public class TrackColumnFactory implements IColumnPresentationFactory { * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory#createColumnPresentation(org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.Object) */ public IColumnPresentation createColumnPresentation(IPresentationContext context, Object element) { - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId())) { + if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId()) || CheckboxView.ID.equals(context.getId())) { return new TrackColumnPresentation(); } return null; @@ -36,7 +38,7 @@ public class TrackColumnFactory implements IColumnPresentationFactory { * @see org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory#getColumnPresentationId(org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, java.lang.Object) */ public String getColumnPresentationId(IPresentationContext context, Object element) { - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId())) { + if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId()) || CheckboxView.ID.equals(context.getId())) { return TrackColumnPresentation.ID; } return null; diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackContentProvider.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackContentProvider.java index 34c16a775..1606038d0 100644 --- a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackContentProvider.java +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackContentProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 IBM Corporation and others. + * Copyright (c) 2008, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Patrick Chuong (Texas Instruments) - Checkbox support for Flexible Hierachy view (Bug 286310) *******************************************************************************/ package org.eclipse.debug.examples.ui.midi.adapters; @@ -14,6 +15,7 @@ import javax.sound.midi.MidiEvent; import javax.sound.midi.Track; import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.examples.ui.pda.views.CheckboxView; import org.eclipse.debug.internal.ui.model.elements.ElementContentProvider; import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; @@ -32,7 +34,7 @@ public class TrackContentProvider extends ElementContentProvider { */ protected int getChildCount(Object element, IPresentationContext context, IViewerUpdate monitor) throws CoreException { Track track = (Track) element; - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId())) { + if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId()) || CheckboxView.ID.equals(context.getId()) ) { return track.size(); } return 0; @@ -42,7 +44,7 @@ public class TrackContentProvider extends ElementContentProvider { * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#getChildren(java.lang.Object, int, int, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate) */ protected Object[] getChildren(Object parent, int index, int length, IPresentationContext context, IViewerUpdate monitor) throws CoreException { - if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId())) { + if (IDebugUIConstants.ID_VARIABLE_VIEW.equals(context.getId()) || CheckboxView.ID.equals(context.getId())) { Track track = (Track) parent; MidiEvent[] events= new MidiEvent[length]; for (int i = 0; i < length; i++) { @@ -57,7 +59,7 @@ public class TrackContentProvider extends ElementContentProvider { * @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#supportsContextId(java.lang.String) */ protected boolean supportsContextId(String id) { - return IDebugUIConstants.ID_VARIABLE_VIEW.equals(id); + return IDebugUIConstants.ID_VARIABLE_VIEW.equals(id) || CheckboxView.ID.equals(id); } } diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackModelProxy.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackModelProxy.java new file mode 100644 index 000000000..449c43c56 --- /dev/null +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackModelProxy.java @@ -0,0 +1,45 @@ +/***************************************************************** + * Copyright (c) 2009 Texas Instruments and others + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 286310) + *****************************************************************/ +package org.eclipse.debug.examples.ui.midi.adapters; + +import javax.sound.midi.Track; + +import org.eclipse.debug.internal.ui.viewers.model.provisional.ICheckboxModelProxy; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; +import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta; +import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy; +import org.eclipse.jface.viewers.TreePath; +import org.eclipse.jface.viewers.Viewer; + +public class TrackModelProxy extends AbstractModelProxy { + protected Track fTrack; + + public TrackModelProxy(Track track) { + fTrack = track; + } + + public void installed(Viewer viewer) { + super.installed(viewer); + + ModelDelta delta = new ModelDelta(fTrack, IModelDelta.NO_CHANGE); + for (int i = 0; i < fTrack.size(); ++i) { + delta.addNode(fTrack.get(i), IModelDelta.INSTALL); + } + + fireModelChanged(delta); + } + + public synchronized void dispose() { + super.dispose(); + MidiEventModelProxy.gChecked.clear(); + } +} diff --git a/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/CheckboxView.java b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/CheckboxView.java new file mode 100644 index 000000000..d5926f3b5 --- /dev/null +++ b/org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/CheckboxView.java @@ -0,0 +1,32 @@ +/***************************************************************** + * Copyright (c) 2009 Texas Instruments and others + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Patrick Chuong (Texas Instruments) - Initial API and implementation (Bug 286310) + *****************************************************************/ +package org.eclipse.debug.examples.ui.pda.views; + +import org.eclipse.debug.internal.ui.views.variables.VariablesView; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.part.ViewPart; + +public class CheckboxView extends VariablesView { + public static String ID = "CHECKBOX_VIEW_ID"; + + protected int getViewerStyle() { + return SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.VIRTUAL | SWT.FULL_SELECTION | SWT.CHECK; + } + + protected String getHelpContextId() { + return ID; + } + + protected String getPresentationContextId() { + return ID; + } +} |