/*
* 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.transformation.ui.actions;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.viewers.ISelection;
import org.teiid.designer.core.metamodel.aspect.MetamodelAspect;
import org.teiid.designer.core.metamodel.aspect.uml.UmlClassifier;
import org.teiid.designer.diagram.ui.DiagramUiPlugin;
import org.teiid.designer.ui.actions.IModelObjectActionContributor;
import org.teiid.designer.ui.common.eventsupport.SelectionUtilities;
import org.teiid.designer.ui.viewsupport.ModelObjectUtilities;
/**
* TransformationDiagramPermanentActionContributor
*
* @since 8.0
*/
public class TransformationDiagramPermanentActionContributor implements IModelObjectActionContributor {
///////////////////////////////////////////////////////////////////////////////////////////////
// FIELDS
///////////////////////////////////////////////////////////////////////////////////////////////
private TransformationAction showDiagramAction;
private TransformationAction generateReportAction;
///////////////////////////////////////////////////////////////////////////////////////////////
// CONSTRUCTORS
///////////////////////////////////////////////////////////////////////////////////////////////
public TransformationDiagramPermanentActionContributor() {
initActions();
}
///////////////////////////////////////////////////////////////////////////////////////////////
// METHODS
///////////////////////////////////////////////////////////////////////////////////////////////
/* (non-Javadoc)
* @See org.teiid.designer.ui.actions.IModelObjectActionContributor#contributeToContextMenu(org.eclipse.jface.action.IMenuManager, org.eclipse.jface.viewers.ISelection)
*/
@Override
public void contributeToContextMenu(IMenuManager theMenuMgr, ISelection theSelection) {
// Need to check the selection first.
}
/**
*
* @see org.teiid.designer.ui.actions.IModelObjectActionContributor#getAdditionalModelingActions(org.eclipse.jface.viewers.ISelection)
* @since 5.0
*/
@Override
public List<IAction> getAdditionalModelingActions(ISelection theSelection) {
List addedActions = new ArrayList();
// Need to check the selection first.
if( SelectionUtilities.isSingleSelection(theSelection) ) {
EObject selectedObject = SelectionUtilities.getSelectedEObject(theSelection);
if( selectedObject != null ) {
if( isClassifier(selectedObject) ) {
if( showDiagramAction.isEnabled() ) {
addedActions.add(showDiagramAction);
}
if( generateReportAction.isEnabled() ) {
addedActions.add(generateReportAction);
}
}
}
}
return addedActions;
}
/**
* Construct and register actions.
*/
private void initActions() {
showDiagramAction = new ShowDependencyDiagramAction();
DiagramUiPlugin.registerDiagramActionForSelection(showDiagramAction);
generateReportAction = new GenerateDependencyReportAction();
DiagramUiPlugin.registerDiagramActionForSelection(generateReportAction);
}
private boolean isClassifier(EObject eObject) {
MetamodelAspect aspect = ModelObjectUtilities.getUmlAspect(eObject);
if( aspect instanceof UmlClassifier )
return true;
return false;
}
}