From c8998395cc4401dcf44f2295412e6a5b1992cf74 Mon Sep 17 00:00:00 2001 From: rozenkranzz Date: Sat, 15 Feb 2025 16:03:25 +0400 Subject: [PATCH] transitioned --- .../.idea/material_theme_project_new.xml | 10 + .../Drawings/ColorTransferable.java | 31 ++ .../projectliner/Drawings/DrawingLiner.java | 3 + .../projectliner/Drawings/ILinerDelegate.java | 7 + .../Drawings/LabelTransferHandler.java | 18 + .../Entities/BaseLinerEntity.java | 4 + .../projectliner/Entities/LinerEntity.java | 4 + .../src/projectliner/FormLinerConfig.java | 448 ++++++++++++++++++ .../src/projectliner/FormShipCollection.java | 49 +- .../GenericLinerModelsCollection.java | 6 +- 10 files changed, 535 insertions(+), 45 deletions(-) create mode 100644 Liner_Advanced/.idea/material_theme_project_new.xml create mode 100644 Liner_Advanced/src/projectliner/Drawings/ColorTransferable.java create mode 100644 Liner_Advanced/src/projectliner/Drawings/ILinerDelegate.java create mode 100644 Liner_Advanced/src/projectliner/Drawings/LabelTransferHandler.java create mode 100644 Liner_Advanced/src/projectliner/FormLinerConfig.java diff --git a/Liner_Advanced/.idea/material_theme_project_new.xml b/Liner_Advanced/.idea/material_theme_project_new.xml new file mode 100644 index 0000000..1ab20e0 --- /dev/null +++ b/Liner_Advanced/.idea/material_theme_project_new.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/Liner_Advanced/src/projectliner/Drawings/ColorTransferable.java b/Liner_Advanced/src/projectliner/Drawings/ColorTransferable.java new file mode 100644 index 0000000..7851544 --- /dev/null +++ b/Liner_Advanced/src/projectliner/Drawings/ColorTransferable.java @@ -0,0 +1,31 @@ +package projectliner.Drawings; + +import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; + +public class ColorTransferable implements Transferable { + public static DataFlavor colorFlavor = new DataFlavor(Color.class, + "A Color Object"); + private Color color; + + public ColorTransferable(Color color) { + this.color = color; + } + + public DataFlavor[] getTransferDataFlavors() { + return new DataFlavor[]{colorFlavor}; + } + + public boolean isDataFlavorSupported(DataFlavor flavor) { + return flavor.equals(colorFlavor); + } + + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { + if (!isDataFlavorSupported(flavor)) { + throw new UnsupportedFlavorException(flavor); + } + return color; + } +} diff --git a/Liner_Advanced/src/projectliner/Drawings/DrawingLiner.java b/Liner_Advanced/src/projectliner/Drawings/DrawingLiner.java index 1f3f1a4..83d5869 100644 --- a/Liner_Advanced/src/projectliner/Drawings/DrawingLiner.java +++ b/Liner_Advanced/src/projectliner/Drawings/DrawingLiner.java @@ -61,6 +61,9 @@ public class DrawingLiner extends DrawingBaseLiner { this.startPosY = this.startPosY - 20; Color deckColor = linerEntity.getSecondaryColor(); Color borderColor = Color.BLACK; + if (!linerEntity.hasExtraDeck()) { + this.deck.setNumericalValue(1); + } this.deck.drawAdditionalElement(x, y, borderColor, deckColor, g); if (linerEntity.hasPool()) { g2d.setColor(Color.CYAN); diff --git a/Liner_Advanced/src/projectliner/Drawings/ILinerDelegate.java b/Liner_Advanced/src/projectliner/Drawings/ILinerDelegate.java new file mode 100644 index 0000000..4e7f520 --- /dev/null +++ b/Liner_Advanced/src/projectliner/Drawings/ILinerDelegate.java @@ -0,0 +1,7 @@ +package projectliner.Drawings; + +import projectliner.Drawings.DrawingBaseLiner; + +public interface ILinerDelegate { + void setLiner(DrawingBaseLiner liner); +} diff --git a/Liner_Advanced/src/projectliner/Drawings/LabelTransferHandler.java b/Liner_Advanced/src/projectliner/Drawings/LabelTransferHandler.java new file mode 100644 index 0000000..62f4486 --- /dev/null +++ b/Liner_Advanced/src/projectliner/Drawings/LabelTransferHandler.java @@ -0,0 +1,18 @@ +package projectliner.Drawings; + +import javax.swing.*; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; + +public class LabelTransferHandler extends TransferHandler { + @Override + protected Transferable createTransferable(JComponent c) { + JLabel label = (JLabel) c; + return new StringSelection(label.getText()); // Передаем текст метки + } + + @Override + public int getSourceActions(JComponent c) { + return COPY; + } +} diff --git a/Liner_Advanced/src/projectliner/Entities/BaseLinerEntity.java b/Liner_Advanced/src/projectliner/Entities/BaseLinerEntity.java index 6316eed..bdd1663 100644 --- a/Liner_Advanced/src/projectliner/Entities/BaseLinerEntity.java +++ b/Liner_Advanced/src/projectliner/Entities/BaseLinerEntity.java @@ -28,5 +28,9 @@ public class BaseLinerEntity { public double getStep() { return (double)this.speed / (this.weight / (double)100.0F); } + + public void setPrimaryColor(Color primaryColor) { + this.primaryColor = primaryColor; + } } diff --git a/Liner_Advanced/src/projectliner/Entities/LinerEntity.java b/Liner_Advanced/src/projectliner/Entities/LinerEntity.java index d9d3748..e8a1bc7 100644 --- a/Liner_Advanced/src/projectliner/Entities/LinerEntity.java +++ b/Liner_Advanced/src/projectliner/Entities/LinerEntity.java @@ -50,4 +50,8 @@ public class LinerEntity extends BaseLinerEntity { public boolean hasPool() { return this.hasPool; } + + public void setSecondaryColor(Color secondaryColor) { + this.secondaryColor = secondaryColor; + } } diff --git a/Liner_Advanced/src/projectliner/FormLinerConfig.java b/Liner_Advanced/src/projectliner/FormLinerConfig.java new file mode 100644 index 0000000..9e26db7 --- /dev/null +++ b/Liner_Advanced/src/projectliner/FormLinerConfig.java @@ -0,0 +1,448 @@ +package projectliner; + +import projectliner.Drawings.DrawingBaseLiner; +import projectliner.Drawings.ColorTransferable; +import projectliner.Drawings.DrawingLiner; +import projectliner.Drawings.LabelTransferHandler; +import projectliner.Entities.LinerEntity; +import projectliner.Entities.LinerEntityType; +import projectliner.Drawings.ILinerDelegate; + +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import javax.swing.border.LineBorder; +import java.awt.*; +import java.awt.event.*; +import java.awt.dnd.*; +import java.awt.datatransfer.*; +import java.awt.image.BufferedImage; + +public class FormLinerConfig extends JFrame { + private DrawingBaseLiner liner; + private ILinerDelegate linerDelegate; + private ColorTransferable colorTransferable; + + private JButton buttonCancel; + private JButton buttonAdd; + private JPanel panelRed, panelGreen, panelBlue, panelYellow, + panelWhite, panelGray, panelBlack, panelPurple; + private JLabel labelPrimaryColor, labelSecondaryColor; + private JComboBox comboBoxLinerType; + private JCheckBox checkBoxExtraDeck, checkBoxPool; + private JSpinner numericUpDownSpeed, numericUpDownWeight, + numericUpDownCapacity, numericUpDownMaxPassengers, + numericUpDownDeckNum; + private JLabel pictureBoxLiner; + + public FormLinerConfig() { + initComponents(); + buttonCancel.addActionListener(e -> dispose()); + addMouseListenersToPanels(); + } + + public void setLinerDelegate(ILinerDelegate linerDelegate) { + this.linerDelegate = linerDelegate; + } + + private void drawObject() { + BufferedImage bmp = new BufferedImage(pictureBoxLiner.getWidth(), + pictureBoxLiner.getHeight(), BufferedImage.TYPE_INT_ARGB); + Graphics2D gr = bmp.createGraphics(); + if (liner != null) { + if (liner instanceof DrawingLiner drawingLiner) { + drawingLiner.setPictureSize(pictureBoxLiner.getWidth(), pictureBoxLiner.getHeight()); + drawingLiner.setPosition(15, 15); + drawingLiner.drawTransport(gr); + } else { + liner.setPictureSize(pictureBoxLiner.getWidth(), pictureBoxLiner.getHeight()); + liner.setPosition(15, 15); + liner.drawTransport(gr); + } + } + pictureBoxLiner.setIcon(new ImageIcon(bmp)); + pictureBoxLiner.revalidate(); + pictureBoxLiner.repaint(); + } + + private void addMouseListenersToPanels() { + panelRed.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelRed); + } + }); + panelGreen.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelGreen); + } + }); + panelBlue.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelBlue); + } + }); + panelYellow.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelYellow); + } + }); + panelWhite.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelWhite); + } + }); + panelGray.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelGray); + } + }); + panelBlack.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelBlack); + } + }); + panelPurple.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + panelMouseDown(panelPurple); + } + }); + } + + private void labelObjectMouseDown(MouseEvent e) { + JLabel label = (JLabel) e.getSource(); + TransferHandler handler = label.getTransferHandler(); + if (handler != null) { + handler.exportAsDrag(label, e, TransferHandler.COPY); + } + } + + private void panelObjectDragEnter(DropTargetDragEvent e) { + if (e.isDataFlavorSupported(DataFlavor.stringFlavor)) { + e.acceptDrag(DnDConstants.ACTION_COPY); + } else { + e.rejectDrag(); + } + } + + private void panelObjectDragDrop(DropTargetDropEvent e) { + try { + e.acceptDrop(DnDConstants.ACTION_COPY); + String data = (String) e.getTransferable().getTransferData(DataFlavor.stringFlavor); + switch (data) { + case "Basic Object": + liner = new DrawingBaseLiner((int) numericUpDownSpeed.getValue(), + ((Integer) numericUpDownWeight.getValue()).doubleValue() , Color.WHITE); + break; + case "Advanced Object": + liner = new DrawingLiner((int) numericUpDownSpeed.getValue(), ((Integer) numericUpDownWeight.getValue()).doubleValue(), + Color.WHITE, Color.BLACK, LinerEntityType.values()[comboBoxLinerType.getSelectedIndex()], + (int) numericUpDownCapacity.getValue(), (int) numericUpDownMaxPassengers.getValue(), + checkBoxExtraDeck.isSelected(), checkBoxPool.isSelected(), (int) numericUpDownDeckNum.getValue(), "Triangular Deck"); + break; + } + drawObject(); + e.dropComplete(true); + } catch (Exception ex) { + ex.printStackTrace(); + e.dropComplete(false); + } + } + + private void panelMouseDown(JPanel panel) { + Color color = panel.getBackground(); + Transferable transferable = new ColorTransferable(color); + DragSource ds = new DragSource(); + ds.createDefaultDragGestureRecognizer(panel, DnDConstants.ACTION_COPY, new DragGestureListener() { + public void dragGestureRecognized(DragGestureEvent dge) { + ds.startDrag(dge, DragSource.DefaultCopyDrop, transferable, new DragSourceAdapter() {}); + } + }); + } + + private void labelColorDragEnter(DropTargetDragEvent e) { + if (e.isDataFlavorSupported(ColorTransferable.colorFlavor)) { + e.acceptDrag(DnDConstants.ACTION_COPY); + } else { + e.rejectDrag(); + } + } + + private void labelColorDragDrop(DropTargetDropEvent e) { + try { + e.acceptDrop(DnDConstants.ACTION_COPY); + Color color = (Color) e.getTransferable().getTransferData(ColorTransferable.colorFlavor); + if (e.getDropTargetContext().getComponent() == labelPrimaryColor) { + liner.baseLiner.setPrimaryColor(color); + } else if (e.getDropTargetContext().getComponent() == labelSecondaryColor) { + if (liner instanceof DrawingLiner drawingLiner) { + if (drawingLiner.getBaseLiner() instanceof LinerEntity linerEntity) { + linerEntity.setSecondaryColor(color); + } + } + } + drawObject(); + e.dropComplete(true); + } catch (Exception ex) { + ex.printStackTrace(); + e.dropComplete(false); + } + } + + private void initComponents() { + setTitle("FormLinerConfig"); + setSize(800, 300); + setLayout(new BorderLayout()); + + numericUpDownSpeed = new JSpinner(new SpinnerNumberModel(100, + 0, 1000, 1)); + numericUpDownSpeed.setMaximumSize(new Dimension(100, 20)); + numericUpDownWeight = new JSpinner(new SpinnerNumberModel(100, + 0, 1000, 1)); + numericUpDownWeight.setMaximumSize(new Dimension(100, 20)); + numericUpDownCapacity = new JSpinner(new SpinnerNumberModel(100, + 0, 1000, 1)); + numericUpDownCapacity.setMaximumSize(new Dimension(100, 20)); + numericUpDownMaxPassengers = new JSpinner(new SpinnerNumberModel(100, + 0, 1000, 1)); + numericUpDownMaxPassengers.setMaximumSize(new Dimension(100, 20)); + numericUpDownDeckNum = new JSpinner(new SpinnerNumberModel(1, + 1, 3, 1)); + numericUpDownDeckNum.setMaximumSize(new Dimension(100, 20)); + + comboBoxLinerType = new JComboBox<>(new String[]{"Passenger", "Cargo", "Military", "Mixed"}); + comboBoxLinerType.setMaximumSize(new Dimension(100, 20)); + checkBoxExtraDeck = new JCheckBox("Extra Deck feature"); + checkBoxPool = new JCheckBox("Pool feature"); + + JPanel panelParameters = new JPanel(); + panelParameters.setLayout(new BoxLayout(panelParameters, BoxLayout.Y_AXIS)); + panelParameters.setMaximumSize(new Dimension(500, 260)); + panelParameters.setBorder(new EmptyBorder(10, 10, 10, 10)); + JLabel labelParameters = new JLabel("Parameters"); + labelParameters.setAlignmentX(Component.CENTER_ALIGNMENT); + + JPanel panelParametersLabels = new JPanel(); + panelParametersLabels.setLayout(new BoxLayout(panelParametersLabels, BoxLayout.Y_AXIS)); + panelParametersLabels.setMaximumSize(new Dimension(200, 200)); + panelParametersLabels.add(new JLabel("Type of Liner")); + panelParametersLabels.add(Box.createVerticalStrut(10)); + panelParametersLabels.add(new JLabel("Speed")); + panelParametersLabels.add(Box.createVerticalStrut(10)); + panelParametersLabels.add(new JLabel("Weight")); + panelParametersLabels.add(Box.createVerticalStrut(10)); + panelParametersLabels.add(new JLabel("Capacity")); + panelParametersLabels.add(Box.createVerticalStrut(10)); + panelParametersLabels.add(new JLabel("Max Passengers")); + panelParametersLabels.add(Box.createVerticalStrut(10)); + panelParametersLabels.add(new JLabel("Deck Number")); + + JPanel panelParametersValues = new JPanel(); + panelParametersValues.setLayout(new BoxLayout(panelParametersValues, BoxLayout.Y_AXIS)); + panelParametersValues.setMaximumSize(new Dimension(200, 200)); + panelParametersValues.add(comboBoxLinerType); + panelParametersValues.add(Box.createVerticalStrut(5)); + panelParametersValues.add(numericUpDownSpeed); + panelParametersValues.add(Box.createVerticalStrut(5)); + panelParametersValues.add(numericUpDownWeight); + panelParametersValues.add(Box.createVerticalStrut(5)); + panelParametersValues.add(numericUpDownCapacity); + panelParametersValues.add(Box.createVerticalStrut(5)); + panelParametersValues.add(numericUpDownMaxPassengers); + panelParametersValues.add(Box.createVerticalStrut(5)); + panelParametersValues.add(numericUpDownDeckNum); + + JPanel panelCheckBoxes = new JPanel(); + panelCheckBoxes.setLayout(new BoxLayout(panelCheckBoxes, BoxLayout.X_AXIS)); + panelCheckBoxes.setMaximumSize(new Dimension(300, 40)); + panelCheckBoxes.add(checkBoxExtraDeck); + panelCheckBoxes.add(checkBoxPool); + + JPanel panelAllParameters = new JPanel(); + panelAllParameters.setLayout(new BoxLayout(panelAllParameters, BoxLayout.X_AXIS)); + panelAllParameters.add(panelParametersLabels); + panelAllParameters.add(Box.createHorizontalStrut(10)); + panelAllParameters.add(panelParametersValues); + + panelParameters.add(labelParameters); + panelParameters.add(Box.createVerticalStrut(10)); + panelParameters.add(panelAllParameters); + panelParameters.add(Box.createVerticalStrut(10)); + panelParameters.add(panelCheckBoxes); + + add(panelParameters, BorderLayout.WEST); + + JPanel middlePanel = new JPanel(); + middlePanel.setLayout(new BoxLayout(middlePanel, BoxLayout.Y_AXIS)); + middlePanel.setMaximumSize(new Dimension(200, 200)); + middlePanel.setBorder(new EmptyBorder(10, 10, 10, 10)); + JLabel labelColors = new JLabel("Colors"); + labelColors.setAlignmentX(Component.CENTER_ALIGNMENT); + + JPanel panelColorsUp = new JPanel(); + panelColorsUp.setLayout(new BoxLayout(panelColorsUp, BoxLayout.X_AXIS)); + JPanel panelColorsDown = new JPanel(); + panelColorsDown.setLayout(new BoxLayout(panelColorsDown, BoxLayout.X_AXIS)); + + panelRed = createColorPanel(Color.RED); + panelGreen = createColorPanel(Color.GREEN); + panelBlue = createColorPanel(Color.BLUE); + panelYellow = createColorPanel(Color.YELLOW); + panelWhite = createColorPanel(Color.WHITE); + panelGray = createColorPanel(Color.GRAY); + panelBlack = createColorPanel(Color.BLACK); + panelPurple = createColorPanel(Color.MAGENTA); + + panelColorsUp.add(panelRed); + panelColorsUp.add(Box.createHorizontalStrut(10)); + panelColorsUp.add(panelGreen); + panelColorsUp.add(Box.createHorizontalStrut(10)); + panelColorsUp.add(panelBlue); + panelColorsUp.add(Box.createHorizontalStrut(10)); + panelColorsUp.add(panelYellow); + panelColorsDown.add(panelWhite); + panelColorsDown.add(Box.createHorizontalStrut(10)); + panelColorsDown.add(panelGray); + panelColorsDown.add(Box.createHorizontalStrut(10)); + panelColorsDown.add(panelBlack); + panelColorsDown.add(Box.createHorizontalStrut(10)); + panelColorsDown.add(panelPurple); + + JLabel labelBasicObject = new JLabel("Basic Object"); + labelBasicObject.setHorizontalAlignment(SwingConstants.CENTER); + labelBasicObject.setMaximumSize(new Dimension(200, 40)); + labelBasicObject.setBorder(new LineBorder(Color.BLACK)); + labelBasicObject.setTransferHandler(new LabelTransferHandler()); + labelBasicObject.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + labelObjectMouseDown(e); + } + }); + JLabel labelAdvancedObject = new JLabel("Advanced Object"); + labelAdvancedObject.setHorizontalAlignment(SwingConstants.CENTER); + labelAdvancedObject.setMaximumSize(new Dimension(200, 40)); + labelAdvancedObject.setBorder(new LineBorder(Color.BLACK)); + labelAdvancedObject.setTransferHandler(new LabelTransferHandler()); + labelAdvancedObject.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + labelObjectMouseDown(e); + } + }); + + JPanel objectEntities = new JPanel(); + objectEntities.setLayout(new BoxLayout(objectEntities, BoxLayout.X_AXIS)); + objectEntities.add(labelBasicObject); + objectEntities.add(Box.createHorizontalStrut(10)); + objectEntities.add(labelAdvancedObject); + + middlePanel.add(labelColors); + middlePanel.add(Box.createVerticalStrut(10)); + middlePanel.add(panelColorsUp); + middlePanel.add(Box.createVerticalStrut(10)); + middlePanel.add(panelColorsDown); + middlePanel.add(Box.createVerticalStrut(10)); + middlePanel.add(objectEntities); + + add(middlePanel, BorderLayout.CENTER); + + JPanel panelObject = new JPanel(); + panelObject.setLayout(new BoxLayout(panelObject, BoxLayout.Y_AXIS)); + panelObject.setMaximumSize(new Dimension(200, 300)); + panelObject.setBorder(new EmptyBorder(10, 10, 10, 10)); + + labelPrimaryColor = new JLabel("Primary Color"); + labelPrimaryColor.setMaximumSize(new Dimension(200, 40)); + labelPrimaryColor.setHorizontalAlignment(SwingConstants.CENTER); + labelPrimaryColor.setBorder(new LineBorder(Color.BLACK)); + labelPrimaryColor.setTransferHandler(new TransferHandler("background")); + + labelSecondaryColor = new JLabel("Secondary Color"); + labelSecondaryColor.setMaximumSize(new Dimension(200, 40)); + labelSecondaryColor.setHorizontalAlignment(SwingConstants.CENTER); + labelSecondaryColor.setBorder(new LineBorder(Color.BLACK)); + labelSecondaryColor.setTransferHandler(new TransferHandler("background")); + + JPanel colorLabels = new JPanel(); + colorLabels.setLayout(new BoxLayout(colorLabels, BoxLayout.X_AXIS)); + colorLabels.add(labelPrimaryColor); + colorLabels.add(Box.createHorizontalStrut(10)); + colorLabels.add(labelSecondaryColor); + + pictureBoxLiner = new JLabel(); + pictureBoxLiner.setMaximumSize(new Dimension(200, 150)); + pictureBoxLiner.setPreferredSize(new Dimension(200, 150)); + pictureBoxLiner.setMinimumSize(new Dimension(200, 150)); + pictureBoxLiner.setAlignmentX(Component.CENTER_ALIGNMENT); + + JPanel panelButtons = new JPanel(); + panelButtons.setLayout(new BoxLayout(panelButtons, BoxLayout.X_AXIS)); + buttonAdd = new JButton("Add"); + buttonAdd.addActionListener(e -> buttonAddClick()); + buttonCancel = new JButton("Cancel"); + panelButtons.add(buttonAdd); + panelButtons.add(Box.createHorizontalStrut(10)); + panelButtons.add(buttonCancel); + + panelObject.add(colorLabels); + panelObject.add(Box.createVerticalStrut(10)); + panelObject.add(pictureBoxLiner); + panelObject.add(Box.createVerticalStrut(10)); + panelObject.add(panelButtons); + + new DropTarget(panelObject, new DropTargetAdapter() { + public void dragEnter(DropTargetDragEvent e) { + panelObjectDragEnter(e); + } + + public void dragOver(DropTargetDragEvent e) { + panelObjectDragEnter(e); + } + + public void drop(DropTargetDropEvent e) { + panelObjectDragDrop(e); + } + }); + + new DropTarget(labelPrimaryColor, new DropTargetAdapter() { + public void dragEnter(DropTargetDragEvent e) { + labelColorDragEnter(e); + } + + public void dragOver(DropTargetDragEvent e) { + labelColorDragEnter(e); + } + + public void drop(DropTargetDropEvent e) { + labelColorDragDrop(e); + } + }); + + new DropTarget(labelSecondaryColor, new DropTargetAdapter() { + public void dragEnter(DropTargetDragEvent e) { + labelColorDragEnter(e); + } + + public void dragOver(DropTargetDragEvent e) { + labelColorDragEnter(e); + } + + public void drop(DropTargetDropEvent e) { + labelColorDragDrop(e); + } + }); + + add(panelObject, BorderLayout.EAST); + } + + private JPanel createColorPanel(Color color) { + JPanel panel = new JPanel(); + panel.setBackground(color); + panel.setMaximumSize(new Dimension(50, 50)); + return panel; + } + + private void buttonAddClick() { + if (liner != null && linerDelegate != null) { + linerDelegate.setLiner(liner); + dispose(); + } + } +} \ No newline at end of file diff --git a/Liner_Advanced/src/projectliner/FormShipCollection.java b/Liner_Advanced/src/projectliner/FormShipCollection.java index 42aea67..996d0a4 100644 --- a/Liner_Advanced/src/projectliner/FormShipCollection.java +++ b/Liner_Advanced/src/projectliner/FormShipCollection.java @@ -18,7 +18,6 @@ public class FormShipCollection extends JFrame { private AbstractCompany company = null; private JComboBox comboBoxCompanySelector; private JButton buttonAddLiner; - private JButton buttonAddShip; private JButton buttonRemoveShip; private JButton buttonSubmitForTesting; private JButton buttonRefresh; @@ -62,16 +61,7 @@ public class FormShipCollection extends JFrame { buttonAddLiner.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - createObject("DrawingBaseLiner"); - } - }); - - buttonAddShip = new JButton("Add Ship"); - buttonAddShip.setMaximumSize(new Dimension(Integer.MAX_VALUE, 36)); - buttonAddShip.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - createObject("DrawingLiner"); + addLiner(); } }); @@ -208,7 +198,6 @@ public class FormShipCollection extends JFrame { pictureBox.setBorder(BorderFactory.createLineBorder(Color.BLACK)); buttonAddLiner.setAlignmentX(Component.CENTER_ALIGNMENT); - buttonAddShip.setAlignmentX(Component.CENTER_ALIGNMENT); buttonCreateRandomShip.setAlignmentX(Component.CENTER_ALIGNMENT); labelPosition.setAlignmentX(Component.CENTER_ALIGNMENT); buttonRemoveShip.setAlignmentX(Component.CENTER_ALIGNMENT); @@ -223,8 +212,6 @@ public class FormShipCollection extends JFrame { controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.Y_AXIS)); controlPanel.add(buttonAddLiner); controlPanel.add(Box.createVerticalStrut(10)); - controlPanel.add(buttonAddShip); - controlPanel.add(Box.createVerticalStrut(10)); controlPanel.add(buttonCreateRandomShip); controlPanel.add(Box.createVerticalStrut(10)); controlPanel.add(buttonRemoveShip); @@ -368,27 +355,17 @@ public class FormShipCollection extends JFrame { listBoxCollections.setModel(listModel); } - private void createObject(String type) { + private void addLiner() { + FormLinerConfig form = new FormLinerConfig(); + form.setLinerDelegate(this::createObject); + form.setVisible(true); + } + + private void createObject(DrawingBaseLiner liner) { if (company == null) { return; } - Random random = new Random(); - DrawingBaseLiner drawingLiner; - switch (type) { - case "DrawingBaseLiner": - drawingLiner = new DrawingBaseLiner(random.nextInt(200) + 100, - random.nextInt(2000) + 1000, getColor(random)); - break; - case "DrawingLiner": - drawingLiner = new DrawingLiner(random.nextInt(200) + 100, random.nextInt(2000) + 1000, - getColor(random), getColor(random), - LinerEntityType.CARGO, random.nextInt(9000) + 1000, random.nextInt(90) + 10, - random.nextBoolean(), random.nextBoolean(), 3, "Square Deck"); - break; - default: - return; - } - if (AbstractCompany.add(company, drawingLiner)) { + if (AbstractCompany.add(company, liner)) { JOptionPane.showMessageDialog(this, "Object was added"); pictureBox.setIcon(new ImageIcon(company.show())); } else { @@ -396,14 +373,6 @@ public class FormShipCollection extends JFrame { } } - private Color getColor(Random random) { - Color color = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); - JColorChooser colorChooser = new JColorChooser(color); - JDialog dialog = JColorChooser.createDialog(this, "Choose Color", true, colorChooser, null, null); - dialog.setVisible(true); - return colorChooser.getColor(); - } - private void removeShip() { if (textFieldPosition.getText().isEmpty() || company == null) { return; diff --git a/Liner_Advanced/src/projectliner/GenericObjectsCollection/GenericLinerModelsCollection.java b/Liner_Advanced/src/projectliner/GenericObjectsCollection/GenericLinerModelsCollection.java index c52ae8c..d72a118 100644 --- a/Liner_Advanced/src/projectliner/GenericObjectsCollection/GenericLinerModelsCollection.java +++ b/Liner_Advanced/src/projectliner/GenericObjectsCollection/GenericLinerModelsCollection.java @@ -75,8 +75,4 @@ public class GenericLinerModelsCollection