提交 c604699b 编写于 作者: S serge@jkiss.org

#5543 Navigator: configure non-existent folders visibility

上级 1a655642
......@@ -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);
}
}
......@@ -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,6 +148,8 @@ public class DBNProject extends DBNResource
@Override
protected IResource[] addImplicitMembers(IResource[] members) {
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);
......@@ -154,6 +158,7 @@ public class DBNProject extends DBNResource
members = ArrayUtils.add(IResource.class, members, rhDefaultRoot);
}
}
}
return super.addImplicitMembers(members);
}
......
......@@ -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;
}
......
......@@ -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;
......
......@@ -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.
......
......@@ -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.
......
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册