// ============================================================================
//
// 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.Iterator;
import java.util.List;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
public class MDMXSDSchemaEntryDialog extends Dialog {
private String title;
private ListViewer wcListViewer;
private List<String> urls = new ArrayList<String>();
private List<String> importedUrls = new ArrayList<String>();
public MDMXSDSchemaEntryDialog(Shell parentShell, String title) {
super(parentShell);
setShellStyle(this.getShellStyle() | SWT.RESIZE);
this.title = title;
}
@Override
protected Control createDialogArea(Composite parent) {
parent.getShell().setText(this.title);
Composite composite = (Composite) super.createDialogArea(parent);
GridLayout layout = (GridLayout) composite.getLayout();
layout.numColumns = 1;
wcListViewer = new ListViewer(composite, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
wcListViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
((GridData) wcListViewer.getControl().getLayoutData()).minimumHeight = 200;
wcListViewer.setContentProvider(new IStructuredContentProvider() {
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
public Object[] getElements(Object inputElement) {
return ((ArrayList) inputElement).toArray(new String[] {});
}
});
wcListViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
importedUrls.clear();
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
Iterator iter = selection.iterator();
while (iter.hasNext()) {
String url = (String) iter.next();
importedUrls.add(url);
}
getButton(IDialogConstants.OK_ID).setEnabled(!selection.isEmpty());
}
});
wcListViewer.setLabelProvider(new ILabelProvider() {
public void addListener(ILabelProviderListener listener) {
}
public void dispose() {
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
public Image getImage(Object element) {
return null;
}
public String getText(Object element) {
return element.toString();
}
});
wcListViewer.setSorter(new ViewerSorter());
wcListViewer.setInput(urls);
return composite;
}
@Override
protected void okPressed() {
setReturnCode(OK);
getButton(IDialogConstants.OK_ID).setData("dialog", MDMXSDSchemaEntryDialog.this);//$NON-NLS-1$
// no close let Action Handler handle it
super.okPressed();
}
@Override
protected void cancelPressed() {
setReturnCode(CANCEL);
getButton(IDialogConstants.CANCEL_ID).setData("dialog", MDMXSDSchemaEntryDialog.this);//$NON-NLS-1$
// no close let Action Handler handle it
super.cancelPressed();
}
@Override
protected Control createButtonBar(Composite parent) {
Control control = super.createButtonBar(parent);
getButton(IDialogConstants.OK_ID).setEnabled(false);
return control;
}
public List<String> getMDMDataModelUrls() {
return importedUrls;
}
public void setOKButton(boolean enabled) {
getButton(IDialogConstants.OK_ID).setEnabled(enabled);
}
public void retrieveDataModels(List<String> objs, boolean selectAll) {
urls.addAll(objs);
wcListViewer.refresh();
if (selectAll) {
wcListViewer.getList().selectAll();
importedUrls.addAll(objs);
}
}
}