/*
* Copyright (C) 2006 SQL Explorer Development Team http://sourceforge.net/projects/eclipsesql
*
* This program 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 library 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 library; if not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package net.sourceforge.sqlexplorer.connections;
import net.sourceforge.sqlexplorer.connections.actions.AbstractConnectionTreeAction;
import net.sourceforge.sqlexplorer.connections.actions.CommitAction;
import net.sourceforge.sqlexplorer.connections.actions.ConnectAliasAction;
import net.sourceforge.sqlexplorer.connections.actions.NewDatabaseStructureViewAction;
import net.sourceforge.sqlexplorer.connections.actions.NewEditorAction;
import net.sourceforge.sqlexplorer.connections.actions.RollbackAction;
import net.sourceforge.sqlexplorer.dbproduct.Alias;
import net.sourceforge.sqlexplorer.dbproduct.SQLConnection;
import net.sourceforge.sqlexplorer.dbproduct.User;
import net.sourceforge.sqlexplorer.plugin.SQLExplorerPlugin;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.actions.ActionGroup;
/**
* ActionGroup for Database Structure View. This group controls what context menu actions are being shown for which
* node.
*
* @author Davy Vanherbergen
*/
public class ConnectionTreeActionGroup extends ActionGroup {
/**
* Fill the node context menu with all the correct actions.
*
* @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
*/
public void fillContextMenu(IMenuManager menu) {
ConnectionsView view = SQLExplorerPlugin.getDefault().getConnectionsView();
Object[] selection = (view == null) ? null : view.getSelected();
// If nothing is selected, then show the default ones
if (selection == null || selection.length != 1) {
// PTODO qzhang delete the Context meun in the Connections View for feature 3519.
// addAction(menu, new NewAliasAction());
// addAction(menu, new CloseConnectionAction());
// addAction(menu, new CloseAllConnectionsAction());
return;
}
if (selection[0] instanceof Alias) {
Alias alias = (Alias) selection[0];
addAction(menu, new NewEditorAction());
addAction(menu, new NewDatabaseStructureViewAction());
addAction(menu, new ConnectAliasAction());
menu.add(new Separator());
for (User user : alias.getUsers())
if (!user.isAutoCommit()) {
addAction(menu, new CommitAction());
addAction(menu, new RollbackAction());
menu.add(new Separator());
break;
}
// addAction(menu, new NewUserAction());
// addAction(menu, new ChangeAliasAction());
// addAction(menu, new CopyAliasAction());
// addAction(menu, new DeleteAction());
} else if (selection[0] instanceof User) {
User user = (User) selection[0];
addAction(menu, new NewEditorAction());
addAction(menu, new NewDatabaseStructureViewAction());
addAction(menu, new ConnectAliasAction());
menu.add(new Separator());
if (!user.isAutoCommit()) {
addAction(menu, new CommitAction());
addAction(menu, new RollbackAction());
menu.add(new Separator());
}
// addAction(menu, new NewUserAction());
// addAction(menu, new EditUserAction());
// addAction(menu, new CopyUserAction());
// addAction(menu, new DeleteAction());
} else if (selection[0] instanceof SQLConnection) {
SQLConnection connection = (SQLConnection) selection[0];
addAction(menu, new NewEditorAction());
addAction(menu, new NewDatabaseStructureViewAction());
menu.add(new Separator());
if (!connection.getUser().isAutoCommit()) {
addAction(menu, new CommitAction());
addAction(menu, new RollbackAction());
menu.add(new Separator());
}
// addAction(menu, new CloseConnectionAction());
}
}
private boolean addAction(IMenuManager menu, AbstractConnectionTreeAction action) {
if (action.isAvailable()) {
menu.add(action);
action.setEnabled(true);
return true;
}
return false;
}
}