Java tutorial
/******************************************************************************* * Copyright (c) 2009 University of Illinois at Urbana-Champaign 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: * UIUC - Initial API and implementation *******************************************************************************/ package org.eclipse.photran.internal.ui.views.vpgproblems; import org.eclipse.core.resources.IMarker; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.texteditor.MarkerUtilities; /** * Action to display the entire message for a marker in a separate dialog. * * @author Timofey Yuvashev * @author Esfar Huq * @author Rui Wang * @author Jeff Overbey */ /* Esfar/Rui: * Modified the method run() * 1) Added title bar to "Details" dialog * 2) "Details" dialog wraps * 3) Focus is shifted to "Close" key, so that dialog can be exited by hitting enter key * Jeff - Converted to use Dialog instead of Shell */ public class ShowFullMessageAction extends MarkerDispatchAction { public ShowFullMessageAction(IWorkbenchSite site) { super(site); setText(Messages.ShowFullMessageAction_EventDetails); setToolTipText(Messages.ShowFullMessageAction_ShowDetailsTooltip); } public ShowFullMessageAction(IWorkbenchSite site, String text, String toolTipText) { super(site); setText(text); setToolTipText(toolTipText); } @Override public ImageDescriptor getImageDescriptor() { Image img = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE); return ImageDescriptor.createFromImage(img); } @Override protected void run(final IMarker marker) { new DetailsDialog(getSite().getShell(), marker).open(); } private static final class DetailsDialog extends Dialog { private final IMarker marker; private DetailsDialog(Shell parentShell, IMarker marker) { super(parentShell); this.marker = marker; } @Override protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText(Messages.ShowFullMessageAction_EventDetails); shell.setSize(500, 300); } @Override protected Control createDialogArea(Composite parent) { Composite dialogArea = (Composite) super.createDialogArea(parent); Text message = new Text(dialogArea, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY); message.setText(MarkerUtilities.getMessage(marker)); message.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); dialogArea.layout(); return dialogArea; } @Override protected void createButtonsForButtonBar(Composite parent) { Button close = createButton(parent, IDialogConstants.CLOSE_ID, IDialogConstants.CLOSE_LABEL, true); close.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { close(); } public void widgetDefaultSelected(SelectionEvent e) { close(); } }); close.setFocus(); } } }