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.common.widgets.browser; import java.util.HashMap; import java.util.Map; import org.apache.directory.studio.connection.ui.actions.CollapseAllAction; import org.apache.directory.studio.ldapbrowser.common.BrowserCommonConstants; import org.apache.directory.studio.ldapbrowser.common.actions.FilterChildrenAction; import org.apache.directory.studio.ldapbrowser.common.actions.OpenQuickSearchAction; import org.apache.directory.studio.ldapbrowser.common.actions.PropertiesAction; import org.apache.directory.studio.ldapbrowser.common.actions.RefreshAction; import org.apache.directory.studio.ldapbrowser.common.actions.UnfilterChildrenAction; import org.apache.directory.studio.ldapbrowser.common.actions.UpAction; import org.apache.directory.studio.ldapbrowser.common.actions.proxy.ActionHandlerManager; import org.apache.directory.studio.ldapbrowser.common.actions.proxy.BrowserViewActionProxy; import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection; import org.apache.directory.studio.utils.ActionUtils; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.actions.ActionFactory; /** * This class manages all the actions of the browser widget. * * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public class BrowserActionGroup implements ActionHandlerManager, IMenuListener { /** The open sort dialog action. */ protected OpenSortDialogAction openSortDialogAction; /** The show quick search action. */ protected ShowQuickSearchAction showQuickSearchAction; /** The collapse all action. */ protected CollapseAllAction collapseAllAction; /** The Constant upAction. */ protected static final String UP_ACTION = "upAction"; //$NON-NLS-1$ /** The Constant refreshAction. */ protected static final String REFRESH_ACTION = "refreshAction"; //$NON-NLS-1$ /** The Constant filterChildrenAction. */ protected static final String FILTER_CHILDREN_ACTION = "filterChildrenAction"; //$NON-NLS-1$ /** The Constant openQuickSearchAction. */ protected static final String OPEN_QUICK_SEARCH_ACTION = "openQuickSearch"; //$NON-NLS-1$ /** The Constant unfilterChildrenAction. */ protected static final String UNFILTER_CHILDREN_ACTION = "unfilterChildrenAction"; //$NON-NLS-1$ /** The Constant propertyDialogAction. */ protected static final String PROPERTY_DIALOG_ACTION = "propertyDialogAction"; //$NON-NLS-1$ /** The browser action map. */ protected Map<String, BrowserViewActionProxy> browserActionMap; /** The action bars. */ protected IActionBars actionBars; /** The browser's main widget. */ protected BrowserWidget mainWidget; /** * Creates a new instance of BrowserActionGroup. * * @param mainWidget the browser's main widget * @param configuration the browser's configuration */ public BrowserActionGroup(BrowserWidget mainWidget, BrowserConfiguration configuration) { this.mainWidget = mainWidget; this.browserActionMap = new HashMap<String, BrowserViewActionProxy>(); TreeViewer viewer = mainWidget.getViewer(); openSortDialogAction = new OpenSortDialogAction(configuration.getPreferences()); showQuickSearchAction = new ShowQuickSearchAction(mainWidget.getQuickSearchWidget()); collapseAllAction = new CollapseAllAction(viewer); browserActionMap.put(OPEN_QUICK_SEARCH_ACTION, new BrowserViewActionProxy(viewer, new OpenQuickSearchAction(mainWidget))); browserActionMap.put(UP_ACTION, new BrowserViewActionProxy(viewer, new UpAction(viewer))); browserActionMap.put(REFRESH_ACTION, new BrowserViewActionProxy(viewer, new RefreshAction())); browserActionMap.put(FILTER_CHILDREN_ACTION, new BrowserViewActionProxy(viewer, new FilterChildrenAction())); browserActionMap.put(UNFILTER_CHILDREN_ACTION, new BrowserViewActionProxy(viewer, new UnfilterChildrenAction())); browserActionMap.put(PROPERTY_DIALOG_ACTION, new BrowserViewActionProxy(viewer, new PropertiesAction())); } /** * Disposes this action group. */ public void dispose() { if (mainWidget != null) { openSortDialogAction.dispose(); openSortDialogAction = null; showQuickSearchAction.dispose(); showQuickSearchAction = null; collapseAllAction.dispose(); collapseAllAction = null; for (BrowserViewActionProxy action : browserActionMap.values()) { action.dispose(); } browserActionMap.clear(); browserActionMap = null; actionBars = null; mainWidget = null; } } /** * Enables the action handlers. * * @param actionBars the action bars */ public void enableGlobalActionHandlers(IActionBars actionBars) { this.actionBars = actionBars; } /** * Fills the tool bar. * * @param toolBarManager the tool bar manager */ 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.update(true); } /** * Fills the local menu. * * @param menuManager the local menu manager */ public void fillMenu(IMenuManager menuManager) { menuManager.add(openSortDialogAction); menuManager.add(new Separator()); menuManager.add(showQuickSearchAction); menuManager.add(new Separator()); menuManager.update(true); } /** * Fills the context menu. * * @param menuManager the context menu manager */ public void fillContextMenu(IMenuManager menuManager) { menuManager.setRemoveAllWhenShown(true); menuManager.addMenuListener(this); } /** * {@inheritDoc} * * This implementation fills the context menu. */ public void menuAboutToShow(IMenuManager menuManager) { // up menuManager.add(browserActionMap.get(UP_ACTION)); menuManager.add(new Separator()); // filter 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()); // refresh menuManager.add(browserActionMap.get(REFRESH_ACTION)); menuManager.add(new Separator()); // additions menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); menuManager.add(new Separator()); // properties menuManager.add(browserActionMap.get(PROPERTY_DIALOG_ACTION)); } /** * Activates the action handlers. */ public void activateGlobalActionHandlers() { if (actionBars != null) { actionBars.setGlobalActionHandler(ActionFactory.REFRESH.getId(), (IAction) browserActionMap.get(REFRESH_ACTION)); actionBars.setGlobalActionHandler(ActionFactory.PROPERTIES.getId(), (IAction) browserActionMap.get(PROPERTY_DIALOG_ACTION)); actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), showQuickSearchAction); // IWorkbenchActionDefinitionIds.FIND_REPLACE actionBars.updateActionBars(); } else { IAction pda = browserActionMap.get(PROPERTY_DIALOG_ACTION); pda.setActionDefinitionId(BrowserCommonConstants.CMD_PROPERTIES); ActionUtils.activateActionHandler(pda); IAction ra = browserActionMap.get(REFRESH_ACTION); ActionUtils.activateActionHandler(ra); showQuickSearchAction.setActionDefinitionId(BrowserCommonConstants.CMD_FIND); ActionUtils.activateActionHandler(showQuickSearchAction); } IAction ua = browserActionMap.get(UP_ACTION); ActionUtils.activateActionHandler(ua); } /** * Deactivates the action handlers. */ public void deactivateGlobalActionHandlers() { if (actionBars != null) { actionBars.setGlobalActionHandler(ActionFactory.REFRESH.getId(), null); actionBars.setGlobalActionHandler(ActionFactory.PROPERTIES.getId(), null); actionBars.updateActionBars(); } else { IAction ra = browserActionMap.get(REFRESH_ACTION); ActionUtils.deactivateActionHandler(ra); IAction pda = browserActionMap.get(PROPERTY_DIALOG_ACTION); ActionUtils.deactivateActionHandler(pda); } IAction ua = browserActionMap.get(UP_ACTION); ActionUtils.deactivateActionHandler(ua); } /** * Sets the connection input to all actions * * @param connection the connection */ public void setInput(IBrowserConnection connection) { for (BrowserViewActionProxy action : browserActionMap.values()) { action.inputChanged(connection); } } }