// ============================================================================ // // 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 java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import com.amalto.workbench.i18n.Messages; import com.amalto.workbench.image.EImage; import com.amalto.workbench.image.ImageCache; public class FacetsListInputDialog extends Dialog { protected List itemsList = null; protected Text newItemText = null; private ArrayList items = null; private SelectionListener caller = null; private String title = "";//$NON-NLS-1$ /** * @param parentShell */ public FacetsListInputDialog(SelectionListener caller, Shell parentShell, String title) { this(caller, parentShell, title, new ArrayList()); } /** * @param parentShell */ public FacetsListInputDialog(SelectionListener caller, Shell parentShell, String title, ArrayList items) { super(parentShell); this.caller = caller; this.title = title; this.items = items; } protected Control createDialogArea(Composite parent) { // Should not really be here but well,.... parent.getShell().setText(this.title); Composite composite = (Composite) super.createDialogArea(parent); GridLayout layout = (GridLayout) composite.getLayout(); layout.numColumns = 2; // layout.verticalSpacing = 10; Label serverLabel = new Label(composite, SWT.NONE); serverLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1)); serverLabel.setText(Messages.FacetsListInputDialog_NewItem); newItemText = new Text(composite, SWT.NONE); newItemText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); newItemText.setText("");//$NON-NLS-1$ ((GridData) newItemText.getLayoutData()).widthHint = 100; Button addButton = new Button(composite, SWT.PUSH); addButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); addButton.setImage(ImageCache.getCreatedImage(EImage.ADD_OBJ.getPath())); addButton.setToolTipText(Messages.Add); parent.getShell().setDefaultButton(addButton); addButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { if (!"".equals(newItemText.getText()))//$NON-NLS-1$ if (!Arrays.asList(itemsList.getItems()).contains(newItemText.getText())) { itemsList.add(newItemText.getText()); newItemText.setText("");//$NON-NLS-1$ } } }); Button deleteButton = new Button(composite, SWT.PUSH); deleteButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); deleteButton.setImage(ImageCache.getCreatedImage(EImage.DELETE_OBJ.getPath())); deleteButton.setToolTipText(Messages.Delete); deleteButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { ArrayList<String> backup = new ArrayList<String>(Arrays.asList(itemsList.getItems())); java.util.List sels = Arrays.asList(itemsList.getSelection()); for (Iterator iter = sels.iterator(); iter.hasNext();) { String sel = (String) iter.next(); backup.remove(sel); } itemsList.setItems(backup.toArray(new String[backup.size()])); } }); itemsList = new List(composite, SWT.MULTI | SWT.V_SCROLL); itemsList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); ((GridData) itemsList.getLayoutData()).heightHint = 100; for (Iterator iter = items.iterator(); iter.hasNext();) { String item = (String) iter.next(); itemsList.add(item); } return composite; } protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); getButton(IDialogConstants.OK_ID).addSelectionListener(this.caller); } protected void okPressed() { items = new ArrayList<String>(); items.addAll(Arrays.asList(itemsList.getItems())); setReturnCode(OK); // no close let Action Handler handle it } public ArrayList getItems() { return items; } }