package _VisualDVM.ProjectData.SapforData.Functions.UI.Graph;
import Common.Utils.Utils_;
import Common.Visual.Menus.StyledPopupMenu;
import Common.Visual.Menus.VisualiserMenuItem;
import _VisualDVM.Current;
import _VisualDVM.Global;
import _VisualDVM.Passes.All.SPF_GetGraphFunctionPositions;
import _VisualDVM.Passes.PassCode;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FunctionsGraphMenu extends StyledPopupMenu {
    JMenuItem changeCurrent;
    public FunctionsGraphMenu() {
        changeCurrent = new VisualiserMenuItem("Назначить выбранный узел текущей функцией");
        changeCurrent.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (Global.mainModule.HasSelectedFunction()) {
                    Global.mainModule.set(Current.Function, Global.mainModule.getSelectionFunction());
                    Global.mainModule.getUI().getMainWindow().getProjectWindow().getFunctionsWindow().ShowCurrentFunction();
                    if (SPF_GetGraphFunctionPositions.showByCurrentFunction) {
                        Global.mainModule.getPass(PassCode.SPF_GetGraphFunctionPositions).Do();
                    }
                }
            }
        });
        add(changeCurrent);
    }
    @Override
    public void CheckElementsVisibility() {
        if (Global.mainModule.HasSelectedFunction()) {
            changeCurrent.setText("Назначить процедуру " + Utils_.DQuotes(Global.mainModule.getSelectionFunction().funcName) + " текущей.");
            changeCurrent.setEnabled(true);
        } else {
            changeCurrent.setText("Невозможно назначить текущую процедуру: узел графа не выбран");
            changeCurrent.setEnabled(false);
        }
    }
}
