71 lines
2.9 KiB
Java
71 lines
2.9 KiB
Java
package _VisualDVM.Passes.All;
|
||
import Common.Utils.Utils_;
|
||
import Common.Visual.UI;
|
||
import Common.Visual.Windows.Dialog.Dialog;
|
||
import _VisualDVM.Global;
|
||
import _VisualDVM.Passes.PassCode;
|
||
import _VisualDVM.Passes.Project.CurrentProjectPass;
|
||
import _VisualDVM.Utils;
|
||
import _VisualDVM.Visual.Windows.CopyProjectFields;
|
||
import org.apache.commons.io.FileUtils;
|
||
|
||
import java.io.File;
|
||
import java.nio.file.Paths;
|
||
public class CopyProject extends CurrentProjectPass {
|
||
protected File dstFile = null;
|
||
protected boolean migrateData = false;
|
||
@Override
|
||
public boolean hasStats() {
|
||
return true;
|
||
}
|
||
@Override
|
||
protected boolean canStart(Object... args) throws Exception {
|
||
if (super.canStart(args)) {
|
||
Dialog<Object, CopyProjectFields> dialog = new Dialog<Object, CopyProjectFields>(CopyProjectFields.class) {
|
||
@Override
|
||
public int getDefaultHeight() {
|
||
return 230;
|
||
}
|
||
@Override
|
||
public void Init(Object... params) {
|
||
fields.tfParent.setText(Global.visualiser.getWorkspace().getAbsolutePath());
|
||
}
|
||
@Override
|
||
public void validateFields() {
|
||
Utils.validateFileShortNewName(fields.tfName.getText(), Log);
|
||
if (!fields.tfParent.getText().isEmpty()) {
|
||
if (Utils_.ContainsCyrillic(fields.tfParent.getText()))
|
||
Log.Writeln_("Путь к целевой папке не может содержать кириллицу!");
|
||
} else Log.Writeln_("Путь к целевой папке не может быть пустым!");
|
||
if (Log.isEmpty()) {
|
||
dstFile = Paths.get(fields.tfParent.getText(), fields.tfName.getText()).toFile();
|
||
if (dstFile.exists())
|
||
Log.Writeln_("Файл " + dstFile.getAbsolutePath() + " уже существует!");
|
||
}
|
||
}
|
||
};
|
||
if (dialog.ShowDialog(getDescription())) {
|
||
migrateData = dialog.fields.MigrateData.isSelected();
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
@Override
|
||
public String getIconPath() {
|
||
return "/icons/Transformations/CopyProject.png";
|
||
}
|
||
@Override
|
||
protected void body() throws Exception {
|
||
FileUtils.forceMkdir(dstFile);
|
||
target.Clone(dstFile, migrateData);
|
||
}
|
||
@Override
|
||
protected void performDone() throws Exception {
|
||
if (UI.Question("копия текущего проекта успешно создана по адресу\n" + dstFile.getAbsolutePath() + "\nОткрыть её")) {
|
||
Global.mainModule.getPass(PassCode.CloseCurrentProject).Do();
|
||
Global.mainModule.getPass(PassCode.OpenCurrentProject).Do(dstFile);
|
||
}
|
||
}
|
||
}
|