/**
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* 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.
*
*/
package gov.redhawk.diagram.providers;
import gov.redhawk.diagram.edit.parts.DomainFinderEditPart;
import gov.redhawk.diagram.edit.parts.NamingServiceEditPart;
import gov.redhawk.diagram.part.PartitioningVisualIDRegistry;
import gov.redhawk.diagram.part.PartitioningVisualIDRegistry.MAPPING_ID;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.gmf.runtime.diagram.core.providers.AbstractViewProvider;
import org.eclipse.gmf.runtime.diagram.core.view.factories.ViewFactory;
import org.eclipse.gmf.runtime.notation.View;
/**
* @since 3.0
*
*/
public abstract class PartitioningViewProvider extends AbstractViewProvider {
private final PartitioningVisualIDRegistry visualIdRegistry;
public PartitioningViewProvider(final PartitioningVisualIDRegistry visualIdRegistry) {
this.visualIdRegistry = visualIdRegistry;
}
@Override
protected Class< ? > getDiagramViewClass(final IAdaptable semanticAdapter, final String diagramKind) {
if (this.visualIdRegistry.getModelID().equals(diagramKind)) {
return getPartitioningDiagramFactoryClass();
}
return null;
}
protected abstract Class< ? > getPartitioningDiagramFactoryClass();
@Override
protected Class< ? extends ViewFactory> getNodeViewClass(final IAdaptable semanticAdapter, final View containerView, final String semanticHint) {
if (!this.visualIdRegistry.getModelID().equals(this.visualIdRegistry.getModelID(containerView))) {
return null;
}
final int visualId = this.visualIdRegistry.getVisualID(semanticHint);
switch (this.visualIdRegistry.getVisualID(semanticHint)) {
case DomainFinderEditPart.VISUAL_ID:
case NamingServiceEditPart.VISUAL_ID:
return getPartitioningViewFactoryClass();
default:
final MAPPING_ID mappingId = this.visualIdRegistry.getMappingID(visualId);
if (mappingId != null) {
switch (mappingId) {
case ConnectInterfaceEditPart:
case ComponentPlacementEditPart:
case FindByStubEditPart:
case ComponentSupportedInterfaceStubEditPart:
case ProvidesPortStubEditPart:
case UsesPortStubEditPart:
return getPartitioningViewFactoryClass();
default:
break;
}
}
return null;
}
}
protected abstract Class< ? extends ViewFactory> getPartitioningViewFactoryClass();
@Override
protected Class< ? extends ViewFactory> getEdgeViewClass(final IAdaptable semanticAdapter, final View containerView, final String semanticHint) {
if (!this.visualIdRegistry.getModelID().equals(this.visualIdRegistry.getModelID(containerView))) {
return null;
}
final MAPPING_ID mappingId = this.visualIdRegistry.getMappingID(semanticHint);
if (mappingId != null) {
switch (mappingId) {
case ConnectInterfaceEditPart:
return getPartitioningViewFactoryClass();
default:
}
}
return null;
}
}