From 55bb48484304bc29ed0fdfc31986a3ed9b10de7a Mon Sep 17 00:00:00 2001 From: jurgen Date: Wed, 24 Jun 2015 09:07:55 +0000 Subject: [PATCH] Preference store usage redesign (get rid of jface) Former-commit-id: a9f690885cd5cf82e64fc23452dc0099012d3b48 --- .../ui/search/DatabaseSearchDialog.java | 6 +- .../jkiss/dbeaver/core/DBeaverActivator.java | 18 +- .../org/jkiss/dbeaver/core/DBeaverCore.java | 7 +- .../core/DBeaverPreferencesInitializer.java | 15 +- .../dbeaver/model/DBPPreferenceListener.java | 8 +- .../dbeaver/model/DBPPreferenceStore.java | 5 + .../model/data/DBDDataFormatterProfile.java | 4 +- .../impl/net/GlobalProxyAuthenticator.java | 6 +- .../dbeaver/model/impl/net/SSHTunnelImpl.java | 4 +- .../model/struct/DBSDataSourceContainer.java | 3 +- .../registry/DataFormatterProfile.java | 12 +- .../registry/DataSourceDescriptor.java | 3 +- .../dbeaver/registry/DriverDescriptor.java | 12 +- .../jkiss/dbeaver/runtime/RuntimeUtils.java | 25 +- .../preferences/AbstractPreferenceStore.java | 21 +- .../preferences/BundlePreferenceStore.java | 90 ++++++- .../preferences/SimplePreferenceStore.java | 66 ++--- .../runtime/qm/DefaultEventFilter.java | 4 +- .../dbeaver/runtime/qm/QMLogFileWriter.java | 9 +- .../dbeaver/runtime/sql/SQLQueryJob.java | 8 +- .../ui/controls/querylog/QueryLogViewer.java | 15 +- .../resultset/IResultSetController.java | 3 +- .../controls/resultset/ResultSetViewer.java | 5 +- .../spreadsheet/SpreadsheetPresentation.java | 12 +- .../ui/dialogs/ConfirmationDialog.java | 7 +- .../ui/dialogs/data/CursorViewDialog.java | 3 +- .../ui/editors/binary/BinaryEditor.java | 17 +- .../binary/pref/HexPreferencesPage.java | 5 +- .../dbeaver/ui/editors/sql/SQLEditor.java | 7 +- .../dbeaver/ui/editors/sql/SQLEditorBase.java | 9 +- .../ui/editors/sql/SQLEditorInput.java | 8 +- .../SQLEditorSourceViewerConfiguration.java | 13 +- .../sql/indent/SQLAutoIndentStrategy.java | 6 +- .../indent/SQLCommentAutoIndentStrategy.java | 7 +- .../sql/syntax/SQLCompletionProcessor.java | 7 +- .../sql/templates/SQLTemplateStore.java | 8 +- .../sql/templates/SQLTemplatesPage.java | 3 +- .../ui/editors/text/BaseTextEditor.java | 3 +- .../ui/editors/text/LineNumberColumn.java | 16 +- .../editors/text/PropertyEventDispatcher.java | 22 +- .../DataSourceManagementToolbar.java | 17 +- .../ui/preferences/PrefPageConfirmations.java | 6 +- .../ui/preferences/PrefPageDataEditor.java | 8 +- .../ui/preferences/PrefPageDataFormat.java | 10 +- .../preferences/PrefPageDatabaseGeneral.java | 8 +- .../ui/preferences/PrefPageDrivers.java | 8 +- .../ui/preferences/PrefPageMetaData.java | 8 +- .../ui/preferences/PrefPageQueryManager.java | 6 +- .../ui/preferences/PrefPageResources.java | 6 +- .../ui/preferences/PrefPageResultSet.java | 8 +- .../ui/preferences/PrefPageSQLEditor.java | 12 +- .../ui/preferences/PrefPageSQLExecute.java | 8 +- .../ui/preferences/PrefPageSQLTemplates.java | 2 +- .../preferences/PreferenceStoreDelegate.java | 228 ++++++++++++++++++ .../ui/preferences/TargetPrefPage.java | 11 +- .../properties/DataSourcePropertyFilter.java | 3 +- .../dbeaver/ui/search/AbstractSearchPage.java | 9 +- .../dbeaver/ui/search/IObjectSearchPage.java | 5 +- .../ui/search/data/SearchDataPage.java | 15 +- .../search/metadata/SearchMetadataPage.java | 8 +- .../org/jkiss/dbeaver/utils/GeneralUtils.java | 4 +- .../org/jkiss/dbeaver/ext/erd/Activator.java | 35 +-- .../ext/erd/ERDPreferencesInitializer.java | 5 +- .../erd/action/DiagramToggleGridAction.java | 4 +- .../erd/editor/ERDAttributeVisibility.java | 5 +- .../ext/erd/editor/ERDPreferencePage.java | 3 +- .../dbeaver/ext/erd/model/EntityDiagram.java | 2 +- .../ext/oracle/views/PrefPageOracle.java | 11 +- 68 files changed, 589 insertions(+), 368 deletions(-) create mode 100644 plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PreferenceStoreDelegate.java diff --git a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/ui/search/DatabaseSearchDialog.java b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/ui/search/DatabaseSearchDialog.java index de50952b90..8876083837 100644 --- a/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/ui/search/DatabaseSearchDialog.java +++ b/plugins/org.jkiss.dbeaver.core.application/src/org/jkiss/dbeaver/ui/search/DatabaseSearchDialog.java @@ -22,7 +22,6 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.dialogs.ControlEnableState; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ShellAdapter; import org.eclipse.swt.events.ShellEvent; @@ -38,6 +37,7 @@ import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBPImage; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.DBeaverIcons; @@ -97,7 +97,7 @@ public class DatabaseSearchDialog extends HelpEnabledDialog implements IObjectSe } }); //shell.setDefaultButton(searchButton); - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); providersFolder = new TabFolder(group, SWT.TOP); providersFolder.setLayoutData(new GridData(GridData.FILL_BOTH)); @@ -168,7 +168,7 @@ public class DatabaseSearchDialog extends HelpEnabledDialog implements IObjectSe public void saveState() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); store.setValue(NEW_TAB_PREF_NAME, openNewTabCheck.getSelection()); for (TabItem item : providersFolder.getItems()) { IObjectSearchPage page = (IObjectSearchPage) item.getData("page"); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java index 1d93003d37..d3e005c54f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverActivator.java @@ -23,6 +23,8 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.jkiss.dbeaver.DBeaverConstants; +import org.jkiss.dbeaver.model.DBPPreferenceStore; +import org.jkiss.dbeaver.runtime.preferences.BundlePreferenceStore; import org.osgi.framework.BundleContext; import java.io.File; @@ -41,6 +43,7 @@ public class DBeaverActivator extends AbstractUIPlugin private static DBeaverActivator instance; private ResourceBundle resourceBundle; private PrintStream debugWriter; + private DBPPreferenceStore preferences; /** * The constructor @@ -61,6 +64,7 @@ public class DBeaverActivator extends AbstractUIPlugin super.start(context); instance = this; + preferences = new BundlePreferenceStore(getBundle()); DBeaverUI.getInstance(); try { @@ -130,18 +134,8 @@ public class DBeaverActivator extends AbstractUIPlugin return getInstance().resourceBundle; } - /** - * Returns the string from the plugin's resource bundle, or 'key' if not - * found. - */ - public static String getResourceString(String key) - { - ResourceBundle bundle = getResourceBundle(); - try { - return bundle.getString(key); - } catch (MissingResourceException e) { - return key; - } + public DBPPreferenceStore getPreferences() { + return preferences; } /** diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverCore.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverCore.java index f3c243448e..e3e4fccc47 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverCore.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverCore.java @@ -20,10 +20,10 @@ package org.jkiss.dbeaver.core; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.*; -import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.DBPApplication; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.impl.net.GlobalProxyAuthenticator; import org.jkiss.dbeaver.model.impl.net.GlobalProxySelector; import org.jkiss.dbeaver.model.navigator.DBNModel; @@ -31,6 +31,7 @@ import org.jkiss.dbeaver.model.qm.QMController; import org.jkiss.dbeaver.registry.DataSourceProviderRegistry; import org.jkiss.dbeaver.registry.OSDescriptor; import org.jkiss.dbeaver.registry.ProjectRegistry; +import org.jkiss.dbeaver.runtime.preferences.BundlePreferenceStore; import org.jkiss.dbeaver.runtime.qm.QMControllerImpl; import org.jkiss.dbeaver.runtime.qm.QMLogFileWriter; import org.osgi.framework.Bundle; @@ -140,9 +141,9 @@ public class DBeaverCore implements DBPApplication { return Platform.getProduct().getName() + " " + getVersion(); } - public static IPreferenceStore getGlobalPreferenceStore() + public static DBPPreferenceStore getGlobalPreferenceStore() { - return DBeaverActivator.getInstance().getPreferenceStore(); + return DBeaverActivator.getInstance().getPreferences(); } DBeaverCore() diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java index 7ecc42c5b7..8f960d019e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java @@ -19,25 +19,24 @@ package org.jkiss.dbeaver.core; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; -import org.eclipse.core.runtime.preferences.DefaultScope; -import org.eclipse.core.runtime.preferences.IEclipsePreferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.texteditor.AbstractTextEditor; import org.jkiss.dbeaver.DBeaverConstants; import org.jkiss.dbeaver.DBeaverPreferences; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.data.DBDBinaryFormatter; import org.jkiss.dbeaver.model.data.DBDValueController; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; import org.jkiss.dbeaver.registry.DataFormatterProfile; import org.jkiss.dbeaver.registry.DriverDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; +import org.jkiss.dbeaver.runtime.preferences.BundlePreferenceStore; import org.jkiss.dbeaver.runtime.qm.QMConstants; import org.jkiss.dbeaver.runtime.qm.QMObjectType; +import org.jkiss.dbeaver.runtime.sql.SQLConstants; import org.jkiss.dbeaver.runtime.sql.SQLScriptCommitType; import org.jkiss.dbeaver.runtime.sql.SQLScriptErrorHandling; import org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.Spreadsheet; import org.jkiss.dbeaver.ui.editors.binary.HexEditControl; -import org.jkiss.dbeaver.runtime.sql.SQLConstants; import org.jkiss.dbeaver.ui.editors.sql.SQLEditorInput; import org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants; import org.jkiss.dbeaver.ui.views.navigator.database.NavigatorViewBase; @@ -54,16 +53,10 @@ public class DBeaverPreferencesInitializer extends AbstractPreferenceInitializer @Override public void initializeDefaultPreferences() { - IEclipsePreferences node = DefaultScope.INSTANCE.getNode(DBeaverConstants.PLUGIN_ID); - boolean isMac = Platform.getOS().toLowerCase().contains("macos"); // Init default preferences - IPreferenceStore store = DBeaverActivator.getInstance().getPreferenceStore(); - { - File driversHome = DriverDescriptor.getCustomDriversHome(); - System.setProperty(DBeaverConstants.PROP_DRIVERS_LOCATION, driversHome.getAbsolutePath()); - } + DBPPreferenceStore store = new BundlePreferenceStore(DBeaverActivator.getInstance().getBundle()); // Agent RuntimeUtils.setDefaultPreferenceValue(store, DBeaverPreferences.AGENT_ENABLED, true); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceListener.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceListener.java index 0b8d166c11..d0a545c73c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceListener.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceListener.java @@ -5,14 +5,14 @@ import java.util.EventObject; public interface DBPPreferenceListener extends EventListener { - class PropertyChangeEvent extends EventObject { + class PreferenceChangeEvent extends EventObject { private String propertyName; private Object oldValue; private Object newValue; - public PropertyChangeEvent(Object source, String property, Object oldValue, - Object newValue) { + public PreferenceChangeEvent(Object source, String property, Object oldValue, + Object newValue) { super(source); this.propertyName = property; this.oldValue = oldValue; @@ -31,5 +31,5 @@ public interface DBPPreferenceListener extends EventListener { } - void propertyChange(PropertyChangeEvent event); + void preferenceChange(PreferenceChangeEvent event); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceStore.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceStore.java index 5071cced2a..c884a7749c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceStore.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/DBPPreferenceStore.java @@ -1,5 +1,7 @@ package org.jkiss.dbeaver.model; +import java.io.IOException; + public interface DBPPreferenceStore { boolean contains(String name); @@ -39,5 +41,8 @@ public interface DBPPreferenceStore { void addPropertyChangeListener(DBPPreferenceListener listener); void removePropertyChangeListener(DBPPreferenceListener listener); + void firePropertyChangeEvent(String name, Object oldValue, Object newValue); + + void save() throws IOException; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/data/DBDDataFormatterProfile.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/data/DBDDataFormatterProfile.java index 0f6b4efe3e..3a4b8857f4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/data/DBDDataFormatterProfile.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/data/DBDDataFormatterProfile.java @@ -18,7 +18,7 @@ package org.jkiss.dbeaver.model.data; -import org.eclipse.jface.preference.IPreferenceStore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import java.io.IOException; import java.util.Locale; @@ -29,7 +29,7 @@ import java.util.Map; */ public interface DBDDataFormatterProfile { - IPreferenceStore getPreferenceStore(); + DBPPreferenceStore getPreferenceStore(); String getProfileName(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/GlobalProxyAuthenticator.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/GlobalProxyAuthenticator.java index 886a4efe05..e51b7e6c7d 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/GlobalProxyAuthenticator.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/GlobalProxyAuthenticator.java @@ -18,12 +18,13 @@ package org.jkiss.dbeaver.model.impl.net; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.widgets.Shell; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.model.DBIcon; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration; import org.jkiss.dbeaver.model.net.DBWHandlerType; @@ -31,7 +32,6 @@ import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; import org.jkiss.dbeaver.registry.encode.EncryptionException; import org.jkiss.dbeaver.registry.encode.SecuredPasswordEncrypter; import org.jkiss.dbeaver.runtime.RunnableWithResult; -import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.connection.BaseAuthDialog; @@ -51,7 +51,7 @@ public class GlobalProxyAuthenticator extends Authenticator { @Override protected PasswordAuthentication getPasswordAuthentication() { { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); // 1. Check for drivers download proxy final String proxyHost = store.getString(DBeaverPreferences.UI_PROXY_HOST); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/SSHTunnelImpl.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/SSHTunnelImpl.java index ba96958e98..b9be4f965e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/SSHTunnelImpl.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/impl/net/SSHTunnelImpl.java @@ -18,12 +18,12 @@ package org.jkiss.dbeaver.model.impl.net; import com.jcraft.jsch.*; -import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.DBPConnectionInfo; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration; import org.jkiss.dbeaver.model.net.DBWTunnel; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; @@ -157,7 +157,7 @@ public class SSHTunnelImpl implements DBWTunnel { private int findFreePort() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); int minPort = store.getInt(DBeaverPreferences.NET_TUNNEL_PORT_MIN); int maxPort = store.getInt(DBeaverPreferences.NET_TUNNEL_PORT_MAX); int portRange = Math.abs(maxPort - minPort); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java index 22033ad17d..7a4f0c1bf7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/model/struct/DBSDataSourceContainer.java @@ -17,7 +17,6 @@ */ package org.jkiss.dbeaver.model.struct; -import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; @@ -130,7 +129,7 @@ public interface DBSDataSourceContainer extends DBSObject, DBDPreferences * Preference store associated with this datasource * @return preference store */ - IPreferenceStore getPreferenceStore(); + DBPPreferenceStore getPreferenceStore(); @NotNull DBPDataSourceRegistry getRegistry(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataFormatterProfile.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataFormatterProfile.java index 3d2cd25d1c..f427a28573 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataFormatterProfile.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataFormatterProfile.java @@ -17,12 +17,12 @@ */ package org.jkiss.dbeaver.registry; -import org.eclipse.jface.preference.IPreferenceStore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.data.DBDDataFormatter; import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; import org.jkiss.dbeaver.runtime.RuntimeUtils; -import org.jkiss.dbeaver.ui.properties.PropertyDescriptorEx; import org.jkiss.dbeaver.runtime.preferences.SimplePreferenceStore; +import org.jkiss.dbeaver.ui.properties.PropertyDescriptorEx; import org.jkiss.utils.CommonUtils; import java.io.IOException; @@ -41,12 +41,12 @@ public class DataFormatterProfile implements DBDDataFormatterProfile { public static final String DATAFORMAT_PREFIX = "dataformat."; //$NON-NLS-1$ public static final String DATAFORMAT_TYPE_PREFIX = DATAFORMAT_PREFIX + "type."; //$NON-NLS-1$ - private IPreferenceStore store; + private DBPPreferenceStore store; private String name; private Locale locale; private Map> properties = new HashMap>(); - DataFormatterProfile(String profileName, IPreferenceStore store) + DataFormatterProfile(String profileName, DBPPreferenceStore store) { this.name = profileName; this.store = store; @@ -108,7 +108,7 @@ public class DataFormatterProfile implements DBDDataFormatterProfile { } @Override - public IPreferenceStore getPreferenceStore() + public DBPPreferenceStore getPreferenceStore() { return store; } @@ -213,7 +213,7 @@ public class DataFormatterProfile implements DBDDataFormatterProfile { return formatter; } - public static void initDefaultPreferences(IPreferenceStore store, Locale locale) + public static void initDefaultPreferences(DBPPreferenceStore store, Locale locale) { for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) { Map defaultProperties = formatter.getSample().getDefaultProperties(locale); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptor.java index a42d0e869f..87ca27194e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DataSourceDescriptor.java @@ -55,7 +55,6 @@ import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; import org.jkiss.dbeaver.ui.dialogs.connection.EditConnectionDialog; import org.jkiss.dbeaver.ui.dialogs.connection.EditConnectionWizard; import org.jkiss.dbeaver.ui.properties.PropertyCollector; -import org.jkiss.dbeaver.runtime.preferences.SimplePreferenceStore; import org.jkiss.utils.CommonUtils; import java.lang.reflect.InvocationTargetException; @@ -998,7 +997,7 @@ public class DataSourceDescriptor } @Override - public SimplePreferenceStore getPreferenceStore() + public DataSourcePreferenceStore getPreferenceStore() { return preferenceStore; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java index c29a1f68f1..060be70ac6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/DriverDescriptor.java @@ -22,11 +22,11 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.window.IShellProvider; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.DBeaverConstants; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.core.DBeaverCore; @@ -38,7 +38,6 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableContext; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; import org.jkiss.dbeaver.runtime.RuntimeUtils; -import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.AcceptLicenseDialog; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; @@ -124,6 +123,11 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver private transient boolean isFailed = false; + static { + File driversHome = DriverDescriptor.getCustomDriversHome(); + System.setProperty(DBeaverConstants.PROP_DRIVERS_LOCATION, driversHome.getAbsolutePath()); + } + DriverDescriptor(DataSourceProviderDescriptor providerDescriptor, String id) { super(providerDescriptor.getPluginId()); @@ -972,7 +976,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver private boolean acceptLicense(String licenseText) { // Check registry - IPreferenceStore prefs = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore prefs = DBeaverCore.getGlobalPreferenceStore(); String acceptedStr = prefs.getString(LICENSE_ACCEPT_KEY + getId()); if (!CommonUtils.isEmpty(acceptedStr)) { return true; @@ -1018,7 +1022,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver private void downloadLibraryFile(DBRProgressMonitor monitor, DriverFileDescriptor file) throws IOException, InterruptedException { - IPreferenceStore prefs = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore prefs = DBeaverCore.getGlobalPreferenceStore(); String proxyHost = prefs.getString(DBeaverPreferences.UI_PROXY_HOST); Proxy proxy = null; if (!CommonUtils.isEmpty(proxyHost)) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/RuntimeUtils.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/RuntimeUtils.java index 94c4d3bec5..da2deabf8c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/RuntimeUtils.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/RuntimeUtils.java @@ -24,13 +24,12 @@ import org.eclipse.core.runtime.*; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.preference.IPersistentPreferenceStore; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.program.Program; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableContext; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; @@ -189,27 +188,23 @@ public class RuntimeUtils { }); } - public static void savePreferenceStore(IPreferenceStore store) + public static void savePreferenceStore(DBPPreferenceStore store) { - if (store instanceof IPersistentPreferenceStore) { - try { - ((IPersistentPreferenceStore) store).save(); - } catch (IOException e) { - log.warn(e); - } - } else { - log.debug("Can't save preference store '" + store + "' - not a persistent one"); //$NON-NLS-1$ + try { + store.save(); + } catch (IOException e) { + log.warn(e); } } - public static void setDefaultPreferenceValue(IPreferenceStore store, String name, Object value) + public static void setDefaultPreferenceValue(DBPPreferenceStore store, String name, Object value) { if (CommonUtils.isEmpty(store.getDefaultString(name))) { store.setDefault(name, value.toString()); } } - public static Object getPreferenceValue(IPreferenceStore store, String propName, Class valueType) + public static Object getPreferenceValue(DBPPreferenceStore store, String propName, Class valueType) { try { if (valueType == null || CharSequence.class.isAssignableFrom(valueType)) { @@ -241,7 +236,7 @@ public class RuntimeUtils { return CommonUtils.isEmpty(string) ? null : string; } - public static void setPreferenceValue(IPreferenceStore store, String propName, Object value) + public static void setPreferenceValue(DBPPreferenceStore store, String propName, Object value) { if (value == null) { return; @@ -263,7 +258,7 @@ public class RuntimeUtils { } } - public static void setPreferenceDefaultValue(IPreferenceStore store, String propName, Object value) + public static void setPreferenceDefaultValue(DBPPreferenceStore store, String propName, Object value) { if (value == null) { return; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/AbstractPreferenceStore.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/AbstractPreferenceStore.java index 7a1caca9b5..a2d48d88fe 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/AbstractPreferenceStore.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/AbstractPreferenceStore.java @@ -1,10 +1,6 @@ package org.jkiss.dbeaver.runtime.preferences; import org.eclipse.core.commands.common.EventManager; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.util.SafeRunnable; import org.jkiss.dbeaver.model.DBPPreferenceListener; import org.jkiss.dbeaver.model.DBPPreferenceStore; @@ -19,24 +15,17 @@ public abstract class AbstractPreferenceStore extends EventManager implements DB public static final String TRUE = "true"; //$NON-NLS-1$ public static final String FALSE = "false"; //$NON-NLS-1$ - public void firePropertyChangeEvent(String name, Object oldValue, - Object newValue) + @Override + public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) { final Object[] finalListeners = getListeners(); // Do we need to fire an event. if (finalListeners.length > 0 && (oldValue == null || !oldValue.equals(newValue))) { - final PropertyChangeEvent pe = new PropertyChangeEvent(this, name, - oldValue, newValue); + final DBPPreferenceListener.PreferenceChangeEvent pe = new DBPPreferenceListener.PreferenceChangeEvent(this, name, oldValue, newValue); for (int i = 0; i < finalListeners.length; ++i) { - final IPropertyChangeListener l = (IPropertyChangeListener) finalListeners[i]; - SafeRunnable.run(new SafeRunnable(JFaceResources.getString("PreferenceStore.changeError")) //$NON-NLS-1$ - { - @Override - public void run() { - l.propertyChange(pe); - } - }); + final DBPPreferenceListener l = (DBPPreferenceListener) finalListeners[i]; + l.preferenceChange(pe); } } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/BundlePreferenceStore.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/BundlePreferenceStore.java index 76a7062ec6..13753b101f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/BundlePreferenceStore.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/BundlePreferenceStore.java @@ -3,9 +3,13 @@ package org.jkiss.dbeaver.runtime.preferences; import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.InstanceScope; +import org.jkiss.utils.CommonUtils; import org.osgi.framework.Bundle; +import org.osgi.service.prefs.BackingStoreException; -public class BundlePreferenceStore extends AbstractPreferenceStore{ +import java.io.IOException; + +public class BundlePreferenceStore extends AbstractPreferenceStore { private final IEclipsePreferences defaultProps; private final IEclipsePreferences props; @@ -147,36 +151,108 @@ public class BundlePreferenceStore extends AbstractPreferenceStore{ @Override public void setToDefault(String name) { - + String oldValue = getString(name); + String defaultValue = getDefaultString(name); + props.remove(name); + if (!CommonUtils.equalObjects(oldValue, defaultValue)) { + dirty = true; + firePropertyChangeEvent(name, oldValue, defaultValue); + } } @Override public void setValue(String name, double value) { - + double oldValue = getDouble(name); + if (oldValue == value) { + return; + } + if (getDefaultDouble(name) == value) { + props.remove(name); + } else { + props.putDouble(name, value); + } + dirty = true; + firePropertyChangeEvent(name, new Double(oldValue), new Double(value)); } @Override public void setValue(String name, float value) { - + float oldValue = getFloat(name); + if (oldValue == value) { + return; + } + if (getDefaultFloat(name) == value) { + props.remove(name); + } else { + props.putFloat(name, value); + } + dirty = true; + firePropertyChangeEvent(name, new Float(oldValue), new Float(value)); } @Override public void setValue(String name, int value) { - + int oldValue = getInt(name); + if (oldValue == value) { + return; + } + if (getDefaultInt(name) == value) { + props.remove(name); + } else { + props.putInt(name, value); + } + dirty = true; + firePropertyChangeEvent(name, new Integer(oldValue), new Integer(value)); } @Override public void setValue(String name, long value) { - + long oldValue = getLong(name); + if (oldValue == value) { + return; + } + if (getDefaultLong(name) == value) { + props.remove(name); + } else { + props.putLong(name, value); + } + dirty = true; + firePropertyChangeEvent(name, new Long(oldValue), new Long(value)); } @Override public void setValue(String name, String value) { - + if (getDefaultString(name).equals(value)) { + props.remove(name); + } else { + props.put(name, value); + } + dirty = true; } @Override public void setValue(String name, boolean value) { + boolean oldValue = getBoolean(name); + if (oldValue == value) { + return; + } + if (getDefaultBoolean(name) == value) { + props.remove(name); + } else { + props.putBoolean(name, value); + } + dirty = true; + firePropertyChangeEvent(name, oldValue ? Boolean.TRUE : Boolean.FALSE, value ? Boolean.TRUE : Boolean.FALSE); + } + @Override + public void save() throws IOException { + try { + props.flush(); + defaultProps.flush(); + } catch (BackingStoreException e) { + throw new IOException(e); + } } + } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/SimplePreferenceStore.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/SimplePreferenceStore.java index ad492042b4..de9528274f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/SimplePreferenceStore.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/preferences/SimplePreferenceStore.java @@ -17,17 +17,12 @@ */ package org.jkiss.dbeaver.runtime.preferences; -import org.eclipse.core.commands.common.EventManager; -import org.eclipse.jface.preference.IPersistentPreferenceStore; import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.util.SafeRunnable; +import org.jkiss.dbeaver.model.DBPPreferenceListener; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.utils.CommonUtils; -import java.io.IOException; -import java.util.HashMap; + import java.util.HashMap; import java.util.Map; /** @@ -36,8 +31,8 @@ import java.util.Map; * However, save will always use THIS store, not parent. * Originally copied from standard PreferenceStore class */ -public abstract class SimplePreferenceStore extends EventManager implements IPersistentPreferenceStore, IPropertyChangeListener { - private IPreferenceStore parentStore; +public abstract class SimplePreferenceStore extends AbstractPreferenceStore implements DBPPreferenceListener { + private DBPPreferenceStore parentStore; private Map properties; private Map defaultProperties; private boolean dirty = false; @@ -48,7 +43,7 @@ public abstract class SimplePreferenceStore extends EventManager implements IPer properties = new HashMap(); } - protected SimplePreferenceStore(IPreferenceStore parentStore) + protected SimplePreferenceStore(DBPPreferenceStore parentStore) { this(); this.parentStore = parentStore; @@ -57,7 +52,7 @@ public abstract class SimplePreferenceStore extends EventManager implements IPer } } - public IPreferenceStore getParentStore() + public DBPPreferenceStore getParentStore() { return parentStore; } @@ -88,11 +83,17 @@ public abstract class SimplePreferenceStore extends EventManager implements IPer } @Override - public void addPropertyChangeListener(IPropertyChangeListener listener) + public void addPropertyChangeListener(DBPPreferenceListener listener) { addListenerObject(listener); } + @Override + public void removePropertyChangeListener(DBPPreferenceListener listener) + { + removeListenerObject(listener); + } + @Override public boolean contains(String name) { @@ -107,18 +108,11 @@ public abstract class SimplePreferenceStore extends EventManager implements IPer // Do we need to fire an event. if (finalListeners.length > 0 && (oldValue == null || !oldValue.equals(newValue))) { - final PropertyChangeEvent pe = new PropertyChangeEvent(this, name, + final PreferenceChangeEvent pe = new PreferenceChangeEvent(this, name, oldValue, newValue); for (int i = 0; i < finalListeners.length; ++i) { - final IPropertyChangeListener l = (IPropertyChangeListener) finalListeners[i]; - SafeRunnable.run(new SafeRunnable(JFaceResources.getString("PreferenceStore.changeError")) //$NON-NLS-1$ - { - @Override - public void run() - { - l.propertyChange(pe); - } - }); + final DBPPreferenceListener l = (DBPPreferenceListener) finalListeners[i]; + l.preferenceChange(pe); } } } @@ -291,22 +285,6 @@ public abstract class SimplePreferenceStore extends EventManager implements IPer return properties.keySet().toArray(new String[properties.size()]); } - @Override - public void putValue(String name, String value) - { - String oldValue = getString(name); - if (oldValue == null || !oldValue.equals(value)) { - properties.put(name, String.valueOf(value)); - dirty = true; - } - } - - @Override - public void removePropertyChangeListener(IPropertyChangeListener listener) - { - removeListenerObject(listener); - } - @Override public void setDefault(String name, double value) { @@ -424,16 +402,10 @@ public abstract class SimplePreferenceStore extends EventManager implements IPer } @Override - public void save() throws IOException - { - - } - - @Override - public void propertyChange(PropertyChangeEvent event) + public void preferenceChange(PreferenceChangeEvent event) { for (Object listener : getListeners()) { - ((IPropertyChangeListener)listener).propertyChange(event); + ((DBPPreferenceListener)listener).preferenceChange(event); } } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/DefaultEventFilter.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/DefaultEventFilter.java index 6d3f1b6034..483dcab22b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/DefaultEventFilter.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/DefaultEventFilter.java @@ -18,8 +18,8 @@ package org.jkiss.dbeaver.runtime.qm; -import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; import org.jkiss.dbeaver.runtime.qm.meta.*; import org.jkiss.utils.CommonUtils; @@ -45,7 +45,7 @@ public class DefaultEventFilter implements QMEventFilter { public void reloadPreferences() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); Collection objectTypes = QMObjectType.fromString(store.getString(QMConstants.PROP_OBJECT_TYPES)); this.showSessions = objectTypes.contains(QMObjectType.session); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/QMLogFileWriter.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/QMLogFileWriter.java index 25dada9844..8ee3ab795b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/QMLogFileWriter.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/QMLogFileWriter.java @@ -17,12 +17,11 @@ */ package org.jkiss.dbeaver.runtime.qm; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.jkiss.dbeaver.DBeaverConstants; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPreferenceListener; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.runtime.qm.meta.*; import org.jkiss.dbeaver.utils.ContentUtils; @@ -38,7 +37,7 @@ import java.util.List; /** * Query manager log writer */ -public class QMLogFileWriter implements QMMetaListener, IPropertyChangeListener { +public class QMLogFileWriter implements QMMetaListener, DBPPreferenceListener { static final Log log = Log.getLog(QMLogFileWriter.class); @@ -107,7 +106,7 @@ public class QMLogFileWriter implements QMMetaListener, IPropertyChangeListener } @Override - public void propertyChange(PropertyChangeEvent event) + public void preferenceChange(PreferenceChangeEvent event) { if (event.getProperty().startsWith(QMConstants.PROP_PREFIX)) { initLogFile(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java index 4aac6d61a9..a7d3851cc4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/sql/SQLQueryJob.java @@ -20,16 +20,12 @@ package org.jkiss.dbeaver.runtime.sql; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.IWorkbenchPartSite; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.Log; -import org.jkiss.dbeaver.model.DBIcon; -import org.jkiss.dbeaver.model.DBPDataKind; -import org.jkiss.dbeaver.model.DBPDataSource; -import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.DBDDataFilter; import org.jkiss.dbeaver.model.data.DBDDataReceiver; import org.jkiss.dbeaver.model.exec.*; @@ -99,7 +95,7 @@ public class SQLQueryJob extends DataSourceJob { // Read config form preference store - IPreferenceStore preferenceStore = getDataSourceContainer().getPreferenceStore(); + DBPPreferenceStore preferenceStore = getDataSourceContainer().getPreferenceStore(); this.commitType = SQLScriptCommitType.valueOf(preferenceStore.getString(DBeaverPreferences.SCRIPT_COMMIT_TYPE)); this.errorHandling = SQLScriptErrorHandling.valueOf(preferenceStore.getString(DBeaverPreferences.SCRIPT_ERROR_HANDLING)); this.fetchResultSets = queries.size() == 1 || preferenceStore.getBoolean(DBeaverPreferences.SCRIPT_FETCH_RESULT_SETS); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java index 152e14997f..64a0b3061a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java @@ -25,10 +25,7 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.action.*; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TrayDialog; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.source.ISharedTextColors; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; @@ -51,18 +48,20 @@ import org.eclipse.ui.IWorkbenchPartSite; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.model.DBPPreferenceListener; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.qm.QMUtils; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; -import org.jkiss.dbeaver.ui.AbstractUIJob; import org.jkiss.dbeaver.runtime.qm.*; import org.jkiss.dbeaver.runtime.qm.meta.*; +import org.jkiss.dbeaver.ui.AbstractUIJob; import org.jkiss.dbeaver.ui.ICommandIds; import org.jkiss.dbeaver.ui.TableToolTip; -import org.jkiss.dbeaver.utils.TextUtils; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.utils.GeneralUtils; +import org.jkiss.dbeaver.utils.TextUtils; import org.jkiss.utils.CommonUtils; import org.jkiss.utils.LongKeyMap; @@ -76,7 +75,7 @@ import java.util.Locale; /** * QueryLogViewer */ -public class QueryLogViewer extends Viewer implements QMMetaListener, IPropertyChangeListener { +public class QueryLogViewer extends Viewer implements QMMetaListener, DBPPreferenceListener { private static final String QUERY_LOG_CONTROL_ID = "org.jkiss.dbeaver.ui.qm.log"; //$NON-NLS-1$ @@ -509,7 +508,7 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, IPropertyC private void reloadEvents() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); this.defaultFilter = new DefaultEventFilter(); this.entriesPerPage = store.getInt(QMConstants.PROP_ENTRIES_PER_PAGE); @@ -771,7 +770,7 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, IPropertyC private ConfigRefreshJob configRefreshJob = null; @Override - public synchronized void propertyChange(PropertyChangeEvent event) + public synchronized void preferenceChange(PreferenceChangeEvent event) { if (event.getProperty().startsWith(QMConstants.PROP_PREFIX)) { // Many properties could be changed at once diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java index f3a0771fce..b4b6405e84 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/IResultSetController.java @@ -26,6 +26,7 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.DBPContextProvider; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDDataReceiver; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; @@ -62,7 +63,7 @@ public interface IResultSetController extends DBPContextProvider { boolean isAttributeReadOnly(DBDAttributeBinding attr); @NotNull - IPreferenceStore getPreferenceStore(); + DBPPreferenceStore getPreferenceStore(); void applyChanges(@Nullable DBRProgressMonitor monitor); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java index e0b8a122a4..6cab5444ea 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java @@ -24,7 +24,6 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.action.*; import org.eclipse.jface.dialogs.ControlEnableState; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.IFindReplaceTarget; import org.eclipse.jface.viewers.ISelection; @@ -465,7 +464,7 @@ public class ResultSetViewer extends Viewer // Misc @NotNull - public IPreferenceStore getPreferenceStore() + public DBPPreferenceStore getPreferenceStore() { DBCExecutionContext context = getExecutionContext(); if (context != null) { @@ -2116,7 +2115,7 @@ public class ResultSetViewer extends Viewer @Override public void run() { - IPreferenceStore preferenceStore = getPreferenceStore(); + DBPPreferenceStore preferenceStore = getPreferenceStore(); preferenceStore.setValue( DBeaverPreferences.RESULT_SET_ORDER_SERVER_SIDE, !preferenceStore.getBoolean(DBeaverPreferences.RESULT_SET_ORDER_SERVER_SIDE)); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java index c321b33abd..9e95d17897 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/spreadsheet/SpreadsheetPresentation.java @@ -43,7 +43,6 @@ import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.IFindReplaceTarget; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; @@ -76,10 +75,7 @@ import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.core.Log; -import org.jkiss.dbeaver.model.DBPDataKind; -import org.jkiss.dbeaver.model.DBPDataSource; -import org.jkiss.dbeaver.model.DBPImage; -import org.jkiss.dbeaver.model.DBUtils; +import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.*; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; @@ -190,7 +186,7 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe } }; - final IPreferenceStore preferences = getPreferenceStore(); + final DBPPreferenceStore preferences = getPreferenceStore(); int ratio = preferences.getInt(VIEW_PANEL_RATIO); boolean viewPanelVisible = preferences.getBoolean(VIEW_PANEL_VISIBLE); if (ratio <= 0) { @@ -496,7 +492,7 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe @Override public void refreshData(boolean refreshMetadata, boolean append) { // Cache preferences - IPreferenceStore preferenceStore = getPreferenceStore(); + DBPPreferenceStore preferenceStore = getPreferenceStore(); showOddRows = preferenceStore.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS); showCelIcons = preferenceStore.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS); @@ -927,7 +923,7 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe /////////////////////////////////////////////// // Misc - public IPreferenceStore getPreferenceStore() { + public DBPPreferenceStore getPreferenceStore() { return controller.getPreferenceStore(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java index 32e864d936..72aee83683 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/ConfirmationDialog.java @@ -20,14 +20,15 @@ package org.jkiss.dbeaver.ui.dialogs; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialogWithToggle; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Shell; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.preferences.PreferenceStoreDelegate; import java.util.ResourceBundle; @@ -67,7 +68,7 @@ public class ConfirmationDialog extends MessageDialogWithToggle { boolean toggleState, String key) { - IPreferenceStore prefStore = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore prefStore = DBeaverCore.getGlobalPreferenceStore(); if (ConfirmationDialog.ALWAYS.equals(prefStore.getString(key))) { if (kind == QUESTION || kind == QUESTION_WITH_CANCEL) { return IDialogConstants.YES_ID; @@ -91,7 +92,7 @@ public class ConfirmationDialog extends MessageDialogWithToggle { 0, toggleMessage, toggleState); - dialog.setPrefStore(prefStore); + dialog.setPrefStore(new PreferenceStoreDelegate(prefStore)); dialog.setPrefKey(key); return dialog.open(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java index eadfbd93ff..aca9d423f3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/data/CursorViewDialog.java @@ -30,6 +30,7 @@ import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.data.DBDCursor; import org.jkiss.dbeaver.model.data.DBDDataFilter; import org.jkiss.dbeaver.model.data.DBDDataReceiver; @@ -66,7 +67,7 @@ public class CursorViewDialog extends ValueViewDialog implements IResultSetConta Composite dialogGroup = (Composite)super.createDialogArea(parent); if (value != null) { - IPreferenceStore globalPreferenceStore = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore globalPreferenceStore = DBeaverCore.getGlobalPreferenceStore(); if (!globalPreferenceStore.getBoolean(DBeaverPreferences.KEEP_STATEMENT_OPEN)) { if (ConfirmationDialog.showConfirmDialog( getShell(), diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java index 1606fbc82e..9190dc4b62 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java @@ -17,14 +17,10 @@ */ package org.jkiss.dbeaver.ui.editors.binary; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.resources.*; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.*; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; @@ -41,6 +37,9 @@ import org.eclipse.ui.texteditor.ITextEditorActionConstants; import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPreferenceListener; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.editors.binary.pref.HexPreferencesPage; import org.jkiss.dbeaver.utils.ContentUtils; @@ -58,7 +57,7 @@ public class BinaryEditor extends EditorPart implements ISelectionProvider, IMen //static final String textSavingFilePleaseWait = "Saving file, please wait"; private HexManager manager; - private IPropertyChangeListener preferencesChangeListener = null; + private DBPPreferenceListener preferencesChangeListener = null; private Set selectionListeners = null; // of ISelectionChangedListener public BinaryEditor() @@ -169,15 +168,15 @@ public class BinaryEditor extends EditorPart implements ISelectionProvider, IMen bars.updateActionBars(); - preferencesChangeListener = new IPropertyChangeListener() { + preferencesChangeListener = new DBPPreferenceListener() { @Override - public void propertyChange(PropertyChangeEvent event) + public void preferenceChange(PreferenceChangeEvent event) { if (HexPreferencesPage.PROP_FONT_DATA.equals(event.getProperty())) manager.setTextFont((FontData) event.getNewValue()); } }; - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); store.addPropertyChangeListener(preferencesChangeListener); manager.addLongSelectionListener(new SelectionAdapter() { @@ -248,7 +247,7 @@ public class BinaryEditor extends EditorPart implements ISelectionProvider, IMen manager = null; } - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); store.removePropertyChangeListener(preferencesChangeListener); ResourcesPlugin.getWorkspace().removeResourceChangeListener(this); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesPage.java index ff1785f6f8..e9cb2f5a76 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesPage.java @@ -26,6 +26,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.utils.CommonUtils; @@ -49,7 +50,7 @@ public class HexPreferencesPage extends PreferencePage implements IWorkbenchPref */ public static FontData getPrefFontData() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); String fontName = store.getString(DBeaverPreferences.HEX_FONT_NAME); int fontStyle = store.getInt(DBeaverPreferences.HEX_FONT_STYLE); int fontSize = store.getInt(DBeaverPreferences.HEX_FONT_SIZE); @@ -100,7 +101,7 @@ public class HexPreferencesPage extends PreferencePage implements IWorkbenchPref @Override public boolean performOk() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); FontData fontData = preferences.getFontData(); store.setValue(DBeaverPreferences.HEX_FONT_NAME, fontData.getName()); store.setValue(DBeaverPreferences.HEX_FONT_STYLE, fontData.getStyle()); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java index 4016adfb61..de9a45a0cf 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java @@ -28,8 +28,6 @@ import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.text.*; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; @@ -52,7 +50,6 @@ import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverActivator; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; -import org.jkiss.dbeaver.model.IDataSourceContainerProviderEx; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.data.DBDDataFilter; import org.jkiss.dbeaver.model.data.DBDDataReceiver; @@ -106,7 +103,7 @@ public class SQLEditor extends SQLEditorBase implements IResultSetContainer, DBPDataSourceUser, DBPDataSourceHandler, - IPropertyChangeListener + DBPPreferenceListener { private static final long SCRIPT_UI_UPDATE_PERIOD = 100; @@ -951,7 +948,7 @@ public class SQLEditor extends SQLEditorBase implements } @Override - public void propertyChange(PropertyChangeEvent event) { + public void preferenceChange(PreferenceChangeEvent event) { if (event.getProperty().equals(DBeaverPreferences.SCRIPT_STATEMENT_DELIMITER) || event.getProperty().equals(DBeaverPreferences.SCRIPT_IGNORE_NATIVE_DELIMITER)) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java index fb02b3b894..dde6f3368c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java @@ -22,7 +22,6 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.*; import org.eclipse.jface.text.rules.FastPartitioner; import org.eclipse.jface.text.rules.IToken; @@ -52,6 +51,7 @@ import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.sql.SQLDataSource; import org.jkiss.dbeaver.model.sql.SQLQuery; @@ -66,6 +66,7 @@ import org.jkiss.dbeaver.ui.editors.sql.syntax.tokens.*; import org.jkiss.dbeaver.ui.editors.sql.templates.SQLTemplatesPage; import org.jkiss.dbeaver.ui.editors.sql.util.SQLSymbolInserter; import org.jkiss.dbeaver.ui.editors.text.BaseTextEditor; +import org.jkiss.dbeaver.ui.preferences.PreferenceStoreDelegate; import org.jkiss.dbeaver.utils.TextUtils; import org.jkiss.utils.CommonUtils; @@ -121,7 +122,7 @@ public abstract class SQLEditorBase extends BaseTextEditor { return context == null ? null : context.getDataSource(); } - public IPreferenceStore getActivePreferenceStore() { + public DBPPreferenceStore getActivePreferenceStore() { DBPDataSource dataSource = getDataSource(); return dataSource == null ? DBeaverCore.getGlobalPreferenceStore() : dataSource.getContainer().getPreferenceStore(); } @@ -171,7 +172,7 @@ public abstract class SQLEditorBase extends BaseTextEditor { { SQLSymbolInserter symbolInserter = new SQLSymbolInserter(this); - IPreferenceStore preferenceStore = getActivePreferenceStore(); + DBPPreferenceStore preferenceStore = getActivePreferenceStore(); boolean closeSingleQuotes = preferenceStore.getBoolean(SQLPreferenceConstants.SQLEDITOR_CLOSE_SINGLE_QUOTES); boolean closeDoubleQuotes = preferenceStore.getBoolean(SQLPreferenceConstants.SQLEDITOR_CLOSE_DOUBLE_QUOTES); boolean closeBrackets = preferenceStore.getBoolean(SQLPreferenceConstants.SQLEDITOR_CLOSE_BRACKETS); @@ -187,7 +188,7 @@ public abstract class SQLEditorBase extends BaseTextEditor { } if (decorationSupport != null) { - decorationSupport.install(getActivePreferenceStore()); + decorationSupport.install(new PreferenceStoreDelegate(getActivePreferenceStore())); } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorInput.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorInput.java index 6684fa0d0d..c9a9cdddcb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorInput.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorInput.java @@ -21,11 +21,8 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.QualifiedName; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.IMemento; import org.eclipse.ui.IPersistableElement; -import org.eclipse.ui.internal.IPreferenceConstants; -import org.eclipse.ui.internal.WorkbenchPlugin; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBeaverPreferences; @@ -33,12 +30,13 @@ import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.DBPContextProvider; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.IDataSourceContainerProvider; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; import org.jkiss.dbeaver.registry.DataSourceRegistry; -import org.jkiss.dbeaver.utils.TextUtils; import org.jkiss.dbeaver.ui.editors.ProjectFileEditorInput; +import org.jkiss.dbeaver.utils.TextUtils; import java.io.ByteArrayInputStream; import java.util.HashMap; @@ -78,7 +76,7 @@ public class SQLEditorInput extends ProjectFileEditorInput implements IPersistab public String getName() { DBSDataSourceContainer dataSourceContainer = getDataSourceContainer(); - IPreferenceStore preferenceStore; + DBPPreferenceStore preferenceStore; if (dataSourceContainer != null) { preferenceStore = dataSourceContainer.getPreferenceStore(); } else { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java index 545fa21e5b..5078572d27 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorSourceViewerConfiguration.java @@ -17,7 +17,6 @@ */ package org.jkiss.dbeaver.ui.editors.sql; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.*; import org.eclipse.jface.text.contentassist.ContentAssistant; import org.eclipse.jface.text.contentassist.IContentAssistProcessor; @@ -37,8 +36,6 @@ import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.text.source.IAnnotationHover; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.jface.text.source.SourceViewerConfiguration; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.Color; @@ -48,6 +45,8 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBPPreferenceListener; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.sql.SQLConstants; import org.jkiss.dbeaver.ui.editors.sql.indent.SQLAutoIndentStrategy; import org.jkiss.dbeaver.ui.editors.sql.indent.SQLCommentAutoIndentStrategy; @@ -153,13 +152,13 @@ public class SQLEditorSourceViewerConfiguration extends SourceViewerConfiguratio @Override public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); final DBPDataSource dataSource = editor.getDataSource(); if (dataSource != null) { store = dataSource.getContainer().getPreferenceStore(); } - final IPreferenceStore configStore = store; + final DBPPreferenceStore configStore = store; final ContentAssistant assistant = new ContentAssistant(); @@ -187,9 +186,9 @@ public class SQLEditorSourceViewerConfiguration extends SourceViewerConfiguratio //Set auto insert mode. assistant.enableAutoInsert(store.getBoolean(SQLPreferenceConstants.INSERT_SINGLE_PROPOSALS_AUTO)); - final IPropertyChangeListener prefListener = new IPropertyChangeListener() { + final DBPPreferenceListener prefListener = new DBPPreferenceListener() { @Override - public void propertyChange(PropertyChangeEvent event) + public void preferenceChange(PreferenceChangeEvent event) { if (event.getProperty().equals(SQLPreferenceConstants.ENABLE_AUTO_ACTIVATION)) { assistant.enableAutoActivation(configStore.getBoolean(SQLPreferenceConstants.ENABLE_AUTO_ACTIVATION)); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLAutoIndentStrategy.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLAutoIndentStrategy.java index 76096bd591..b3d6454de4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLAutoIndentStrategy.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLAutoIndentStrategy.java @@ -17,10 +17,10 @@ */ package org.jkiss.dbeaver.ui.editors.sql.indent; -import org.jkiss.dbeaver.core.Log; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.*; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants; import org.jkiss.dbeaver.ui.editors.sql.syntax.SQLPartitionScanner; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -151,7 +151,7 @@ public class SQLAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { private void clearCachedValues() { autoCompletionMap.clear(); - IPreferenceStore preferenceStore = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore preferenceStore = DBeaverCore.getGlobalPreferenceStore(); boolean closeBeginEnd = preferenceStore.getBoolean(SQLPreferenceConstants.SQLEDITOR_CLOSE_BEGIN_END); if (closeBeginEnd) { autoCompletionMap.put(SQLIndentSymbols.Tokenbegin, SQLIndentSymbols.beginTrail); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLCommentAutoIndentStrategy.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLCommentAutoIndentStrategy.java index a0077efbb6..251d116b77 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLCommentAutoIndentStrategy.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/indent/SQLCommentAutoIndentStrategy.java @@ -17,10 +17,9 @@ */ package org.jkiss.dbeaver.ui.editors.sql.indent; -import org.jkiss.dbeaver.core.Log; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.*; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.ui.editors.sql.SQLPreferenceConstants; import org.jkiss.dbeaver.utils.GeneralUtils; @@ -32,8 +31,6 @@ import java.text.BreakIterator; */ public class SQLCommentAutoIndentStrategy extends DefaultIndentLineAutoEditStrategy { - static final Log log = Log.getLog(SQLCommentAutoIndentStrategy.class); - private static final int DEFAULT_MARGIN = 5; private static final int DEFAULT_TAB_WIDTH = 4; @@ -542,7 +539,7 @@ public class SQLCommentAutoIndentStrategy extends DefaultIndentLineAutoEditStrat return paragraphBuffer.toString(); } - private static IPreferenceStore getPreferenceStore() + private static DBPPreferenceStore getPreferenceStore() { return DBeaverCore.getGlobalPreferenceStore(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProcessor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProcessor.java index 17bd372d79..5c2839d315 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProcessor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/syntax/SQLCompletionProcessor.java @@ -17,7 +17,6 @@ */ package org.jkiss.dbeaver.ui.editors.sql.syntax; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.TextPresentation; import org.eclipse.jface.text.contentassist.*; @@ -582,8 +581,8 @@ public class SQLCompletionProcessor implements IContentAssistProcessor object); } - private IPreferenceStore getPreferences() { - IPreferenceStore store = null; + private DBPPreferenceStore getPreferences() { + DBPPreferenceStore store = null; DBPDataSource dataSource = editor.getDataSource(); if (dataSource != null) { store = dataSource.getContainer().getPreferenceStore(); @@ -605,7 +604,7 @@ public class SQLCompletionProcessor implements IContentAssistProcessor boolean isObject, @Nullable DBPNamedObject object) { - IPreferenceStore store = getPreferences(); + DBPPreferenceStore store = getPreferences(); DBPDataSource dataSource = editor.getDataSource(); if (dataSource != null) { if (isObject) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplateStore.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplateStore.java index bc60b69bc1..9376f57fc7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplateStore.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplateStore.java @@ -26,6 +26,7 @@ import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor; import org.jkiss.dbeaver.registry.DataSourceProviderRegistry; import org.jkiss.dbeaver.runtime.preferences.SimplePreferenceStore; +import org.jkiss.dbeaver.ui.preferences.PreferenceStoreDelegate; import org.jkiss.dbeaver.utils.ContentUtils; import org.jkiss.utils.CommonUtils; import org.osgi.framework.Bundle; @@ -44,9 +45,6 @@ import java.util.ResourceBundle; *

