/******************************************************************************* * Copyright 2005-2006, CHISEL Group, University of Victoria, Victoria, BC, Canada * and IBM Corporation. All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * The Chisel Group, University of Victoria *******************************************************************************/ package net.sourceforge.tagsea.core.ui; import net.sourceforge.tagsea.TagSEAPlugin; import net.sourceforge.tagsea.core.ui.internal.actions.ContextAction; import net.sourceforge.tagsea.core.ui.internal.actions.GeneralizeAction; import net.sourceforge.tagsea.core.ui.internal.actions.TagDeleteAction; import net.sourceforge.tagsea.core.ui.internal.actions.TagRenameAction; import net.sourceforge.tagsea.core.ui.internal.actions.TagRenamer; import net.sourceforge.tagsea.core.ui.internal.actions.TagToggleTreeAction; import net.sourceforge.tagsea.core.ui.internal.actions.TagToggleTreeNamingAction; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Event; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.actions.ActionContext; import org.eclipse.ui.actions.ActionGroup; /** * Action Group for the tags viewer. * @author Del Myers */ class TagActionGroup extends ActionGroup implements IPropertyChangeListener { private TagRenameAction renameAction; private ContextAction generalizeAction; private TagDeleteAction deleteAction; private Action tagCloudToggleAction; private TagToggleTreeNamingAction toggleTreeNamingAction; private TagToggleTreeAction toggleTreeAction; private TagSEAView tagSEAView; public TagActionGroup(TagSEAView view) { this.tagSEAView = view; renameAction = new TagRenameAction(view.getTagsTreeViewer(), new TagRenamer(), (String[])view.getTagsTreeViewer().getColumnProperties()); renameAction.setImageDescriptor(TagSEAPlugin.getImageDescriptor("/icons/rename.gif")); renameAction.setText("Rename Tag"); renameAction.setToolTipText("Rename Tag"); generalizeAction = new GeneralizeAction(); generalizeAction.setImageDescriptor(TagSEAPlugin.getImageDescriptor("/icons/taggeneralize.gif")); generalizeAction.setText("Push Tag Into Parent"); generalizeAction.setToolTipText("Push Tag Into Parent"); deleteAction = new TagDeleteAction(); deleteAction.setText("Delete Tag"); deleteAction.setToolTipText("Removes references to this tag and its children from all tagged locations"); deleteAction.setImageDescriptor(TagSEAPlugin.getDefault().getImageRegistry().getDescriptor(ITagSEAImageConstants.IMG_DELETE)); deleteAction.setDisabledImageDescriptor(TagSEAPlugin.getDefault().getImageRegistry().getDescriptor(ITagSEAImageConstants.IMG_DELETE_DISABLED)); toggleTreeNamingAction = new TagToggleTreeNamingAction(); toggleTreeNamingAction.setText("Keep Hierarchical Names"); toggleTreeNamingAction.setDescription("Toggles whether renaming will keep the tree hierarchy."); toggleTreeAction = new TagToggleTreeAction(view); toggleTreeAction.setChecked(view.isViewAsHierarchy()); toggleTreeAction.setText("View Tags as Hierarchy"); toggleTreeAction.setDescription("Toggles the display mode of tags."); toggleTreeAction.setImageDescriptor(TagSEAPlugin.getDefault().getImageRegistry().getDescriptor(ITagSEAImageConstants.IMG_TAG_HIERARCHY)); tagCloudToggleAction = new Action("View Tags in Cloud", IAction.AS_CHECK_BOX) { @Override public void run() { tagSEAView.setViewAsCloud(isChecked()); updateActionBars(); } }; tagCloudToggleAction.setImageDescriptor(TagSEAPlugin.getImageDescriptor("icons/cloud.gif")); tagCloudToggleAction.setToolTipText("View Tags in Cloud"); refreshActions(); IPreferenceStore store = TagSEAPlugin.getDefault().getPreferenceStore(); store.addPropertyChangeListener(this); } public void runDefaultAction(ISelection selection) { } public void runDefaultAction(Event event) { } /* (non-Javadoc) * @see org.eclipse.ui.actions.ActionGroup#setContext(org.eclipse.ui.actions.ActionContext) */ @Override public void setContext(ActionContext context) { renameAction.setContext(context); generalizeAction.setContext(context); deleteAction.setContext(context); updateActionBars(); super.setContext(context); } @Override public void updateActionBars() { if (tagSEAView.isViewAsCloud()) { renameAction.setEnabled(false); //deleteAction.setEnabled(false); generalizeAction.setEnabled(false); } super.updateActionBars(); } /* (non-Javadoc) * @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager) */ @Override public void fillContextMenu(IMenuManager menu) { if (!tagSEAView.isViewAsCloud()) { menu.add(renameAction); menu.add(generalizeAction); menu.add(new Separator()); menu.add(deleteAction); menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } super.fillContextMenu(menu); } /* (non-Javadoc) * @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars) */ @Override public void fillActionBars(IActionBars actionBars) { super.fillActionBars(actionBars); //MenuManager tagsMenu = new MenuManager("Tags"); // actionBars.getToolBarManager().add(new Separator()); actionBars.getToolBarManager().add(toggleTreeAction); actionBars.getToolBarManager().add(tagCloudToggleAction); // actionBars.getMenuManager().add(new Separator()); // actionBars.getMenuManager().add(deleteAction); // actionBars.getMenuManager().add(new Separator()); } private void refreshActions() { //reset the context to update other actions. setContext(getContext()); } /* (non-Javadoc) * @see org.eclipse.ui.actions.ActionGroup#dispose() */ @Override public void dispose() { super.dispose(); IPreferenceStore store = TagSEAPlugin.getDefault().getPreferenceStore(); store.removePropertyChangeListener(this); } /* (non-Javadoc) * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) */ public void propertyChange(PropertyChangeEvent event) { refreshActions(); } IAction getDeleteAction() { return deleteAction; } /** * Runs the action used to edit tag names. */ public void runEditAction() { renameAction.run(); } }