Skip to content

Commit 39cfa55

Browse files
committed
Feature: SQL result table: The find function now allows to narrow the columns to search.
1 parent 5be1806 commit 39cfa55

29 files changed

+648
-213
lines changed

sql12/core/doc/changes.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Not yet released, available in our GIT repository, snapshots and future releases
66

77
Enhancements:
88

9+
SQL result table: The find function now allows to narrow the columns to search.
10+
911
Refactoring: Dropping Foreign Keys is now available by default.
1012
It is not available only when the dialect definition of an RDBMS explicitly does not support it.
1113
See Object tree --> Right mouse click on table --> "Refactoring" --> "Referential Integrity" --> "Drop Foreign Key(s)"

sql12/core/src/net/sourceforge/squirrel_sql/client/gui/session/catalogspanel/AdditionalCatalogsController.java

Lines changed: 37 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
import net.sourceforge.squirrel_sql.client.Main;
44
import net.sourceforge.squirrel_sql.client.session.ISession;
55
import net.sourceforge.squirrel_sql.fw.gui.GUIUtils;
6+
import net.sourceforge.squirrel_sql.fw.gui.checkedlistbox.CheckedListBoxHandler;
7+
import net.sourceforge.squirrel_sql.fw.gui.checkedlistbox.CheckedListBoxListener;
68
import net.sourceforge.squirrel_sql.fw.util.Utilities;
79
import org.apache.commons.lang3.StringUtils;
810

9-
import javax.swing.*;
10-
import java.awt.event.MouseAdapter;
11-
import java.awt.event.MouseEvent;
11+
import javax.swing.JCheckBox;
1212
import java.sql.SQLException;
13-
import java.util.Collections;
13+
import java.util.List;
14+
import java.util.stream.Collectors;
1415

1516
public class AdditionalCatalogsController
1617
{
@@ -28,30 +29,27 @@ public AdditionalCatalogsController(ISession session)
2829

2930
AliasCatalogLoadModelJsonBean bean = Main.getApplication().getCatalogLoadModelManager().getAliasCatalogLoadModelJsonBean(session.getAlias());
3031

31-
DefaultListModel<CatalogChecked> listModel = new DefaultListModel<>();
32-
for (String catalog : catalogs)
33-
{
34-
listModel.addElement(createCatalogChecked(catalog, bean));
35-
}
32+
CheckedListBoxHandler<CatalogChecked> checkedListBoxHandler =
33+
new CheckedListBoxHandler<>(_dlg.chkLstCatalogs, new CheckedListBoxListener<>()
34+
{
35+
@Override
36+
public void listBoxItemToInvert(CatalogChecked catClicked)
37+
{
38+
catClicked.setChecked(!catClicked.isChecked());
39+
}
3640

37-
_dlg.chkLstCatalogs.setModel(listModel);
41+
@Override
42+
public void listBoxItemToRender(CatalogChecked cat, JCheckBox renderer)
43+
{
44+
onRenderCheckBox(cat, renderer);
45+
}
46+
});
3847

39-
_dlg.chkLstCatalogs.setCellRenderer(new CheckListRenderer());
48+
checkedListBoxHandler.setItems(List.of(catalogs).stream().map(cat -> createCatalogChecked(cat, bean)).collect(Collectors.toList()));
4049

41-
// Add a mouse listener to toggle the checkbox when an item is clicked
42-
_dlg.chkLstCatalogs.addMouseListener(new MouseAdapter()
43-
{
44-
@Override
45-
public void mouseClicked(MouseEvent event)
46-
{
47-
onMouseClicked(event);
48-
}
49-
});
50-
51-
52-
_dlg.btnSelectAll.addActionListener(e -> onSelectAll());
53-
_dlg.btnInvertSelection.addActionListener(e -> onInvertSelection());
54-
_dlg.btnOk.addActionListener(e -> onOk(session));
50+
_dlg.btnSelectAll.addActionListener(e -> onSelectAll(checkedListBoxHandler));
51+
_dlg.btnInvertSelection.addActionListener(e -> onInvertSelection(checkedListBoxHandler));
52+
_dlg.btnOk.addActionListener(e -> onOk(session, checkedListBoxHandler));
5553

5654
GUIUtils.initLocation(_dlg, 400, 600);
5755
GUIUtils.enableCloseByEscape(_dlg);
@@ -66,56 +64,39 @@ public void mouseClicked(MouseEvent event)
6664
}
6765
}
6866

69-
private void onInvertSelection()
67+
private static void onRenderCheckBox(CatalogChecked cat, JCheckBox renderer)
7068
{
71-
for (int i = 0; i < _dlg.chkLstCatalogs.getModel().getSize(); i++)
72-
{
73-
CatalogChecked catalogChecked = _dlg.chkLstCatalogs.getModel().getElementAt(i);
74-
catalogChecked.setChecked(!catalogChecked.isChecked());
75-
}
76-
_dlg.chkLstCatalogs.repaint();
69+
renderer.setSelected(cat.isChecked());
70+
renderer.setText(cat.getCatalog());
7771
}
7872

