Skip to content

Commit 3fa21d6

Browse files
committed
Feature #43
The maximum number of characters to display in the table cell data popup can now be configured. See menu File -- > Global Preferences --> tab General --> section "Table cell data value popup".
1 parent 1d6c7aa commit 3fa21d6

File tree

9 files changed

+65
-12
lines changed

9 files changed

+65
-12
lines changed

sql12/core/doc/changes.txt

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

77
Enhancements:
88

9+
https://github.com/squirrel-sql-client/squirrel-sql-code/issues/43
10+
The maximum number of characters to display in the table cell data popup can now be configured.
11+
See menu File -- > Global Preferences --> tab General --> section "Table cell data value popup".
12+
913
#617 | https://github.com/squirrel-sql-client/squirrel-sql-code/issues/41
1014
SQL result table: The detail data display now allows to automatically reformat XML or Json data.
1115
To configure automatic reformatting go to menu File --> Global preferences

sql12/core/src/net/sourceforge/squirrel_sql/client/preferences/GeneralPreferencesGUI.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.sourceforge.squirrel_sql.client.session.messagepanel.MessagePrefsCtrl;
66
import net.sourceforge.squirrel_sql.client.util.ApplicationFiles;
77
import net.sourceforge.squirrel_sql.fw.gui.GUIUtils;
8+
import net.sourceforge.squirrel_sql.fw.gui.IntegerField;
89
import net.sourceforge.squirrel_sql.fw.gui.MultipleLineLabel;
910
import net.sourceforge.squirrel_sql.fw.util.StringManager;
1011
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
@@ -45,6 +46,7 @@ final class GeneralPreferencesGUI extends JPanel
4546
private JCheckBox _showPluginFilesInSplashScreen = new JCheckBox(s_stringMgr.getString("GeneralPreferencesPanel.showpluginfiles"));
4647
private JCheckBox _useShortSessionTitle = new JCheckBox(s_stringMgr.getString("GeneralPreferencesPanel.useShortSessionTitle"));
4748
private JCheckBox _rememberValueOfPopup = new JCheckBox(s_stringMgr.getString("GeneralPreferencesPanel.rememberValueOfPopup"));
49+
private IntegerField _maxCharsInValuePopup = new IntegerField(8, 0);
4850

4951

5052
// private JLabel _executionLogFileNameLbl = new OutputLabel(" ");
@@ -98,6 +100,7 @@ void loadData(SquirrelPreferences prefs)
98100
_showPluginFilesInSplashScreen.setSelected(prefs.getShowPluginFilesInSplashScreen());
99101
_useShortSessionTitle.setSelected(prefs.getUseShortSessionTitle());
100102
_rememberValueOfPopup.setSelected(prefs.isRememberValueOfPopup());
103+
_maxCharsInValuePopup.setInt(prefs.getMaxCharsInValuePopup());
101104

102105
_confirmSessionCloseChk.setSelected(prefs.getConfirmSessionClose());
103106
_warnJreJdbcMismatch.setSelected(prefs.getWarnJreJdbcMismatch());
@@ -151,6 +154,7 @@ void applyChanges(SquirrelPreferences prefs)
151154
prefs.setShowPluginFilesInSplashScreen(_showPluginFilesInSplashScreen.isSelected());
152155
prefs.setUseShortSessionTitle(_useShortSessionTitle.isSelected());
153156
prefs.setRememberValueOfPopup(_rememberValueOfPopup.isSelected());
157+
prefs.setMaxCharsInValuePopup(_maxCharsInValuePopup.getInt());
154158
prefs.setConfirmSessionClose(_confirmSessionCloseChk.isSelected());
155159
prefs.setWarnJreJdbcMismatch(_warnJreJdbcMismatch.isSelected());
156160
prefs.setWarnForUnsavedFileEdits(_warnForUnsavedFileEdits.isSelected());
@@ -251,7 +255,7 @@ private JPanel createAppearancePanel()
251255
++gbc.gridy;
252256
pnl.add(_useShortSessionTitle, gbc);
253257
++gbc.gridy;
254-
pnl.add(_rememberValueOfPopup, gbc);
258+
pnl.add(createValuePopupPanel(), gbc);
255259

256260
++gbc.gridy;
257261
final GridBagConstraints gbcThemes = (GridBagConstraints) gbc.clone();
@@ -268,6 +272,26 @@ private JPanel createAppearancePanel()
268272
return pnl;
269273
}
270274

