1765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/******************************************************************************* 2765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Copyright (c) 2011 Google, Inc. 3765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * All rights reserved. This program and the accompanying materials 4765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * are made available under the terms of the Eclipse Public License v1.0 5765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * which accompanies this distribution, and is available at 6765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * http://www.eclipse.org/legal/epl-v10.html 7765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 8765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Contributors: 9765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Google, Inc. - initial API and implementation 10765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *******************************************************************************/ 11765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepackage org.eclipse.wb.internal.core.utils.ui.dialogs; 12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.SWT; 14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.events.KeyAdapter; 15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.events.KeyEvent; 16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Composite; 17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Control; 18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Label; 19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Shell; 20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Text; 21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.ui.plugin.AbstractUIPlugin; 22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.utils.ui.GridDataFactory; 23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.utils.ui.GridLayoutFactory; 24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/** 26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * The dialog for editing multiline text. 27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke 29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @coverage core.ui 30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic class TextDialog extends ResizableDialog { 32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private final String m_titleText; 33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private final String m_headerText; 34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private final String m_footerText; 35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Constructor 39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public TextDialog(Shell parentShell, 42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye AbstractUIPlugin plugin, 43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye String titleText, 44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye String headerText, 45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye String footerText) { 46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye super(parentShell, plugin); 47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_titleText = titleText; 48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_headerText = headerText; 49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_footerText = footerText; 50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Text 55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private String m_text; 58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the text to edit. 61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public final void setText(String text) { 63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_text = text; 64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the edited text. 68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public final String getText() { 70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_text; 71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // GUI 76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected Text m_textWidget; 79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 81765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected Control createDialogArea(Composite parent) { 82765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye Composite area = (Composite) super.createDialogArea(parent); 83765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye GridLayoutFactory.create(area); 84765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // header 85765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye new Label(area, SWT.NONE).setText(m_headerText); 86765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Text widget 87765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye { 88765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_textWidget = new Text(area, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); 89765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye GridDataFactory.create(m_textWidget).grab().fill().hintVC(10); 90765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_textWidget.setText(m_text); 91765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // handle Ctrl+Enter as OK 92765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_textWidget.addKeyListener(new KeyAdapter() { 93765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 94765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void keyPressed(KeyEvent e) { 95765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye if (e.stateMask == SWT.CTRL && e.keyCode == SWT.CR) { 96765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye okPressed(); 97765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 98765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 99765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye }); 100765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 101765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // footer 102765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye new Label(area, SWT.NONE).setText(m_footerText); 103765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 104765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return area; 105765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 106765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 107765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 108765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected void configureShell(Shell newShell) { 109765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye super.configureShell(newShell); 110765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye newShell.setText(m_titleText); 111765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 112765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 113765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 114765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected void okPressed() { 115765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_text = m_textWidget.getText(); 116765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye super.okPressed(); 117765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 118765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye} 119