/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.ui.properties; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.views.properties.IPropertyDescriptor; import org.teiid.core.designer.util.CoreStringUtil; import org.teiid.core.designer.util.I18nUtil; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.core.types.DatatypeConstants; import org.teiid.designer.core.workspace.ModelResource; import org.teiid.designer.core.workspace.ModelWorkspaceException; import org.teiid.designer.ui.UiConstants; import org.teiid.designer.ui.viewsupport.ModelUtilities; class ObjectUriPropertyDescriptor implements ITransientPropertyDescriptor, UiConstants { /////////////////////////////////////////////////////////////////////////////////////////////// // CONSTANTS /////////////////////////////////////////////////////////////////////////////////////////////// private static final String PREFIX = I18nUtil.getPropertyPrefix(ObjectUriPropertyDescriptor.class); /////////////////////////////////////////////////////////////////////////////////////////////// // FIELDS /////////////////////////////////////////////////////////////////////////////////////////////// private EObject obj; private ILabelProvider labelProvider; /////////////////////////////////////////////////////////////////////////////////////////////// // METHODS /////////////////////////////////////////////////////////////////////////////////////////////// /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#createPropertyEditor(org.eclipse.swt.widgets.Composite) * @since 4.3 */ @Override public CellEditor createPropertyEditor(Composite theParent) { return null; } /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#getCategory() * @since 4.3 */ @Override public String getCategory() { return Util.getStringOrKey(PREFIX + "category"); //$NON-NLS-1$ } /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#getDescription() * @since 4.3 */ @Override public String getDescription() { return Util.getStringOrKey(PREFIX + "description"); //$NON-NLS-1$ } @Override public String getDisplayName() { return Util.getStringOrKey(PREFIX + "displayName"); //$NON-NLS-1$ } /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#getFilterFlags() * @since 4.3 */ @Override public String[] getFilterFlags() { return null; } /** * @see org.teiid.designer.ui.properties.ITransientPropertyDescriptor#getPropertyValue() * @since 4.3 */ @Override public Object getPropertyValue() { Object result = null; if (this.obj == null) { throw new IllegalStateException(Util.getStringOrKey(PREFIX + "errorMsg.objectNotSet")); //$NON-NLS-1$ } // make sure we can get a model resource ModelResource model = ModelUtilities.getModelResourceForModelObject(this.obj); // global/external resources won't have a ModelResource if (model != null) { try { String namespaceUri = model.getModelAnnotation().getNamespaceUri(); if (!CoreStringUtil.isEmpty(namespaceUri)) { result = new StringBuffer().append(namespaceUri) .append(DatatypeConstants.URI_REFERENCE_DELIMITER) .append(ModelerCore.getObjectIdString(obj)) .toString(); } } catch (ModelWorkspaceException theException) { throw new IllegalStateException(Util.getString(PREFIX + "errorMsg.modelAnnotationProblem", this.obj)); //$NON-NLS-1$ } } return result; } /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#getHelpContextIds() * @since 4.3 */ @Override public Object getHelpContextIds() { return null; } /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#getId() * @since 4.3 */ @Override public Object getId() { return Util.getStringOrKey(PREFIX + "id"); //$NON-NLS-1$ } /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#getLabelProvider() * @since 4.3 */ @Override public ILabelProvider getLabelProvider() { if (labelProvider == null) { labelProvider = new LabelProvider(); } // endif return labelProvider; } /** * @see org.eclipse.ui.views.properties.IPropertyDescriptor#isCompatibleWith(org.eclipse.ui.views.properties.IPropertyDescriptor) * @since 4.3 */ @Override public boolean isCompatibleWith(IPropertyDescriptor theAnotherProperty) { return false; } /** * @see org.teiid.designer.ui.properties.ITransientPropertyDescriptor#setObject(java.lang.Object) * @since 4.3 */ @Override public void setObject(Object theObject) { if ((theObject != null) && supports(theObject)) { this.obj = (EObject)theObject; } else { throw new IllegalArgumentException(Util.getString(PREFIX + "errorMsg.objectNotSupported", this.obj)); //$NON-NLS-1$ } } /** * @see org.teiid.designer.ui.properties.ITransientPropertyDescriptor#supports(java.lang.Object) * @since 4.3 */ @Override public boolean supports(Object theObject) { return (theObject instanceof EObject); } }