/*******************************************************************************
* Copyright (c) 2015 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.batch.ui.editor.internal.action;
import java.util.Collection;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.sapphire.ImageData;
import org.eclipse.sapphire.Value;
import org.eclipse.sapphire.modeling.CapitalizationType;
import org.eclipse.sapphire.services.ContentProposal;
import org.eclipse.sapphire.ui.Presentation;
import org.eclipse.sapphire.ui.SapphirePart;
import org.eclipse.sapphire.ui.forms.PropertyEditorActionHandler;
import org.eclipse.sapphire.ui.forms.swt.FormComponentPresentation;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import org.jboss.tools.batch.ui.editor.internal.services.contentproposal.RefProposalService;
/**
*
* @author Viacheslav Kabanovich
*
*/
public class BrowseRefActionHandler extends PropertyEditorActionHandler {
@Override
protected Object run(Presentation context) {
Value<?> property = (Value<?>)property();
RefProposalService service = property().service(RefProposalService.class);
final SapphirePart part = context.part();
Collection<ContentProposal> valuesList = service.session().proposals();
ContentProposal[] valuesArray = valuesList.toArray(new ContentProposal[valuesList.size()]);
ILabelProvider labelProvider = new ILabelProvider() {
@Override
public void addListener(ILabelProviderListener listener) {
}
@Override
public void dispose() {
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void removeListener(ILabelProviderListener listener) {
}
@Override
public Image getImage(Object element) {
Image image = null;
ImageData imageData = ((ContentProposal)element).image();
if(imageData != null) {
image = part.getSwtResourceCache().image(imageData);
}
return image;
}
@Override
public String getText(Object element) {
return ((ContentProposal)element).content();
}
};
ElementListSelectionDialog dialog = new ElementListSelectionDialog(((FormComponentPresentation)context ).shell(), labelProvider);
dialog.setElements( valuesArray );
dialog.setMultipleSelection( false );
dialog.setHelpAvailable( false );
dialog.setTitle(property.definition().getLabel(false, CapitalizationType.TITLE_STYLE, false));
dialog.setMessage("Select artifact");
dialog.open();
Object[] result = dialog.getResult();
if(result != null && result.length == 1) {
property.write(((ContentProposal)result[0]).content(), true);
}
return null;
}
}