mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 356352 : Added DnD capability to the expression text-box in the
Memory Browser
This commit is contained in:
parent
decd827478
commit
48d7a3bcc4
1 changed files with 1292 additions and 1248 deletions
|
@ -36,7 +36,6 @@ import org.eclipse.debug.core.DebugException;
|
||||||
import org.eclipse.debug.core.DebugPlugin;
|
import org.eclipse.debug.core.DebugPlugin;
|
||||||
import org.eclipse.debug.core.IDebugEventSetListener;
|
import org.eclipse.debug.core.IDebugEventSetListener;
|
||||||
import org.eclipse.debug.core.ILaunch;
|
import org.eclipse.debug.core.ILaunch;
|
||||||
import org.eclipse.debug.core.model.IDebugElement;
|
|
||||||
import org.eclipse.debug.core.model.IDebugTarget;
|
import org.eclipse.debug.core.model.IDebugTarget;
|
||||||
import org.eclipse.debug.core.model.IMemoryBlock;
|
import org.eclipse.debug.core.model.IMemoryBlock;
|
||||||
import org.eclipse.debug.core.model.IMemoryBlockExtension;
|
import org.eclipse.debug.core.model.IMemoryBlockExtension;
|
||||||
|
@ -81,6 +80,15 @@ import org.eclipse.swt.custom.CTabFolder2Adapter;
|
||||||
import org.eclipse.swt.custom.CTabFolderEvent;
|
import org.eclipse.swt.custom.CTabFolderEvent;
|
||||||
import org.eclipse.swt.custom.CTabItem;
|
import org.eclipse.swt.custom.CTabItem;
|
||||||
import org.eclipse.swt.custom.StackLayout;
|
import org.eclipse.swt.custom.StackLayout;
|
||||||
|
import org.eclipse.swt.dnd.DND;
|
||||||
|
import org.eclipse.swt.dnd.DragSource;
|
||||||
|
import org.eclipse.swt.dnd.DropTarget;
|
||||||
|
import org.eclipse.swt.dnd.DropTargetAdapter;
|
||||||
|
import org.eclipse.swt.dnd.DropTargetEvent;
|
||||||
|
import org.eclipse.swt.dnd.FileTransfer;
|
||||||
|
import org.eclipse.swt.dnd.TextTransfer;
|
||||||
|
import org.eclipse.swt.dnd.Transfer;
|
||||||
|
import org.eclipse.swt.dnd.TransferData;
|
||||||
import org.eclipse.swt.events.DisposeEvent;
|
import org.eclipse.swt.events.DisposeEvent;
|
||||||
import org.eclipse.swt.events.DisposeListener;
|
import org.eclipse.swt.events.DisposeListener;
|
||||||
import org.eclipse.swt.events.SelectionAdapter;
|
import org.eclipse.swt.events.SelectionAdapter;
|
||||||
|
@ -125,6 +133,7 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
protected StackLayout fStackLayout;
|
protected StackLayout fStackLayout;
|
||||||
private Composite fRenderingsComposite;
|
private Composite fRenderingsComposite;
|
||||||
private GoToAddressBarWidget fGotoAddressBar;
|
private GoToAddressBarWidget fGotoAddressBar;
|
||||||
|
private DropTarget fDropTarget;
|
||||||
private Control fGotoAddressBarControl;
|
private Control fGotoAddressBarControl;
|
||||||
private Combo fGotoMemorySpaceControl;
|
private Combo fGotoMemorySpaceControl;
|
||||||
private Label fUnsupportedLabel;
|
private Label fUnsupportedLabel;
|
||||||
|
@ -203,6 +212,31 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
return fMainComposite;
|
return fMainComposite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handles DnD from other views.
|
||||||
|
*/
|
||||||
|
private class MemoryDropAdapter extends DropTargetAdapter {
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.swt.dnd.DropTargetListener#drop(org.eclipse.swt.dnd.DropTargetEvent)
|
||||||
|
*/
|
||||||
|
public void drop(final DropTargetEvent event) {
|
||||||
|
if (TextTransfer.getInstance().isSupportedType( event.currentDataType )) {
|
||||||
|
if ( event.data instanceof String ) {
|
||||||
|
fGotoAddressBar.setExpressionText( (String) event.data );
|
||||||
|
performGo(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see org.eclipse.swt.dnd.DropTargetListener#dragEnter(org.eclipse.swt.dnd.DropTargetEvent)
|
||||||
|
*/
|
||||||
|
public void dragEnter(DropTargetEvent event) {
|
||||||
|
event.detail = DND.DROP_COPY;
|
||||||
|
event.feedback = DND.FEEDBACK_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createPartControl(Composite parent) {
|
public void createPartControl(Composite parent) {
|
||||||
// set default rendering type. use the traditional rendering if available. fallback on first registered type.
|
// set default rendering type. use the traditional rendering if available. fallback on first registered type.
|
||||||
|
@ -241,6 +275,12 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
fGotoAddressBar = new GoToAddressBarWidget();
|
fGotoAddressBar = new GoToAddressBarWidget();
|
||||||
fGotoAddressBarControl = fGotoAddressBar.createControl(fMainComposite);
|
fGotoAddressBarControl = fGotoAddressBar.createControl(fMainComposite);
|
||||||
|
|
||||||
|
if (fDropTarget == null) {
|
||||||
|
fDropTarget = new DropTarget(fGotoAddressBarControl, DND.DROP_COPY | DND.DROP_DEFAULT);
|
||||||
|
fDropTarget.setTransfer( new Transfer[] { TextTransfer.getInstance() });
|
||||||
|
fDropTarget.addDropListener(new MemoryDropAdapter());
|
||||||
|
}
|
||||||
|
|
||||||
fGotoAddressBar.getButton(IDialogConstants.OK_ID).addSelectionListener(new SelectionAdapter() {
|
fGotoAddressBar.getButton(IDialogConstants.OK_ID).addSelectionListener(new SelectionAdapter() {
|
||||||
public void widgetSelected(SelectionEvent e) {
|
public void widgetSelected(SelectionEvent e) {
|
||||||
performGo(false);
|
performGo(false);
|
||||||
|
@ -358,6 +398,10 @@ public class MemoryBrowser extends ViewPart implements IDebugContextListener, IM
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
|
if (fDropTarget != null) {
|
||||||
|
fDropTarget.dispose();
|
||||||
|
fDropTarget = null;
|
||||||
|
}
|
||||||
DebugPlugin.getDefault().removeDebugEventListener(this);
|
DebugPlugin.getDefault().removeDebugEventListener(this);
|
||||||
IDebugContextService contextService =
|
IDebugContextService contextService =
|
||||||
DebugUITools.getDebugContextManager().getContextService(getSite().getWorkbenchWindow());
|
DebugUITools.getDebugContextManager().getContextService(getSite().getWorkbenchWindow());
|
||||||
|
|
Loading…
Add table
Reference in a new issue