/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.ui.viewsupport;
import java.util.List;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import org.teiid.designer.core.refactor.OrganizeImportHandler;
import org.teiid.designer.core.workspace.ModelResource;
import org.teiid.designer.ui.UiConstants;
import org.teiid.designer.ui.UiPlugin;
import org.teiid.designer.ui.explorer.ModelExplorerLabelProvider;
/**
* OrganizeImportHandlerDialog
*
* @since 8.0
*/
public class OrganizeImportHandlerDialog implements OrganizeImportHandler {
static final String TITLE = UiConstants.Util.getString("OrganizeImportHandlerDialog.title"); //$NON-NLS-1$
static final String MESSAGE = UiConstants.Util.getString("OrganizeImportHandlerDialog.message"); //$NON-NLS-1$
static final Provider provider = new Provider();
/**
* Construct an instance of OrganizeImportHandlerDialog.
*/
public OrganizeImportHandlerDialog() {
}
/**
* @see org.teiid.designer.core.refactor.OrganizeImportHandler#choose(java.util.List)
*/
@Override
public Object choose( List options ) {
ChoiceRunnable cr = new ChoiceRunnable();
cr.options = options;
Display.getDefault().asyncExec(cr);
return cr.result;
}
/*
* Inner class to run the ElementListSelectionDialog on the Event Dispatch Thread.
* @since 4.2
*/
class ChoiceRunnable implements Runnable {
public Object result;
public List options;
@Override
public void run() {
Shell shell = UiPlugin.getDefault().getCurrentWorkbenchWindow().getShell();
ElementListSelectionDialog dialog = new ElementListSelectionDialog(shell, provider);
dialog.setMessage(MESSAGE);
dialog.setTitle(TITLE);
dialog.setElements(options.toArray());
dialog.setMultipleSelection(false);
int response = dialog.open();
if (response == Window.OK) {
result = dialog.getResult()[0];
}
}
}
}
class Provider implements IStructuredContentProvider, ILabelProvider {
private ILabelProvider labelProvider = new ModelExplorerLabelProvider();
@Override
public void addListener( ILabelProviderListener listener ) {
}
@Override
public void dispose() {
}
@Override
public Object[] getElements( Object inputElement ) {
return ((List)inputElement).toArray();
}
@Override
public Image getImage( Object element ) {
if (element instanceof ModelResource) {
return labelProvider.getImage(((ModelResource)element).getResource());
}
return labelProvider.getImage(element);
}
@Override
public String getText( Object element ) {
if (element instanceof ModelResource) {
return ((ModelResource)element).getResource().getFullPath().makeRelative().toString();
}
return labelProvider.getText(element);
}
@Override
public void inputChanged( Viewer viewer,
Object oldInput,
Object newInput ) {
}
@Override
public boolean isLabelProperty( Object element,
String property ) {
return false;
}
@Override
public void removeListener( ILabelProviderListener listener ) {
}
}