/* * 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.actions; import org.apache.directory.studio.connection.ui.actions.StudioAction; import org.apache.directory.studio.ldapbrowser.common.widgets.browser.BrowserCategory; import org.apache.directory.studio.ldapbrowser.common.widgets.browser.BrowserEntryPage; import org.apache.directory.studio.ldapbrowser.common.widgets.browser.BrowserSearchResultPage; import org.apache.directory.studio.ldapbrowser.core.model.AttributeHierarchy; import org.apache.directory.studio.ldapbrowser.core.model.IAttribute; import org.apache.directory.studio.ldapbrowser.core.model.IBookmark; import org.apache.directory.studio.ldapbrowser.core.model.IEntry; import org.apache.directory.studio.ldapbrowser.core.model.ISearch; import org.apache.directory.studio.ldapbrowser.core.model.ISearchResult; import org.apache.directory.studio.ldapbrowser.core.model.IValue; import org.apache.directory.studio.ldifparser.model.LdifFile; import org.apache.directory.studio.ldifparser.model.LdifPart; import org.apache.directory.studio.ldifparser.model.container.LdifContainer; import org.eclipse.jface.action.IAction; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PlatformUI; /** * This abstract class must be extended by each Action related to the Browser. * * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> */ public abstract class BrowserAction extends StudioAction implements IWorkbenchWindowActionDelegate { /** The selected Browser View Categories */ private BrowserCategory[] selectedBrowserViewCategories; /** The selected Entries */ private IEntry[] selectedEntries; /** The selected Browser Entry Pages */ private BrowserEntryPage[] selectedBrowserEntryPages; /** The selected Searches */ private ISearch[] selectedSearches; /** The selected Search Results */ private ISearchResult[] selectedSearchResults; /** The selected Browser Search Result Pages */ private BrowserSearchResultPage[] selectedBrowserSearchResultPages; /** The selected Bookmarks */ private IBookmark[] selectedBookmarks; /** The selected Attributes */ private IAttribute[] selectedAttributes; /** The selected Attribute Hierarchies */ private AttributeHierarchy[] selectedAttributeHierarchies; /** The selected Values */ private IValue[] selectedValues; /** The selectec LDIF Model */ private LdifFile selectedLdifModel; /** The selected LDIF Containers */ private LdifContainer[] selectedLdifContainers; /** The selected LDIF Parts */ private LdifPart[] selectedLdifParts; /** The selected properties. */ protected String[] selectedProperties; /** The input */ private Object input; /** * Creates a new instance of BrowserAction. */ protected BrowserAction() { init(); } /** * {@inheritDoc} */ public void init( IWorkbenchWindow window ) { init(); } /** * {@inheritDoc} */ public void run( IAction action ) { this.run(); } /** * {@inheritDoc} */ public void selectionChanged( IAction action, ISelection selection ) { setSelectedBrowserViewCategories( BrowserSelectionUtils.getBrowserViewCategories( selection ) ); setSelectedEntries( BrowserSelectionUtils.getEntries( selection ) ); setSelectedBrowserEntryPages( BrowserSelectionUtils.getBrowserEntryPages( selection ) ); setSelectedSearchResults( BrowserSelectionUtils.getSearchResults( selection ) ); setSelectedBrowserSearchResultPages( BrowserSelectionUtils.getBrowserSearchResultPages( selection ) ); setSelectedBookmarks( BrowserSelectionUtils.getBookmarks( selection ) ); setSelectedSearches( BrowserSelectionUtils.getSearches( selection ) ); setSelectedAttributes( BrowserSelectionUtils.getAttributes( selection ) ); setSelectedAttributeHierarchies( BrowserSelectionUtils.getAttributeHierarchie( selection ) ); setSelectedValues( BrowserSelectionUtils.getValues( selection ) ); action.setEnabled( this.isEnabled() ); action.setText( this.getText() ); action.setToolTipText( this.getText() ); } /** * Returns the text for this action. * <p> * This method is associated with the <code>TEXT</code> property; * property change events are reported when its value changes. * </p> * * @return the text, or <code>null</code> if none */ public abstract String getText(); /** * Returns the image for this action as an image descriptor. * <p> * This method is associated with the <code>IMAGE</code> property; * property change events are reported when its value changes. * </p> * * @return the image, or <code>null</code> if this action has no image */ public abstract ImageDescriptor getImageDescriptor(); /** * Returns the command identifier. * * @return the command identifier */ public abstract String getCommandId(); /** * Returns whether this action is enabled. * <p> * This method is associated with the <code>ENABLED</code> property; * property change events are reported when its value changes. * </p> * * @return <code>true</code> if enabled, and * <code>false</code> if disabled */ public abstract boolean isEnabled(); /** * Runs this action. * Each action implementation must define the steps needed to carry out this action. * The default implementation of this method in <code>Action</code> * does nothing. */ public abstract void run(); /** * Initializes this action */ private void init() { selectedBrowserViewCategories = new BrowserCategory[0]; selectedEntries = new IEntry[0]; selectedBrowserEntryPages = new BrowserEntryPage[0]; selectedSearches = new ISearch[0]; selectedSearchResults = new ISearchResult[0]; selectedBrowserSearchResultPages = new BrowserSearchResultPage[0]; selectedBookmarks = new IBookmark[0]; selectedAttributes = new IAttribute[0]; selectedAttributeHierarchies = new AttributeHierarchy[0]; selectedValues = new IValue[0]; selectedLdifModel = null; selectedLdifContainers = new LdifContainer[0]; selectedLdifParts = new LdifPart[0]; selectedProperties = new String[0]; input = null; } /** * {@inheritDoc} */ public void dispose() { selectedBrowserViewCategories = new BrowserCategory[0]; selectedEntries = new IEntry[0]; selectedBrowserEntryPages = new BrowserEntryPage[0]; selectedSearches = new ISearch[0]; selectedSearchResults = new ISearchResult[0]; selectedBrowserSearchResultPages = new BrowserSearchResultPage[0]; selectedBookmarks = new IBookmark[0]; selectedAttributes = new IAttribute[0]; selectedAttributeHierarchies = new AttributeHierarchy[0]; selectedValues = new IValue[0]; selectedLdifModel = null; selectedLdifContainers = new LdifContainer[0]; selectedLdifParts = new LdifPart[0]; selectedProperties = new String[0]; input = null; } /** * Returns the current active shell * * @return the current active shell */ protected Shell getShell() { return PlatformUI.getWorkbench().getDisplay().getActiveShell(); } /** * Gets the selected Attributes. * * @return the selected attributes */ public IAttribute[] getSelectedAttributes() { return selectedAttributes; } /** * Sets the selected Attributes. * * @param selectedAttributes the selected attributes to set */ public void setSelectedAttributes( IAttribute[] selectedAttributes ) { this.selectedAttributes = selectedAttributes; } /** * Gets the selected Bookmarks. * * @return the selected Bookmarks */ public IBookmark[] getSelectedBookmarks() { return selectedBookmarks; } /** * Sets the selected Bookmarks. * * @param selectedBookmarks the selected Bookmarks to set */ public void setSelectedBookmarks( IBookmark[] selectedBookmarks ) { this.selectedBookmarks = selectedBookmarks; } /** * Gets the selected Browser View categories. * * @return the selected Browser View categories */ public BrowserCategory[] getSelectedBrowserViewCategories() { return selectedBrowserViewCategories; } /** * Sets the selected Browser View categories. * * @param selectedBrowserViewCategories the selected Browser View categories to set */ public void setSelectedBrowserViewCategories( BrowserCategory[] selectedBrowserViewCategories ) { this.selectedBrowserViewCategories = selectedBrowserViewCategories; } /** * Get the selected Entries. * * @return the selected entries */ public IEntry[] getSelectedEntries() { return selectedEntries; } /** * Sets the selected Entries. * * @param selectedEntries the selected Entries to set */ public void setSelectedEntries( IEntry[] selectedEntries ) { this.selectedEntries = selectedEntries; } /** * Gets the selected Searches. * * @return the selected Searches */ public ISearch[] getSelectedSearches() { return selectedSearches; } /** * Sets the selected Searches. * * @param selectedSearches the selected Searches to set */ public void setSelectedSearches( ISearch[] selectedSearches ) { this.selectedSearches = selectedSearches; } /** * Gets the selected Search Results. * * @return the selected Search Results */ public ISearchResult[] getSelectedSearchResults() { return selectedSearchResults; } /** * Sets the selected Search Results. * * @param selectedSearchResults the selected Search Results to set */ public void setSelectedSearchResults( ISearchResult[] selectedSearchResults ) { this.selectedSearchResults = selectedSearchResults; } /** * Gets the selected Values. * * @return the selected Values */ public IValue[] getSelectedValues() { return selectedValues; } /** * Sets the selected Values. * * @param selectedValues the selected values to set */ public void setSelectedValues( IValue[] selectedValues ) { this.selectedValues = selectedValues; } /** * Gets the input. * * @return the input */ public Object getInput() { return input; } /** * Sets the input. * * @param input the input to set */ public void setInput( Object input ) { this.input = input; } /** * Gets the selected LDIF Containers. * * @return the selected LDIF Containers */ public LdifContainer[] getSelectedLdifContainers() { return selectedLdifContainers; } /** * Sets the selected LDIF Containers. * * @param selectedLdifContainers the selected LDIF Containers to set */ public void setSelectedLdifContainers( LdifContainer[] selectedLdifContainers ) { this.selectedLdifContainers = selectedLdifContainers; } /** * Gets the selected LDIF Model. * * @return the selected LDIF Model */ public LdifFile getSelectedLdifModel() { return selectedLdifModel; } /** * Sets the selected LDIF Model. * * @param selectedLdifModel the selected LDIF Model to set */ public void setSelectedLdifModel( LdifFile selectedLdifModel ) { this.selectedLdifModel = selectedLdifModel; } /** * Gets the selected LDIF Parts. * * @return the selected LDIF Parts */ public LdifPart[] getSelectedLdifParts() { return selectedLdifParts; } /** * Sets the selected LDIF Parts. * * @param selectedLdifParts the selected LDIF Parts to set */ public void setSelectedLdifParts( LdifPart[] selectedLdifParts ) { this.selectedLdifParts = selectedLdifParts; } /** * Gets the selected Browser Entry Pages. * * @return the selected Browser Entru Pages */ public BrowserEntryPage[] getSelectedBrowserEntryPages() { return selectedBrowserEntryPages; } /** * Sets the selected Browser Entry Pages. * * @param selectedBrowserEntryPages the selected Browser Entry Pages to set */ public void setSelectedBrowserEntryPages( BrowserEntryPage[] selectedBrowserEntryPages ) { this.selectedBrowserEntryPages = selectedBrowserEntryPages; } /** * Gets the selected Browser Search Result Pages. * * @return the selected Browser Search Result Pages */ public BrowserSearchResultPage[] getSelectedBrowserSearchResultPages() { return selectedBrowserSearchResultPages; } /** * Sets the selected Browser Search Result Pages. * * @param selectedBrowserSearchResultPages the selected Browser Search result Pages to set */ public void setSelectedBrowserSearchResultPages( BrowserSearchResultPage[] selectedBrowserSearchResultPages ) { this.selectedBrowserSearchResultPages = selectedBrowserSearchResultPages; } /** * Gets the selected Attribute Hierarchies. * * @return the selected Attribute Hierarchies */ public AttributeHierarchy[] getSelectedAttributeHierarchies() { return selectedAttributeHierarchies; } /** * Sets the selected Attribute Hierarchies. * * @param ahs the selected Attribute Hierarchies to set */ public void setSelectedAttributeHierarchies( AttributeHierarchy[] ahs ) { this.selectedAttributeHierarchies = ahs; } /** * Gets the selected properties. * * @return the selected properties */ public String[] getSelectedProperties() { return selectedProperties; } /** * Sets the selected properties. * * @param selectedProperties the selected properties */ public void setSelectedProperties( String[] selectedProperties ) { this.selectedProperties = selectedProperties; } }