221 lines
8.6 KiB
Java
221 lines
8.6 KiB
Java
import CollectionGenericObjects.AbstractCompany;
|
|
import CollectionGenericObjects.MassiveGenericObjects;
|
|
import CollectionGenericObjects.ShipPortService;
|
|
import DrawingShip.CanvasFormShipCollection;
|
|
import DrawingShip.DrawingShip;
|
|
import DrawingShip.DrawingWarmlyShip;
|
|
|
|
import javax.swing.*;
|
|
import javax.swing.text.MaskFormatter;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.event.ComponentAdapter;
|
|
import java.awt.event.ComponentEvent;
|
|
import java.text.ParseException;
|
|
import java.util.Random;
|
|
|
|
import static java.lang.Integer.parseInt;
|
|
|
|
public class FormShipCollection extends JFrame{
|
|
private String title;
|
|
private Dimension dimension;
|
|
public static CanvasFormShipCollection<DrawingShip> _canvasWarmlyShip = new CanvasFormShipCollection<DrawingShip>();
|
|
private static AbstractCompany _company = null;
|
|
private JButton CreateButton = new JButton("Create warmlyship");;
|
|
private JButton CreateShipButton = new JButton("Create ship");
|
|
private JButton RemoveButton = new JButton("Remove");
|
|
private JButton GoToCheckButton = new JButton("Check");
|
|
private JButton RandomButton = new JButton("RandomShip");
|
|
private JButton RefreshButton = new JButton("Refresh");
|
|
private JComboBox ComboBoxCollections = new JComboBox(new String[]{"", "Хранилище"});
|
|
private JFormattedTextField MaskedTextField;
|
|
public FormShipCollection(String title, Dimension dimension) {
|
|
this.title = title;
|
|
this.dimension = dimension;
|
|
}
|
|
public static void canvasShow() {
|
|
_company.SetPosition();
|
|
_canvasWarmlyShip.SetCollectionToCanvas(_company);
|
|
_canvasWarmlyShip.repaint();
|
|
}
|
|
private void CreateObject(String typeOfClass) {
|
|
if (_company == null) return;
|
|
int speed = (int)(Math.random() * 300 + 100);
|
|
double weight = (double)(Math.random() * 3000 + 1000);
|
|
Color bodyColor = getColor();
|
|
DrawingShip drawingShip;
|
|
switch (typeOfClass) {
|
|
case "DrawingShip":
|
|
drawingShip = new DrawingShip(speed, weight, bodyColor);
|
|
break;
|
|
case "DrawingWarmlyShip":
|
|
Color additionalColor = getColor();
|
|
boolean sheepPipes = new Random().nextBoolean();
|
|
boolean fuelTank = new Random().nextBoolean();;
|
|
drawingShip = new DrawingWarmlyShip(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank);
|
|
break;
|
|
default: return;
|
|
}
|
|
if (_company._collection.Insert(drawingShip, 0) != -1) {
|
|
JOptionPane.showMessageDialog(null, "Объект добавлен");
|
|
canvasShow();
|
|
}
|
|
else {
|
|
JOptionPane.showMessageDialog(null, "Объект не удалось добавить");
|
|
}
|
|
}
|
|
public Color getColor() {
|
|
Color initializator = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0));
|
|
Color color = JColorChooser.showDialog(this, "Select a color", initializator);
|
|
return color;
|
|
}
|
|
public void Init() {
|
|
setTitle(title);
|
|
setMinimumSize(dimension);
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
MaskFormatter mask = null;
|
|
try {
|
|
mask = new MaskFormatter("##");
|
|
mask.setPlaceholder("00");
|
|
} catch (ParseException e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
|
|
MaskedTextField = new JFormattedTextField(mask);
|
|
|
|
ComboBoxCollections.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
switch (ComboBoxCollections.getSelectedItem().toString()) {
|
|
case "Хранилище":
|
|
_company = new ShipPortService(getWidth()-200, getHeight()-70, new MassiveGenericObjects<DrawingShip>());
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
|
|
CreateShipButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
CreateObject("DrawingShip");
|
|
}
|
|
});
|
|
CreateButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
CreateObject("DrawingWarmlyShip");
|
|
}
|
|
});
|
|
|
|
RemoveButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
if (_company == null || MaskedTextField.getText() == null) {
|
|
return;
|
|
}
|
|
int pos = parseInt(MaskedTextField.getText());
|
|
int resultConfirmDialog = JOptionPane.showConfirmDialog(null,
|
|
"Удалить", "Удаление",
|
|
JOptionPane.YES_NO_OPTION);
|
|
if (resultConfirmDialog == JOptionPane.NO_OPTION) return;
|
|
if (_company._collection.Remove(pos) != null) {
|
|
JOptionPane.showMessageDialog(null, "Объект удален");
|
|
canvasShow();
|
|
}
|
|
else {
|
|
JOptionPane.showMessageDialog(null, "Объект не удалось удалить");
|
|
}
|
|
}
|
|
});
|
|
|
|
GoToCheckButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
if (_company == null)
|
|
{
|
|
return;
|
|
}
|
|
DrawingShip ship = null;
|
|
int counter = 100;
|
|
while (ship == null)
|
|
{
|
|
ship = _company.GetRandomObject();
|
|
counter--;
|
|
if (counter <= 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
if (ship == null)
|
|
{
|
|
return;
|
|
}
|
|
FormWarmlyShip form = new FormWarmlyShip("Теплоход", new Dimension(900,565));
|
|
form.Init(ship);
|
|
}
|
|
});
|
|
|
|
RandomButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
if (_company == null)
|
|
{
|
|
return;
|
|
}
|
|
FormAdditionalCollection form = new FormAdditionalCollection();
|
|
form.setCompany(_company);
|
|
}
|
|
});
|
|
|
|
RefreshButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
if (_company == null)
|
|
{
|
|
return;
|
|
}
|
|
canvasShow();
|
|
}
|
|
});
|
|
|
|
_canvasWarmlyShip.setBounds(0, 0, getWidth()-200, getHeight());
|
|
ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20);
|
|
CreateShipButton.setBounds(getWidth()-190, 60, 150, 30);
|
|
CreateButton.setBounds(getWidth()-190, 100, 150, 30);
|
|
MaskedTextField.setBounds(getWidth()-190,200,150,30);
|
|
RemoveButton.setBounds(getWidth()-190, 240, 150, 30);
|
|
GoToCheckButton.setBounds(getWidth()-190, 280, 150, 30);
|
|
RandomButton.setBounds(getWidth()-190, 320, 150, 30);
|
|
RefreshButton.setBounds(getWidth()-190, getHeight()-90, 150, 30);
|
|
|
|
setSize(dimension.width,dimension.height);
|
|
setLayout(null);
|
|
add(_canvasWarmlyShip);
|
|
add(ComboBoxCollections);
|
|
add(CreateShipButton);
|
|
add(CreateButton);
|
|
add(MaskedTextField);
|
|
add(RemoveButton);
|
|
add(GoToCheckButton);
|
|
add(RandomButton);
|
|
add(RefreshButton);
|
|
setVisible(true);
|
|
|
|
addComponentListener(new ComponentAdapter() {
|
|
public void componentResized(ComponentEvent e) {
|
|
_canvasWarmlyShip.setBounds(0, 0, getWidth()-200, getHeight()-70);
|
|
ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20);
|
|
CreateShipButton.setBounds(getWidth()-190, 60, 150, 30);
|
|
CreateButton.setBounds(getWidth()-190, 100, 150, 30);
|
|
MaskedTextField.setBounds(getWidth()-190,200,150,30);
|
|
RemoveButton.setBounds(getWidth()-190, 240, 150, 30);
|
|
GoToCheckButton.setBounds(getWidth()-190, 280, 150, 30);
|
|
RandomButton.setBounds(getWidth()-190, 320, 150, 30);
|
|
RefreshButton.setBounds(getWidth()-190, getHeight()-90, 150, 30);
|
|
}
|
|
});
|
|
}
|
|
}
|