реализовал сохранение пути при экспорте в эксель, и при сохранении изображения графа функций.
This commit is contained in:
15
.idea/workspace.xml
generated
15
.idea/workspace.xml
generated
@@ -9,9 +9,18 @@
|
|||||||
<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 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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/NormalProperties.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/NormalProperties.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Interface/MainWindow.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Interface/MainWindow.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateGroupFromDirectory.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateGroupFromDirectory.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/MainUI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/MainUI.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateGroupFromFiles.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateGroupFromFiles.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateTestFromDirectory.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateTestFromDirectory.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateTestFromSelectedFiles.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateTestFromSelectedFiles.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateTestsFromFiles.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/CreateTestsFromFiles.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/ExportDVMPackageToExcel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/ExportDVMPackageToExcel.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/OpenCurrentProject.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/OpenCurrentProject.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/ReplaceTestsFromFiles.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/ReplaceTestsFromFiles.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SaveGraph.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SaveGraph.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/MainForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/MainForm.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/MainForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/MainForm.java" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
"Email": "vmk-post@yandex.ru",
|
"Email": "vmk-post@yandex.ru",
|
||||||
"Name": "M",
|
"Name": "M",
|
||||||
"ServerUserPassword": "mprit_2011",
|
"ServerUserPassword": "mprit_2011",
|
||||||
"OfferRegistrationOnStart": false,
|
"OfferRegistrationOnStart": true,
|
||||||
"Workspace": "E:\\Tests",
|
"Workspace": "E:\\Tests",
|
||||||
"ProjectsSearchDirectory": "E:\\BUG",
|
"ProjectsSearchDirectory": "E:\\BUG",
|
||||||
|
"DocumentsDirectory": "C:\\Users\\misha\\Documents\\_testing_system",
|
||||||
"VisualiserPath": "C:\\Users\\misha\\Downloads",
|
"VisualiserPath": "C:\\Users\\misha\\Downloads",
|
||||||
"Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F",
|
"Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F",
|
||||||
"Visualizer_2Path": "C:\\Users\\misha\\Documents",
|
"Visualizer_2Path": "C:\\Users\\misha\\Documents",
|
||||||
|
|||||||
@@ -19,11 +19,13 @@ public class NormalProperties extends VisualDVMProperties {
|
|||||||
public boolean OfferRegistrationOnStart=true;
|
public boolean OfferRegistrationOnStart=true;
|
||||||
//--->
|
//--->
|
||||||
@Expose
|
@Expose
|
||||||
public String Workspace = "";
|
public String Workspace = ""; // место хранения проектов, и загруженных проектов
|
||||||
@Expose
|
@Expose
|
||||||
public String ProjectsSearchDirectory = "";
|
public String ProjectsSearchDirectory = ""; //место последнего открытия проектов
|
||||||
@Expose
|
@Expose
|
||||||
public String VisualiserPath = "";
|
public String DocumentsDirectory = ""; //место сохранения документов,например скрина графа функций или Excel
|
||||||
|
@Expose
|
||||||
|
public String VisualiserPath = ""; //места ручной установки компонентов. ( мб объединить с documents directory?)
|
||||||
@Expose
|
@Expose
|
||||||
public String Sapfor_FPath = "";
|
public String Sapfor_FPath = "";
|
||||||
@Expose
|
@Expose
|
||||||
@@ -115,7 +117,7 @@ public class NormalProperties extends VisualDVMProperties {
|
|||||||
public String getFieldDescription(String fieldName) {
|
public String getFieldDescription(String fieldName) {
|
||||||
switch (fieldName) {
|
switch (fieldName) {
|
||||||
case "OfferRegistrationOnStart":
|
case "OfferRegistrationOnStart":
|
||||||
return "Предложение регистрации при запуске";
|
return "Проверка регистрации";
|
||||||
case "Email":
|
case "Email":
|
||||||
return "Адрес электронной почты";
|
return "Адрес электронной почты";
|
||||||
case "Kernels":
|
case "Kernels":
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class CreateGroupFromDirectory extends PublishTests {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
Utils.RestoreSelectedDirectory(directoryChooser);
|
Utils.ChooserProjectsSearchDirectory(directoryChooser);
|
||||||
File dir = directoryChooser.ShowDialog();
|
File dir = directoryChooser.ShowDialog();
|
||||||
if (dir == null) {
|
if (dir == null) {
|
||||||
Log.Writeln_("Папка не выбрана");
|
Log.Writeln_("Папка не выбрана");
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public class CreateGroupFromFiles extends PublishTests {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
Utils.RestoreSelectedDirectory(fileChooser);
|
Utils.ChooserProjectsSearchDirectory(fileChooser);
|
||||||
Vector<File> files = fileChooser.ShowMultiDialog();
|
Vector<File> files = fileChooser.ShowMultiDialog();
|
||||||
if (files.isEmpty()) {
|
if (files.isEmpty()) {
|
||||||
Log.Writeln_("Не выбрано ни одного файла.");
|
Log.Writeln_("Не выбрано ни одного файла.");
|
||||||
|
|||||||
@@ -3,12 +3,10 @@ import Common.Passes.Pass;
|
|||||||
import Common.Passes.PassException;
|
import Common.Passes.PassException;
|
||||||
import Common.Utils.Utils_;
|
import Common.Utils.Utils_;
|
||||||
import Common.Visual.Windows.Dialog.VDirectoryChooser;
|
import Common.Visual.Windows.Dialog.VDirectoryChooser;
|
||||||
import _VisualDVM.ComponentsServer.Component.Sapfor.Sapfor;
|
|
||||||
import _VisualDVM.Constants;
|
import _VisualDVM.Constants;
|
||||||
import _VisualDVM.Global;
|
import _VisualDVM.Global;
|
||||||
import _VisualDVM.Passes.PassCode;
|
import _VisualDVM.Passes.PassCode;
|
||||||
import _VisualDVM.ProjectData.Files.ProjectFile;
|
import _VisualDVM.ProjectData.Files.ProjectFile;
|
||||||
import _VisualDVM.ProjectData.LanguageName;
|
|
||||||
import _VisualDVM.TestingSystem.Common.Group.Group;
|
import _VisualDVM.TestingSystem.Common.Group.Group;
|
||||||
import _VisualDVM.TestingSystem.Common.Test.Test;
|
import _VisualDVM.TestingSystem.Common.Test.Test;
|
||||||
import _VisualDVM.Utils;
|
import _VisualDVM.Utils;
|
||||||
@@ -44,7 +42,7 @@ public class CreateTestFromDirectory extends Pass<Test> {
|
|||||||
}
|
}
|
||||||
protected boolean selectFiles() {
|
protected boolean selectFiles() {
|
||||||
VDirectoryChooser directoryChooser = new VDirectoryChooser("Выбор домашней папки теста");
|
VDirectoryChooser directoryChooser = new VDirectoryChooser("Выбор домашней папки теста");
|
||||||
Utils.RestoreSelectedDirectory(directoryChooser);
|
Utils.ChooserProjectsSearchDirectory(directoryChooser);
|
||||||
dir = directoryChooser.ShowDialog();
|
dir = directoryChooser.ShowDialog();
|
||||||
if (dir == null) {
|
if (dir == null) {
|
||||||
Log.Writeln_("Папка не выбрана.");
|
Log.Writeln_("Папка не выбрана.");
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public class CreateTestFromSelectedFiles extends CreateTestFromDirectory {
|
|||||||
@Override
|
@Override
|
||||||
protected boolean selectFiles() {
|
protected boolean selectFiles() {
|
||||||
VFileChooser files_chooser = new VFileChooser("Выбор файлов");
|
VFileChooser files_chooser = new VFileChooser("Выбор файлов");
|
||||||
Utils.RestoreSelectedDirectory(files_chooser);
|
Utils.ChooserProjectsSearchDirectory(files_chooser);
|
||||||
Vector<File> res = files_chooser.ShowMultiDialog();
|
Vector<File> res = files_chooser.ShowMultiDialog();
|
||||||
dir = files_chooser.getCurrentDirectory();
|
dir = files_chooser.getCurrentDirectory();
|
||||||
if (res.isEmpty()) {
|
if (res.isEmpty()) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class CreateTestsFromFiles extends PublishTests {
|
|||||||
@Override
|
@Override
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
if (Global.testingServer.db.groups.getUI().canModifyCurrent(Log)) {
|
if (Global.testingServer.db.groups.getUI().canModifyCurrent(Log)) {
|
||||||
Utils.RestoreSelectedDirectory(fileChooser);
|
Utils.ChooserProjectsSearchDirectory(fileChooser);
|
||||||
Vector<File> files = fileChooser.ShowMultiDialog();
|
Vector<File> files = fileChooser.ShowMultiDialog();
|
||||||
if (files.isEmpty()) {
|
if (files.isEmpty()) {
|
||||||
Log.Writeln_("Не выбрано ни одного файла.");
|
Log.Writeln_("Не выбрано ни одного файла.");
|
||||||
|
|||||||
@@ -82,11 +82,13 @@ public class ExportDVMPackageToExcel extends Pass<Vector<DVMPackage>> {
|
|||||||
}
|
}
|
||||||
if (!Log.isEmpty())
|
if (!Log.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
Utils.ChooseDocumentsDirectory(directoryChooser);
|
||||||
dir = directoryChooser.ShowDialog();
|
dir = directoryChooser.ShowDialog();
|
||||||
if (dir == null) {
|
if (dir == null) {
|
||||||
Log.Writeln_("Папка не выбрана.");
|
Log.Writeln_("Папка не выбрана.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Global.mainModule.getPass(PassCode.UpdateProperty).Do("DocumentsDirectory", dir.getAbsolutePath());
|
||||||
res = new File(dir, Utils_.getDateName("packages") + ".xls");
|
res = new File(dir, Utils_.getDateName("packages") + ".xls");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public class OpenCurrentProject extends Pass<db_project_info> {
|
|||||||
dir = null;
|
dir = null;
|
||||||
target = null;
|
target = null;
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
Utils.RestoreSelectedDirectory(directoryChooser);
|
Utils.ChooserProjectsSearchDirectory(directoryChooser);
|
||||||
dir = directoryChooser.ShowDialog();
|
dir = directoryChooser.ShowDialog();
|
||||||
} else {
|
} else {
|
||||||
Object arg = args[0];
|
Object arg = args[0];
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class ReplaceTestsFromFiles extends TestingServerPass<Vector<Test>> {
|
|||||||
return false;
|
return false;
|
||||||
group = Global.testingServer.db.groups.getUI().getCurrent();
|
group = Global.testingServer.db.groups.getUI().getCurrent();
|
||||||
//--->>>
|
//--->>>
|
||||||
Utils.RestoreSelectedDirectory(fileChooser);
|
Utils.ChooserProjectsSearchDirectory(fileChooser);
|
||||||
Vector<File> files = fileChooser.ShowMultiDialog();
|
Vector<File> files = fileChooser.ShowMultiDialog();
|
||||||
//----------------ROLE is-----------------------------------------------
|
//----------------ROLE is-----------------------------------------------
|
||||||
//--
|
//--
|
||||||
|
|||||||
@@ -3,8 +3,11 @@ import Common.Passes.Pass;
|
|||||||
import Common.Passes.PassException;
|
import Common.Passes.PassException;
|
||||||
import Common.Utils.Utils_;
|
import Common.Utils.Utils_;
|
||||||
import Common.Visual.UI;
|
import Common.Visual.UI;
|
||||||
|
import Common.Visual.Windows.Dialog.VDirectoryChooser;
|
||||||
import _VisualDVM.Global;
|
import _VisualDVM.Global;
|
||||||
|
import _VisualDVM.Passes.PassCode;
|
||||||
import _VisualDVM.ProjectData.SapforData.Functions.UI.Graph.FunctionsGraphForm;
|
import _VisualDVM.ProjectData.SapforData.Functions.UI.Graph.FunctionsGraphForm;
|
||||||
|
import _VisualDVM.Utils;
|
||||||
import com.mxgraph.io.mxCodec;
|
import com.mxgraph.io.mxCodec;
|
||||||
import com.mxgraph.util.mxCellRenderer;
|
import com.mxgraph.util.mxCellRenderer;
|
||||||
import com.mxgraph.util.mxXmlUtils;
|
import com.mxgraph.util.mxXmlUtils;
|
||||||
@@ -19,6 +22,7 @@ import java.io.FileOutputStream;
|
|||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
public class SaveGraph extends Pass<File> {
|
public class SaveGraph extends Pass<File> {
|
||||||
|
VDirectoryChooser directoryChooser = new VDirectoryChooser("Выбор папки для сохранения скриншота графа функций");
|
||||||
FunctionsGraphForm graphForm = null;
|
FunctionsGraphForm graphForm = null;
|
||||||
@Override
|
@Override
|
||||||
protected boolean needsAnimation() {
|
protected boolean needsAnimation() {
|
||||||
@@ -35,14 +39,19 @@ public class SaveGraph extends Pass<File> {
|
|||||||
Log.Writeln_("Сначала отобразите граф");
|
Log.Writeln_("Сначала отобразите граф");
|
||||||
if (Global.mainModule.getProject().functionsGraph.isEmpty())
|
if (Global.mainModule.getProject().functionsGraph.isEmpty())
|
||||||
Log.Writeln_("Граф процедур пуст");
|
Log.Writeln_("Граф процедур пуст");
|
||||||
return Log.isEmpty();
|
Utils.ChooseDocumentsDirectory(directoryChooser);
|
||||||
|
File dir = directoryChooser.ShowDialog();
|
||||||
|
if (dir == null) {
|
||||||
|
Log.Writeln_("Папка не выбрана.");
|
||||||
|
}else {
|
||||||
|
Global.mainModule.getPass(PassCode.UpdateProperty).Do("DocumentsDirectory", dir.getAbsolutePath());
|
||||||
|
target = new File(dir, Utils_.getDateName("Graph")+".png");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void body() throws Exception {
|
protected void body() throws Exception {
|
||||||
target = Paths.get(Global.visualiser.getWorkspace().getAbsolutePath(), "Graph.png").toFile();
|
|
||||||
if (target.exists() && !target.delete())
|
|
||||||
throw new PassException("Не удается удалить предыдущий файл " + Utils_.Brackets(target.getAbsolutePath()));
|
|
||||||
//-
|
|
||||||
mxGraph graph = graphForm.getControl().getGraph();
|
mxGraph graph = graphForm.getControl().getGraph();
|
||||||
BufferedImage image = mxCellRenderer.createBufferedImage(graph,
|
BufferedImage image = mxCellRenderer.createBufferedImage(graph,
|
||||||
null, 1, Color.WHITE,
|
null, 1, Color.WHITE,
|
||||||
@@ -62,6 +71,16 @@ public class SaveGraph extends Pass<File> {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void showDone() throws Exception {
|
protected void showDone() throws Exception {
|
||||||
UI.Info("Граф успешно сохранен в файл: " + Utils_.Brackets(target.getAbsolutePath()));
|
if (UI.Question("Изображение графа процедур успешно сохранено\n"
|
||||||
|
+ "в папке " + Utils_.Brackets(target.getParent())+"\n"
|
||||||
|
+ "под именем "+Utils_.Brackets(target.getName())+"\n"
|
||||||
|
+ "Открыть его"
|
||||||
|
)){
|
||||||
|
try {
|
||||||
|
Desktop.getDesktop().open(target);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Utils_.MainLog.PrintException(ex);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public enum PassCode implements PassCode_ {
|
|||||||
SPF_ExpressionSubstitution,
|
SPF_ExpressionSubstitution,
|
||||||
SPF_InsertDvmhRegions,
|
SPF_InsertDvmhRegions,
|
||||||
SPF_StatisticAnalyzer,
|
SPF_StatisticAnalyzer,
|
||||||
//-
|
//- Проводнике
|
||||||
CombineFiles,
|
CombineFiles,
|
||||||
EraseBadSymbols,
|
EraseBadSymbols,
|
||||||
CopyProject,
|
CopyProject,
|
||||||
|
|||||||
@@ -600,11 +600,16 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
public static void RestoreSelectedDirectory(VFileChooser_ directoryChooser) {
|
public static void ChooserProjectsSearchDirectory(VFileChooser_ directoryChooser) {
|
||||||
String last_dir_home = Global.normalProperties.ProjectsSearchDirectory;
|
String last_dir_home = Global.normalProperties.ProjectsSearchDirectory;
|
||||||
if (!last_dir_home.isEmpty())
|
if (!last_dir_home.isEmpty())
|
||||||
directoryChooser.SetCurrentDirectory(last_dir_home);
|
directoryChooser.SetCurrentDirectory(last_dir_home);
|
||||||
}
|
}
|
||||||
|
public static void ChooseDocumentsDirectory(VFileChooser_ directoryChooser) {
|
||||||
|
String last_dir_home = Global.normalProperties.DocumentsDirectory;
|
||||||
|
if (!last_dir_home.isEmpty())
|
||||||
|
directoryChooser.SetCurrentDirectory(last_dir_home);
|
||||||
|
}
|
||||||
public static void ClearProjectData(File project_home) throws Exception {
|
public static void ClearProjectData(File project_home) throws Exception {
|
||||||
Utils.deleteFilesByExtensions(project_home, "dep", "proj");
|
Utils.deleteFilesByExtensions(project_home, "dep", "proj");
|
||||||
File project_data = new File(project_home, Constants.data);
|
File project_data = new File(project_home, Constants.data);
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ public class MainForm extends Form implements MainWindow {
|
|||||||
@Override
|
@Override
|
||||||
public void ShowUndefinedTabs()
|
public void ShowUndefinedTabs()
|
||||||
{
|
{
|
||||||
//ничего не делаем. лишних панелей и так нет.
|
//ничего не делаем. лишних панелей и так нет. экспорт
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void ShowUserTabs() {
|
public void ShowUserTabs() {
|
||||||
|
|||||||
Reference in New Issue
Block a user