package name.abuchen.portfolio.ui.dialogs; import name.abuchen.portfolio.ui.Messages; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; 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.swt.widgets.Text; public class DisplayTextDialog extends Dialog { private String entry; private Text entryText; public DisplayTextDialog(Shell parentShell, String text) { super(parentShell); this.entry = text; } @Override protected boolean isResizable() { return true; } @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); Button button = createButton(parent, 9999, Messages.LabelCopyToClipboard, false); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (entryText.isDisposed()) return; Clipboard cb = new Clipboard(Display.getCurrent()); TextTransfer textTransfer = TextTransfer.getInstance(); cb.setContents(new Object[] { entryText.getText() }, new Transfer[] { textTransfer }); } }); } @Override protected Control createDialogArea(Composite parent) { Composite container = new Composite(parent, SWT.None); GridDataFactory.fillDefaults().grab(true, true).hint(600, 200).applyTo(container); GridLayoutFactory.fillDefaults().numColumns(1).applyTo(container); entryText = new Text(container, SWT.MULTI | SWT.WRAP | SWT.READ_ONLY | SWT.BORDER | SWT.V_SCROLL); entryText.setText(entry); GridDataFactory.fillDefaults().grab(true, true).applyTo(entryText); return container; } }