Лабораторная работа №3
This commit is contained in:
parent
61435bd7d2
commit
ec302cae53
11
src/src.iml
11
src/src.iml
@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="JAVA_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
|
||||||
<exclude-output />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
54
src/src/CollectionGenericObjects/AbstractCompany.java
Normal file
54
src/src/CollectionGenericObjects/AbstractCompany.java
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package CollectionGenericObjects;
|
||||||
|
import Drawings.DrawingTruck;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public abstract class AbstractCompany {
|
||||||
|
|
||||||
|
/// Размер места (ширина)
|
||||||
|
protected int _placeSizeWidth = 190;
|
||||||
|
|
||||||
|
/// Размер места (высота)
|
||||||
|
protected int _placeSizeHeight = 100;
|
||||||
|
|
||||||
|
/// Ширина окна
|
||||||
|
protected int _pictureWidth;
|
||||||
|
|
||||||
|
/// Высота окна
|
||||||
|
protected int _pictureHeight;
|
||||||
|
|
||||||
|
/// Коллекция автомобилей
|
||||||
|
public ICollectionGenericObjects<DrawingTruck> _collection = null;
|
||||||
|
|
||||||
|
/// Вычисление максимального количества элементов, который можно разместить в окне
|
||||||
|
private int GetMaxCount(){
|
||||||
|
|
||||||
|
return _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Конструктор
|
||||||
|
public AbstractCompany(int picWidth, int picHeight, ICollectionGenericObjects<DrawingTruck> collection)
|
||||||
|
{
|
||||||
|
_pictureWidth = picWidth;
|
||||||
|
_pictureHeight = picHeight;
|
||||||
|
_collection = collection;
|
||||||
|
_collection.SetMaxCount(GetMaxCount(), (Class)DrawingTruck.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Получение случайного объекта из коллекции
|
||||||
|
public DrawingTruck GetRandomObject()
|
||||||
|
{
|
||||||
|
return _collection.Get((int)(Math.random()*GetMaxCount() + 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Вывод заднего фона
|
||||||
|
public abstract void DrawBackgound(Graphics g);
|
||||||
|
|
||||||
|
/// Расстановка объектов
|
||||||
|
protected abstract void SetObjectsPosition();
|
||||||
|
|
||||||
|
public void SetPosition()
|
||||||
|
{
|
||||||
|
SetObjectsPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
61
src/src/CollectionGenericObjects/AdditionalCollection.java
Normal file
61
src/src/CollectionGenericObjects/AdditionalCollection.java
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
package CollectionGenericObjects;
|
||||||
|
import java.lang.reflect.Array;
|
||||||
|
import java.util.Random;
|
||||||
|
import Drawings.DrawingGasolineTanker;
|
||||||
|
import Drawings.DrawingTruck;
|
||||||
|
import Entities.EntityGasolineTanker;
|
||||||
|
import Entities.EntityTruck;
|
||||||
|
import Wheels.IDrawingWheels;
|
||||||
|
|
||||||
|
public class AdditionalCollection<T extends EntityTruck, U extends IDrawingWheels> {
|
||||||
|
public T[] _collectionEntity;
|
||||||
|
public U[] _collectionWheels;
|
||||||
|
|
||||||
|
public AdditionalCollection(int size, Class<T> type1, Class<T> type2) {
|
||||||
|
_collectionEntity = (T[]) Array.newInstance(type1, size);
|
||||||
|
_collectionWheels = (U[]) Array.newInstance(type2, size);
|
||||||
|
CountEntities = size;
|
||||||
|
CountWheels = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int CountEntities;
|
||||||
|
public int CountWheels;
|
||||||
|
|
||||||
|
public int Insert(T entity) {
|
||||||
|
for (int i = 0; i < CountEntities; ++i) {
|
||||||
|
if (_collectionEntity[i] == null) {
|
||||||
|
_collectionEntity[i] = entity;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Insert(U wheels) {
|
||||||
|
for (int i = 0; i < CountWheels; ++i) {
|
||||||
|
if (_collectionWheels[i] == null) {
|
||||||
|
_collectionWheels[i] = wheels;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DrawingTruck CreateAdditionalCollectionTruck() {
|
||||||
|
Random random = new Random();
|
||||||
|
if (_collectionEntity == null || _collectionWheels == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
T entity = _collectionEntity[random.nextInt(CountEntities)];
|
||||||
|
U wheels = _collectionWheels[random.nextInt(CountWheels)];
|
||||||
|
DrawingTruck drawingTruck = null;
|
||||||
|
if (entity instanceof EntityGasolineTanker) {
|
||||||
|
drawingTruck = new DrawingGasolineTanker((EntityGasolineTanker) entity, wheels);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
drawingTruck = new DrawingTruck(entity, wheels);
|
||||||
|
}
|
||||||
|
return drawingTruck;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package CollectionGenericObjects;
|
||||||
|
|
||||||
|
public interface ICollectionGenericObjects<T> {
|
||||||
|
int getCount();
|
||||||
|
void SetMaxCount(int count, Class<T> type);
|
||||||
|
int Insert(T obj);
|
||||||
|
int Insert(T obj, int position);
|
||||||
|
T Remove(int position);
|
||||||
|
T Get(int position);
|
||||||
|
}
|
80
src/src/CollectionGenericObjects/MassiveGenericObjects.java
Normal file
80
src/src/CollectionGenericObjects/MassiveGenericObjects.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package CollectionGenericObjects;
|
||||||
|
|
||||||
|
import java.lang.reflect.Array;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MassiveGenericObjects<T> implements ICollectionGenericObjects<T> {
|
||||||
|
private T[] _collection;
|
||||||
|
private int Count;
|
||||||
|
public void SetMaxCount(int size, Class<T> type) {
|
||||||
|
if (size > 0) {
|
||||||
|
_collection = (T[]) Array.newInstance(type, size);
|
||||||
|
Count = size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int getCount() {
|
||||||
|
return Count;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T Get(int position) {
|
||||||
|
if (position >= getCount() || position < 0) return null;
|
||||||
|
return (T) _collection[position];
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int Insert(T obj) {
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
while (index < getCount())
|
||||||
|
{
|
||||||
|
if (_collection[index] == null)
|
||||||
|
{
|
||||||
|
_collection[index] = obj;
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
++index;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public int Insert(T obj, int position) {
|
||||||
|
|
||||||
|
if (position >= getCount() || position < 0)
|
||||||
|
return -1;
|
||||||
|
if (_collection[position] == null) {
|
||||||
|
_collection[position] = obj;
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
int index = position + 1;
|
||||||
|
while (index < getCount())
|
||||||
|
{
|
||||||
|
if (_collection[index] == null)
|
||||||
|
{
|
||||||
|
_collection[index] = obj;
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
++index;
|
||||||
|
}
|
||||||
|
index = position - 1;
|
||||||
|
while (index >= 0)
|
||||||
|
{
|
||||||
|
if (_collection[index] == null)
|
||||||
|
{
|
||||||
|
_collection[index] = obj;
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
--index;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public T Remove(int position) {
|
||||||
|
if (position >= getCount() || position < 0)
|
||||||
|
return null;
|
||||||
|
T obj = (T) _collection[position];
|
||||||
|
_collection[position] = null;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
49
src/src/CollectionGenericObjects/TruckSharingService.java
Normal file
49
src/src/CollectionGenericObjects/TruckSharingService.java
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package CollectionGenericObjects;
|
||||||
|
import Drawings.DrawingTruck;
|
||||||
|
import java.awt.*;
|
||||||
|
public class TruckSharingService extends AbstractCompany {
|
||||||
|
public TruckSharingService(int picWidth, int picHeight, ICollectionGenericObjects<DrawingTruck> collection) {
|
||||||
|
super(picWidth, picHeight, collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void DrawBackgound(Graphics g) {
|
||||||
|
int count_width = _pictureWidth / _placeSizeWidth; // кол-во мест в ширину
|
||||||
|
int count_height = _pictureHeight / _placeSizeHeight;
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
for (int i = 0; i < count_width; i++) {
|
||||||
|
for (int j = 0; j < count_height+1; ++j) {
|
||||||
|
g.drawLine(i * _placeSizeWidth + 10, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth - 50, j * _placeSizeHeight); // вертикаль
|
||||||
|
g.drawLine(i * _placeSizeWidth + 10, j * _placeSizeHeight, i * _placeSizeWidth + 10, j * _placeSizeHeight + _placeSizeHeight);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void SetObjectsPosition() {
|
||||||
|
int width = _pictureWidth / _placeSizeWidth;
|
||||||
|
int height = _pictureHeight / _placeSizeHeight;
|
||||||
|
int positionWidth = 0;
|
||||||
|
int positionHeight = height - 1;
|
||||||
|
for (int i = 0; i < (_collection.getCount()); i++) {
|
||||||
|
if (_collection.Get(i) != null) {
|
||||||
|
_collection.Get(i).SetPictureSize(_pictureWidth, _pictureHeight);
|
||||||
|
_collection.Get(i).SetPosition(_placeSizeWidth * positionWidth + 20, positionHeight * _placeSizeHeight + 5);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (positionWidth < width - 1) {
|
||||||
|
positionWidth++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
positionWidth = 0;
|
||||||
|
positionHeight--;
|
||||||
|
}
|
||||||
|
if (positionHeight < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
31
src/src/Drawings/CanvasFormTruckCollection.java
Normal file
31
src/src/Drawings/CanvasFormTruckCollection.java
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package Drawings;
|
||||||
|
import javax.swing.*;
|
||||||
|
import CollectionGenericObjects.AbstractCompany;
|
||||||
|
import CollectionGenericObjects.ICollectionGenericObjects;
|
||||||
|
import CollectionGenericObjects.MassiveGenericObjects;
|
||||||
|
import Drawings.DrawingTruck;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class CanvasFormTruckCollection<T> extends JComponent {
|
||||||
|
public AbstractCompany company = null;
|
||||||
|
public void SetCollectionToCanvas(AbstractCompany company) {
|
||||||
|
this.company = company;
|
||||||
|
}
|
||||||
|
public CanvasFormTruckCollection () {};
|
||||||
|
public void paintComponent(Graphics g) {
|
||||||
|
super.paintComponents(g);
|
||||||
|
if (company == null || company._collection == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
company.DrawBackgound(g);
|
||||||
|
for (int i = 0; i < company._collection.getCount(); i++) {
|
||||||
|
|
||||||
|
Graphics2D g2d = (Graphics2D) g;
|
||||||
|
T obj = (T) company._collection.Get(i);
|
||||||
|
if (obj instanceof DrawingTruck) {
|
||||||
|
((DrawingTruck) obj).DrawTransport(g2d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
super.repaint();
|
||||||
|
}
|
||||||
|
}
|
@ -1,18 +1,23 @@
|
|||||||
package Drawings;
|
package Drawings;
|
||||||
import Entities.EntityGasolineTanker;
|
import Entities.EntityGasolineTanker;
|
||||||
|
import Entities.EntityTruck;
|
||||||
import Wheels.IDrawingWheels;
|
import Wheels.IDrawingWheels;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
public class DrawingGasolineTanker extends DrawingTruck{
|
public class DrawingGasolineTanker extends DrawingTruck{
|
||||||
private IDrawingWheels drawingWheels;
|
public DrawingGasolineTanker(int speed, double weight, Color bodyColor, Color additionalColor, boolean gasTank, boolean signalBeacon) {
|
||||||
|
//super(105,70);
|
||||||
public DrawingGasolineTanker(int speed, double weight, Color bodyColor, Color additionalColor, boolean gasTank, boolean signalBeacon, int number) {
|
EntityTruck = new EntityGasolineTanker(speed, weight, bodyColor, additionalColor, gasTank, signalBeacon);
|
||||||
super(105,70);
|
|
||||||
EntityTruck = new EntityGasolineTanker(speed, weight, bodyColor, additionalColor, gasTank, signalBeacon, number);
|
|
||||||
DrawWheels();
|
DrawWheels();
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
|
public DrawingGasolineTanker(EntityGasolineTanker entity, IDrawingWheels wheels) {
|
||||||
|
EntityTruck = entity;
|
||||||
|
drawingWheels = wheels;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void DrawTransport(Graphics2D g) {
|
public void DrawTransport(Graphics2D g) {
|
||||||
if (EntityTruck == null || !(EntityTruck instanceof EntityGasolineTanker gasolineTanker) || _startPosX == null || _startPosY == null) {
|
if (EntityTruck == null || !(EntityTruck instanceof EntityGasolineTanker gasolineTanker) || _startPosX == null || _startPosY == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -4,12 +4,13 @@ import Wheels.DrawingOrnamentSquare;
|
|||||||
import Wheels.DrawingOrnamentHeart;
|
import Wheels.DrawingOrnamentHeart;
|
||||||
import Wheels.DrawingWheels;
|
import Wheels.DrawingWheels;
|
||||||
import Wheels.IDrawingWheels;
|
import Wheels.IDrawingWheels;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
public class DrawingTruck extends JPanel{
|
public class DrawingTruck extends JPanel{
|
||||||
private IDrawingWheels drawingWheels;
|
|
||||||
|
public IDrawingWheels drawingWheels;
|
||||||
|
|
||||||
public Entities.EntityTruck EntityTruck;
|
public Entities.EntityTruck EntityTruck;
|
||||||
// Ширина окна
|
// Ширина окна
|
||||||
private Integer _pictureWidth;
|
private Integer _pictureWidth;
|
||||||
@ -34,9 +35,10 @@ public class DrawingTruck extends JPanel{
|
|||||||
public Integer GetWidth() {return _drawingTruckWidth;}
|
public Integer GetWidth() {return _drawingTruckWidth;}
|
||||||
public Integer GetHeight() {return _drawingTruckHeight;}
|
public Integer GetHeight() {return _drawingTruckHeight;}
|
||||||
|
|
||||||
protected void DrawWheels() {
|
public void DrawWheels() {
|
||||||
int number = (int)(Math.random() * 4 + 0);
|
int numWheels = (int)(Math.random() * 4 + 2);
|
||||||
switch ((int)(Math.random() * 3 + 1)) {
|
switch ((int)(Math.random() * 3 + 1)) {
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
drawingWheels = new DrawingWheels();
|
drawingWheels = new DrawingWheels();
|
||||||
break;
|
break;
|
||||||
@ -47,10 +49,10 @@ public class DrawingTruck extends JPanel{
|
|||||||
drawingWheels = new DrawingOrnamentHeart();
|
drawingWheels = new DrawingOrnamentHeart();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
number = 0;
|
drawingWheels = new DrawingOrnamentSquare();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
drawingWheels.setNumWheels(number);
|
drawingWheels.setNumWheels(numWheels);
|
||||||
}
|
}
|
||||||
protected DrawingTruck(){
|
protected DrawingTruck(){
|
||||||
_pictureWidth = null;
|
_pictureWidth = null;
|
||||||
@ -59,17 +61,24 @@ public class DrawingTruck extends JPanel{
|
|||||||
_startPosY = null;
|
_startPosY = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DrawingTruck(int speed, double weight, Color bodyColor, int number){
|
public DrawingTruck(int speed, double weight, Color bodyColor){
|
||||||
super();
|
super();
|
||||||
EntityTruck = new EntityTruck(speed, weight, bodyColor);
|
EntityTruck = new EntityTruck(speed, weight, bodyColor);
|
||||||
DrawWheels();
|
DrawWheels();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DrawingTruck(EntityTruck entity, IDrawingWheels wheels) {
|
||||||
|
|
||||||
|
EntityTruck = entity;
|
||||||
|
drawingWheels = wheels;
|
||||||
|
}
|
||||||
|
|
||||||
protected DrawingTruck(int drawingTruckWidth, int drawingTruckHeight)
|
protected DrawingTruck(int drawingTruckWidth, int drawingTruckHeight)
|
||||||
{
|
{
|
||||||
_drawingTruckWidth = drawingTruckWidth;
|
super();
|
||||||
_drawingTruckHeight = drawingTruckHeight;
|
this._drawingTruckWidth = drawingTruckWidth;
|
||||||
|
this._drawingTruckHeight = drawingTruckHeight;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,8 +197,15 @@ public class DrawingTruck extends JPanel{
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// колеса
|
|
||||||
drawingWheels.drawWheels(g, Color.BLACK, _startPosX, _startPosY);
|
if (drawingWheels == null) {
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
g.fillOval(_startPosX + 5, _startPosY + 50, 20, 20);
|
||||||
|
g.fillOval(_startPosX + 25, _startPosY + 50, 20, 20);
|
||||||
|
g.fillOval(_startPosX + 85, _startPosY + 50, 20, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
else drawingWheels.drawWheels(g, Color.BLACK, _startPosX, _startPosY);
|
||||||
|
|
||||||
// нижняя платформа
|
// нижняя платформа
|
||||||
g.setColor(EntityTruck.getBodyColor());
|
g.setColor(EntityTruck.getBodyColor());
|
||||||
|
@ -15,7 +15,7 @@ public class EntityGasolineTanker extends EntityTruck{
|
|||||||
public boolean SignalBeacon;
|
public boolean SignalBeacon;
|
||||||
public boolean getSignalBeacon() {return SignalBeacon;}
|
public boolean getSignalBeacon() {return SignalBeacon;}
|
||||||
|
|
||||||
public EntityGasolineTanker(int speed, double weight, Color bodyColor, Color additionalColor, boolean signalBeacon, boolean gasTank, int numWheels){
|
public EntityGasolineTanker(int speed, double weight, Color bodyColor, Color additionalColor, boolean signalBeacon, boolean gasTank){
|
||||||
super(speed, weight, bodyColor);
|
super(speed, weight, bodyColor);
|
||||||
AdditionalColor = additionalColor;
|
AdditionalColor = additionalColor;
|
||||||
GasTank = gasTank;
|
GasTank = gasTank;
|
||||||
|
13
src/src/FormAdditionalCollection.form
Normal file
13
src/src/FormAdditionalCollection.form
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="FormAdditionalCollection">
|
||||||
|
<grid id="27dc6" row-count="1" column-count="1" layout-manager="GridLayoutManager">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<xy x="20" y="20" width="500" height="400"/>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children/>
|
||||||
|
</grid>
|
||||||
|
</form>
|
177
src/src/FormAdditionalCollection.java
Normal file
177
src/src/FormAdditionalCollection.java
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
import CollectionGenericObjects.AbstractCompany;
|
||||||
|
import Drawings.DrawingGasolineTanker;
|
||||||
|
import Drawings.DrawingTruck;
|
||||||
|
import Drawings.CanvasGasolineTanker;
|
||||||
|
import Entities.EntityGasolineTanker;
|
||||||
|
import Entities.EntityTruck;
|
||||||
|
import Wheels.DrawingOrnamentHeart;
|
||||||
|
import Wheels.DrawingOrnamentSquare;
|
||||||
|
import Wheels.DrawingWheels;
|
||||||
|
import Wheels.IDrawingWheels;
|
||||||
|
import CollectionGenericObjects.AdditionalCollection;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.awt.*;
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class FormAdditionalCollection extends JFrame{
|
||||||
|
private AbstractCompany company = null;
|
||||||
|
|
||||||
|
public DrawingTruck drawingTruck = null;
|
||||||
|
private DrawingTruck copyTruck = null;
|
||||||
|
|
||||||
|
private CanvasGasolineTanker canvasTruck = new CanvasGasolineTanker();
|
||||||
|
private AdditionalCollection<EntityTruck, IDrawingWheels> additionalCollection = null;
|
||||||
|
private Random random = new Random();
|
||||||
|
private JButton buttonGenerate = new JButton("Создать");
|
||||||
|
private JButton buttonGoToCollection = new JButton("Добавить в коллекцию");
|
||||||
|
private JList<String> listEntity = new JList<String>();
|
||||||
|
private JList<String> listWheels = new JList<String>();
|
||||||
|
public FormAdditionalCollection() {
|
||||||
|
setTitle("Случайные грузовики");
|
||||||
|
setSize(650, 400);
|
||||||
|
additionalCollection = new AdditionalCollection<EntityTruck, IDrawingWheels>(3, (Class) EntityTruck.class, (Class) IDrawingWheels.class);
|
||||||
|
AddEntities();
|
||||||
|
AddWheels();
|
||||||
|
buttonGoToCollection.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if(drawingTruck !=null){
|
||||||
|
company._collection.Insert(copyTruck);
|
||||||
|
FormTruckCollection.canvasShow();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
buttonGenerate.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
drawingTruck = additionalCollection.CreateAdditionalCollectionTruck();
|
||||||
|
drawingTruck.SetPictureSize(getWidth(), getHeight());
|
||||||
|
drawingTruck.SetPosition(50, 50);
|
||||||
|
canvasTruck._drawingTruck = drawingTruck;
|
||||||
|
canvasTruck.repaint();
|
||||||
|
if (drawingTruck instanceof DrawingGasolineTanker)
|
||||||
|
copyTruck = new DrawingGasolineTanker((EntityGasolineTanker) drawingTruck.EntityTruck, drawingTruck.drawingWheels);
|
||||||
|
else
|
||||||
|
copyTruck = new DrawingTruck(drawingTruck.EntityTruck, drawingTruck.drawingWheels);
|
||||||
|
|
||||||
|
|
||||||
|
String[] data1 = new String[additionalCollection.CountEntities];
|
||||||
|
for (int i = 0; i < additionalCollection.CountEntities; i++) {
|
||||||
|
EntityTruck entity = additionalCollection._collectionEntity[i];
|
||||||
|
data1[i] = ToString(entity);
|
||||||
|
}
|
||||||
|
String[] data2 = new String[additionalCollection.CountWheels];
|
||||||
|
for (int i = 0; i < additionalCollection.CountWheels; i++) {
|
||||||
|
IDrawingWheels wheels = additionalCollection._collectionWheels[i];
|
||||||
|
data2[i] = ToString(wheels);
|
||||||
|
}
|
||||||
|
listEntity.setListData(data1);
|
||||||
|
listWheels.setListData(data2);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
buttonGoToCollection.setBounds(300,300,150,40);
|
||||||
|
buttonGenerate.setBounds(130, 300, 150, 40);
|
||||||
|
add(buttonGenerate);
|
||||||
|
add(buttonGoToCollection);
|
||||||
|
listEntity.setBounds(10, 200, 300, 60);
|
||||||
|
listWheels.setBounds(320, 200, 300, 60);
|
||||||
|
|
||||||
|
add(listEntity);
|
||||||
|
add(listWheels);
|
||||||
|
add(canvasTruck);
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String ToString(EntityTruck entity) {
|
||||||
|
String str = "";
|
||||||
|
if (entity instanceof EntityGasolineTanker) str += "EntityGasolineTanker ";
|
||||||
|
else str += "EntityTruck ";
|
||||||
|
str += entity.getBodyColor().toString();
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String ToString(IDrawingWheels wheels) {
|
||||||
|
if (wheels == null || wheels.getNumWheels() == null)
|
||||||
|
return "Simple Wheels";
|
||||||
|
|
||||||
|
String str = "Wheels ";
|
||||||
|
if (wheels instanceof DrawingWheels) str += "Simple Wheels ";
|
||||||
|
else if (wheels instanceof DrawingOrnamentHeart) str += "OrnamentHeart ";
|
||||||
|
else if (wheels instanceof DrawingOrnamentSquare) str += "OrnamentSquare ";;
|
||||||
|
str += wheels.getNumWheels().toString();
|
||||||
|
return str;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddEntities() {
|
||||||
|
for (int i = 0; i < additionalCollection.CountEntities; i++) {
|
||||||
|
random = new Random();
|
||||||
|
int speed = random.nextInt(100, 300);
|
||||||
|
double weight = random.nextInt(1000, 3000);
|
||||||
|
//int number = random.nextInt(0,4);
|
||||||
|
Color bodyColor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
|
||||||
|
EntityTruck entityTruck;
|
||||||
|
if (random.nextBoolean()) {
|
||||||
|
entityTruck = new EntityTruck(speed, weight, bodyColor);
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Color additionalColor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
|
||||||
|
boolean gasTank = random.nextBoolean();
|
||||||
|
boolean signalBeacon = random.nextBoolean();
|
||||||
|
entityTruck = new EntityGasolineTanker(speed, weight, bodyColor, additionalColor, gasTank, signalBeacon);
|
||||||
|
}
|
||||||
|
additionalCollection.Insert(entityTruck);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void AddWheels() {
|
||||||
|
for (int i = 0; i < additionalCollection.CountWheels; i++) {
|
||||||
|
random = new Random();
|
||||||
|
EntityTruck entity = additionalCollection._collectionEntity[i];
|
||||||
|
Integer number = random.nextInt(0, 4);
|
||||||
|
IDrawingWheels drawingWheels = null;
|
||||||
|
switch (random.nextInt(0,4)) {
|
||||||
|
case 1:
|
||||||
|
drawingWheels = new DrawingWheels();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
drawingWheels = new DrawingOrnamentSquare();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
drawingWheels = new DrawingOrnamentHeart();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
number = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (drawingWheels != null) drawingWheels.setNumWheels(number);
|
||||||
|
additionalCollection.Insert(drawingWheels);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCompany(AbstractCompany company){
|
||||||
|
this.company = company;
|
||||||
|
String[] data1 = new String[additionalCollection.CountEntities];
|
||||||
|
for (int i = 0; i < additionalCollection.CountEntities; i++) {
|
||||||
|
EntityTruck entity = additionalCollection._collectionEntity[i];
|
||||||
|
data1[i] = ToString(entity);
|
||||||
|
}
|
||||||
|
String[] data2 = new String[additionalCollection.CountWheels];
|
||||||
|
for (int i = 0; i < additionalCollection.CountWheels; i++) {
|
||||||
|
IDrawingWheels wheels = additionalCollection._collectionWheels[i];
|
||||||
|
data2[i] = ToString(wheels);
|
||||||
|
}
|
||||||
|
listEntity.setListData(data1);
|
||||||
|
listWheels.setListData(data2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -8,14 +8,6 @@
|
|||||||
<properties/>
|
<properties/>
|
||||||
<border type="none"/>
|
<border type="none"/>
|
||||||
<children>
|
<children>
|
||||||
<component id="6cce4" class="javax.swing.JButton" binding="buttonCreateTruck">
|
|
||||||
<constraints>
|
|
||||||
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="Создать грузовик"/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
<vspacer id="b7eca">
|
<vspacer id="b7eca">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="0" column="0" row-span="2" col-span="2" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
<grid row="0" column="0" row-span="2" col-span="2" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
||||||
@ -57,14 +49,6 @@
|
|||||||
<text value=""/>
|
<text value=""/>
|
||||||
</properties>
|
</properties>
|
||||||
</component>
|
</component>
|
||||||
<component id="62c53" class="javax.swing.JButton" binding="buttonCreateGasolineTanker">
|
|
||||||
<constraints>
|
|
||||||
<grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="Создать бензовоз"/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
<component id="fabd7" class="javax.swing.JComboBox" binding="comboBoxStrategy">
|
<component id="fabd7" class="javax.swing.JComboBox" binding="comboBoxStrategy">
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="0" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="9" fill="1" indent="0" use-parent-layout="false"/>
|
<grid row="0" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="9" fill="1" indent="0" use-parent-layout="false"/>
|
||||||
|
@ -14,46 +14,16 @@ public class FormGasolineTanker extends JFrame{
|
|||||||
private int Width;
|
private int Width;
|
||||||
private int Height;
|
private int Height;
|
||||||
private CanvasGasolineTanker canvasGasolineTanker = new CanvasGasolineTanker();
|
private CanvasGasolineTanker canvasGasolineTanker = new CanvasGasolineTanker();
|
||||||
private JButton buttonCreateTruck = new JButton("Создать грузовик");
|
|
||||||
private JButton buttonRight = new JButton();
|
private JButton buttonRight = new JButton();
|
||||||
private JButton buttonLeft = new JButton();
|
private JButton buttonLeft = new JButton();
|
||||||
private JButton buttonDown = new JButton();
|
private JButton buttonDown = new JButton();
|
||||||
private JButton buttonUp = new JButton();
|
private JButton buttonUp = new JButton();
|
||||||
private AbstractStrategy _strategy;
|
private AbstractStrategy _strategy;
|
||||||
private JButton buttonCreateGasolineTanker = new JButton("Создать бензовоз");
|
|
||||||
private JComboBox comboBoxStrategy = new JComboBox(new String[] {"К центру", "К краю"});
|
private JComboBox comboBoxStrategy = new JComboBox(new String[] {"К центру", "К краю"});
|
||||||
private JButton buttonStrategy = new JButton("Шаг");
|
private JButton buttonStrategy = new JButton("Шаг");
|
||||||
|
|
||||||
private void CreateObject(String typeOfClass){
|
public void Init(DrawingTruck truck){
|
||||||
int StartPositionX = 10 + (int)(Math.random() *((100-10) +1));
|
|
||||||
int StartPositionY = 10 + (int)(Math.random() *((100-10) +1));
|
|
||||||
int speed = 10 + (int)(Math.random() *((100-10) +1));
|
|
||||||
double weight = 1000 + (double)(Math.random() *((5000-1000) +1));
|
|
||||||
Color bodyColor = new Color((int) (Math.random() * ((256) + 1)), (int) (Math.random() * ((256) + 1)), (int) (Math.random() * ((256) + 1)));
|
|
||||||
int number = new Random().nextInt(3)+1;
|
|
||||||
switch (typeOfClass){
|
|
||||||
case "DrawingTruck":
|
|
||||||
canvasGasolineTanker._drawingTruck = new DrawingTruck(speed, weight, bodyColor, number);
|
|
||||||
canvasGasolineTanker._drawingTruck.SetPictureSize(Width,Height);
|
|
||||||
canvasGasolineTanker._drawingTruck.SetPosition(StartPositionX, StartPositionY);
|
|
||||||
canvasGasolineTanker.repaint();
|
|
||||||
break;
|
|
||||||
case "DrawingGasolineTanker":
|
|
||||||
Color additionalColor = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0));
|
|
||||||
boolean gasTank = new Random().nextBoolean();
|
|
||||||
boolean signalBeacon = new Random().nextBoolean();
|
|
||||||
canvasGasolineTanker._drawingTruck = new DrawingGasolineTanker(speed, weight, bodyColor, additionalColor, signalBeacon, gasTank, number);
|
|
||||||
canvasGasolineTanker._drawingTruck.SetPictureSize(Width,Height);
|
|
||||||
canvasGasolineTanker._drawingTruck.SetPosition(StartPositionX, StartPositionY);
|
|
||||||
canvasGasolineTanker.repaint();
|
|
||||||
break;
|
|
||||||
default: return;
|
|
||||||
}
|
|
||||||
_strategy = null;
|
|
||||||
comboBoxStrategy.setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Init(){
|
|
||||||
setTitle("Бензовоз");
|
setTitle("Бензовоз");
|
||||||
setSize(900,600);
|
setSize(900,600);
|
||||||
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||||
@ -62,8 +32,7 @@ public class FormGasolineTanker extends JFrame{
|
|||||||
Height = getHeight();
|
Height = getHeight();
|
||||||
_strategy = null;
|
_strategy = null;
|
||||||
|
|
||||||
buttonCreateTruck.setName("CREATETRUCK");
|
canvasGasolineTanker._drawingTruck = truck;
|
||||||
buttonCreateGasolineTanker.setName("CREATEGASOLINETANKER");
|
|
||||||
|
|
||||||
buttonUp.setName("buttonUp");
|
buttonUp.setName("buttonUp");
|
||||||
Icon iconUp = new ImageIcon("src\\src\\resources\\Up.jpg");
|
Icon iconUp = new ImageIcon("src\\src\\resources\\Up.jpg");
|
||||||
@ -81,19 +50,6 @@ public class FormGasolineTanker extends JFrame{
|
|||||||
Icon iconRight = new ImageIcon("src\\src\\resources\\Right.jpg");
|
Icon iconRight = new ImageIcon("src\\src\\resources\\Right.jpg");
|
||||||
buttonRight.setIcon(iconRight);
|
buttonRight.setIcon(iconRight);
|
||||||
|
|
||||||
buttonCreateTruck.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
CreateObject("DrawingTruck");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
buttonCreateGasolineTanker.addActionListener(new ActionListener() {
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
CreateObject("DrawingGasolineTanker");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
buttonStrategy.addActionListener(new ActionListener() {
|
buttonStrategy.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
@ -161,9 +117,6 @@ public class FormGasolineTanker extends JFrame{
|
|||||||
|
|
||||||
setLayout(null);
|
setLayout(null);
|
||||||
canvasGasolineTanker.setBounds(0,0, getWidth(), getHeight());
|
canvasGasolineTanker.setBounds(0,0, getWidth(), getHeight());
|
||||||
buttonCreateTruck.setBounds(10, getHeight() - 90, 150, 40);
|
|
||||||
buttonCreateGasolineTanker.setBounds(170, getHeight() - 90, 150, 40);
|
|
||||||
|
|
||||||
buttonUp.setBounds(getWidth() - 200, getHeight() - 160, 45, 45);
|
buttonUp.setBounds(getWidth() - 200, getHeight() - 160, 45, 45);
|
||||||
buttonDown.setBounds(getWidth() - 140, getHeight() - 100, 45, 45);
|
buttonDown.setBounds(getWidth() - 140, getHeight() - 100, 45, 45);
|
||||||
buttonRight.setBounds(getWidth() - 80, getHeight() - 100, 45, 45);
|
buttonRight.setBounds(getWidth() - 80, getHeight() - 100, 45, 45);
|
||||||
@ -171,8 +124,7 @@ public class FormGasolineTanker extends JFrame{
|
|||||||
comboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 35);
|
comboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 35);
|
||||||
buttonStrategy.setBounds(getWidth() - 130, 55, 100, 25);
|
buttonStrategy.setBounds(getWidth() - 130, 55, 100, 25);
|
||||||
|
|
||||||
add(buttonCreateTruck);
|
|
||||||
add(buttonCreateGasolineTanker);
|
|
||||||
add(buttonUp);
|
add(buttonUp);
|
||||||
add(buttonDown);
|
add(buttonDown);
|
||||||
add(buttonRight);
|
add(buttonRight);
|
||||||
@ -189,19 +141,14 @@ public class FormGasolineTanker extends JFrame{
|
|||||||
if (canvasGasolineTanker._drawingTruck != null)
|
if (canvasGasolineTanker._drawingTruck != null)
|
||||||
canvasGasolineTanker._drawingTruck.SetPictureSize(Width, Height);
|
canvasGasolineTanker._drawingTruck.SetPictureSize(Width, Height);
|
||||||
canvasGasolineTanker.setBounds(0,0, getWidth(), getHeight());
|
canvasGasolineTanker.setBounds(0,0, getWidth(), getHeight());
|
||||||
buttonCreateTruck.setBounds(10, getHeight() - 90, 150, 40);
|
|
||||||
buttonCreateGasolineTanker.setBounds(170, getHeight() - 90, 150, 40);
|
|
||||||
buttonUp.setBounds(getWidth() - 140, getHeight() - 160, 45, 45);
|
buttonUp.setBounds(getWidth() - 140, getHeight() - 160, 45, 45);
|
||||||
buttonDown.setBounds(getWidth() - 140, getHeight() - 100, 45, 45);
|
buttonDown.setBounds(getWidth() - 140, getHeight() - 100, 45, 45);
|
||||||
buttonRight.setBounds(getWidth() - 80, getHeight() - 100, 45, 45);
|
buttonRight.setBounds(getWidth() - 80, getHeight() - 100, 45, 45);
|
||||||
buttonLeft.setBounds(getWidth() - 200, getHeight() - 100, 45, 45);
|
buttonLeft.setBounds(getWidth() - 200, getHeight() - 100, 45, 45);
|
||||||
comboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 35);
|
comboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 35);
|
||||||
buttonStrategy.setBounds(getWidth() - 130, 55, 100, 25);
|
buttonStrategy.setBounds(getWidth() - 130, 55, 100, 25);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
26
src/src/FormTruckCollection.form
Normal file
26
src/src/FormTruckCollection.form
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="FormTruckCollection">
|
||||||
|
<grid id="27dc6" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
|
<margin top="0" left="0" bottom="0" right="0"/>
|
||||||
|
<constraints>
|
||||||
|
<xy x="20" y="20" width="788" height="470"/>
|
||||||
|
</constraints>
|
||||||
|
<properties/>
|
||||||
|
<border type="none"/>
|
||||||
|
<children>
|
||||||
|
<vspacer id="4ce89">
|
||||||
|
<constraints>
|
||||||
|
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
</vspacer>
|
||||||
|
<component id="f77b4" class="javax.swing.JLabel">
|
||||||
|
<constraints>
|
||||||
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
|
||||||
|
</constraints>
|
||||||
|
<properties>
|
||||||
|
<text value="Инструменты"/>
|
||||||
|
</properties>
|
||||||
|
</component>
|
||||||
|
</children>
|
||||||
|
</grid>
|
||||||
|
</form>
|
219
src/src/FormTruckCollection.java
Normal file
219
src/src/FormTruckCollection.java
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
import CollectionGenericObjects.AbstractCompany;
|
||||||
|
import CollectionGenericObjects.MassiveGenericObjects;
|
||||||
|
import CollectionGenericObjects.TruckSharingService;
|
||||||
|
import Drawings.CanvasFormTruckCollection;
|
||||||
|
import Drawings.DrawingTruck;
|
||||||
|
import Drawings.DrawingGasolineTanker;
|
||||||
|
|
||||||
|
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 FormTruckCollection extends JFrame{
|
||||||
|
|
||||||
|
public static CanvasFormTruckCollection<DrawingTruck> _canvasGasolineTanker = new CanvasFormTruckCollection<DrawingTruck>();
|
||||||
|
private static AbstractCompany _company = null;
|
||||||
|
private JButton ButtonCreateGasolineTanker = new JButton("Создать бензовоз");;
|
||||||
|
private JButton ButtonCreateTruck = new JButton("Создать грузовик");
|
||||||
|
|
||||||
|
private JButton RemoveButton = new JButton("Удалить");
|
||||||
|
private JButton GoToCheckButton = new JButton("Передать на тесты");
|
||||||
|
|
||||||
|
private JButton RandomButton = new JButton("Случайный");
|
||||||
|
private JButton RefreshButton = new JButton("Обновить");
|
||||||
|
private JComboBox ComboBoxCollections = new JComboBox(new String[]{"", "Хранилище"});
|
||||||
|
private JFormattedTextField TextField;
|
||||||
|
|
||||||
|
public static void canvasShow() {
|
||||||
|
_company.SetPosition();
|
||||||
|
_canvasGasolineTanker.SetCollectionToCanvas(_company);
|
||||||
|
_canvasGasolineTanker.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();
|
||||||
|
DrawingTruck drawingTruck;
|
||||||
|
switch (typeOfClass) {
|
||||||
|
case "DrawingTruck":
|
||||||
|
drawingTruck = new DrawingTruck(speed, weight, bodyColor);
|
||||||
|
break;
|
||||||
|
case "DrawingGasolineTanker":
|
||||||
|
Color additionalColor = getColor();
|
||||||
|
boolean gasTank = new Random().nextBoolean();
|
||||||
|
boolean signalBeacon = new Random().nextBoolean();;
|
||||||
|
drawingTruck = new DrawingGasolineTanker(speed, weight, bodyColor, additionalColor, gasTank, signalBeacon);
|
||||||
|
break;
|
||||||
|
default: return;
|
||||||
|
}
|
||||||
|
if (_company._collection.Insert(drawingTruck, 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, "Цвет", initializator);
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
public void Init() {
|
||||||
|
setTitle("Коллекция грузовиков");
|
||||||
|
setSize(920,572);
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
MaskFormatter mask = null;
|
||||||
|
try {
|
||||||
|
mask = new MaskFormatter("##");
|
||||||
|
mask.setPlaceholder("00");
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
TextField = new JFormattedTextField(mask);
|
||||||
|
|
||||||
|
ComboBoxCollections.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
switch (ComboBoxCollections.getSelectedItem().toString()) {
|
||||||
|
case "Хранилище":
|
||||||
|
_company = new TruckSharingService(getWidth(), getHeight(), new MassiveGenericObjects<DrawingTruck>());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ButtonCreateTruck.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
CreateObject("DrawingTruck");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ButtonCreateGasolineTanker.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
CreateObject("DrawingGasolineTanker");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
RemoveButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (_company == null || TextField.getText() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int pos = parseInt(TextField.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;
|
||||||
|
}
|
||||||
|
DrawingTruck truck = null;
|
||||||
|
int counter = 100;
|
||||||
|
while (truck == null)
|
||||||
|
{
|
||||||
|
|
||||||
|
truck = _company.GetRandomObject();
|
||||||
|
counter--;
|
||||||
|
if (counter <= 0)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (truck == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FormGasolineTanker formGasolineTanker = new FormGasolineTanker();
|
||||||
|
formGasolineTanker.Init(truck);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
_canvasGasolineTanker.setBounds(0, 0, getWidth()-200, getHeight());
|
||||||
|
ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20);
|
||||||
|
ButtonCreateTruck.setBounds(getWidth()-190, 60, 150, 30);
|
||||||
|
ButtonCreateGasolineTanker.setBounds(getWidth()-190, 100, 150, 30);
|
||||||
|
TextField.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);
|
||||||
|
|
||||||
|
|
||||||
|
setLayout(null);
|
||||||
|
add(_canvasGasolineTanker);
|
||||||
|
add(ComboBoxCollections);
|
||||||
|
add(ButtonCreateTruck);
|
||||||
|
add(ButtonCreateGasolineTanker);
|
||||||
|
add(TextField);
|
||||||
|
add(RemoveButton);
|
||||||
|
add(GoToCheckButton);
|
||||||
|
add(RandomButton);
|
||||||
|
add(RefreshButton);
|
||||||
|
setVisible(true);
|
||||||
|
|
||||||
|
addComponentListener(new ComponentAdapter() {
|
||||||
|
public void componentResized(ComponentEvent e) {
|
||||||
|
_canvasGasolineTanker.setBounds(0, 0, getWidth()-200, getHeight()-70);
|
||||||
|
ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20);
|
||||||
|
ButtonCreateTruck.setBounds(getWidth()-190, 60, 150, 30);
|
||||||
|
ButtonCreateGasolineTanker.setBounds(getWidth()-190, 100, 150, 30);
|
||||||
|
TextField.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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
public class Main{
|
public class Main{
|
||||||
public static void main(String[] args){
|
public static void main(String[] args){
|
||||||
FormGasolineTanker formGasolineTanker = new FormGasolineTanker();
|
FormTruckCollection formTruckCollection = new FormTruckCollection();
|
||||||
formGasolineTanker.Init();
|
formTruckCollection.Init();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -59,5 +59,4 @@ public abstract class AbstractStrategy {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package MovementStrategy;
|
package MovementStrategy;
|
||||||
// только объявляются методы
|
|
||||||
public interface IMoveableObjects {
|
public interface IMoveableObjects {
|
||||||
ObjectParameters GetObjectPosition();
|
ObjectParameters GetObjectPosition();
|
||||||
int GetStep();
|
int GetStep();
|
||||||
|
@ -3,7 +3,6 @@ import java.awt.*;
|
|||||||
|
|
||||||
public class DrawingWheels implements IDrawingWheels{
|
public class DrawingWheels implements IDrawingWheels{
|
||||||
private NumWheels numWheels;
|
private NumWheels numWheels;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NumWheels getNumWheels() {
|
public NumWheels getNumWheels() {
|
||||||
return numWheels;
|
return numWheels;
|
||||||
|
@ -3,5 +3,5 @@ import java.awt.*;
|
|||||||
public interface IDrawingWheels {
|
public interface IDrawingWheels {
|
||||||
void setNumWheels(int number);
|
void setNumWheels(int number);
|
||||||
NumWheels getNumWheels();
|
NumWheels getNumWheels();
|
||||||
void drawWheels(Graphics2D g2d, Color color, int _startPosX, int _startPosY); //
|
void drawWheels(Graphics2D g2d, Color color, int _startPosX, int _startPosY);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user