converted to 3-rd
This commit is contained in:
parent
30d3353001
commit
dfde6a71b7
@ -1,153 +0,0 @@
|
||||
package com.example.pibd22_kalyshev_y_v_motorboat_hard;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.canvas.Canvas;
|
||||
import javafx.scene.canvas.GraphicsContext;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ComboBox;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.FlowPane;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.paint.Color;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class ControllerMap {
|
||||
@FXML
|
||||
private Pane root;
|
||||
@FXML
|
||||
private Canvas canvas;
|
||||
@FXML
|
||||
private FlowPane flowPane;
|
||||
@FXML
|
||||
private Label labelSpeedValue;
|
||||
@FXML
|
||||
private Label labelWeightValue;
|
||||
@FXML
|
||||
private Label labelBodyColorValue;
|
||||
@FXML
|
||||
private ComboBox<String> comboBoxNumOars;
|
||||
@FXML
|
||||
private ComboBox<String> comboBoxOarsType;
|
||||
@FXML
|
||||
private ComboBox<String> comboBoxSelectorMap;
|
||||
@FXML
|
||||
private Button buttonCreate;
|
||||
@FXML
|
||||
private Button buttonCreateModif;
|
||||
@FXML
|
||||
private Button buttonLeft;
|
||||
@FXML
|
||||
private Button buttonRight;
|
||||
@FXML
|
||||
private Button buttonUp;
|
||||
@FXML
|
||||
private Button buttonDown;
|
||||
private final double buttonMargin = 10.0;
|
||||
private AbstractMap _abstractMap;
|
||||
@FXML
|
||||
public void initialize() {
|
||||
buttonCreate.setTranslateX(buttonMargin);
|
||||
|
||||
root.widthProperty().addListener((obs, oldVal, newVal) -> {
|
||||
UpdateGUI();
|
||||
if (_abstractMap != null) {
|
||||
_abstractMap.DrawMapWithObject();
|
||||
}
|
||||
});
|
||||
root.heightProperty().addListener((obs, oldVal, newVal) -> {
|
||||
UpdateGUI();
|
||||
if (_abstractMap != null) {
|
||||
_abstractMap.DrawMapWithObject();
|
||||
}
|
||||
});
|
||||
}
|
||||
@FXML
|
||||
void ButtonCreate_Click() {
|
||||
Random rnd = new Random();
|
||||
DrawningBoat boat = new DrawningBoat(rnd.nextInt(200) + 100, rnd.nextInt(1000) + 1000,
|
||||
Color.rgb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)));
|
||||
SetData(boat);
|
||||
}
|
||||
@FXML
|
||||
void ButtonCreateModif_Click() {
|
||||
Random rnd = new Random();
|
||||
DrawningSpeedboat boat = new DrawningSpeedboat(rnd.nextInt(200) + 100, rnd.nextInt(1000) + 1000,
|
||||
Color.rgb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)),
|
||||
Color.rgb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)),
|
||||
(rnd.nextInt(2) != 0), (rnd.nextInt(2) != 0), (rnd.nextInt(2) != 0));
|
||||
SetData(boat);
|
||||
}
|
||||
@FXML
|
||||
void ButtonMove_Click(ActionEvent event) {
|
||||
if (_abstractMap == null) {
|
||||
return;
|
||||
}
|
||||
String buttonName = ((Button) event.getSource()).getId();
|
||||
switch (buttonName) {
|
||||
case "buttonUp" -> _abstractMap.MoveObject(Direction.Up);
|
||||
case "buttonDown" -> _abstractMap.MoveObject(Direction.Down);
|
||||
case "buttonLeft" -> _abstractMap.MoveObject(Direction.Left);
|
||||
case "buttonRight" -> _abstractMap.MoveObject(Direction.Right);
|
||||
}
|
||||
}
|
||||
@FXML
|
||||
private void ComboBoxSelectorMap_Changed() {
|
||||
switch (comboBoxSelectorMap.getValue()) {
|
||||
case "Simple map" -> _abstractMap = new SimpleMap();
|
||||
case "My second map" -> _abstractMap = new MySecondMap();
|
||||
}
|
||||
}
|
||||
private void ChangeDrawningOars(DrawningBoat boat) {
|
||||
IDrawningAdditionalElement newDrawningOars = switch (comboBoxOarsType.getValue()) {
|
||||
case "None" -> new DrawningOars(boat.GetBoat().GetBodyColor());
|
||||
case "Slim" -> new DrawningSlimOars(boat.GetBoat().GetBodyColor());
|
||||
case "Large" -> new DrawningLargeOars(boat.GetBoat().GetBodyColor());
|
||||
default -> null;
|
||||
};
|
||||
if (newDrawningOars != null) {
|
||||
newDrawningOars.SetNumberOars(Integer.parseInt(comboBoxNumOars.getValue()));
|
||||
boat.SetDrawningOars(newDrawningOars);
|
||||
}
|
||||
}
|
||||
private void UpdateGUI() {
|
||||
double sceneWidth = root.getWidth();
|
||||
double sceneHeight = root.getHeight();
|
||||
|
||||
double flowPaneHeight = flowPane.getHeight();
|
||||
double buttonCreateHeight = buttonCreate.getHeight();
|
||||
|
||||
canvas.setWidth(sceneWidth);
|
||||
flowPane.setPrefWidth(sceneWidth);
|
||||
canvas.setHeight(sceneHeight - flowPaneHeight);
|
||||
flowPane.setTranslateY(sceneHeight - flowPaneHeight);
|
||||
|
||||
buttonCreate.setTranslateY(sceneHeight - flowPaneHeight - buttonCreateHeight - buttonMargin);
|
||||
buttonCreateModif.setTranslateY(sceneHeight - flowPaneHeight - buttonCreateHeight - buttonMargin);
|
||||
|
||||
int buttonMoveHeight = 30;
|
||||
int distanceBetweenMoveButtons = 5;
|
||||
buttonUp.setTranslateY(sceneHeight - flowPaneHeight - buttonMoveHeight * 2.0 - buttonMargin - distanceBetweenMoveButtons);
|
||||
int buttonMoveWidth = 30;
|
||||
buttonUp.setTranslateX(sceneWidth - buttonMargin - buttonMoveWidth * 2.0 - distanceBetweenMoveButtons);
|
||||
|
||||
buttonDown.setTranslateY(sceneHeight - flowPaneHeight - buttonMoveHeight - buttonMargin);
|
||||
buttonDown.setTranslateX(sceneWidth- buttonMargin - buttonMoveWidth * 2.0 - distanceBetweenMoveButtons);
|
||||
|
||||
buttonLeft.setTranslateY(sceneHeight - flowPaneHeight - buttonMoveHeight - buttonMargin);
|
||||
buttonLeft.setTranslateX(sceneWidth - buttonMargin - buttonMoveWidth * 3.0 - distanceBetweenMoveButtons * 2.0);
|
||||
|
||||
buttonRight.setTranslateY(sceneHeight - flowPaneHeight - buttonMoveHeight - buttonMargin);
|
||||
buttonRight.setTranslateX(sceneWidth - buttonMargin - buttonMoveWidth);
|
||||
}
|
||||
private void SetData(DrawningBoat boat) {
|
||||
ChangeDrawningOars(boat);
|
||||
labelSpeedValue.setText(Integer.toString(boat.GetBoat().GetSpeed()));
|
||||
labelWeightValue.setText(Double.toString(boat.GetBoat().GetWeight()));
|
||||
labelBodyColorValue.setText(boat.GetBoat().GetBodyColor().toString());
|
||||
GraphicsContext gc = canvas.getGraphicsContext2D();
|
||||
gc.clearRect(0.0, 0.0, canvas.getWidth(), canvas.getHeight());
|
||||
_abstractMap.CreateMap((int)canvas.getWidth(), (int)canvas.getHeight(), new DrawningObjectBoat(boat), gc);
|
||||
}
|
||||
}
|
@ -24,11 +24,13 @@ public class ControllerMapWithSetBoats {
|
||||
@FXML
|
||||
private Pane paneRight;
|
||||
@FXML
|
||||
private Label labelTools;
|
||||
@FXML
|
||||
private ComboBox<String> comboBoxSelectorMap;
|
||||
@FXML
|
||||
private TextField textFieldPosition;
|
||||
private Button buttonAddBoat;
|
||||
@FXML
|
||||
private TextField textFieldNewMapName;
|
||||
private TextField textFieldPosition;
|
||||
@FXML
|
||||
private Button buttonLeft;
|
||||
@FXML
|
||||
@ -37,28 +39,9 @@ public class ControllerMapWithSetBoats {
|
||||
private Button buttonUp;
|
||||
@FXML
|
||||
private Button buttonDown;
|
||||
@FXML
|
||||
private ListView<String> listViewMaps;
|
||||
private final HashMap<String, AbstractMap> _mapsDict = new HashMap<String, AbstractMap>();
|
||||
private MapsCollection _mapsCollection;
|
||||
private Stack<DrawningBoat> _removedBoats;
|
||||
public void SetMapsCollection(MapsCollection mapsCollection)
|
||||
{
|
||||
_mapsCollection = mapsCollection;
|
||||
}
|
||||
private MapWithSetBoatsGeneric<DrawningObjectBoat, AbstractMap> _mapBoatsCollectionGeneric;
|
||||
@FXML
|
||||
public void initialize() {
|
||||
_mapsDict.put("Simple map", new SimpleMap());
|
||||
_mapsDict.put("My second map", new MySecondMap());
|
||||
|
||||
_mapsCollection = new MapsCollection((int) canvas.getWidth(), (int) canvas.getHeight(), canvas.getGraphicsContext2D());
|
||||
comboBoxSelectorMap.getItems().clear();
|
||||
for (Map.Entry<String, AbstractMap> map : _mapsDict.entrySet()) {
|
||||
comboBoxSelectorMap.getItems().add(map.getKey());
|
||||
}
|
||||
|
||||
_removedBoats = new Stack<>();
|
||||
|
||||
textFieldPosition.textProperty().addListener((ov, oldValue, newValue) -> {
|
||||
if (Objects.equals(newValue, "")) {
|
||||
return;
|
||||
@ -79,25 +62,32 @@ public class ControllerMapWithSetBoats {
|
||||
root.heightProperty().addListener((obs, oldVal, newVal) -> {
|
||||
UpdateGUI();
|
||||
});
|
||||
|
||||
listViewMaps.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
|
||||
String selectedMapName = listViewMaps.getSelectionModel().getSelectedItem();
|
||||
if (selectedMapName != null) {
|
||||
_mapsCollection.Get(selectedMapName).ShowSet();
|
||||
}
|
||||
});
|
||||
}
|
||||
@FXML
|
||||
public void ComboBoxSelectorMap_Changed() {
|
||||
AbstractMap map = switch (comboBoxSelectorMap.getValue()) {
|
||||
case "Simple map" -> new SimpleMap();
|
||||
case "My second map" -> new MySecondMap();
|
||||
default -> null;
|
||||
};
|
||||
if (map != null) {
|
||||
_mapBoatsCollectionGeneric = new MapWithSetBoatsGeneric<DrawningObjectBoat, AbstractMap>(
|
||||
(int)canvas.getWidth(), (int)canvas.getHeight(), map, DrawningObjectBoat.class, canvas.getGraphicsContext2D());
|
||||
} else {
|
||||
_mapBoatsCollectionGeneric = null;
|
||||
}
|
||||
}
|
||||
@FXML
|
||||
public void ButtonAddBoat_Click() throws IOException {
|
||||
if (listViewMaps.getSelectionModel().getSelectedItem() == null) {
|
||||
if (_mapBoatsCollectionGeneric == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Stage stageBoat = new Stage();
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(FormBoat.class.getResource("form-boat-view.fxml"));
|
||||
Scene sceneBoat = new Scene(fxmlLoader.load(), 500, 400);
|
||||
Scene sceneBoat = new Scene(fxmlLoader.load(), 320, 240);
|
||||
|
||||
FirstUpdateBoatGUI(sceneBoat, stageBoat, fxmlLoader, false);
|
||||
FirstUpdateBoatGUI(sceneBoat, stageBoat, fxmlLoader);
|
||||
|
||||
stageBoat.setTitle("Boat");
|
||||
stageBoat.setScene(sceneBoat);
|
||||
@ -105,10 +95,6 @@ public class ControllerMapWithSetBoats {
|
||||
}
|
||||
@FXML
|
||||
private void ButtonRemoveBoat_Click() {
|
||||
if (listViewMaps.getSelectionModel().getSelectedIndex() == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
String stringPosition = textFieldPosition.getText();
|
||||
if (stringPosition == null || stringPosition.length() == 0) {
|
||||
return;
|
||||
@ -119,50 +105,35 @@ public class ControllerMapWithSetBoats {
|
||||
|
||||
Alert infoAlert;
|
||||
if (removeAlert.getResult() == ButtonType.YES) {
|
||||
String selectedMapName = listViewMaps.getSelectionModel().getSelectedItem();
|
||||
int pos = Integer.parseInt(stringPosition);
|
||||
DrawningObjectBoat removedBoat = _mapsCollection.Get(selectedMapName, pos);
|
||||
if (selectedMapName != null && removedBoat != null) {
|
||||
_mapsCollection.Get(selectedMapName).Delete(pos);
|
||||
if (_mapBoatsCollectionGeneric.Delete(pos) != null) {
|
||||
infoAlert = new Alert(Alert.AlertType.INFORMATION, "Object removed", ButtonType.OK);
|
||||
_removedBoats.add(removedBoat.GetBoat());
|
||||
_mapsCollection.Get(selectedMapName).ShowSet();
|
||||
}
|
||||
else {
|
||||
_mapBoatsCollectionGeneric.ShowSet();
|
||||
} else {
|
||||
infoAlert = new Alert(Alert.AlertType.INFORMATION, "Failed to remove object", ButtonType.OK);
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
infoAlert = new Alert(Alert.AlertType.INFORMATION, "Remove operation canceled", ButtonType.OK);
|
||||
}
|
||||
infoAlert.showAndWait();
|
||||
}
|
||||
@FXML
|
||||
private void ButtonShowStorage_Click()
|
||||
{
|
||||
if (listViewMaps.getSelectionModel().getSelectedIndex() == -1) {
|
||||
private void ButtonShowStorage_Click() {
|
||||
if (_mapBoatsCollectionGeneric == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String selectedMapName = listViewMaps.getSelectionModel().getSelectedItem();
|
||||
if (selectedMapName != null) {
|
||||
_mapsCollection.Get(selectedMapName).ShowSet();
|
||||
}
|
||||
_mapBoatsCollectionGeneric.ShowSet();
|
||||
}
|
||||
@FXML
|
||||
private void ButtonShowOnMap_Click() {
|
||||
if (listViewMaps.getSelectionModel().getSelectedIndex() == -1) {
|
||||
if (_mapBoatsCollectionGeneric == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String selectedMapName = listViewMaps.getSelectionModel().getSelectedItem();
|
||||
if (selectedMapName != null) {
|
||||
_mapsCollection.Get(selectedMapName).ShowOnMap();
|
||||
}
|
||||
_mapBoatsCollectionGeneric.ShowOnMap();
|
||||
}
|
||||
@FXML
|
||||
private void ButtonMove_Click(ActionEvent event) {
|
||||
if (listViewMaps.getSelectionModel().getSelectedIndex() == -1) {
|
||||
if (_mapBoatsCollectionGeneric == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -174,69 +145,9 @@ public class ControllerMapWithSetBoats {
|
||||
case "buttonRight" -> Direction.Right;
|
||||
default -> Direction.None;
|
||||
};
|
||||
|
||||
String selectedMapName = listViewMaps.getSelectionModel().getSelectedItem();
|
||||
if (selectedMapName != null) {
|
||||
_mapsCollection.Get(selectedMapName).MoveObject(dir);
|
||||
}
|
||||
_mapBoatsCollectionGeneric.MoveObject(dir);
|
||||
}
|
||||
@FXML
|
||||
private void ButtonAddMap_Click()
|
||||
{
|
||||
Alert addMapAlert;
|
||||
if (comboBoxSelectorMap.getSelectionModel().getSelectedIndex() == -1 || textFieldNewMapName.getText() == null
|
||||
|| textFieldNewMapName.getText().length() == 0) {
|
||||
addMapAlert = new Alert(Alert.AlertType.ERROR, "Not all information has been entered.", ButtonType.OK);
|
||||
addMapAlert.showAndWait();
|
||||
return;
|
||||
}
|
||||
if (!_mapsDict.containsKey(comboBoxSelectorMap.getValue())) {
|
||||
addMapAlert = new Alert(Alert.AlertType.ERROR, "No such map exists.", ButtonType.OK);
|
||||
addMapAlert.showAndWait();
|
||||
return;
|
||||
}
|
||||
_mapsCollection.AddMap(textFieldNewMapName.getText(), _mapsDict.get(comboBoxSelectorMap.getValue()));
|
||||
ReloadMaps();
|
||||
}
|
||||
@FXML
|
||||
private void ButtonDeleteMap_Click() {
|
||||
if (comboBoxSelectorMap.getSelectionModel().getSelectedIndex() == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
Alert deleteMapAlert = new Alert(Alert.AlertType.CONFIRMATION, String.format("Delete map %s?",
|
||||
listViewMaps.getSelectionModel().getSelectedItem()), ButtonType.YES, ButtonType.NO);
|
||||
deleteMapAlert.showAndWait();
|
||||
|
||||
String removableMapName = listViewMaps.getSelectionModel().getSelectedItem();
|
||||
if (deleteMapAlert.getResult() == ButtonType.YES && removableMapName != null) {
|
||||
_mapsCollection.DelMap(removableMapName);
|
||||
ReloadMaps();
|
||||
}
|
||||
}
|
||||
@FXML
|
||||
private void ButtonShowRemovedBoats_Click() throws IOException {
|
||||
if (_removedBoats.empty()) {
|
||||
Alert addMapAlert = new Alert(Alert.AlertType.ERROR, "Collection of removed objects is empty.", ButtonType.OK);
|
||||
addMapAlert.showAndWait();
|
||||
}
|
||||
else {
|
||||
Stage stageBoat = new Stage();
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(FormBoat.class.getResource("form-removed-boat-view.fxml"));
|
||||
Scene sceneBoat = new Scene(fxmlLoader.load(), 320, 240);
|
||||
|
||||
FirstUpdateBoatGUI(sceneBoat, stageBoat, fxmlLoader, true);
|
||||
|
||||
stageBoat.setTitle("Removed armored vehicle");
|
||||
stageBoat.setScene(sceneBoat);
|
||||
stageBoat.show();
|
||||
|
||||
ControllerRemovedBoat controllerRemovedBoat = fxmlLoader.getController();
|
||||
controllerRemovedBoat.SetBoat(_removedBoats.pop());
|
||||
}
|
||||
}
|
||||
private void UpdateGUI()
|
||||
{
|
||||
private void UpdateGUI() {
|
||||
double rootWidth = root.getWidth();
|
||||
double rootHeight = root.getHeight();
|
||||
double rightPaneWidth = paneRight.getWidth();
|
||||
@ -264,14 +175,16 @@ public class ControllerMapWithSetBoats {
|
||||
buttonRight.setTranslateY(rootHeight - moveButtonsSize - rightPaneMargin);
|
||||
buttonRight.setTranslateX(rootWidth - moveButtonsSize - moveButtonsXMargin);
|
||||
}
|
||||
private void FirstUpdateBoatGUI(Scene scene, Stage stageBoat, FXMLLoader fxmlLoader, boolean formRemovedBoat) {
|
||||
private void FirstUpdateBoatGUI(Scene scene, Stage stageBoat, FXMLLoader fxmlLoader) {
|
||||
Pane root = (Pane) scene.lookup("#root");
|
||||
Canvas canvas = (Canvas) scene.lookup("#canvas");
|
||||
Button buttonCreate = (Button) scene.lookup("#buttonCreate");
|
||||
Button buttonCreateModif = (Button) scene.lookup("#buttonCreateModif");
|
||||
Button buttonUp = (Button) scene.lookup("#buttonUp");
|
||||
Button buttonLeft = (Button) scene.lookup("#buttonLeft");
|
||||
Button buttonRight = (Button) scene.lookup("#buttonRight");
|
||||
Button buttonDown = (Button) scene.lookup("#buttonDown");
|
||||
Button buttonSelectBoat = (Button) scene.lookup("#buttonSelectBoat");
|
||||
FlowPane flowPane = (FlowPane) scene.lookup("#flowPane");
|
||||
|
||||
root.applyCss();
|
||||
@ -290,7 +203,9 @@ public class ControllerMapWithSetBoats {
|
||||
flowPane.setPrefWidth(rootWidth);
|
||||
canvas.setHeight(rootHeight - flowPaneHeight);
|
||||
flowPane.setTranslateY(rootHeight - flowPaneHeight);
|
||||
buttonCreateModif.setTranslateX(rootPadding + buttonCreateWidth + distanceBetweenButtons);
|
||||
buttonCreate.setTranslateY(rootHeight - flowPaneHeight - buttonCreateHeight - rootPadding);
|
||||
buttonCreateModif.setTranslateY(rootHeight - flowPaneHeight - buttonCreateHeight - rootPadding);
|
||||
|
||||
buttonUp.setTranslateY(rootHeight - flowPaneHeight - buttonMoveSize * 2.0 - rootPadding -
|
||||
distanceBetweenButtons);
|
||||
@ -305,53 +220,24 @@ public class ControllerMapWithSetBoats {
|
||||
buttonRight.setTranslateY(rootHeight - flowPaneHeight - buttonMoveSize - rootPadding);
|
||||
buttonRight.setTranslateX(rootWidth - rootPadding - buttonMoveSize);
|
||||
|
||||
buttonSelectBoat.setTranslateY(rootHeight - flowPaneHeight - buttonCreateHeight - rootPadding);
|
||||
buttonSelectBoat.setTranslateX(rootWidth - rootPadding - buttonMoveSize * 3.0 -
|
||||
distanceBetweenButtons * 3.0 - buttonSelectBoat.getWidth());
|
||||
|
||||
if (!formRemovedBoat) {
|
||||
Button buttonCreateModif = (Button) scene.lookup("#buttonCreateModif");
|
||||
Button buttonSelectBoat = (Button) scene.lookup("#buttonSelectBoat");
|
||||
buttonCreateModif.setTranslateX(rootPadding + buttonCreateWidth + distanceBetweenButtons);
|
||||
buttonCreateModif.setTranslateY(rootHeight - flowPaneHeight - buttonCreateHeight - rootPadding);
|
||||
|
||||
buttonSelectBoat.setTranslateY(rootHeight - flowPaneHeight - buttonCreateHeight - rootPadding);
|
||||
buttonSelectBoat.setTranslateX(rootWidth - rootPadding - buttonMoveSize * 3.0 -
|
||||
distanceBetweenButtons * 3.0 - buttonSelectBoat.getWidth());
|
||||
|
||||
buttonSelectBoat.setOnAction(e -> {
|
||||
stageBoat.close();
|
||||
ControllerBoat controllerBoat = fxmlLoader.getController();
|
||||
DrawningObjectBoat boat = new DrawningObjectBoat(controllerBoat.GetSelectedBoat());
|
||||
|
||||
String selectedMapName = listViewMaps.getSelectionModel().getSelectedItem();
|
||||
|
||||
Alert alert;
|
||||
if (selectedMapName != null && selectedMapName.length() != 0 && _mapsCollection.Get(selectedMapName).Add(boat) != -1) {
|
||||
alert = new Alert(Alert.AlertType.INFORMATION, "Object added", ButtonType.OK);
|
||||
_mapsCollection.Get(selectedMapName).ShowSet();
|
||||
}
|
||||
else {
|
||||
alert = new Alert(Alert.AlertType.ERROR, "Failed to add object", ButtonType.OK);
|
||||
}
|
||||
alert.showAndWait();
|
||||
});
|
||||
}
|
||||
}
|
||||
private void ReloadMaps()
|
||||
{
|
||||
int index = listViewMaps.getSelectionModel().getSelectedIndex();
|
||||
|
||||
listViewMaps.getItems().clear();
|
||||
for (String key : _mapsCollection.GetKeys())
|
||||
buttonSelectBoat.setOnAction(e ->
|
||||
{
|
||||
listViewMaps.getItems().add(key);
|
||||
}
|
||||
stageBoat.close();
|
||||
ControllerBoat controllerBoat = fxmlLoader.getController();
|
||||
DrawningObjectBoat boat = new DrawningObjectBoat(controllerBoat.GetSelectedBoat());
|
||||
|
||||
if (listViewMaps.getItems().size() > 0 && (index == -1 || index >= listViewMaps.getItems().size()))
|
||||
{
|
||||
listViewMaps.getSelectionModel().select(0);
|
||||
}
|
||||
else if (listViewMaps.getItems().size() > 0 && index > -1 && index < listViewMaps.getItems().size())
|
||||
{
|
||||
listViewMaps.getSelectionModel().select(index);
|
||||
}
|
||||
Alert alert;
|
||||
if (_mapBoatsCollectionGeneric.Add(boat) != -1) {
|
||||
alert = new Alert(Alert.AlertType.INFORMATION, "Object added", ButtonType.OK);
|
||||
_mapBoatsCollectionGeneric.ShowSet();
|
||||
} else {
|
||||
alert = new Alert(Alert.AlertType.ERROR, "Failed to add object", ButtonType.OK);
|
||||
}
|
||||
alert.showAndWait();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,146 +0,0 @@
|
||||
package com.example.pibd22_kalyshev_y_v_motorboat_hard;
|
||||
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.canvas.Canvas;
|
||||
import javafx.scene.canvas.GraphicsContext;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ComboBox;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.FlowPane;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.paint.Color;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class ControllerRemovedBoat {
|
||||
@FXML
|
||||
private Pane root;
|
||||
@FXML
|
||||
private Canvas canvas;
|
||||
@FXML
|
||||
private FlowPane flowPane;
|
||||
@FXML
|
||||
private Label labelSpeedValue;
|
||||
@FXML
|
||||
private Label labelWeightValue;
|
||||
@FXML
|
||||
private Label labelBodyColorValue;
|
||||
@FXML
|
||||
private ComboBox<String> comboBoxNumOars;
|
||||
@FXML
|
||||
private Button buttonCreate;
|
||||
@FXML
|
||||
private Button buttonLeft;
|
||||
@FXML
|
||||
private Button buttonRight;
|
||||
@FXML
|
||||
private Button buttonUp;
|
||||
@FXML
|
||||
private Button buttonDown;
|
||||
private final double rootPadding = 10.0;
|
||||
private DrawningBoat _boat;
|
||||
public void SetBoat(DrawningBoat boat) {
|
||||
_boat = boat;
|
||||
SetData();
|
||||
Draw();
|
||||
}
|
||||
@FXML
|
||||
public void initialize() {
|
||||
buttonCreate.setTranslateX(rootPadding);
|
||||
|
||||
root.widthProperty().addListener((obs, oldVal, newVal) -> {
|
||||
UpdateGUI();
|
||||
if (_boat != null) {
|
||||
_boat.ChangeBorders((int) canvas.getWidth(), (int) canvas.getHeight());
|
||||
}
|
||||
Draw();
|
||||
});
|
||||
root.heightProperty().addListener((obs, oldVal, newVal) -> {
|
||||
UpdateGUI();
|
||||
if (_boat != null) {
|
||||
_boat.ChangeBorders((int) canvas.getWidth(), (int) canvas.getHeight());
|
||||
}
|
||||
Draw();
|
||||
});
|
||||
}
|
||||
@FXML
|
||||
private void ButtonCreate_Click() {
|
||||
Random rnd = new Random();
|
||||
_boat = new DrawningBoat(rnd.nextInt(200) + 100, rnd.nextInt(1000) + 1000,
|
||||
Color.rgb(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)));
|
||||
|
||||
_boat.GetDrawningOars().SetNumberOars(Integer.parseInt(comboBoxNumOars.getValue()));
|
||||
|
||||
SetData();
|
||||
Draw();
|
||||
}
|
||||
@FXML
|
||||
private void ComboBoxNumOars_Changed() {
|
||||
if (_boat != null) {
|
||||
_boat.GetDrawningOars().SetNumberOars(Integer.parseInt(comboBoxNumOars.getValue()));
|
||||
Draw();
|
||||
}
|
||||
}
|
||||
@FXML
|
||||
private void ButtonMove_Click(ActionEvent event) {
|
||||
if (_boat == null) {
|
||||
return;
|
||||
}
|
||||
String buttonName = ((Button)event.getSource()).getId();
|
||||
switch (buttonName) {
|
||||
case "buttonUp" -> _boat.MoveTransport(Direction.Up);
|
||||
case "buttonDown" -> _boat.MoveTransport(Direction.Down);
|
||||
case "buttonLeft" -> _boat.MoveTransport(Direction.Left);
|
||||
case "buttonRight" -> _boat.MoveTransport(Direction.Right);
|
||||
}
|
||||
Draw();
|
||||
}
|
||||
private void SetData() {
|
||||
Random rnd = new Random();
|
||||
_boat.SetPosition(rnd.nextInt(90) + 10, rnd.nextInt(90),
|
||||
(int) canvas.getWidth(), (int) canvas.getHeight());
|
||||
|
||||
labelSpeedValue.setText(Integer.toString(_boat.GetBoat().GetSpeed()));
|
||||
labelWeightValue.setText(Double.toString(_boat.GetBoat().GetWeight()));
|
||||
labelBodyColorValue.setText(_boat.GetBoat().GetBodyColor().toString());
|
||||
}
|
||||
private void UpdateGUI() {
|
||||
double rootWidth = root.getWidth();
|
||||
double rootHeight = root.getHeight();
|
||||
|
||||
double flowPaneHeight = flowPane.getHeight();
|
||||
double buttonCreateHeight = buttonCreate.getHeight();
|
||||
|
||||
canvas.setWidth(rootWidth);
|
||||
flowPane.setPrefWidth(rootWidth);
|
||||
canvas.setHeight(rootHeight - flowPaneHeight);
|
||||
flowPane.setTranslateY(rootHeight - flowPaneHeight);
|
||||
|
||||
buttonCreate.setTranslateY(rootHeight - flowPaneHeight - buttonCreateHeight - rootPadding);
|
||||
|
||||
int buttonMoveSize = 30;
|
||||
int distanceBetweenButtons = 5;
|
||||
buttonUp.setTranslateY(rootHeight - flowPaneHeight - buttonMoveSize * 2.0 - rootPadding -
|
||||
distanceBetweenButtons);
|
||||
buttonUp.setTranslateX(rootWidth - rootPadding - buttonMoveSize * 2.0 - distanceBetweenButtons);
|
||||
|
||||
buttonDown.setTranslateY(rootHeight - flowPaneHeight - buttonMoveSize - rootPadding);
|
||||
buttonDown.setTranslateX(rootWidth - rootPadding - buttonMoveSize * 2.0 - distanceBetweenButtons);
|
||||
|
||||
buttonLeft.setTranslateY(rootHeight - flowPaneHeight - buttonMoveSize - rootPadding);
|
||||
buttonLeft.setTranslateX(rootWidth - rootPadding - buttonMoveSize * 3.0 -
|
||||
distanceBetweenButtons * 2.0);
|
||||
|
||||
buttonRight.setTranslateY(rootHeight - flowPaneHeight - buttonMoveSize - rootPadding);
|
||||
buttonRight.setTranslateX(rootWidth - rootPadding - buttonMoveSize);
|
||||
}
|
||||
private void Draw() {
|
||||
GraphicsContext gc = canvas.getGraphicsContext2D();
|
||||
gc.clearRect(0.0, 0.0, canvas.getWidth(), canvas.getHeight());
|
||||
|
||||
if (_boat != null) {
|
||||
_boat.DrawTransport(gc);
|
||||
}
|
||||
}
|
||||
}
|
@ -32,6 +32,7 @@ public class FormBoat extends Application {
|
||||
Button buttonLeft = (Button)scene.lookup("#buttonLeft");
|
||||
Button buttonRight = (Button)scene.lookup("#buttonRight");
|
||||
Button buttonDown = (Button)scene.lookup("#buttonDown");
|
||||
Button buttonSelectBoat = (Button)scene.lookup("#buttonSelectBoat");
|
||||
FlowPane flowPane = (FlowPane)scene.lookup("#flowPane");
|
||||
|
||||
root.applyCss();
|
||||
@ -66,6 +67,10 @@ public class FormBoat extends Application {
|
||||
|
||||
buttonRight.setTranslateY(rootHeight - flowPaneHeight - buttonMoveSize - rootPadding);
|
||||
buttonRight.setTranslateX(rootWidth - rootPadding - buttonMoveSize);
|
||||
|
||||
buttonSelectBoat.setTranslateY(rootHeight - flowPaneHeight - buttonCreateHeight - rootPadding);
|
||||
buttonSelectBoat.setTranslateX(rootWidth - rootPadding - buttonMoveSize * 3.0 -
|
||||
distanceBetweenButtons * 3.0 - buttonSelectBoat.getWidth());
|
||||
}
|
||||
public static void main(String[] args)
|
||||
{
|
||||
|
@ -4,12 +4,8 @@ import javafx.application.Application;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.canvas.Canvas;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.ListView;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.layout.VBox;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -20,27 +16,24 @@ public class FormMapWithSetBoats extends Application {
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(FormBoat.class.getResource("form-map-with-set-boats-view.fxml"));
|
||||
Scene scene = new Scene(fxmlLoader.load(), 1000, 540);
|
||||
|
||||
FirstUpdateGUI(scene, fxmlLoader);
|
||||
FirstUpdateGUI(scene);
|
||||
|
||||
stage.setTitle("Map with a set of objects");
|
||||
stage.setScene(scene);
|
||||
|
||||
stage.show();
|
||||
}
|
||||
private void FirstUpdateGUI(Scene scene, FXMLLoader fxmlLoader) {
|
||||
|
||||
private void FirstUpdateGUI(Scene scene) {
|
||||
Pane root = (Pane)scene.lookup("#root");
|
||||
Canvas canvas = (Canvas)scene.lookup("#canvas");
|
||||
Pane paneRight = (Pane)scene.lookup("#paneRight");
|
||||
VBox vBoxMaps = (VBox)scene.lookup("#vBoxMaps");
|
||||
Label labelTools = (Label)scene.lookup("#labelTools");
|
||||
@SuppressWarnings("unchecked")
|
||||
ListView<String> listViewMaps = (ListView<String>)scene.lookup("#listViewMaps");
|
||||
Button buttonAddMap = (Button)scene.lookup("#buttonAddMap");
|
||||
Button buttonDeleteMap = (Button)scene.lookup("#buttonDeleteMap");
|
||||
ComboBox<String> comboBoxSelectorMap = (ComboBox<String>)scene.lookup("#comboBoxSelectorMap");
|
||||
Button buttonAddBoat = (Button)scene.lookup("#buttonAddBoat");
|
||||
TextField textFieldPosition = (TextField)scene.lookup("#textFieldPosition");
|
||||
Button buttonRemoveBoat = (Button)scene.lookup("#buttonRemoveBoat");
|
||||
Button buttonShowRemovedBoat = (Button)scene.lookup("#buttonShowRemovedBoat");
|
||||
Button buttonShowStorage = (Button)scene.lookup("#buttonShowStorage");
|
||||
Button buttonShowOnMap = (Button)scene.lookup("#buttonShowOnMap");
|
||||
Button buttonUp = (Button)scene.lookup("#buttonUp");
|
||||
@ -54,30 +47,21 @@ public class FormMapWithSetBoats extends Application {
|
||||
double paneRightPadding = 5.0;
|
||||
double rootWidth = root.getWidth();
|
||||
double rootHeight = root.getHeight();
|
||||
double standardWidth = buttonRemoveBoat.getWidth() + paneRightPadding * 6;
|
||||
double standardWidth = buttonRemoveBoat.getWidth();
|
||||
double standardHeight = buttonRemoveBoat.getHeight();
|
||||
double paneRightWidth = standardWidth + paneRightPadding * 2;
|
||||
|
||||
canvas.setWidth(rootWidth - paneRightWidth);
|
||||
canvas.setHeight(rootHeight);
|
||||
ControllerMapWithSetBoats controller = fxmlLoader.getController();
|
||||
controller.SetMapsCollection(new MapsCollection((int)canvas.getWidth(), (int)rootHeight, canvas.getGraphicsContext2D()));
|
||||
|
||||
paneRight.setPrefWidth(paneRightWidth);
|
||||
paneRight.setPrefHeight(rootHeight);
|
||||
paneRight.setTranslateX(rootWidth - paneRightWidth);
|
||||
|
||||
double topMargin = labelTools.getHeight();
|
||||
|
||||
vBoxMaps.setPrefWidth(standardWidth);
|
||||
vBoxMaps.setTranslateX(paneRightPadding);
|
||||
vBoxMaps.setTranslateY(topMargin);
|
||||
topMargin += standardHeight * 7.0 + paneRightPadding * 10.0 + labelTools.getHeight();
|
||||
|
||||
listViewMaps.setPrefHeight(standardHeight * 3.0);
|
||||
|
||||
buttonAddMap.setPrefWidth(standardWidth);
|
||||
buttonDeleteMap.setPrefWidth(standardWidth);
|
||||
comboBoxSelectorMap.setTranslateX(paneRightPadding);
|
||||
comboBoxSelectorMap.setTranslateY(topMargin);
|
||||
topMargin += standardHeight + paneRightPadding * 3.0;
|
||||
|
||||
buttonAddBoat.setPrefWidth(standardWidth);
|
||||
buttonAddBoat.setTranslateX(paneRightPadding);
|
||||
@ -89,14 +73,8 @@ public class FormMapWithSetBoats extends Application {
|
||||
textFieldPosition.setTranslateY(topMargin);
|
||||
topMargin += standardHeight + paneRightPadding;
|
||||
|
||||
buttonRemoveBoat.setPrefWidth(standardWidth);
|
||||
buttonRemoveBoat.setTranslateX(paneRightPadding);
|
||||
buttonRemoveBoat.setTranslateY(topMargin);
|
||||
topMargin += standardHeight + paneRightPadding;
|
||||
|
||||
buttonShowRemovedBoat.setPrefWidth(standardWidth);
|
||||
buttonShowRemovedBoat.setTranslateX(paneRightPadding);
|
||||
buttonShowRemovedBoat.setTranslateY(topMargin);
|
||||
topMargin += standardHeight + paneRightPadding * 3.0;
|
||||
|
||||
buttonShowStorage.setPrefWidth(standardWidth);
|
||||
@ -124,8 +102,9 @@ public class FormMapWithSetBoats extends Application {
|
||||
buttonRight.setTranslateY(rootHeight - moveButtonsSize - paneRightPadding);
|
||||
buttonRight.setTranslateX(rootWidth - moveButtonsSize - moveButtonsXMargin);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
launch();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import javafx.scene.canvas.GraphicsContext;
|
||||
|
||||
public interface IDrawningObject {
|
||||
public float GetStep();
|
||||
public IDrawningAdditionalElement GetDrawningOars();
|
||||
public void SetObject(int x, int y, int width, int height);
|
||||
public void MoveObject(Direction direction);
|
||||
public void DrawningObject(GraphicsContext gc);
|
||||
|
@ -11,10 +11,10 @@ public class MapWithSetBoatsGeneric <T extends IDrawningObject, U extends Abstra
|
||||
private final SetBoatsGeneric<T> _setBoats;
|
||||
private GraphicsContext _graphicsContext = null;
|
||||
private final U _map;
|
||||
public MapWithSetBoatsGeneric(int picWidth, int picHeight, U map, GraphicsContext gc) {
|
||||
public MapWithSetBoatsGeneric(int picWidth, int picHeight, U map, Class<T> objectT, GraphicsContext gc) {
|
||||
int width = picWidth / _placeSizeWidth;
|
||||
int height = picHeight / _placeSizeHeight;
|
||||
_setBoats = new SetBoatsGeneric<T>(width * height);
|
||||
_setBoats = new SetBoatsGeneric<T>(width * height, objectT);
|
||||
_pictureWidth = picWidth;
|
||||
_pictureHeight = picHeight;
|
||||
_map = map;
|
||||
@ -34,9 +34,10 @@ public class MapWithSetBoatsGeneric <T extends IDrawningObject, U extends Abstra
|
||||
}
|
||||
public void ShowOnMap() {
|
||||
Shaking();
|
||||
for (T boat : _setBoats) {
|
||||
if (boat != null) {
|
||||
_map.CreateMap(_pictureWidth, _pictureHeight, boat, _graphicsContext);
|
||||
for (int i = 0; i < _setBoats.GetCount(); i++) {
|
||||
var armoredVehicle = _setBoats.Get(i);
|
||||
if (armoredVehicle != null) {
|
||||
_map.CreateMap(_pictureWidth, _pictureHeight, armoredVehicle, _graphicsContext);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -106,13 +107,13 @@ public class MapWithSetBoatsGeneric <T extends IDrawningObject, U extends Abstra
|
||||
int RowIndex = 0;
|
||||
int ColumnIndex = 0;
|
||||
|
||||
for (T boat : _setBoats) {
|
||||
if (boat != null) {
|
||||
float[] position = boat.GetCurrentPosition();
|
||||
boat.SetObject(ColumnIndex *_placeSizeWidth,
|
||||
for (int i = 0; i < _setBoats.GetCount(); i++) {
|
||||
if (_setBoats.Get(i) != null) {
|
||||
float[] position = _setBoats.Get(i).GetCurrentPosition();
|
||||
_setBoats.Get(i).SetObject(ColumnIndex *_placeSizeWidth,
|
||||
RowIndex * _placeSizeHeight + (_placeSizeHeight - (int)(position[3]-position[1])) - 70,
|
||||
_pictureWidth, _pictureHeight);
|
||||
boat.DrawningObject(_graphicsContext);
|
||||
_setBoats.Get(i).DrawningObject(_graphicsContext);
|
||||
}
|
||||
if (ColumnIndex == xNumOfPlaces-1) {
|
||||
ColumnIndex = 0;
|
||||
|
@ -1,47 +0,0 @@
|
||||
package com.example.pibd22_kalyshev_y_v_motorboat_hard;
|
||||
|
||||
import javafx.scene.canvas.GraphicsContext;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Set;
|
||||
|
||||
public class MapsCollection {
|
||||
private final HashMap<String, MapWithSetBoatsGeneric<DrawningObjectBoat, AbstractMap>> _mapStorages;
|
||||
private final int _pictureWidth;
|
||||
private final int _pictureHeight;
|
||||
private final GraphicsContext _graphicsContext;
|
||||
public Set<String> GetKeys()
|
||||
{
|
||||
return _mapStorages.keySet();
|
||||
}
|
||||
public MapsCollection(int pictureWidth, int pictureHeight, GraphicsContext graphicsContext) {
|
||||
_mapStorages = new HashMap<>();
|
||||
_pictureWidth = pictureWidth;
|
||||
_pictureHeight = pictureHeight;
|
||||
_graphicsContext = graphicsContext;
|
||||
}
|
||||
public void AddMap(String name, AbstractMap map) {
|
||||
if (_mapStorages.containsKey(name)) {
|
||||
return;
|
||||
}
|
||||
MapWithSetBoatsGeneric<DrawningObjectBoat, AbstractMap> newMap =
|
||||
new MapWithSetBoatsGeneric<>(_pictureWidth, _pictureHeight, map, _graphicsContext);
|
||||
_mapStorages.put(name, newMap);
|
||||
}
|
||||
public void DelMap(String name)
|
||||
{
|
||||
_mapStorages.remove(name);
|
||||
}
|
||||
public MapWithSetBoatsGeneric<DrawningObjectBoat, AbstractMap> Get(String ind) {
|
||||
if (_mapStorages.containsKey(ind)) {
|
||||
return _mapStorages.get(ind);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public DrawningObjectBoat Get(String ind, int position) {
|
||||
if (_mapStorages.containsKey(ind)) {
|
||||
return _mapStorages.get(ind).Get(position);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,51 +1,65 @@
|
||||
package com.example.pibd22_kalyshev_y_v_motorboat_hard;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class SetBoatsGeneric <T> implements Iterable<T> {
|
||||
private final ArrayList<T> _places;
|
||||
private final int _maxCount;
|
||||
public class SetBoatsGeneric<T> {
|
||||
private final T[] _places;
|
||||
public int GetCount()
|
||||
{
|
||||
return _places.size();
|
||||
return _places.length;
|
||||
}
|
||||
public SetBoatsGeneric(int count) {
|
||||
_maxCount = count;
|
||||
_places = new ArrayList<T>();
|
||||
public SetBoatsGeneric(int count, Class<T> objectT) {
|
||||
@SuppressWarnings("unchecked")
|
||||
final T[] places = (T[]) Array.newInstance(objectT, count);
|
||||
_places = places;
|
||||
}
|
||||
public int Insert(T boat)
|
||||
{
|
||||
return Insert(boat, 0);
|
||||
}
|
||||
public int Insert(T boat, int position) {
|
||||
if (position < 0 || position > GetCount() || GetCount() == _maxCount) {
|
||||
if (position < 0 || position > _places.length) {
|
||||
return -1;
|
||||
}
|
||||
_places.add(position, boat);
|
||||
return position;
|
||||
int emptyCellIndex = -1;
|
||||
if (_places[position] != null) {
|
||||
for (int i = position + 1; i < GetCount(); i++) {
|
||||
if (_places[i] == null) {
|
||||
emptyCellIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (emptyCellIndex != -1) {
|
||||
for (int i = emptyCellIndex; i > position; i--) {
|
||||
_places[i] = _places[i - 1];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
_places[position] = boat;
|
||||
return position;
|
||||
}
|
||||
|
||||
if (emptyCellIndex == -1) {
|
||||
return -1;
|
||||
} else {
|
||||
_places[position] = boat;
|
||||
return position;
|
||||
}
|
||||
}
|
||||
public T Remove(int position) {
|
||||
if (position < 0 || position >= GetCount()) {
|
||||
return null;
|
||||
}
|
||||
return _places.remove(position);
|
||||
T removedObject = _places[position];
|
||||
_places[position] = null;
|
||||
return removedObject;
|
||||
}
|
||||
public T Get(int position) {
|
||||
if (position < 0 || position >= GetCount()) {
|
||||
return null;
|
||||
}
|
||||
return _places.get(position);
|
||||
}
|
||||
public void Set(int position, T value) {
|
||||
if (position < 0 || position >= GetCount()) {
|
||||
return;
|
||||
}
|
||||
Insert(value, position);
|
||||
}
|
||||
@Override
|
||||
public Iterator<T> iterator()
|
||||
{
|
||||
return _places.iterator();
|
||||
return _places[position];
|
||||
}
|
||||
}
|
@ -46,9 +46,9 @@ public class SetMixedBoatsGeneric<T extends EntityBoat, U extends IDrawningAddit
|
||||
}
|
||||
|
||||
Random random = new Random();
|
||||
T randomArmoredVehicle = _boats[random.nextInt(0, _boatsCount)];
|
||||
T randomBoat = _boats[random.nextInt(0, _boatsCount)];
|
||||
U randomAdditionalElement = _additionalElements[random.nextInt(0, _additionalElementsCount)];
|
||||
|
||||
return new DrawningBoat(randomArmoredVehicle, randomAdditionalElement);
|
||||
return new DrawningBoat(randomBoat, randomAdditionalElement);
|
||||
}
|
||||
}
|
@ -11,8 +11,6 @@
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.control.ListView?>
|
||||
<Pane xmlns:fx="http://javafx.com/fxml" fx:id="root" fx:controller="com.example.pibd22_kalyshev_y_v_motorboat_hard.ControllerMapWithSetBoats">
|
||||
<Canvas fx:id="canvas">
|
||||
</Canvas>
|
||||
@ -20,28 +18,14 @@
|
||||
<Label fx:id="labelTools" style="-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5; -fx-font-weight: bold;">
|
||||
Tools
|
||||
</Label>
|
||||
<VBox fx:id="vBoxMaps" style="-fx-border-color: #b8becc; -fx-border-radius: 5; -fx-border-width: 2; -fx-padding: 5 5 5 5;" spacing="5">
|
||||
<Label style="-fx-text-fill: #b8becc; -fx-padding: 0 0 0 0; -fx-font-weight: bold;">
|
||||
Maps
|
||||
</Label>
|
||||
<TextField fx:id="textFieldNewMapName" />
|
||||
<ComboBox fx:id="comboBoxSelectorMap" value="Simple map">
|
||||
<items>
|
||||
<FXCollections fx:factory="observableArrayList">
|
||||
<String fx:value="Simple map"/>
|
||||
<String fx:value="My second map"/>
|
||||
</FXCollections>
|
||||
</items>
|
||||
</ComboBox>
|
||||
<Button fx:id="buttonAddMap" onAction="#ButtonAddMap_Click">
|
||||
Add map
|
||||
</Button>
|
||||
<ListView fx:id="listViewMaps">
|
||||
</ListView>
|
||||
<Button fx:id="buttonDeleteMap" onAction="#ButtonDeleteMap_Click">
|
||||
Delete map
|
||||
</Button>
|
||||
</VBox>
|
||||
<ComboBox fx:id="comboBoxSelectorMap" value="Simple map" onAction="#ComboBoxSelectorMap_Changed">
|
||||
<items>
|
||||
<FXCollections fx:factory="observableArrayList">
|
||||
<String fx:value="Simple map"/>
|
||||
<String fx:value="My second map"/>
|
||||
</FXCollections>
|
||||
</items>
|
||||
</ComboBox>
|
||||
<Button fx:id="buttonAddBoat" onAction="#ButtonAddBoat_Click">
|
||||
Add boat
|
||||
</Button>
|
||||
@ -49,9 +33,6 @@
|
||||
<Button fx:id="buttonRemoveBoat" onAction="#ButtonRemoveBoat_Click">
|
||||
Remove boat
|
||||
</Button>
|
||||
<Button fx:id="buttonShowRemovedBoat" onAction="#ButtonShowRemovedBoats_Click">
|
||||
Show removed
|
||||
</Button>
|
||||
<Button fx:id="buttonShowStorage" onAction="#ButtonShowStorage_Click">
|
||||
Show storage
|
||||
</Button>
|
||||
@ -87,4 +68,5 @@
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
</Pane>
|
||||
</Pane>
|
||||
|
||||
|
@ -1,81 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
|
||||
<?import javafx.scene.canvas.Canvas?>
|
||||
<?import javafx.scene.layout.FlowPane?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.ComboBox?>
|
||||
<?import javafx.collections.FXCollections?>
|
||||
<?import java.lang.String?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.image.ImageView?>
|
||||
<?import javafx.scene.image.Image?>
|
||||
|
||||
<Pane xmlns:fx="http://javafx.com/fxml" fx:id="root" fx:controller="com.example.pibd22_kalyshev_y_v_motorboat_hard.ControllerRemovedBoat">
|
||||
<Canvas fx:id="canvas">
|
||||
</Canvas>
|
||||
<FlowPane fx:id="flowPane" style="-fx-background-color: #31374c;">
|
||||
<Label style="-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;">
|
||||
Speed:
|
||||
</Label>
|
||||
<Label fx:id="labelSpeedValue" style="-fx-text-fill: #ffffff; -fx-padding: 5 5 5 0; -fx-font-weight: bold;">
|
||||
-
|
||||
</Label>
|
||||
<Label style="-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;">
|
||||
Weight:
|
||||
</Label>
|
||||
<Label fx:id="labelWeightValue" style="-fx-text-fill: #ffffff; -fx-padding: 5 5 5 0; -fx-font-weight: bold;">
|
||||
-
|
||||
</Label>
|
||||
<Label style="-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;">
|
||||
Color:
|
||||
</Label>
|
||||
<Label fx:id="labelBodyColorValue" style="-fx-text-fill: #ffffff; -fx-padding: 5 5 5 0; -fx-font-weight: bold;">
|
||||
-
|
||||
</Label>
|
||||
<Label style="-fx-text-fill: #b8becc; -fx-padding: 5 5 5 5;">
|
||||
Oars:
|
||||
</Label>
|
||||
<ComboBox fx:id="comboBoxNumOars" value="5" onAction="#ComboBoxNumOars_Changed">
|
||||
<items>
|
||||
<FXCollections fx:factory="observableArrayList">
|
||||
<String fx:value="1"/>
|
||||
<String fx:value="2"/>
|
||||
<String fx:value="3"/>
|
||||
</FXCollections>
|
||||
</items>
|
||||
</ComboBox>
|
||||
</FlowPane>
|
||||
<Button fx:id="buttonCreate" onAction="#ButtonCreate_Click">
|
||||
Create
|
||||
</Button>
|
||||
<Button fx:id="buttonLeft" minWidth="30" minHeight="30" onAction="#ButtonMove_Click">
|
||||
<graphic>
|
||||
<ImageView fitHeight="14.0" fitWidth="14.0" pickOnBounds="true" preserveRatio="true">
|
||||
<Image url="@/arrowLeft.png"/>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="buttonRight" minWidth="30" minHeight="30" onAction="#ButtonMove_Click">
|
||||
<graphic>
|
||||
<ImageView fitHeight="14.0" fitWidth="14.0" pickOnBounds="true" preserveRatio="true">
|
||||
<Image url="@/arrowRight.png"/>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="buttonUp" minWidth="30" minHeight="30" onAction="#ButtonMove_Click">
|
||||
<graphic>
|
||||
<ImageView fitHeight="14.0" fitWidth="14.0" pickOnBounds="true" preserveRatio="true">
|
||||
<Image url="@/arrowUp.png"/>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
<Button fx:id="buttonDown" minWidth="30" minHeight="30" onAction="#ButtonMove_Click">
|
||||
<graphic>
|
||||
<ImageView fitHeight="14.0" fitWidth="14.0" pickOnBounds="true" preserveRatio="true">
|
||||
<Image url="@/arrowDown.png"/>
|
||||
</ImageView>
|
||||
</graphic>
|
||||
</Button>
|
||||
</Pane>
|
Loading…
Reference in New Issue
Block a user