Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ package org.apache.directory.studio.ldapbrowser.ui.views.browser; import org.apache.directory.studio.ldapbrowser.common.actions.CopyAction; import org.apache.directory.studio.ldapbrowser.common.actions.DeleteAction; import org.apache.directory.studio.ldapbrowser.common.actions.DeleteAllAction; import org.apache.directory.studio.ldapbrowser.common.actions.FetchAliasesAction; import org.apache.directory.studio.ldapbrowser.common.actions.FetchOperationalAttributesAction; import org.apache.directory.studio.ldapbrowser.common.actions.FetchReferralsAction; import org.apache.directory.studio.ldapbrowser.common.actions.FetchSubentriesAction; import org.apache.directory.studio.ldapbrowser.common.actions.RenameAction; import org.apache.directory.studio.ldapbrowser.common.actions.proxy.BrowserActionProxy; import org.apache.directory.studio.ldapbrowser.common.actions.proxy.BrowserViewActionProxy; import org.apache.directory.studio.ldapbrowser.common.widgets.browser.BrowserActionGroup; import org.apache.directory.studio.ldapbrowser.ui.actions.BrowserPasteAction; import org.apache.directory.studio.ldapbrowser.ui.actions.CopyDnAction; import org.apache.directory.studio.ldapbrowser.ui.actions.CopyEntryAsCsvAction; import org.apache.directory.studio.ldapbrowser.ui.actions.CopyEntryAsLdifAction; import org.apache.directory.studio.ldapbrowser.ui.actions.CopyUrlAction; import org.apache.directory.studio.ldapbrowser.ui.actions.EntryEditorMenuManager; import org.apache.directory.studio.ldapbrowser.ui.actions.GotoDnAction; import org.apache.directory.studio.ldapbrowser.ui.actions.ImportExportAction; import org.apache.directory.studio.ldapbrowser.ui.actions.LocateEntryInDitAction; import org.apache.directory.studio.ldapbrowser.ui.actions.MoveAction; import org.apache.directory.studio.ldapbrowser.ui.actions.NewBatchOperationAction; import org.apache.directory.studio.ldapbrowser.ui.actions.NewBookmarkAction; import org.apache.directory.studio.ldapbrowser.ui.actions.NewContextEntryAction; import org.apache.directory.studio.ldapbrowser.ui.actions.NewEntryAction; import org.apache.directory.studio.ldapbrowser.ui.actions.NewSearchAction; import org.apache.directory.studio.ldapbrowser.ui.actions.OpenEntryEditorAction; import org.apache.directory.studio.utils.ActionUtils; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.actions.ActionFactory; /** * This class manages all the actions of the browser view. * * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public class BrowserViewActionGroup extends BrowserActionGroup { /** The action to show/hide the DIT. */ private ShowDITAction showDITAction; /** The action to show/hide searches. */ private ShowSearchesAction showSearchesAction; /** The action to show/hide bookmarks. */ private ShowBookmarksAction showBookmarksAction; /** The action to show/hide metadata. */ private ShowDirectoryMetadataEntriesAction showDirectoryMetadataEntriesAction; /** The action to open the browser's preference page. */ private OpenBrowserPreferencePageAction openBrowserPreferencePageAction; /** The action to link the current editor with the browser view. */ private LinkWithEditorAction linkWithEditorAction; /** The Constant locateEntryInDitAction. */ private static final String locateEntryInDitAction = "locateEntryInDitAction"; //$NON-NLS-1$ /** The Constant gotoDnAction. */ private static final String gotoDnAction = "gotoDnAction"; //$NON-NLS-1$ /** The Constant newEntryAction. */ private static final String newEntryAction = "newEntryAction"; //$NON-NLS-1$ /** The Constant newContextEntryAction. */ private static final String newContextEntryAction = "newContextEntryAction"; //$NON-NLS-1$ /** The Constant newSearchAction. */ private static final String newSearchAction = "newSearchAction"; //$NON-NLS-1$ /** The Constant newBookmarkAction. */ private static final String newBookmarkAction = "newBookmarkAction"; //$NON-NLS-1$ /** The Constant newBatchOperationAction. */ private static final String newBatchOperationAction = "newBatchOperationAction"; //$NON-NLS-1$ /** The Constant copyAction. */ private static final String copyAction = "copyAction"; //$NON-NLS-1$ /** The Constant pasteAction. */ private static final String pasteAction = "pasteAction"; //$NON-NLS-1$ /** The Constant deleteAction. */ private static final String deleteAction = "deleteAction"; //$NON-NLS-1$ /** The Constant moveAction. */ private static final String moveAction = "moveAction"; //$NON-NLS-1$ /** The Constant renameAction. */ private static final String renameAction = "renameAction"; //$NON-NLS-1$ /** The Constant copyDnAction. */ private static final String copyDnAction = "copyDnAction"; //$NON-NLS-1$ /** The Constant copyUrlAction. */ private static final String copyUrlAction = "copyUrlAction"; //$NON-NLS-1$ /** The Constant copyEntryAsLdifDnOnlyAction. */ private static final String copyEntryAsLdifDnOnlyAction = "copyEntryAsLdifDnOnlyAction"; //$NON-NLS-1$ /** The Constant copyEntryAsLdifReturningAttributesOnlyAction. */ private static final String copyEntryAsLdifReturningAttributesOnlyAction = "copyEntryAsLdifReturningAttributesOnlyAction"; //$NON-NLS-1$ /** The Constant copyEntryAsLdifAction. */ private static final String copyEntryAsLdifAction = "copyEntryAsLdifAction"; //$NON-NLS-1$ /** The Constant copyEntryAsLdifOperationalAction. */ private static final String copyEntryAsLdifOperationalAction = "copyEntryAsLdifOperationalAction"; //$NON-NLS-1$ /** The Constant copyEntryAsCsvDnOnlyAction. */ private static final String copyEntryAsCsvDnOnlyAction = "copyEntryAsCsvDnOnlyAction"; //$NON-NLS-1$ /** The Constant copyEntryAsCsvReturningAttributesOnlyAction. */ private static final String copyEntryAsCsvReturningAttributesOnlyAction = "copyEntryAsCsvReturningAttributesOnlyAction"; //$NON-NLS-1$ /** The Constant copyEntryAsCsvAction. */ private static final String copyEntryAsCsvAction = "copyEntryAsCsvAction"; //$NON-NLS-1$ /** The Constant copyEntryAsCsvOperationalAction. */ private static final String copyEntryAsCsvOperationalAction = "copyEntryAsCsvOperationalAction"; //$NON-NLS-1$ /** The Constant deleteAllAction. */ private static final String deleteAllAction = "deleteAllAction"; //$NON-NLS-1$ /** The Constant importDsmlAction. */ private static final String importDsmlAction = "importDsmlAction"; //$NON-NLS-1$ /** The Constant importLdifAction. */ private static final String importLdifAction = "importLdifAction"; //$NON-NLS-1$ /** The Constant exportLdifAction. */ private static final String exportLdifAction = "exportLdifAction"; //$NON-NLS-1$ /** The Constant exportDsmlAction. */ private static final String exportDsmlAction = "exportDsmlAction"; //$NON-NLS-1$ /** The Constant exportCsvAction. */ private static final String exportCsvAction = "exportCsvAction"; //$NON-NLS-1$ /** The Constant exportExcelAction. */ private static final String exportExcelAction = "exportExcelAction"; //$NON-NLS-1$ /** The Constant exportOdfAction. */ private static final String exportOdfAction = "exportOdfAction"; //$NON-NLS-1$ /** The Constant fetchOperationalAttributesAction. */ private static final String fetchOperationalAttributesAction = "fetchOperationalAttributesAction"; //$NON-NLS-1$ /** The Constant fetchAliasesAction. */ private static final String fetchAliasesAction = "fetchAliasesAction"; //$NON-NLS-1$ /** The Constant fetchReferralsAction. */ private static final String fetchReferralsAction = "fetchReferralsAction"; //$NON-NLS-1$ /** The Constant fetchSubentriesAction. */ private static final String fetchSubentriesAction = "fetchSubentriesAction"; //$NON-NLS-1$ /** The Constant openEntryEditorAction. */ private static final String openEntryEditorAction = "openEntryEditor"; //$NON-NLS-1$ /** * Creates a new instance of BrowserViewActionGroup and * creates all the actions. * * @param view the browser view */ public BrowserViewActionGroup(BrowserView view) { super(view.getMainWidget(), view.getConfiguration()); TreeViewer viewer = view.getMainWidget().getViewer(); linkWithEditorAction = new LinkWithEditorAction(view); showDITAction = new ShowDITAction(); showSearchesAction = new ShowSearchesAction(); showBookmarksAction = new ShowBookmarksAction(); showDirectoryMetadataEntriesAction = new ShowDirectoryMetadataEntriesAction(); openBrowserPreferencePageAction = new OpenBrowserPreferencePageAction(); browserActionMap.put(newEntryAction, new BrowserViewActionProxy(viewer, new NewEntryAction(view.getSite().getWorkbenchWindow()))); browserActionMap.put(newContextEntryAction, new BrowserViewActionProxy(viewer, new NewContextEntryAction(view.getSite().getWorkbenchWindow()))); browserActionMap.put(newSearchAction, new BrowserViewActionProxy(viewer, new NewSearchAction())); browserActionMap.put(newBookmarkAction, new BrowserViewActionProxy(viewer, new NewBookmarkAction())); browserActionMap.put(newBatchOperationAction, new BrowserViewActionProxy(viewer, new NewBatchOperationAction())); browserActionMap.put(locateEntryInDitAction, new BrowserViewActionProxy(viewer, new LocateEntryInDitAction())); browserActionMap.put(gotoDnAction, new BrowserViewActionProxy(viewer, new GotoDnAction())); browserActionMap.put(pasteAction, new BrowserViewActionProxy(viewer, new BrowserPasteAction())); browserActionMap.put(copyAction, new BrowserViewActionProxy(viewer, new CopyAction((BrowserActionProxy) browserActionMap.get(pasteAction)))); browserActionMap.put(deleteAction, new BrowserViewActionProxy(viewer, new DeleteAction())); browserActionMap.put(moveAction, new BrowserViewActionProxy(viewer, new MoveAction())); browserActionMap.put(renameAction, new BrowserViewActionProxy(viewer, new RenameAction())); browserActionMap.put(copyDnAction, new BrowserViewActionProxy(viewer, new CopyDnAction())); browserActionMap.put(copyUrlAction, new BrowserViewActionProxy(viewer, new CopyUrlAction())); browserActionMap.put(copyEntryAsLdifAction, new BrowserViewActionProxy(viewer, new CopyEntryAsLdifAction(CopyEntryAsLdifAction.MODE_NORMAL))); browserActionMap.put(copyEntryAsLdifDnOnlyAction, new BrowserViewActionProxy(viewer, new CopyEntryAsLdifAction(CopyEntryAsLdifAction.MODE_DN_ONLY))); browserActionMap.put(copyEntryAsLdifReturningAttributesOnlyAction, new BrowserViewActionProxy(viewer, new CopyEntryAsLdifAction(CopyEntryAsLdifAction.MODE_RETURNING_ATTRIBUTES_ONLY))); browserActionMap.put(copyEntryAsLdifOperationalAction, new BrowserViewActionProxy(viewer, new CopyEntryAsLdifAction(CopyEntryAsLdifAction.MODE_INCLUDE_OPERATIONAL_ATTRIBUTES))); browserActionMap.put(copyEntryAsCsvAction, new BrowserViewActionProxy(viewer, new CopyEntryAsCsvAction(CopyEntryAsLdifAction.MODE_NORMAL))); browserActionMap.put(copyEntryAsCsvDnOnlyAction, new BrowserViewActionProxy(viewer, new CopyEntryAsCsvAction(CopyEntryAsLdifAction.MODE_DN_ONLY))); browserActionMap.put(copyEntryAsCsvReturningAttributesOnlyAction, new BrowserViewActionProxy(viewer, new CopyEntryAsCsvAction(CopyEntryAsLdifAction.MODE_RETURNING_ATTRIBUTES_ONLY))); browserActionMap.put(copyEntryAsCsvOperationalAction, new BrowserViewActionProxy(viewer, new CopyEntryAsCsvAction(CopyEntryAsLdifAction.MODE_INCLUDE_OPERATIONAL_ATTRIBUTES))); browserActionMap.put(deleteAllAction, new BrowserViewActionProxy(viewer, new DeleteAllAction())); browserActionMap.put(importDsmlAction, new BrowserViewActionProxy(viewer, new ImportExportAction(ImportExportAction.TYPE_IMPORT_DSML))); browserActionMap.put(exportDsmlAction, new BrowserViewActionProxy(viewer, new ImportExportAction(ImportExportAction.TYPE_EXPORT_DSML))); browserActionMap.put(importLdifAction, new BrowserViewActionProxy(viewer, new ImportExportAction(ImportExportAction.TYPE_IMPORT_LDIF))); browserActionMap.put(exportLdifAction, new BrowserViewActionProxy(viewer, new ImportExportAction(ImportExportAction.TYPE_EXPORT_LDIF))); browserActionMap.put(exportCsvAction, new BrowserViewActionProxy(viewer, new ImportExportAction(ImportExportAction.TYPE_EXPORT_CSV))); browserActionMap.put(exportExcelAction, new BrowserViewActionProxy(viewer, new ImportExportAction(ImportExportAction.TYPE_EXPORT_EXCEL))); browserActionMap.put(exportOdfAction, new BrowserViewActionProxy(viewer, new ImportExportAction(ImportExportAction.TYPE_EXPORT_ODF))); browserActionMap.put(fetchOperationalAttributesAction, new BrowserViewActionProxy(viewer, new FetchOperationalAttributesAction())); browserActionMap.put(fetchAliasesAction, new BrowserViewActionProxy(viewer, new FetchAliasesAction())); browserActionMap.put(fetchReferralsAction, new BrowserViewActionProxy(viewer, new FetchReferralsAction())); browserActionMap.put(fetchSubentriesAction, new BrowserViewActionProxy(viewer, new FetchSubentriesAction())); browserActionMap.put(openEntryEditorAction, new BrowserViewActionProxy(viewer, new OpenEntryEditorAction())); } /** * {@inheritDoc} */ public void dispose() { if (openBrowserPreferencePageAction != null) { linkWithEditorAction.dispose(); linkWithEditorAction = null; showDITAction = null; showSearchesAction = null; showBookmarksAction = null; showDirectoryMetadataEntriesAction = null; openBrowserPreferencePageAction = null; } super.dispose(); } /** * {@inheritDoc} */ public void fillToolBar(IToolBarManager toolBarManager) { toolBarManager.add(browserActionMap.get(UP_ACTION)); toolBarManager.add(new Separator()); toolBarManager.add(browserActionMap.get(REFRESH_ACTION)); toolBarManager.add(new Separator()); toolBarManager.add(collapseAllAction); toolBarManager.add(linkWithEditorAction); toolBarManager.update(true); } /** * {@inheritDoc} */ public void fillMenu(IMenuManager menuManager) { menuManager.add(openSortDialogAction); menuManager.add(new Separator()); menuManager.add(showQuickSearchAction); menuManager.add(new Separator()); menuManager.add(showDITAction); menuManager.add(showSearchesAction); menuManager.add(showBookmarksAction); menuManager.add(showDirectoryMetadataEntriesAction); menuManager.add(new Separator()); menuManager.add(openBrowserPreferencePageAction); menuManager.update(true); } /** * {@inheritDoc} */ public void menuAboutToShow(IMenuManager menuManager) { // new MenuManager newMenuManager = new MenuManager(Messages.getString("BrowserViewActionGroup.New")); //$NON-NLS-1$ newMenuManager.add(browserActionMap.get(newEntryAction)); newMenuManager.add(browserActionMap.get(newContextEntryAction)); newMenuManager.add(new Separator()); newMenuManager.add(browserActionMap.get(newSearchAction)); newMenuManager.add(browserActionMap.get(newBookmarkAction)); newMenuManager.add(new Separator()); newMenuManager.add(browserActionMap.get(newBatchOperationAction)); menuManager.add(newMenuManager); menuManager.add(new Separator()); // navigation menuManager.add(browserActionMap.get(openEntryEditorAction)); MenuManager openWithEntryEditorMenuManager = new EntryEditorMenuManager(mainWidget.getViewer()); menuManager.add(openWithEntryEditorMenuManager); BrowserViewActionProxy leid = (BrowserViewActionProxy) browserActionMap.get(locateEntryInDitAction); leid.setImageDescriptor(leid.getAction().getImageDescriptor()); menuManager.add(leid); menuManager.add(browserActionMap.get(gotoDnAction)); menuManager.add(browserActionMap.get(UP_ACTION)); menuManager.add(new Separator()); // copy/paste/... menuManager.add(browserActionMap.get(copyAction)); menuManager.add(browserActionMap.get(pasteAction)); menuManager.add(browserActionMap.get(deleteAction)); menuManager.add(browserActionMap.get(moveAction)); menuManager.add(browserActionMap.get(renameAction)); MenuManager advancedMenuManager = new MenuManager(Messages.getString("BrowserViewActionGroup.Advanced")); //$NON-NLS-1$ advancedMenuManager.add(browserActionMap.get(copyDnAction)); advancedMenuManager.add(browserActionMap.get(copyUrlAction)); advancedMenuManager.add(new Separator()); advancedMenuManager.add(browserActionMap.get(copyEntryAsLdifDnOnlyAction)); advancedMenuManager.add(browserActionMap.get(copyEntryAsLdifReturningAttributesOnlyAction)); advancedMenuManager.add(browserActionMap.get(copyEntryAsLdifAction)); advancedMenuManager.add(browserActionMap.get(copyEntryAsLdifOperationalAction)); advancedMenuManager.add(new Separator()); advancedMenuManager.add(browserActionMap.get(copyEntryAsCsvDnOnlyAction)); advancedMenuManager.add(browserActionMap.get(copyEntryAsCsvReturningAttributesOnlyAction)); advancedMenuManager.add(browserActionMap.get(copyEntryAsCsvAction)); advancedMenuManager.add(browserActionMap.get(copyEntryAsCsvOperationalAction)); advancedMenuManager.add(new Separator()); advancedMenuManager.add(browserActionMap.get(deleteAllAction)); advancedMenuManager.add(new Separator()); menuManager.add(advancedMenuManager); menuManager.add(new Separator()); // filter, batch menuManager.add(browserActionMap.get(FILTER_CHILDREN_ACTION)); if ((browserActionMap.get(UNFILTER_CHILDREN_ACTION)).isEnabled()) { menuManager.add(browserActionMap.get(UNFILTER_CHILDREN_ACTION)); } menuManager.add(browserActionMap.get(OPEN_QUICK_SEARCH_ACTION)); menuManager.add(new Separator()); // import/export MenuManager importMenuManager = new MenuManager(Messages.getString("BrowserViewActionGroup.Import")); //$NON-NLS-1$ importMenuManager.add(browserActionMap.get(importLdifAction)); importMenuManager.add(browserActionMap.get(importDsmlAction)); importMenuManager.add(new Separator()); menuManager.add(importMenuManager); MenuManager exportMenuManager = new MenuManager(Messages.getString("BrowserViewActionGroup.Export")); //$NON-NLS-1$ exportMenuManager.add(browserActionMap.get(exportLdifAction)); exportMenuManager.add(browserActionMap.get(exportDsmlAction)); exportMenuManager.add(new Separator()); exportMenuManager.add(browserActionMap.get(exportCsvAction)); exportMenuManager.add(browserActionMap.get(exportExcelAction)); exportMenuManager.add(browserActionMap.get(exportOdfAction)); menuManager.add(exportMenuManager); menuManager.add(new Separator()); // refresh menuManager.add(browserActionMap.get(REFRESH_ACTION)); MenuManager fetchMenuManager = new MenuManager(Messages.getString("BrowserViewActionGroup.Fetch")); //$NON-NLS-1$ if (browserActionMap.get(fetchOperationalAttributesAction).isEnabled()) { fetchMenuManager.add(browserActionMap.get(fetchOperationalAttributesAction)); } if (browserActionMap.get(fetchAliasesAction).isEnabled()) { fetchMenuManager.add(browserActionMap.get(fetchAliasesAction)); } if (browserActionMap.get(fetchReferralsAction).isEnabled()) { fetchMenuManager.add(browserActionMap.get(fetchReferralsAction)); } if (browserActionMap.get(fetchSubentriesAction).isEnabled()) { fetchMenuManager.add(browserActionMap.get(fetchSubentriesAction)); } menuManager.add(fetchMenuManager); menuManager.add(new Separator()); // additions menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); menuManager.add(new Separator()); // properties menuManager.add(browserActionMap.get(PROPERTY_DIALOG_ACTION)); } /** * {@inheritDoc} */ public void activateGlobalActionHandlers() { if (actionBars != null) { actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), browserActionMap.get(copyAction)); actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), browserActionMap.get(pasteAction)); actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), browserActionMap.get(deleteAction)); actionBars.setGlobalActionHandler(ActionFactory.MOVE.getId(), browserActionMap.get(moveAction)); actionBars.setGlobalActionHandler(ActionFactory.RENAME.getId(), browserActionMap.get(renameAction)); } super.activateGlobalActionHandlers(); IAction leid = browserActionMap.get(locateEntryInDitAction); ActionUtils.activateActionHandler(leid); } /** * {@inheritDoc} */ public void deactivateGlobalActionHandlers() { if (actionBars != null) { actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), null); actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), null); actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), null); actionBars.setGlobalActionHandler(ActionFactory.RENAME.getId(), null); actionBars.setGlobalActionHandler(ActionFactory.MOVE.getId(), null); } super.deactivateGlobalActionHandlers(); IAction leid = browserActionMap.get(locateEntryInDitAction); ActionUtils.deactivateActionHandler(leid); } }