/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
* Copyright (C) 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.layout.GridData;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverActivator;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog;
import org.jkiss.dbeaver.utils.PrefUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
/**
* PrefPageConfirmations
*/
public class PrefPageConfirmations extends AbstractPrefPage implements IWorkbenchPreferencePage
{
public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.main.confirmations"; //$NON-NLS-1$
private Map<String, Combo> confirmChecks = new HashMap<>();
@Override
public void init(IWorkbench workbench)
{
}
@Override
protected Control createContents(Composite parent)
{
Composite composite = UIUtils.createPlaceholder(parent, 1);
Composite filterSettings = UIUtils.createPlaceholder(composite, 1, 5);
{
Group groupObjects = UIUtils.createControlGroup(filterSettings, CoreMessages.pref_page_confirmations_group_general_actions, 2, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_EXIT);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_ORDER_RESULTSET);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_RS_EDIT_CLOSE);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_RS_FETCH_ALL);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_TXN_DISCONNECT);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_DRIVER_DOWNLOAD);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_VERSION_CHECK);
}
{
Group groupObjects = UIUtils.createControlGroup(filterSettings, CoreMessages.pref_page_confirmations_group_object_editor, 2, GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING, 0);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_ENTITY_EDIT_CLOSE);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_ENTITY_DELETE);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_ENTITY_REJECT);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_ENTITY_REVERT);
createConfirmCheckbox(groupObjects, DBeaverPreferences.CONFIRM_KEEP_STATEMENT_OPEN);
}
performDefaults();
return composite;
}
private void createConfirmCheckbox(Composite parent, String id)
{
ResourceBundle bundle = DBeaverActivator.getCoreResourceBundle();
String labelKey = ConfirmationDialog.getResourceKey(id, ConfirmationDialog.RES_KEY_TITLE);
UIUtils.createControlLabel(parent, bundle.getString(labelKey));
Combo combo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY);
//UIUtils.createCheckbox(parent, bundle.getString(labelKey), false);
combo.setItems(new String[] {CoreMessages.pref_page_confirmations_combo_always, CoreMessages.pref_page_confirmations_combo_never, CoreMessages.pref_page_confirmations_combo_prompt} );
confirmChecks.put(id, combo);
}
@Override
protected void performDefaults()
{
DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore();
for (Map.Entry<String, Combo> entry : confirmChecks.entrySet()) {
String id = entry.getKey();
String value = store.getString(ConfirmationDialog.PREF_KEY_PREFIX + id);
if (ConfirmationDialog.ALWAYS.equals(value)) {
entry.getValue().select(0);
} else if (ConfirmationDialog.NEVER.equals(value)) {
entry.getValue().select(1);
} else {
entry.getValue().select(2);
}
}
super.performDefaults();
}
@Override
public boolean performOk()
{
DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore();
for (Map.Entry<String, Combo> entry : confirmChecks.entrySet()) {
String id = entry.getKey();
int selectionIndex = entry.getValue().getSelectionIndex();
if (selectionIndex == 2) {
store.setToDefault(ConfirmationDialog.PREF_KEY_PREFIX + id);
} else {
store.setValue(ConfirmationDialog.PREF_KEY_PREFIX + id, selectionIndex == 0 ? ConfirmationDialog.ALWAYS : ConfirmationDialog.NEVER);
}
}
PrefUtils.savePreferenceStore(store);
return super.performOk();
}
}