| /* |
| * Copyright (c) 2011, 2012, 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: |
| * Martin Fluegge - initial API and implementation |
| */ |
| package org.eclipse.emf.cdo.dawn.gmf.appearance; |
| |
| import org.eclipse.emf.cdo.dawn.gmf.appearance.impl.DawnBasicConnectionEditPartStylizerImpl; |
| import org.eclipse.emf.cdo.dawn.gmf.appearance.impl.DawnBasicGraphicalEditPartStylizerImpl; |
| import org.eclipse.emf.cdo.dawn.gmf.appearance.impl.DawnBasicNodeEditPartStylizerImpl; |
| import org.eclipse.emf.cdo.dawn.gmf.appearance.impl.DawnBasicTextAwareEditPartStylizerImpl; |
| import org.eclipse.emf.cdo.internal.dawn.bundle.OM; |
| |
| import org.eclipse.net4j.util.om.trace.ContextTracer; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IConfigurationElement; |
| import org.eclipse.core.runtime.InvalidRegistryObjectException; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.gef.ConnectionEditPart; |
| import org.eclipse.gef.EditPart; |
| import org.eclipse.gef.NodeEditPart; |
| import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; |
| import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| /** |
| * @author Martin Fluegge |
| * @since 2.0 |
| * @deprecated |
| */ |
| @Deprecated |
| public class DawnEditPartStylizerRegistry |
| { |
| private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, DawnEditPartStylizerRegistry.class); |
| |
| private static final String DAWN_STYLIZER_EXTENSION_POINT_ID = "org.eclipse.emf.cdo.dawn.editpartstylizers"; |
| |
| public static DawnEditPartStylizerRegistry instance = new DawnEditPartStylizerRegistry(); |
| |
| private Map<String, DawnEditPartStylizer> registeredStylizers = new HashMap<String, DawnEditPartStylizer>(); |
| |
| /** |
| * @since 2.0 |
| */ |
| public DawnEditPartStylizer getStylizer(EditPart editPart) |
| { |
| DawnEditPartStylizer stylizer = registeredStylizers.get(editPart.getClass().getCanonicalName()); |
| |
| if (stylizer == null) |
| { |
| stylizer = getStylizerFromExtensionPoint(editPart); |
| } |
| |
| if (stylizer == null) |
| { |
| stylizer = getDefaultStylizer(editPart); |
| } |
| |
| return stylizer; |
| } |
| |
| private DawnEditPartStylizer getDefaultStylizer(EditPart editPart) |
| { |
| DawnEditPartStylizer stylizer = null; |
| if (editPart instanceof ConnectionEditPart) |
| { |
| stylizer = new DawnBasicConnectionEditPartStylizerImpl(); |
| } |
| else if (editPart instanceof NodeEditPart) |
| { |
| stylizer = new DawnBasicNodeEditPartStylizerImpl(); |
| } |
| else if (editPart instanceof DiagramEditPart) |
| { |
| stylizer = new DawnBasicNodeEditPartStylizerImpl(); |
| } |
| else if (editPart instanceof ITextAwareEditPart) |
| { |
| stylizer = new DawnBasicTextAwareEditPartStylizerImpl(); |
| } |
| else |
| { |
| // In the case that there is no match we use a simple border styled stylizer. |
| stylizer = new DawnBasicGraphicalEditPartStylizerImpl(); |
| } |
| |
| return stylizer; |
| } |
| |
| private DawnEditPartStylizer getStylizerFromExtensionPoint(EditPart editPart) |
| { |
| try |
| { |
| IConfigurationElement[] config = Platform.getExtensionRegistry() |
| .getConfigurationElementsFor(DAWN_STYLIZER_EXTENSION_POINT_ID); |
| for (IConfigurationElement e : config) |
| { |
| if (editPart.getClass().getCanonicalName().equals(e.getAttribute("editpart"))) |
| { |
| DawnEditPartStylizer stylizer = (DawnEditPartStylizer)e.createExecutableExtension("stylizer"); |
| registeredStylizers.put(editPart.getClass().getCanonicalName(), stylizer); |
| if (TRACER.isEnabled()) |
| { |
| TRACER.format("Registered DawnEditPartStylizer {0} ", stylizer); //$NON-NLS-1$ |
| } |
| |
| return stylizer; |
| } |
| } |
| } |
| catch (InvalidRegistryObjectException e1) |
| { |
| e1.printStackTrace(); |
| } |
| catch (CoreException e) |
| { |
| e.printStackTrace(); |
| } |
| |
| return null; |
| } |
| } |