@Override protected EObject doRun(CDOTransaction transaction, CDOObject parent, ISelection selection) { ComposedAdapterFactory adapterFactory = CDOEditor.createAdapterFactory(true); try { BasicCommandStack commandStack = new BasicCommandStack(); ResourceSet resourceSet = transaction.getResourceSet(); EditingDomain editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, resourceSet); CreateChildAction delegate = new CreateChildAction(editingDomain, selection, childDescriptor); delegate.run(); if (childDescriptor instanceof CommandParameter) { CommandParameter parameter = (CommandParameter) childDescriptor; Object value = parameter.getValue(); if (value instanceof EObject) { return (EObject) value; } } return null; } finally { adapterFactory.dispose(); } }
/** Default constructor. */ public PageflowStructureViewerLabelProvider() { adapterProvider = new AdapterFactoryLabelProvider(AdapterUtils.getAdapterFactory()); if (adapterProvider.getAdapterFactory() instanceof ComposedAdapterFactory) { ComposedAdapterFactory cFactory = (ComposedAdapterFactory) adapterProvider.getAdapterFactory(); cFactory.insertAdapterFactory(new PageflowCompareItemProviderAdapterFactory()); } }
public void unregisterEditingDomain(AdapterFactoryEditingDomain domain) { AdapterFactory adapterFactory = domain.getAdapterFactory(); if (adapterFactory instanceof ComposedAdapterFactory) { ComposedAdapterFactory composedAdapterFactory = (ComposedAdapterFactory) adapterFactory; composedAdapterFactory.removeListener(notifyChangedListener); } domain.getCommandStack().removeCommandStackListener(commandStackListener); }
/** * This sets up the editing domain for the model editor. * <!-- begin-user-doc * --> * <!-- end-user-doc --> * * @generated */ protected void initializeEditingDomain() { // Create an adapter factory that yields item providers. // adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new RmapItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new CommonItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); // Create the command stack that will notify this editor as commands are // executed. // BasicCommandStack commandStack = new BasicCommandStack(); // Add a listener to set the most recent command's affected objects to // be the selection of the viewer with focus. // commandStack.addCommandStackListener( new CommandStackListener() { @Override public void commandStackChanged(final EventObject event) { getContainer() .getDisplay() .asyncExec( new Runnable() { @Override public void run() { firePropertyChange(IEditorPart.PROP_DIRTY); // Try to select the affected objects. // Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand(); if (mostRecentCommand != null) { setSelectionToViewer(mostRecentCommand.getAffectedObjects()); } if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) { propertySheetPage.refresh(); } } }); } }); // Create the editing domain with a special command stack. // editingDomain = new AdapterFactoryEditingDomain( adapterFactory, commandStack, new HashMap<Resource, Boolean>()); }
protected Image getImage(EObject element) { if (!Platform.isRunning()) { return null; } ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); AdapterFactoryLabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory); return labelProvider.getImage(element); }
/** * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ public void fireNotifyChanged(Notification notification) { changeNotifier.fireNotifyChanged(notification); if (parentAdapterFactory != null) { parentAdapterFactory.fireNotifyChanged(notification); } }
/** @generated */ protected ItemPropertyDescriptor createItemPropertyDescriptor( AdapterFactory adapterFactory, ResourceLocator resourceLocator, String displayName, String description, EStructuralFeature feature, boolean isSettable, boolean multiLine, boolean sortChoices, Object staticImage, String category, String[] filterFlags) { ComposedAdapterFactory composedAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); IItemPropertyDescriptorProvider descriptorProvider = (IItemPropertyDescriptorProvider) composedAdapterFactory.adapt(getTarget(), IItemPropertyDescriptorProvider.class); if (descriptorProvider != null) return descriptorProvider.createItemPropertyDescriptor( adapterFactory, resourceLocator, displayName, description, feature, isSettable, multiLine, sortChoices, staticImage, category, filterFlags); return super.createItemPropertyDescriptor( adapterFactory, resourceLocator, displayName, description, feature, isSettable, multiLine, sortChoices, staticImage, category, filterFlags); }
protected void initializeEditingDomain() { adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new SemanticmanagerItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); BasicCommandStack commandStack = new BasicCommandStack(); // Add a listener to set the most recent command's affected objects to be the selection of the // viewer with focus. // /*commandStack.addCommandStackListener (new CommandStackListener() { public void commandStackChanged(final EventObject event) { viewer.getDisplay().asyncExec (new Runnable() { public void run() { firePropertyChange(IEditorPart.PROP_DIRTY); // Try to select the affected objects. // Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); if (mostRecentCommand != null) { setSelectionToViewer(mostRecentCommand.getAffectedObjects()); } for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext(); ) { PropertySheetPage propertySheetPage = i.next(); if (propertySheetPage.getControl().isDisposed()) { i.remove(); } else { propertySheetPage.refresh(); } } } }); } });*/ editingDomain = new AdapterFactoryEditingDomain( adapterFactory, commandStack, new HashMap<org.eclipse.emf.ecore.resource.Resource, Boolean>()); }
/** * Stops listening to change notifications sent from an adapter factory. * * @param adapterFactory an adapter factory */ public void stopListeningTo(ComposedAdapterFactory adapterFactory) { if (debug) { DebugTrace.print( this, "stopListeningTo", "adapterFactory=" + adapterFactory); // $NON-NLS-1$ //$NON-NLS-2$ } adapterFactory.removeListener(notifyChangedListener); }
/** @generated */ public ImageDescriptor getItemImageDescriptor(Object item) { IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class); if (labelProvider != null) { return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(item)); } return null; }
/** @generated */ public void stop(BundleContext context) throws Exception { adapterFactory.dispose(); adapterFactory = null; linkConstraints = null; initializers = null; instance = null; super.stop(context); }
/** * {@inheritDoc} * * @see org.eclipse.jface.dialogs.Dialog#close() */ @Override public boolean close() { if (objectChangeAdapter != null) { selection.eAdapters().remove(objectChangeAdapter); } if (composedAdapterFactory != null) { composedAdapterFactory.dispose(); } return super.close(); }
static { ComposedAdapterFactory caf = new ComposedAdapterFactory(); caf.addAdapterFactory(new SQLSchemaItemProviderAdapterFactory()); caf.addAdapterFactory(new SQLTablesItemProviderAdapterFactory()); caf.addAdapterFactory(new SQLRoutinesItemProviderAdapterFactory()); caf.addAdapterFactory(new SQLDataTypesItemProviderAdapterFactory()); caf.addAdapterFactory(new SQLConstraintsItemProviderAdapterFactory()); caf.addAdapterFactory(new SQLAccessControlItemProviderAdapterFactory()); caf.addAdapterFactory(new SQLExpressionsItemProviderAdapterFactory()); caf.addAdapterFactory(new SQLStatementsItemProviderAdapterFactory()); sAdapterFactory = new AdapterFactoryContentProvider(caf); }
@Override public void dispose() { currentViewer.removeSelectionChangedListener(propertiesViewUpdater); if (adapterFactory != null) { adapterFactory.dispose(); } editingDomain = null; propertiesViewUpdater = null; selectionViewer = null; currentViewer = null; super.dispose(); }
public void createControl(org.eclipse.swt.widgets.Composite parent) { treeViewer = new west.twouse.language.owl2fs.resource.owl2fs.ui.Owl2fsOutlinePageTreeViewer( parent, org.eclipse.swt.SWT.MULTI | org.eclipse.swt.SWT.H_SCROLL | org.eclipse.swt.SWT.V_SCROLL); Object[] listeners = selectionChangedListeners.getListeners(); for (int i = 0; i < listeners.length; ++i) { org.eclipse.jface.viewers.ISelectionChangedListener l = (org.eclipse.jface.viewers.ISelectionChangedListener) listeners[i]; treeViewer.addSelectionChangedListener(l); } selectionChangedListeners.clear(); org.eclipse.emf.edit.provider.ComposedAdapterFactory adapterFactory = new org.eclipse.emf.edit.provider.ComposedAdapterFactory( org.eclipse.emf.edit.provider.ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory( new org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory( new org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory()); adapterFactory.addAdapterFactory( new org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory()); org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider contentProvider = new org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider(adapterFactory); treeViewer.setAutoExpandLevel(3); treeViewer.setContentProvider(contentProvider); treeViewer.setLabelProvider( new org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider(adapterFactory)); org.eclipse.emf.ecore.resource.ResourceSet resourceSet = editor.getResourceSet(); org.eclipse.emf.common.util.EList<org.eclipse.emf.ecore.resource.Resource> resources = resourceSet.getResources(); treeViewer.setInput(resources.get(0)); if (!resources.isEmpty()) { // Select the root object in the view. treeViewer.setSelection( new org.eclipse.jface.viewers.StructuredSelection(resources.get(0)), true); } }
public void initializeOfferedServicesDomain() { // Create an adapter factory that yields item providers. adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); AdapterFactory factory = (AdapterFactory) new FederationOfficeItemProviderAdapterFactory(); adapterFactory.addAdapterFactory(factory); OfficeTaxonomiesContentProvider offProvider = new OfficeTaxonomiesContentProvider(getViewSite(), true, true, false); offProvider.AddOfficesFromManager(Activator.getDefault().getOfficeManager()); viewer.setContentProvider(offProvider); viewer.expandToLevel(2); }
/** * Registers an editing domain with the managed method library. * * @param domain an editing domain */ public void registerEditingDomain(AdapterFactoryEditingDomain domain) { if (debug) { DebugTrace.print( this, "registerEditingDomain", "domain=" + domain); // $NON-NLS-1$ //$NON-NLS-2$ } // Add a listener to monitor library changes made in the given editing // domain. AdapterFactory adapterFactory = domain.getAdapterFactory(); if (adapterFactory instanceof ComposedAdapterFactory) { ComposedAdapterFactory composedAdapterFactory = (ComposedAdapterFactory) adapterFactory; // remove the listener before adding it to make sure that the same listener is not added more // than one composedAdapterFactory.removeListener(notifyChangedListener); composedAdapterFactory.addListener(notifyChangedListener); } // Add a listener to monitor changes made to the command stack. // This is used to select the most recently affected objects in the // viewer. domain.getCommandStack().removeCommandStackListener(commandStackListener); domain.getCommandStack().addCommandStackListener(commandStackListener); }
/** * * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ public void dispose() { ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); getSite().getPage().removePartListener(partListener); adapterFactory.dispose(); if (getActionBarContributor().getActiveEditor() == this) { getActionBarContributor().setActiveEditor(null); } if (propertySheetPage != null) { propertySheetPage.dispose(); } if (contentOutlinePage != null) { contentOutlinePage.dispose(); } super.dispose(); }
/** * This returns the root adapter factory that contains this factory. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ public ComposeableAdapterFactory getRootAdapterFactory() { return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory(); }
@Override public void createPartControl(Composite parent) { sashForm = new SashForm(parent, SWT.HORIZONTAL); // composite to have control on the xtextEditor control created by super class. final Composite leftComposite = new Composite(sashForm, SWT.NONE); leftComposite.setLayout(new FillLayout()); super.createPartControl(leftComposite); getSourceViewer() .getTextWidget() .addMouseListener( new MouseAdapter() { @Override public void mouseDoubleClick(MouseEvent e) { maximizeControl(leftComposite); } }); document = getDocument(); resourceSet = document.readOnly( new IUnitOfWork<ResourceSet, XtextResource>() { public ResourceSet exec(final XtextResource xtextResource) throws Exception { return xtextResource.getResourceSet(); } }); adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); initializeEditingDomain(); propertiesViewUpdater = createPropertiesViewUpdater(); getSelectionProvider().addSelectionChangedListener(propertiesViewUpdater); if (getSelectionProvider() instanceof IPostSelectionProvider) { ((IPostSelectionProvider) getSelectionProvider()) .addPostSelectionChangedListener(propertiesViewUpdater); } final Tree tree = new Tree(sashForm, SWT.MULTI); selectionViewer = new TreeViewer(tree); setCurrentViewer(selectionViewer); selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); selectionViewer.setLabelProvider( new DecoratingColumLabelProvider( new AdapterFactoryLabelProvider(adapterFactory), new DiagnosticDecorator( editingDomain, selectionViewer, EcoreEditorPlugin.getPlugin().getDialogSettings()))); selectionViewer.setInput(getInputForSelectionViewer(editingDomain)); selectionViewer.setSelection( new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); selectionViewer.addSelectionChangedListener(propertiesViewUpdater); selectionViewer.expandAll(); tree.addMouseListener( new MouseAdapter() { @Override public void mouseDoubleClick(MouseEvent e) { maximizeControl(tree); } }); new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); new ColumnViewerInformationControlToolTipSupport( selectionViewer, new DiagnosticDecorator.EditingDomainLocationListener(editingDomain, selectionViewer)); getSite().setSelectionProvider(this); createContextMenuFor(selectionViewer); ViewerFilter filter = new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { return (!(element instanceof FactoryImpl)); } }; selectionViewer.addFilter(filter); }
public void createControl(Composite parent) { treeViewer = new org.emftext.language.xpath3.resource.xpath3.ui.Xpath3OutlinePageTreeViewer( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); Object[] listeners = selectionChangedListeners.getListeners(); for (int i = 0; i < listeners.length; ++i) { ISelectionChangedListener l = (ISelectionChangedListener) listeners[i]; treeViewer.addSelectionChangedListener(l); } selectionChangedListeners.clear(); ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory()); adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); AdapterFactoryContentProvider contentProvider = new AdapterFactoryContentProvider(adapterFactory) { @Override public void notifyChanged(Notification notification) { if (viewer != null && viewer.getControl() != null && !viewer.getControl().isDisposed()) { viewerRefresh = new ViewerRefresh(viewer) { protected void refresh(IViewerNotification notification) { if (viewer instanceof org.emftext.language.xpath3.resource.xpath3.ui .Xpath3OutlinePageTreeViewer) { org.emftext.language.xpath3.resource.xpath3.ui.Xpath3OutlinePageTreeViewer pageTreeViewer = (org.emftext.language.xpath3.resource.xpath3.ui .Xpath3OutlinePageTreeViewer) viewer; pageTreeViewer.setSuppressNotifications(true); super.refresh(notification); pageTreeViewer.setSuppressNotifications(false); } else { super.refresh(notification); } } }; } super.notifyChanged(notification); } }; treeViewer.setAutoExpandLevel(AUTO_EXPAND_LEVEL); treeViewer.setContentProvider(contentProvider); treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory)); Resource resource = resourceProvider.getResource(); treeViewer.setInput(resource); if (resource != null) { // Select the root object in the view. treeViewer.setSelection(new StructuredSelection(resource), true); } treeViewer.setComparator( new org.emftext.language.xpath3.resource.xpath3.ui.Xpath3OutlinePageTreeViewerComparator()); createContextMenu(); createActions(); }
/** * * * <pre> * The method executes the creation : * - opens a selection dialog to choose a {@link ConnectableElement} reference as a role by the {@link CollaborationUse} type * - created a dependency between the selected role and the {@link ConnectableElement} that will be bind to it * * {@inheritDoc} * </pre> */ @Override protected CommandResult doExecuteWithResult(final IProgressMonitor monitor, final IAdaptable info) throws ExecutionException { if (!canExecute()) { throw new ExecutionException(Messages.RoleBindingCreateCommand_INVALID_ARGS_MSG); } // Retrieve the graphical source of the binding. // This differs from the semantic source of the binding which is a role of the // CollaborationUse type. CollaborationUse graphicalSource = (CollaborationUse) getSource(); // Create and open the selection dialog ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); Shell currentShell = new Shell(Display.getCurrent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( currentShell, new AdapterFactoryLabelProvider(adapterFactory), new CollaborationRoleTreeContentProvider()); try { // Set dialog parameters dialog.setTitle(Messages.RoleBindingRoleSelectionDialog_Title); dialog.setMessage(Messages.RoleBindingRoleSelectionDialog_Message); dialog.setAllowMultiple(false); dialog.setHelpAvailable(false); // The source CollaborationUse is set as input for the selection dialog, // the CollaborationRoleTreeContentProvider provides the roles that can possibly be // selected. dialog.setInput(graphicalSource); dialog.open(); } finally { adapterFactory.dispose(); } // If a ConnectableElement has been selected, complete command execution // using selection as the "newly created" element and make the edited // Collaboration reference it in the CollaborationRoles eReference. if (dialog.getReturnCode() == ElementTreeSelectionDialog.OK) { ConnectableElement roleToBind = (ConnectableElement) dialog.getFirstResult(); // Create a Dependency (the binding) between selected role and a ConnectableElement // (the target) Dependency newBinding = UMLFactory.eINSTANCE.createDependency(); getContainer().getPackagedElements().add(newBinding); newBinding.getClients().add(roleToBind); newBinding.setName("binding_" + roleToBind.getName() + "_" + getTarget().getName()); newBinding.getSuppliers().add(getTarget()); graphicalSource.getRoleBindings().add(newBinding); doConfigure(newBinding, monitor, info); ((CreateElementRequest) getRequest()).setNewElement(newBinding); return CommandResult.newOKCommandResult(newBinding); } // No role selected: abort element creation return CommandResult.newCancelledCommandResult(); }
/** * * * <pre> * The method executes the creation : * - opens a selection dialog to choose {@link InformationItem} or {@link Classifier} reference as a convoyed Classifier * by the {@link InformationFlow} type * - create the InformationFlow between the source and the target * * {@inheritDoc} * </pre> */ @Override protected CommandResult doExecuteWithResult(final IProgressMonitor monitor, final IAdaptable info) throws ExecutionException { // Create and open the selection dialog ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); Shell currentShell = new Shell(Display.getCurrent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); InformationItemElementTreeSelectionDialog dialog = new InformationItemElementTreeSelectionDialog( currentShell, new AdapterFactoryLabelProvider(adapterFactory), new AdapterFactoryContentProvider(adapterFactory)); try { // Set dialog parameters dialog.setTitle(Messages.InformationFlowSelectionDialog_Title); dialog.setMessage(Messages.InformationFlowSelectionDialog_Message); dialog.setAllowMultiple(true); dialog.setHelpAvailable(false); dialog.setInput(getSource().getModel()); dialog.setValidator(new InformationItemValidator()); ArrayList<Classifier> initialSelection = new ArrayList<Classifier>(); // here the dialog.getReturnCode is IDialogConstants.OK_ID while (dialog.open() != IDialogConstants.CANCEL_ID) { /* * If classifiers have been selected, complete command execution and write the selection * in the conveyed:Classifief Association */ if (dialog.getReturnCode() == ElementTreeSelectionDialog.OK) { Object[] conveyedClassified = dialog.getResult(); InformationFlow newInformationFlow = UMLFactory.eINSTANCE.createInformationFlow(); getContainer().getPackagedElements().add(newInformationFlow); newInformationFlow.getInformationSources().add(getSource()); newInformationFlow.getInformationTargets().add(getTarget()); // add the classifier in the list of conveyed Classifier for (int i = 0; i < conveyedClassified.length; i++) { newInformationFlow.getConveyeds().add((Classifier) conveyedClassified[i]); } ElementInitializers.getInstance().init_InformationFlow_4021(newInformationFlow); ((CreateElementRequest) getRequest()).setNewElement(newInformationFlow); return CommandResult.newOKCommandResult(newInformationFlow); } else if (dialog.getReturnCode() == InformationItemElementTreeSelectionDialog.newInformationItemButton_ID) { // create a new InformationItem initialSelection.add((Classifier) createNewInformationItem()); dialog.setInitialElementSelections(initialSelection); } } // end of while() } finally { adapterFactory.dispose(); } // No Classifier selected: abort element creation return CommandResult.newCancelledCommandResult(); }
private IStructuredSelection buildStructuredSelection(final EObject object) { if (object == null) { return new StructuredSelection(); } final IItemPropertySource source = (IItemPropertySource) adapterFactory.adapt(object, IItemPropertySource.class); return new StructuredSelection() { public Object[] toArray() { return new Object[] { new URIBasedPropertySource(object, source, document) { protected IPropertyDescriptor createPropertyDescriptor( EObject object, IItemPropertyDescriptor itemPropertyDescriptor) { return new EFactoryPropertyDescriptor(object, itemPropertyDescriptor) { @Override protected CellEditor createEDataTypeCellEditor( final EDataType eDataType, Composite composite) { return new EFactoryEDataTypeCellEditor(eDataType, composite); } @Override public CellEditor createPropertyEditor(final Composite composite) { CellEditor editor = null; final Object feature = itemPropertyDescriptor.getFeature(this.object); if (feature instanceof EReference) { final EReference eReference = (EReference) feature; editor = new ExtendedDialogCellEditor(composite, getEditLabelProvider()) { @Override protected Object openDialogBox(Control cellEditorWindow) { EObject result = null; XtextEObjectSearchDialog2 dlg = new XtextEObjectSearchDialog2( composite.getShell(), eObjectSearch, globalDescriptionLabelProvider); eReference.getClass(); dlg.setInitialTypePattern( eReference.getEReferenceType().getName(), false); dlg.open(); Object[] dlgResult = dlg.getResult(); if (dlgResult != null && dlgResult.length == 1) { result = ((IEObjectDescription) dlgResult[0]).getEObjectOrProxy(); } // This is probably more of a work-around than a fix of the actual root // cause :( but it works if (result != null && result.eIsProxy()) result = EcoreUtil.resolve(result, eReference.eResource()); return result; } }; } else { // return the default cell editor editor = super.createPropertyEditor(composite); } return editor; } }; } } }; } }; }