/**
*
*/
package de.urszeidler.shr5.ecp.dialogs;
import java.util.Arrays;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.forms.widgets.FormToolkit;
import de.urszeidler.emf.commons.ui.dialogs.SimpleEObjectDialog;
import de.urszeidler.emf.commons.ui.util.EmfFormBuilder;
import de.urszeidler.emf.commons.ui.util.EmfFormBuilder.ReferenceManager;
/**
* @author urs
*/
public class GenericEObjectDialog extends SimpleEObjectDialog {
private EmfFormBuilder emfFormBuilder;
private FormToolkit toolkit;
private List<EStructuralFeature> eAllStructuralFeatures;
private String messagestr;
private ILabelProvider labelprovider;
public GenericEObjectDialog(Shell parentShell, EObject eObject, AdapterFactoryItemDelegator itemDelegator, ILabelProvider labelprovider,
ReferenceManager mananger) {
super(parentShell, eObject);
toolkit = new FormToolkit(Display.getCurrent());
this.labelprovider = labelprovider;
emfFormBuilder = new EmfFormBuilder(toolkit, itemDelegator, labelprovider, null);
emfFormBuilder.setManager(mananger);
eAllStructuralFeatures = eObject.eClass().getEAllStructuralFeatures();
message = labelprovider.getText(eObject.eClass());
}
public GenericEObjectDialog(Shell parentShell, EObject eObject, AdapterFactoryItemDelegator itemDelegator, ILabelProvider labelprovider,
ReferenceManager mananger, EStructuralFeature... refs) {
this(parentShell, eObject, itemDelegator, labelprovider, mananger);
eAllStructuralFeatures = Arrays.asList(refs);
}
/**
* Create the Dialog area
*
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createDialogArea(Composite parent) {
Composite dialogComposite = (Composite)super.createDialogArea(parent);
toolkit.adapt(dialogComposite);
toolkit.paintBordersFor(dialogComposite);
dialogComposite.setLayout(new GridLayout(3, false));
toolkit.createLabel(dialogComposite, messagestr);
toolkit.createLabel(dialogComposite, "");
toolkit.createLabel(dialogComposite, "");
emfFormBuilder.addAllEntries(eAllStructuralFeatures, null);
emfFormBuilder.buildinComposite(ctx, dialogComposite, eObject);
return dialogComposite;
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.dialogs.IconAndMessageDialog#getImage()
*/
@Override
protected Image getImage() {
return labelprovider.getImage(eObject);
}
@Override
public boolean close() {
toolkit.dispose();
emfFormBuilder.dispose();
return super.close();
}
}