package _VisualDVM.Passes.All;
import Common.Visual.Windows.Dialog.VFileChooser;
import _VisualDVM.Global;
import _VisualDVM.NormalProperties;
import _VisualDVM.Passes.CurrentComponentPass;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
public class InstallComponentFromFolder extends CurrentComponentPass {
    File file;
    @Override
    public String getIconPath() {
        return "/Common/icons/Search.png";
    }
    @Override
    public String getButtonText() {
        return "";
    }
    @Override
    protected boolean canStart(Object... args) throws Exception {
        if (super.canStart(args)) {
            VFileChooser fileChooser = target.getFileChooser();
            String propertyName = target.getComponentType() + "Path";
            String lastDirectory = (String) NormalProperties.class.getField(propertyName).get(Global.normalProperties);
            if (!lastDirectory.isEmpty()) {
                //настройка выставлена не впервые, устанавливаем ее как папку
                fileChooser.SetCurrentDirectory(lastDirectory);
            }
            boolean res = (file = fileChooser.ShowDialog()) != null;
            File newDirectory = fileChooser.getCurrentDirectory();
            NormalProperties.class.getField(propertyName).set(Global.normalProperties, newDirectory.getAbsolutePath());
            Global.normalProperties.Update();
            return res;
        }
        return false;
    }
    @Override
    protected void body() throws Exception {
        Files.copy(file.toPath(), target.getNewFile().toPath(), StandardCopyOption.REPLACE_EXISTING);
        target.Update();
    }
    @Override
    protected void performDone() throws Exception {
        target.InitialVersionCheck();
        if (target.CanBeUpdated())
            target.CheckIfNeedsUpdateOrPublish();
    }
    @Override
    protected void showDone() throws Exception {
        Global.components.refreshUpdatesStatus();
    }
}
