package diploma;

import javax.swing.*;
import java.awt.*;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import java.awt.event.KeyEvent;


public class DouaListeSiButoanePattern extends JPanel {
		JList lista1, lista2;
		JButton buton1, buton2;
	public DouaListeSiButoanePattern() {
		setLayout(new FlowLayout(FlowLayout.CENTER, 10, 0));
		lista1 = new JList(new DefaultListModel());	//adaugă elemente
		lista1.setLayoutOrientation(JList.VERTICAL);
		lista1.setVisibleRowCount(-1);
		lista1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);	
		//lista1.getModel().addListDataListener(this);
		JScrollPane lista1ScrPane = new JScrollPane(lista1);
		lista1ScrPane.setPreferredSize(new Dimension(100, 130));
		buton1 = new JButton("<html>Selec-<br>tează</html>");
		buton1.setAlignmentX(0.5f);
		buton1.setMargin(new Insets(6, 4, 6, 4));
		buton1.setEnabled(false);
		buton1.setMnemonic(KeyEvent.VK_S);
		buton2 = new JButton("<html><center>Deselec-<br>tează</center></html>");
		buton2.setAlignmentX(0.5f);
		buton2.setEnabled(false);
		buton2.setMargin(new Insets(6, 4, 6, 4));
		buton2.setMnemonic(KeyEvent.VK_D);
		JPanel butPanel = new JPanel();
		butPanel.setOpaque(true);
		butPanel.setLayout(new BoxLayout(butPanel, BoxLayout.Y_AXIS));
		butPanel.add(buton1);
		butPanel.add(Box.createVerticalStrut(20)) ;
		butPanel.add(buton2);
		lista2 = new JList(new DefaultListModel());
		//lista2.getModel().addListDataListener(this);
		lista2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);	
		lista2.setLayoutOrientation(JList.VERTICAL);
		JScrollPane lista2ScrPane = new JScrollPane(lista2);
		lista2ScrPane.setPreferredSize(new Dimension(100, 130));
		Font simpluFont = lista1.getFont().deriveFont(Font.PLAIN, 11);
		lista1.setFont(simpluFont);	
		lista2.setFont(simpluFont);	
		add(lista1ScrPane);
		add(butPanel);
		add(lista2ScrPane);
	}
	//activează și dezactivează butoanele
	public void activDezactivBut() {
		DefaultListModel dlm1 = (DefaultListModel) lista1.getModel();
		DefaultListModel dlm2 = (DefaultListModel) lista2.getModel();
		if (dlm1.isEmpty() && buton1.isEnabled())
			buton1.setEnabled(false);
		else if (! dlm1.isEmpty() && ! buton1.isEnabled())
			buton1.setEnabled(true);
		else if (dlm2.isEmpty() && buton2.isEnabled())
			buton2.setEnabled(false);
		else if (! dlm2.isEmpty() && ! buton2.isEnabled())
			buton2.setEnabled(true);
	}
	public void select() {
		DefaultListModel dlm1 = (DefaultListModel) lista1.getModel();
		DefaultListModel dlm2 = (DefaultListModel) lista2.getModel();
		String selStr = (String) lista1.getSelectedValue();
		if (dlm1.isEmpty() || selStr == null || dlm2.contains(selStr))
			return;
		else dlm2.addElement(selStr);
		lista2.setSelectedValue(selStr, true);
	}
	public void deselect() {
		DefaultListModel dlm2 = (DefaultListModel) lista2.getModel();
		String selStr = (String) lista2.getSelectedValue();
		if (dlm2.isEmpty() || selStr == null)
			return;
		else dlm2.removeElement(selStr);
	}

}