summaryrefslogtreecommitdiff
path: root/propertysheet/src/org/eclipse/wb/internal/core/utils/ui/dialogs/TextDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/utils/ui/dialogs/TextDialog.java')
-rw-r--r--propertysheet/src/org/eclipse/wb/internal/core/utils/ui/dialogs/TextDialog.java118
1 files changed, 118 insertions, 0 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/utils/ui/dialogs/TextDialog.java b/propertysheet/src/org/eclipse/wb/internal/core/utils/ui/dialogs/TextDialog.java
new file mode 100644
index 0000000..320fa32
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/utils/ui/dialogs/TextDialog.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Google, Inc.
+ * 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:
+ * Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.utils.ui.dialogs;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.wb.internal.core.utils.ui.GridDataFactory;
+import org.eclipse.wb.internal.core.utils.ui.GridLayoutFactory;
+
+/**
+ * The dialog for editing multiline text.
+ *
+ * @author scheglov_ke
+ * @coverage core.ui
+ */
+public class TextDialog extends ResizableDialog {
+ private final String m_titleText;
+ private final String m_headerText;
+ private final String m_footerText;
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Constructor
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ public TextDialog(Shell parentShell,
+ AbstractUIPlugin plugin,
+ String titleText,
+ String headerText,
+ String footerText) {
+ super(parentShell, plugin);
+ m_titleText = titleText;
+ m_headerText = headerText;
+ m_footerText = footerText;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Text
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ private String m_text;
+
+ /**
+ * Sets the text to edit.
+ */
+ public final void setText(String text) {
+ m_text = text;
+ }
+
+ /**
+ * @return the edited text.
+ */
+ public final String getText() {
+ return m_text;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // GUI
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ protected Text m_textWidget;
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite area = (Composite) super.createDialogArea(parent);
+ GridLayoutFactory.create(area);
+ // header
+ new Label(area, SWT.NONE).setText(m_headerText);
+ // Text widget
+ {
+ m_textWidget = new Text(area, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ GridDataFactory.create(m_textWidget).grab().fill().hintVC(10);
+ m_textWidget.setText(m_text);
+ // handle Ctrl+Enter as OK
+ m_textWidget.addKeyListener(new KeyAdapter() {
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if (e.stateMask == SWT.CTRL && e.keyCode == SWT.CR) {
+ okPressed();
+ }
+ }
+ });
+ }
+ // footer
+ new Label(area, SWT.NONE).setText(m_footerText);
+ //
+ return area;
+ }
+
+ @Override
+ protected void configureShell(Shell newShell) {
+ super.configureShell(newShell);
+ newShell.setText(m_titleText);
+ }
+
+ @Override
+ protected void okPressed() {
+ m_text = m_textWidget.getText();
+ super.okPressed();
+ }
+}