adding some files
This commit is contained in:
parent
038c844c37
commit
2cdbfa66e5
@ -293,7 +293,7 @@ public class FormWarPlaneCollection extends Application implements Initializable
|
|||||||
canvasWarPlane = (Canvas) loader.getNamespace().get("canvasWarPlane");
|
canvasWarPlane = (Canvas) loader.getNamespace().get("canvasWarPlane");
|
||||||
comboBox = (ComboBox<String>) loader.getNamespace().get("comboBox");
|
comboBox = (ComboBox<String>) loader.getNamespace().get("comboBox");
|
||||||
comboBox.getItems().addAll("Хранилище");
|
comboBox.getItems().addAll("Хранилище");
|
||||||
Scene scene = new Scene(root, 1292, 765);
|
Scene scene = new Scene(root, 1292, 795);
|
||||||
primaryStage.setTitle("Коллекция истребителей");
|
primaryStage.setTitle("Коллекция истребителей");
|
||||||
primaryStage.setScene(scene);
|
primaryStage.setScene(scene);
|
||||||
primaryStage.show();
|
primaryStage.show();
|
||||||
|
@ -9,8 +9,9 @@ public interface ICollectionGenericObjects<T> {
|
|||||||
/**
|
/**
|
||||||
* Установка максимального количества элементов
|
* Установка максимального количества элементов
|
||||||
*/
|
*/
|
||||||
void setMaxCount(int maxCount);
|
int getMaxCount();
|
||||||
|
|
||||||
|
void setMaxCount(int value);
|
||||||
/**
|
/**
|
||||||
* Добавление объекта в коллекцию
|
* Добавление объекта в коллекцию
|
||||||
*
|
*
|
||||||
@ -43,5 +44,19 @@ public interface ICollectionGenericObjects<T> {
|
|||||||
* @return Объект или null, если объекта с такой позицией нет
|
* @return Объект или null, если объекта с такой позицией нет
|
||||||
*/
|
*/
|
||||||
T get(int position);
|
T get(int position);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение типа коллекции.
|
||||||
|
*
|
||||||
|
* @return Тип коллекции.
|
||||||
|
*/
|
||||||
|
CollectionType getCollectionType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение объектов коллекции по одному.
|
||||||
|
*
|
||||||
|
* @return Поэлементный вывод элементов коллекции.
|
||||||
|
*/
|
||||||
|
Iterable<T> getItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package com.projectairfighter.collectiongenericobjects;
|
package com.projectairfighter.collectiongenericobjects;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
public class ListGenericObjects<T> implements ICollectionGenericObjects<T> {
|
public class ListGenericObjects<T> implements ICollectionGenericObjects<T> {
|
||||||
private final List<T> collection;
|
private final List<T> collection;
|
||||||
@ -12,6 +14,11 @@ public class ListGenericObjects<T> implements ICollectionGenericObjects<T> {
|
|||||||
return collection.size();
|
return collection.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxCount() {
|
||||||
|
return maxCount;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMaxCount(int value) {
|
public void setMaxCount(int value) {
|
||||||
if (value > 0) {
|
if (value > 0) {
|
||||||
@ -32,6 +39,41 @@ public class ListGenericObjects<T> implements ICollectionGenericObjects<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CollectionType getCollectionType() {
|
||||||
|
return CollectionType.List;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение объектов коллекции по одному.
|
||||||
|
*
|
||||||
|
* @return Поэлементный вывод элементов коллекции.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Iterable<T> getItems() {
|
||||||
|
return () -> new Iterator<T>() {
|
||||||
|
private int currentIndex = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return currentIndex < collection.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T next() {
|
||||||
|
if (!hasNext()) {
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
|
return collection.get(currentIndex++);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove() {
|
||||||
|
throw new UnsupportedOperationException("Оператор не поддерживается");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int insert(T obj) {
|
public int insert(T obj) {
|
||||||
if (getCount() == maxCount) {
|
if (getCount() == maxCount) {
|
||||||
|
@ -10,17 +10,28 @@ public class MassiveGenericObjects<T> implements ICollectionGenericObjects<T> {
|
|||||||
return collection.length;
|
return collection.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public int getMaxCount() {
|
||||||
|
return collection.length;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void setMaxCount(int value){
|
public void setMaxCount(int value){
|
||||||
if (value > 0) {
|
if (value < 0) return;
|
||||||
if (collection.length > 0) {
|
|
||||||
collection = Arrays.copyOf(collection, value);
|
// Создание нового массива с указанным размером
|
||||||
} else {
|
T[] newCollection = (T[]) new Object[value];
|
||||||
collection = (T[]) new Object[value];
|
|
||||||
}
|
// Копирование элементов из старого массива в новый
|
||||||
}
|
// Math.min используется, чтобы избежать ArrayIndexOutOfBoundsException
|
||||||
|
System.arraycopy(collection, 0, newCollection, 0, Math.min(collection.length, value));
|
||||||
|
|
||||||
|
// Присваивание нового массива переменной collection
|
||||||
|
collection = newCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public MassiveGenericObjects() {
|
public MassiveGenericObjects() {
|
||||||
collection = (T[]) new Object[0];
|
collection = (T[]) new Object[0];
|
||||||
|
@ -1,18 +1,38 @@
|
|||||||
package com.projectairfighter.collectiongenericobjects;
|
package com.projectairfighter.collectiongenericobjects;
|
||||||
|
|
||||||
|
import com.projectairfighter.drawnings.DrawningWarPlane;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс-хранилище коллекций.
|
* Класс-хранилище коллекций.
|
||||||
*
|
*
|
||||||
* @param <T> Тип элементов коллекций.
|
* @param <T> Тип элементов коллекций.
|
||||||
*/
|
*/
|
||||||
public class StorageCollection<T> {
|
public class StorageCollection<T extends DrawningWarPlane> {
|
||||||
/**
|
/**
|
||||||
* Словарь (хранилище) с коллекциями.
|
* Словарь (хранилище) с коллекциями.
|
||||||
*/
|
*/
|
||||||
private final Map<String, ICollectionGenericObjects<T>> storages;
|
private final Map<String, ICollectionGenericObjects<T>> storages;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ключевое слово, с которого должен начинаться файл
|
||||||
|
*/
|
||||||
|
private final String collectionKey = "CollectionsStorage";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Разделитель для записи ключа и значения элемента словаря
|
||||||
|
*/
|
||||||
|
private final String separatorForKeyValue = "|";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Разделитель для записей коллекции данных в файл
|
||||||
|
*/
|
||||||
|
private final String separatorItems = ";";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращение списка названий коллекций.
|
* Возвращение списка названий коллекций.
|
||||||
*
|
*
|
||||||
@ -86,4 +106,103 @@ public class StorageCollection<T> {
|
|||||||
public T getElement(String name, int index) {
|
public T getElement(String name, int index) {
|
||||||
return this.get(name).get(index);
|
return this.get(name).get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Сохранение информации в файл
|
||||||
|
*/
|
||||||
|
public boolean saveData(String filename) {
|
||||||
|
// Проверяем, не пуста ли коллекция
|
||||||
|
if (storages.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Удаляем файл, если он существует
|
||||||
|
File file = new File(filename);
|
||||||
|
if (file.exists()) {
|
||||||
|
file.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
|
||||||
|
// Записываем ключ коллекции
|
||||||
|
writer.write(collectionKey);
|
||||||
|
writer.newLine();
|
||||||
|
|
||||||
|
// Итерируемся по коллекциям
|
||||||
|
for (Map.Entry<String, ICollectionGenericObjects<T>> entry : storages.entrySet()) {
|
||||||
|
// Пропускаем пустые коллекции
|
||||||
|
if (entry.getValue().getCount() == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(entry.getKey());
|
||||||
|
sb.append(separatorForKeyValue);
|
||||||
|
sb.append(entry.getValue().getCollectionType());
|
||||||
|
sb.append(separatorForKeyValue);
|
||||||
|
sb.append(entry.getValue().getMaxCount());
|
||||||
|
sb.append(separatorForKeyValue);
|
||||||
|
|
||||||
|
// Сохраняем каждый элемент в коллекции
|
||||||
|
for (T item : entry.getValue().getItems()) {
|
||||||
|
if (item == null) continue; // Проверка на null
|
||||||
|
String data = item.getDataForSave();
|
||||||
|
if (data == null || data.isEmpty()) continue;
|
||||||
|
sb.append(data);
|
||||||
|
sb.append(separatorItems);
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.write(sb.toString());
|
||||||
|
writer.newLine();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Загрузка информации из файла
|
||||||
|
*/
|
||||||
|
public boolean loadData(String filename) {
|
||||||
|
if (!new File(filename).exists()) return false;
|
||||||
|
|
||||||
|
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
|
||||||
|
String str = reader.readLine();
|
||||||
|
if (!collectionKey.equals(str)) return false;
|
||||||
|
storages.clear();
|
||||||
|
while ((str = reader.readLine()) != null) {
|
||||||
|
String[] record = str.split(Pattern.quote(separatorForKeyValue));
|
||||||
|
if (record.length != 4) continue;
|
||||||
|
CollectionType collectionType = CollectionType.valueOf(record[1]);
|
||||||
|
ICollectionGenericObjects<T> collection = createCollection(collectionType);
|
||||||
|
if (collection == null) return false;
|
||||||
|
collection.setMaxCount(Integer.parseInt(record[2]));
|
||||||
|
String[] items = record[3].split(Pattern.quote(separatorItems));
|
||||||
|
for (String item : items) {
|
||||||
|
T plane = item.createDrawingPlane(); // Нужна соответствующая реализация
|
||||||
|
if (plane != null && collection.insert(plane) == -1) return false;
|
||||||
|
}
|
||||||
|
storages.put(record[0], collection);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание коллекции по типу
|
||||||
|
*/
|
||||||
|
private ICollectionGenericObjects<T> createCollection(CollectionType collectionType) {
|
||||||
|
switch (collectionType) {
|
||||||
|
case Massive:
|
||||||
|
return new MassiveGenericObjects<>();
|
||||||
|
case List:
|
||||||
|
return new ListGenericObjects<>();
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.projectairfighter.drawnings;
|
package com.projectairfighter.drawnings;
|
||||||
|
|
||||||
import com.projectairfighter.entities.EntityAirFighter;
|
import com.projectairfighter.entities.EntityAirFighter;
|
||||||
|
import com.projectairfighter.entities.EntityWarPlane;
|
||||||
import javafx.scene.canvas.GraphicsContext;
|
import javafx.scene.canvas.GraphicsContext;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
|
|
||||||
@ -15,6 +16,11 @@ public class DrawningAirFighter extends DrawningWarPlane {
|
|||||||
super(entityAirFighter, engineDrawing);
|
super(entityAirFighter, engineDrawing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DrawningAirFighter(EntityWarPlane entityWarPlane) {
|
||||||
|
super();
|
||||||
|
this.entityWarPlane = entityWarPlane;
|
||||||
|
}
|
||||||
|
|
||||||
// Прорисовка объекта
|
// Прорисовка объекта
|
||||||
@Override
|
@Override
|
||||||
public void drawTransport(GraphicsContext gc) {
|
public void drawTransport(GraphicsContext gc) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.projectairfighter.drawnings;
|
package com.projectairfighter.drawnings;
|
||||||
|
|
||||||
|
import com.projectairfighter.entities.EntityAirFighter;
|
||||||
import com.projectairfighter.entities.EntityWarPlane;
|
import com.projectairfighter.entities.EntityWarPlane;
|
||||||
import javafx.scene.canvas.GraphicsContext;
|
import javafx.scene.canvas.GraphicsContext;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
@ -68,6 +69,12 @@ public class DrawningWarPlane {
|
|||||||
this.engineDrawing = engineDrawing;
|
this.engineDrawing = engineDrawing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DrawningWarPlane(EntityWarPlane entityWarPlane)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
this.entityWarPlane = entityWarPlane;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean setPictureSize(int width, int height) {
|
public boolean setPictureSize(int width, int height) {
|
||||||
if (width <= drawningAirFighterWidth || height <= drawningAirFighterHeight) return false;
|
if (width <= drawningAirFighterWidth || height <= drawningAirFighterHeight) return false;
|
||||||
pictureWidth = width;
|
pictureWidth = width;
|
||||||
@ -166,4 +173,29 @@ public class DrawningWarPlane {
|
|||||||
new double[]{startPosY + 79, startPosY + 133, startPosY + 133, startPosY + 79}, 4);
|
new double[]{startPosY + 79, startPosY + 133, startPosY + 133, startPosY + 79}, 4);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String SEPARATOR_FOR_OBJECT = ":";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание объекта из строки.
|
||||||
|
*
|
||||||
|
* @param info Строка с данными для создания объекта.
|
||||||
|
* @return Объект.
|
||||||
|
*/
|
||||||
|
public static DrawningWarPlane createDrawingPlane(String info) {
|
||||||
|
String[] strs = info.split(SEPARATOR_FOR_OBJECT);
|
||||||
|
EntityWarPlane plane = EntityAirFighter.createEntityAirFighter(strs);
|
||||||
|
if (plane != null) {
|
||||||
|
return new DrawningAirFighter(plane);
|
||||||
|
}
|
||||||
|
|
||||||
|
plane = EntityWarPlane.createEntityWarPlane(strs);
|
||||||
|
if (plane != null) {
|
||||||
|
return new DrawningWarPlane(plane);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract String getDataForSave();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.projectairfighter.drawnings;
|
||||||
|
|
||||||
|
import com.projectairfighter.entities.EntityAirFighter;
|
||||||
|
import com.projectairfighter.entities.EntityWarPlane;
|
||||||
|
|
||||||
|
public class ExtensionDrawningPlane {
|
||||||
|
private static final String SEPARATOR_FOR_OBJECT = ":";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание объекта из строки.
|
||||||
|
*
|
||||||
|
* @param info Строка с данными для создания объекта.
|
||||||
|
* @return Объект.
|
||||||
|
*/
|
||||||
|
public static DrawningWarPlane createDrawingPlane(String info) {
|
||||||
|
String[] strs = info.split(SEPARATOR_FOR_OBJECT);
|
||||||
|
EntityWarPlane plane = EntityAirFighter.createEntityAirFighter(strs);
|
||||||
|
if (plane != null) {
|
||||||
|
return new DrawningAirFighter(plane);
|
||||||
|
}
|
||||||
|
|
||||||
|
plane = EntityWarPlane.createEntityWarPlane(strs);
|
||||||
|
if (plane != null) {
|
||||||
|
return new DrawningWarPlane(plane);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение данных для сохранения в файл.
|
||||||
|
*
|
||||||
|
* @param drawningWarPlane Сохраняемый объект.
|
||||||
|
* @return Строка с данными по объекту.
|
||||||
|
*/
|
||||||
|
public static String getDataForSave(DrawningWarPlane drawningWarPlane) {
|
||||||
|
if (drawningWarPlane == null || drawningWarPlane.entityWarPlane == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] array = drawningWarPlane.entityWarPlane.getStringRepresentation();
|
||||||
|
return String.join(SEPARATOR_FOR_OBJECT, array);
|
||||||
|
}
|
||||||
|
}
|
@ -41,4 +41,38 @@ public class EntityAirFighter extends EntityWarPlane {
|
|||||||
this.bodyRockets = bodyRockets;
|
this.bodyRockets = bodyRockets;
|
||||||
this.additionalWings = additionalWings;
|
this.additionalWings = additionalWings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение строк со значениями свойств объекта класса-сущности
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String[] getStringRepresentation() {
|
||||||
|
return new String[] {
|
||||||
|
"EntityAirFighter",
|
||||||
|
String.valueOf(getSpeed()),
|
||||||
|
String.valueOf(getWeight()),
|
||||||
|
getBodyColor().toString(), // Здесь предполагается, что у вас есть метод toString, возвращающий имя цвета
|
||||||
|
getAdditionalColor().toString(), // Аналогично для дополнительного цвета
|
||||||
|
String.valueOf(hasBodyRockets()),
|
||||||
|
String.valueOf(hasAdditionalWings())
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание объекта из массива строк
|
||||||
|
*/
|
||||||
|
public static EntityAirFighter createEntityAirFighter(String[] strs) {
|
||||||
|
if (strs.length != 7 || !"EntityAirFighter".equals(strs[0])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int speed = Integer.parseInt(strs[1]);
|
||||||
|
double weight = Double.parseDouble(strs[2]);
|
||||||
|
Color bodyColor = Color.valueOf(strs[3]); // Здесь предполагается, что Color.valueOf может обработать имя цвета
|
||||||
|
Color additionalColor = Color.valueOf(strs[4]);
|
||||||
|
boolean bodyRockets = Boolean.parseBoolean(strs[5]);
|
||||||
|
boolean additionalWings = Boolean.parseBoolean(strs[6]);
|
||||||
|
|
||||||
|
return new EntityAirFighter(speed, weight, bodyColor, additionalColor, bodyRockets, additionalWings);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,4 +35,32 @@ public class EntityWarPlane {
|
|||||||
this.weight = weight;
|
this.weight = weight;
|
||||||
this.bodyColor = bodyColor;
|
this.bodyColor = bodyColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получение строк со значениями свойств объекта класса-сущности.
|
||||||
|
*/
|
||||||
|
public String[] getStringRepresentation() {
|
||||||
|
return new String[] {
|
||||||
|
"EntityWarPlane",
|
||||||
|
String.valueOf(speed),
|
||||||
|
String.valueOf(weight),
|
||||||
|
getBodyColor().toString()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание объекта из массива строк.
|
||||||
|
* @param strs Массив строк с данными для создания объекта.
|
||||||
|
* @return Объект класса EntityWarPlane или null, если строка недействительна.
|
||||||
|
*/
|
||||||
|
public static EntityWarPlane createEntityWarPlane(String[] strs) {
|
||||||
|
if (strs.length != 4 || !strs[0].equals("EntityWarPlane")) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
int speed = Integer.parseInt(strs[1]);
|
||||||
|
double weight = Double.parseDouble(strs[2]);
|
||||||
|
Color bodyColor = Color.valueOf(strs[3]); // Должен быть реализован метод valueOf для Color
|
||||||
|
|
||||||
|
return new EntityWarPlane(speed, weight, bodyColor);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,36 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<?import javafx.scene.canvas.*?>
|
<?import javafx.scene.canvas.Canvas?>
|
||||||
<?import javafx.scene.control.*?>
|
<?import javafx.scene.control.Button?>
|
||||||
<?import javafx.scene.layout.*?>
|
<?import javafx.scene.control.ComboBox?>
|
||||||
<?import javafx.scene.text.*?>
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.ListView?>
|
||||||
|
<?import javafx.scene.control.Menu?>
|
||||||
|
<?import javafx.scene.control.MenuBar?>
|
||||||
|
<?import javafx.scene.control.MenuItem?>
|
||||||
|
<?import javafx.scene.control.RadioButton?>
|
||||||
|
<?import javafx.scene.control.SplitPane?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
<?import javafx.scene.control.ToggleGroup?>
|
||||||
|
<?import javafx.scene.input.KeyCodeCombination?>
|
||||||
|
<?import javafx.scene.layout.AnchorPane?>
|
||||||
|
<?import javafx.scene.text.Text?>
|
||||||
|
|
||||||
<SplitPane dividerPositions="0.811965811965812" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="765.0" prefWidth="1292.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.projectairfighter.FormWarPlaneCollection">
|
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="795.0" prefWidth="1292.0" xmlns="http://javafx.com/javafx/19.0.2" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.projectairfighter.FormWarPlaneCollection">
|
||||||
|
<children>
|
||||||
|
<SplitPane dividerPositions="0.811965811965812" layoutX="1.0" layoutY="27.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="765.0" prefWidth="1292.0">
|
||||||
|
<items>
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="698.0" prefWidth="965.0">
|
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="698.0" prefWidth="965.0">
|
||||||
|
<children>
|
||||||
<Canvas fx:id="canvasWarPlane" height="763.0" width="1044.0" />
|
<Canvas fx:id="canvasWarPlane" height="763.0" width="1044.0" />
|
||||||
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="196.0">
|
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="196.0">
|
||||||
|
<children>
|
||||||
<SplitPane dividerPositions="0.43889618922470436" orientation="VERTICAL" prefHeight="763.0" prefWidth="237.0">
|
<SplitPane dividerPositions="0.43889618922470436" orientation="VERTICAL" prefHeight="763.0" prefWidth="237.0">
|
||||||
|
<items>
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
|
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
|
||||||
|
<children>
|
||||||
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Инструменты" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="6.0" />
|
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Инструменты" AnchorPane.leftAnchor="14.0" AnchorPane.topAnchor="6.0" />
|
||||||
<TextField fx:id="textFieldCollectionName" layoutX="6.0" layoutY="49.0" prefHeight="25.0" prefWidth="224.0" />
|
<TextField fx:id="textFieldCollectionName" layoutX="6.0" layoutY="49.0" prefHeight="25.0" prefWidth="224.0" />
|
||||||
<RadioButton fx:id="radioButtonMassive" layoutX="25.0" layoutY="77.0" mnemonicParsing="false" text="Массив">
|
<RadioButton fx:id="radioButtonMassive" layoutX="25.0" layoutY="77.0" mnemonicParsing="false" text="Массив">
|
||||||
@ -24,14 +43,20 @@
|
|||||||
<Button layoutX="6.0" layoutY="299.0" mnemonicParsing="false" onAction="#buttonCollectionDel" prefHeight="25.0" prefWidth="224.0" text="Удалить коллекцию" />
|
<Button layoutX="6.0" layoutY="299.0" mnemonicParsing="false" onAction="#buttonCollectionDel" prefHeight="25.0" prefWidth="224.0" text="Удалить коллекцию" />
|
||||||
<ListView fx:id="listViewCollection" layoutX="6.0" layoutY="136.0" prefHeight="155.0" prefWidth="224.0" />
|
<ListView fx:id="listViewCollection" layoutX="6.0" layoutY="136.0" prefHeight="155.0" prefWidth="224.0" />
|
||||||
<Label layoutX="56.0" layoutY="26.0" text="Название коллекции" />
|
<Label layoutX="56.0" layoutY="26.0" text="Название коллекции" />
|
||||||
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
|
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
|
||||||
|
<children>
|
||||||
<SplitPane fx:id="splitPane" dividerPositions="0.18691588785046728" layoutY="-8.0" orientation="VERTICAL" prefHeight="430.0" prefWidth="237.0">
|
<SplitPane fx:id="splitPane" dividerPositions="0.18691588785046728" layoutY="-8.0" orientation="VERTICAL" prefHeight="430.0" prefWidth="237.0">
|
||||||
|
<items>
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="116.0" prefWidth="235.0">
|
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="116.0" prefWidth="235.0">
|
||||||
|
<children>
|
||||||
<ComboBox fx:id="comboBox" layoutX="6.0" layoutY="15.0" onAction="#comboBoxSelectorCompany" prefHeight="25.0" prefWidth="224.0" />
|
<ComboBox fx:id="comboBox" layoutX="6.0" layoutY="15.0" onAction="#comboBoxSelectorCompany" prefHeight="25.0" prefWidth="224.0" />
|
||||||
<Button layoutX="6.0" layoutY="46.0" mnemonicParsing="false" onAction="#buttonCreateCompany" prefHeight="25.0" prefWidth="224.0" text="Создать компанию" />
|
<Button layoutX="6.0" layoutY="46.0" mnemonicParsing="false" onAction="#buttonCreateCompany" prefHeight="25.0" prefWidth="224.0" text="Создать компанию" />
|
||||||
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane disable="true" minHeight="0.0" minWidth="0.0" prefHeight="312.0" prefWidth="235.0">
|
<AnchorPane disable="true" minHeight="0.0" minWidth="0.0" prefHeight="312.0" prefWidth="235.0">
|
||||||
|
<children>
|
||||||
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="5.0" layoutY="12.0" mnemonicParsing="false" onAction="#buttonGoToFormCreate" prefHeight="35.0" prefWidth="224.0" text="Добавление самолета" />
|
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="5.0" layoutY="12.0" mnemonicParsing="false" onAction="#buttonGoToFormCreate" prefHeight="35.0" prefWidth="224.0" text="Добавление самолета" />
|
||||||
<TextField fx:id="textBox" layoutX="6.0" layoutY="132.0" prefHeight="25.0" prefWidth="224.0" />
|
<TextField fx:id="textBox" layoutX="6.0" layoutY="132.0" prefHeight="25.0" prefWidth="224.0" />
|
||||||
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="6.0" layoutY="162.0" mnemonicParsing="false" onAction="#buttonRemovePlaneClicked" prefHeight="35.0" prefWidth="224.0" text="Удалить истребитель" />
|
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="6.0" layoutY="162.0" mnemonicParsing="false" onAction="#buttonRemovePlaneClicked" prefHeight="35.0" prefWidth="224.0" text="Удалить истребитель" />
|
||||||
@ -39,9 +64,34 @@
|
|||||||
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="6.0" layoutY="300.0" mnemonicParsing="false" onAction="#buttonRefresh" prefHeight="35.0" prefWidth="224.0" text="Обновить" />
|
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="6.0" layoutY="300.0" mnemonicParsing="false" onAction="#buttonRefresh" prefHeight="35.0" prefWidth="224.0" text="Обновить" />
|
||||||
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="6.0" layoutY="90.0" mnemonicParsing="false" onAction="#buttonGoFormConstructor" prefHeight="35.0" prefWidth="224.0" text="Добавить через конструктор" />
|
<Button alignment="CENTER" contentDisplay="CENTER" layoutX="6.0" layoutY="90.0" mnemonicParsing="false" onAction="#buttonGoFormConstructor" prefHeight="35.0" prefWidth="224.0" text="Добавить через конструктор" />
|
||||||
<Button layoutX="6.0" layoutY="257.0" mnemonicParsing="false" onAction="#buttonGoToFormWithDeleteObject" prefHeight="35.0" text="Передать на тесты удаленный объект" />
|
<Button layoutX="6.0" layoutY="257.0" mnemonicParsing="false" onAction="#buttonGoToFormWithDeleteObject" prefHeight="35.0" text="Передать на тесты удаленный объект" />
|
||||||
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
|
</items>
|
||||||
</SplitPane>
|
</SplitPane>
|
||||||
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
|
</items>
|
||||||
</SplitPane>
|
</SplitPane>
|
||||||
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
|
</items>
|
||||||
</SplitPane>
|
</SplitPane>
|
||||||
|
<MenuBar prefHeight="25.0" prefWidth="1292.0">
|
||||||
|
<menus>
|
||||||
|
<Menu mnemonicParsing="false" text="Файл">
|
||||||
|
<items>
|
||||||
|
<MenuItem mnemonicParsing="false" text="Сохранить">
|
||||||
|
<accelerator>
|
||||||
|
<KeyCodeCombination alt="UP" code="S" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||||
|
</accelerator></MenuItem>
|
||||||
|
<MenuItem mnemonicParsing="false" text="Загрузить">
|
||||||
|
<accelerator>
|
||||||
|
<KeyCodeCombination alt="UP" code="L" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||||
|
</accelerator>
|
||||||
|
</MenuItem>
|
||||||
|
</items>
|
||||||
|
</Menu>
|
||||||
|
</menus>
|
||||||
|
</MenuBar>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user