summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/QScrollPane.java
blob: c4ee12b0239fc4bf75cb203360157bf74d988a13 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package org.openslx.dozmod.gui.control.table;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JScrollPane;
import javax.swing.JTable;

/**
 * Extended JScrollPane
 * - make de-selection by clicking on empty space possible
 * - transfer focus to table when clicking on empty space
 * - make the scroll pane's background color match that of the JTable.
 */
@SuppressWarnings("serial")
public class QScrollPane extends JScrollPane {

	public QScrollPane(final JTable view) {
		super(view);
		this.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				view.clearSelection();
				view.requestFocus();
			}
		});
		PropertyChangeListener listener = new PropertyChangeListener() {
			@Override
			public void propertyChange(PropertyChangeEvent evt) {
				if (getViewport() == null)
					return;
				getViewport().setBackground(view.getBackground());
			}
		};
		view.addPropertyChangeListener("background", listener);
		listener.propertyChange(null);
	}

}