/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.hibernate.eclipse.console.views; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IViewPart; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ActionGroup; import org.eclipse.ui.actions.SelectionListenerAction; import org.hibernate.console.ConsoleConfiguration; import org.hibernate.eclipse.console.actions.AddConfigurationAction; import org.hibernate.eclipse.console.actions.CloseConfigAction; import org.hibernate.eclipse.console.actions.CriteriaEditorAction; import org.hibernate.eclipse.console.actions.DeleteConfigurationAction; import org.hibernate.eclipse.console.actions.EditConsoleConfiguration; import org.hibernate.eclipse.console.actions.HQLScratchpadAction; import org.hibernate.eclipse.console.actions.OpenMappingAction; import org.hibernate.eclipse.console.actions.OpenSourceAction; import org.hibernate.eclipse.console.actions.RefreshAction; import org.hibernate.eclipse.console.actions.RenameAction; import org.jboss.tools.hibernate.runtime.spi.IPersistentClass; import org.jboss.tools.hibernate.runtime.spi.IProperty; /** * @author max * */ public class ConfigurationsViewActionGroup extends ActionGroup { /** * menu group for open primal editors related actions. * Value: <code>"group.primalEditors"</code> */ public static final String GROUP_PRIMAL_EDITORS = "group.primalEditors"; //$NON-NLS-1$ public static final String GROUP_PRIMAL_EDITORS_LAST = "group.primalEditors.last"; //$NON-NLS-1$ /** * menu group for Hibernate Console Configuration related actions. * Value: <code>"group.consoleConfig"</code> */ public static final String GROUP_CONSOLE_CONFIG = "group.consoleConfig"; //$NON-NLS-1$ public static final String GROUP_CONSOLE_CONFIG_LAST = "group.consoleConfig.last"; //$NON-NLS-1$ /** * menu group for addition Hibernate related actions. * Value: <code>"group.addition"</code> */ public static final String GROUP_ADDITION = "group.addition"; //$NON-NLS-1$ public static final String GROUP_ADDITION_LAST = "group.addition.last"; //$NON-NLS-1$ /** * menu group for open other editors related actions. * Value: <code>"group.otherEditors"</code> */ public static final String GROUP_OTHER_EDITORS = "group.otherEditors"; //$NON-NLS-1$ public static final String GROUP_OTHER_EDITORS_LAST = "group.otherEditors.last"; //$NON-NLS-1$ private Action addConfigurationAction; private SelectionListenerAction closeConfigAction; private SelectionListenerAction deleteConfigurationAction; private SelectionListenerAction refreshAction; //private SelectionListenerAction connectAction; private SelectionListenerAction reloadConfigurationAction; private SelectionListenerAction schemaExportAction; private EditConsoleConfiguration editConfigurationAction; private final StructuredViewer selectionProvider; private SelectionListenerAction hqlEditorAction; private CriteriaEditorAction criteriaEditorAction; private SelectionListenerAction openMappingAction; private SelectionListenerAction openSourceAction; private SelectionListenerAction renameAction; public ConfigurationsViewActionGroup(IViewPart part, StructuredViewer selectionProvider) { this.selectionProvider = selectionProvider; addConfigurationAction = new AddConfigurationAction(part); closeConfigAction = new CloseConfigAction(selectionProvider); selectionProvider.addSelectionChangedListener(closeConfigAction); deleteConfigurationAction = new DeleteConfigurationAction(selectionProvider); selectionProvider.addSelectionChangedListener(deleteConfigurationAction); refreshAction = new RefreshAction(selectionProvider); selectionProvider.addSelectionChangedListener(refreshAction); reloadConfigurationAction = new ReloadConfigurationAction(selectionProvider); selectionProvider.addSelectionChangedListener(reloadConfigurationAction); //connectAction = new BuildSessionFactoryAction(selectionProvider); //selectionProvider.addSelectionChangedListener(connectAction); /*IMenuManager manager = part.getViewSite().getActionBars().getMenuManager(); manager.add(addConfigurationAction);*/ schemaExportAction = new SchemaExportAction(selectionProvider); selectionProvider.addSelectionChangedListener(schemaExportAction); editConfigurationAction = new EditConsoleConfiguration(); selectionProvider.addSelectionChangedListener(editConfigurationAction); hqlEditorAction = new HQLScratchpadAction(); selectionProvider.addSelectionChangedListener(hqlEditorAction); criteriaEditorAction = new CriteriaEditorAction(); selectionProvider.addSelectionChangedListener(criteriaEditorAction); openMappingAction = new OpenMappingAction(); selectionProvider.addSelectionChangedListener(openMappingAction); openSourceAction = new OpenSourceAction(); selectionProvider.addSelectionChangedListener(openSourceAction); renameAction = new RenameAction(selectionProvider); selectionProvider.addSelectionChangedListener(renameAction); } public void dispose() { super.dispose(); selectionProvider.removeSelectionChangedListener(closeConfigAction); selectionProvider.removeSelectionChangedListener(deleteConfigurationAction); selectionProvider.removeSelectionChangedListener(refreshAction); selectionProvider.removeSelectionChangedListener(reloadConfigurationAction); selectionProvider.removeSelectionChangedListener(schemaExportAction); selectionProvider.removeSelectionChangedListener(editConfigurationAction); selectionProvider.removeSelectionChangedListener(hqlEditorAction); selectionProvider.removeSelectionChangedListener(criteriaEditorAction); } public void fillContextMenu(IMenuManager menu) { if (getContext() == null) { return; } IStructuredSelection selection = (IStructuredSelection) getContext().getSelection(); if (selection == null) { return; } Object first = selection.getFirstElement(); menu.add(new Separator(GROUP_PRIMAL_EDITORS)); menu.appendToGroup(GROUP_PRIMAL_EDITORS, hqlEditorAction); menu.appendToGroup(GROUP_PRIMAL_EDITORS, criteriaEditorAction); menu.add(new GroupMarker(GROUP_PRIMAL_EDITORS_LAST)); menu.add(new Separator(GROUP_CONSOLE_CONFIG)); menu.appendToGroup(GROUP_CONSOLE_CONFIG, addConfigurationAction); if (first instanceof ConsoleConfiguration) { menu.appendToGroup(GROUP_CONSOLE_CONFIG, reloadConfigurationAction); menu.appendToGroup(GROUP_CONSOLE_CONFIG, editConfigurationAction); menu.appendToGroup(GROUP_CONSOLE_CONFIG, closeConfigAction); menu.appendToGroup(GROUP_CONSOLE_CONFIG, deleteConfigurationAction); } menu.add(new GroupMarker(GROUP_CONSOLE_CONFIG_LAST)); menu.add(new Separator(GROUP_ADDITION)); menu.appendToGroup(GROUP_ADDITION, refreshAction); if (first instanceof ConsoleConfiguration){ menu.appendToGroup(GROUP_ADDITION, schemaExportAction); } menu.add(new GroupMarker(GROUP_ADDITION_LAST)); menu.add(new Separator(GROUP_OTHER_EDITORS)); // TODO: shouldn't these and maybe the others not be defined via menu extension points ? if (first != null && (first instanceof IPersistentClass || (first instanceof IProperty && ((IProperty)first).classIsPropertyClass()))) { menu.appendToGroup(GROUP_OTHER_EDITORS, openSourceAction); menu.appendToGroup(GROUP_OTHER_EDITORS, openMappingAction); } menu.add(new GroupMarker(GROUP_OTHER_EDITORS_LAST)); } public void fillActionBars(IActionBars actionBars) { actionBars.getToolBarManager().add(reloadConfigurationAction); actionBars.getToolBarManager().add(addConfigurationAction); actionBars.getToolBarManager().add(hqlEditorAction); actionBars.getToolBarManager().add(criteriaEditorAction); actionBars.setGlobalActionHandler(ActionFactory.RENAME.getId(), renameAction); actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), deleteConfigurationAction); } }