package de.urszeidler.shr5.ecp.dialogs;
import java.util.Arrays;
import java.util.List;
import org.eclipse.emf.databinding.EMFDataBindingContext;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.graphics.Point;
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;
import de.urszeidler.emf.commons.ui.util.EmfFormBuilder;
import de.urszeidler.emf.commons.ui.util.EmfFormBuilder.ReferenceManager;
public class GenericEObjectDialogTitel extends TitleAreaDialog {
private EmfFormBuilder emfFormBuilder;
// private FormToolkit toolkit;
private List<EStructuralFeature> eAllStructuralFeatures;
protected EMFDataBindingContext ctx = new EMFDataBindingContext();
protected EObject eObject;
private String message;
private String titel;
public GenericEObjectDialogTitel(Shell parentShell, EObject eObject, AdapterFactoryItemDelegator itemDelegator, ILabelProvider labelprovider,
ReferenceManager mananger, String titel, String message) {
super(parentShell);
this.eObject = eObject;
emfFormBuilder = new EmfFormBuilder(null, itemDelegator, labelprovider, null);
emfFormBuilder.setManager(mananger);
eAllStructuralFeatures = eObject.eClass().getEAllStructuralFeatures();
this.titel = titel;
this.message = message;
}
public GenericEObjectDialogTitel(Shell parentShell, EObject eObject, AdapterFactoryItemDelegator itemDelegator, ILabelProvider labelprovider,
ReferenceManager mananger, String titel, String message, EStructuralFeature... refs) {
this(parentShell, eObject, itemDelegator, labelprovider, mananger, titel, message);
eAllStructuralFeatures = Arrays.asList(refs);
}
/**
* Create contents of the dialog.
*
* @param parent
*/
@Override
protected Control createDialogArea(Composite parent) {
Composite area = (Composite)super.createDialogArea(parent);
setMessage(message);
setTitle(titel);
Composite container = new Composite(area, SWT.NONE);
container.setLayoutData(new GridData(GridData.FILL_BOTH));
ScrolledComposite scrolledComposite = new ScrolledComposite(container, SWT.H_SCROLL | SWT.V_SCROLL);
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
Composite composite = new Composite(scrolledComposite, SWT.NONE);
composite.setLayout(new GridLayout(3, false));
scrolledComposite.setContent(composite);
emfFormBuilder.addAllEntries(eAllStructuralFeatures, null);
emfFormBuilder.buildinComposite(ctx, composite, eObject);
scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
return area;
}
/**
* Create contents of the button bar.
*
* @param parent
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}
/**
* Return the initial size of the dialog.
*/
@Override
protected Point getInitialSize() {
return new Point(450, 300);
}
}