/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
* Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.ui.preferences;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.controls.resultset.ValueFormatSelector;
import org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.Spreadsheet;
import org.jkiss.dbeaver.utils.PrefUtils;
import org.jkiss.utils.CommonUtils;
import java.util.Locale;
/**
* PrefPageResultSetPresentation
*/
public class PrefPageResultSetPresentation extends TargetPrefPage
{
public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.main.resultset.presentation"; //$NON-NLS-1$
private Button gridShowOddRows;
private Button gridShowCellIcons;
private Combo gridDoubleClickBehavior;
private Button autoSwitchMode;
private Button showDescription;
private Spinner textMaxColumnSize;
private ValueFormatSelector textValueFormat;
public PrefPageResultSetPresentation()
{
super();
}
@Override
protected boolean hasDataSourceSpecificOptions(DBPDataSourceContainer dataSourceDescriptor)
{
DBPPreferenceStore store = dataSourceDescriptor.getPreferenceStore();
return
store.contains(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS) ||
store.contains(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS) ||
store.contains(DBeaverPreferences.RESULT_SET_SHOW_DESCRIPTION) ||
store.contains(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK) ||
store.contains(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE) ||
store.contains(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE) ||
store.contains(DBeaverPreferences.RESULT_TEXT_VALUE_FORMAT)
;
}
@Override
protected boolean supportsDataSourceSpecificOptions()
{
return true;
}
@Override
protected Control createPreferenceContent(Composite parent)
{
Composite composite = UIUtils.createPlaceholder(parent, 1, 5);
{
Group uiGroup = UIUtils.createControlGroup(composite, "Common", 1, SWT.NONE, 0);
autoSwitchMode = UIUtils.createCheckbox(uiGroup, "Switch to record/grid mode on single/multiple row(s)", false);
showDescription = UIUtils.createCheckbox(uiGroup, "Show column description in header", false);
}
{
Group uiGroup = UIUtils.createControlGroup(composite, "Grid", 2, SWT.NONE, 0);
gridShowOddRows = UIUtils.createLabelCheckbox(uiGroup, "Mark odd/even rows", false);
gridShowCellIcons = UIUtils.createLabelCheckbox(uiGroup, "Show cell icons", false);
gridDoubleClickBehavior = UIUtils.createLabelCombo(uiGroup, "Double-click behavior", SWT.READ_ONLY);
gridDoubleClickBehavior.add("None", Spreadsheet.DoubleClickBehavior.NONE.ordinal());
gridDoubleClickBehavior.add("Editor", Spreadsheet.DoubleClickBehavior.EDITOR.ordinal());
gridDoubleClickBehavior.add("Inline Editor", Spreadsheet.DoubleClickBehavior.INLINE_EDITOR.ordinal());
}
{
Group uiGroup = UIUtils.createControlGroup(composite, "Plain text", 2, SWT.NONE, 0);
textMaxColumnSize = UIUtils.createLabelSpinner(uiGroup, "Maximum column length", 0, 10, Integer.MAX_VALUE);
textValueFormat = new ValueFormatSelector(uiGroup);
}
return composite;
}
@Override
protected void loadPreferences(DBPPreferenceStore store)
{
try {
gridShowOddRows.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS));
gridShowCellIcons.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS));
gridDoubleClickBehavior.select(
Spreadsheet.DoubleClickBehavior.valueOf(store.getString(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK)).ordinal());
autoSwitchMode.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE));
showDescription.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_DESCRIPTION));
textMaxColumnSize.setSelection(store.getInt(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE));
textValueFormat.select(DBDDisplayFormat.safeValueOf(store.getString(DBeaverPreferences.RESULT_TEXT_VALUE_FORMAT)));
} catch (Exception e) {
log.warn(e);
}
}
@Override
protected void savePreferences(DBPPreferenceStore store)
{
try {
store.setValue(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS, gridShowOddRows.getSelection());
store.setValue(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS, gridShowCellIcons.getSelection());
store.setValue(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK, CommonUtils.fromOrdinal(Spreadsheet.DoubleClickBehavior.class, gridDoubleClickBehavior.getSelectionIndex()).name());
store.setValue(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE, autoSwitchMode.getSelection());
store.setValue(DBeaverPreferences.RESULT_SET_SHOW_DESCRIPTION, showDescription.getSelection());
store.setValue(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE, textMaxColumnSize.getSelection());
store.setValue(DBeaverPreferences.RESULT_TEXT_VALUE_FORMAT, textValueFormat.getSelection().name());
} catch (Exception e) {
log.warn(e);
}
PrefUtils.savePreferenceStore(store);
}
@Override
protected void clearPreferences(DBPPreferenceStore store)
{
store.setToDefault(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS);
store.setToDefault(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS);
store.setToDefault(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK);
store.setToDefault(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE);
store.setToDefault(DBeaverPreferences.RESULT_SET_SHOW_DESCRIPTION);
store.setToDefault(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE);
store.setToDefault(DBeaverPreferences.RESULT_TEXT_VALUE_FORMAT);
}
@Override
protected String getPropertyPageID()
{
return PAGE_ID;
}
}