| /******************************************************************************* |
| * Copyright (c) 2000, 2007 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 |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| |
| *******************************************************************************/ |
| |
| package org.eclipse.dltk.internal.debug.ui.actions; |
| |
| import org.eclipse.debug.ui.DebugPopup; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.custom.StyledText; |
| import org.eclipse.swt.graphics.Point; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.IWorkbenchPart; |
| |
| public class PopupScriptDisplayAction extends ScriptDisplayAction { |
| private static class DisplayPopup extends DebugPopup { |
| private String message; |
| |
| public DisplayPopup(String message, Shell shell, Point anchor) { |
| // TODO: add real commandId |
| super(shell, anchor, null); |
| |
| this.message = message; |
| } |
| |
| protected String getActionText() { |
| return Messages.PopupScriptDisplayAction_moveToDisplayView; |
| } |
| |
| /*protected void persist() { |
| IDataDisplay directDisplay = getDirectDataDisplay(); |
| Display display = DLTKDebugUIPlugin.getStandardDisplay(); |
| |
| if (!display.isDisposed()) { |
| IDataDisplay dataDisplay = getDataDisplay(); |
| if (dataDisplay != null) { |
| if (directDisplay == null) { |
| dataDisplay.displayExpression(snippet); |
| } |
| dataDisplay.displayExpressionValue(resultString); |
| } |
| } |
| }*/ |
| |
| protected Control createDialogArea(Composite parent) { |
| GridData gd = new GridData(GridData.FILL_BOTH); |
| StyledText text = new StyledText(parent, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP | SWT.H_SCROLL | SWT.V_SCROLL); |
| text.setLayoutData(gd); |
| |
| text.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_FOREGROUND)); |
| text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); |
| |
| text.setText(message); |
| return text; |
| } |
| } |
| |
| public PopupScriptDisplayAction() { |
| super(); |
| } |
| |
| private void showPopup(StyledText textWidget, String message) { |
| DebugPopup displayPopup = new DisplayPopup(message, getShell(), getPopupAnchor(textWidget)); |
| displayPopup.open(); |
| } |
| |
| protected void displayStringResult(String currentSnippet, final String currentResultString) { |
| IWorkbenchPart part = getPart(); |
| |
| final StyledText textWidget = getStyledText(part); |
| if (textWidget != null) { |
| Display.getDefault().asyncExec(new Runnable() { |
| public void run() { |
| showPopup(textWidget, currentResultString); |
| } |
| }); |
| |
| evaluationCleanup(); |
| } |
| } |
| } |