Mercurial > projects > dwt-linux
diff dwt/browser.old/PromptDialog.d @ 288:4ee8c4237614
old branches... commit by mistake
author | John Reimer<terminal.node@gmail.com> |
---|---|
date | Tue, 05 Aug 2008 18:00:50 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwt/browser.old/PromptDialog.d Tue Aug 05 18:00:50 2008 -0700 @@ -0,0 +1,307 @@ +/******************************************************************************* + * Copyright (c) 2003, 2007 IBM Corporation 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +module dwt.browser.PromptDialog; + +import dwt.dwthelper.utils; + +import dwt.DWT; +import dwt.layout.GridData; +import dwt.layout.GridLayout; +import dwt.widgets.Button; +import dwt.widgets.Composite; +import dwt.widgets.Dialog; +import dwt.widgets.Display; +import dwt.widgets.Event; +import dwt.widgets.Label; +import dwt.widgets.Listener; +import dwt.widgets.Monitor; +import dwt.widgets.Shell; +import dwt.widgets.Text; +import dwt.widgets.Widget; + +class PromptDialog extends Dialog { + + PromptDialog(Shell parent, int style) { + super(parent, style); + } + + PromptDialog(Shell parent) { + this(parent, 0); + } + + void alertCheck(String title, String text, String check, ref int checkValue) { + Shell parent = getParent(); + final Shell shell = new Shell(parent, DWT.DIALOG_TRIM | DWT.APPLICATION_MODAL); + if (title !is null) shell.setText(title); + GridLayout gridLayout = new GridLayout(); + shell.setLayout(gridLayout); + Label label = new Label(shell, DWT.WRAP); + label.setText(text); + GridData data = new GridData(); + Monitor monitor = parent.getMonitor(); + int maxWidth = monitor.getBounds().width * 2 / 3; + int width = label.computeSize(DWT.DEFAULT, DWT.DEFAULT).x; + data.widthHint = Math.min(width, maxWidth); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + label.setLayoutData (data); + + final Button checkButton = check !is null ? new Button(shell, DWT.CHECK) : null; + if (checkButton !is null) { + checkButton.setText(check); + checkButton.setSelection(checkValue[0] !is 0); + data = new GridData (); + data.horizontalAlignment = GridData.BEGINNING; + checkButton.setLayoutData (data); + } + Button okButton = new Button(shell, DWT.PUSH); + okButton.setText(DWT.getMessage("SWT_OK")); //$NON-NLS-1$ + data = new GridData (); + data.horizontalAlignment = GridData.CENTER; + okButton.setLayoutData (data); + okButton.addListener(DWT.Selection, new Listener() { + public void handleEvent(Event event) { + if (checkButton !is null) checkValue[0] = checkButton.getSelection() ? 1 : 0; + shell.close(); + } + }); + + shell.pack(); + shell.open(); + Display display = parent.getDisplay(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) display.sleep(); + } + } + + void confirmEx(String title, String text, String check, String button0, String button1, String button2, int defaultIndex, final int[] checkValue, final int[] result) { + Shell parent = getParent(); + final Shell shell = new Shell(parent, DWT.DIALOG_TRIM | DWT.APPLICATION_MODAL); + shell.setText(title); + GridLayout gridLayout = new GridLayout(); + shell.setLayout(gridLayout); + Label label = new Label(shell, DWT.WRAP); + label.setText(text); + GridData data = new GridData(); + Monitor monitor = parent.getMonitor(); + int maxWidth = monitor.getBounds().width * 2 / 3; + int width = label.computeSize(DWT.DEFAULT, DWT.DEFAULT).x; + data.widthHint = Math.min(width, maxWidth); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + label.setLayoutData (data); + + final Button[] buttons = new Button[4]; + Listener listener = new Listener() { + public void handleEvent(Event event) { + if (buttons[0] !is null) checkValue[0] = buttons[0].getSelection() ? 1 : 0; + Widget widget = event.widget; + for (int i = 1; i < buttons.length; i++) { + if (widget is buttons[i]) { + result[0] = i - 1; + break; + } + } + shell.close(); + } + }; + if (check !is null) { + buttons[0] = new Button(shell, DWT.CHECK); + buttons[0].setText(check); + buttons[0].setSelection(checkValue[0] !is 0); + data = new GridData (); + data.horizontalAlignment = GridData.BEGINNING; + buttons[0].setLayoutData (data); + } + Composite composite = new Composite(shell, DWT.NONE); + data = new GridData(); + data.horizontalAlignment = GridData.CENTER; + composite.setLayoutData (data); + GridLayout layout = new GridLayout(); + layout.makeColumnsEqualWidth = true; + composite.setLayout(layout); + int buttonCount = 0; + if (button0 !is null) { + buttons[1] = new Button(composite, DWT.PUSH); + buttons[1].setText(button0); + buttons[1].addListener(DWT.Selection, listener); + buttons[1].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + buttonCount++; + } + if (button1 !is null) { + buttons[2] = new Button(composite, DWT.PUSH); + buttons[2].setText(button1); + buttons[2].addListener(DWT.Selection, listener); + buttons[2].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + buttonCount++; + } + if (button2 !is null) { + buttons[3] = new Button(composite, DWT.PUSH); + buttons[3].setText(button2); + buttons[3].addListener(DWT.Selection, listener); + buttons[3].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + buttonCount++; + } + layout.numColumns = buttonCount; + Button defaultButton = buttons [defaultIndex + 1]; + if (defaultButton !is null) shell.setDefaultButton (defaultButton); + + shell.pack(); + shell.open(); + Display display = parent.getDisplay(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) display.sleep(); + } + } + + void prompt(String title, String text, String check, final String[] value, final int[] checkValue, final int[] result) { + Shell parent = getParent(); + final Shell shell = new Shell(parent, DWT.DIALOG_TRIM | DWT.APPLICATION_MODAL); + if (title !is null) shell.setText(title); + GridLayout gridLayout = new GridLayout(); + shell.setLayout(gridLayout); + Label label = new Label(shell, DWT.WRAP); + label.setText(text); + GridData data = new GridData(); + Monitor monitor = parent.getMonitor(); + int maxWidth = monitor.getBounds().width * 2 / 3; + int width = label.computeSize(DWT.DEFAULT, DWT.DEFAULT).x; + data.widthHint = Math.min(width, maxWidth); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + label.setLayoutData (data); + + final Text valueText = new Text(shell, DWT.BORDER); + if (value[0] !is null) valueText.setText(value[0]); + data = new GridData(); + width = valueText.computeSize(DWT.DEFAULT, DWT.DEFAULT).x; + if (width > maxWidth) data.widthHint = maxWidth; + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + valueText.setLayoutData(data); + + final Button[] buttons = new Button[3]; + Listener listener = new Listener() { + public void handleEvent(Event event) { + if (buttons[0] !is null) checkValue[0] = buttons[0].getSelection() ? 1 : 0; + value[0] = valueText.getText(); + result[0] = event.widget is buttons[1] ? 1 : 0; + shell.close(); + } + }; + if (check !is null) { + buttons[0] = new Button(shell, DWT.CHECK); + buttons[0].setText(check); + buttons[0].setSelection(checkValue[0] !is 0); + data = new GridData (); + data.horizontalAlignment = GridData.BEGINNING; + buttons[0].setLayoutData (data); + } + Composite composite = new Composite(shell, DWT.NONE); + data = new GridData(); + data.horizontalAlignment = GridData.CENTER; + composite.setLayoutData (data); + composite.setLayout(new GridLayout(2, true)); + buttons[1] = new Button(composite, DWT.PUSH); + buttons[1].setText(DWT.getMessage("SWT_OK")); //$NON-NLS-1$ + buttons[1].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + buttons[1].addListener(DWT.Selection, listener); + buttons[2] = new Button(composite, DWT.PUSH); + buttons[2].setText(DWT.getMessage("SWT_Cancel")); //$NON-NLS-1$ + buttons[2].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + buttons[2].addListener(DWT.Selection, listener); + + shell.pack(); + shell.open(); + Display display = parent.getDisplay(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) display.sleep(); + } + } + + void promptUsernameAndPassword(String title, String text, String check, final String[] user, final String[] pass, final int[] checkValue, final int[] result) { + Shell parent = getParent(); + final Shell shell = new Shell(parent, DWT.DIALOG_TRIM | DWT.APPLICATION_MODAL); + shell.setText(title); + GridLayout gridLayout = new GridLayout(); + shell.setLayout(gridLayout); + Label label = new Label(shell, DWT.WRAP); + label.setText(text); + GridData data = new GridData(); + Monitor monitor = parent.getMonitor(); + int maxWidth = monitor.getBounds().width * 2 / 3; + int width = label.computeSize(DWT.DEFAULT, DWT.DEFAULT).x; + data.widthHint = Math.min(width, maxWidth); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + label.setLayoutData (data); + + Label userLabel = new Label(shell, DWT.NONE); + userLabel.setText(DWT.getMessage("SWT_Username")); //$NON-NLS-1$ + + final Text userText = new Text(shell, DWT.BORDER); + if (user[0] !is null) userText.setText(user[0]); + data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + userText.setLayoutData(data); + + Label passwordLabel = new Label(shell, DWT.NONE); + passwordLabel.setText(DWT.getMessage("SWT_Password")); //$NON-NLS-1$ + + final Text passwordText = new Text(shell, DWT.PASSWORD | DWT.BORDER); + if (pass[0] !is null) passwordText.setText(pass[0]); + data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + passwordText.setLayoutData(data); + + final Button[] buttons = new Button[3]; + Listener listener = new Listener() { + public void handleEvent(Event event) { + if (buttons[0] !is null) checkValue[0] = buttons[0].getSelection() ? 1 : 0; + user[0] = userText.getText(); + pass[0] = passwordText.getText(); + result[0] = event.widget is buttons[1] ? 1 : 0; + shell.close(); + } + }; + if (check !is null) { + buttons[0] = new Button(shell, DWT.CHECK); + buttons[0].setText(check); + buttons[0].setSelection(checkValue[0] !is 0); + data = new GridData (); + data.horizontalAlignment = GridData.BEGINNING; + buttons[0].setLayoutData (data); + } + Composite composite = new Composite(shell, DWT.NONE); + data = new GridData(); + data.horizontalAlignment = GridData.CENTER; + composite.setLayoutData (data); + composite.setLayout(new GridLayout(2, true)); + buttons[1] = new Button(composite, DWT.PUSH); + buttons[1].setText(DWT.getMessage("SWT_OK")); //$NON-NLS-1$ + buttons[1].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + buttons[1].addListener(DWT.Selection, listener); + buttons[2] = new Button(composite, DWT.PUSH); + buttons[2].setText(DWT.getMessage("SWT_Cancel")); //$NON-NLS-1$ + buttons[2].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + buttons[2].addListener(DWT.Selection, listener); + + shell.setDefaultButton(buttons[1]); + shell.pack(); + shell.open(); + Display display = parent.getDisplay(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) display.sleep(); + } + } +}