/*
* 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.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPart;
import org.teiid.designer.diagram.ui.editor.DiagramEditor;
import org.teiid.designer.diagram.ui.editor.DiagramViewer;
import org.teiid.designer.metamodels.diagram.Diagram;
import org.teiid.designer.transformation.ui.PluginConstants;
import org.teiid.designer.transformation.ui.UiPlugin;
import org.teiid.designer.transformation.util.TransformationHelper;
import org.teiid.designer.ui.common.eventsupport.SelectionUtilities;
import org.teiid.designer.ui.editors.ModelEditor;
import org.teiid.designer.ui.viewsupport.ModelObjectEditHelper;
/**
* @author BLaFond
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*
* @since 8.0
*/
public class TransformationObjectEditHelper extends ModelObjectEditHelper {
/* (non-Javadoc)
* @See org.teiid.designer.ui.actions.IModelObjectEditHelper#canDelete(java.lang.Object)
*/
@Override
public boolean canDelete(Object obj) {
// if the obj is a ResultSet then we say NO
if( obj instanceof EObject ) {
if( TransformationHelper.isTransformationObject(obj))
return false;
}
// Defect 23466 - Need to put a hack in here to NOT allow deleting if the focused part is Diagram Editor, the diagram is
// a transformation & the transformation global actions manager says it can or not.
// This is because the SQL Editor global actions may supercede the DiagramEditor's and there is no framework to restore
// these actions at the momement.
// Let's Check out the selection's source. If it's
IWorkbenchPart activePart = UiPlugin.getDefault().getCurrentWorkbenchWindow().getPartService().getActivePart();
if( activePart instanceof ModelEditor ) {
IEditorPart activeSubEditorPart = ((ModelEditor)activePart).getActiveEditor();
if( activeSubEditorPart instanceof DiagramEditor ) {
DiagramViewer viewer = ((DiagramEditor)activeSubEditorPart).getDiagramViewer();
if( viewer.isValidViewer() && viewer.hasFocus() ) {
// Check for T-Diagram
Diagram diagram = viewer.getEditor().getDiagram();
if( diagram.getType().equals(PluginConstants.TRANSFORMATION_DIAGRAM_TYPE_ID) ) {
EObject vTable = diagram.getTarget();
if( vTable != null ) {
EObject transform = TransformationHelper.getTransformationMappingRoot(vTable);
if( transform != null ) {
IStructuredSelection diagramSelection = (IStructuredSelection)viewer.getSelection();
List selectedObjs = SelectionUtilities.getSelectedEObjects(diagramSelection);
if( selectedObjs.contains(obj) ) {
return TransformationGlobalActionsManager.canDelete(transform, selectedObjs);
}
}
}
}
}
}
}
return true;
}
/* (non-Javadoc)
* @See org.teiid.designer.ui.actions.IModelObjectEditHelper#canCut(java.lang.Object)
*/
@Override
public boolean canCut(Object obj) {
if( obj instanceof EObject ) {
if( TransformationHelper.isTransformationObject(obj))
return false;
}
return true;
}
/* (non-Javadoc)
* @See org.teiid.designer.ui.actions.IModelObjectEditHelper#canClone(java.lang.Object)
*/
@Override
public boolean canClone(Object obj) {
if( obj instanceof EObject ) {
if( TransformationHelper.isSqlProcedureResultSet(obj) ||
TransformationHelper.isTransformationObject(obj))
return false;
}
return true;
}
}