Compare commits
5 Commits
LabWorking
...
LabWork_7
| Author | SHA1 | Date | |
|---|---|---|---|
| 6e40554fa2 | |||
| 4de23d08a2 | |||
| baee495b53 | |||
| 78a8bd4fa1 | |||
| e7a0a32fd9 |
27
ProjectMonorail/.idea/workspace.xml
generated
27
ProjectMonorail/.idea/workspace.xml
generated
@@ -6,14 +6,7 @@
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="39e7c520-e505-4e53-a269-c949d7c9f5d1" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/CountWheels.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/DirectionType.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/DrawingField.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/DrawingModernMonorail.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/DrawingWheels.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/EntityModernMonorail.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/FormModernMonorail.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/Program.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/Scripts/CollectionGenericObjects/StorageCollection.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Scripts/CollectionGenericObjects/StorageCollection.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -23,6 +16,7 @@
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Interface" />
|
||||
<option value="Class" />
|
||||
</list>
|
||||
</option>
|
||||
@@ -39,15 +33,16 @@
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"Application.Program.executor": "Run",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "LabWorking__2",
|
||||
"kotlin-language-version-configured": "true"
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"Application.Program.executor": "Run",
|
||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "LabWork6",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"last_opened_file_path": "C:/Учеба/AgarioGame"
|
||||
}
|
||||
}]]></component>
|
||||
}</component>
|
||||
<component name="RunManager">
|
||||
<configuration name="Program" type="Application" factoryName="Application">
|
||||
<option name="MAIN_CLASS_NAME" value="Scripts.Program" />
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,61 @@
|
||||
package Scripts.CollectionAdditionalObjects;
|
||||
|
||||
import Scripts.Drawing.DrawingModernMonorail;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
import Scripts.Entities.EntityModernMonorail;
|
||||
import Scripts.Entities.EntityMonorail;
|
||||
import Scripts.Wheels.IDrawingWheels;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Random;
|
||||
|
||||
public class AdditionalCollections <T extends EntityMonorail, U extends IDrawingWheels>{
|
||||
public T[] _collectionEntity;
|
||||
public U[] _collectionDecks;
|
||||
public AdditionalCollections(int size, Class<T> type1, Class<T> type2) {
|
||||
_collectionEntity = (T[]) Array.newInstance(type1, size);
|
||||
_collectionDecks = (U[]) Array.newInstance(type2, size);
|
||||
CountEntities = size;
|
||||
CountDecks = size;
|
||||
}
|
||||
public int CountEntities;
|
||||
public int CountDecks;
|
||||
public int Insert(T entity) {
|
||||
int index = 0;
|
||||
while (index < CountEntities) {
|
||||
if (_collectionEntity[index] == null)
|
||||
{
|
||||
_collectionEntity[index] = entity;
|
||||
return index;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
public int Insert(U decks) {
|
||||
int index = 0;
|
||||
while (index < CountDecks) {
|
||||
if (_collectionDecks[index] == null)
|
||||
{
|
||||
_collectionDecks[index] = decks;
|
||||
return index;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
public DrawingMonorail CreateAdditionalCollectionMonorail() {
|
||||
Random random = new Random();
|
||||
if (_collectionEntity == null || _collectionDecks == null) return null;
|
||||
T entity = _collectionEntity[random.nextInt(CountEntities)];
|
||||
U wheels = _collectionDecks[random.nextInt(CountDecks)];
|
||||
DrawingMonorail drawingMonorail = null;
|
||||
if (entity instanceof EntityModernMonorail) {
|
||||
drawingMonorail = new DrawingModernMonorail((EntityModernMonorail) entity, wheels);
|
||||
}
|
||||
else {
|
||||
drawingMonorail = new DrawingMonorail(entity, wheels);
|
||||
}
|
||||
return drawingMonorail;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public abstract class AbstractCompany {
|
||||
protected int _placeSizeWidth = 220;
|
||||
protected int _placeSizeHeight = 155;
|
||||
protected int _pictureWidth;
|
||||
protected int _pictureHeight;
|
||||
public ICollectionGenericObjects<DrawingMonorail> _collection = null;
|
||||
private int GetMaxCount() {
|
||||
return _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight);
|
||||
|
||||
}
|
||||
public AbstractCompany(int picWidth, int picHeight, ICollectionGenericObjects<DrawingMonorail> collection)
|
||||
{
|
||||
_pictureWidth = picWidth;
|
||||
_pictureHeight = picHeight;
|
||||
_collection = collection;
|
||||
System.out.println(_pictureHeight+" "+_pictureWidth+" "+_placeSizeHeight+" "+_placeSizeWidth);
|
||||
_collection.SetMaxCount(GetMaxCount());
|
||||
}
|
||||
//Перегрузок нет
|
||||
public DrawingMonorail GetRandomObject()
|
||||
{
|
||||
return _collection.Get((int)(Math.random()*GetMaxCount() + 0));
|
||||
}
|
||||
public void SetPosition()
|
||||
{
|
||||
SetObjectsPosition();
|
||||
}
|
||||
public abstract void DrawBackgound(Graphics graphics);
|
||||
protected abstract void SetObjectsPosition();
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
import Scripts.Drawing.DrawingModernMonorail;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
import Scripts.Entities.EntityModernMonorail;
|
||||
import Scripts.Entities.EntityMonorail;
|
||||
import Scripts.Wheels.IDrawingWheels;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Random;
|
||||
|
||||
public class AdditionalCollection <T extends EntityMonorail, 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) {
|
||||
int index = 0;
|
||||
while (index < CountEntities) {
|
||||
if (CollectionEntity[index] == null)
|
||||
{
|
||||
CollectionEntity[index] = entity;
|
||||
return index;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
public int Insert(U decks) {
|
||||
int index = 0;
|
||||
while (index < CountWheels) {
|
||||
if (CollectionWheels[index] == null)
|
||||
{
|
||||
CollectionWheels[index] = decks;
|
||||
return index;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
public DrawingMonorail CreateAdditionalCollectionStormtrooper() {
|
||||
Random random = new Random();
|
||||
if (CollectionEntity == null || CollectionWheels == null) return null;
|
||||
T entity = CollectionEntity[random.nextInt(CountEntities)];
|
||||
U wheels = CollectionWheels[random.nextInt(CountWheels)];
|
||||
DrawingMonorail drawingBaseStormtrooper = null;
|
||||
if (entity instanceof EntityModernMonorail) {
|
||||
drawingBaseStormtrooper = new DrawingModernMonorail((EntityModernMonorail)entity, wheels);
|
||||
}
|
||||
else {
|
||||
drawingBaseStormtrooper = new DrawingMonorail(entity, wheels);
|
||||
}
|
||||
return drawingBaseStormtrooper;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
public enum CollectionType {
|
||||
None,
|
||||
Massive,
|
||||
List
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class DepotSharingService extends AbstractCompany {
|
||||
public DepotSharingService (int picWidth, int picHeight, ICollectionGenericObjects<DrawingMonorail> collection) {
|
||||
super(picWidth, picHeight, collection);
|
||||
}
|
||||
|
||||
private int _offsetX = 30;
|
||||
|
||||
@Override
|
||||
public void DrawBackgound(Graphics graphics) {
|
||||
int width = _pictureWidth / _placeSizeWidth;
|
||||
int height = _pictureHeight / _placeSizeHeight;
|
||||
graphics.setColor(Color.BLACK);
|
||||
for (int i = 0; i < width; i++)
|
||||
{
|
||||
for (int j = 0; j < height; ++j)
|
||||
{
|
||||
graphics.drawLine(i * _offsetX + i * _placeSizeWidth, j * _placeSizeHeight, _placeSizeWidth + i * _offsetX + i * _placeSizeWidth, j * _placeSizeHeight);
|
||||
graphics.drawLine(i * _offsetX + i * _placeSizeWidth, j * _placeSizeHeight, i * _offsetX + i * _placeSizeWidth, _placeSizeHeight + j * _placeSizeHeight);
|
||||
graphics.drawLine(i * _offsetX + i * _placeSizeWidth, _placeSizeHeight + j * _placeSizeHeight, _placeSizeWidth + i * _offsetX + i * _placeSizeWidth, _placeSizeHeight + j * _placeSizeHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void SetObjectsPosition() {
|
||||
int width = _pictureWidth / _placeSizeWidth;
|
||||
int height = _pictureHeight / _placeSizeHeight;
|
||||
|
||||
int boarderOffsetX = 20;
|
||||
int boarderOffsetY = 20;
|
||||
|
||||
int currnetIndex = 0;
|
||||
|
||||
for (int j = height - 1; j >= 0; j--) {
|
||||
for (int i = 0; i < width; i++, currnetIndex++) {
|
||||
if (_collection.Get(currnetIndex) == null) continue;
|
||||
|
||||
_collection.Get(currnetIndex).SetPictureSize(_pictureWidth, _pictureHeight);
|
||||
_collection.Get(currnetIndex).SetPosition(boarderOffsetX + i * _placeSizeWidth + i * _offsetX, boarderOffsetY + j * _placeSizeHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
public interface ICollectionGenericObjects<T>
|
||||
{
|
||||
int getCount();
|
||||
void SetMaxCount(int count);
|
||||
int Insert(T obj);
|
||||
T Remove(int position);
|
||||
T Get(int position);
|
||||
CollectionType GetCollectionType();
|
||||
Iterable<T> GetItems();
|
||||
void ClearCollection();
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
public class ListGenericObjects<T> implements ICollectionGenericObjects<T> {
|
||||
private List<T> _collection;
|
||||
private int _maxCount;
|
||||
private CollectionType collectionType = CollectionType.List;
|
||||
|
||||
public int getCount() {
|
||||
return _collection.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetMaxCount(int size) {
|
||||
if (size > 0) {
|
||||
_maxCount = size;
|
||||
}
|
||||
}
|
||||
|
||||
public ListGenericObjects() {
|
||||
_collection = new ArrayList<T>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CollectionType GetCollectionType() {
|
||||
return collectionType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T Get(int position)
|
||||
{
|
||||
if (position >= getCount() || position < 0) return null;
|
||||
return _collection.get(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int Insert(T obj)
|
||||
{
|
||||
if (getCount() == _maxCount) return -1;
|
||||
_collection.add(obj);
|
||||
return getCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T Remove(int position)
|
||||
{
|
||||
if (position >= getCount() || position < 0) return null;
|
||||
T obj = _collection.get(position);
|
||||
_collection.remove(position);
|
||||
return obj;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<T> GetItems() {
|
||||
return new Iterable<T>() {
|
||||
@Override
|
||||
public Iterator<T> iterator() {
|
||||
return new Iterator<T>() {
|
||||
private int currentIndex = 0;
|
||||
//нужен ли count
|
||||
private int count = 0;
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return currentIndex < getCount();
|
||||
}
|
||||
@Override
|
||||
public T next() {
|
||||
if (hasNext()) {
|
||||
count++;
|
||||
return _collection.get(currentIndex++);
|
||||
}
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
@Override
|
||||
public void ClearCollection() {
|
||||
for (T ship : _collection) {
|
||||
ship = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Iterator;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
public class MassiveGenericObjects<T> implements ICollectionGenericObjects<T>
|
||||
{
|
||||
private CollectionType collectionType = CollectionType.Massive;
|
||||
private T[] _collection;
|
||||
private int Count;
|
||||
public void SetMaxCount(int size) {
|
||||
if (size > 0) {
|
||||
if (_collection == null) {
|
||||
_collection = (T[]) Array.newInstance((Class) DrawingMonorail.class, size);
|
||||
Count = size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CollectionType GetCollectionType() {
|
||||
return collectionType;
|
||||
}
|
||||
@Override
|
||||
public int getCount() {
|
||||
return Count;
|
||||
}
|
||||
|
||||
@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 T Remove(int position) {
|
||||
if (position >= getCount() || position < 0)
|
||||
return null;
|
||||
T obj = (T) _collection[position];
|
||||
_collection[position] = null;
|
||||
return obj;
|
||||
}
|
||||
@Override
|
||||
public T Get(int position) {
|
||||
if (position >= getCount() || position < 0) return null;
|
||||
return (T) _collection[position];
|
||||
}
|
||||
@Override
|
||||
public Iterable<T> GetItems() {
|
||||
return new Iterable<T>() {
|
||||
@Override
|
||||
public Iterator<T> iterator() {
|
||||
return new Iterator<T>() {
|
||||
private int currentIndex = 0;
|
||||
//нужен ли count
|
||||
private int count = 0;
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return currentIndex < getCount();
|
||||
}
|
||||
@Override
|
||||
public T next() {
|
||||
if (hasNext()) {
|
||||
count++;
|
||||
return _collection[currentIndex++];
|
||||
}
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
@Override
|
||||
public void ClearCollection() {
|
||||
for (T ship : _collection) {
|
||||
ship = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
package Scripts.CollectionGenericObjects;
|
||||
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
import Scripts.Drawing.ExtentionDrawningMonorail;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
public class StorageCollection<T extends DrawingMonorail> {
|
||||
private Map<String, ICollectionGenericObjects<T>> _storages;
|
||||
public StorageCollection()
|
||||
{
|
||||
_storages = new HashMap<String, ICollectionGenericObjects<T>>();
|
||||
}
|
||||
public Set<String> Keys() {
|
||||
Set<String> keys = _storages.keySet();
|
||||
return keys;
|
||||
}
|
||||
public void SetCollectionObject(String name, CollectionType collectionType)
|
||||
{
|
||||
if (_storages.containsKey(name)) return;
|
||||
if (collectionType == CollectionType.None) return;
|
||||
else if (collectionType == CollectionType.Massive)
|
||||
_storages.put(name, new MassiveGenericObjects<T>());
|
||||
else if (collectionType == CollectionType.List)
|
||||
_storages.put(name, new ListGenericObjects<T>());
|
||||
}
|
||||
public void DelCollection(String name)
|
||||
{
|
||||
if (_storages.containsKey(name))
|
||||
_storages.remove(name);
|
||||
}
|
||||
public ICollectionGenericObjects<T> GetCollectionObject(String name) {
|
||||
if (_storages.containsKey(name))
|
||||
return _storages.get(name);
|
||||
return null;
|
||||
}
|
||||
|
||||
public T remove(String name, int position){
|
||||
if(_storages.containsKey(name))
|
||||
return _storages.get(name).Remove(position);
|
||||
return null;
|
||||
}
|
||||
|
||||
private String _collectionKey = "CollectionsStorage";
|
||||
private String _collectionName = "StorageCollection";
|
||||
private String _separatorForKeyValueS = "|";
|
||||
private String _separatorForKeyValue = "\\|";
|
||||
private String _separatorItemsS = ";";
|
||||
private String _separatorItems = "\\;";
|
||||
public boolean SaveData(String filename) {
|
||||
if (_storages.isEmpty()) return false;
|
||||
File file = new File(filename);
|
||||
if (file.exists()) file.delete();
|
||||
try {
|
||||
file.createNewFile();
|
||||
FileWriter writer = new FileWriter(file);
|
||||
writer.write(_collectionKey);
|
||||
writer.write("\n");
|
||||
for (Map.Entry<String, ICollectionGenericObjects<T>> value : _storages.entrySet()) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(value.getKey());
|
||||
sb.append(_separatorForKeyValueS);
|
||||
sb.append(value.getValue().GetCollectionType());
|
||||
sb.append(_separatorForKeyValueS);
|
||||
sb.append(value.getValue().getCount());
|
||||
sb.append(_separatorForKeyValueS);
|
||||
for (T monorail : value.getValue().GetItems()) {
|
||||
String data = ExtentionDrawningMonorail.GetDataForSave((DrawingMonorail)monorail);
|
||||
if (data.isEmpty()) continue;
|
||||
sb.append(data);
|
||||
sb.append(_separatorItemsS);
|
||||
}
|
||||
sb.append("\n");
|
||||
writer.write(String.valueOf(sb));
|
||||
}
|
||||
writer.close();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public boolean SaveOneCollection(String filename, String name) {
|
||||
if (_storages.isEmpty()) return false;
|
||||
File file = new File(filename);
|
||||
if (file.exists()) file.delete();
|
||||
try {
|
||||
file.createNewFile();
|
||||
FileWriter writer = new FileWriter(file);
|
||||
writer.write(_collectionName);
|
||||
writer.write("\n");
|
||||
ICollectionGenericObjects<T> value = _storages.get(name);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(name);
|
||||
sb.append(_separatorForKeyValueS);
|
||||
sb.append(value.GetCollectionType());
|
||||
sb.append(_separatorForKeyValueS);
|
||||
sb.append(value.getCount());
|
||||
sb.append(_separatorForKeyValueS);
|
||||
for (T monorail : value.GetItems()) {
|
||||
String data = ExtentionDrawningMonorail.GetDataForSave((DrawingMonorail) monorail);
|
||||
if (data.isEmpty()) continue;
|
||||
sb.append(data);
|
||||
sb.append(_separatorItemsS);
|
||||
}
|
||||
writer.append(sb);
|
||||
writer.close();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public boolean LoadData(String filename) {
|
||||
File file = new File(filename);
|
||||
if (!file.exists()) return false;
|
||||
try (BufferedReader fs = new BufferedReader(new FileReader(filename))) {
|
||||
String s = fs.readLine();
|
||||
if (s == null || s.isEmpty() || !s.startsWith(_collectionKey))
|
||||
return false;
|
||||
_storages.clear();
|
||||
s = "";
|
||||
while ((s = fs.readLine()) != null) {
|
||||
String[] record = s.split(_separatorForKeyValue);
|
||||
if (record.length != 4) {
|
||||
continue;
|
||||
}
|
||||
ICollectionGenericObjects<T> collection = CreateCollection(record[1]);
|
||||
if (collection == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
collection.SetMaxCount(Integer.parseInt(record[2]));
|
||||
String[] set = record[3].split(_separatorItems);
|
||||
for (String elem : set) {
|
||||
DrawingMonorail drawingMonorail = ExtentionDrawningMonorail.CreateDrawingMonorail(elem);
|
||||
if (collection.Insert((T) drawingMonorail) == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
_storages.put(record[0], collection);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
public boolean LoadOneCollection(String filename) {
|
||||
File file = new File(filename);
|
||||
if (!file.exists()) return false;
|
||||
try (BufferedReader fs = new BufferedReader(new FileReader(filename))) {
|
||||
String s = fs.readLine();
|
||||
if (s == null || s.isEmpty() || !s.startsWith(_collectionName))
|
||||
return false;
|
||||
|
||||
s = fs.readLine();
|
||||
String[] record = s.split(_separatorForKeyValue);
|
||||
if (record.length != 4) {
|
||||
return false;
|
||||
}
|
||||
ICollectionGenericObjects<T> collection;
|
||||
|
||||
if (_storages.containsKey(s)) {
|
||||
_storages.get(s).ClearCollection();
|
||||
|
||||
collection = _storages.get(s);
|
||||
|
||||
if (record[1] == "Massive" && collection instanceof ListGenericObjects<T> || record[1] == "List" && collection instanceof MassiveGenericObjects<T>) collection = CreateCollection(record[1]);
|
||||
}
|
||||
else {
|
||||
collection = CreateCollection(record[1]);
|
||||
_storages.put(record[0], collection);
|
||||
}
|
||||
|
||||
collection.SetMaxCount(Integer.parseInt(record[2]));
|
||||
String[] set = record[3].split(_separatorItems);
|
||||
for (String elem : set) {
|
||||
DrawingMonorail drawingMonorail = ExtentionDrawningMonorail.CreateDrawingMonorail(elem);
|
||||
if (collection.Insert((T) drawingMonorail) == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
public ICollectionGenericObjects<T> CreateCollection(String s) {
|
||||
switch (s) {
|
||||
case "Massive":
|
||||
return new MassiveGenericObjects<T>();
|
||||
case "List":
|
||||
return new ListGenericObjects<T>();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package Scripts;
|
||||
package Scripts.Drawing;
|
||||
|
||||
public enum DirectionType {
|
||||
Up,
|
||||
@@ -1,4 +1,6 @@
|
||||
package Scripts;
|
||||
package Scripts.Drawing;
|
||||
|
||||
import Scripts.Forms.FormModernMonorail;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
@@ -12,6 +14,7 @@ public class DrawingField extends JPanel {
|
||||
}
|
||||
|
||||
public DrawingMonorail getDrawingMonorail() {return _drawingMonorail;}
|
||||
public void setDrawingMonorail(DrawingMonorail drawingMonorail) {_drawingMonorail = drawingMonorail;}
|
||||
|
||||
@Override
|
||||
protected void paintComponent(Graphics g) {
|
||||
@@ -50,14 +53,14 @@ public class DrawingField extends JPanel {
|
||||
Random rnd=new Random();
|
||||
_drawingMonorail = new DrawingMonorail(rnd.nextInt(50)+10,rnd.nextInt(100)+500,new Color(rnd.nextInt(256),rnd.nextInt(256),rnd.nextInt(256)), null, null);
|
||||
_drawingMonorail.SetPictureSize(getWidth(),getHeight());
|
||||
_drawingMonorail.SetPosition(rnd.nextInt(100)+10,rnd.nextInt(100)+10,getWidth(),getHeight());
|
||||
_drawingMonorail.SetPosition(rnd.nextInt(100)+10,rnd.nextInt(100)+10);
|
||||
}
|
||||
|
||||
public void CreateButtonAction_ModernMonorail(){
|
||||
Random rnd=new Random();
|
||||
_drawingMonorail = new DrawingModernMonorail(rnd.nextInt(50)+10,rnd.nextInt(100)+500,new Color(rnd.nextInt(256),rnd.nextInt(256),rnd.nextInt(256)), new Color(rnd.nextInt(256),rnd.nextInt(256),rnd.nextInt(256)), rnd.nextBoolean(), true);
|
||||
_drawingMonorail.SetPictureSize(getWidth(),getHeight());
|
||||
_drawingMonorail.SetPosition(rnd.nextInt(100)+10,rnd.nextInt(100)+10,getWidth(),getHeight());
|
||||
_drawingMonorail.SetPosition(rnd.nextInt(100)+10,rnd.nextInt(100)+10);
|
||||
}
|
||||
|
||||
public void ResizeField(){
|
||||
@@ -1,6 +1,10 @@
|
||||
package Scripts;
|
||||
package Scripts.Drawing;
|
||||
|
||||
import Scripts.Entities.EntityModernMonorail;
|
||||
import Scripts.Entities.EntityMonorail;
|
||||
import Scripts.Wheels.DrawOrnament;
|
||||
import Scripts.Wheels.DrawingWheels;
|
||||
import Scripts.Wheels.IDrawingWheels;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Random;
|
||||
@@ -11,10 +15,15 @@ public class DrawingModernMonorail extends DrawingMonorail {
|
||||
super(speed, weight, bodyColor, 190, 80);
|
||||
|
||||
_entityMonorail = new EntityModernMonorail(speed, weight, bodyColor, additionalColor, monorailTrack, cabin);
|
||||
_wheels = new DrawingWheels();
|
||||
Random rnd = new Random();
|
||||
_wheels.SetCountWheels(2 + rnd.nextInt(0, 3));
|
||||
_wheelsSeed = rnd.nextInt(0, 2);
|
||||
_wheels.SetOrnament(new DrawOrnament());
|
||||
}
|
||||
|
||||
public DrawingModernMonorail(EntityModernMonorail entityModernMonorail, IDrawingWheels wheels)
|
||||
{
|
||||
super((EntityMonorail)entityModernMonorail, 190, 80, wheels);
|
||||
|
||||
_entityMonorail = new EntityModernMonorail(entityModernMonorail.getSpeed(), entityModernMonorail.getWeight(), entityModernMonorail.getBodyColor(), entityModernMonorail.getAdditionalColor(), entityModernMonorail.getMonorailTrack(), entityModernMonorail.getMonorailTrack());
|
||||
_wheels.SetOrnament(new DrawOrnament());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,13 +1,14 @@
|
||||
package Scripts;
|
||||
package Scripts.Drawing;
|
||||
|
||||
import Scripts.Wheels.DrawingWheels;
|
||||
import Scripts.Entities.EntityMonorail;
|
||||
import Scripts.Wheels.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Random;
|
||||
|
||||
public class DrawingMonorail {
|
||||
protected EntityMonorail _entityMonorail;
|
||||
protected DrawingWheels _wheels;
|
||||
public EntityMonorail _entityMonorail;
|
||||
public IDrawingWheels _wheels;
|
||||
|
||||
private Integer _pictureWidth = null;
|
||||
private Integer _pictureHeight = null;
|
||||
@@ -19,7 +20,7 @@ public class DrawingMonorail {
|
||||
private int _drawningMonorailHeight = 80;
|
||||
|
||||
public EntityMonorail getMonorail() {return _entityMonorail;}
|
||||
public DrawingWheels getWheels() {return _wheels;}
|
||||
public IDrawingWheels getWheels() {return _wheels;}
|
||||
protected int _wheelsSeed;
|
||||
|
||||
public int GetPositionX() { return _startPositionX;}
|
||||
@@ -41,6 +42,39 @@ public class DrawingMonorail {
|
||||
_wheelsSeed = rnd.nextInt(0, 2);
|
||||
}
|
||||
|
||||
public DrawingMonorail(int speed, float weight, Color bodyColor)
|
||||
{
|
||||
this(100, 40);
|
||||
|
||||
_entityMonorail = new EntityMonorail(speed, weight, bodyColor);
|
||||
_wheels = new DrawingWheels();
|
||||
Random rnd = new Random();
|
||||
_wheels.SetCountWheels(2 + rnd.nextInt(0, 3));
|
||||
_wheelsSeed = rnd.nextInt(0, 2);
|
||||
}
|
||||
|
||||
public DrawingMonorail(EntityMonorail entityMonorail, Integer drawningMonorailWidth, Integer drawningMonorailHeight, IDrawingWheels wheels)
|
||||
{
|
||||
this(drawningMonorailWidth, drawningMonorailHeight);
|
||||
|
||||
_entityMonorail = new EntityMonorail(entityMonorail.getSpeed(), entityMonorail.getWeight(), entityMonorail.getBodyColor());
|
||||
_wheels = new DrawingWheels();
|
||||
Random rnd = new Random();
|
||||
_wheels.SetCountWheels(2 + rnd.nextInt(0, 3));
|
||||
_wheelsSeed = rnd.nextInt(0, 2);
|
||||
}
|
||||
|
||||
public DrawingMonorail(EntityMonorail entityMonorail, IDrawingWheels wheels)
|
||||
{
|
||||
this(100, 40);
|
||||
|
||||
_entityMonorail = new EntityMonorail(entityMonorail.getSpeed(), entityMonorail.getWeight(), entityMonorail.getBodyColor());
|
||||
_wheels = new DrawingWheels();
|
||||
Random rnd = new Random();
|
||||
_wheels.SetCountWheels(2 + rnd.nextInt(0, 3));
|
||||
_wheelsSeed = rnd.nextInt(0, 2);
|
||||
}
|
||||
|
||||
protected DrawingMonorail(Integer drawningMonorailWidth, Integer drawningMonorailHeight) {
|
||||
if(drawningMonorailWidth == null || drawningMonorailHeight == null) return;
|
||||
|
||||
@@ -69,7 +103,7 @@ public class DrawingMonorail {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void SetPosition(int x, int y, int width, int height)
|
||||
public void SetPosition(int x, int y)
|
||||
{
|
||||
if (_pictureHeight == null || _pictureWidth == null) return;
|
||||
|
||||
@@ -199,4 +233,17 @@ public class DrawingMonorail {
|
||||
|
||||
_wheels.DrawWheels(g2, coordinatesX, _startPositionY + 30, _entityMonorail.getBodyColor());
|
||||
}
|
||||
|
||||
public String[] GetStringRepresentationDecks() {
|
||||
if (_wheels.GetOrnament() instanceof DrawOrnament) {
|
||||
return new String[]{String.valueOf(_wheels.getCountWheels()), "DrawingDecksType1"};
|
||||
}
|
||||
else if (_wheels.GetOrnament() instanceof DrawOrnamentOval) {
|
||||
return new String[]{String.valueOf(_wheels.getCountWheels()), "DrawingDecksType2"};
|
||||
}
|
||||
else if (_wheels.GetOrnament() instanceof DrawOrnamentTriangle) {
|
||||
return new String[]{String.valueOf(_wheels.getCountWheels()), "DrawingDecksType3"};
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package Scripts.Drawing;
|
||||
|
||||
import Scripts.Entities.EntityModernMonorail;
|
||||
import Scripts.Entities.EntityMonorail;
|
||||
import Scripts.Wheels.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
public class ExtentionDrawningMonorail {
|
||||
private static String _separatorForObjectS = ":";
|
||||
private static String _separatorForObject = "\\:";
|
||||
public static DrawingMonorail CreateDrawingMonorail(String info) {
|
||||
String[] strs = info.split(_separatorForObject);
|
||||
EntityMonorail entityMonorail;
|
||||
IDrawingWheels wheels = new DrawingWheels();
|
||||
if (strs.length == 8)
|
||||
{
|
||||
String s = strs[8];
|
||||
switch (s) {
|
||||
case "DrawingDecksType1":
|
||||
wheels.SetOrnament(new DrawOrnament());
|
||||
case "DrawingDecksType2":
|
||||
wheels.SetOrnament(new DrawOrnamentOval());
|
||||
case "DrawingDecksType3":
|
||||
wheels.SetOrnament(new DrawOrnamentTriangle());
|
||||
}
|
||||
if (wheels != null) wheels.SetCountWheels(Integer.parseInt(strs[7]));
|
||||
}
|
||||
else if (strs.length == 6) {
|
||||
String s = strs[5];
|
||||
switch (s) {
|
||||
case "DrawingDecksType1":
|
||||
wheels.SetOrnament(new DrawOrnament());
|
||||
case "DrawingDecksType2":
|
||||
wheels.SetOrnament(new DrawOrnamentOval());
|
||||
case "DrawingDecksType3":
|
||||
wheels.SetOrnament(new DrawOrnamentTriangle());
|
||||
}
|
||||
if (wheels != null) wheels.SetCountWheels(Integer.parseInt(strs[4]));
|
||||
}
|
||||
entityMonorail = EntityModernMonorail.CreateEntityModernMonorail(strs);
|
||||
if (entityMonorail != null)
|
||||
{
|
||||
return new DrawingModernMonorail((EntityModernMonorail)entityMonorail, wheels);
|
||||
}
|
||||
entityMonorail = EntityMonorail.CreateEntityMonorail(strs);
|
||||
if (entityMonorail != null)
|
||||
{
|
||||
return new DrawingMonorail(entityMonorail, wheels);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static String GetDataForSave(DrawingMonorail drawningMonorail)
|
||||
{
|
||||
if (drawningMonorail == null) return "";
|
||||
String[] array1 = drawningMonorail.getMonorail().GetStringRepresentation();
|
||||
String[] array2 = drawningMonorail.GetStringRepresentationDecks();
|
||||
if (array1 == null)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
ArrayList<String> list = new ArrayList<>();
|
||||
Collections.addAll(list, array1);
|
||||
if (array2 == null) {
|
||||
Collections.addAll(list, "0", " ");
|
||||
}
|
||||
else Collections.addAll(list, array2);
|
||||
return String.join(_separatorForObjectS, list);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package Scripts.Entities;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityModernMonorail extends EntityMonorail {
|
||||
private Color _additionalColor;
|
||||
private boolean _monorailTrack;
|
||||
private boolean _cabin;
|
||||
|
||||
public Color getAdditionalColor() {return _additionalColor;}
|
||||
public boolean getMonorailTrack() {return _monorailTrack;}
|
||||
public boolean getCabin() {return _cabin;}
|
||||
|
||||
public void setAdditionalColor(Color value) {_additionalColor = value;}
|
||||
public void setMonorailTrack(Boolean value) { _monorailTrack = value;}
|
||||
public void setCabin(Boolean value) { _cabin = value;}
|
||||
|
||||
public EntityModernMonorail(int speed, float weight, Color bodyColor, Color additionalColor, boolean monorailTrack, boolean cabin){
|
||||
super(speed, weight, bodyColor);
|
||||
Random rnd = new Random();
|
||||
_speed = speed <= 0 ? rnd.nextInt(50)+10 : speed;
|
||||
_weight = weight <= 0 ? rnd.nextInt(100)+500 : weight;
|
||||
_bodyColor = bodyColor;
|
||||
_additionalColor = additionalColor;
|
||||
_monorailTrack = monorailTrack;
|
||||
_cabin = cabin;
|
||||
|
||||
Step = _speed * 100/ (int)_weight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] GetStringRepresentation()
|
||||
{
|
||||
Integer speed = _speed;
|
||||
Float weight = _weight;
|
||||
|
||||
return new String[]{"EntityModernMonorail", speed.toString(), weight.toString(),
|
||||
colorToHexString(getBodyColor()), colorToHexString(getAdditionalColor()),
|
||||
String.valueOf(_monorailTrack), String.valueOf(_cabin)};
|
||||
}
|
||||
|
||||
public static EntityModernMonorail CreateEntityModernMonorail(String[] strs)
|
||||
{
|
||||
if (!Objects.equals(strs[0], "EntityModernMonorail"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new EntityModernMonorail(Integer.parseInt(strs[1]), Float.parseFloat(strs[2]), hexStringToColor(strs[3]),
|
||||
hexStringToColor(strs[4]), Boolean.parseBoolean(strs[5]), Boolean.parseBoolean(strs[6]));
|
||||
}
|
||||
}
|
||||
|
||||
57
ProjectMonorail/src/Scripts/Entities/EntityMonorail.java
Normal file
57
ProjectMonorail/src/Scripts/Entities/EntityMonorail.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package Scripts.Entities;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityMonorail {
|
||||
public float Step;
|
||||
protected int _speed;
|
||||
protected float _weight;
|
||||
protected Color _bodyColor;
|
||||
|
||||
public int getSpeed() {
|
||||
return _speed;
|
||||
}
|
||||
public float getWeight() {
|
||||
return _weight;
|
||||
}
|
||||
public Color getBodyColor() {
|
||||
return _bodyColor;
|
||||
}
|
||||
|
||||
public void setSpeed(int value) {_speed = value; }
|
||||
public void setWeight(float value) {_weight = value;}
|
||||
public void setBodyColor(Color value) {_bodyColor = value;}
|
||||
|
||||
public EntityMonorail(int speed, float weight, Color bodyColor){
|
||||
Random rnd = new Random();
|
||||
_speed = speed <= 0 ? rnd.nextInt(50)+10 : speed;
|
||||
_weight = weight <= 0 ? rnd.nextInt(100)+500 : weight;
|
||||
_bodyColor = bodyColor;
|
||||
|
||||
Step = _speed * 100/ (int)_weight;
|
||||
}
|
||||
|
||||
public String[] GetStringRepresentation()
|
||||
{
|
||||
Integer speed = _speed;
|
||||
Float weight = _weight;
|
||||
|
||||
return new String[]{"EntityMonorail", speed.toString(), weight.toString(), colorToHexString(_bodyColor)};
|
||||
}
|
||||
public static EntityMonorail CreateEntityMonorail(String[] strs)
|
||||
{
|
||||
if (!Objects.equals(strs[0], "EntityMonorail"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new EntityMonorail(Integer.parseInt(strs[1]), Float.parseFloat(strs[2]), hexStringToColor(strs[3]));
|
||||
}
|
||||
public static String colorToHexString(Color color) {
|
||||
return String.format("#%02x%02x%02x", color.getRed(), color.getGreen(), color.getBlue());
|
||||
}
|
||||
public static Color hexStringToColor(String hexString) {
|
||||
return Color.decode(hexString);
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
package Scripts;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityModernMonorail extends EntityMonorail {
|
||||
private Color _additionalColor;
|
||||
private boolean _monorailTrack;
|
||||
private boolean _cabin;
|
||||
|
||||
public Color getAdditionalColor() {return _additionalColor;}
|
||||
public boolean getMonorailTrack() {return _monorailTrack;}
|
||||
public boolean getCabin() {return _cabin;}
|
||||
|
||||
public EntityModernMonorail(int speed, float weight, Color bodyColor, Color additionalColor, boolean monorailTrack, boolean cabin){
|
||||
super(speed, weight, bodyColor);
|
||||
Random rnd = new Random();
|
||||
_speed = speed <= 0 ? rnd.nextInt(50)+10 : speed;
|
||||
_weight = weight <= 0 ? rnd.nextInt(100)+500 : weight;
|
||||
_bodyColor = bodyColor;
|
||||
_additionalColor = additionalColor;
|
||||
_monorailTrack = monorailTrack;
|
||||
_cabin = cabin;
|
||||
|
||||
Step = _speed * 100/ (int)_weight;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
package Scripts;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.Random;
|
||||
|
||||
public class EntityMonorail {
|
||||
public float Step;
|
||||
protected int _speed;
|
||||
protected float _weight;
|
||||
protected Color _bodyColor;
|
||||
|
||||
public int getSpeed() {
|
||||
return _speed;
|
||||
}
|
||||
public float getWeight() {
|
||||
return _weight;
|
||||
}
|
||||
public Color getBodyColor() {
|
||||
return _bodyColor;
|
||||
}
|
||||
|
||||
public EntityMonorail(int speed, float weight, Color bodyColor){
|
||||
Random rnd = new Random();
|
||||
_speed = speed <= 0 ? rnd.nextInt(50)+10 : speed;
|
||||
_weight = weight <= 0 ? rnd.nextInt(100)+500 : weight;
|
||||
_bodyColor = bodyColor;
|
||||
|
||||
Step = _speed * 100/ (int)_weight;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package Scripts.Forms;
|
||||
|
||||
import Scripts.CollectionGenericObjects.AbstractCompany;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class CanvasFormMonorailCollection<T> extends JComponent {
|
||||
public AbstractCompany company = null;
|
||||
public void SetCollectionToCanvas(AbstractCompany company) {
|
||||
this.company = company;
|
||||
}
|
||||
public CanvasFormMonorailCollection() {};
|
||||
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 DrawingMonorail) {
|
||||
((DrawingMonorail) obj).DrawTransport(g2d);
|
||||
}
|
||||
}
|
||||
super.repaint();
|
||||
}
|
||||
}
|
||||
20
ProjectMonorail/src/Scripts/Forms/CanvasMonorail.java
Normal file
20
ProjectMonorail/src/Scripts/Forms/CanvasMonorail.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package Scripts.Forms;
|
||||
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class CanvasMonorail extends JComponent {
|
||||
public DrawingMonorail _drawingMonorail;
|
||||
public CanvasMonorail(){}
|
||||
public void paintComponent(Graphics g) {
|
||||
if (_drawingMonorail == null) {
|
||||
return;
|
||||
}
|
||||
super.paintComponents(g);
|
||||
Graphics2D g2d = (Graphics2D) g;
|
||||
_drawingMonorail.DrawTransport(g2d);
|
||||
super.repaint();
|
||||
}
|
||||
}
|
||||
133
ProjectMonorail/src/Scripts/Forms/FormAdditionalCollection.java
Normal file
133
ProjectMonorail/src/Scripts/Forms/FormAdditionalCollection.java
Normal file
@@ -0,0 +1,133 @@
|
||||
package Scripts.Forms;
|
||||
|
||||
import Scripts.CollectionGenericObjects.AbstractCompany;
|
||||
import Scripts.CollectionGenericObjects.AdditionalCollection;
|
||||
import Scripts.Drawing.DrawingModernMonorail;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
import Scripts.Entities.EntityModernMonorail;
|
||||
import Scripts.Entities.EntityMonorail;
|
||||
import Scripts.Wheels.DrawingWheels;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.Random;
|
||||
|
||||
public class FormAdditionalCollection extends JFrame {
|
||||
public DrawingMonorail _drawingMonorail = null;
|
||||
private DrawingMonorail _copyMonorail = null;
|
||||
private AbstractCompany _company = null;
|
||||
private CanvasMonorail _canvasMonorail = new CanvasMonorail();
|
||||
private AdditionalCollection<EntityMonorail, DrawingWheels> _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> listEngines = new JList<String>();
|
||||
public FormAdditionalCollection() {
|
||||
setTitle("Случайные монорельсы");
|
||||
setMinimumSize(new Dimension(970,310));
|
||||
_additionalCollection = new AdditionalCollection<EntityMonorail, DrawingWheels>(3,(Class)EntityMonorail.class,(Class)DrawingWheels.class);
|
||||
AddEntities();
|
||||
AddWheels();
|
||||
buttonGoToCollection.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if(_drawingMonorail !=null){
|
||||
_company._collection.Insert(_copyMonorail);
|
||||
FormMonorailCollection.canvasShow();
|
||||
dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
buttonGenerate.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
_drawingMonorail = _additionalCollection.CreateAdditionalCollectionStormtrooper();
|
||||
_drawingMonorail.SetPictureSize(getWidth(), getHeight());
|
||||
_drawingMonorail.SetPosition(360,30);
|
||||
_canvasMonorail._drawingMonorail = _drawingMonorail;
|
||||
_canvasMonorail.repaint();
|
||||
if (_drawingMonorail instanceof DrawingModernMonorail)
|
||||
_copyMonorail = new DrawingModernMonorail((EntityModernMonorail) _drawingMonorail.getMonorail(), _drawingMonorail.getWheels());
|
||||
else
|
||||
_copyMonorail = new DrawingMonorail(_drawingMonorail.getMonorail(), _drawingMonorail.getWheels());
|
||||
}
|
||||
});
|
||||
|
||||
buttonGoToCollection.setBounds(830,200,120,60);
|
||||
buttonGenerate.setBounds(830, 130, 120, 60);
|
||||
listEntity.setBounds(10,200,400,60);
|
||||
listEngines.setBounds(420,200,400,60);
|
||||
add(buttonGenerate);
|
||||
add(buttonGoToCollection);
|
||||
add(listEntity);
|
||||
add(listEngines);
|
||||
add(_canvasMonorail);
|
||||
setVisible(true);
|
||||
}
|
||||
private String ToString(EntityMonorail entity) {
|
||||
String str = "";
|
||||
if (entity instanceof EntityModernMonorail) str += "EntityModernMonorail ";
|
||||
else str += "EntityMonorail ";
|
||||
str += entity.getBodyColor().toString();
|
||||
return str;
|
||||
}
|
||||
private String ToString(DrawingWheels wheels) {
|
||||
if (wheels == null || wheels.getCountWheels() == 0)
|
||||
return "Не имеет колес";
|
||||
String str = ""+wheels.getCountWheels();
|
||||
str+=" колес";
|
||||
|
||||
return str;
|
||||
}
|
||||
public void AddEntities() {
|
||||
for (int i = 0; i < _additionalCollection.CountEntities; i++) {
|
||||
random = new Random();
|
||||
int speed = random.nextInt(100, 300);
|
||||
float weight = random.nextInt(1000, 3000);
|
||||
Color bodycolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
|
||||
EntityMonorail entityMonorail;
|
||||
if (random.nextBoolean()) {
|
||||
entityMonorail = new EntityMonorail(speed, weight, bodycolor);
|
||||
}
|
||||
else {
|
||||
Color additionalcolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
|
||||
boolean monorailTrack = random.nextBoolean();
|
||||
boolean cabin = random.nextBoolean();
|
||||
entityMonorail = new EntityModernMonorail(speed, weight, bodycolor, additionalcolor, monorailTrack, cabin);
|
||||
}
|
||||
_additionalCollection.Insert(entityMonorail);
|
||||
}
|
||||
}
|
||||
public void AddWheels() {
|
||||
for (int i = 0; i < _additionalCollection.CountWheels; i++) {
|
||||
random = new Random();
|
||||
EntityMonorail entity = _additionalCollection.CollectionEntity[i];
|
||||
DrawingWheels drawingWheels = null;
|
||||
drawingWheels = new DrawingWheels();
|
||||
drawingWheels.SetCountWheels((int) ((Math.random() * 3) + 1) * 2);
|
||||
|
||||
if(drawingWheels!=null){
|
||||
_additionalCollection.Insert(drawingWheels);
|
||||
}
|
||||
}
|
||||
}
|
||||
void setCompany(AbstractCompany company) {
|
||||
this._company = company;
|
||||
String[] data1 = new String[_additionalCollection.CountEntities];
|
||||
for (int i = 0; i < _additionalCollection.CountEntities; i++) {
|
||||
EntityMonorail entity = _additionalCollection.CollectionEntity[i];
|
||||
data1[i] = ToString(entity);
|
||||
}
|
||||
String[] data2 = new String[_additionalCollection.CountWheels];
|
||||
for (int i = 0; i < _additionalCollection.CountWheels; i++) {
|
||||
DrawingWheels wheels = _additionalCollection.CollectionWheels[i];
|
||||
data2[i] = ToString(wheels);
|
||||
}
|
||||
listEntity.setListData(data1);
|
||||
listEngines.setListData(data2);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package Scripts;
|
||||
package Scripts.Forms;
|
||||
|
||||
import Scripts.Drawing.DrawingField;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
import Scripts.MovementStratagy.*;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -20,9 +22,6 @@ public class FormModernMonorail extends JFrame{
|
||||
|
||||
private DrawingField field = new DrawingField(this);
|
||||
|
||||
private JButton ButtonCreateMonorail = new JButton("Create Monorail");
|
||||
private JButton ButtonCreateModernMonorail = new JButton("Create Modern Monorail");
|
||||
|
||||
private Icon _iconUp = new ImageIcon("Resource\\Arrows\\ArrowUp.png");
|
||||
private Icon _iconDown = new ImageIcon("Resource\\Arrows\\ArrowDown.png");
|
||||
private Icon _iconRight = new ImageIcon("Resource\\Arrows\\ArrowRight.png");
|
||||
@@ -49,7 +48,6 @@ public class FormModernMonorail extends JFrame{
|
||||
Height=getHeight();
|
||||
ShowWindow();
|
||||
RefreshWindow();
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
@@ -103,18 +101,6 @@ public class FormModernMonorail extends JFrame{
|
||||
|
||||
CreatePanel.setLayout(new FlowLayout(FlowLayout.RIGHT,0,0));
|
||||
CreatePanel.setBackground(new Color(0,0,0,0));
|
||||
CreatePanel.add(ButtonCreateMonorail);
|
||||
CreatePanel.add(ButtonCreateModernMonorail);
|
||||
|
||||
ButtonCreateModernMonorail.addActionListener(e->{
|
||||
field.CreateButtonAction_ModernMonorail();
|
||||
repaint();
|
||||
});
|
||||
|
||||
ButtonCreateMonorail.addActionListener(e->{
|
||||
field.CreateButtonAction_Monorail();
|
||||
repaint();
|
||||
});
|
||||
|
||||
StrategyPanel.setLayout(new FlowLayout(FlowLayout.RIGHT,0,0));
|
||||
StrategyPanel.setBackground(new Color(0,0,0,0));
|
||||
@@ -181,4 +167,8 @@ public class FormModernMonorail extends JFrame{
|
||||
BottomAndCreatePanel.setBounds(-220,Height-110,Width,80);
|
||||
DimentionPanel.setBounds(Width-170,Height-170,190,140);
|
||||
}
|
||||
|
||||
public void Init(DrawingMonorail drawingMonorail) {
|
||||
field.setDrawingMonorail(drawingMonorail);
|
||||
}
|
||||
}
|
||||
416
ProjectMonorail/src/Scripts/Forms/FormMonorailCollection.java
Normal file
416
ProjectMonorail/src/Scripts/Forms/FormMonorailCollection.java
Normal file
@@ -0,0 +1,416 @@
|
||||
package Scripts.Forms;
|
||||
|
||||
import Scripts.CollectionGenericObjects.*;
|
||||
import Scripts.Drawing.DrawingModernMonorail;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.util.Random;
|
||||
|
||||
import static java.lang.Integer.parseInt;
|
||||
|
||||
public class FormMonorailCollection extends JFrame{
|
||||
private String title;
|
||||
private Dimension dimension;
|
||||
public static CanvasFormMonorailCollection<DrawingMonorail> _canvasMonorail = new CanvasFormMonorailCollection<DrawingMonorail>();
|
||||
private static AbstractCompany _company = null;
|
||||
|
||||
private Queue<DrawingMonorail> _collectionRemovedObjects = new LinkedList<DrawingMonorail>();
|
||||
private StorageCollection<DrawingMonorail> _storageCollection = new StorageCollection<DrawingMonorail>();
|
||||
private JTextField textBoxCollection = new JTextField();
|
||||
private JRadioButton radioButtonMassive = new JRadioButton("Массив");
|
||||
private JRadioButton radioButtonList = new JRadioButton("Список");
|
||||
private JButton buttonAddCollection = new JButton("Добавить");
|
||||
private JList listBoxCollection = new JList();
|
||||
private JButton buttonRemoveCollection = new JButton("Удалить");
|
||||
private JButton buttonCreateCompany = new JButton("Создать компанию");
|
||||
private JButton createMonorailButton = new JButton("Создать монорельс");
|
||||
private JButton removeButton = new JButton("Удалить");
|
||||
private JButton removeObjectsButton = 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;
|
||||
private JFormattedTextField MaskedTextField;
|
||||
private JMenuBar menuBar = new JMenuBar();
|
||||
private JMenu fileMenu = new JMenu("File");
|
||||
private JMenuItem loadItem = new JMenuItem("Load");
|
||||
private JMenuItem saveItem = new JMenuItem("Save");
|
||||
private JMenuItem loadCollection = new JMenuItem("Load coll");
|
||||
private JMenuItem saveCollection = new JMenuItem("Save coll");
|
||||
|
||||
public FormMonorailCollection(String title, Dimension dimension) {
|
||||
this.title = title;
|
||||
this.dimension = dimension;
|
||||
}
|
||||
public static void canvasShow() {
|
||||
_company.SetPosition();
|
||||
_canvasMonorail.SetCollectionToCanvas(_company);
|
||||
_canvasMonorail.repaint();
|
||||
}
|
||||
private void CreateObject(String typeOfClass){
|
||||
if (_company == null) return;
|
||||
int speed = (int)(Math.random() * 300 + 100);
|
||||
float weight = (float)(Math.random() * 3000 + 1000);
|
||||
Color bodyColor = getColor();
|
||||
DrawingMonorail drawingMonorail;
|
||||
switch (typeOfClass) {
|
||||
case "DrawingMonorail":
|
||||
drawingMonorail = new DrawingMonorail(speed, weight, bodyColor);
|
||||
break;
|
||||
case "DrawingModernMonorail":
|
||||
Color additionalColor = getColor();
|
||||
boolean monorailTrack = new Random().nextBoolean();
|
||||
boolean cabin = true;
|
||||
drawingMonorail = new DrawingModernMonorail(speed, weight, bodyColor, additionalColor, monorailTrack, cabin);
|
||||
break;
|
||||
default: return;
|
||||
}
|
||||
if (_company._collection.Insert(drawingMonorail) != -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(title);
|
||||
setMinimumSize(dimension);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
|
||||
TextField = new JFormattedTextField();
|
||||
|
||||
ComboBoxCollections.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
switch (ComboBoxCollections.getSelectedItem().toString()) {
|
||||
case "Хранилище":
|
||||
_company = new DepotSharingService(getWidth()-200, getHeight()-110, new MassiveGenericObjects<DrawingMonorail>());
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
createMonorailButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (_company == null) return;
|
||||
FormMonorailConfig form = new FormMonorailConfig("", new Dimension(800, 300));
|
||||
form.setCompany(_company);
|
||||
form.Init();
|
||||
}
|
||||
});
|
||||
|
||||
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;
|
||||
|
||||
DrawingMonorail obj = _storageCollection.remove(listBoxCollection.getSelectedValue().toString(), pos);
|
||||
System.out.println(obj);
|
||||
if (obj != null) {
|
||||
JOptionPane.showMessageDialog(null, "Объект удален");
|
||||
_collectionRemovedObjects.add(obj);
|
||||
canvasShow();
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null, "Не удалось удалить объект");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
GoToCheckButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (_company == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
DrawingMonorail drawingMonorail = null;
|
||||
int counter = 100;
|
||||
while (drawingMonorail == null)
|
||||
{
|
||||
drawingMonorail = _company.GetRandomObject();
|
||||
counter--;
|
||||
if (counter <= 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (drawingMonorail == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
FormModernMonorail form = new FormModernMonorail();
|
||||
form.addWindowListener(new WindowAdapter() {
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e) {
|
||||
canvasShow();
|
||||
super.windowClosing(e);
|
||||
}
|
||||
});
|
||||
form.Init(drawingMonorail);
|
||||
}
|
||||
});
|
||||
|
||||
RefreshButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (_company == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
canvasShow();
|
||||
}
|
||||
});
|
||||
RandomButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if(_company==null){
|
||||
return;
|
||||
}
|
||||
FormAdditionalCollection form = new FormAdditionalCollection();
|
||||
form.setCompany(_company);
|
||||
}
|
||||
});
|
||||
|
||||
buttonAddCollection.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (textBoxCollection.getText().isEmpty() || (!radioButtonMassive.isSelected()
|
||||
&& !radioButtonList.isSelected())) {
|
||||
JOptionPane.showMessageDialog(null, "Не все данные заполнены");
|
||||
return;
|
||||
}
|
||||
CollectionType collectionType = CollectionType.None;
|
||||
if (radioButtonMassive.isSelected()) {
|
||||
collectionType = CollectionType.Massive;
|
||||
} else if (radioButtonList.isSelected()) {
|
||||
collectionType = CollectionType.List;
|
||||
}
|
||||
_storageCollection.SetCollectionObject(textBoxCollection.getText(), collectionType);
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
});
|
||||
|
||||
buttonRemoveCollection.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (listBoxCollection.getSelectedIndex() < 0 || listBoxCollection.getSelectedValue() == null) {
|
||||
JOptionPane.showMessageDialog(null, "Коллекция не выбрана");
|
||||
return;
|
||||
}
|
||||
int resultConfirmDialog = JOptionPane.showConfirmDialog(null,
|
||||
"Удалить", "Удаление",
|
||||
JOptionPane.YES_NO_OPTION);
|
||||
if (resultConfirmDialog == JOptionPane.NO_OPTION) return;
|
||||
_storageCollection.DelCollection(listBoxCollection.getSelectedValue().toString());
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
});
|
||||
|
||||
saveItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
SaveFile();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
loadItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
LoadFile();
|
||||
}
|
||||
});
|
||||
|
||||
saveCollection.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
System.out.println("Save coll");
|
||||
SaveCollection();
|
||||
}
|
||||
});
|
||||
|
||||
loadCollection.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
System.out.println("Load coll");
|
||||
LoadCollection();
|
||||
}
|
||||
});
|
||||
|
||||
buttonCreateCompany.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (listBoxCollection.getSelectedIndex() < 0 || listBoxCollection.getSelectedValue() == null) {
|
||||
JOptionPane.showMessageDialog(null, "Коллекция не выбрана");
|
||||
return;
|
||||
}
|
||||
ICollectionGenericObjects<DrawingMonorail> collection =
|
||||
_storageCollection.GetCollectionObject(listBoxCollection.getSelectedValue().toString());
|
||||
if (collection == null) {
|
||||
JOptionPane.showMessageDialog(null, "Коллекция не проинициализирована");
|
||||
return;
|
||||
}
|
||||
switch (ComboBoxCollections.getSelectedItem().toString()) {
|
||||
case "Хранилище":
|
||||
_company = new DepotSharingService(getWidth() - 200, getHeight() - 110,
|
||||
collection);
|
||||
break;
|
||||
}
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
});
|
||||
|
||||
removeObjectsButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (_collectionRemovedObjects.isEmpty()) {
|
||||
JOptionPane.showMessageDialog(null, "Коллекция пуста");
|
||||
return;
|
||||
}
|
||||
DrawingMonorail drawingMonorail = null;
|
||||
drawingMonorail = _collectionRemovedObjects.remove();
|
||||
if (drawingMonorail == null) {
|
||||
return;
|
||||
}
|
||||
FormModernMonorail form = new FormModernMonorail();
|
||||
form.Init(drawingMonorail);
|
||||
}
|
||||
});
|
||||
|
||||
fileMenu.add(loadItem);
|
||||
fileMenu.add(saveItem);
|
||||
fileMenu.add(loadCollection);
|
||||
fileMenu.add(saveCollection);
|
||||
fileMenu.addSeparator();
|
||||
menuBar.add(fileMenu);
|
||||
setJMenuBar(menuBar);
|
||||
|
||||
ButtonGroup radioButtonsGroup = new ButtonGroup();
|
||||
JLabel labelCollectionName = new JLabel("Название коллекции");
|
||||
radioButtonsGroup.add(radioButtonMassive);
|
||||
radioButtonsGroup.add(radioButtonList);
|
||||
_canvasMonorail.setBounds(0, 0, getWidth() - 200, getHeight());
|
||||
labelCollectionName.setBounds(getWidth()-190, 10, 150, 20);
|
||||
textBoxCollection.setBounds(getWidth()-190,35,150,25);
|
||||
radioButtonMassive.setBounds(getWidth()-190, 60, 75, 20);
|
||||
radioButtonList.setBounds(getWidth()-105, 60, 75, 20);
|
||||
buttonAddCollection.setBounds(getWidth()-190, 85, 150, 20);
|
||||
listBoxCollection.setBounds(getWidth()-190, 115, 150, 70);
|
||||
buttonRemoveCollection.setBounds(getWidth()-190, 195, 150, 20);
|
||||
ComboBoxCollections.setBounds(getWidth() - 190, 225, 150, 20);
|
||||
buttonCreateCompany.setBounds(getWidth()-190, 255, 150, 20);
|
||||
createMonorailButton.setBounds(getWidth() - 190, 285, 150, 30);
|
||||
RandomButton.setBounds(getWidth() - 190, 365, 150, 30);
|
||||
removeObjectsButton.setBounds(getWidth()-190, 505, 150, 30);
|
||||
TextField.setBounds(getWidth() - 190, 545, 150, 30);
|
||||
removeButton.setBounds(getWidth() - 190, 585, 150, 30);
|
||||
GoToCheckButton.setBounds(getWidth() - 190, 625, 150, 30);
|
||||
RefreshButton.setBounds(getWidth() - 190, 665, 150, 30);
|
||||
setSize(dimension.width, dimension.height);
|
||||
setLayout(null);
|
||||
|
||||
add(textBoxCollection);
|
||||
add(radioButtonMassive);
|
||||
add(radioButtonList);
|
||||
add(buttonAddCollection);
|
||||
add(listBoxCollection);
|
||||
add(buttonRemoveCollection);
|
||||
add(buttonCreateCompany);
|
||||
add(labelCollectionName);
|
||||
add(removeObjectsButton);
|
||||
|
||||
add(_canvasMonorail);
|
||||
add(ComboBoxCollections);
|
||||
add(createMonorailButton);
|
||||
add(TextField);
|
||||
add(GoToCheckButton);
|
||||
add(RandomButton);
|
||||
add(removeButton);
|
||||
add(RefreshButton);
|
||||
setVisible(true);
|
||||
}
|
||||
private String SaveWindow() {
|
||||
FileDialog fileDialog = new FileDialog(this, "Save File", FileDialog.SAVE);
|
||||
fileDialog.setVisible(true);
|
||||
String directory = fileDialog.getDirectory();
|
||||
String file = fileDialog.getFile();
|
||||
if (directory == null || file == null) return null;
|
||||
return directory + file;
|
||||
}
|
||||
private void SaveFile() {
|
||||
String filename = SaveWindow();
|
||||
if (_storageCollection.SaveData(filename)) {
|
||||
JOptionPane.showMessageDialog(null, "Сохранено");
|
||||
}
|
||||
else JOptionPane.showMessageDialog(null, "Ошибка сохранения");
|
||||
}
|
||||
private void SaveCollection() {
|
||||
String filename = SaveWindow();
|
||||
if (filename == null) {
|
||||
JOptionPane.showMessageDialog(null, "Файл не выбран");
|
||||
return;
|
||||
}
|
||||
if (listBoxCollection.getSelectedIndex() < 0 || listBoxCollection.getSelectedValue() == null) {
|
||||
JOptionPane.showMessageDialog(null, "Коллекция не выбрана");
|
||||
}
|
||||
if (_storageCollection.SaveOneCollection(filename, listBoxCollection.getSelectedValue().toString())) {
|
||||
JOptionPane.showMessageDialog(null, "Коллекция сохранена");
|
||||
}
|
||||
else JOptionPane.showMessageDialog(null, "Ошибка сохранения");
|
||||
}
|
||||
private String LoadWindow() {
|
||||
FileDialog fileDialog = new FileDialog(this, "Save File", FileDialog.LOAD);
|
||||
fileDialog.setVisible(true);
|
||||
String directory = fileDialog.getDirectory();
|
||||
String file = fileDialog.getFile();
|
||||
if (directory == null || file == null) return null;
|
||||
return directory + file;
|
||||
}
|
||||
private void LoadFile() {
|
||||
String filename = LoadWindow();
|
||||
if (_storageCollection.LoadData(filename)) {
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно");
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
else JOptionPane.showMessageDialog(null, "Не загрузилось");
|
||||
|
||||
}
|
||||
private void LoadCollection() {
|
||||
String filename = LoadWindow();
|
||||
if (_storageCollection.LoadOneCollection(filename)) {
|
||||
JOptionPane.showMessageDialog(null, "Коллекция загружена");
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
else JOptionPane.showMessageDialog(null, "Не загрузилось");
|
||||
}
|
||||
private void RerfreshListBoxItems() {
|
||||
DefaultListModel<String> list = new DefaultListModel<String>();
|
||||
for (String name : _storageCollection.Keys()) {
|
||||
if (name != "") {
|
||||
list.addElement(name);
|
||||
}
|
||||
}
|
||||
|
||||
listBoxCollection.setModel(list);
|
||||
}
|
||||
|
||||
}
|
||||
453
ProjectMonorail/src/Scripts/Forms/FormMonorailConfig.java
Normal file
453
ProjectMonorail/src/Scripts/Forms/FormMonorailConfig.java
Normal file
@@ -0,0 +1,453 @@
|
||||
package Scripts.Forms;
|
||||
|
||||
import Scripts.CollectionGenericObjects.AbstractCompany;
|
||||
import Scripts.Drawing.DrawingModernMonorail;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
import Scripts.Entities.EntityModernMonorail;
|
||||
import Scripts.Wheels.*;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import java.awt.*;
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.datatransfer.Transferable;
|
||||
import java.awt.datatransfer.UnsupportedFlavorException;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.io.IOException;
|
||||
|
||||
public class FormMonorailConfig extends JFrame {
|
||||
private String title;
|
||||
private Dimension dimension;
|
||||
private DrawingMonorail _drawingMonorail;
|
||||
private AbstractCompany company = null;
|
||||
private JLabel labelSpeed = new JLabel("Скорость");
|
||||
private JLabel labelWeight = new JLabel("Вес");
|
||||
private JLabel labelNumberOfWheels = new JLabel("Колеса");
|
||||
|
||||
private JLabel labelMonorail = new JLabel("Monorail", SwingConstants.CENTER);
|
||||
private JLabel labelModernMonorail = new JLabel("ModernMonorail", SwingConstants.CENTER);
|
||||
private JLabel labelColor = new JLabel("Цвета");
|
||||
private JLabel labelBodyColor = new JLabel("Основной цвет", SwingConstants.CENTER);
|
||||
private JLabel labelAdditionalColor = new JLabel("Дополнительный цвет", SwingConstants.CENTER);
|
||||
private JLabel labelWheels = new JLabel("Тип двигателей",SwingConstants.CENTER);
|
||||
private JLabel labelDefaultWheels = new JLabel("Классические",SwingConstants.CENTER);
|
||||
private JLabel labelOvalOrnament = new JLabel("Овальные", SwingConstants.CENTER);
|
||||
private JLabel labelTriangleOrnament = new JLabel("Треугольные", SwingConstants.CENTER);
|
||||
|
||||
private JSpinner spinnerSpeed = new JSpinner();
|
||||
private JSpinner spinnerWeight = new JSpinner();
|
||||
private JSpinner spinnerNumberOfWheels = new JSpinner();
|
||||
private JCheckBox checkBoxMonorailTrack = new JCheckBox("Имеет путь");
|
||||
private JCheckBox checkBoxCabin = new JCheckBox("Имеет кабину");
|
||||
private JComponent panelObject = new JPanel();
|
||||
private JPanel panelColorRed = new JPanel();
|
||||
private JPanel panelColorGreen = new JPanel();
|
||||
private JPanel panelColorBlue = new JPanel();
|
||||
private JPanel panelColorYellow = new JPanel();
|
||||
private JPanel panelColorBlack = new JPanel();
|
||||
private JPanel panelColorWhite = new JPanel();
|
||||
private JPanel panelColorGray = new JPanel();
|
||||
private JPanel panelColorCyan = new JPanel();
|
||||
private JButton buttonAdd = new JButton("Добавить");
|
||||
private JButton buttonCancel = new JButton("Отмена");
|
||||
|
||||
public FormMonorailConfig(String title, Dimension dimension) {
|
||||
this.title = title;
|
||||
this.dimension = dimension;
|
||||
}
|
||||
|
||||
public void Init() {
|
||||
SpinnerModel numSpeed = new SpinnerNumberModel(100, 100, 1000, 1);
|
||||
SpinnerModel numWeight = new SpinnerNumberModel(100, 100, 1000, 1);
|
||||
spinnerSpeed.setModel(numSpeed);
|
||||
spinnerWeight.setModel(numWeight);
|
||||
SpinnerModel numWheels = new SpinnerNumberModel(2, 2, 4, 1);
|
||||
spinnerNumberOfWheels.setModel(numWheels);
|
||||
panelObject = new Canvas();
|
||||
panelObject.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
|
||||
spinnerSpeed.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
if (_drawingMonorail == null) return;
|
||||
_drawingMonorail.getMonorail().setSpeed((int)spinnerSpeed.getValue());
|
||||
}
|
||||
});
|
||||
spinnerWeight.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
if (_drawingMonorail == null) return;
|
||||
_drawingMonorail.getMonorail().setWeight((int)spinnerWeight.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
spinnerNumberOfWheels.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
if(_drawingMonorail ==null)return;
|
||||
_drawingMonorail._wheels.SetCountWheels((int) spinnerNumberOfWheels.getValue());
|
||||
panelObject.repaint();
|
||||
}
|
||||
});
|
||||
checkBoxMonorailTrack.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (_drawingMonorail == null) return;
|
||||
if (_drawingMonorail.getMonorail() instanceof EntityModernMonorail entityModernMonorail) {
|
||||
entityModernMonorail.setMonorailTrack(checkBoxMonorailTrack.isSelected());
|
||||
panelObject.repaint();
|
||||
}
|
||||
}
|
||||
});
|
||||
checkBoxCabin.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (_drawingMonorail == null) return;
|
||||
if (_drawingMonorail.getMonorail() instanceof EntityModernMonorail entityModernMonorail) {
|
||||
entityModernMonorail.setCabin(checkBoxCabin.isSelected());
|
||||
panelObject.repaint();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
labelMonorail.setBackground(Color.WHITE);
|
||||
labelModernMonorail.setBackground(Color.WHITE);
|
||||
labelMonorail.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
labelModernMonorail.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
labelBodyColor.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
labelAdditionalColor.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
labelDefaultWheels.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
labelOvalOrnament.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
labelTriangleOrnament.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
|
||||
MouseAdapter labelObjectsMouseDown = new MouseAdapter() {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((JLabel) e.getComponent()).getTransferHandler().exportAsDrag(((JLabel) e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
};
|
||||
TransferHandler labelObjectsTransferHandler = new TransferHandler() {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new StringSelection(((JLabel) c).getText());
|
||||
}
|
||||
};
|
||||
|
||||
labelMonorail.addMouseListener(labelObjectsMouseDown);
|
||||
labelMonorail.setTransferHandler(labelObjectsTransferHandler);
|
||||
labelModernMonorail.addMouseListener(labelObjectsMouseDown);
|
||||
labelModernMonorail.setTransferHandler(labelObjectsTransferHandler);
|
||||
|
||||
MouseAdapter labelWheelsMouseDown = new MouseAdapter() {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((JLabel) e.getComponent()).getTransferHandler().exportAsDrag(((JLabel) e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
};
|
||||
|
||||
labelDefaultWheels.addMouseListener(labelWheelsMouseDown);
|
||||
labelOvalOrnament.addMouseListener(labelWheelsMouseDown);
|
||||
labelTriangleOrnament.addMouseListener(labelWheelsMouseDown);
|
||||
labelDefaultWheels.setTransferHandler(new TransferHandler() {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {return TransferHandler.COPY;}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new WheelsTransferable(new DrawingWheels());
|
||||
}
|
||||
});
|
||||
labelOvalOrnament.setTransferHandler(new TransferHandler() {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {return TransferHandler.COPY;}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new WheelsTransferable(new DrawOrnamentOval());
|
||||
}
|
||||
});
|
||||
labelTriangleOrnament.setTransferHandler(new TransferHandler() {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {return TransferHandler.COPY;}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new WheelsTransferable(new DrawOrnamentTriangle());
|
||||
}
|
||||
});
|
||||
|
||||
panelObject.setTransferHandler(new TransferHandler() {
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
return support.isDataFlavorSupported(DataFlavor.stringFlavor)
|
||||
|| support.isDataFlavorSupported(WheelsTransferable.wheelsDataFlavor);
|
||||
}
|
||||
@Override
|
||||
public boolean importData(TransferHandler.TransferSupport support) {
|
||||
if (canImport(support)) {
|
||||
try {
|
||||
String data = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor);
|
||||
|
||||
switch (data) {
|
||||
case "Monorail":
|
||||
_drawingMonorail = new DrawingMonorail((int) spinnerSpeed.getValue(), (int) spinnerWeight.getValue(), Color.WHITE);
|
||||
break;
|
||||
case "ModernMonorail":
|
||||
_drawingMonorail = new DrawingModernMonorail((int) spinnerSpeed.getValue(), (int) spinnerWeight.getValue(),
|
||||
Color.DARK_GRAY, Color.BLACK, checkBoxMonorailTrack.isSelected(), checkBoxCabin.isSelected());
|
||||
break;
|
||||
}
|
||||
if (_drawingMonorail != null) {
|
||||
_drawingMonorail._wheels = new DrawingWheels();
|
||||
_drawingMonorail._wheels.SetCountWheels((int) spinnerNumberOfWheels.getValue());
|
||||
_drawingMonorail.SetPictureSize(400,150);
|
||||
_drawingMonorail.SetPosition(10,40);
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
catch (UnsupportedFlavorException | IOException e) {}
|
||||
try {
|
||||
IDrawingWheels wheels =
|
||||
(IDrawingWheels) support.getTransferable().getTransferData(WheelsTransferable.wheelsDataFlavor);
|
||||
_drawingMonorail._wheels = wheels;
|
||||
_drawingMonorail._wheels.SetCountWheels((int) spinnerNumberOfWheels.getValue());
|
||||
|
||||
}catch (UnsupportedFlavorException | IOException e) {}
|
||||
panelObject.repaint();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
JPanel[] colorPanels = {
|
||||
panelColorRed,
|
||||
panelColorGreen,
|
||||
panelColorBlue,
|
||||
panelColorYellow,
|
||||
panelColorWhite,
|
||||
panelColorBlack,
|
||||
panelColorGray,
|
||||
panelColorCyan,
|
||||
};
|
||||
panelColorRed.setBackground(Color.RED);
|
||||
panelColorGreen.setBackground(Color.GREEN);
|
||||
panelColorBlue.setBackground(Color.BLUE);
|
||||
panelColorYellow.setBackground(Color.YELLOW);
|
||||
panelColorWhite.setBackground(Color.WHITE);
|
||||
panelColorBlack.setBackground(Color.BLACK);
|
||||
panelColorGray.setBackground(Color.GRAY);
|
||||
panelColorCyan.setBackground(Color.CYAN);
|
||||
MouseAdapter colorMouseDown = new MouseAdapter() {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((JPanel) e.getComponent()).getTransferHandler().exportAsDrag(((JPanel) e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
};
|
||||
for (var panelColor : colorPanels) {
|
||||
panelColor.addMouseListener(colorMouseDown);
|
||||
panelColor.setTransferHandler(new ColorTransferHandler());
|
||||
}
|
||||
labelBodyColor.setTransferHandler(new TransferHandler() {
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
return support.isDataFlavorSupported(ColorTransferable.colorDataFlavor);
|
||||
}
|
||||
@Override
|
||||
public boolean importData(TransferSupport support) {
|
||||
try {
|
||||
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
||||
if (_drawingMonorail == null) return false;
|
||||
_drawingMonorail.getMonorail().setBodyColor(color);
|
||||
return true;
|
||||
} catch (UnsupportedFlavorException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
labelAdditionalColor.setTransferHandler(new TransferHandler() {
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
if (!(_drawingMonorail instanceof DrawingModernMonorail)) return false;
|
||||
return support.isDataFlavorSupported(ColorTransferable.colorDataFlavor);
|
||||
}
|
||||
@Override
|
||||
public boolean importData(TransferSupport support) {
|
||||
try {
|
||||
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
||||
if (_drawingMonorail == null) return false;
|
||||
if (_drawingMonorail.getMonorail() instanceof EntityModernMonorail) {
|
||||
((EntityModernMonorail)_drawingMonorail.getMonorail()).setAdditionalColor(color);
|
||||
labelColor.setBackground(color);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} catch (UnsupportedFlavorException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
buttonAdd.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (_drawingMonorail == null) return;
|
||||
|
||||
company._collection.Insert(_drawingMonorail);
|
||||
FormMonorailCollection.canvasShow();
|
||||
dispose();
|
||||
}
|
||||
});
|
||||
buttonCancel.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
dispose();
|
||||
}
|
||||
});
|
||||
labelSpeed.setBounds(8, 17, 75, 15);
|
||||
labelWeight.setBounds(8,43, 75, 15);
|
||||
labelNumberOfWheels.setBounds(8, 68, 75, 15);
|
||||
labelMonorail.setBounds(8,150,105,30);
|
||||
labelModernMonorail.setBounds(8,190,110,30);
|
||||
checkBoxMonorailTrack.setBounds(8,85,150,20);
|
||||
checkBoxCabin.setBounds(8,105,150,20);
|
||||
spinnerSpeed.setBounds(80,15, 60,20);
|
||||
spinnerWeight.setBounds(80,40, 60,20);
|
||||
spinnerNumberOfWheels.setBounds(80, 65,60,20);
|
||||
panelObject.setBounds(555,50,400,150);
|
||||
labelBodyColor.setBounds(500,5,100, 40);
|
||||
labelAdditionalColor.setBounds(605,5,170,40);
|
||||
labelWheels.setBounds(225,190,150,15);
|
||||
labelDefaultWheels.setBounds(140, 210, 100, 40);
|
||||
labelOvalOrnament.setBounds(250, 210, 100,40);
|
||||
labelTriangleOrnament.setBounds(360,210,100,40);
|
||||
labelColor.setBounds(200,10,50,15);
|
||||
panelColorRed.setBounds(200, 30, 40, 40);
|
||||
panelColorGreen.setBounds(250, 30, 40,40);
|
||||
panelColorBlue.setBounds(300,30,40,40);
|
||||
panelColorYellow.setBounds(350,30,40,40);
|
||||
panelColorWhite.setBounds(200, 80,40,40);
|
||||
panelColorBlack.setBounds(250,80,40,40);
|
||||
panelColorGray.setBounds(300,80,40,40);
|
||||
panelColorCyan.setBounds(350,80,40,40);
|
||||
buttonAdd.setBounds(515, 210, 110, 40);
|
||||
buttonCancel.setBounds(640, 210, 110, 40);
|
||||
setSize(dimension.width, dimension.height);
|
||||
setLayout(null);
|
||||
add(labelSpeed);
|
||||
add(labelWeight);
|
||||
add(labelNumberOfWheels);
|
||||
add(labelMonorail);
|
||||
add(labelModernMonorail);
|
||||
add(labelColor);
|
||||
add(labelBodyColor);
|
||||
add(labelAdditionalColor);
|
||||
add(labelDefaultWheels);
|
||||
add(labelDefaultWheels);
|
||||
add(labelOvalOrnament);
|
||||
add(labelTriangleOrnament);
|
||||
add(spinnerSpeed);
|
||||
add(spinnerWeight);
|
||||
add(spinnerNumberOfWheels);
|
||||
add(checkBoxMonorailTrack);
|
||||
add(checkBoxCabin);
|
||||
add(panelObject);
|
||||
add(panelColorRed);
|
||||
add(panelColorGreen);
|
||||
add(panelColorBlue);
|
||||
add(panelColorYellow);
|
||||
add(panelColorWhite);
|
||||
add(labelWheels);
|
||||
add(panelColorBlack);
|
||||
add(panelColorGray);
|
||||
add(panelColorCyan);
|
||||
add(buttonAdd);
|
||||
add(buttonCancel);
|
||||
setVisible(true);
|
||||
}
|
||||
public void setCompany(AbstractCompany company) {
|
||||
this.company = company;
|
||||
}
|
||||
private class Canvas extends JComponent {
|
||||
public Canvas() {
|
||||
}
|
||||
public void paintComponent(Graphics g) {
|
||||
if (_drawingMonorail == null) {
|
||||
return;
|
||||
}
|
||||
super.paintComponents(g);
|
||||
Graphics2D g2d = (Graphics2D) g;
|
||||
_drawingMonorail.DrawTransport(g2d);
|
||||
super.repaint();
|
||||
}
|
||||
}
|
||||
private class ColorTransferable implements Transferable {
|
||||
private Color color;
|
||||
private static final DataFlavor colorDataFlavor = new DataFlavor(Color.class, "Color");
|
||||
public ColorTransferable(Color color) {
|
||||
this.color = color;
|
||||
}
|
||||
@Override
|
||||
public DataFlavor[] getTransferDataFlavors() {
|
||||
return new DataFlavor[]{colorDataFlavor};
|
||||
}
|
||||
@Override
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
||||
return colorDataFlavor.equals(flavor);
|
||||
}
|
||||
@Override
|
||||
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
|
||||
if (isDataFlavorSupported(flavor)) {
|
||||
return color;
|
||||
} else {
|
||||
throw new UnsupportedFlavorException(flavor);
|
||||
}
|
||||
}
|
||||
}
|
||||
private class ColorTransferHandler extends TransferHandler {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new ColorTransferable(c.getBackground());
|
||||
}
|
||||
}
|
||||
private class WheelsTransferable implements Transferable {
|
||||
private IDrawingWheels wheels;
|
||||
private static final DataFlavor wheelsDataFlavor = new DataFlavor(IDrawingWheels.class, "Wheels");
|
||||
public WheelsTransferable(IDrawingWheels iDrawingWheels) {
|
||||
this.wheels = iDrawingWheels;
|
||||
}
|
||||
public WheelsTransferable(IOrnament ornament) {
|
||||
this.wheels = new DrawingWheels();
|
||||
wheels.SetOrnament(ornament);
|
||||
}
|
||||
@Override
|
||||
public DataFlavor[] getTransferDataFlavors() {
|
||||
return new DataFlavor[]{wheelsDataFlavor};
|
||||
}
|
||||
@Override
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
||||
return flavor.equals(wheelsDataFlavor);
|
||||
}
|
||||
@Override
|
||||
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
|
||||
if (isDataFlavorSupported(flavor)) {
|
||||
return wheels;
|
||||
} else {
|
||||
throw new UnsupportedFlavorException(flavor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
13
ProjectMonorail/src/Scripts/Forms/FormShipConfig.form
Normal file
13
ProjectMonorail/src/Scripts/Forms/FormShipConfig.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="Scripts.Forms.FormMonorailConfig">
|
||||
<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>
|
||||
@@ -1,6 +1,6 @@
|
||||
package Scripts.MovementStratagy;
|
||||
|
||||
import Scripts.DirectionType;
|
||||
import Scripts.Drawing.DirectionType;
|
||||
|
||||
public abstract class AbstractStrategy {
|
||||
private IMoveableObject moveableObject;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package Scripts.MovementStratagy;
|
||||
|
||||
import Scripts.DirectionType;
|
||||
import Scripts.Drawing.DirectionType;
|
||||
|
||||
public interface IMoveableObject{
|
||||
ObjectParameters GetObjectPosition();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package Scripts.MovementStratagy;
|
||||
|
||||
import Scripts.DirectionType;
|
||||
import Scripts.DrawingMonorail;
|
||||
import Scripts.Drawing.DirectionType;
|
||||
import Scripts.Drawing.DrawingMonorail;
|
||||
|
||||
public class MoveableMonorail implements IMoveableObject {
|
||||
private DrawingMonorail _drawingMonorail = null;
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package Scripts;
|
||||
|
||||
import Scripts.Forms.FormMonorailCollection;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public class Program {
|
||||
public static void main(String[] args){
|
||||
new FormModernMonorail();
|
||||
FormMonorailCollection form = new FormMonorailCollection("Монорельс", new Dimension(800, 800));
|
||||
form.Init();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,37 +5,35 @@ import Scripts.Wheels.CountWheels;
|
||||
import java.awt.*;
|
||||
import java.util.Random;
|
||||
|
||||
public class DrawingWheels {
|
||||
public class DrawingWheels implements IDrawingWheels{
|
||||
private CountWheels _wheels;
|
||||
private IOrnament _ornament;
|
||||
private IOrnament _ornament;
|
||||
|
||||
public void SetOrnament(IOrnament ornament) {
|
||||
_ornament = ornament;
|
||||
}
|
||||
|
||||
public IOrnament GetOrnament() {return _ornament;}
|
||||
|
||||
public void SetCountWheels(int Count){
|
||||
for (CountWheels temp: CountWheels.values())
|
||||
if (temp.getCountWheels() == Count){
|
||||
Random rnd = new Random();
|
||||
_wheels=temp;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public int getCountWheels() {
|
||||
return _wheels.getCountWheels();
|
||||
if (_wheels != null) return _wheels.getCountWheels();
|
||||
else {
|
||||
SetCountWheels(2);
|
||||
return _wheels.getCountWheels();
|
||||
}
|
||||
}
|
||||
|
||||
public void DrawWheels(Graphics2D g,int startPosX[], int startPosY, Color color) {
|
||||
Random rnd = new Random();
|
||||
int ranOrnament = rnd.nextInt(0, 3);
|
||||
switch (ranOrnament) {
|
||||
case 0:
|
||||
_ornament = new DrawOrnament();
|
||||
break;
|
||||
case 1:
|
||||
_ornament = new DrawOrnamentTriangle();
|
||||
break;
|
||||
case 2:
|
||||
_ornament = new DrawOrnamentOval();
|
||||
break;
|
||||
}
|
||||
|
||||
if (_ornament == null) _ornament = new DrawOrnament();
|
||||
for (int i = 0; i < startPosX.length; i++) {
|
||||
g.setColor(color);
|
||||
g.drawOval(startPosX[i], startPosY, 10, 10);
|
||||
|
||||
11
ProjectMonorail/src/Scripts/Wheels/IDrawingWheels.java
Normal file
11
ProjectMonorail/src/Scripts/Wheels/IDrawingWheels.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package Scripts.Wheels;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public interface IDrawingWheels {
|
||||
public void SetOrnament(IOrnament ornament);
|
||||
IOrnament GetOrnament();
|
||||
public void SetCountWheels(int Count);
|
||||
public int getCountWheels();
|
||||
public void DrawWheels(Graphics2D g, int startPosX[], int startPosY, Color color);
|
||||
}
|
||||
Reference in New Issue
Block a user