2023-11-19 02:12:44 +03:00
|
|
|
package Visual_DVM_2021.Passes.All;
|
2024-10-09 23:37:58 +03:00
|
|
|
import Common.Current_;
|
2024-10-09 22:01:19 +03:00
|
|
|
import _VisualDVM.Current;
|
2024-10-13 22:08:13 +03:00
|
|
|
import _VisualDVM.Global;
|
2024-10-09 22:01:19 +03:00
|
|
|
import _VisualDVM.Visual.UI;
|
2024-10-08 22:33:49 +03:00
|
|
|
import Common.Visual.Windows.Dialog.DBObjectDialog;
|
2024-10-09 22:21:57 +03:00
|
|
|
import _VisualDVM.ProjectData.SapforData.Arrays.Distribution.Dimension;
|
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Arrays.ProjectArray;
|
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Regions.ParallelRegion;
|
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Regions.UI.ArrayAlignmentBar;
|
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Regions.UI.ParallelRegionFields;
|
2024-10-09 23:37:58 +03:00
|
|
|
import Visual_DVM_2021.Passes.PassCode;
|
2023-11-19 02:12:44 +03:00
|
|
|
import Visual_DVM_2021.Passes.SapforModification;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
import java.awt.*;
|
|
|
|
|
import java.util.Vector;
|
|
|
|
|
public class SPF_ModifyArrayDistribution extends SapforModification {
|
|
|
|
|
ParallelRegion region;
|
|
|
|
|
@Override
|
|
|
|
|
public boolean needsConfirmations() {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected boolean canStart(Object... args) throws Exception {
|
|
|
|
|
region = null;
|
2024-10-13 22:08:13 +03:00
|
|
|
if (Global.mainModule.Check(Log, Current.ParallelRegion) && super.canStart(args) && passes.get(PassCode.SPF_GetArrayLinks).Do()) {
|
|
|
|
|
region = Global.mainModule.getParallelRegion();
|
2023-09-17 22:13:42 +03:00
|
|
|
DBObjectDialog dialog = new DBObjectDialog<ParallelRegion, ParallelRegionFields>(ParallelRegionFields.class) {
|
|
|
|
|
@Override
|
|
|
|
|
public int getDefaultHeight() {
|
|
|
|
|
return 250;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void fillFields() {
|
|
|
|
|
Vector<ArrayAlignmentBar> bars = new Vector<>();
|
|
|
|
|
for (ProjectArray array : Result.arrays.values()) {
|
|
|
|
|
if (array.canBeDistributed() && array.align_template != null) {
|
|
|
|
|
array.bar = null;
|
|
|
|
|
ArrayAlignmentBar bar = new ArrayAlignmentBar(array);
|
|
|
|
|
bars.add(bar);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
JPanel panel = fields.Content;
|
|
|
|
|
panel.setLayout(new GridLayout(bars.size(), 1, 5, 12));
|
|
|
|
|
for (ArrayAlignmentBar bar : bars)
|
|
|
|
|
panel.add(bar);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void ProcessResult() {
|
|
|
|
|
for (ProjectArray array : Result.arrays.values()) {
|
|
|
|
|
if (array.bar != null) {
|
|
|
|
|
array.bar.apply_changes();
|
|
|
|
|
//заполнение новых коеффициентов.
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
if (!dialog.ShowDialog(region.toString(), region))
|
|
|
|
|
return false;
|
|
|
|
|
boolean needsChange = false;
|
|
|
|
|
for (ProjectArray array : region.arrays.values()) {
|
|
|
|
|
if (array.canBeDistributed() && array.ac_need_change()) {
|
|
|
|
|
needsChange = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (needsChange) {
|
|
|
|
|
addOpt1 = region.regionId.toString();
|
|
|
|
|
Vector<String> coeffs = new Vector<>();
|
|
|
|
|
for (ProjectArray array : region.arrays.values()) {
|
|
|
|
|
if (array.ac_new.size() > 0) {
|
|
|
|
|
coeffs.add(String.valueOf(array.address));
|
|
|
|
|
for (int dim : array.ac_new.keySet()) {
|
|
|
|
|
Dimension dimension = array.ac_new.get(dim);
|
|
|
|
|
coeffs.add(String.valueOf(dimension.getS()));
|
|
|
|
|
coeffs.add(String.valueOf(dimension.K));
|
|
|
|
|
coeffs.add(String.valueOf(dimension.B));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
coeffs.insertElementAt(String.valueOf(coeffs.size() + 1), 0);
|
|
|
|
|
addOpt2 = String.join("|", coeffs);
|
2024-07-22 00:57:05 +03:00
|
|
|
addOpt2 = String.join("|", coeffs);
|
2023-09-17 22:13:42 +03:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
Log.Writeln("Коефициенты выравнивания актуальны");
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected void performDone() throws Exception {
|
|
|
|
|
super.performDone();
|
2024-10-09 23:37:58 +03:00
|
|
|
passes.get(PassCode.SPF_GetArrayDistribution).Do();
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
//распаковать журнал
|
|
|
|
|
@Override
|
|
|
|
|
protected void performFinish() throws Exception {
|
|
|
|
|
target.updateLog(sapfor.getOutput());
|
|
|
|
|
}
|
|
|
|
|
//показать журнал.
|
|
|
|
|
@Override
|
|
|
|
|
protected void showFinish() throws Exception {
|
|
|
|
|
UI.getMainWindow().getProjectWindow().ShowProjectSapforLog();
|
|
|
|
|
}
|
|
|
|
|
}
|