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); + } + } + } }