* Clients may instantiate but not subclass this class. *

- * - * @noextend This class is not intended to be subclassed by clients. - * @since 3.0 */ public class SQLTemplateStore extends TemplateStore { @@ -55,7 +53,7 @@ public class SQLTemplateStore extends TemplateStore { public SQLTemplateStore(ContextTypeRegistry registry) { - super(registry, new CustomTemplatesStore(), PREF_STORE_KEY); //$NON-NLS-1$ + super(registry, new PreferenceStoreDelegate(new CustomTemplatesStore()), PREF_STORE_KEY); //$NON-NLS-1$ } /** @@ -188,7 +186,7 @@ public class SQLTemplateStore extends TemplateStore { try { File configurationFile = getConfigurationFile(); if (configurationFile.exists()) { - putValue(PREF_STORE_KEY, ContentUtils.readFileToString(configurationFile)); + setValue(PREF_STORE_KEY, ContentUtils.readFileToString(configurationFile)); } } catch (IOException e) { log.error(e); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplatesPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplatesPage.java index b386526798..48499cc67f 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplatesPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/templates/SQLTemplatesPage.java @@ -42,6 +42,7 @@ import org.jkiss.dbeaver.ui.ProxyPageSite; import org.jkiss.dbeaver.ui.editors.sql.SQLEditorBase; import org.jkiss.dbeaver.ui.editors.sql.SQLEditorSourceViewer; import org.jkiss.dbeaver.ui.editors.sql.SQLEditorSourceViewerConfiguration; +import org.jkiss.dbeaver.ui.preferences.PreferenceStoreDelegate; /** @@ -135,7 +136,7 @@ public class SQLTemplatesPage extends AbstractTemplatesPage { @Override protected IPreferenceStore getTemplatePreferenceStore() { - return DBeaverCore.getGlobalPreferenceStore(); + return new PreferenceStoreDelegate(DBeaverCore.getGlobalPreferenceStore()); } @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java index e2b355b4be..f0542f7b83 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/BaseTextEditor.java @@ -49,6 +49,7 @@ import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.ui.ICommentsSupport; import org.jkiss.dbeaver.ui.ISingleControlEditor; +import org.jkiss.dbeaver.ui.preferences.PreferenceStoreDelegate; import org.jkiss.dbeaver.ui.resources.ScriptsHandlerImpl; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; @@ -117,7 +118,7 @@ public abstract class BaseTextEditor extends StatusTextEditor implements ISingle @Override public void createPartControl(Composite parent) { - setPreferenceStore(DBeaverCore.getGlobalPreferenceStore()); + setPreferenceStore(new PreferenceStoreDelegate(DBeaverCore.getGlobalPreferenceStore())); super.createPartControl(parent); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/LineNumberColumn.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/LineNumberColumn.java index 13a0a48db4..2a57e38e1e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/LineNumberColumn.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/LineNumberColumn.java @@ -19,11 +19,7 @@ package org.jkiss.dbeaver.ui.editors.text; import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.source.*; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -32,6 +28,8 @@ import org.eclipse.ui.texteditor.rulers.IContributedRulerColumn; import org.eclipse.ui.texteditor.rulers.RulerColumnDescriptor; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.model.DBPPreferenceListener; +import org.jkiss.dbeaver.model.DBPPreferenceStore; /** * The line number ruler contribution. Encapsulates a {@link org.eclipse.jface.text.source.LineNumberChangeRulerColumn} as a @@ -205,7 +203,7 @@ public class LineNumberColumn implements IContributedRulerColumn, IVerticalRuler ((IVerticalRulerInfoExtension) fDelegate).removeVerticalRulerListener(listener); } - private IPreferenceStore getPreferenceStore() + private DBPPreferenceStore getPreferenceStore() { return DBeaverCore.getGlobalPreferenceStore(); } @@ -220,7 +218,7 @@ public class LineNumberColumn implements IContributedRulerColumn, IVerticalRuler */ private void initialize() { - final IPreferenceStore store = getPreferenceStore(); + final DBPPreferenceStore store = getPreferenceStore(); if (store == null) return; @@ -235,9 +233,9 @@ public class LineNumberColumn implements IContributedRulerColumn, IVerticalRuler // listen to changes fDispatcher = new PropertyEventDispatcher(store); - fDispatcher.addPropertyChangeListener(LINE_NUMBER_KEY, new IPropertyChangeListener() { + fDispatcher.addPropertyChangeListener(LINE_NUMBER_KEY, new DBPPreferenceListener() { @Override - public void propertyChange(PropertyChangeEvent event) + public void preferenceChange(PreferenceChangeEvent event) { // only handle quick diff on/off information, but not ruler visibility (handled by AbstractDecoratedTextEditor) updateLineNumbersVisibility(fDelegate); @@ -272,7 +270,7 @@ public class LineNumberColumn implements IContributedRulerColumn, IVerticalRuler */ public void initializeLineNumberRulerColumn(LineNumberRulerColumn rulerColumn) { - IPreferenceStore store = getPreferenceStore(); + DBPPreferenceStore store = getPreferenceStore(); if (store != null) { updateLineNumbersVisibility(rulerColumn); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/PropertyEventDispatcher.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/PropertyEventDispatcher.java index 9b186c2379..84ece608b1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/PropertyEventDispatcher.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/text/PropertyEventDispatcher.java @@ -18,23 +18,23 @@ package org.jkiss.dbeaver.ui.editors.text; import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; +import org.jkiss.dbeaver.model.DBPPreferenceListener; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import java.util.*; public final class PropertyEventDispatcher { private final Map fHandlerMap= new HashMap(); private final Map fReverseMap= new HashMap(); - private final IPreferenceStore fStore; - private final IPropertyChangeListener fListener= new IPropertyChangeListener() { + private final DBPPreferenceStore fStore; + private final DBPPreferenceListener fListener= new DBPPreferenceListener() { @Override - public void propertyChange(PropertyChangeEvent event) { + public void preferenceChange(PreferenceChangeEvent event) { firePropertyChange(event); } }; - public PropertyEventDispatcher(IPreferenceStore store) { + public PropertyEventDispatcher(DBPPreferenceStore store) { Assert.isLegal(store != null); fStore= store; } @@ -44,15 +44,15 @@ public final class PropertyEventDispatcher { fReverseMap.clear(); fHandlerMap.clear(); } - private void firePropertyChange(PropertyChangeEvent event) { + private void firePropertyChange(DBPPreferenceListener.PreferenceChangeEvent event) { Object value= fHandlerMap.get(event.getProperty()); - if (value instanceof IPropertyChangeListener) - ((IPropertyChangeListener) value).propertyChange(event); + if (value instanceof DBPPreferenceListener) + ((DBPPreferenceListener) value).preferenceChange(event); else if (value instanceof Set) for (Iterator it= ((Set) value).iterator(); it.hasNext(); ) - ((IPropertyChangeListener) it.next()).propertyChange(event); + ((DBPPreferenceListener) it.next()).preferenceChange(event); } - public void addPropertyChangeListener(String property, IPropertyChangeListener listener) { + public void addPropertyChangeListener(String property, DBPPreferenceListener listener) { Assert.isLegal(property != null); Assert.isLegal(listener != null); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java index 33f277012b..81f0a51d5e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/perspective/DataSourceManagementToolbar.java @@ -17,8 +17,6 @@ */ package org.jkiss.dbeaver.ui.perspective; -import org.jkiss.code.NotNull; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IAdaptable; @@ -26,9 +24,6 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.JobChangeAdapter; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; @@ -38,15 +33,14 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.eclipse.ui.*; import org.eclipse.ui.menus.WorkbenchWindowControlContribution; +import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.DBeaverUI; -import org.jkiss.dbeaver.model.IDataSourceContainerProvider; -import org.jkiss.dbeaver.model.IDataSourceContainerProviderEx; -import org.jkiss.dbeaver.model.DBPContextProvider; +import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.*; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; @@ -61,7 +55,6 @@ import org.jkiss.dbeaver.registry.DataSourceProviderRegistry; import org.jkiss.dbeaver.registry.DataSourceRegistry; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.runtime.jobs.DataSourceJob; -import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.IActionConstants; import org.jkiss.dbeaver.ui.UIUtils; @@ -78,7 +71,7 @@ import java.util.List; /** * DataSource Toolbar */ -public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEventListener, IPropertyChangeListener, IPageListener, IPartListener, ISelectionListener { +public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEventListener, DBPPreferenceListener, IPageListener, IPartListener, ISelectionListener { static final Log log = Log.getLog(DataSourceManagementToolbar.class); public static final String EMPTY_SELECTION_TEXT = CoreMessages.toolbar_datasource_selector_empty; @@ -428,7 +421,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven if (rsSize.length() == 0) { rsSize = "1"; //$NON-NLS-1$ } - IPreferenceStore store = dsContainer.getPreferenceStore(); + DBPPreferenceStore store = dsContainer.getPreferenceStore(); store.setValue(DBeaverPreferences.RESULT_SET_MAX_ROWS, rsSize); RuntimeUtils.savePreferenceStore(store); } @@ -634,7 +627,7 @@ public class DataSourceManagementToolbar implements DBPRegistryListener, DBPEven } @Override - public void propertyChange(PropertyChangeEvent event) + public void preferenceChange(PreferenceChangeEvent event) { if (event.getProperty().equals(DBeaverPreferences.RESULT_SET_MAX_ROWS) && !resultSetSize.isDisposed()) { if (event.getNewValue() != null) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageConfirmations.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageConfirmations.java index 7dfe0de993..1a4241fd58 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageConfirmations.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageConfirmations.java @@ -18,7 +18,6 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -32,6 +31,7 @@ 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.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog; @@ -102,7 +102,7 @@ public class PrefPageConfirmations extends PreferencePage implements IWorkbenchP @Override protected void performDefaults() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); for (Map.Entry entry : confirmChecks.entrySet()) { String id = entry.getKey(); @@ -122,7 +122,7 @@ public class PrefPageConfirmations extends PreferencePage implements IWorkbenchP @Override public boolean performOk() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); for (Map.Entry entry : confirmChecks.entrySet()) { String id = entry.getKey(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataEditor.java index ac26582097..422bd61035 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataEditor.java @@ -18,12 +18,12 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; @@ -114,7 +114,7 @@ public class PrefPageDataEditor extends TargetPrefPage } @Override - protected void loadPreferences(IPreferenceStore store) + protected void loadPreferences(DBPPreferenceStore store) { try { alwaysUseAllColumns.setSelection(store.getBoolean(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS)); @@ -129,7 +129,7 @@ public class PrefPageDataEditor extends TargetPrefPage } @Override - protected void savePreferences(IPreferenceStore store) + protected void savePreferences(DBPPreferenceStore store) { try { store.setValue(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS, alwaysUseAllColumns.getSelection()); @@ -145,7 +145,7 @@ public class PrefPageDataEditor extends TargetPrefPage } @Override - protected void clearPreferences(IPreferenceStore store) + protected void clearPreferences(DBPPreferenceStore store) { store.setToDefault(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS); store.setToDefault(DBeaverPreferences.RS_EDIT_MAX_TEXT_SIZE); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataFormat.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataFormat.java index 46835ff17b..c3323b46e4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataFormat.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDataFormat.java @@ -18,7 +18,6 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -28,6 +27,7 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.data.DBDDataFormatter; import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile; import org.jkiss.dbeaver.registry.DataFormatterDescriptor; @@ -69,7 +69,7 @@ public class PrefPageDataFormat extends TargetPrefPage public PrefPageDataFormat() { super(); - setPreferenceStore(DBeaverCore.getGlobalPreferenceStore()); + setPreferenceStore(new PreferenceStoreDelegate(DBeaverCore.getGlobalPreferenceStore())); } @Override @@ -341,7 +341,7 @@ public class PrefPageDataFormat extends TargetPrefPage } @Override - protected void loadPreferences(IPreferenceStore store) + protected void loadPreferences(DBPPreferenceStore store) { refreshProfileList(); @@ -349,7 +349,7 @@ public class PrefPageDataFormat extends TargetPrefPage } @Override - protected void savePreferences(IPreferenceStore store) + protected void savePreferences(DBPPreferenceStore store) { try { formatterProfile.setProfileName(profileName); @@ -365,7 +365,7 @@ public class PrefPageDataFormat extends TargetPrefPage } @Override - protected void clearPreferences(IPreferenceStore store) + protected void clearPreferences(DBPPreferenceStore store) { formatterProfile.reset(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java index d87a8db14e..cb209eef72 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java @@ -19,7 +19,6 @@ package org.jkiss.dbeaver.ui.preferences; import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -31,6 +30,7 @@ import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.views.navigator.database.NavigatorViewBase; @@ -58,7 +58,7 @@ public class PrefPageDatabaseGeneral extends PreferencePage implements IWorkbenc public PrefPageDatabaseGeneral() { super(); - setPreferenceStore(DBeaverCore.getGlobalPreferenceStore()); + setPreferenceStore(new PreferenceStoreDelegate(DBeaverCore.getGlobalPreferenceStore())); } @Override @@ -117,7 +117,7 @@ public class PrefPageDatabaseGeneral extends PreferencePage implements IWorkbenc @Override protected void performDefaults() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); automaticUpdateCheck.setSelection(store.getBoolean(DBeaverPreferences.UI_AUTO_UPDATE_CHECK)); keepEditorsOnRestart.setSelection(store.getBoolean(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS)); @@ -134,7 +134,7 @@ public class PrefPageDatabaseGeneral extends PreferencePage implements IWorkbenc @Override public boolean performOk() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); store.setValue(DBeaverPreferences.UI_AUTO_UPDATE_CHECK, automaticUpdateCheck.getSelection()); store.setValue(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS, keepEditorsOnRestart.getSelection()); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java index 8e353bb5c7..da8b6d79b3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDrivers.java @@ -18,9 +18,7 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; @@ -33,6 +31,8 @@ import org.eclipse.ui.IWorkbenchPropertyPage; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.DriverDescriptor; import org.jkiss.dbeaver.registry.encode.EncryptionException; import org.jkiss.dbeaver.registry.encode.SecuredPasswordEncrypter; @@ -163,7 +163,7 @@ public class PrefPageDrivers extends PreferencePage implements IWorkbenchPrefere @Override protected void performDefaults() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); proxyHostText.setText(store.getString(DBeaverPreferences.UI_PROXY_HOST)); proxyPortSpinner.setSelection(store.getInt(DBeaverPreferences.UI_PROXY_PORT)); @@ -189,7 +189,7 @@ public class PrefPageDrivers extends PreferencePage implements IWorkbenchPrefere @Override public boolean performOk() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); store.setValue(DBeaverPreferences.UI_PROXY_HOST, proxyHostText.getText()); store.setValue(DBeaverPreferences.UI_PROXY_PORT, proxyPortSpinner.getSelection()); store.setValue(DBeaverPreferences.UI_PROXY_USER, proxyUserText.getText()); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java index 13dc272d7a..770ea0afeb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java @@ -18,7 +18,6 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; @@ -26,6 +25,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; @@ -82,7 +82,7 @@ public class PrefPageMetaData extends TargetPrefPage } @Override - protected void loadPreferences(IPreferenceStore store) + protected void loadPreferences(DBPPreferenceStore store) { try { readExpensiveCheck.setSelection(store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES)); @@ -94,7 +94,7 @@ public class PrefPageMetaData extends TargetPrefPage } @Override - protected void savePreferences(IPreferenceStore store) + protected void savePreferences(DBPPreferenceStore store) { try { store.setValue(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES, readExpensiveCheck.getSelection()); @@ -107,7 +107,7 @@ public class PrefPageMetaData extends TargetPrefPage } @Override - protected void clearPreferences(IPreferenceStore store) + protected void clearPreferences(DBPPreferenceStore store) { store.setToDefault(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES); store.setToDefault(DBeaverPreferences.META_SEPARATE_CONNECTION); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageQueryManager.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageQueryManager.java index 9af0254f09..8a66bba6cd 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageQueryManager.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageQueryManager.java @@ -19,7 +19,6 @@ package org.jkiss.dbeaver.ui.preferences; import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; @@ -31,6 +30,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.IWorkbenchPropertyPage; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.runtime.qm.QMConstants; @@ -118,7 +118,7 @@ public class PrefPageQueryManager extends PreferencePage implements IWorkbenchPr @Override protected void performDefaults() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); Collection objectTypes = QMObjectType.fromString(store.getString(QMConstants.PROP_OBJECT_TYPES)); Collection queryTypes = CommonUtils.splitString(store.getString(QMConstants.PROP_QUERY_TYPES), ','); @@ -160,7 +160,7 @@ public class PrefPageQueryManager extends PreferencePage implements IWorkbenchPr Integer historyDays = UIUtils.getTextInteger(textHistoryDays); Integer entriesPerPage = UIUtils.getTextInteger(textEntriesPerPage); - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); store.setValue(QMConstants.PROP_OBJECT_TYPES, QMObjectType.toString(objectTypes)); store.setValue(QMConstants.PROP_QUERY_TYPES, CommonUtils.makeString(queryTypes, ',')); if (historyDays != null) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResources.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResources.java index 61789367fc..9d05405730 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResources.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResources.java @@ -18,9 +18,7 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.TableEditor; @@ -32,6 +30,8 @@ import org.eclipse.swt.widgets.*; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.ResourceHandlerDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; @@ -125,7 +125,7 @@ public class PrefPageResources extends PreferencePage implements IWorkbenchPrefe @Override public boolean performOk() { - IPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); + DBPPreferenceStore store = DBeaverCore.getGlobalPreferenceStore(); //store.setValue(DBeaverPreferences.UI_AUTO_UPDATE_CHECK, automaticUpdateCheck.getSelection()); RuntimeUtils.savePreferenceStore(store); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSet.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSet.java index 170c2ab8a6..0890cc1e8a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSet.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSet.java @@ -18,13 +18,13 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.DBDBinaryFormatter; import org.jkiss.dbeaver.model.data.DBDValueController; @@ -179,7 +179,7 @@ public class PrefPageResultSet extends TargetPrefPage } @Override - protected void loadPreferences(IPreferenceStore store) + protected void loadPreferences(DBPPreferenceStore store) { try { autoFetchNextSegmentCheck.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_AUTO_FETCH_NEXT_SEGMENT)); @@ -218,7 +218,7 @@ public class PrefPageResultSet extends TargetPrefPage } @Override - protected void savePreferences(IPreferenceStore store) + protected void savePreferences(DBPPreferenceStore store) { try { store.setValue(DBeaverPreferences.RESULT_SET_AUTO_FETCH_NEXT_SEGMENT, autoFetchNextSegmentCheck.getSelection()); @@ -254,7 +254,7 @@ public class PrefPageResultSet extends TargetPrefPage } @Override - protected void clearPreferences(IPreferenceStore store) + protected void clearPreferences(DBPPreferenceStore store) { store.setToDefault(DBeaverPreferences.RESULT_SET_AUTO_FETCH_NEXT_SEGMENT); store.setToDefault(DBeaverPreferences.RESULT_SET_MAX_ROWS); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLEditor.java index 3f12e56494..46c017d18c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLEditor.java @@ -18,7 +18,6 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -29,6 +28,7 @@ import org.eclipse.ui.texteditor.rulers.RulerColumnPreferenceAdapter; import org.eclipse.ui.texteditor.rulers.RulerColumnRegistry; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; @@ -178,7 +178,7 @@ public class PrefPageSQLEditor extends TargetPrefPage } @Override - protected void loadPreferences(IPreferenceStore store) + protected void loadPreferences(DBPPreferenceStore store) { try { editorSeparateConnectionCheck.setSelection(store.getBoolean(DBeaverPreferences.EDITOR_SEPARATE_CONNECTION)); @@ -193,7 +193,7 @@ public class PrefPageSQLEditor extends TargetPrefPage acBracketsCheck.setSelection(store.getBoolean(SQLPreferenceConstants.SQLEDITOR_CLOSE_BRACKETS)); final RulerColumnPreferenceAdapter adapter = new RulerColumnPreferenceAdapter( - store, + new PreferenceStoreDelegate(store), AbstractTextEditor.PREFERENCE_RULER_CONTRIBUTIONS); for (Map.Entry entry : rulerChecks.entrySet()) { entry.getValue().setSelection(adapter.isEnabled(entry.getKey())); @@ -207,7 +207,7 @@ public class PrefPageSQLEditor extends TargetPrefPage } @Override - protected void savePreferences(IPreferenceStore store) + protected void savePreferences(DBPPreferenceStore store) { try { store.setValue(DBeaverPreferences.EDITOR_SEPARATE_CONNECTION, editorSeparateConnectionCheck.getSelection()); @@ -223,7 +223,7 @@ public class PrefPageSQLEditor extends TargetPrefPage store.setValue(SQLPreferenceConstants.SQLEDITOR_CLOSE_BRACKETS, acBracketsCheck.getSelection()); final RulerColumnPreferenceAdapter adapter = new RulerColumnPreferenceAdapter( - store, + new PreferenceStoreDelegate(store), AbstractTextEditor.PREFERENCE_RULER_CONTRIBUTIONS); for (Map.Entry entry : rulerChecks.entrySet()) { adapter.setEnabled(entry.getKey(), entry.getValue().getSelection()); @@ -238,7 +238,7 @@ public class PrefPageSQLEditor extends TargetPrefPage } @Override - protected void clearPreferences(IPreferenceStore store) + protected void clearPreferences(DBPPreferenceStore store) { store.setToDefault(DBeaverPreferences.EDITOR_SEPARATE_CONNECTION); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java index 80c7333f3e..8b06a6dcf6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLExecute.java @@ -18,12 +18,12 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.CoreMessages; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.runtime.sql.SQLScriptCommitType; @@ -142,7 +142,7 @@ public class PrefPageSQLExecute extends TargetPrefPage } @Override - protected void loadPreferences(IPreferenceStore store) + protected void loadPreferences(DBPPreferenceStore store) { try { invalidateBeforeExecuteCheck.setSelection(store.getBoolean(DBeaverPreferences.STATEMENT_INVALIDATE_BEFORE_EXECUTE)); @@ -161,7 +161,7 @@ public class PrefPageSQLExecute extends TargetPrefPage } @Override - protected void savePreferences(IPreferenceStore store) + protected void savePreferences(DBPPreferenceStore store) { try { store.setValue(DBeaverPreferences.STATEMENT_INVALIDATE_BEFORE_EXECUTE, invalidateBeforeExecuteCheck.getSelection()); @@ -181,7 +181,7 @@ public class PrefPageSQLExecute extends TargetPrefPage } @Override - protected void clearPreferences(IPreferenceStore store) + protected void clearPreferences(DBPPreferenceStore store) { store.setToDefault(DBeaverPreferences.STATEMENT_INVALIDATE_BEFORE_EXECUTE); store.setToDefault(DBeaverPreferences.STATEMENT_TIMEOUT); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLTemplates.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLTemplates.java index a061bdc50b..1bab938175 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLTemplates.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageSQLTemplates.java @@ -30,7 +30,7 @@ import org.jkiss.dbeaver.ui.editors.sql.templates.SQLTemplatesRegistry; public class PrefPageSQLTemplates extends TemplatePreferencePage implements IWorkbenchPropertyPage { public PrefPageSQLTemplates() { - setPreferenceStore(DBeaverCore.getGlobalPreferenceStore()); + setPreferenceStore(new PreferenceStoreDelegate(DBeaverCore.getGlobalPreferenceStore())); setTemplateStore(SQLTemplatesRegistry.getInstance().getTemplateStore()); setContextTypeRegistry(SQLTemplatesRegistry.getInstance().getTemplateContextRegistry()); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PreferenceStoreDelegate.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PreferenceStoreDelegate.java new file mode 100644 index 0000000000..e395d4702b --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PreferenceStoreDelegate.java @@ -0,0 +1,228 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License (version 2) + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.jkiss.dbeaver.ui.preferences; + +import org.eclipse.jface.preference.IPersistentPreferenceStore; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferencePage; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.jkiss.dbeaver.model.DBPPreferenceListener; +import org.jkiss.dbeaver.model.DBPPreferenceStore; + +import java.io.IOException; + +/** + * PrefPageEmpty + */ +public class PreferenceStoreDelegate implements IPreferenceStore, IPersistentPreferenceStore +{ + private final DBPPreferenceStore delegate; + + private static class PropertyChangeListenerDelegate implements IPropertyChangeListener { + private final DBPPreferenceListener delegate; + + public PropertyChangeListenerDelegate(DBPPreferenceListener delegate) { + this.delegate = delegate; + } + + @Override + public void propertyChange(PropertyChangeEvent event) { + delegate.preferenceChange( + new DBPPreferenceListener.PreferenceChangeEvent( + event.getSource(), + event.getProperty(), + event.getOldValue(), + event.getNewValue() + )); + } + } + + public PreferenceStoreDelegate(DBPPreferenceStore delegate) { + this.delegate = delegate; + } + + @Override + public void save() throws IOException { + delegate.save(); + } + + @Override + public void addPropertyChangeListener(IPropertyChangeListener listener) { + + } + + @Override + public void removePropertyChangeListener(IPropertyChangeListener listener) { + + } + + @Override + public void firePropertyChangeEvent(String name, Object oldValue, Object newValue) { + delegate.firePropertyChangeEvent(name, oldValue, newValue); + } + + @Override + public boolean contains(String name) { + return delegate.contains(name); + } + + @Override + public boolean getBoolean(String name) { + return delegate.getBoolean(name); + } + + @Override + public boolean getDefaultBoolean(String name) { + return delegate.getDefaultBoolean(name); + } + + @Override + public double getDefaultDouble(String name) { + return delegate.getDefaultDouble(name); + } + + @Override + public float getDefaultFloat(String name) { + return delegate.getDefaultFloat(name); + } + + @Override + public int getDefaultInt(String name) { + return delegate.getDefaultInt(name); + } + + @Override + public long getDefaultLong(String name) { + return delegate.getDefaultLong(name); + } + + @Override + public String getDefaultString(String name) { + return delegate.getDefaultString(name); + } + + @Override + public double getDouble(String name) { + return delegate.getDouble(name); + } + + @Override + public float getFloat(String name) { + return delegate.getFloat(name); + } + + @Override + public int getInt(String name) { + return delegate.getInt(name); + } + + @Override + public long getLong(String name) { + return delegate.getLong(name); + } + + @Override + public String getString(String name) { + return delegate.getString(name); + } + + @Override + public boolean isDefault(String name) { + return delegate.isDefault(name); + } + + @Override + public boolean needsSaving() { + return delegate.needsSaving(); + } + + @Override + public void putValue(String name, String value) { + delegate.setValue(name, value); + } + + @Override + public void setDefault(String name, double value) { + delegate.setDefault(name, value); + } + + @Override + public void setDefault(String name, float value) { + delegate.setDefault(name, value); + } + + @Override + public void setDefault(String name, int value) { + delegate.setDefault(name, value); + } + + @Override + public void setDefault(String name, long value) { + delegate.setDefault(name, value); + } + + @Override + public void setDefault(String name, String defaultObject) { + delegate.setDefault(name, defaultObject); + } + + @Override + public void setDefault(String name, boolean value) { + delegate.setDefault(name, value); + } + + @Override + public void setToDefault(String name) { + delegate.setToDefault(name); + } + + @Override + public void setValue(String name, double value) { + delegate.setValue(name, value); + } + + @Override + public void setValue(String name, float value) { + delegate.setValue(name, value); + } + + @Override + public void setValue(String name, int value) { + delegate.setValue(name, value); + } + + @Override + public void setValue(String name, long value) { + delegate.setValue(name, value); + } + + @Override + public void setValue(String name, String value) { + delegate.setValue(name, value); + } + + @Override + public void setValue(String name, boolean value) { + delegate.setValue(name, value); + } +} diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/TargetPrefPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/TargetPrefPage.java index 332b6f0373..c53d5494eb 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/TargetPrefPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/TargetPrefPage.java @@ -39,6 +39,7 @@ import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.model.DBPContextProvider; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.navigator.DBNDataSource; import org.jkiss.dbeaver.model.navigator.DBNNode; @@ -81,9 +82,9 @@ public abstract class TargetPrefPage extends PreferencePage implements IWorkbenc protected abstract Control createPreferenceContent(Composite composite); - protected abstract void loadPreferences(IPreferenceStore store); - protected abstract void savePreferences(IPreferenceStore store); - protected abstract void clearPreferences(IPreferenceStore store); + protected abstract void loadPreferences(DBPPreferenceStore store); + protected abstract void savePreferences(DBPPreferenceStore store); + protected abstract void clearPreferences(DBPPreferenceStore store); protected abstract String getPropertyPageID(); @@ -187,7 +188,7 @@ public abstract class TargetPrefPage extends PreferencePage implements IWorkbenc } { - IPreferenceStore store = useDataSourceSettings() ? + DBPPreferenceStore store = useDataSourceSettings() ? getDataSourceContainer().getPreferenceStore() : DBeaverCore.getGlobalPreferenceStore(); loadPreferences(store); @@ -308,7 +309,7 @@ public abstract class TargetPrefPage extends PreferencePage implements IWorkbenc @Override public final boolean performOk() { - IPreferenceStore store = isDataSourcePreferencePage() ? + DBPPreferenceStore store = isDataSourcePreferencePage() ? getDataSourceContainer().getPreferenceStore() : DBeaverCore.getGlobalPreferenceStore(); if (isDataSourcePreferencePage() && !useDataSourceSettings()) { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java index 387b63e697..b3ef19fcb4 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/properties/DataSourcePropertyFilter.java @@ -22,6 +22,7 @@ import org.eclipse.jface.viewers.IFilter; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; /** @@ -42,7 +43,7 @@ public class DataSourcePropertyFilter implements IFilter { public DataSourcePropertyFilter(DBSDataSourceContainer container) { - IPreferenceStore store = container != null ? + DBPPreferenceStore store = container != null ? container.getPreferenceStore() : DBeaverCore.getGlobalPreferenceStore(); this.showExpensive = store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchPage.java index 3d46572df5..ccb327c175 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/AbstractSearchPage.java @@ -17,19 +17,16 @@ */ package org.jkiss.dbeaver.ui.search; -import org.jkiss.dbeaver.core.Log; import org.eclipse.jface.dialogs.DialogPage; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.viewers.CheckboxTreeViewer; -import org.eclipse.jface.viewers.IStructuredSelection; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.navigator.DBNDataSource; import org.jkiss.dbeaver.model.navigator.DBNModel; import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress; -import org.jkiss.dbeaver.ui.views.navigator.database.DatabaseNavigatorTree; import org.jkiss.utils.CommonUtils; import java.lang.reflect.InvocationTargetException; @@ -62,7 +59,7 @@ public abstract class AbstractSearchPage extends DialogPage implements IObjectSe protected abstract void updateEnablement(); - protected static List loadTreeState(IPreferenceStore store, String propName) + protected static List loadTreeState(DBPPreferenceStore store, String propName) { final List result = new ArrayList(); final String sources = store.getString(propName); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/IObjectSearchPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/IObjectSearchPage.java index a0be27d5ab..e33fded95e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/IObjectSearchPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/IObjectSearchPage.java @@ -20,6 +20,7 @@ package org.jkiss.dbeaver.ui.search; import org.eclipse.jface.dialogs.IDialogPage; import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.model.DBPPreferenceStore; /** * Search page @@ -30,7 +31,7 @@ public interface IObjectSearchPage extends IDialogPage { IObjectSearchQuery createQuery() throws DBException; - void loadState(IPreferenceStore store); + void loadState(DBPPreferenceStore store); - void saveState(IPreferenceStore store); + void saveState(DBPPreferenceStore store); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java index a031b61616..81b2e24738 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/data/SearchDataPage.java @@ -17,17 +17,20 @@ */ package org.jkiss.dbeaver.ui.search.data; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.*; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.events.*; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.struct.*; import org.jkiss.dbeaver.ui.UIUtils; @@ -59,7 +62,7 @@ public class SearchDataPage extends AbstractSearchPage { private SearchDataParams params = new SearchDataParams(); private Set searchHistory = new LinkedHashSet(); private CheckboxTreeManager checkboxTreeManager; - private IPreferenceStore store; + private DBPPreferenceStore store; public SearchDataPage() { super("Database objects search"); @@ -248,7 +251,7 @@ public class SearchDataPage extends AbstractSearchPage { } @Override - public void loadState(IPreferenceStore store) + public void loadState(DBPPreferenceStore store) { params.searchString = store.getString(PROP_MASK); params.caseSensitive = store.getBoolean(PROP_CASE_SENSITIVE); @@ -267,7 +270,7 @@ public class SearchDataPage extends AbstractSearchPage { } @Override - public void saveState(IPreferenceStore store) + public void saveState(DBPPreferenceStore store) { store.setValue(PROP_MASK, params.searchString); store.setValue(PROP_CASE_SENSITIVE, params.caseSensitive); @@ -290,7 +293,7 @@ public class SearchDataPage extends AbstractSearchPage { } } - protected static void saveTreeState(IPreferenceStore store, String propName, DatabaseNavigatorTree tree) + protected static void saveTreeState(DBPPreferenceStore store, String propName, DatabaseNavigatorTree tree) { // Object sources StringBuilder sourcesString = new StringBuilder(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java index d3caf8f342..694fff042e 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/search/metadata/SearchMetadataPage.java @@ -18,7 +18,6 @@ package org.jkiss.dbeaver.ui.search.metadata; import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.*; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; @@ -30,6 +29,7 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.runtime.DBRProcessListener; @@ -387,7 +387,7 @@ public class SearchMetadataPage extends AbstractSearchPage { } @Override - public void loadState(IPreferenceStore store) + public void loadState(DBPPreferenceStore store) { nameMask = store.getString(PROP_MASK); caseSensitive = store.getBoolean(PROP_CASE_SENSITIVE); @@ -414,7 +414,7 @@ public class SearchMetadataPage extends AbstractSearchPage { } @Override - public void saveState(IPreferenceStore store) + public void saveState(DBPPreferenceStore store) { store.setValue(PROP_MASK, nameMask); store.setValue(PROP_CASE_SENSITIVE, caseSensitive); @@ -459,7 +459,7 @@ public class SearchMetadataPage extends AbstractSearchPage { container.setSearchEnabled(enabled); } - protected static void saveTreeState(IPreferenceStore store, String propName, DatabaseNavigatorTree tree) + protected static void saveTreeState(DBPPreferenceStore store, String propName, DatabaseNavigatorTree tree) { // Object sources StringBuilder sourcesString = new StringBuilder(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/utils/GeneralUtils.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/utils/GeneralUtils.java index 3994dadad5..6a32bcdb80 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/utils/GeneralUtils.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/utils/GeneralUtils.java @@ -18,10 +18,10 @@ package org.jkiss.dbeaver.utils; -import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.model.DBPDataSource; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.utils.CommonUtils; import java.io.IOException; @@ -91,7 +91,7 @@ public class GeneralUtils { public static String getDefaultBinaryFileEncoding(DBPDataSource dataSource) { - IPreferenceStore preferenceStore; + DBPPreferenceStore preferenceStore; if (dataSource == null) { preferenceStore = DBeaverCore.getGlobalPreferenceStore(); } else { diff --git a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/Activator.java b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/Activator.java index b5fc9f5070..45c5cb60dd 100644 --- a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/Activator.java +++ b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/Activator.java @@ -17,10 +17,10 @@ */ package org.jkiss.dbeaver.ext.erd; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.jkiss.dbeaver.runtime.RuntimeUtils; +import org.jkiss.dbeaver.model.DBPPreferenceStore; +import org.jkiss.dbeaver.runtime.preferences.BundlePreferenceStore; import org.osgi.framework.BundleContext; import java.util.MissingResourceException; @@ -39,20 +39,19 @@ public class Activator extends AbstractUIPlugin { private static ResourceBundle resourceBundle; - /** - * The constructor - */ + private DBPPreferenceStore preferences; + + /** + * The constructor + */ public Activator() { } - /* - * (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) - */ @Override public void start(BundleContext context) throws Exception { super.start(context); plugin = this; + preferences = new BundlePreferenceStore(getBundle()); try { resourceBundle = ResourceBundle.getBundle(ERDMessages.BUNDLE_NAME); @@ -65,10 +64,6 @@ public class Activator extends AbstractUIPlugin { System.setProperty("sun.java2d.d3d", Boolean.FALSE.toString()); //$NON-NLS-1$ } - /* - * (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) - */ @Override public void stop(BundleContext context) throws Exception { plugin = null; @@ -104,17 +99,7 @@ public class Activator extends AbstractUIPlugin { return resourceBundle; } - /** - * Returns the string from the plugin's resource bundle, or 'key' if not - * found. - */ - public static String getResourceString(String key) - { - ResourceBundle bundle = getResourceBundle(); - try { - return bundle.getString(key); - } catch (MissingResourceException e) { - return key; - } + public DBPPreferenceStore getPreferences() { + return preferences; } } diff --git a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/ERDPreferencesInitializer.java b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/ERDPreferencesInitializer.java index 5cf2b9ae25..32e1bfc206 100644 --- a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/ERDPreferencesInitializer.java +++ b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/ERDPreferencesInitializer.java @@ -1,8 +1,9 @@ package org.jkiss.dbeaver.ext.erd; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; -import org.eclipse.jface.preference.IPreferenceStore; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.RuntimeUtils; +import org.jkiss.dbeaver.runtime.preferences.BundlePreferenceStore; public class ERDPreferencesInitializer extends AbstractPreferenceInitializer { @@ -12,7 +13,7 @@ public class ERDPreferencesInitializer extends AbstractPreferenceInitializer { @Override public void initializeDefaultPreferences() { // Init default preferences - IPreferenceStore store = Activator.getDefault().getPreferenceStore(); + DBPPreferenceStore store = new BundlePreferenceStore(Activator.getDefault().getBundle()); RuntimeUtils.setDefaultPreferenceValue(store, ERDConstants.PREF_PRINT_PAGE_MODE, ERDConstants.PRINT_MODE_DEFAULT); RuntimeUtils.setDefaultPreferenceValue(store, ERDConstants.PREF_PRINT_MARGIN_TOP, ERDConstants.PRINT_MARGIN_DEFAULT); RuntimeUtils.setDefaultPreferenceValue(store, ERDConstants.PREF_PRINT_MARGIN_BOTTOM, ERDConstants.PRINT_MARGIN_DEFAULT); diff --git a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/action/DiagramToggleGridAction.java b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/action/DiagramToggleGridAction.java index 190fad1931..8e8cd45637 100644 --- a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/action/DiagramToggleGridAction.java +++ b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/action/DiagramToggleGridAction.java @@ -21,9 +21,9 @@ package org.jkiss.dbeaver.ext.erd.action; import org.eclipse.jface.action.Action; -import org.eclipse.jface.preference.IPreferenceStore; import org.jkiss.dbeaver.ext.erd.Activator; import org.jkiss.dbeaver.ext.erd.ERDConstants; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.RuntimeUtils; /** @@ -41,7 +41,7 @@ public class DiagramToggleGridAction extends Action @Override public void run() { - final IPreferenceStore store = Activator.getDefault().getPreferenceStore(); + final DBPPreferenceStore store = Activator.getDefault().getPreferences(); final boolean gridEnabled = store.getBoolean(ERDConstants.PREF_GRID_ENABLED); store.setValue(ERDConstants.PREF_GRID_ENABLED, !gridEnabled); RuntimeUtils.savePreferenceStore(store); diff --git a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDAttributeVisibility.java b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDAttributeVisibility.java index f923c6eef5..b2b18f2b4a 100644 --- a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDAttributeVisibility.java +++ b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDAttributeVisibility.java @@ -17,9 +17,10 @@ */ package org.jkiss.dbeaver.ext.erd.editor; -import org.jkiss.dbeaver.core.Log; import org.eclipse.jface.preference.IPreferenceStore; +import org.jkiss.dbeaver.core.Log; import org.jkiss.dbeaver.ext.erd.ERDConstants; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.utils.CommonUtils; /** @@ -60,7 +61,7 @@ public enum ERDAttributeVisibility return PRIMARY; } - public static void setDefaultVisibility(IPreferenceStore store, ERDAttributeVisibility visibility) + public static void setDefaultVisibility(DBPPreferenceStore store, ERDAttributeVisibility visibility) { store.setValue( ERDConstants.PREF_ATTR_VISIBILITY, diff --git a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDPreferencePage.java b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDPreferencePage.java index b5ccb1ecd6..5c03224e4e 100644 --- a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDPreferencePage.java +++ b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/editor/ERDPreferencePage.java @@ -31,6 +31,7 @@ import org.eclipse.ui.IWorkbenchPropertyPage; import org.jkiss.dbeaver.ext.erd.Activator; import org.jkiss.dbeaver.ext.erd.ERDConstants; import org.jkiss.dbeaver.ext.erd.ERDMessages; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; @@ -136,7 +137,7 @@ public class ERDPreferencePage extends PreferencePage implements IWorkbenchPrefe @Override public boolean performOk() { - IPreferenceStore store = Activator.getDefault().getPreferenceStore(); + DBPPreferenceStore store = Activator.getDefault().getPreferences(); store.setValue(ERDConstants.PREF_GRID_ENABLED, gridCheck.getSelection()); store.setValue(ERDConstants.PREF_GRID_SNAP_ENABLED, snapCheck.getSelection()); diff --git a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/model/EntityDiagram.java b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/model/EntityDiagram.java index 0b46e2c244..7f3eb192aa 100644 --- a/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/model/EntityDiagram.java +++ b/plugins/org.jkiss.dbeaver.erd/src/org/jkiss/dbeaver/ext/erd/model/EntityDiagram.java @@ -68,7 +68,7 @@ public class EntityDiagram extends ERDObject public void setAttributeVisibility(ERDAttributeVisibility attributeVisibility) { this.attributeVisibility = attributeVisibility; - ERDAttributeVisibility.setDefaultVisibility(Activator.getDefault().getPreferenceStore(), attributeVisibility); + ERDAttributeVisibility.setDefaultVisibility(Activator.getDefault().getPreferences(), attributeVisibility); } public synchronized void addTable(ERDEntity entity, boolean reflect) diff --git a/plugins/org.jkiss.dbeaver.oracle/src/org/jkiss/dbeaver/ext/oracle/views/PrefPageOracle.java b/plugins/org.jkiss.dbeaver.oracle/src/org/jkiss/dbeaver/ext/oracle/views/PrefPageOracle.java index 22a1685ab9..53b66440af 100644 --- a/plugins/org.jkiss.dbeaver.oracle/src/org/jkiss/dbeaver/ext/oracle/views/PrefPageOracle.java +++ b/plugins/org.jkiss.dbeaver.oracle/src/org/jkiss/dbeaver/ext/oracle/views/PrefPageOracle.java @@ -18,15 +18,16 @@ */ package org.jkiss.dbeaver.ext.oracle.views; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.jkiss.dbeaver.core.DBeaverCore; import org.jkiss.dbeaver.ext.oracle.model.OracleConstants; +import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.preferences.PreferenceStoreDelegate; import org.jkiss.dbeaver.ui.preferences.TargetPrefPage; import org.jkiss.dbeaver.runtime.preferences.SimplePreferenceStore; @@ -44,7 +45,7 @@ public class PrefPageOracle extends TargetPrefPage public PrefPageOracle() { super(); - setPreferenceStore(DBeaverCore.getGlobalPreferenceStore()); + setPreferenceStore(new PreferenceStoreDelegate(DBeaverCore.getGlobalPreferenceStore())); } @Override @@ -91,7 +92,7 @@ public class PrefPageOracle extends TargetPrefPage } @Override - protected void loadPreferences(IPreferenceStore store) + protected void loadPreferences(DBPPreferenceStore store) { explainTableText.setText(store.getString(OracleConstants.PREF_EXPLAIN_TABLE_NAME)); rowidSupportCheck.setSelection(store.getBoolean(OracleConstants.PREF_SUPPORT_ROWID)); @@ -99,7 +100,7 @@ public class PrefPageOracle extends TargetPrefPage } @Override - protected void savePreferences(IPreferenceStore store) + protected void savePreferences(DBPPreferenceStore store) { store.setValue(OracleConstants.PREF_EXPLAIN_TABLE_NAME, explainTableText.getText()); store.setValue(OracleConstants.PREF_SUPPORT_ROWID, rowidSupportCheck.getSelection()); @@ -108,7 +109,7 @@ public class PrefPageOracle extends TargetPrefPage } @Override - protected void clearPreferences(IPreferenceStore store) + protected void clearPreferences(DBPPreferenceStore store) { store.setToDefault(OracleConstants.PREF_EXPLAIN_TABLE_NAME); store.setToDefault(OracleConstants.PREF_SUPPORT_ROWID); -- GitLab