Задания усложненной части 4 лабы выполнены, требуется чистка, рефакторинг и уточнение требований к реализации задания

This commit is contained in:
Данила Мочалов 2022-11-05 18:49:21 +04:00
parent 8a94c4d44b
commit 2d621bbe70
5 changed files with 52 additions and 2 deletions

View File

@ -2,6 +2,9 @@ import java.awt.*;
public class DrawningObjectLocomotive implements IDrawningObject { public class DrawningObjectLocomotive implements IDrawningObject {
private DrawningLocomotive _locomotive = null; private DrawningLocomotive _locomotive = null;
public DrawningLocomotive GetDrawningLocomotive() {
return _locomotive;
}
public DrawningObjectLocomotive(DrawningLocomotive locomotive) public DrawningObjectLocomotive(DrawningLocomotive locomotive)
{ {

View File

@ -8,6 +8,11 @@ public class FormLocomotive extends JComponent{
public DrawningLocomotive getSelectedLocomotive() { public DrawningLocomotive getSelectedLocomotive() {
return SelectedLocomotive; return SelectedLocomotive;
} }
public void SetLocomotive(DrawningObjectLocomotive locomotive){
// TODO добавлен геттер в drawningobjectlocomotive
_locomotive = locomotive.GetDrawningLocomotive();
repaint();
}
public FormLocomotive(JDialog caller) { public FormLocomotive(JDialog caller) {
Panel statusPanel = new Panel(); Panel statusPanel = new Panel();

View File

@ -286,6 +286,28 @@ public class FormMapWithSetLocomotives extends JComponent {
}); });
statusPanel.add(showGalleryButton); statusPanel.add(showGalleryButton);
// Кнопка показа удаленных объектов
JButton showDeletedButton = new JButton("Show Deleted");
showDeletedButton.addActionListener(e -> {
// По отдельной кнопке вызывать форму работы с объектом (из
//первой лабораторной), передавая туда элемент из коллекции
//удаленных, если там есть
DrawningObjectLocomotive locomotive = _mapsCollection.Get(listBoxMaps.getSelectedValue().toString()).getDeleted();
if (locomotive != null) {
JDialog dialog = new JDialog(formFrame, "Deleted", true);
FormLocomotive formLocomotive = new FormLocomotive(dialog);
// TODO чтобы передать локомотив в форму добавляем метод в formlocomotive
formLocomotive.SetLocomotive(locomotive);
dialog.setSize(800, 500);
dialog.setContentPane(formLocomotive);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
}
});
statusPanel.add(showDeletedButton);
formFrame.getContentPane().add(this); formFrame.getContentPane().add(this);
formFrame.setVisible(true); formFrame.setVisible(true);
} }

View File

@ -1,5 +1,6 @@
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.LinkedList;
public class MapWithSetLocomotivesGeneric public class MapWithSetLocomotivesGeneric
<T extends IDrawningObject, U extends AbstractMap> <T extends IDrawningObject, U extends AbstractMap>
@ -14,7 +15,16 @@ public class MapWithSetLocomotivesGeneric
private final int _placeSizeHeight = 90; private final int _placeSizeHeight = 90;
/// Набор объектов /// Набор объектов
private final SetLocomotivesGeneric<T> _setLocomotives; //TODO переделал на public, узнать так ли вообще надо?
public final SetLocomotivesGeneric<T> _setLocomotives;
// Список удаленных объектов
LinkedList<DrawningObjectLocomotive> deletedLocomotives = new LinkedList<>();
public DrawningObjectLocomotive getDeleted() {
if (deletedLocomotives.isEmpty()) return null;
return deletedLocomotives.removeFirst();
}
/// Карта /// Карта
private final U _map; private final U _map;
/// Конструктор /// Конструктор
@ -36,7 +46,10 @@ public class MapWithSetLocomotivesGeneric
/// Удаление /// Удаление
public T Minus(int position) public T Minus(int position)
{ {
return this._setLocomotives.Remove(position); T temp = this._setLocomotives.Remove(position);
if (temp == null) return null;
if (temp instanceof DrawningObjectLocomotive) deletedLocomotives.add((DrawningObjectLocomotive) temp);
return temp;
} }
/// Вывод всего набора объектов /// Вывод всего набора объектов
public BufferedImage ShowSet() public BufferedImage ShowSet()

View File

@ -4,6 +4,7 @@ import java.util.HashMap;
public class MapsCollection { public class MapsCollection {
/// Словарь (хранилище) с картами /// Словарь (хранилище) с картами
final HashMap<String, MapWithSetLocomotivesGeneric<DrawningObjectLocomotive, AbstractMap>> _mapStorages; final HashMap<String, MapWithSetLocomotivesGeneric<DrawningObjectLocomotive, AbstractMap>> _mapStorages;
/// Возвращение списка названий карт /// Возвращение списка названий карт
public ArrayList<String> keys() { public ArrayList<String> keys() {
return new ArrayList<String>(_mapStorages.keySet()); return new ArrayList<String>(_mapStorages.keySet());
@ -38,4 +39,10 @@ public class MapsCollection {
if (_mapStorages.containsKey(ind)) return _mapStorages.get(ind); if (_mapStorages.containsKey(ind)) return _mapStorages.get(ind);
return null; return null;
} }
// Доп.индексатор из задания
// TODO поле setlocomotives в mapwithsetlocomotivesgeneric было изменено на public
public DrawningObjectLocomotive Get (String name, int position) {
if (_mapStorages.containsKey(name)) return _mapStorages.get(name)._setLocomotives.Get(position);
else return null;
}
} }