2023-11-19 02:12:44 +03:00
|
|
|
package Visual_DVM_2021.UI.Main;
|
2024-10-07 14:22:52 +03:00
|
|
|
import Common.Utils.CommonUtils;
|
2024-10-09 22:01:19 +03:00
|
|
|
import _VisualDVM.Current;
|
|
|
|
|
import _VisualDVM.Utils;
|
2024-10-08 01:30:25 +03:00
|
|
|
import GlobalData.GlobalDatabase;
|
2023-09-17 22:13:42 +03:00
|
|
|
import GlobalData.Settings.SettingName;
|
|
|
|
|
import ProjectData.Files.DBProjectFile;
|
2023-11-02 20:43:45 +03:00
|
|
|
import ProjectData.Files.ProjectFile;
|
2023-09-17 22:13:42 +03:00
|
|
|
import ProjectData.Project.db_project_info;
|
|
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
import java.util.Vector;
|
|
|
|
|
public class VersionsComparisonForm extends ComparisonForm<db_project_info> {
|
|
|
|
|
private final JComboBox<DBProjectFile> cbFile;
|
|
|
|
|
protected DBProjectFile file = null;
|
|
|
|
|
private VersionsComparisonForm getMaster() {
|
|
|
|
|
return (VersionsComparisonForm) master;
|
|
|
|
|
}
|
|
|
|
|
private VersionsComparisonForm getSlave() {
|
|
|
|
|
return (VersionsComparisonForm) slave;
|
|
|
|
|
}
|
|
|
|
|
public VersionsComparisonForm(VersionsComparisonForm slave_in) {
|
|
|
|
|
super(db_project_info.class, slave_in);
|
|
|
|
|
cbFile = new JComboBox<>();
|
|
|
|
|
tools.add(cbFile, 3);
|
2023-11-02 20:43:45 +03:00
|
|
|
file = (cbFile.getSelectedItem() instanceof DBProjectFile) ?
|
|
|
|
|
((DBProjectFile) cbFile.getSelectedItem()) : null;
|
2023-09-17 22:13:42 +03:00
|
|
|
cbFile.addActionListener(e -> {
|
|
|
|
|
file = (cbFile.getSelectedItem() instanceof DBProjectFile) ?
|
|
|
|
|
((DBProjectFile) cbFile.getSelectedItem()) : null;
|
2023-11-02 20:43:45 +03:00
|
|
|
//-->>
|
|
|
|
|
if (isMaster()) {
|
|
|
|
|
if (isReady() && !getSlave().selectSameFile(file))
|
|
|
|
|
DoShowPass(true);
|
|
|
|
|
} else {
|
|
|
|
|
if (isReady()) {
|
|
|
|
|
if (getMaster().isReady()) {
|
2024-10-08 01:30:25 +03:00
|
|
|
boolean ExtensionsOn = ((GlobalDatabase)CommonUtils.db).settings.get(SettingName.ExtensionsOn).toBoolean();
|
2024-10-07 14:22:52 +03:00
|
|
|
String name1 = ExtensionsOn ? getMaster().file.file.getName() : CommonUtils.getFileNameWithoutExtension(getMaster().file.file);
|
|
|
|
|
String name2 = ExtensionsOn ? file.file.getName() : CommonUtils.getFileNameWithoutExtension(file.file);
|
2024-10-08 01:30:25 +03:00
|
|
|
if (((GlobalDatabase)CommonUtils.db).settings.get(SettingName.ComparsionDiffMergeOn).toBoolean()) {
|
2023-09-17 22:13:42 +03:00
|
|
|
if (name1.equalsIgnoreCase(name2))
|
|
|
|
|
master.DoComparePass(true);
|
|
|
|
|
} else
|
|
|
|
|
master.DoShowPass(true);
|
2023-11-02 20:43:45 +03:00
|
|
|
} else {
|
|
|
|
|
master.DoShowPass(true);
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected Current getCurrentObjectName() {
|
|
|
|
|
return Current.Version;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected String getText() {
|
2023-11-02 20:43:45 +03:00
|
|
|
return isReady() ? Utils.ReadAllText(file.file) : "объект не назначен";
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void removeObject() {
|
|
|
|
|
cbFile.removeAllItems();
|
|
|
|
|
file = null;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isReady() {
|
|
|
|
|
return super.isReady() && file != null;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void showObject() {
|
|
|
|
|
lObjectName.setText(object.name);
|
|
|
|
|
lObjectName.setToolTipText(
|
|
|
|
|
object.getVersionTooltip()
|
|
|
|
|
);
|
|
|
|
|
cbFile.removeAllItems();
|
|
|
|
|
Vector<DBProjectFile> files = object.getFilesForComparsion();
|
|
|
|
|
for (DBProjectFile file : files)
|
|
|
|
|
cbFile.addItem(file);
|
|
|
|
|
}
|
2023-11-02 20:43:45 +03:00
|
|
|
public boolean selectSameFile(ProjectFile file_in) {
|
2023-09-17 22:13:42 +03:00
|
|
|
file = null;
|
|
|
|
|
cbFile.setSelectedIndex(-1);
|
|
|
|
|
for (int i = 0; i < cbFile.getItemCount(); ++i) {
|
2023-11-02 20:43:45 +03:00
|
|
|
ProjectFile projectFile = cbFile.getItemAt(i);
|
2024-10-08 01:30:25 +03:00
|
|
|
if (((GlobalDatabase)CommonUtils.db).settings.get(SettingName.ExtensionsOn).toBoolean()) {
|
2023-11-02 00:01:34 +03:00
|
|
|
//если учитываем расширения, ищем полное совпадение
|
2023-11-02 20:43:45 +03:00
|
|
|
if (projectFile.file.getName().equals(file_in.file.getName())) {
|
2023-09-17 22:13:42 +03:00
|
|
|
cbFile.setSelectedIndex(i);
|
2023-11-02 20:43:45 +03:00
|
|
|
return true;
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
} else {
|
2024-10-07 14:22:52 +03:00
|
|
|
if (CommonUtils.getNameWithoutExtension(projectFile.file.getName()).equals(
|
|
|
|
|
CommonUtils.getNameWithoutExtension(file_in.file.getName()))) {
|
2023-09-17 22:13:42 +03:00
|
|
|
cbFile.setSelectedIndex(i);
|
2023-11-02 20:43:45 +03:00
|
|
|
return true;
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-11-02 20:43:45 +03:00
|
|
|
return (cbFile.getSelectedItem() != null) && (cbFile.getSelectedItem() instanceof ProjectFile);
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
public void CheckVersion(db_project_info version_in) {
|
|
|
|
|
if ((object != null) && version_in.Home.equals(object.Home)) {
|
|
|
|
|
RemoveObject();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected boolean fortranWrapsOn() {
|
2024-10-08 01:30:25 +03:00
|
|
|
return ((GlobalDatabase)CommonUtils.db).settings.get(SettingName.FortranWrapsOn).toBoolean();
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
}
|