275+
private JPanel createValuePopupPanel()
276+
{
277+
JPanel ret = new JPanel(new GridBagLayout());
278+
279+
GridBagConstraints gbc;
280+
281+
gbc = new GridBagConstraints(0,0, 1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(5,5,0,0), 0,0);
282+
ret.add(_rememberValueOfPopup, gbc);
283+
284+
gbc = new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(10,5,0,0), 0,0);
285+
ret.add(new JLabel(s_stringMgr.getString("GeneralPreferencesPanel.maxCharNumbersInValueOfPopup")), gbc);
286+
287+
gbc = new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(2,5,0,0), 0,0);
288+
ret.add(_maxCharsInValuePopup, gbc);
289+
290+
ret.setBorder(BorderFactory.createTitledBorder(s_stringMgr.getString("GeneralPreferencesPanel.value.popup.title")));
291+
292+
return ret;
293+
}
294+
271295
private JPanel createGeneralPanel()
272296
{
273297
final JPanel pnl = new JPanel();

sql12/core/src/net/sourceforge/squirrel_sql/client/preferences/I18NStrings.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ GeneralPreferencesPanel.showmainwintoolbar=Show Main Window Toolbar
2323
GeneralPreferencesPanel.showpluginfiles=Show Plugin files being loaded in Splash Screen
2424
GeneralPreferencesPanel.useShortSessionTitle=Use short Session tab title (Alias name only)
2525
GeneralPreferencesPanel.rememberValueOfPopup=Remember value popup size
26+
GeneralPreferencesPanel.maxCharNumbersInValueOfPopup=Maximum characters to display in value popup (0 for no limit):
27+
GeneralPreferencesPanel.value.popup.title=Table cell data value popup
2628
GeneralPreferencesPanel.showSessionStartupTimeHint=Show Session startup time hint
2729
GeneralPreferencesPanel.showtooltips=Show Tooltips
2830
GeneralPreferencesPanel.showwindowcontents=Show Window Contents While Dragging

sql12/core/src/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferences.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public interface IPropertyNames
114114
String MAX_COLUMN_ADJUST_LENGTH_DEFINED = "maxColumnAdjustLengthDefined";
115115
String MAX_COLUMN_ADJUST_LENGTH = "maxColumnAdjustLength";
116116
String REMEMBER_VALUE_OF_POPUP = "rememberValueOfPopup";
117+
String MAX_CHARS_IN_VALUE_POPUP = "maxCharsInValuePopup";
117118
String RELOAD_SQL_CONTENTS = "ReloadSqlContents";
118119
String MAX_TEXTOUTPUT_COLUMN_WIDTH = "MaxTextOutputColumnWidth";
119120
String NOTIFY_EXTERNAL_FILE_CHANGES = "NotifyExternalFileChanges";
@@ -303,6 +304,8 @@ public interface IJdbcDebugTypes
303304

304305
private boolean _rememberValueOfPopup = false;
305306

307+
private int _maxCharsInValuePopup = 10000;
308+
306309
private boolean _reloadSqlContents;
307310

308311
private int _maxTextOutputColumnWidth = IDataSetViewer.MAX_COLUMN_WIDTH;
@@ -1371,6 +1374,17 @@ public void setRememberValueOfPopup(boolean b)
13711374
_rememberValueOfPopup = b;
13721375
}
13731376

