SomethingStrange

This commit is contained in:
Sergey Kozyrev 2023-11-28 17:55:40 +04:00
parent 141994f533
commit 7181ff36c0

View File

@ -1,34 +1,98 @@
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.CropImageFilter;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
class CollectionFrame extends JComponent {
private final CarsGenericCollection<DrawTanker, DrawingObjectTanker> _tanks;
private final CarsGenericStorage _tanksStorage;
private final GarageFrame frame;
private Queue<DrawTanker> removedTankers;
protected final int Width;
protected final int Height;
public CollectionFrame(int width, int height)
public CollectionFrame(int width, int height, GarageFrame fr)
{
Width = width;
Height = height;
_tanks = new CarsGenericCollection<>(Width, Height);
_tanksStorage = new CarsGenericStorage(Width, Height);
frame = fr;
removedTankers = new LinkedList<>();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(_tanks.ShowCars(), 0, 0, this);
if (frame.listStorage.getSelectedIndex() == -1)
return;
var obj = _tanksStorage.get(frame.listStorage.getSelectedValue());
if (obj == null)
return;
if (obj.ShowCars() == null)
return;
g.drawImage(obj.ShowCars(), 0, 0, this);
super.repaint();
}
protected void ReloadObjects()
{
int index = frame.listStorage.getSelectedIndex();
frame.listModel.clear();
for (String key : _tanksStorage.Keys())
{
frame.listModel.addElement(key);
}
if (!frame.listModel.isEmpty() && (index == -1 || index >= frame.listModel.size()))
{
frame.listStorage.setSelectedIndex(0);
}
else if (!frame.listModel.isEmpty() && index > -1 && index < frame.listModel.size())
{
frame.listStorage.setSelectedIndex(index);
}
}
protected void ButtonAddObject_Click()
{
String name = frame.nameStorageField.getText();
if (name.length() == 0)
return;
_tanksStorage.AddSet(name);
ReloadObjects();
}
protected void ButtonRemoveObject_Click()
{
if (frame.listStorage.getSelectedIndex() == -1)
{
return;
}
if (JOptionPane.showConfirmDialog(null, "Delete object " + frame.listStorage.getSelectedValue() + "?", "Delete", JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION)
{
return;
}
_tanksStorage.DelSet(frame.listStorage.getSelectedValue());
ReloadObjects();
}
protected void ButtonAddTank_Click()
{
if (frame.listStorage.getSelectedIndex() == -1)
return;
var obj = _tanksStorage.get(frame.listStorage.getSelectedValue());
if (obj == null)
return;
BaseFrame form = new BaseFrame();
form.setVisible(true);
form.buttonSelect.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e){
if (_tanks.plus(form.Gasoline.GetSelectedCar()) != -1)
if (obj.plus(form.Gasoline.GetSelectedCar()) != -1)
{
form.dispose();
JOptionPane.showMessageDialog(null, "Объект добавлен", "Информация", JOptionPane.INFORMATION_MESSAGE);
@ -48,11 +112,23 @@ class CollectionFrame extends JComponent {
protected void ButtonRemoveTank_Click(String text)
{
if (frame.listStorage.getSelectedIndex() == -1)
return;
var obj = _tanksStorage.get(frame.listStorage.getSelectedValue());
if (obj == null)
return;
if (JOptionPane.showConfirmDialog(null, "Delete Tanker?", "Delete", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION)
{
if (_tanks.minus(Integer.parseInt(text)) != null)
int index = -1;
DrawTanker deleted = null;
try {
deleted = obj.minus(Integer.parseInt(text));
} catch(NumberFormatException e) {
}
if (deleted != null)
{
JOptionPane.showMessageDialog(null, "Объект удален", "Информация", JOptionPane.INFORMATION_MESSAGE);
removedTankers.add(deleted);
super.repaint();
}
else
@ -65,6 +141,14 @@ class CollectionFrame extends JComponent {
protected void ButtonUpdate_Click() {super.repaint();}
protected void ButtonCreateDeleted_Click()
{
if (removedTankers.isEmpty())
return;
var tank = removedTankers.poll();
BaseFrame f = new BaseFrame(tank);
f.setVisible(true);
}
}
class GarageFrame extends JFrame {
@ -76,6 +160,18 @@ class GarageFrame extends JFrame {
protected static final int Width = 1000;
protected static final int Height = 600;
CollectionFrame Collection;
JButton addTankerButton;
JTextField indexTankerField;
JButton deleteTankerButton;
JButton updateCollectionButton;
JList<String> listStorage;
DefaultListModel<String> listModel;
JButton addCollectionButton;
JTextField nameStorageField;
JButton deleteCollectionbutton;
JButton createDeletedButton;
private void initUI()
{
setSize(Width, Height);
@ -86,7 +182,7 @@ class GarageFrame extends JFrame {
setResizable(false);
JButton addTankerButton = new JButton("Add tanker");
addTankerButton = new JButton("Add tanker");
addTankerButton.setLayout(null);
addTankerButton.setBounds(Width-200, Height-550, 200, 30);
add(addTankerButton);
@ -97,12 +193,12 @@ class GarageFrame extends JFrame {
}
});
JTextField indexTankerField = new JTextField();
indexTankerField = new JTextField();
indexTankerField.setBounds(Width- 200, Height-500, 200, 30);
indexTankerField.setLayout(null);
add(indexTankerField);
JButton deleteTankerButton = new JButton("Delete tanker");
deleteTankerButton = new JButton("Delete tanker");
deleteTankerButton.setLayout(null);
deleteTankerButton.setBounds(Width-200, Height-450, 200, 30);
add(deleteTankerButton);
@ -113,7 +209,7 @@ class GarageFrame extends JFrame {
}
});
JButton updateCollectionButton = new JButton("Update collection");
updateCollectionButton = new JButton("Update collection");
updateCollectionButton.setLayout(null);
updateCollectionButton.setBounds(Width-200, Height-400, 200, 30);
add(updateCollectionButton);
@ -124,9 +220,59 @@ class GarageFrame extends JFrame {
}
});
listModel = new DefaultListModel<>();
listStorage = new JList<String>(listModel);
listStorage.setLayout(null);
listStorage.setBounds(Width - 190, Height - 250, 180, 130);
add(listStorage);
listStorage.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
Collection.repaint();
}
});
Collection = new CollectionFrame(Width-200, Height);
addCollectionButton = new JButton("Add Collection");
addCollectionButton.setLayout(null);
addCollectionButton.setBounds(Width-190, Height - 350, 180, 30);
add(addCollectionButton);
addCollectionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Collection.ButtonAddObject_Click();
}
});
nameStorageField = new JTextField();
nameStorageField.setBounds(Width- 190, Height- 300, 180, 30);
nameStorageField.setLayout(null);
add(nameStorageField);
deleteCollectionbutton = new JButton("Remove Collection");
deleteCollectionbutton.setBounds(Width-190, Height - 100, 180, 30);
deleteCollectionbutton.setLayout(null);
add(deleteCollectionbutton);
deleteCollectionbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Collection.ButtonRemoveObject_Click();
}
});
createDeletedButton = new JButton("Create deleted");
createDeletedButton.setLayout(null);
createDeletedButton.setBounds(Width - 200, 10, 200, 30);
add(createDeletedButton);
createDeletedButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Collection.ButtonCreateDeleted_Click();
}
});
Collection = new CollectionFrame(Width-200, Height, this);
Collection.setLayout(null);
Collection.setBounds(0, 0, Width-200, Height);
add(Collection);