/* * DBeaver - Universal Database Manager * Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jkiss.dbeaver.ui.dialogs; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class EditTextDialog extends BaseDialog { private String text; private Text textControl; protected int textWidth = 300; protected int textHeight = 200; private boolean readonly = false; public EditTextDialog(Shell parentShell, String title, String text) { super(parentShell, title, null); this.text = text; } public void setReadonly(boolean readonly) { this.readonly = readonly; } @Override protected Composite createDialogArea(Composite parent) { Composite composite = super.createDialogArea(parent); createControlsBeforeText(composite); textControl = new Text(composite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL); if (text != null) { textControl.setText(text); } textControl.setEditable(!readonly); GridData gd = new GridData(GridData.FILL_BOTH); if (textWidth > 0) { gd.widthHint = textWidth; } if (textHeight > 0) { gd.heightHint = textHeight; } gd.minimumHeight = 100; gd.minimumWidth = 100; textControl.setLayoutData(gd); return composite; } protected void createControlsBeforeText(Composite composite) { } @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); if (!readonly) { createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } } @Override protected void okPressed() { text = textControl.getText(); super.okPressed(); } public static String editText(Shell parentShell, String title, String text) { EditTextDialog dialog = new EditTextDialog(parentShell, title, text); if (dialog.open() == IDialogConstants.OK_ID) { return dialog.text; } else { return null; } } public static void showText(Shell parentShell, String title, String text) { EditTextDialog dialog = new EditTextDialog(parentShell, title, text); dialog.setReadonly(true); dialog.open(); } }