package Visual_DVM_2021.Passes;
import Common.Current;
import Common.UI.Menus_2023.PassMenuItem;
import Common.UI.UI;
import ProjectData.Project.db_project_info;
import ProjectData.ProjectView;
import Repository.Component.Sapfor.TransformationPermission;

import javax.swing.*;
public class Transformation extends CurrentProjectPass {
    protected TransformationPermission getPermission() {
        return TransformationPermission.All;
    }
    //todo - возможно сделать все же интерфейс для преобразований. чтобы наконец обобщить сапфоровские и несапфоровские? хз
    @Override
    protected void performPreparation() throws Exception {
        db_project_info.ResetNewVersions();
        target.createEmptyVersion(getVersionLetter(), getVersionDescription());
    }
    protected String getVersionDescription() {
        return getDescription();
    }
    @Override
    public String getIconPath() {
        return "/icons/Transformations/" + code().toString() + ".png";
    }
    protected String getVersionLetter() {
        return "v";
    }
    @Override
    protected boolean hasStats() {
        return true;
    }
    @Override
    protected void FocusResult() {
        UI.getMainWindow().getProjectWindow().FocusVersions();
    }
    @Override
    protected void showFinish() throws Exception {
        super.showFinish();
        Current.set(Current.ProjectView, ProjectView.Files);
        UI.getMainWindow().getProjectWindow().ShowProjectView();
    }
    @Override
    protected void performDone() throws Exception {
        //миграция типов файлов.
        //это несапфоровские дела.тут копируем хедеры сами.
        target.migrateFilesSettings(target.last_version, true,  false);
    }
    @Override
    protected void performFail() throws Exception {
        super.performFail();
        target.undoLastTransformation();
    }
    @Override
    public JMenuItem createMenuItem() {
        if (menuItem == null)
            menuItem = new PassMenuItem(this);
        return menuItem;
    }
}
