// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.dialogs; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; 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.eclipse.swt.widgets.Text; public class InputComboDialog extends Dialog { private String title; private String message; private String value = "";//$NON-NLS-1$ private int type; public String getValue() { return value; } public int getType() { return type; } private Button okButton; private Combo inputCombo; private Text errorMessageText; private String[] values; private String txtValue; private final boolean isAppendBlankItem; public InputComboDialog(Shell parentShell, String dialogTitle, String dialogMessage, String[] dialogValues, String initialValue, String txtValue) { this(parentShell, dialogTitle, dialogMessage, dialogValues, initialValue, txtValue, true); } public InputComboDialog(Shell parentShell, String dialogTitle, String dialogMessage, String[] dialogValues, String initialValue, String txtValue, boolean isAppendBlankItem) { super(parentShell); // TODO Auto-generated constructor stub this.message = dialogMessage; this.title = dialogTitle; this.message = dialogMessage; this.values = dialogValues; this.value = initialValue; this.txtValue = txtValue; this.isAppendBlankItem = isAppendBlankItem; } @Override protected Control createDialogArea(Composite parent) { // create composite Composite composite = (Composite) super.createDialogArea(parent); // create message if (message != null) { Label label = new Label(composite, SWT.WRAP); label.setText(message); GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER); data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); label.setLayoutData(data); label.setFont(parent.getFont()); } inputCombo = new Combo(composite, SWT.READ_ONLY); inputCombo.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); inputCombo.setItems(values); if (isAppendBlankItem) { inputCombo.add("");//$NON-NLS-1$ } for (String pro : values) { if (pro.equals(value)) { inputCombo.setText(pro); break; } } if (txtValue != null) { errorMessageText = new Text(composite, SWT.BORDER); errorMessageText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL)); errorMessageText.setBackground(errorMessageText.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); errorMessageText.setText(txtValue); errorMessageText.setEditable(false); } // applyDialogFont(composite); return composite; } @Override protected void buttonPressed(int buttonId) { if (buttonId == IDialogConstants.OK_ID) { value = inputCombo.getText(); type = inputCombo.getSelectionIndex(); } else { type = -1; value = null; } super.buttonPressed(buttonId); } @Override protected void configureShell(Shell shell) { super.configureShell(shell); if (title != null) { shell.setText(title); } } public Combo getCombo() { return inputCombo; } public Text getText() { return errorMessageText; } @Override protected void createButtonsForButtonBar(Composite parent) { // create OK and Cancel buttons by default okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); // do this here because setting the text will set enablement on the ok // button if (value != null) { inputCombo.setText(value); } } }