/*****************************************************************************
 * Copyright (c) 2013, 2017 CEA LIST.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *   CEA LIST - Initial API and implementation
 *****************************************************************************/
package org.eclipse.papyrus.cdo.internal.ui.decorators;

import org.eclipse.emf.cdo.dawn.appearance.DawnElementStylizer;
import org.eclipse.emf.cdo.dawn.appearance.IDawnElementStylizerFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.ConnectionEditPart;
import org.eclipse.gef.EditPart;
import org.eclipse.papyrus.cdo.internal.core.CDOUtils;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.infra.gmfdiag.common.editpart.IPapyrusEditPart;

/**
 * This is the PapyrusElementStylizerFactory type. Enjoy.
 */
public class PapyrusElementStylizerFactory
		implements IDawnElementStylizerFactory {

	public PapyrusElementStylizerFactory() {
		super();
	}

	@Override
	public DawnElementStylizer getElementStylizer(Object object) {
		DawnElementStylizer result = null;

		if (isPapyrusEditPart(object)) {
			if (object instanceof ConnectionEditPart) {
				result = new PapyrusConnectionEditPartStylizer();
			} else {
				result = new PapyrusNodeEditPartStylizer();
			}
		} else if (object instanceof EObject) {
			result = new PapyrusElementStylizer();
		}

		return result;
	}

	protected boolean isPapyrusEditPart(Object object) {
		boolean result = object instanceof IPapyrusEditPart;

		if (!result && (object instanceof EditPart)) {
			EditPart editPart = ((EditPart) object).getRoot().getContents();
			Object model = editPart.getModel();

			if (model instanceof EObject) {
				result = CDOUtils.getResourceSet((EObject) model) instanceof ModelSet;
			}
		}

		return result;
	}
}
