no message

This commit is contained in:
2023-12-12 01:01:36 +03:00
parent 953ff522d5
commit f700154394
20 changed files with 295 additions and 19 deletions

22
.idea/workspace.xml generated
View File

@@ -7,13 +7,25 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMPackage/DVMPackageDatabase.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTasks/DVMCompilationTask.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTasks/DVMRunTask.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTasks/DVMTask.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/AddTasksToDVMPackage.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/icons/AddTasks.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/icons/Down.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/MainMenuBar/MainWindow.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/MainMenuBar/MainWindow.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/GlobalData/Compiler/CompilersDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Compiler/CompilersDBTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Global.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Global.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/GlobalData/Machine/MachinesDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Machine/MachinesDBTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/ConfigurationsMenuBar/ConfigurationsMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/ConfigurationsMenuBar/ConfigurationsMenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/GlobalData/User/UsersDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/User/UsersDBTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/DVMPackagesBar/DVMPackagesBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/DVMPackagesBar/DVMPackagesBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPackage/TestingPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPackage/TestingPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMPackage/DVMPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMPackage/DVMPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMPackage/DVMPackageDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMPackage/DVMPackageDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/ServerSapfor/ServerSapforsDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/ServerSapfor/ServerSapforsDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/AddDVMPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/AddDVMPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Interface/TestingWindow.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Interface/TestingWindow.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Interface/TestingWindow.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Interface/TestingWindow.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/MainForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/MainForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />

View File

@@ -26,7 +26,7 @@
"PerformanceAnalyzerPath": "", "PerformanceAnalyzerPath": "",
"ComponentsBackUpsCount": 10, "ComponentsBackUpsCount": 10,
"TestingKernels": 28, "TestingKernels": 28,
"AutoCheckTesting": true, "AutoCheckTesting": false,
"CheckTestingIntervalSeconds": 10, "CheckTestingIntervalSeconds": 10,
"EmailOnTestingProgress": true "EmailOnTestingProgress": true
} }

View File