79-
private void onSelectAll()
73+
private void onInvertSelection(CheckedListBoxHandler<CatalogChecked> checkedListBoxHandler)
8074
{
81-
for (int i = 0; i < _dlg.chkLstCatalogs.getModel().getSize(); i++)
82-
{
83-
_dlg.chkLstCatalogs.getModel().getElementAt(i).setChecked(true);
84-
}
85-
_dlg.chkLstCatalogs.repaint();
75+
checkedListBoxHandler.getAllItems().forEach(i -> i.setChecked(!i.isChecked()));
76+
checkedListBoxHandler.repaint();
8677
}
8778

88-
private void onMouseClicked(MouseEvent event)
79+
private void onSelectAll(CheckedListBoxHandler<CatalogChecked> checkedListBoxHandler)
8980
{
90-
int index = _dlg.chkLstCatalogs.locationToIndex(event.getPoint());
91-
if ( index >= 0
92-
&& index < _dlg.chkLstCatalogs.getModel().getSize()
93-
&& _dlg.chkLstCatalogs.getCellBounds(index, index).contains(event.getPoint()))
94-
{
95-
CatalogChecked catalogChecked = _dlg.chkLstCatalogs.getModel().getElementAt(index);
96-
catalogChecked.setChecked(!catalogChecked.isChecked());
97-
_dlg.chkLstCatalogs.repaint(_dlg.chkLstCatalogs.getCellBounds(index, index));
98-
}
81+
checkedListBoxHandler.getAllItems().forEach(i -> i.setChecked(true));
82+
checkedListBoxHandler.repaint();
9983
}
10084

85+
10186
public boolean isOk()
10287
{
10388
return _ok;
10489
}
10590

106-
private void onOk(ISession session)
91+
private void onOk(ISession session, CheckedListBoxHandler<CatalogChecked> checkedListBoxHandler)
10792
{
10893
AliasCatalogLoadModelJsonBean bean = Main.getApplication().getCatalogLoadModelManager().getAliasCatalogLoadModelJsonBean(session.getAlias());
10994

11095
bean.getAdditionalUserChosenCatalogs().clear();
11196

112-
for (CatalogChecked catalogChecked : Collections.list(((DefaultListModel<CatalogChecked>) _dlg.chkLstCatalogs.getModel()).elements()))
113-
{
114-
if (catalogChecked.isChecked())
115-
{
116-
bean.getAdditionalUserChosenCatalogs().add(catalogChecked.getCatalog());
117-
}
118-
}
97+
checkedListBoxHandler.getAllItems()
98+
.stream().filter(CatalogChecked::isChecked)
99+
.forEach(i -> bean.getAdditionalUserChosenCatalogs().add(i.getCatalog()));
119100

120101
_ok = true;
121102

sql12/core/src/net/sourceforge/squirrel_sql/client/gui/session/catalogspanel/CatalogsComboListener.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

sql12/core/src/net/sourceforge/squirrel_sql/client/gui/session/catalogspanel/CatalogsToLoad.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

sql12/core/src/net/sourceforge/squirrel_sql/client/gui/session/catalogspanel/CheckListRenderer.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

sql12/core/src/net/sourceforge/squirrel_sql/client/gui/session/catalogspanel/ConfigCatalogLoadingController.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

sql12/core/src/net/sourceforge/squirrel_sql/client/gui/session/catalogspanel/SQLCatalogsComboBox.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

sql12/core/src/net/sourceforge/squirrel_sql/client/session/mainpanel/findresultcolumn/FindColumnColWrapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.sourceforge.squirrel_sql.client.session.mainpanel.findresultcolumn;
22

33
import net.sourceforge.squirrel_sql.fw.datasetviewer.ExtTableColumn;
4+
import net.sourceforge.squirrel_sql.fw.datasetviewer.TableNameAccess;
45

56
public class FindColumnColWrapper
67
{

sql12/core/src/net/sourceforge/squirrel_sql/client/session/mainpanel/findresultcolumn/FindResultColumnCtrl.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,27 @@
33
import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTablePanel;
44
import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTablePanelUtil;
55
import net.sourceforge.squirrel_sql.fw.datasetviewer.ExtTableColumn;
6+
import net.sourceforge.squirrel_sql.fw.datasetviewer.TableNameAccess;
67
import net.sourceforge.squirrel_sql.fw.gui.GUIUtils;
78
import net.sourceforge.squirrel_sql.fw.props.Props;
89
import net.sourceforge.squirrel_sql.fw.util.StringUtilities;
910

10-
import javax.swing.*;
11+
import javax.swing.DefaultListModel;
1112
import javax.swing.event.DocumentEvent;
1213
import javax.swing.event.DocumentListener;
13-
import java.awt.*;
14-
import java.awt.event.*;
14+
import java.awt.Dimension;
15+
import java.awt.Window;
16+
import java.awt.event.ActionEvent;
17+
import java.awt.event.ActionListener;
18+
import java.awt.event.MouseAdapter;
19+
import java.awt.event.MouseEvent;
20+
import java.awt.event.WindowAdapter;
21+
import java.awt.event.WindowEvent;
22+
import java.util.ArrayList;
23+
import java.util.Collections;
24+
import java.util.Comparator;
25+
import java.util.HashSet;
1526
import java.util.List;
16-
import java.util.*;
1727

1828
public class FindResultColumnCtrl
1929
{

sql12/core/src/net/sourceforge/squirrel_sql/client/session/mainpanel/findresultcolumn/TableNameAccess.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)