лаба 5
This commit is contained in:
parent
4a6f1a14dd
commit
f05a18487e
@ -16,6 +16,14 @@ public class DrawningExcavator extends DrawningTracktor {
|
||||
setEntityTracktor(entityExcavator);
|
||||
}
|
||||
}
|
||||
public DrawningExcavator(int speed, double weight, Color bodyColor, boolean bucket, boolean supports, Color bucketColor, Color supportsColor, int width, int height, int rollersCount, IDrawningRollers iDrawningRollers)
|
||||
{
|
||||
super(speed, weight, bodyColor, width, height, rollersCount, iDrawningRollers);
|
||||
if (getEntityTracktor() != null)
|
||||
{
|
||||
setEntityTracktor(new EntityExcavator(speed, weight, bodyColor, bucketColor, supportsColor, bucket, supports));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void DrawTransport(Graphics2D g){
|
||||
|
@ -17,6 +17,7 @@ public class DrawningRollers implements IDrawningRollers {
|
||||
default -> rollersCount = RollersCount.Four;
|
||||
}
|
||||
}
|
||||
|
||||
public DrawningRollers(int count, Color colorRollers){
|
||||
setRollersCount(count);
|
||||
this.colorRollers = colorRollers;
|
||||
@ -65,4 +66,46 @@ public class DrawningRollers implements IDrawningRollers {
|
||||
g.fillOval((int)_startPosX + 13, (int)_startPosY + 68, 6, 6);
|
||||
g.fillOval((int)_startPosX + 91, (int)_startPosY + 68, 6, 6);
|
||||
}
|
||||
private void drawFourRollers(Graphics2D g, Color color, int _startPosX, int _startPosY) {
|
||||
Color penColor = Color.BLACK;
|
||||
Color mainColor = colorRollers==null ? Color.LIGHT_GRAY : colorRollers;
|
||||
|
||||
// Крупные катки - всегда
|
||||
g.setColor(mainColor);
|
||||
g.fillOval((int)_startPosX + 5, (int)_startPosY + 60, 22, 22);
|
||||
g.setColor(penColor);
|
||||
g.drawOval((int)_startPosX + 5, (int)_startPosY + 60, 22, 22);
|
||||
g.setColor(mainColor);
|
||||
g.fillOval((int)_startPosX + 83, (int)_startPosY + 60, 22, 22);
|
||||
g.setColor(penColor);
|
||||
g.drawOval((int)_startPosX + 83, (int)_startPosY + 60, 22, 22);
|
||||
|
||||
// Малые катки - всегда
|
||||
g.setColor(mainColor);
|
||||
g.fillOval((int)_startPosX + 43, (int)_startPosY + 58, 6, 6);
|
||||
g.setColor(penColor);
|
||||
g.drawOval((int)_startPosX + 43, (int)_startPosY + 58, 6, 6);
|
||||
g.setColor(mainColor);
|
||||
g.fillOval((int)_startPosX + 61, (int)_startPosY + 58, 6, 6);
|
||||
g.setColor(penColor);
|
||||
g.drawOval((int)_startPosX + 61, (int)_startPosY + 58, 6, 6);
|
||||
}
|
||||
private void drawFiveRollers(Graphics2D g, Color color, int _startPosX, int _startPosY) {
|
||||
Color penColor = Color.BLACK;
|
||||
Color mainColor = colorRollers==null ? Color.LIGHT_GRAY : colorRollers;
|
||||
drawFourRollers(g,color,_startPosX,_startPosY);
|
||||
g.setColor(mainColor);
|
||||
g.fillOval((int)_startPosX + 68, (int)_startPosY + 73, 10, 10);
|
||||
g.setColor(penColor);
|
||||
g.drawOval((int)_startPosX + 68, (int)_startPosY + 73, 10, 10);
|
||||
}
|
||||
private void drawSixRollers(Graphics2D g, Color color, int _startPosX, int _startPosY) {
|
||||
Color penColor = Color.BLACK;
|
||||
Color mainColor = colorRollers==null ? Color.LIGHT_GRAY : colorRollers;
|
||||
drawFiveRollers(g,color,_startPosX,_startPosY);
|
||||
g.setColor(mainColor);
|
||||
g.fillOval((int)_startPosX + 33, (int)_startPosY + 73, 10, 10);
|
||||
g.setColor(penColor);
|
||||
g.drawOval((int)_startPosX + 33, (int)_startPosY + 73, 10, 10);
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ import java.util.Random;
|
||||
|
||||
// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||
public class DrawningTracktor {
|
||||
private EntityTracktor entityTracktor; // Класс-сущность
|
||||
public EntityTracktor entityTracktor; // Класс-сущность
|
||||
public EntityTracktor getEntityTracktor(){
|
||||
return entityTracktor;
|
||||
}
|
||||
@ -15,8 +15,8 @@ public class DrawningTracktor {
|
||||
}
|
||||
protected int _startPosX; // Левая координата отрисовки трактора
|
||||
protected int _startPosY; // Верхняя кооридната отрисовки трактора
|
||||
private Integer _pictureWidth; // Ширина окна отрисовки
|
||||
private Integer _pictureHeight; // Высота окна отрисовки
|
||||
public Integer _pictureWidth; // Ширина окна отрисовки
|
||||
public Integer _pictureHeight; // Высота окна отрисовки
|
||||
protected int _tracktorWidth = 110; // Ширина отрисовки трактора
|
||||
protected int _tracktorHeight = 87; // Высота отрисовки трактора
|
||||
public int getPosX(){
|
||||
@ -31,7 +31,7 @@ public class DrawningTracktor {
|
||||
public int getHeight(){
|
||||
return _tracktorHeight;
|
||||
}
|
||||
private IDrawningRollers drawningRollers;
|
||||
public IDrawningRollers drawningRollers;
|
||||
|
||||
// Инициализация свойств
|
||||
public DrawningTracktor(int speed, double weight, Color bodyColor,int width,int height, int countRollers)
|
||||
@ -80,6 +80,16 @@ public class DrawningTracktor {
|
||||
drawningRollers = iDrawningRollers;
|
||||
drawningRollers.setRollersCount(rollersCount);
|
||||
}
|
||||
public DrawningTracktor(int speed, double weight, Color bodyColor, int width, int height, int rollersCount, IDrawningRollers iDrawningRollers){
|
||||
if (height < _pictureHeight || width < _tracktorWidth) {
|
||||
return;
|
||||
}
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
entityTracktor = new EntityTracktor(speed, weight, bodyColor);
|
||||
drawningRollers = iDrawningRollers;
|
||||
drawningRollers.setRollersCount(rollersCount);
|
||||
}
|
||||
public boolean CanMove(Direction direction){
|
||||
if(entityTracktor == null)
|
||||
return false;
|
||||
|
@ -19,9 +19,15 @@ public class EntityExcavator extends EntityTracktor{
|
||||
public Color getBucketColor(){
|
||||
return BucketColor;
|
||||
}
|
||||
public void setBucketColor(Color color){
|
||||
BucketColor = color;
|
||||
}
|
||||
public Color getSupportsColor(){
|
||||
return SupportsColor;
|
||||
}
|
||||
public void setSupportsColor(Color color){
|
||||
SupportsColor = color;
|
||||
}
|
||||
|
||||
public boolean getBucket(){
|
||||
return bucket;
|
||||
|
@ -14,6 +14,9 @@ public class EntityTracktor {
|
||||
public Color getBodyColor(){
|
||||
return BodyColor;
|
||||
}
|
||||
public void setBodyColor(Color color){
|
||||
BodyColor = color;
|
||||
}
|
||||
public double getStep(){
|
||||
return (double) Speed * 100 / Weight;
|
||||
}
|
||||
|
15
src/FrameTracktorConfig.java
Normal file
15
src/FrameTracktorConfig.java
Normal file
@ -0,0 +1,15 @@
|
||||
import javax.swing.*;
|
||||
|
||||
public class FrameTracktorConfig extends JFrame {
|
||||
|
||||
public PictureBoxTracktorConfig pictureBoxTracktorConfig;
|
||||
|
||||
public FrameTracktorConfig() {
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
pictureBoxTracktorConfig = new PictureBoxTracktorConfig();
|
||||
add(pictureBoxTracktorConfig);
|
||||
pack();
|
||||
setLocationRelativeTo(null);
|
||||
setVisible(true);
|
||||
}
|
||||
}
|
@ -94,17 +94,18 @@ public class PictureBoxCollection extends JPanel {
|
||||
var obj = _storage.get(listStorage.getSelectedValue());
|
||||
if (obj == null)
|
||||
return;
|
||||
FrameExcavator frameExcavator = new FrameExcavator(null);
|
||||
frameExcavator.pictureBoxExcavator.buttonSelectTracktor.addActionListener(e1 -> {
|
||||
if (obj.Add(frameExcavator.pictureBoxExcavator.drawingTracktor) != -1) {
|
||||
FrameTracktorConfig frameTracktorConfig = new FrameTracktorConfig();
|
||||
frameTracktorConfig.pictureBoxTracktorConfig.buttonAdd.addActionListener(e1 -> {
|
||||
if (obj != null && obj.Add(frameTracktorConfig.pictureBoxTracktorConfig._tracktor)!=-1) {
|
||||
JOptionPane.showMessageDialog(null, "Объект добавлен", "Информация", JOptionPane.INFORMATION_MESSAGE);
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null, "Не удалось добавить объект", "Информация", JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
frameExcavator.dispose();
|
||||
frameTracktorConfig.dispose();
|
||||
repaint();
|
||||
}
|
||||
);
|
||||
frameTracktorConfig.pictureBoxTracktorConfig.buttonCancel.addActionListener(e1 -> frameTracktorConfig.dispose());
|
||||
});
|
||||
add(buttonAddTracktor);
|
||||
|
||||
|
474
src/PictureBoxTracktorConfig.java
Normal file
474
src/PictureBoxTracktorConfig.java
Normal file
@ -0,0 +1,474 @@
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
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.io.IOException;
|
||||
import java.util.Random;
|
||||
|
||||
import java.awt.event.*;
|
||||
|
||||
public class PictureBoxTracktorConfig extends JPanel {
|
||||
private static class LabelTransferHandler extends TransferHandler {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new StringSelection(((JLabel)c).getText());
|
||||
}
|
||||
}
|
||||
private static 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, IOException {
|
||||
if (isDataFlavorSupported(flavor)) {
|
||||
return color;
|
||||
} else {
|
||||
throw new UnsupportedFlavorException(flavor);
|
||||
}
|
||||
}
|
||||
}
|
||||
private class PanelTransferHandler extends TransferHandler {
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new ColorTransferable(((JPanel) c).getBackground());
|
||||
}
|
||||
}
|
||||
private class LabelMouseAdapter extends MouseAdapter{
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((JLabel)e.getComponent()).getTransferHandler().exportAsDrag(((JLabel)e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
}
|
||||
private class PanelMouseAdapter extends MouseAdapter{
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((JPanel)e.getComponent()).getTransferHandler().exportAsDrag(((JPanel)e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
}
|
||||
|
||||
private class RollersTransferable implements Transferable {
|
||||
private IDrawningRollers rollersDrawning;
|
||||
private static final DataFlavor rollersDrawningDataFlavor = new DataFlavor(IDrawningRollers.class, "Roller Drawing");
|
||||
|
||||
public RollersTransferable(IDrawningRollers rollersDrawning) {
|
||||
this.rollersDrawning = rollersDrawning;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataFlavor[] getTransferDataFlavors() {
|
||||
return new DataFlavor[]{rollersDrawningDataFlavor};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
||||
return flavor.equals(rollersDrawningDataFlavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
|
||||
if (isDataFlavorSupported(flavor)) {
|
||||
return rollersDrawning;
|
||||
} else {
|
||||
throw new UnsupportedFlavorException(flavor);
|
||||
}
|
||||
}
|
||||
}
|
||||
private class RollerPanel extends JPanel{
|
||||
public IDrawningRollers rollersDrawning;
|
||||
|
||||
public RollerPanel(IDrawningRollers _rollersDrawning){
|
||||
rollersDrawning = _rollersDrawning;
|
||||
rollersDrawning.setRollersCount(4);
|
||||
this.addMouseListener(
|
||||
new MouseAdapter(){
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
((RollerPanel)e.getComponent()).getTransferHandler().exportAsDrag(((RollerPanel)e.getComponent()), e, TransferHandler.COPY);
|
||||
}
|
||||
}
|
||||
);
|
||||
this.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public int getSourceActions(JComponent c) {
|
||||
return TransferHandler.COPY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Transferable createTransferable(JComponent c) {
|
||||
return new RollersTransferable(((RollerPanel)c).rollersDrawning);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public void paintComponent (Graphics g){
|
||||
super.paintComponents (g) ;
|
||||
Graphics2D g2d = (Graphics2D)g;
|
||||
rollersDrawning.DrawRollers(g2d,0, -50);
|
||||
}
|
||||
}
|
||||
|
||||
private class TracktorPreview extends JPanel{
|
||||
|
||||
@Override
|
||||
public void paintComponent (Graphics g) {
|
||||
if (_tracktor == null) {
|
||||
return;
|
||||
}
|
||||
_tracktor.SetPosition(20, 20);
|
||||
super.paintComponent(g);
|
||||
Graphics2D g2d = (Graphics2D) g;
|
||||
_tracktor.DrawTransport(g2d);
|
||||
}
|
||||
}
|
||||
DrawningTracktor _tracktor = null;
|
||||
JButton buttonAdd, buttonCancel;
|
||||
JLabel labelParameters, labelColors, labelSpeed, labelWeight, labelRollerAmount, labelSimpleObject, labelModifiedObject, labelBodyColor, labelBucketColor, labelSupportsColor, labelRollers, labelRollerPreview;
|
||||
JCheckBox checkBoxBucket, checkBoxSupports;
|
||||
SpinnerModel spinnerModelSpeed, spinnerModelWeight, spinnerModelRollerAmount;
|
||||
JSpinner numericUpDownSpeed, numericUpDownWeight, numericUpDownRollerAmount;
|
||||
JPanel panelRed, panelGreen, panelBlue, panelYellow, panelWhite, panelGray, panelBlack, panelMagenta;
|
||||
TracktorPreview TracktorPreview;
|
||||
public PictureBoxTracktorConfig() {
|
||||
Random random = new Random();
|
||||
setLayout(null);
|
||||
setBounds(0, 0, 800, 300);
|
||||
buttonAdd = new JButton("Добавить");
|
||||
buttonAdd.setFocusable(false);
|
||||
buttonAdd.setBounds(550, 260, 100, 30);
|
||||
add(buttonAdd);
|
||||
|
||||
buttonCancel = new JButton("Отмена");
|
||||
buttonCancel.setFocusable(false);
|
||||
buttonCancel.setBounds(670, 260, 100, 30);
|
||||
add(buttonCancel);
|
||||
|
||||
labelParameters = new JLabel("Параметры");
|
||||
labelParameters.setBounds(10, 10, 100, 20);
|
||||
add(labelParameters);
|
||||
|
||||
labelSpeed = new JLabel("Скорость:");
|
||||
labelSpeed.setBounds(10, 50, 100, 20);
|
||||
add(labelSpeed);
|
||||
|
||||
labelWeight = new JLabel("Вес:");
|
||||
labelWeight.setBounds(10, 80, 100, 20);
|
||||
add(labelWeight);
|
||||
|
||||
labelRollerAmount = new JLabel("Кол-во колес:");
|
||||
labelRollerAmount.setBounds(10, 110, 100, 20);
|
||||
add(labelRollerAmount);
|
||||
|
||||
checkBoxBucket = new JCheckBox("Признак наличия ковша");
|
||||
checkBoxBucket.setBounds(10, 200, 200, 20);
|
||||
checkBoxBucket.setFocusable(false);
|
||||
add(checkBoxBucket);
|
||||
|
||||
checkBoxSupports = new JCheckBox("Признак наличия опор");
|
||||
checkBoxSupports.setBounds(10, 230, 200, 20);
|
||||
checkBoxSupports.setFocusable(false);
|
||||
add(checkBoxSupports);
|
||||
|
||||
spinnerModelSpeed = new SpinnerNumberModel(100, 100, 1000, 1);
|
||||
numericUpDownSpeed = new JSpinner(spinnerModelSpeed);
|
||||
numericUpDownSpeed.setBounds(100, 50, 50, 20);
|
||||
numericUpDownSpeed.setFocusable(false);
|
||||
add(numericUpDownSpeed);
|
||||
|
||||
spinnerModelWeight = new SpinnerNumberModel(100, 100, 1000, 1);
|
||||
numericUpDownWeight = new JSpinner(spinnerModelWeight);
|
||||
numericUpDownWeight.setBounds(100, 80, 50, 20);
|
||||
numericUpDownWeight.setFocusable(false);
|
||||
add(numericUpDownWeight);
|
||||
|
||||
spinnerModelRollerAmount = new SpinnerNumberModel(4, 4, 6, 1);
|
||||
numericUpDownRollerAmount = new JSpinner(spinnerModelRollerAmount);
|
||||
numericUpDownRollerAmount.setBounds(100, 110, 50, 20);
|
||||
numericUpDownRollerAmount.setFocusable(false);
|
||||
add(numericUpDownRollerAmount);
|
||||
|
||||
labelColors = new JLabel("Цвета");
|
||||
labelColors.setBounds(250, 20, 100, 20);
|
||||
add(labelColors);
|
||||
|
||||
Border border = BorderFactory.createLineBorder(Color.BLACK);
|
||||
|
||||
labelSimpleObject = new JLabel("Простой");
|
||||
labelSimpleObject.setBounds(250, 240, 100, 50);
|
||||
labelSimpleObject.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
labelSimpleObject.setBorder(border);
|
||||
labelSimpleObject.setTransferHandler(new LabelTransferHandler());
|
||||
labelSimpleObject.addMouseListener(new LabelMouseAdapter());
|
||||
add(labelSimpleObject);
|
||||
|
||||
labelModifiedObject = new JLabel("Продвинутый");
|
||||
labelModifiedObject.setBounds(370, 240, 100, 50);
|
||||
labelModifiedObject.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
labelModifiedObject.setBorder(border);
|
||||
labelModifiedObject.setTransferHandler(new LabelTransferHandler());
|
||||
labelModifiedObject.addMouseListener(new LabelMouseAdapter());
|
||||
add(labelModifiedObject);
|
||||
|
||||
labelBodyColor = new JLabel("Цвет");
|
||||
labelBodyColor.setBounds(530, 20, 80, 40);
|
||||
labelBodyColor.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
labelBodyColor.setBorder(border);
|
||||
labelBodyColor.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
return support.isDataFlavorSupported(ColorTransferable.colorDataFlavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean importData(TransferHandler.TransferSupport support) {
|
||||
if (canImport(support)) {
|
||||
try {
|
||||
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
||||
if (_tracktor == null)
|
||||
return false;
|
||||
_tracktor.entityTracktor.setBodyColor(color);
|
||||
TracktorPreview.repaint();
|
||||
return true;
|
||||
} catch (UnsupportedFlavorException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
);
|
||||
add(labelBodyColor);
|
||||
|
||||
labelBucketColor = new JLabel("Цвет кузова");
|
||||
labelBucketColor.setBounds(620, 20, 80, 40);
|
||||
labelBucketColor.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
labelBucketColor.setBorder(border);
|
||||
labelBucketColor.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
return support.isDataFlavorSupported(ColorTransferable.colorDataFlavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean importData(TransferHandler.TransferSupport support) {
|
||||
if (canImport(support)) {
|
||||
try {
|
||||
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
||||
if (_tracktor == null)
|
||||
return false;
|
||||
if (!(_tracktor instanceof DrawningExcavator))
|
||||
return false;
|
||||
((EntityExcavator)_tracktor.entityTracktor).setBucketColor(color);
|
||||
TracktorPreview.repaint();
|
||||
return true;
|
||||
} catch (UnsupportedFlavorException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
);
|
||||
add(labelBucketColor);
|
||||
|
||||
labelSupportsColor = new JLabel("Цвет опор");
|
||||
labelSupportsColor.setBounds(710, 20, 80, 40);
|
||||
labelSupportsColor.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
labelSupportsColor.setBorder(border);
|
||||
labelSupportsColor.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
return support.isDataFlavorSupported(ColorTransferable.colorDataFlavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean importData(TransferHandler.TransferSupport support) {
|
||||
if (canImport(support)) {
|
||||
try {
|
||||
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
||||
if (_tracktor == null)
|
||||
return false;
|
||||
if (!(_tracktor instanceof DrawningExcavator))
|
||||
return false;
|
||||
((EntityExcavator)_tracktor.entityTracktor).setSupportsColor(color);
|
||||
TracktorPreview.repaint();
|
||||
return true;
|
||||
} catch (UnsupportedFlavorException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
);
|
||||
add(labelSupportsColor);
|
||||
|
||||
labelRollerPreview = new JLabel("Колесо");
|
||||
labelRollerPreview.setBounds(530, 70, 80, 30);
|
||||
labelRollerPreview.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
labelRollerPreview.setBorder(border);
|
||||
add(labelRollerPreview);
|
||||
labelRollerPreview.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
return support.isDataFlavorSupported(RollersTransferable.rollersDrawningDataFlavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean importData(TransferHandler.TransferSupport support) {
|
||||
if (canImport(support)) {
|
||||
try {
|
||||
IDrawningRollers IDrawningRollers = (IDrawningRollers) support.getTransferable().getTransferData(RollersTransferable.rollersDrawningDataFlavor);
|
||||
if (_tracktor == null)
|
||||
return false;
|
||||
_tracktor.drawningRollers = IDrawningRollers;
|
||||
_tracktor.drawningRollers.setRollersCount((int)numericUpDownRollerAmount.getValue());
|
||||
TracktorPreview.repaint();
|
||||
} catch (UnsupportedFlavorException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
panelRed = new JPanel();
|
||||
panelRed.setBounds(250, 50, 40, 40);
|
||||
panelRed.setBackground(Color.RED);
|
||||
panelRed.setTransferHandler(new PanelTransferHandler());
|
||||
panelRed.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelRed);
|
||||
|
||||
panelGreen = new JPanel();
|
||||
panelGreen.setBounds(300, 50, 40, 40);
|
||||
panelGreen.setBackground(Color.GREEN);
|
||||
panelGreen.setTransferHandler(new PanelTransferHandler());
|
||||
panelGreen.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelGreen);
|
||||
|
||||
panelBlue = new JPanel();
|
||||
panelBlue.setBounds(350, 50, 40, 40);
|
||||
panelBlue.setBackground(Color.BLUE);
|
||||
panelBlue.setTransferHandler(new PanelTransferHandler());
|
||||
panelBlue.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelBlue);
|
||||
|
||||
panelYellow = new JPanel();
|
||||
panelYellow.setBounds(400, 50, 40, 40);
|
||||
panelYellow.setBackground(Color.YELLOW);
|
||||
panelYellow.setTransferHandler(new PanelTransferHandler());
|
||||
panelYellow.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelYellow);
|
||||
|
||||
panelWhite = new JPanel();
|
||||
panelWhite.setBounds(250, 100, 40, 40);
|
||||
panelWhite.setBackground(Color.WHITE);
|
||||
panelWhite.setTransferHandler(new PanelTransferHandler());
|
||||
panelWhite.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelWhite);
|
||||
|
||||
panelGray = new JPanel();
|
||||
panelGray.setBounds(300, 100, 40, 40);
|
||||
panelGray.setBackground(Color.GRAY);
|
||||
panelGray.setTransferHandler(new PanelTransferHandler());
|
||||
panelGray.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelGray);
|
||||
|
||||
panelBlack = new JPanel();
|
||||
panelBlack.setBounds(350, 100, 40, 40);
|
||||
panelBlack.setBackground(Color.black);
|
||||
panelBlack.setTransferHandler(new PanelTransferHandler());
|
||||
panelBlack.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelBlack);
|
||||
|
||||
panelMagenta = new JPanel();
|
||||
panelMagenta.setBounds(400, 100, 40, 40);
|
||||
panelMagenta.setBackground(Color.MAGENTA);
|
||||
panelMagenta.setTransferHandler(new PanelTransferHandler());
|
||||
panelMagenta.addMouseListener(new PanelMouseAdapter());
|
||||
add(panelMagenta);
|
||||
|
||||
labelRollers = new JLabel("Колеса");
|
||||
labelRollers.setBounds(250, 150, 100, 20);
|
||||
add(labelRollers);
|
||||
RollerPanel RollerPanelDefault = new RollerPanel(new DrawningRollers((int)numericUpDownRollerAmount.getValue(),Color.RED));
|
||||
RollerPanelDefault.setBounds(250, 180, 40, 40);
|
||||
add(RollerPanelDefault);
|
||||
RollerPanel RollerPanelCircles = new RollerPanel(new DrawningCrossRollers((int)numericUpDownRollerAmount.getValue(),Color.RED));
|
||||
RollerPanelCircles.setBounds(300, 180, 40, 40);
|
||||
add(RollerPanelCircles);
|
||||
RollerPanel RollerPanelStar = new RollerPanel(new DrawningSquaredRollers((int)numericUpDownRollerAmount.getValue(),Color.RED));
|
||||
RollerPanelStar.setBounds(350, 180, 40, 40);
|
||||
add(RollerPanelStar);
|
||||
|
||||
TracktorPreview = new TracktorPreview();
|
||||
TracktorPreview.setBounds(530, 110, 260, 140);
|
||||
TracktorPreview.setBorder(border);
|
||||
add(TracktorPreview);
|
||||
TracktorPreview.setTransferHandler(
|
||||
new TransferHandler(){
|
||||
@Override
|
||||
public boolean canImport(TransferHandler.TransferSupport support) {
|
||||
return support.isDataFlavorSupported(DataFlavor.stringFlavor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean importData(TransferHandler.TransferSupport support) {
|
||||
if (canImport(support)) {
|
||||
try {
|
||||
String data = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor);
|
||||
switch (data) {
|
||||
case "Простой":
|
||||
_tracktor = new DrawningTracktor((int)numericUpDownSpeed.getValue(), (int)numericUpDownWeight.getValue(), Color.WHITE, TracktorPreview.getWidth(), TracktorPreview.getHeight(), (int)numericUpDownRollerAmount.getValue(), new DrawningRollers((int)numericUpDownRollerAmount.getValue(),Color.RED));
|
||||
break;
|
||||
case "Продвинутый":
|
||||
_tracktor = new DrawningExcavator((int)numericUpDownSpeed.getValue(), (int)numericUpDownWeight.getValue(), Color.WHITE, checkBoxSupports.isSelected(), checkBoxBucket.isSelected(), Color.BLACK, Color.GRAY, TracktorPreview.getWidth(), TracktorPreview.getHeight(), (int)numericUpDownRollerAmount.getValue(), new DrawningRollers((int)numericUpDownRollerAmount.getValue(),Color.RED));
|
||||
break;
|
||||
}
|
||||
TracktorPreview.repaint();
|
||||
return true;
|
||||
} catch (UnsupportedFlavorException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
setPreferredSize(new Dimension(800, 300));
|
||||
}
|
||||
}
|
@ -49,6 +49,8 @@ public class TracktorsGenericCollection<T extends DrawningTracktor, U extends IM
|
||||
int index = 0;
|
||||
for(T tracktor: _collection.GetTracktors(100)){
|
||||
if(tracktor != null){
|
||||
tracktor._pictureWidth = _pictureWidth;
|
||||
tracktor._pictureHeight = _pictureHeight;
|
||||
tracktor.SetPosition(index %(_pictureWidth/ _placeSizeWidth)*_placeSizeWidth,index/(_pictureWidth/_placeSizeWidth) * _placeSizeHeight);
|
||||
tracktor.DrawTransport((Graphics2D) g);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user