/*
* 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.diagram.ui;
import org.eclipse.core.resources.IResource;
import org.eclipse.emf.ecore.EObject;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.diagram.ui.editor.DiagramController;
import org.teiid.designer.diagram.ui.editor.DiagramEditor;
import org.teiid.designer.diagram.ui.editor.DiagramSelectionHandler;
import org.teiid.designer.diagram.ui.editor.DiagramViewer;
import org.teiid.designer.diagram.ui.editor.IDiagramSelectionHandler;
import org.teiid.designer.diagram.ui.model.DiagramModelNode;
import org.teiid.designer.diagram.ui.notation.uml.model.DefaultClassContentAdapter;
import org.teiid.designer.diagram.ui.notation.uml.model.IClassifierContentAdapter;
import org.teiid.designer.diagram.ui.pakkage.IPackageDiagramProvider;
import org.teiid.designer.diagram.ui.util.DiagramUiUtilities;
import org.teiid.designer.diagram.ui.util.colors.ColorPaletteManager;
import org.teiid.designer.diagram.ui.util.colors.DefaultColorPaletteManager;
import org.teiid.designer.metamodels.diagram.Diagram;
import org.teiid.designer.ui.viewsupport.ModelObjectUtilities;
/**
* @author PForhan
*
* @since 8.0
*/
public abstract class AbstractDiagramType implements IDiagramType {
//
// Class variables:
//
private ColorPaletteManager colorPaletteManager;
//
// Instance variables:
//
private String typeId;
//
// Implementation of IDiagramType methods:
//
@Override
public boolean dependsOnResource(DiagramModelNode root, IResource res) {
// Query all the objects in the diagram to see from whence they come.
if( root != null ) {
boolean result = false;
//start txn
boolean requiredStart = ModelerCore.startTxn(false, false, "Check Resource Dependency", root); //$NON-NLS-1$
boolean succeeded = false;
try {
result = ModelObjectUtilities.didResourceContainAny(res, DiagramUiUtilities.getEObjects(root));
succeeded = true;
} finally {
//if we started the txn, commit it.
if(requiredStart){
if(succeeded) {
ModelerCore.commitTxn();
} else {
ModelerCore.rollbackTxn();
}
}
}
return result;
}
return false;
}
@Override
public IClassifierContentAdapter getClassifierContentAdapter() {
return new DefaultClassContentAdapter();
}
@Override
public ColorPaletteManager getColorPaletteManager() {
if( colorPaletteManager == null )
colorPaletteManager = new DefaultColorPaletteManager();
return colorPaletteManager;
}
@Override
public DiagramController getDiagramController(DiagramEditor editor) {
return null;
}
@Override
public Class<DiagramController> getDiagramControllerClass() {
return null;
}
@Override
public Diagram getDiagramForGoToMarkerEObject(EObject eObject) {
return null;
}
@Override
public Object getDiagramSelectionStandin(Diagram diagram) {
return diagram;
}
@Override
public EObject getInitialSelection(Object object) {
return null;
}
@Override
public IPackageDiagramProvider getPackageDiagramProvider() {
return null;
}
@Override
public EObject getRevealedEObject(Diagram diagram, Object object) {
return null;
}
@Override
public String getType() {
return typeId;
}
@Override
public boolean isDiagramLarge(Diagram diagram) {
return false;
}
@Override
public boolean isDiagramTooLarge(Diagram diagram) {
return false;
}
@Override
public boolean isTransientDiagram(Diagram diagram) {
return false;
}
@Override
public void setDisplayName(String displayName) {
// does nothing. Name set by plugin constants.
}
@Override
public void setType(String diagramType) {
typeId = diagramType;
}
@Override
public IDiagramSelectionHandler getSelectionHandler(DiagramViewer viewer) {
return new DiagramSelectionHandler(viewer);
}
public void setColorPaletteManager(ColorPaletteManager colorPaletteManager) {
this.colorPaletteManager = colorPaletteManager;
}
}