public void performAction()

in modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/RemoveAction.java [125:218]


    public void performAction(ActionEvent e, boolean allowAsking) {

        ProjectController mediator = getProjectController();
        ConfirmRemoveDialog dialog = getConfirmDeleteDialog(allowAsking);
        
        if (mediator.getCurrentObjEntity() != null) {
            if (dialog.shouldDelete("ObjEntity", mediator.getCurrentObjEntity().getName())) {

                application.getUndoManager()
                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentObjEntity()));
                removeObjEntity(mediator.getCurrentDataMap(), mediator.getCurrentObjEntity());
            }
        } else if (mediator.getCurrentDbEntity() != null) {
            if (dialog.shouldDelete("DbEntity", mediator.getCurrentDbEntity().getName())) {

                application.getUndoManager()
                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentDbEntity()));
                removeDbEntity(mediator.getCurrentDataMap(), mediator.getCurrentDbEntity());
            }
        } else if (mediator.getCurrentQuery() != null) {
            if (dialog.shouldDelete("query", mediator.getCurrentQuery().getName())) {

                application.getUndoManager()
                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentQuery()));
                removeQuery(mediator.getCurrentDataMap(), mediator.getCurrentQuery());
            }
        } else if (mediator.getCurrentProcedure() != null) {
            if (dialog.shouldDelete("procedure", mediator.getCurrentProcedure().getName())) {

                application.getUndoManager()
                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentProcedure()));
                removeProcedure(mediator.getCurrentDataMap(), mediator.getCurrentProcedure());
            }
        } else if (mediator.getCurrentEmbeddable() != null) {
            if (dialog.shouldDelete("embeddable", mediator.getCurrentEmbeddable().getClassName())) {

                application.getUndoManager()
                        .addEdit(new RemoveUndoableEdit(mediator.getCurrentDataMap(), mediator.getCurrentEmbeddable()));
                removeEmbeddable(mediator.getCurrentDataMap(), mediator.getCurrentEmbeddable());
            }
        } else if (mediator.getCurrentDataMap() != null) {
            if (dialog.shouldDelete("data map", mediator.getCurrentDataMap().getName())) {

                // In context of Data node just remove from Data Node
                if (mediator.getCurrentDataNode() != null) {
                    application.getUndoManager()
                            .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataNode(),
                                    mediator.getCurrentDataMap()));
                    removeDataMapFromDataNode(mediator.getCurrentDataNode(), mediator.getCurrentDataMap());
                } else {
                    // Not under Data Node, remove completely
                    application.getUndoManager()
                            .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataMap()));
                    removeDataMap(mediator.getCurrentDataMap());
                }
            }
        } else if (mediator.getCurrentDataNode() != null) {
            if (dialog.shouldDelete("data node", mediator.getCurrentDataNode().getName())) {

                application.getUndoManager()
                        .addEdit(new RemoveUndoableEdit(application, mediator.getCurrentDataNode()));
                removeDataNode(mediator.getCurrentDataNode());
            }
        } else if (mediator.getCurrentPaths() != null) { // multiple deletion
            if (dialog.shouldDelete("selected objects")) {

                ConfigurationNode[] paths = mediator.getCurrentPaths();
                ConfigurationNode parentPath = mediator.getCurrentParentPath();

                CompoundEdit compoundEdit = new RemoveCompoundUndoableEdit();
                for (ConfigurationNode path : paths) {
                    compoundEdit.addEdit(removeLastPathComponent(path, parentPath));
                }
                compoundEdit.end();

                application.getUndoManager().addEdit(compoundEdit);
            }
        } else if(mediator.getCurrentCallbackMethods().length > 0) {
            removeMethods(mediator, dialog, getProjectController().getCurrentCallbackMethods());
        } else if(mediator.getCurrentObjRelationships().length > 0) {
      		removeObjRelationships(mediator, dialog, getProjectController().getCurrentObjRelationships());
        } else if(mediator.getCurrentDbRelationships().length > 0) {
      		removeDBRelationships(mediator, dialog, getProjectController().getCurrentDbRelationships());
        } else if(mediator.getCurrentObjAttributes().length > 0) {
      		removeObjAttributes(mediator, dialog, getProjectController().getCurrentObjAttributes());
        } else if(mediator.getCurrentEmbAttributes().length > 0) {
      		removeEmbAttributes(mediator, dialog, getProjectController().getCurrentEmbAttributes());
        } else if(mediator.getCurrentDbAttributes().length > 0) {
        	removeDbAttributes(mediator, dialog, getProjectController().getCurrentDbAttributes());
        } else if(mediator.getCurrentProcedureParameters().length > 0) {
        	removeProcedureParameters(mediator.getCurrentProcedure(), mediator.getCurrentProcedureParameters());
        }

    }