| /* |
| * Copyright (c) 2007, 2009-2015 Eike Stepper (Berlin, Germany) and others. |
| * All rights reserved. This program and the accompanying materials |
| * are 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: |
| * Eike Stepper - initial API and implementation |
| */ |
| package org.eclipse.emf.cdo.edit; |
| |
| import org.eclipse.emf.cdo.CDOElement; |
| import org.eclipse.emf.cdo.CDOLock; |
| import org.eclipse.emf.cdo.CDOObject; |
| import org.eclipse.emf.cdo.CDOState; |
| import org.eclipse.emf.cdo.common.id.CDOID; |
| import org.eclipse.emf.cdo.common.revision.CDORevision; |
| import org.eclipse.emf.cdo.internal.edit.messages.Messages; |
| import org.eclipse.emf.cdo.view.CDOView; |
| |
| import org.eclipse.emf.internal.cdo.object.ObjectProperties; |
| |
| import org.eclipse.net4j.util.properties.Property; |
| |
| import org.eclipse.emf.common.notify.AdapterFactory; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.emf.ecore.InternalEObject; |
| import org.eclipse.emf.edit.provider.IItemLabelProvider; |
| import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; |
| import org.eclipse.emf.edit.provider.ItemProviderAdapter; |
| |
| import java.util.Collection; |
| import java.util.List; |
| |
| /** |
| * Adds CDO-specific properties to {@link EObject objects}, such as {@link CDOObject#cdoID() ID}, |
| * {@link CDORevision#getVersion() version} and {@link CDOObject#cdoState() state}. |
| * |
| * @author Eike Stepper |
| */ |
| public class CDOItemProviderAdapter extends ItemProviderAdapter |
| { |
| public CDOItemProviderAdapter(AdapterFactory adapterFactory) |
| { |
| super(adapterFactory); |
| } |
| |
| @Override |
| @SuppressWarnings("deprecation") |
| public boolean hasChildren(Object object) |
| { |
| Collection<? extends EStructuralFeature> anyChildrenFeatures = getChildrenFeatures(object); |
| if (anyChildrenFeatures.isEmpty()) |
| { |
| anyChildrenFeatures = getChildrenReferences(object); |
| } |
| |
| EObject eObject = (EObject)object; |
| for (EStructuralFeature feature : anyChildrenFeatures) |
| { |
| if (feature.isMany()) |
| { |
| List<?> children = (List<?>)eObject.eGet(feature); |
| if (!children.isEmpty()) |
| { |
| return true; |
| } |
| } |
| else |
| { |
| if (eObject.eIsSet(feature)) |
| { |
| return true; |
| } |
| } |
| } |
| |
| return false; |
| } |
| |
| /** |
| * @ADDED |
| */ |
| @Override |
| public Object getParent(Object object) |
| { |
| return CDOElement.getParentOf((EObject)object); |
| } |
| |
| /** |
| * @since 2.0 |
| */ |
| @Override |
| public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) |
| { |
| if (itemPropertyDescriptors == null) |
| { |
| super.getPropertyDescriptors(object); |
| |
| if (object instanceof EObject) |
| { |
| EObject eObject = (EObject)object; |
| for (Property<EObject> property : ObjectProperties.INSTANCE.getProperties()) |
| { |
| if (property.getLabel() != null) |
| { |
| addCDOPropertyDescriptor(eObject, property); |
| } |
| } |
| } |
| } |
| |
| return itemPropertyDescriptors; |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| protected void addCDOPropertyDescriptor(EObject object, Property<EObject> property) |
| { |
| itemPropertyDescriptors.add(new CDOPropertyDescriptor(property)); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addIDDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addVersionDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addStateDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addViewDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addContainerDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addDirectResourceDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addReadLockedDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addWriteLockedDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 4.3 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addWriteOptionDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addAdaptersDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addChangeSubscriptionPoliciesDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| protected void addURIDescriptor(Object object) |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * Base abstract to add CDO debug information to PropertiesView. Users wanting to add new information to the |
| * Properties view can subclass this class instead of directly implementing {@link IItemPropertyDescriptor}. |
| * |
| * @since 2.0 |
| * @author Victor Roldan Betancort |
| */ |
| public static class CDOPropertyDescriptor implements IItemPropertyDescriptor, IItemLabelProvider |
| { |
| /** |
| * The filter id for expert properties |
| */ |
| public static final String[] FILTER_ID_EXPERT = { "org.eclipse.ui.views.properties.expert" }; //$NON-NLS-1$ |
| |
| /** |
| * PropertiesView category for CDO |
| */ |
| public static final String CDO_CATEGORY = Messages.getString("CDOItemProviderAdapter.0"); //$NON-NLS-1$ |
| |
| private final Property<EObject> property; |
| |
| /** |
| * @deprecated as of 4.4. use {@link #CDOPropertyDescriptor(Property)}. |
| */ |
| @Deprecated |
| public CDOPropertyDescriptor() |
| { |
| throw new UnsupportedOperationException(); |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public CDOPropertyDescriptor(Property<EObject> property) |
| { |
| this.property = property; |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public final Property<EObject> getProperty() |
| { |
| return property; |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public String getId(Object object) |
| { |
| return "___CDO___" + property.getName(); |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public Object getFeature(Object object) |
| { |
| return getId(object); |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public String getDisplayName(Object object) |
| { |
| return property.getLabel(); |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public String getDescription(Object object) |
| { |
| return property.getDescription(); |
| } |
| |
| public boolean isPropertySet(Object object) |
| { |
| return true; |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public Object getPropertyValue(Object object) |
| { |
| return property.getValue((EObject)object); |
| } |
| |
| public void setPropertyValue(Object object, Object value) |
| { |
| // Do nothing. |
| } |
| |
| public void resetPropertyValue(Object object) |
| { |
| // Do nothing. |
| } |
| |
| public boolean canSetProperty(Object object) |
| { |
| return false; |
| } |
| |
| public String getCategory(Object object) |
| { |
| return CDO_CATEGORY; |
| } |
| |
| public Collection<?> getChoiceOfValues(Object object) |
| { |
| return null; |
| } |
| |
| public Object getHelpContextIds(Object object) |
| { |
| return null; |
| } |
| |
| public boolean isCompatibleWith(Object object, Object anotherObject, |
| IItemPropertyDescriptor anotherPropertyDescriptor) |
| { |
| return false; |
| } |
| |
| public boolean isMany(Object object) |
| { |
| return false; |
| } |
| |
| public boolean isMultiLine(Object object) |
| { |
| return false; |
| } |
| |
| public boolean isSortChoices(Object object) |
| { |
| return false; |
| } |
| |
| public String[] getFilterFlags(Object object) |
| { |
| return FILTER_ID_EXPERT; |
| } |
| |
| public IItemLabelProvider getLabelProvider(Object object) |
| { |
| return this; |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public Object getImage(Object object) |
| { |
| return null; |
| } |
| |
| /** |
| * @since 4.4 |
| */ |
| public String getText(Object object) |
| { |
| return object.toString(); |
| } |
| |
| /** |
| * A default implementation of {@link IItemLabelProvider}. |
| * |
| * @author Eike Stepper |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class DefaultLabelProvider implements IItemLabelProvider |
| { |
| public DefaultLabelProvider() |
| { |
| } |
| |
| public Object getImage(Object object) |
| { |
| return null; |
| } |
| |
| public String getText(Object object) |
| { |
| return object.toString(); |
| } |
| } |
| } |
| |
| /** |
| * Adds the {@link CDOID} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class IDDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the version of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class VersionDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the {@link CDOState state} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class StateDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the associate {@link CDOView view} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class ViewDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the {@link EObject#eContainer() eContainer} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class ContainerDescriptor extends CDOPropertyDescriptor |
| { |
| public ContainerDescriptor(AdapterFactory adapterFactory) |
| { |
| } |
| } |
| |
| /** |
| * Adds the {@link InternalEObject#eDirectResource() direct resource} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class DirectResourceDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the {@link CDOLock read lock} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class ReadLockedDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the {@link CDOLock write lock} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class WriteLockedDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the {@link CDOLock write option} of a {@link CDOObject} to the Properties view. |
| * |
| * @author Eike Stepper |
| * @since 4.3 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class WriteOptionDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the {@link EObject#eAdapters() eAdapters} list of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class AdaptersDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the change subscription policies list of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class ChangeSubscriptionPoliciesDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| |
| /** |
| * Adds the URI of a {@link CDOObject} to the Properties view. |
| * |
| * @author Victor Roldan Betancort |
| * @since 2.0 |
| * @deprecated as of 4.4 not used any more. |
| */ |
| @Deprecated |
| public static class URIDescriptor extends CDOPropertyDescriptor |
| { |
| } |
| } |