@@ -115,6 +115,7 @@ public class Global {
Utils.CheckDirectory(StsDirectory = Paths.get(Home, Sts).toFile()); Utils.CheckDirectory(StsDirectory = Paths.get(Home, Sts).toFile());
Utils.CheckDirectory(TestsDirectory = Paths.get(Home, Tests).toFile()); Utils.CheckDirectory(TestsDirectory = Paths.get(Home, Tests).toFile());
Utils.CheckDirectory(PerformanceAnalyzerDirectory = Paths.get(Home, PerformanceAnalyzer).toFile()); Utils.CheckDirectory(PerformanceAnalyzerDirectory = Paths.get(Home, PerformanceAnalyzer).toFile());
Utils.CheckDirectory(PackagesDirectory = Paths.get(Home, Packages).toFile());
Utils.CheckAndCleanDirectory(SapforPackagesDirectory = Paths.get(Home, "SapforPackages").toFile()); Utils.CheckAndCleanDirectory(SapforPackagesDirectory = Paths.get(Home, "SapforPackages").toFile());
} }
public static void CheckServerDirectories() { public static void CheckServerDirectories() {

View File

@@ -5,7 +5,8 @@ public class ConfigurationsMenuBar extends DataMenuBar {
public ConfigurationsMenuBar() { public ConfigurationsMenuBar() {
super("конфигурации"); super("конфигурации");
addPasses( addPasses(
PassCode_2021.StartTests, // PassCode_2021.StartTests,
PassCode_2021.PublishConfiguration, PassCode_2021.PublishConfiguration,
PassCode_2021.EditConfiguration, PassCode_2021.EditConfiguration,
PassCode_2021.DeleteConfiguration PassCode_2021.DeleteConfiguration

View File

@@ -3,7 +3,8 @@ import Common.UI.Menus_2023.DataMenuBar;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
public class DVMPackagesBar extends DataMenuBar { public class DVMPackagesBar extends DataMenuBar {
public DVMPackagesBar() { public DVMPackagesBar() {
super("пакеты задач DVM", PassCode_2021.AddDVMPackage super("пакеты задач DVM", PassCode_2021.AddDVMPackage,
PassCode_2021.AddTasksToDVMPackage
// PassCode_2021.ExportTasksPackageToExcel,PassCode_2021.AbortTaskPackage, PassCode_2021.DeleteTasksPackage // PassCode_2021.ExportTasksPackageToExcel,PassCode_2021.AbortTaskPackage, PassCode_2021.DeleteTasksPackage
); );
} }

View File

@@ -5,9 +5,6 @@ import Common.Database.rDBObject;
import TestingSystem.DVM.TasksPackage.TasksPackageState; import TestingSystem.DVM.TasksPackage.TasksPackageState;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
public class TestingPackage extends rDBObject { public class TestingPackage extends rDBObject {
@Description("PRIMARY KEY, UNIQUE")
public long id = Constants.Nan;
//--
public int tasksCount = 0; //Общее число задач public int tasksCount = 0; //Общее число задач
//-- //--
public int kernels = 1; public int kernels = 1;
@@ -20,16 +17,10 @@ public class TestingPackage extends rDBObject {
public TasksPackageState state = TasksPackageState.Draft; public TasksPackageState state = TasksPackageState.Draft;
//-- //--
@Override @Override
public Object getPK() {
return id;
}
//--
@Override
public void SynchronizeFields(DBObject src) { public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src); super.SynchronizeFields(src);
TestingPackage tasksPackage = (TestingPackage) src; TestingPackage tasksPackage = (TestingPackage) src;
//-- //--
id = tasksPackage.id;
tasksCount = tasksPackage.tasksCount; tasksCount = tasksPackage.tasksCount;
needsEmail = tasksPackage.needsEmail; needsEmail = tasksPackage.needsEmail;
version = tasksPackage.version; version = tasksPackage.version;

View File

@@ -1,6 +1,9 @@
package TestingSystem.DVM.DVMPackage; package TestingSystem.DVM.DVMPackage;
import Common.Database.DBObject; import Common.Database.DBObject;
import Common.Global;
import TestingSystem.Common.TestingPackage.TestingPackage; import TestingSystem.Common.TestingPackage.TestingPackage;
import java.io.File;
public class DVMPackage extends TestingPackage { public class DVMPackage extends TestingPackage {
public String PID = ""; //сишная часть. public String PID = ""; //сишная часть.
//--- //---
@@ -24,4 +27,8 @@ public class DVMPackage extends TestingPackage {
user_workspace = tasksPackage.user_workspace; user_workspace = tasksPackage.user_workspace;
user_password = tasksPackage.user_password; user_password = tasksPackage.user_password;
} }
public File getLocalWorkspace(){
return new File(Global.PackagesDirectory, id);
}
//public File
} }

View File

@@ -10,9 +10,9 @@ import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import static Common.UI.Tables.TableRenderers.*; import static Common.UI.Tables.TableRenderers.*;
public class DVMPackageDBTable extends DBTable<Long, DVMPackage> { public class DVMPackageDBTable extends DBTable<String, DVMPackage> {
public DVMPackageDBTable() { public DVMPackageDBTable() {
super(Long.class, DVMPackage.class); super(String.class, DVMPackage.class);
} }
@Override @Override
public Current CurrentName() { public Current CurrentName() {

View File

@@ -0,0 +1,3 @@
package TestingSystem.DVM.DVMPackage;
public class DVMPackageDatabase {
}

View File

@@ -0,0 +1,26 @@
package TestingSystem.DVM.DVMTasks;
import Common.Database.DBObject;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import TestingSystem.DVM.Configuration.Configuration;
import TestingSystem.DVM.Tasks.TestCompilationTask;
import TestingSystem.DVM.Tasks.TestRunTask;
import com.sun.org.glassfish.gmbal.Description;
import java.util.Vector;
public class DVMCompilationTask extends DVMTask {
public String makefile_text = "";
public String test_home = ""; //место где лежит код теста.
public DVMCompilationTask(Configuration configuration, Group group, Test test, String flags_in) {
super(configuration, group, test, flags_in);
flags = flags_in;
maxtime = configuration.c_maxtime;
}
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
DVMCompilationTask ct = (DVMCompilationTask) src;
makefile_text = ct.makefile_text;
test_home = ct.test_home;
}
}

View File

@@ -0,0 +1,108 @@
package TestingSystem.DVM.DVMTasks;
import Common.Constants;
import Common.Current;
import Common.Database.DBObject;
import Common.Global;
import GlobalData.Tasks.TaskState;
import ProjectData.LanguageName;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import TestingSystem.DVM.Configuration.Configuration;
import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.Tasks.TestTask;
import com.sun.org.glassfish.gmbal.Description;
import java.util.Vector;
public class DVMRunTask extends DVMTask {
//не факт что тут нужно переводить на полный интерфейс. достаточно убрать фильтрацию
public int dvmcompilationtask_id = Constants.Nan;
public String matrix = "";
public String args = "";
public double CleanTime = 0.0;
public int progress = 0;
public LanguageName language = LanguageName.fortran;
public int cube = 1;
public int min_dim = 1;
public int max_dim = 1;
public String environments = "";
public String usr_par = "";
public int compilation_maxtime = 40;
public String compilation_output = "";
public String compilation_errors = "";
public TaskState compilation_state = TaskState.Waiting;
public double compilation_time = 0.0;
public String statistic = "";
public DVMRunTask(Configuration configuration,
Group group, Test test,
String matrix_in, String flags_in,
String environments_in,
String par_in) {
super(configuration, group, test, flags_in);
//--------------------------
//инфа о компиляции.
language = group.language;
compilation_maxtime = configuration.c_maxtime;
compilation_output = "";
compilation_errors = "";
compilation_state = TaskState.Waiting;
//инфа о запуске
cube = configuration.cube;
min_dim = configuration.max_dim_proc_count;
max_dim = configuration.max_dim_proc_count;
maxtime = configuration.r_maxtime;
environments = environments_in;
usr_par = par_in;
args = test.args;
//---------
matrix = matrix_in;
}
public DVMRunTask() {
}
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
DVMRunTask rt = (DVMRunTask) src;
dvmcompilationtask_id = rt.dvmcompilationtask_id;
matrix = rt.matrix;
CleanTime = rt.CleanTime;
progress = rt.progress;
language = rt.language;
cube = rt.cube;
min_dim = rt.min_dim;
max_dim = rt.max_dim;
maxtime = rt.maxtime;
environments = rt.environments;
usr_par = rt.usr_par;
compilation_maxtime = rt.compilation_maxtime;
compilation_output = rt.compilation_output;
compilation_errors = rt.compilation_errors;
compilation_state = rt.compilation_state;
compilation_time = rt.compilation_time;
statistic = rt.statistic;
args = rt.args;
}
public DVMRunTask(TestRunTask src) {
this.SynchronizeFields(src);
}
//-
@Override
public Vector<String> pack(int kernels_in) {
Vector<String> res = new Vector<>();
res.add(String.valueOf(id)); //1
res.add(String.valueOf(maxtime)); //2
res.add(String.valueOf(dvmcompilationtask_id)); //3
res.add(matrix); //4
res.add(environments); //5
res.add(usr_par.replace("\n", "|")); //6
res.add(args); //7
res.add(String.valueOf(kernels_in)); //8
return res;
}
public String getEnvironments() {
return environments.replace("\n", ";");
}
public String getUsrPar() {
return usr_par.replace("\n", ";");
}
}
//--

View File

@@ -0,0 +1,63 @@
package TestingSystem.DVM.DVMTasks;
import Common.Constants;
import Common.Database.DBObject;
import Common.Database.iDBObject;
import GlobalData.Tasks.TaskState;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import TestingSystem.Common.Test.TestType;
import TestingSystem.DVM.Configuration.Configuration;
import com.sun.org.glassfish.gmbal.Description;
import java.util.Date;
import java.util.Vector;
public class DVMTask extends iDBObject {
public int group_id = Constants.Nan;
public String group_description = "";
public int test_id = Constants.Nan;
public String test_description = "";
public String flags = "";
public int kernels = 1;
public TaskState state = TaskState.Inactive;
public int maxtime = 40;
public TestType test_type = TestType.Default;
//результаты-------------------------------
public double Time; //время выполнения.
public String output = "";
public String errors = "";
//------------------------------------------------------
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
DVMTask t = (DVMTask) src;
group_id = t.group_id;
group_description = t.group_description;
test_id = t.test_id;
test_description = t.test_description;
flags = t.flags;
kernels = t.kernels;
state = t.state;
maxtime = t.maxtime;
test_type = t.test_type;
Time = t.Time;
output = t.output;
errors = t.errors;
}
public DVMTask(DVMTask src) {
this.SynchronizeFields(src);
}
public DVMTask() {
}
public DVMTask(Configuration configuration,
Group group, Test test, String flags_in) {
group_id = group.id;
test_id = test.id;
group_description = group.description;
test_description = test.description;
test_type = group.type;
flags = flags_in;
}
public Vector<String> pack(int kernels) {
return null;
}
}

View File

@@ -3,6 +3,7 @@ import Common.Current;
import Common.Database.iDBTable; import Common.Database.iDBTable;
import Common.UI.DataSetControlForm; import Common.UI.DataSetControlForm;
import Common.UI.Tables.TableRenderers; import Common.UI.Tables.TableRenderers;
import Common.UI.UI;
public class ServerSapforsDBTable extends iDBTable<ServerSapfor> { public class ServerSapforsDBTable extends iDBTable<ServerSapfor> {
public ServerSapforsDBTable() { public ServerSapforsDBTable() {
super(ServerSapfor.class); super(ServerSapfor.class);
@@ -41,6 +42,16 @@ public class ServerSapforsDBTable extends iDBTable<ServerSapfor> {
// columns.get(0).setVisible(false); // columns.get(0).setVisible(false);
columns.get(2).setRenderer(TableRenderers.RendererDate); columns.get(2).setRenderer(TableRenderers.RendererDate);
} }
@Override
public void ShowCurrentObject() throws Exception {
super.ShowCurrentObject();
UI.getMainWindow().getTestingWindow().ShowCurrentServerSapfor();
}
@Override
public void ShowNoCurrentObject() throws Exception {
super.ShowNoCurrentObject();
UI.getMainWindow().getTestingWindow().ShowNoServerSapfor();
}
}; };
} }
} }

View File

@@ -1,12 +1,15 @@
package Visual_DVM_2021.Passes.All; package Visual_DVM_2021.Passes.All;
import Common.Constants;
import Common.Current; import Common.Current;
import Common.Database.Database; import Common.Database.Database;
import Common.Global; import Common.Global;
import Common.UI.UI;
import GlobalData.Compiler.CompilerType; import GlobalData.Compiler.CompilerType;
import GlobalData.Machine.MachineType; import GlobalData.Machine.MachineType;
import GlobalData.User.UserState; import GlobalData.User.UserState;
import TestingSystem.DVM.DVMPackage.DVMPackage; import TestingSystem.DVM.DVMPackage.DVMPackage;
import TestingSystem.DVM.TasksPackage.TasksPackage; import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.AddObjectPass; import Visual_DVM_2021.Passes.AddObjectPass;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
@@ -39,8 +42,16 @@ public class AddDVMPackage extends AddObjectPass<DVMPackage> {
} }
if (!Current.getCompiler().versionLoaded) if (!Current.getCompiler().versionLoaded)
passes.get(PassCode_2021.ShowCompilerVersion).Do(Current.getCompiler(), false); passes.get(PassCode_2021.ShowCompilerVersion).Do(Current.getCompiler(), false);
//-
for (DVMPackage dvmPackage: Global.testingServer.db.dvmPackages.Data.values()){
if (dvmPackage.state.equals(TasksPackageState.Draft)){
Log.Writeln_("Может существовать только один пакет, готовящийся к публикации.");
return false;
}
}
//-- //--
target = new DVMPackage(); target = new DVMPackage();
target.genName();
//- //-
target.sender_name=Current.getAccount().name; target.sender_name=Current.getAccount().name;
target.sender_address = Current.getAccount().email; target.sender_address = Current.getAccount().email;

View File

@@ -0,0 +1,28 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Utils.Utils;
import TestingSystem.DVM.DVMPackage.DVMPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.Pass_2021;
public class AddTasksToDVMPackage extends Pass_2021<DVMPackage> {
@Override
public String getIconPath() {
return "/icons/AddTasks.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (Current.Check(Log, Current.DVMPackage)) {
target = Current.getDVMPackage();
if (!target.state.equals(TasksPackageState.Draft)) {
Log.Writeln_("Пакет " + Utils.Brackets(target.id) + " не готовится к публикации!");
return false;
}
return true;
}
return false;
}
}

View File

@@ -310,12 +310,15 @@ public enum PassCode_2021 {
ActualizePackages, ActualizePackages,
//-> //->
AddDVMPackage, AddDVMPackage,
AddTasksToDVMPackage,
//-> //->
TestPass; TestPass;
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case Undefined: case Undefined:
return "?"; return "?";
case AddTasksToDVMPackage:
return "Добавить задачи в пакет тестирования DVM";
case AddDVMPackage: case AddDVMPackage:
return "Добавить пакет тестирования DVM"; return "Добавить пакет тестирования DVM";
case ActualizePackages: case ActualizePackages:

View File

@@ -18,4 +18,6 @@ public interface TestingWindow extends VisualizerForm {
void ShowNoSapforPackageVersion(); void ShowNoSapforPackageVersion();
void FocusSapforTesting(); void FocusSapforTesting();
void ShowCurrentCompiler(); void ShowCurrentCompiler();
void ShowCurrentServerSapfor();
void ShowNoServerSapfor();
} }

View File

@@ -188,4 +188,12 @@ public class TestingForm implements FormWithSplitters, TestingWindow {
"DVM система: " + Current.getCompiler().description: "DVM система: ?"; "DVM система: " + Current.getCompiler().description: "DVM система: ?";
testingTabs.setTitleAt(0, title); testingTabs.setTitleAt(0, title);
} }
@Override
public void ShowCurrentServerSapfor() {
testingTabs.setTitleAt(1, "SAPFOR: " + Current.getServerSapfor().version);
}
@Override
public void ShowNoServerSapfor() {
testingTabs.setTitleAt(1, "SAPFOR: ?");
}
} }

BIN
src/icons/AddTasks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/icons/Down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB