package era.foss.objecteditor.specobject;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.action.Action;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import era.foss.erf.SpecHierarchy;
import era.foss.erf.SpecObject;
import era.foss.objecteditor.ErfObjectsEditorPlugin;
/**
* Action for adding a {@link SpecObject}
*
*/
public class AddSpecObjectAction extends Action {
private EditingDomain editingDomain;
private SpecObject specObject;
private boolean isBelow;
public AddSpecObjectAction( EditingDomain editingDomain, SpecObject specObject, boolean isBelow ) {
this.editingDomain = editingDomain;
this.specObject = specObject;
this.isBelow = isBelow;
ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
this.setImageDescriptor( sharedImages.getImageDescriptor( ISharedImages.IMG_OBJ_ADD ) );
this.setDisabledImageDescriptor( sharedImages.getImageDescriptor( ISharedImages.IMG_OBJ_ADD ) );
if( isBelow == true ) {
this.setText( ErfObjectsEditorPlugin.INSTANCE.getString( "_UI_AddSpecObjectBelow_label" ) );
} else {
this.setText( ErfObjectsEditorPlugin.INSTANCE.getString( "_UI_AddSpecObject_label" ) );
}
}
@Override
public void run() {
if( specObject != null && specObject.getSpecHierarchy() != null ) {
if( specObject.getSpecHierarchy().getParent() != null || isBelow == true ) {
// set get the parent SpecHierarchy
SpecHierarchy specHierarchy;
if( isBelow == true ) {
specHierarchy = this.specObject.getSpecHierarchy();
} else {
specHierarchy = this.specObject.getSpecHierarchy().getParent();
}
SpecObjectHandler.createNewSpecObject( this.editingDomain,
this.specObject.getCoreContent(),
this.specObject.getType(),
specHierarchy );
} else if( specObject.getSpecHierarchy().getRoot() != null ) {
SpecObjectHandler.createNewSpecObject( this.editingDomain,
this.specObject.getCoreContent(),
this.specObject.getType(),
this.specObject.getSpecHierarchy().getRoot() );
}
}
}
}