01: /*
02: * SelectionFilterAction.java
03: *
04: * This file is part of SQL Workbench/J, http://www.sql-workbench.net
05: *
06: * Copyright 2002-2008, Thomas Kellerer
07: * No part of this code maybe reused without the permission of the author
08: *
09: * To contact the author please send an email to: support@sql-workbench.net
10: *
11: */
12: package workbench.gui.actions;
13:
14: import java.awt.event.ActionEvent;
15: import javax.swing.ListSelectionModel;
16: import javax.swing.event.ListSelectionEvent;
17: import javax.swing.event.ListSelectionListener;
18: import workbench.gui.components.WbTable;
19: import workbench.resource.ResourceMgr;
20: import workbench.gui.filter.SelectionFilter;
21:
22: /**
23: * Filter data from a WbTable based on the currently selected column value
24: * @author support@sql-workbench.net
25: */
26: public class SelectionFilterAction extends WbAction implements
27: ListSelectionListener {
28: private WbTable client;
29:
30: public SelectionFilterAction() {
31: super ();
32: this .initMenuDefinition("MnuTxtColFilter");
33: this .setIcon(ResourceMgr.getImage("colfilter"));
34: this .setMenuItemName(ResourceMgr.MNU_TXT_DATA);
35: this .setCreateToolbarSeparator(false);
36: this .setEnabled(false);
37: }
38:
39: public void executeAction(ActionEvent e) {
40: SelectionFilter filter = new SelectionFilter(this .client);
41: filter.applyFilter();
42: }
43:
44: public void setClient(WbTable c) {
45: if (this .client != null) {
46: ListSelectionModel m = this .client.getSelectionModel();
47: if (m != null) {
48: m.removeListSelectionListener(this );
49: }
50: }
51: this .client = c;
52: this .setEnabled(client != null);
53: if (this .client != null) {
54: ListSelectionModel m = this .client.getSelectionModel();
55: if (m != null) {
56: m.addListSelectionListener(this );
57: }
58: }
59: checkEnabled();
60: }
61:
62: private void checkEnabled() {
63: if (client == null) {
64: this .setEnabled(false);
65: } else {
66: int rows = client.getSelectedRowCount();
67: int cols = client.getSelectedColumnCount();
68:
69: this .setEnabled(rows == 1 || (rows > 1 && cols == 1));
70: }
71: }
72:
73: public void valueChanged(ListSelectionEvent e) {
74: checkEnabled();
75: }
76:
77: }
|