1377+
public int getMaxCharsInValuePopup()
1378+
{
1379+
return _maxCharsInValuePopup;
1380+
}
1381+
1382+
public void setMaxCharsInValuePopup(int maxCharsInValuePopup)
1383+
{
1384+
_maxCharsInValuePopup = maxCharsInValuePopup;
1385+
}
1386+
1387+
13741388
public boolean isReloadSqlContents()
13751389
{
13761390
return _reloadSqlContents;

sql12/core/src/net/sourceforge/squirrel_sql/client/preferences/SquirrelPreferencesBeanInfo.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public PropertyDescriptor[] getPropertyDescriptors()
112112
prop(MAX_COLUMN_ADJUST_LENGTH, SquirrelPreferences.class, "getMaxColumnAdjustLength", "setMaxColumnAdjustLength"),
113113

114114
prop(REMEMBER_VALUE_OF_POPUP, SquirrelPreferences.class, "isRememberValueOfPopup", "setRememberValueOfPopup"),
115+
prop(MAX_CHARS_IN_VALUE_POPUP, SquirrelPreferences.class, "getMaxCharsInValuePopup", "setMaxCharsInValuePopup"),
115116

116117
prop(RELOAD_SQL_CONTENTS, SquirrelPreferences.class, "isReloadSqlContents", "setReloadSqlContents"),
117118

sql12/core/src/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/BigDataRenderResult.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import net.sourceforge.squirrel_sql.client.Main;
44
import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition;
5+
import net.sourceforge.squirrel_sql.fw.datasetviewer.TableNameAccess;
56
import net.sourceforge.squirrel_sql.fw.util.StringManager;
67
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
78
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
@@ -10,12 +11,9 @@
1011
public class BigDataRenderResult
1112
{
1213

13-
public static final int MAX_BYTES_IN_CELL_DETAIL_DISPLAY = 10000;
14-
1514
private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(DataTypeBinary.class);
1615
private static ILogger s_log = LoggerController.createLogger(BigDataRenderResult.class);
1716

18-
1917
private final String _renderResult;
2018
private final boolean _maxBytesReached;
2119

@@ -37,16 +35,26 @@ public boolean isMaxBytesReached()
3735

3836
public static void showMaxBytesReachedMessage(ColumnDisplayDefinition colDef)
3937
{
40-
String msg = s_stringMgr.getString("BinaryTypeRenderResult.MaxBytesReached", MAX_BYTES_IN_CELL_DETAIL_DISPLAY, colDef.getFullTableColumnName(), colDef.getSqlTypeName());
38+
String msg = s_stringMgr.getString("BinaryTypeRenderResult.MaxBytesReached", getMaxCharsInValuePopup(), TableNameAccess.getTableName(colDef), colDef.getSqlTypeName());
4139
s_log.warn(msg);
4240
Main.getApplication().getMessageHandler().showWarningMessage(msg);
4341
}
4442

4543
public static void showStringLenReachedMessage(ColumnDisplayDefinition colDef)
4644
{
47-
String msg = s_stringMgr.getString("BinaryTypeRenderResult.StringLenReached", MAX_BYTES_IN_CELL_DETAIL_DISPLAY, colDef.getFullTableColumnName(), colDef.getSqlTypeName());
45+
String msg = s_stringMgr.getString("BinaryTypeRenderResult.StringLenReached", getMaxCharsInValuePopup(), TableNameAccess.getTableName(colDef), colDef.getSqlTypeName());
4846
s_log.warn(msg);
4947
Main.getApplication().getMessageHandler().showWarningMessage(msg);
5048
}
5149

50+
public static int getMaxCharsInValuePopup()
51+
{
52+
int ret = Main.getApplication().getSquirrelPreferences().getMaxCharsInValuePopup();
53+
if(0 == ret)
54+
{
55+
return Integer.MAX_VALUE;
56+
}
57+
58+
return ret;
59+
}
5260
}

sql12/core/src/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBinary.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ public JTextArea getJTextArea(Object value, ColumnDisplayDefinition colDef) {
282282

283283
// value is a simple string representation of the data,
284284
// the same one used in Text and in-cell operations.
285-
BigDataRenderResult renderResult = _renderObject(value, BigDataRenderResult.MAX_BYTES_IN_CELL_DETAIL_DISPLAY);
285+
BigDataRenderResult renderResult = _renderObject(value, BigDataRenderResult.getMaxCharsInValuePopup());
286286

287287
if(renderResult.isMaxBytesReached())
288288
{

sql12/core/src/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeBlob.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,14 +139,14 @@ private static String renderForTextArea(Object value, ColumnDisplayDefinition co
139139
Byte[] useValue;
140140
if(value instanceof BlobDescriptor)
141141
{
142-
useValue = Utilities.toBoxedByteArray(((BlobDescriptor)value).getData(), BigDataRenderResult.MAX_BYTES_IN_CELL_DETAIL_DISPLAY);
142+
useValue = Utilities.toBoxedByteArray(((BlobDescriptor)value).getData(), BigDataRenderResult.getMaxCharsInValuePopup());
143143
}
144144
else
145145
{
146-
useValue = Utilities.toBoxedByteArray(value, BigDataRenderResult.MAX_BYTES_IN_CELL_DETAIL_DISPLAY);
146+
useValue = Utilities.toBoxedByteArray(value, BigDataRenderResult.getMaxCharsInValuePopup());
147147
}
148148

149-
if(null != useValue && useValue.length == BigDataRenderResult.MAX_BYTES_IN_CELL_DETAIL_DISPLAY)
149+
if(null != useValue && useValue.length == BigDataRenderResult.getMaxCharsInValuePopup())
150150
{
151151
BigDataRenderResult.showMaxBytesReachedMessage(colDef);
152152
}

sql12/core/src/net/sourceforge/squirrel_sql/fw/datasetviewer/cellcomponent/DataTypeClob.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,9 +345,9 @@ public JTextArea getJTextArea(Object value, ColumnDisplayDefinition colDef)
345345
// use the _renderer object to do the rendering.
346346
String renderedValue = DefaultColumnRenderer.renderObject(value);
347347

348-
if(renderedValue.length() > BigDataRenderResult.MAX_BYTES_IN_CELL_DETAIL_DISPLAY)
348+
if(renderedValue.length() > BigDataRenderResult.getMaxCharsInValuePopup())
349349
{
350-
renderedValue = renderedValue.substring(0, BigDataRenderResult.MAX_BYTES_IN_CELL_DETAIL_DISPLAY);
350+
renderedValue = renderedValue.substring(0, BigDataRenderResult.getMaxCharsInValuePopup());
351351
BigDataRenderResult.showStringLenReachedMessage(colDef);
352352
}
353353

0 commit comments

Comments
 (0)