2023-11-19 00:08:09 +04:00
|
|
|
package ProjectElectricLocomotive;
|
|
|
|
|
|
|
|
import javax.swing.*;
|
2023-11-20 16:33:32 +04:00
|
|
|
import java.awt.*;
|
2023-12-03 00:14:51 +04:00
|
|
|
import java.awt.datatransfer.DataFlavor;
|
|
|
|
import java.awt.datatransfer.StringSelection;
|
|
|
|
import java.awt.datatransfer.Transferable;
|
|
|
|
import java.awt.datatransfer.UnsupportedFlavorException;
|
|
|
|
import java.awt.event.MouseAdapter;
|
|
|
|
import java.awt.event.MouseEvent;
|
|
|
|
import javax.swing.border.Border;
|
|
|
|
import java.awt.event.MouseListener;
|
|
|
|
import java.io.IOException;
|
2023-11-19 00:08:09 +04:00
|
|
|
|
2023-12-03 00:14:51 +04:00
|
|
|
public class FormLocomotiveConfig{
|
|
|
|
|
|
|
|
public DrawingLocomotive _loco;
|
2023-11-19 00:08:09 +04:00
|
|
|
private JPanel MainPanel;
|
|
|
|
private JPanel groupBoxObjectParameters;
|
|
|
|
private JPanel groupBoxColors;
|
|
|
|
private JSpinner numericUpDownSpeed;
|
|
|
|
private JSpinner numericUpDownWeight;
|
|
|
|
private JLabel labelSpeed;
|
|
|
|
private JLabel labelWeight;
|
|
|
|
private JCheckBox checkBoxHorns;
|
|
|
|
private JCheckBox checkBoxSeifBatteries;
|
2023-12-03 00:14:51 +04:00
|
|
|
public JLabel lableSimpleObject;
|
2023-11-19 00:08:09 +04:00
|
|
|
private JLabel labelModifiedObject;
|
2023-11-20 16:33:32 +04:00
|
|
|
public JButton buttonOk;
|
2023-11-19 00:08:09 +04:00
|
|
|
private JButton buttonClose;
|
|
|
|
private JLabel labelColor;
|
|
|
|
private JLabel labelDopColor;
|
2023-12-03 00:14:51 +04:00
|
|
|
public JPanel pictureBoxObject;
|
|
|
|
|
2023-11-20 16:33:32 +04:00
|
|
|
|
|
|
|
public JPanel getPictureBoxObject(){
|
2023-12-03 00:14:51 +04:00
|
|
|
return MainPanel;
|
|
|
|
}
|
|
|
|
|
|
|
|
// MouseListener ml = new MouseListener() {
|
|
|
|
// @Override
|
|
|
|
// public void mouseClicked(MouseEvent e) {
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// @Override
|
|
|
|
// public void mousePressed(MouseEvent e) {
|
|
|
|
// JComponent jc = (JComponent)e.getSource();
|
|
|
|
// TransferHandler th = jc.getTransferHandler();
|
|
|
|
// th.exportAsDrag(jc, e, TransferHandler.COPY);
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// @Override
|
|
|
|
// public void mouseReleased(MouseEvent e) {
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// @Override
|
|
|
|
// public void mouseEntered(MouseEvent e) {
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// @Override
|
|
|
|
// public void mouseExited(MouseEvent e) {
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// };
|
|
|
|
|
|
|
|
// private class Canvas extends JComponent{
|
|
|
|
// public Canvas(){
|
|
|
|
// }
|
|
|
|
// public void paintComponent (Graphics g){
|
|
|
|
// if ( == null){
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
// super.paintComponents (g) ;
|
|
|
|
// Graphics2D g2d = (Graphics2D)g;
|
|
|
|
// _train.DrawTransport(g2d);
|
|
|
|
// super.repaint();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//класс для перетаскивания типа объекта
|
|
|
|
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 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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//что бы wheel'ы можно было тоскать
|
|
|
|
private class WheelTransferable implements Transferable {
|
|
|
|
private IDrawingWheels wheelDrawing;
|
|
|
|
private static final DataFlavor wheelDrawingDataFlavor = new DataFlavor(IDrawingWheels.class, "Wheel Drawing");
|
|
|
|
|
|
|
|
public WheelTransferable(IDrawingWheels wheelDrawing) {
|
|
|
|
this.wheelDrawing = wheelDrawing;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public DataFlavor[] getTransferDataFlavors() {
|
|
|
|
return new DataFlavor[]{wheelDrawingDataFlavor};
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
|
|
|
return flavor.equals(wheelDrawingDataFlavor);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
|
|
|
|
if (isDataFlavorSupported(flavor)) {
|
|
|
|
return wheelDrawing;
|
|
|
|
} else {
|
|
|
|
throw new UnsupportedFlavorException(flavor);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//для отрисовки wheel'ов, которые можно взять и потащить
|
|
|
|
private class ComponentWheel extends JComponent {
|
|
|
|
public IDrawingWheels wheelDrawing;
|
|
|
|
|
|
|
|
public ComponentWheel(IDrawingWheels _wheelDrawing) {
|
|
|
|
wheelDrawing = _wheelDrawing;
|
|
|
|
this.addMouseListener(
|
|
|
|
new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mousePressed(MouseEvent e) {
|
|
|
|
((ComponentWheel) e.getComponent()).getTransferHandler().exportAsDrag(((ComponentWheel) 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 WheelTransferable(((ComponentWheel) c).wheelDrawing);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
2023-11-20 16:33:32 +04:00
|
|
|
}
|
|
|
|
|
2023-12-03 00:14:51 +04:00
|
|
|
|
|
|
|
|
2023-11-20 16:33:32 +04:00
|
|
|
public FormLocomotiveConfig()
|
|
|
|
{
|
2023-12-03 00:14:51 +04:00
|
|
|
Border br = BorderFactory.createLineBorder(Color.cyan);
|
|
|
|
|
|
|
|
SpinnerModel numSpeed = new SpinnerNumberModel(100, 100, 1000, 1);
|
|
|
|
numericUpDownSpeed = new JSpinner(numSpeed);
|
|
|
|
|
|
|
|
SpinnerModel numWeight = new SpinnerNumberModel(100, 100, 1000, 1);
|
|
|
|
numericUpDownWeight = new JSpinner(numWeight);
|
|
|
|
|
|
|
|
lableSimpleObject.setTransferHandler(new LabelTransferHandler());
|
|
|
|
lableSimpleObject.addMouseListener(new LabelMouseAdapter());
|
|
|
|
lableSimpleObject.setBorder(br);
|
|
|
|
|
|
|
|
labelModifiedObject.setTransferHandler(new LabelTransferHandler());
|
|
|
|
labelModifiedObject.addMouseListener(new LabelMouseAdapter());
|
|
|
|
labelModifiedObject.setBorder(br);
|
|
|
|
|
|
|
|
labelColor.setBorder(br);
|
|
|
|
labelColor.setTransferHandler(
|
|
|
|
new TransferHandler(){
|
|
|
|
@Override
|
|
|
|
public boolean canImport(TransferHandler.TransferSupport support)
|
|
|
|
{
|
|
|
|
try{
|
|
|
|
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
|
|
|
if(_loco == null) return false;
|
|
|
|
_loco.EntityLocomotive.SetBodyColor(color);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
catch(UnsupportedFlavorException | IOException e){
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
labelDopColor.setBorder(br);
|
|
|
|
labelDopColor.setTransferHandler(
|
|
|
|
new TransferHandler(){
|
|
|
|
@Override
|
|
|
|
public boolean canImport(TransferHandler.TransferSupport support)
|
|
|
|
{
|
|
|
|
try{
|
|
|
|
Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor);
|
|
|
|
if(_loco == null) return false;
|
|
|
|
if(!(_loco instanceof DrawingLocomotive))
|
|
|
|
return false;
|
|
|
|
((EntityElectricLocomotive)_loco.EntityLocomotive).SetBodyColor(color);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
catch(UnsupportedFlavorException | IOException e){
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
);
|
2023-11-20 16:33:32 +04:00
|
|
|
|
|
|
|
|
|
|
|
}
|
2023-12-03 00:14:51 +04:00
|
|
|
// lableSimpleObject.addMouseListener(ml);
|
|
|
|
// labelModifiedObject.setTransferHandler(new TransferHandler("rar"));
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-11-19 00:08:09 +04:00
|
|
|
}
|