package cutils.gui;

import gui.mouse.MouseComponentMover;

import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;


 abstract class RunSlider extends JSlider implements Runnable, ChangeListener {
    public RunSlider(int orientation, int min, int max, int value) {
        super(orientation, min, max, value);
        this.setBorder(BorderFactory.createEtchedBorder());
        this.setSize(100,40);
        new MouseComponentMover(this);
        addChangeListener(this);
    }
    public void stateChanged(ChangeEvent e) {
        run();
    }
}

 abstract class RunTextField2 extends JTextField implements Runnable, ActionListener {
    public RunTextField2(String label) {
        super(label);
        this.setSize(100,40);
        new MouseComponentMover(this);
        addActionListener(this);        
    }
    public void actionPerformed(ActionEvent e) {
        run();
    }
}

 abstract class RunList extends JList implements Runnable, ListSelectionListener {
    public RunList(String[] label) {
        super(label);
        this.setBorder(BorderFactory.createEtchedBorder());
        this.setSize(100,80);
            
        new MouseComponentMover(this);
        addListSelectionListener(this); 
    }
    public void valueChanged(ListSelectionEvent e) {
        run();
    }
}
 abstract class RunPasswordField extends JPasswordField implements Runnable, ActionListener {
    public RunPasswordField(String label) {
        super(label);
        this.setBorder(BorderFactory.createEtchedBorder());
        this.setSize(100,30);
        new MouseComponentMover(this);
        addActionListener(this);        
    }
    public void actionPerformed(ActionEvent e) {
        run();
    }
}

 abstract class RunCheckBox extends JCheckBox implements Runnable, ItemListener {
    public RunCheckBox(String label) {
        super(label);
        this.setBorder(BorderFactory.createEtchedBorder());
        this.setSize(100,30);
        new MouseComponentMover(this);
        addItemListener(this);  
    }
    public void itemStateChanged(ItemEvent e) {
        run();
    }
}