diff --git a/.idea/PIbd-23-Salin-O.A.-Monorail-Hard.iml b/.idea/PIbd-23-Salin-O.A.-Monorail-Hard.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/.idea/PIbd-23-Salin-O.A.-Monorail-Hard.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 86f4913..07115cd 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,6 @@ + - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..060cff4 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/MonorailHard/DrawningObjects/DrawningLocomotive.java b/src/MonorailHard/DrawningObjects/DrawningLocomotive.java index e09e382..2f6e916 100644 --- a/src/MonorailHard/DrawningObjects/DrawningLocomotive.java +++ b/src/MonorailHard/DrawningObjects/DrawningLocomotive.java @@ -6,6 +6,7 @@ import javax.swing.*; import java.awt.*; public class DrawningLocomotive extends DrawningMonorail{ + public DrawningLocomotive(int speed, double weight, Color bodyColor, Color wheelColor, Color tireColor, int wheelNumb, int width, int height, boolean secondCabine, boolean magniteRail, Color additionalColor){ super(speed, weight, bodyColor, wheelColor, tireColor, width, height); @@ -15,6 +16,10 @@ public class DrawningLocomotive extends DrawningMonorail{ } } + public void ChangeAddColor(Color col){ + ((EntityLocomotive)EntityMonorail).AdditionalColor = col; + } + @Override public void DrawMonorail(Graphics2D g2d){ if (!(EntityMonorail instanceof EntityLocomotive)) diff --git a/src/MonorailHard/DrawningObjects/DrawningMonorail.java b/src/MonorailHard/DrawningObjects/DrawningMonorail.java index 1d3b92a..87deca8 100644 --- a/src/MonorailHard/DrawningObjects/DrawningMonorail.java +++ b/src/MonorailHard/DrawningObjects/DrawningMonorail.java @@ -17,8 +17,9 @@ public class DrawningMonorail { public int _pictureHeight; protected int _startPosX; protected int _startPosY; - protected int _monorailWidth = 133; - protected int _monorailHeight = 50; + public int _monorailWidth = 133; + public int _wheelNumb; + public int _monorailHeight = 50; protected IDraw DrawningWheels; protected int wheelSz; @@ -48,6 +49,17 @@ public class DrawningMonorail { DrawningWheels.ChangeWheelsNumb(rand.nextInt(1, 6)); } + public void ChangeIDraw(IDraw obj){ + DrawningWheels = obj; + obj.ChangeWheelsNumb(_wheelNumb); + obj.ChangeWheelsNumb(_wheelNumb); + obj.ChangeX(_startPosX); + obj.ChangeY(_startPosY); + } + public void ChangeWheelsNumb(int numb){ + _wheelNumb = numb; + DrawningWheels.ChangeWheelsNumb(numb); + } protected DrawningMonorail(int speed, double weight, Color bodyColor, Color wheelColor, Color tireColor, int width, int height, int monorailWidth, int monorailHeight){ if(width <= _monorailWidth || height <= _monorailHeight) @@ -144,6 +156,10 @@ public class DrawningMonorail { DrawningWheels.ChangeY(_startPosY); } + public void ChangeColor(Color col){ + EntityMonorail.BodyColor = col; + } + public void DrawMonorail(Graphics2D g2d){ if (EntityMonorail == null) return; diff --git a/src/MonorailHard/DrawningObjects/DrawningWheelsCart.java b/src/MonorailHard/DrawningObjects/DrawningWheelsCart.java index fce5f86..fca6725 100644 --- a/src/MonorailHard/DrawningObjects/DrawningWheelsCart.java +++ b/src/MonorailHard/DrawningObjects/DrawningWheelsCart.java @@ -61,7 +61,7 @@ public class DrawningWheelsCart implements IDraw{ CurY + Height / 10 * 7}; g2d.setColor(Color.BLACK); g2d.fillPolygon(xPointsArrFrontCart, yPointsArrFrontCart, xPointsArrFrontCart.length); - g2d.setColor(TireColor); + g2d.setColor(Color.WHITE); g2d.drawLine(CurX + Width / 10 * 2, CurY + Height / 10 * 7,CurX + Width / 10 * 4, CurY + Height / 10 * 9); g2d.drawLine(CurX + Width / 10 * 4, CurY + Height / 10 * 7,CurX + Width / 10 * 2, CurY + Height / 10 * 9); @@ -72,7 +72,7 @@ public class DrawningWheelsCart implements IDraw{ CurY + Height / 10 * 9, CurY + Height / 10 * 9}; g2d.setColor(Color.BLACK); g2d.fillPolygon(xPointsArrBackCart, yPointsArrBackCart, xPointsArrBackCart.length); - g2d.setColor(TireColor); + g2d.setColor(Color.WHITE); g2d.drawLine(CurX + Width / 10 * 6, CurY + Height / 10 * 7,CurX + Width / 10 * 9, CurY + Height / 10 * 9); g2d.drawLine(CurX + Width / 10 * 9, CurY + Height / 10 * 7,CurX + Width / 10 * 6, CurY + Height / 10 * 9); diff --git a/src/MonorailHard/Entities/EntityLocomotive.java b/src/MonorailHard/Entities/EntityLocomotive.java index 6d78f78..fe0b0d6 100644 --- a/src/MonorailHard/Entities/EntityLocomotive.java +++ b/src/MonorailHard/Entities/EntityLocomotive.java @@ -3,7 +3,7 @@ package MonorailHard.Entities; import java.awt.*; public class EntityLocomotive extends EntityMonorail{ - private Color AdditionalColor; + public Color AdditionalColor; private boolean SecondCabine; private boolean MagniteRail; public Color AdditionalColor(){return AdditionalColor;}; diff --git a/src/MonorailHard/Entities/EntityMonorail.java b/src/MonorailHard/Entities/EntityMonorail.java index fdea9f4..f5761d6 100644 --- a/src/MonorailHard/Entities/EntityMonorail.java +++ b/src/MonorailHard/Entities/EntityMonorail.java @@ -4,7 +4,7 @@ import java.awt.*; public class EntityMonorail { private int Speed; private double Weight, Step; - private Color BodyColor, WheelColor, TireColor; + public Color BodyColor, WheelColor, TireColor; public int Speed(){ return Speed; diff --git a/src/MonorailHard/FormMonorailCollection.java b/src/MonorailHard/FormMonorailCollection.java index 0337b2c..9a12af7 100644 --- a/src/MonorailHard/FormMonorailCollection.java +++ b/src/MonorailHard/FormMonorailCollection.java @@ -122,22 +122,29 @@ public class FormMonorailCollection { return; } MonorailGenericCollection _monorails = _storage.Get(listBoxStorages.getSelectedValue()); - FormMonorail form = new FormMonorail(); - form.buttonSelect.addActionListener(new ActionListener() { + FormMonorailConfig form = new FormMonorailConfig(); + form.addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - if (_monorails.Insert(form.SelectedMonorail())) + if (_monorails.Insert(form._monorail)) { JOptionPane.showMessageDialog(null, "Объект добавлен", "Информация", JOptionPane.INFORMATION_MESSAGE); - form.SelectedMonorail()._pictureWidth = pictureBoxWidth; - form.SelectedMonorail()._pictureHeight = pictureBoxHeight; + form._monorail._pictureWidth = pictureBoxWidth; + form._monorail._pictureHeight = pictureBoxHeight; Draw(); } else { JOptionPane.showMessageDialog(null, "Не удалось добавить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); } - form.MonorailFrame.dispose(); + form.frameConfig.dispose(); + Draw(); + } + }); + form.cancelButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + form.frameConfig.dispose(); Draw(); } }); diff --git a/src/MonorailHard/FormMonorailConfig.java b/src/MonorailHard/FormMonorailConfig.java new file mode 100644 index 0000000..8cde07e --- /dev/null +++ b/src/MonorailHard/FormMonorailConfig.java @@ -0,0 +1,472 @@ +package MonorailHard; + +import MonorailHard.DrawningObjects.*; + +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.util.*; +import javax.swing.*; +import javax.swing.border.Border; + +import java.awt.event.*; +import java.io.IOException; + +import static java.lang.Integer.parseInt; + + +public class FormMonorailConfig { + private 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 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 iDrawTransferable implements Transferable { + private IDraw iDrawObject; + private static final DataFlavor iDrawDataFlavor = new DataFlavor(IDraw.class, "IDraw"); + + + + public iDrawTransferable(IDraw iDrawObject) { + this.iDrawObject = iDrawObject; + } + + @Override + public DataFlavor[] getTransferDataFlavors() { + return new DataFlavor[]{iDrawDataFlavor}; + } + + @Override + public boolean isDataFlavorSupported(DataFlavor flavor) { + return iDrawDataFlavor.equals(flavor); + } + + @Override + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { + if (isDataFlavorSupported(flavor)) { + return iDrawObject; + } 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 IDrawComponent extends JComponent{ + public IDraw obj; + + public IDrawComponent(IDraw obj){ + this.obj = obj; + this.addMouseListener( + new MouseAdapter(){ + @Override + public void mousePressed(MouseEvent e) { + ((IDrawComponent)e.getComponent()).getTransferHandler().exportAsDrag(((IDrawComponent)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 iDrawTransferable(((IDrawComponent)c).obj); + } + } + ); + } + + } + + public JFrame frameConfig; + + public JButton addButton; + public JButton cancelButton; + public DrawningMonorail _monorail; + int _pictureBoxWidth = 218; + int _pictureBoxHeight = 190; + + public FormMonorailConfig(){ + frameConfig = new JFrame(); + addButton = new JButton("Добавить"); + cancelButton = new JButton("Отмена"); + addButton.setBounds(555,262,94,29); + cancelButton.setBounds(679,262,94,29); + Canvas canv = new Canvas(); + canv.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + canv.setBounds(555, 65, _pictureBoxWidth, _pictureBoxHeight); + JLabel iDrawLabel = new JLabel("Орнамент"); + JLabel colorLabel = new JLabel("Цвет"); + DrawningMonorail toGetSize = new DrawningMonorail(0,0, null, null, null, 0, 0); + IDrawComponent cartComp = new IDrawComponent(new DrawningWheelsCart(toGetSize._monorailWidth - toGetSize._monorailWidth / 10, + toGetSize._monorailHeight, + _pictureBoxWidth / 2 -toGetSize._monorailWidth / 2, + _pictureBoxHeight / 2 -toGetSize._monorailHeight / 2, Color.GRAY, Color.BLACK)); + IDrawComponent ornComp = new IDrawComponent(new DrawningWheelsOrn(toGetSize._monorailWidth - toGetSize._monorailWidth / 10, + toGetSize._monorailHeight, + _pictureBoxWidth / 2 -toGetSize._monorailWidth / 2, + _pictureBoxHeight / 2 -toGetSize._monorailHeight / 2, Color.GRAY, Color.BLACK)); + IDrawComponent baseComp = new IDrawComponent(new DrawningWheels(toGetSize._monorailWidth - toGetSize._monorailWidth / 10, + toGetSize._monorailHeight, + _pictureBoxWidth / 2 -toGetSize._monorailWidth / 2, + _pictureBoxHeight / 2 -toGetSize._monorailHeight / 2, Color.GRAY, Color.BLACK)); + cartComp.setLayout(new GridLayout(1,1)); + ornComp.setLayout(new GridLayout(1,1)); + baseComp.setLayout(new GridLayout(1,1)); + iDrawLabel.setHorizontalAlignment(SwingConstants.CENTER); + iDrawLabel.setVerticalAlignment(SwingConstants.CENTER); + colorLabel.setHorizontalAlignment(SwingConstants.CENTER); + colorLabel.setVerticalAlignment(SwingConstants.CENTER); + JLabel cartLabel = new JLabel("На тележке"); + JLabel ornLabel = new JLabel("На колесах"); + JLabel baseLabel = new JLabel("Без"); + cartLabel.setHorizontalAlignment(SwingConstants.CENTER); + cartLabel.setVerticalAlignment(SwingConstants.CENTER); + ornLabel.setHorizontalAlignment(SwingConstants.CENTER); + ornLabel.setVerticalAlignment(SwingConstants.CENTER); + baseLabel.setHorizontalAlignment(SwingConstants.CENTER); + baseLabel.setVerticalAlignment(SwingConstants.CENTER); + + cartComp.add(cartLabel); + ornComp.add(ornLabel); + baseComp.add(baseLabel); + cartComp.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + ornComp.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + baseComp.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + JLabel addColorLabel = new JLabel("Доп цвет"); + addColorLabel.setHorizontalAlignment(SwingConstants.CENTER); + addColorLabel.setVerticalAlignment(SwingConstants.CENTER); + colorLabel.setBounds(555, 20, 70, 33); + addColorLabel.setBounds(629, 20, 70, 33); + iDrawLabel.setBounds(703, 20, 70, 33); + colorLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + addColorLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + iDrawLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + JCheckBox checkSecondCabine = new JCheckBox("Наличие 2 кабины"); + JCheckBox checkMagniteRail = new JCheckBox("Наличие магнитной рельсы"); + checkSecondCabine.setBounds(6, 132, 159, 24); + checkMagniteRail.setBounds(6, 162, 145, 24); + JLabel simpleLabel = new JLabel("Простой"); + JLabel advancedLabel = new JLabel("Продвинутый"); + simpleLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + advancedLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); + simpleLabel.setBounds(171,169, 120, 50); + simpleLabel.setHorizontalAlignment(SwingConstants.CENTER); + simpleLabel.setVerticalAlignment(SwingConstants.CENTER); + advancedLabel.setBounds(297,169, 120, 50); + advancedLabel.setHorizontalAlignment(SwingConstants.CENTER); + advancedLabel.setVerticalAlignment(SwingConstants.CENTER); + cartComp.setBounds(171,229, 120, 50); + ornComp.setBounds(297,229, 120, 50); + baseComp.setBounds(423,229, 120, 50); + JLabel speedLabel = new JLabel ("Скорость"); + JLabel weightLabel = new JLabel ("Вес"); + JPanel colorPanel = new JPanel(); + colorPanel.setBounds(171, 23, 234,143); + SpinnerNumberModel speedSpinnerModel = new SpinnerNumberModel(100.0, 100.0, 1000.0, 1.0); + SpinnerNumberModel weightSpinnerModel = new SpinnerNumberModel(100.0, 100.0, 1000.0, 1.0); + SpinnerNumberModel wheelNumbSpinnerModel = new SpinnerNumberModel(2, 2, 4, 1.0); + JSpinner wheelNumbSpinner = new JSpinner(wheelNumbSpinnerModel); + JSpinner speedSpinner = new JSpinner(speedSpinnerModel); + JSpinner weightSpinner = new JSpinner(weightSpinnerModel); + speedSpinner.setBounds(6, 46, 150, 27); + speedLabel.setBounds(6, 23, 73, 20); + weightSpinner.setBounds(6, 99, 150, 27); + weightLabel.setBounds(6, 76, 33, 20); + wheelNumbSpinner.setBounds(6, 200, 150, 27); + + JPanel redPanel = new JPanel(); + JPanel greenPanel = new JPanel(); + JPanel bluePanel = new JPanel(); + JPanel yellowPanel = new JPanel(); + JPanel whitePanel = new JPanel(); + JPanel grayPanel = new JPanel(); + JPanel blackPanel = new JPanel(); + JPanel purplePanel = new JPanel(); + + redPanel.setTransferHandler(new PanelTransferHandler()); + greenPanel.setTransferHandler(new PanelTransferHandler()); + bluePanel.setTransferHandler(new PanelTransferHandler()); + yellowPanel.setTransferHandler(new PanelTransferHandler()); + whitePanel.setTransferHandler(new PanelTransferHandler()); + grayPanel.setTransferHandler(new PanelTransferHandler()); + blackPanel.setTransferHandler(new PanelTransferHandler()); + purplePanel.setTransferHandler(new PanelTransferHandler()); + + redPanel.addMouseListener(new PanelMouseAdapter()); + greenPanel.addMouseListener(new PanelMouseAdapter()); + bluePanel.addMouseListener(new PanelMouseAdapter()); + yellowPanel.addMouseListener(new PanelMouseAdapter()); + whitePanel.addMouseListener(new PanelMouseAdapter()); + grayPanel.addMouseListener(new PanelMouseAdapter()); + blackPanel.addMouseListener(new PanelMouseAdapter()); + purplePanel.addMouseListener(new PanelMouseAdapter()); + + redPanel.setName("Красный"); + greenPanel.setName("Зелёный"); + bluePanel.setName("Синий"); + yellowPanel.setName("Жёлтый"); + whitePanel.setName("Белый"); + grayPanel.setName("Серый"); + blackPanel.setName("Чёрный"); + purplePanel.setName("Фиолетовый"); + + + simpleLabel.setTransferHandler(new LabelTransferHandler()); + simpleLabel.addMouseListener(new LabelMouseAdapter()); + + advancedLabel.setTransferHandler(new LabelTransferHandler()); + advancedLabel.addMouseListener(new LabelMouseAdapter()); + + + + redPanel.setBackground(Color.RED); + greenPanel.setBackground(Color.GREEN); + bluePanel.setBackground(Color.BLUE); + yellowPanel.setBackground(Color.YELLOW); + whitePanel.setBackground(Color.WHITE); + grayPanel.setBackground(Color.GRAY); + blackPanel.setBackground(Color.BLACK); + purplePanel.setBackground(Color.PINK); + + colorPanel.setLayout(new GridLayout(2, 4)); + + colorPanel.add(redPanel); + colorPanel.add(greenPanel); + colorPanel.add(bluePanel); + colorPanel.add(yellowPanel); + colorPanel.add(whitePanel); + colorPanel.add(grayPanel); + colorPanel.add(blackPanel); + colorPanel.add(purplePanel); + + + frameConfig.add(colorLabel); + frameConfig.add(addColorLabel); + frameConfig.add(iDrawLabel); + frameConfig.setLayout(null); + frameConfig.setSize(818, 350); + frameConfig.add(speedLabel); + frameConfig.add(speedSpinner); + frameConfig.add(weightLabel); + frameConfig.add(weightSpinner); + frameConfig.add(simpleLabel); + frameConfig.add(advancedLabel); + frameConfig.add(checkSecondCabine); + frameConfig.add(checkMagniteRail); + frameConfig.add(canv); + frameConfig.add(addButton); + frameConfig.add(cancelButton); + frameConfig.add(wheelNumbSpinner); + + frameConfig.setVisible(true); + frameConfig.add(colorPanel); + frameConfig.add(cartComp); + frameConfig.add(ornComp); + frameConfig.add(baseComp); + colorPanel.setVisible(true); + cartComp.setVisible(true); + ornComp.setVisible(true); + baseComp.setVisible(true); + + canv.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 { + Object speedObj = speedSpinner.getValue(); + Number speedNumb = (Number) speedObj; + int speed = speedNumb.intValue(); + + Object weightObj = weightSpinner.getValue(); + Number weightNumb = (Number) weightObj; + int weight = weightNumb.intValue(); + + Object wheelNumbObj = wheelNumbSpinner.getValue(); + Number wheelNumbNumb = (Number) wheelNumbObj; + int wheelNumb = wheelNumbNumb.intValue(); + + String data = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor); + switch (data) { + case "Простой": + + _monorail = new DrawningMonorail(speed, weight, Color.WHITE, + Color.GRAY, Color.BLACK, _pictureBoxWidth, _pictureBoxHeight); + _monorail.ChangeWheelsNumb(wheelNumb); + break; + case "Продвинутый": + _monorail = new DrawningLocomotive(speed, weight, Color.WHITE, Color.GRAY, Color.BLACK, + wheelNumb, _pictureBoxWidth, _pictureBoxHeight, + checkSecondCabine.isSelected(), checkMagniteRail.isSelected(), Color.GRAY); + _monorail.ChangeWheelsNumb(wheelNumb); + break; + } + _monorail.SetPosition(_pictureBoxWidth / 2 -_monorail._monorailWidth / 2, + _pictureBoxHeight / 2 -_monorail._monorailHeight / 2); + + canv.DrawningMonorail = _monorail; + canv.repaint(); + return true; + } catch (UnsupportedFlavorException | IOException e) { + e.printStackTrace(); + } + } + return false; + } + } + ); + + iDrawLabel.setTransferHandler( + new TransferHandler(){ + @Override + public boolean canImport(TransferHandler.TransferSupport support) { + return support.isDataFlavorSupported(iDrawTransferable.iDrawDataFlavor); + } + @Override + public boolean importData(TransferHandler.TransferSupport support) { + if (canImport(support)) { + try { + IDraw obj = (IDraw) support.getTransferable().getTransferData(iDrawTransferable.iDrawDataFlavor); + if (_monorail == null) + return false; + _monorail.ChangeIDraw(obj); + canv.repaint(); + return true; + } catch (UnsupportedFlavorException | IOException e) { + e.printStackTrace(); + } + } + return false; + } + } + ); + + colorLabel.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 (_monorail == null) + return false; + _monorail.ChangeColor(color); + canv.repaint(); + return true; + } catch (UnsupportedFlavorException | IOException e) { + e.printStackTrace(); + } + } + return false; + } + } + ); + + addColorLabel.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 (_monorail == null || !(_monorail instanceof DrawningLocomotive)) + return false; + ((DrawningLocomotive)_monorail).ChangeAddColor(color); + canv.repaint(); + return true; + } catch (UnsupportedFlavorException | IOException e) { + e.printStackTrace(); + } + } + return false; + } + } + ); + } + + + + +} +