/******************************************************************************* * Copyright (c) 2008-2011 Chair for Applied Software Engineering, * Technische Universitaet Muenchen. * 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: ******************************************************************************/ package org.eclipse.emf.emfstore.client.ui.views.changes; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.emf.emfstore.server.model.provider.AbstractOperationCustomLabelProvider; import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.CompositeOperation; /** * Default label provider for operations. * * @author emueller * */ public class DefaultOperationLabelProvider extends AbstractOperationCustomLabelProvider { /** * The label to be shown for unknown element. */ protected static final String UNKOWN_ELEMENT = "(Unkown Element)"; /** * The max amount of characters a name may consist of. */ protected static final int MAX_NAME_LENGTH = 30; private AdapterFactoryLabelProvider adapterFactoryLabelProvider; private ComposedAdapterFactory adapterFactory; /** * Constructor. */ public DefaultOperationLabelProvider() { adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); adapterFactoryLabelProvider = new AdapterFactoryLabelProvider(adapterFactory); } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.server.model.provider.AbstractOperationCustomLabelProvider#getDescription(org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation) */ @Override public String getDescription(AbstractOperation operation) { if (operation instanceof CompositeOperation) { CompositeOperation compositeOperation = (CompositeOperation) operation; // artificial composite because of opposite reference, // take description of main operation if (compositeOperation.getMainOperation() != null) { return getDescription(compositeOperation.getMainOperation()); } } return operation.getName(); } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.server.model.provider.AbstractOperationCustomLabelProvider#getImage(org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation) */ @Override public Object getImage(AbstractOperation operation) { return adapterFactoryLabelProvider.getImage(operation); } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.server.model.provider.AbstractOperationCustomLabelProvider#canRender(org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation) */ @Override public int canRender(AbstractOperation operation) { return CAN_RENDER_DEFAULT; } /** * * {@inheritDoc} * * @see org.eclipse.emf.emfstore.server.model.provider.AbstractOperationCustomLabelProvider#getModelElementName(org.eclipse.emf.ecore.EObject) */ @Override protected String getModelElementName(EObject modelElement) { if (modelElement == null) { return UNKOWN_ELEMENT; } // TODO: provide sensible label for given model element return " \"" + trim(adapterFactoryLabelProvider.getText(modelElement)) + "\""; } private String trim(Object object) { String string = object.toString(); String result = string.trim(); if (result.length() == 0) { return "(empty name)"; } if (result.length() > MAX_NAME_LENGTH) { return result.substring(0, MAX_NAME_LENGTH) + "..."; } return result; } public void dispose() { if (adapterFactory != null) { adapterFactory.dispose(); } if (adapterFactoryLabelProvider != null) { adapterFactoryLabelProvider.dispose(); } } }