From c604699b1174c8350372bf643003a29ec6030bc1 Mon Sep 17 00:00:00 2001 From: "serge@jkiss.org" Date: Wed, 20 Mar 2019 15:46:26 -0400 Subject: [PATCH] #5543 Navigator: configure non-existent folders visibility --- .../src/org/jkiss/dbeaver/ModelPreferences.java | 4 ++++ .../dbeaver/model/navigator/DBNProject.java | 17 +++++++++++------ .../dbeaver/model/navigator/DBNResource.java | 2 +- .../ui/internal/UINavigatorMessages.java | 2 ++ .../ui/internal/UINavigatorMessages.properties | 2 ++ .../UINavigatorPreferencesInitializer.java | 2 +- .../preferences/PrefPageDatabaseNavigator.java | 6 +++++- 7 files changed, 26 insertions(+), 9 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/ModelPreferences.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/ModelPreferences.java index fa23f2ac5b..51b750272b 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/ModelPreferences.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/ModelPreferences.java @@ -117,6 +117,8 @@ public final class ModelPreferences public static final String UI_DRIVERS_SOURCES = "ui.drivers.sources"; //$NON-NLS-1$ public static final String UI_MAVEN_REPOSITORIES = "ui.maven.repositories"; //$NON-NLS-1$ + public static final String NAVIGATOR_SHOW_FOLDER_PLACEHOLDERS = "navigator.show.folder.placeholders"; //$NON-NLS-1$ + private static Bundle mainBundle; private static DBPPreferenceStore preferences; @@ -223,5 +225,7 @@ public final class ModelPreferences PrefUtils.setDefaultPreferenceValue(store, UI_DRIVERS_VERSION_UPDATE, false); PrefUtils.setDefaultPreferenceValue(store, UI_DRIVERS_HOME, ""); PrefUtils.setDefaultPreferenceValue(store, UI_DRIVERS_SOURCES, "https://dbeaver.io/files/jdbc/"); + + PrefUtils.setDefaultPreferenceValue(store, ModelPreferences.NAVIGATOR_SHOW_FOLDER_PLACEHOLDERS, true); } } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNProject.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNProject.java index 2e7509cf67..62b9f86048 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNProject.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNProject.java @@ -20,6 +20,7 @@ import org.eclipse.core.resources.*; import org.eclipse.core.runtime.CoreException; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; +import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBPImage; import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; @@ -28,6 +29,7 @@ import org.jkiss.dbeaver.model.app.DBPResourceHandler; import org.jkiss.dbeaver.model.app.DBPResourceHandlerDescriptor; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor; +import org.jkiss.dbeaver.runtime.DBWorkbench; import org.jkiss.utils.ArrayUtils; import java.util.ArrayList; @@ -146,12 +148,15 @@ public class DBNProject extends DBNResource @Override protected IResource[] addImplicitMembers(IResource[] members) { - DBPProjectManager projectManager = getModel().getPlatform().getProjectManager(); - for (DBPResourceHandlerDescriptor rh : projectManager.getAllResourceHandlers()) { - IFolder rhDefaultRoot = projectManager.getResourceDefaultRoot(getProject(), rh, false); - if (rhDefaultRoot != null && !rhDefaultRoot.exists()) { - // Add as explicit member - members = ArrayUtils.add(IResource.class, members, rhDefaultRoot); + if (DBWorkbench.getPlatform().getPreferenceStore().getBoolean(ModelPreferences.NAVIGATOR_SHOW_FOLDER_PLACEHOLDERS)) { + // Add non-existing folders + DBPProjectManager projectManager = getModel().getPlatform().getProjectManager(); + for (DBPResourceHandlerDescriptor rh : projectManager.getAllResourceHandlers()) { + IFolder rhDefaultRoot = projectManager.getResourceDefaultRoot(getProject(), rh, false); + if (rhDefaultRoot != null && !rhDefaultRoot.exists()) { + // Add as explicit member + members = ArrayUtils.add(IResource.class, members, rhDefaultRoot); + } } } return super.addImplicitMembers(members); diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNResource.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNResource.java index 95a91ce660..0a5736b140 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNResource.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/navigator/DBNResource.java @@ -167,7 +167,7 @@ public class DBNResource extends DBNNode// implements IContributorResourceAdapte return EMPTY_NODES; } else { filterChildren(result); - final DBNNode[] childNodes = result.toArray(new DBNNode[result.size()]); + final DBNNode[] childNodes = result.toArray(new DBNNode[0]); sortChildren(childNodes); return childNodes; } diff --git a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.java b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.java index badd3f7350..cf3e26a292 100644 --- a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.java +++ b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.java @@ -77,6 +77,8 @@ public class UINavigatorMessages extends NLS { public static String pref_page_database_general_label_order_elements_alphabetically; public static String pref_page_database_general_label_folders_first; public static String pref_page_database_general_label_folders_first_tip; + public static String pref_page_database_general_label_show_folder_placeholders; + public static String pref_page_database_general_label_show_folder_placeholders_tip; public static String pref_page_database_general_label_group_database_by_driver; public static String pref_page_database_general_label_long_list_fetch_size; public static String pref_page_database_general_label_long_list_fetch_size_tip; diff --git a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.properties b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.properties index c49aeccd26..8612bd48ca 100644 --- a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.properties +++ b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorMessages.properties @@ -53,6 +53,8 @@ pref_page_database_general_label_show_tips_in_tree_tip = Show object tips (e.g. pref_page_database_general_label_order_elements_alphabetically = Order elements alphabetically pref_page_database_general_label_folders_first = Folders first pref_page_database_general_label_folders_first_tip = Show folders before regular elements +pref_page_database_general_label_show_folder_placeholders = Show placeholders for special folders +pref_page_database_general_label_show_folder_placeholders_tip = Show special folders (e.g. Scripts) even if they wasn't created yet pref_page_database_general_label_group_database_by_driver = Group databases by driver pref_page_database_general_label_long_list_fetch_size = Elements fetch size pref_page_database_general_label_long_list_fetch_size_tip = Children elements fetch size for long lists. Rest of elements can be read by double clicking on the last element. diff --git a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorPreferencesInitializer.java b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorPreferencesInitializer.java index 65db2fb32d..cda7aff733 100644 --- a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorPreferencesInitializer.java +++ b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/internal/UINavigatorPreferencesInitializer.java @@ -17,12 +17,12 @@ package org.jkiss.dbeaver.ui.internal; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.DBWorkbench; import org.jkiss.dbeaver.ui.navigator.NavigatorPreferences; import org.jkiss.dbeaver.ui.navigator.database.NavigatorViewBase; import org.jkiss.dbeaver.utils.PrefUtils; -import org.jkiss.dbeaver.utils.RuntimeUtils; /** * Preference initializer. diff --git a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java index 898a88524f..e10b87a0d4 100644 --- a/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java +++ b/plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java @@ -24,6 +24,7 @@ import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.IWorkbenchPropertyPage; import org.jkiss.code.Nullable; +import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.ui.internal.UINavigatorMessages; import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; import org.jkiss.dbeaver.runtime.DBWorkbench; @@ -46,6 +47,7 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork private Button showObjectTipsCheck; private Button sortCaseInsensitiveCheck; private Button sortFoldersFirstCheck; + private Button showResourceFolderPlaceholdersCheck; private Button groupByDriverCheck; private Text longListFetchSizeText; private Combo dsDoubleClickBehavior; @@ -76,7 +78,7 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork sortCaseInsensitiveCheck = UIUtils.createCheckbox(navigatorGroup, UINavigatorMessages.pref_page_database_general_label_order_elements_alphabetically, "", false, 2); sortFoldersFirstCheck = UIUtils.createCheckbox(navigatorGroup, UINavigatorMessages.pref_page_database_general_label_folders_first, UINavigatorMessages.pref_page_database_general_label_folders_first_tip, false, 2); - + showResourceFolderPlaceholdersCheck = UIUtils.createCheckbox(navigatorGroup, UINavigatorMessages.pref_page_database_general_label_show_folder_placeholders, UINavigatorMessages.pref_page_database_general_label_show_folder_placeholders_tip, false, 2); groupByDriverCheck = UIUtils.createCheckbox(navigatorGroup, UINavigatorMessages.pref_page_database_general_label_group_database_by_driver, "", false, 2); groupByDriverCheck.setEnabled(false); @@ -110,6 +112,7 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork showObjectTipsCheck.setSelection(store.getBoolean(NavigatorPreferences.NAVIGATOR_SHOW_OBJECT_TIPS)); sortCaseInsensitiveCheck.setSelection(store.getBoolean(NavigatorPreferences.NAVIGATOR_SORT_ALPHABETICALLY)); sortFoldersFirstCheck.setSelection(store.getBoolean(NavigatorPreferences.NAVIGATOR_SORT_FOLDERS_FIRST)); + showResourceFolderPlaceholdersCheck.setSelection(store.getBoolean(ModelPreferences.NAVIGATOR_SHOW_FOLDER_PLACEHOLDERS)); groupByDriverCheck.setSelection(store.getBoolean(NavigatorPreferences.NAVIGATOR_GROUP_BY_DRIVER)); longListFetchSizeText.setText(store.getString(NavigatorPreferences.NAVIGATOR_LONG_LIST_FETCH_SIZE)); NavigatorViewBase.DoubleClickBehavior objDCB = NavigatorViewBase.DoubleClickBehavior.valueOf(store.getString(NavigatorPreferences.NAVIGATOR_OBJECT_DOUBLE_CLICK)); @@ -127,6 +130,7 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork store.setValue(NavigatorPreferences.NAVIGATOR_SHOW_OBJECT_TIPS, showObjectTipsCheck.getSelection()); store.setValue(NavigatorPreferences.NAVIGATOR_SORT_ALPHABETICALLY, sortCaseInsensitiveCheck.getSelection()); store.setValue(NavigatorPreferences.NAVIGATOR_SORT_FOLDERS_FIRST, sortFoldersFirstCheck.getSelection()); + store.setValue(ModelPreferences.NAVIGATOR_SHOW_FOLDER_PLACEHOLDERS, showResourceFolderPlaceholdersCheck.getSelection()); store.setValue(NavigatorPreferences.NAVIGATOR_GROUP_BY_DRIVER, groupByDriverCheck.getSelection()); store.setValue(NavigatorPreferences.NAVIGATOR_LONG_LIST_FETCH_SIZE, longListFetchSizeText.getText()); NavigatorViewBase.DoubleClickBehavior objDCB = NavigatorViewBase.DoubleClickBehavior.EXPAND; -- GitLab