diff --git a/ProjectCleaningCar/src/FormCleaningCar.java b/ProjectCleaningCar/src/FormCleaningCar.java
index bffaff9..fe85de5 100644
--- a/ProjectCleaningCar/src/FormCleaningCar.java
+++ b/ProjectCleaningCar/src/FormCleaningCar.java
@@ -40,7 +40,7 @@ public class FormCleaningCar extends JFrame {
_drawningTruck.SetPictureSize(pictureBox.getWidth(), pictureBox.getHeight());
comboBoxStrategy.setEnabled(true);
_strategy = null;
- repaint(); //по-идее вызовет paint()
+ repaint();
}
public FormCleaningCar() {
setSize(1000, 600);
diff --git a/ProjectCleaningCar/src/FormCleaningCarCollection.java b/ProjectCleaningCar/src/FormCleaningCarCollection.java
index 5581f12..6503f86 100644
--- a/ProjectCleaningCar/src/FormCleaningCarCollection.java
+++ b/ProjectCleaningCar/src/FormCleaningCarCollection.java
@@ -86,7 +86,6 @@ public class FormCleaningCarCollection extends JFrame{
//ButtonAddTruck_Click
buttonAddTruck.addActionListener(e -> {
- //CreateObject("DrawningTruck");
FormTruckConfig form = new FormTruckConfig();
form.Init();
form.setVisible(true);
@@ -251,34 +250,6 @@ public class FormCleaningCarCollection extends JFrame{
}
});
}
- private void CreateObject(String type) {
- if (_company == null) return;
- Random random = new Random();
- DrawningTruck drawningTruck;
- switch (type) {
- case "DrawningTruck":
- drawningTruck = new DrawningTruck(random.nextInt(100, 300), random.nextDouble(100, 3000),
- GetColor(random));
- break;
- case "DrawningCleaningCar":
- drawningTruck = new DrawningCleaningCar(random.nextInt(100, 300), random.nextDouble(100, 3000),
- GetColor(random), GetColor(random),
- random.nextBoolean(), random.nextBoolean(), random.nextBoolean());
- break;
- default: return;
- }
- if (_company._collection.Insert(drawningTruck, 0) != -1) {
- JOptionPane.showMessageDialog(null, "Объект добавлен");
- repaint();
- } else {
- JOptionPane.showMessageDialog(null, "Не удалось добавить объект");
- }
- }
- private Color GetColor(Random random) {
- Color color = new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256));
- Color colorChooser = JColorChooser.showDialog(this, "Выберите цвет", color);
- return colorChooser;
- }
private void RefreshListBoxItems()
{
listBoxCollection.removeAll();
diff --git a/ProjectCleaningCar/src/FormTruckConfig.form b/ProjectCleaningCar/src/FormTruckConfig.form
index b3bf989..19e4de3 100644
--- a/ProjectCleaningCar/src/FormTruckConfig.form
+++ b/ProjectCleaningCar/src/FormTruckConfig.form
@@ -8,7 +8,7 @@
-
+
@@ -22,7 +22,7 @@
-
+
@@ -33,19 +33,14 @@
-
-
-
-
-
-
+
-
+
@@ -58,7 +53,7 @@
-
+
@@ -66,9 +61,9 @@
-
+
-
+
@@ -76,7 +71,7 @@
-
+
@@ -84,9 +79,9 @@
-
+
-
+
@@ -94,7 +89,7 @@
-
+
@@ -102,15 +97,15 @@
-
+
-
+
-
+
@@ -119,7 +114,7 @@
-
+
@@ -235,6 +230,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ProjectCleaningCar/src/FormTruckConfig.java b/ProjectCleaningCar/src/FormTruckConfig.java
index 5c63735..7d52f04 100644
--- a/ProjectCleaningCar/src/FormTruckConfig.java
+++ b/ProjectCleaningCar/src/FormTruckConfig.java
@@ -1,7 +1,5 @@
import CollectionGenericObjects.AbstractCompany;
-import Drawnings.DrawningCleaningCar;
-import Drawnings.DrawningTruck;
-import Drawnings.IDrawningWheels;
+import Drawnings.*;
import Entities.EntityCleaningCar;
import javax.swing.*;
@@ -16,9 +14,6 @@ import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.util.ArrayList;
public class FormTruckConfig extends JFrame {
@@ -34,7 +29,7 @@ public class FormTruckConfig extends JFrame {
private JLabel labelWeight;
private JCheckBox checkBoxTank;
private JCheckBox checkBoxSweepingBrush;
- private JCheckBox CheckBoxFlashLight;
+ private JCheckBox checkBoxFlashLight;
private JPanel groupBoxColors;
private JPanel panelRed;
private JPanel panelGreen;
@@ -50,25 +45,34 @@ public class FormTruckConfig extends JFrame {
private JPanel panelObject;
private JLabel labelBodyColor;
private JLabel labelAdditionalColor;
+ private JSpinner spinnerCountWheels;
+ private JLabel labelCountWheels;
+ private JLabel labelTriangleWheels;
+ private JLabel labelCircleWheels;
+ private JLabel labelRhombWheels;
public FormTruckConfig() {
setTitle("Создание объекта");
add(panel);
setMinimumSize(new Dimension(900, 300));
- //setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
buttonCancel.addActionListener(e -> this.dispose());
Init();
}
protected void Init() {
- labelSimpleObject.setBorder(new LineBorder(Color.BLACK));
- labelModifiedObject.setBorder(new LineBorder(Color.BLACK));
- spinnerSpeed.setModel(new SpinnerNumberModel(0, 0, 1000, 1));
- spinnerWeight.setModel(new SpinnerNumberModel(0, 0, 1000, 1));
+ labelSimpleObject.setBorder(new LineBorder(Color.BLACK, 2));
+ labelModifiedObject.setBorder(new LineBorder(Color.BLACK, 2));
+ labelCircleWheels.setBorder(new LineBorder(Color.BLACK, 2));
+ labelRhombWheels.setBorder(new LineBorder(Color.BLACK, 2));
+ labelTriangleWheels.setBorder(new LineBorder(Color.BLACK, 2));
+ spinnerSpeed.setModel(new SpinnerNumberModel(100, 1, 1000, 1));
+ spinnerWeight.setModel(new SpinnerNumberModel(100, 1, 1000, 1));
+ spinnerCountWheels.setModel(new SpinnerNumberModel(1, 1, 3, 1));
labelBodyColor.setBorder(new LineBorder(Color.BLACK));
labelAdditionalColor.setBorder(new LineBorder(Color.BLACK));
+
MouseAdapter labelObjectsMouseDown = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
@@ -90,11 +94,40 @@ public class FormTruckConfig extends JFrame {
labelModifiedObject.addMouseListener(labelObjectsMouseDown);
labelModifiedObject.setTransferHandler(labelObjectsTransferHandler);
+ ArrayList IDrawningWheelsLabels = new ArrayList<>();
+ IDrawningWheelsLabels.add(labelTriangleWheels);
+ IDrawningWheelsLabels.add(labelCircleWheels);
+ IDrawningWheelsLabels.add(labelRhombWheels);
+ for (JLabel i : IDrawningWheelsLabels) {
+ i.addMouseListener(labelObjectsMouseDown);
+ i.setTransferHandler(new TransferHandler(){
+ @Override
+ public int getSourceActions(JComponent c) {return TransferHandler.COPY;}
+ @Override
+ protected Transferable createTransferable(JComponent c) {
+ IDrawningWheels wheels;
+ switch (i.getToolTipText()) {
+ case "Triangle":
+ wheels = new DrawningTriangleWheels();
+ break;
+ case "Circle":
+ wheels = new DrawningCircleWheels();
+ break;
+ case "Rhomb":
+ wheels = new DrawningRhombWheels();
+ break;
+ default: return null;
+ }
+ return new WheelsTransferable(wheels);
+ }
+ });
+ }
+
panelObject.setTransferHandler(new TransferHandler() {
@Override
public boolean canImport(TransferHandler.TransferSupport support) {
- return support.isDataFlavorSupported(DataFlavor.stringFlavor
- /* || support.isDataFlavorSupported(DecksTransferable.decksDataFlavor*/);
+ return support.isDataFlavorSupported(DataFlavor.stringFlavor)
+ || support.isDataFlavorSupported(WheelsTransferable.wheelsDataFlavor);
}
@Override
public boolean importData(TransferHandler.TransferSupport support) {
@@ -105,21 +138,28 @@ public class FormTruckConfig extends JFrame {
case "Простой":
_truck = new DrawningTruck((int) spinnerSpeed.getValue(), (int) spinnerWeight.getValue(),
Color.WHITE);
- System.out.println("a");
break;
case "Продвинутый":
_truck = new DrawningCleaningCar((int) spinnerSpeed.getValue(), (int) spinnerWeight.getValue(),
Color.WHITE, Color.BLACK,
- checkBoxTank.isSelected(), checkBoxSweepingBrush.isSelected(), CheckBoxFlashLight.isSelected());
+ checkBoxTank.isSelected(), checkBoxSweepingBrush.isSelected(), checkBoxFlashLight.isSelected());
break;
}
if (_truck != null) {
_truck.SetPictureSize(panelObject.getWidth(), panelObject.getHeight());
- _truck.SetPosition(20,20);
+ _truck.SetPosition(60,30);
+ _truck.drawningWheels.setCountWheels((int)spinnerCountWheels.getValue());
}
else return false;
}
catch (UnsupportedFlavorException | IOException e) {}
+ try {
+ IDrawningWheels wheels =
+ (IDrawningWheels) support.getTransferable().getTransferData(WheelsTransferable.wheelsDataFlavor);
+ _truck.drawningWheels = wheels;
+ _truck.drawningWheels.setCountWheels((int) spinnerCountWheels.getValue());
+
+ }catch (UnsupportedFlavorException | IOException e) {}
repaint();
return true;
}
@@ -198,30 +238,61 @@ public class FormTruckConfig extends JFrame {
return false;
}
});
-
+ //SetTruck
buttonAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (_company == null || _truck == null) {
return;
}
- DrawningTruck truck;
- if (_truck instanceof DrawningCleaningCar) {
- truck = new DrawningCleaningCar((EntityCleaningCar) _truck.EntityTruck, _truck.drawningWheels);
- } else {
- truck = new DrawningTruck(_truck.getEntityTruck(), _truck.drawningWheels);
- }
- if (_company._collection.Insert(truck, 0) != -1) {
- dispose();
+ if (_company._collection.Insert(_truck, 0) != -1) {
FormCleaningCarCollection.Show();
JOptionPane.showMessageDialog(null, "Объект добавлен");
- //_company = null;
} else {
JOptionPane.showMessageDialog(null, "Не удалось добавить объект");
}
+ dispose();
+ _company = null;
}
});
+ spinnerCountWheels.addChangeListener(e -> {
+ if (_truck == null) return;
+ _truck.drawningWheels.setCountWheels((int)spinnerCountWheels.getValue());
+ repaint();
+ });
+
+ checkBoxTank.addActionListener(e -> {
+ if (_truck == null) return;
+ if (_truck.EntityTruck instanceof EntityCleaningCar) {
+ ((EntityCleaningCar) _truck.EntityTruck).setTank(checkBoxTank.isSelected());
+ repaint();
+ }
+ });
+ checkBoxSweepingBrush.addActionListener(e -> {
+ if (_truck == null) return;
+ if (_truck.EntityTruck instanceof EntityCleaningCar) {
+ ((EntityCleaningCar) _truck.EntityTruck).setSweepingBrush(checkBoxSweepingBrush.isSelected());
+ repaint();
+ }
+ });
+ checkBoxFlashLight.addActionListener(e -> {
+ if (_truck == null) return;
+ if (_truck.EntityTruck instanceof EntityCleaningCar) {
+ ((EntityCleaningCar) _truck.EntityTruck).setFlashLight(checkBoxFlashLight.isSelected());
+ repaint();
+ }
+ });
+
+
+ spinnerWeight.addChangeListener(e -> {
+ if (_truck == null) return;
+ _truck.EntityTruck.setSpeed((int)spinnerSpeed.getValue());
+ });
+ spinnerWeight.addChangeListener(e -> {
+ if (_truck == null) return;
+ _truck.EntityTruck.setWeight((int)spinnerWeight.getValue());
+ });
}
public void SetCompany(AbstractCompany company) {
_company = company;
@@ -259,4 +330,28 @@ public class FormTruckConfig extends JFrame {
}
}
}
+
+ private class WheelsTransferable implements Transferable {
+ private IDrawningWheels wheels;
+ private static final DataFlavor wheelsDataFlavor = new DataFlavor(IDrawningWheels.class, "Decks");
+ public WheelsTransferable(IDrawningWheels wheels) {
+ this.wheels = wheels;
+ }
+ @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);
+ }
+ }
+ }
}