package org.hibernate.eclipse.mapper.editors; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; 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.hibernate.console.ConsoleConfiguration; import org.hibernate.eclipse.console.utils.LaunchHelper; import org.hibernate.eclipse.mapper.MapperMessages; public class ChooseConsoleConfigurationDialog extends TitleAreaDialog { private Combo text; String initialDefault; String selectedConfigurationName; public ChooseConsoleConfigurationDialog(Shell shell, String initialDefault) { super(shell); this.initialDefault = initialDefault; } public void prompt() { open(); if (getReturnCode() == CANCEL) { selectedConfigurationName = null; } return; } protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); setTitle(MapperMessages.ChooseConsoleConfigurationDialog_select_console_configuration); //setMessage(""); if (getTitleImageLabel() != null) { getTitleImageLabel().setVisible(false); } createConsoleConfigBrowseRow(composite); Dialog.applyDialogFont(composite); return composite; } protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText(MapperMessages.ChooseConsoleConfigurationDialog_select_console_configuration); } protected void okPressed() { selectedConfigurationName = text.getText(); super.okPressed(); } protected void cancelPressed() { selectedConfigurationName = null; super.cancelPressed(); } private void createConsoleConfigBrowseRow(Composite parent) { Composite panel = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(3, false); layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); panel.setLayout(layout); panel.setLayoutData(new GridData(GridData.FILL_BOTH)); panel.setFont(parent.getFont()); Label label = new Label(panel, SWT.NONE); label.setText(MapperMessages.ChooseConsoleConfigurationDialog_console_configuration); text = new Combo(panel, SWT.BORDER | SWT.LEAD | SWT.DROP_DOWN | SWT.READ_ONLY); text.setFocus(); text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL)); text.addModifyListener(new ModifyListener(){ public void modifyText(ModifyEvent e) { Button okButton = getButton(Window.OK); if(okButton != null && !okButton.isDisposed()) { okButton.setEnabled(!"".equals(text.getText())); //$NON-NLS-1$ } } }); setInitialTextValues(text); } private void setInitialTextValues(Combo text) { ConsoleConfiguration[] recentWorkspaces = LaunchHelper.findFilteredSortedConsoleConfigs(); for (int i = 0; i < recentWorkspaces.length; ++i) { text.add(recentWorkspaces[i].getName()); } text.setText(text.getItemCount() > 0 ? text.getItem(0) : initialDefault); } public String getSelectedConfigurationName() { return selectedConfigurationName; } }