/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.rdb.core.actions.global;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
import com.hangum.tadpole.engine.define.DBGroupDefine;
import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
import com.hangum.tadpole.engine.query.dao.system.UserDBResourceDAO;
import com.hangum.tadpole.engine.query.dao.system.userdb.ResourcesDAO;
import com.hangum.tadpole.engine.security.TadpoleSecurityManager;
import com.hangum.tadpole.rdb.core.Activator;
import com.hangum.tadpole.rdb.core.Messages;
import com.hangum.tadpole.rdb.core.actions.connections.QueryEditorAction;
import com.hangum.tadpole.rdb.core.viewers.connections.ManagerViewer;
import com.swtdesigner.ResourceManager;
/**
* 현재 선택된 디비의 릴레이션 화면을 오픈합니다.
*
* @author hangum
*
*/
public class OpenQueryEditorAction extends Action implements ISelectionListener, IWorkbenchAction {
private final static String ID = "com.hangum.db.browser.rap.core.actions.global.OpenQueryEditorAction"; //$NON-NLS-1$
protected final IWorkbenchWindow window;
protected IStructuredSelection iss;
protected UserDBDAO userDB;
public OpenQueryEditorAction(IWorkbenchWindow window) {
this.window = window;
setId(ID);
setText(Messages.get().EditSQL);
setToolTipText(Messages.get().EditSQL);
setImageDescriptor( ResourceManager.getPluginImageDescriptor(Activator.PLUGIN_ID, "resources/icons/sql-query.png"));
setEnabled(false);
window.getSelectionService().addPostSelectionListener(this);
}
@Override
public void run() {
QueryEditorAction qea = new QueryEditorAction();
qea.run(userDB);
}
@Override
public void dispose() {
window.getSelectionService().removePostSelectionListener(this);
}
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
IStructuredSelection sel = (IStructuredSelection)selection;
setEnabled(false);
if(sel != null) {
ManagerViewer ev = (ManagerViewer)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ManagerViewer.ID);
Object obj = ((IStructuredSelection)ev.getManagerTV().getSelection()).getFirstElement();
if( obj instanceof UserDBDAO ) {
userDB = (UserDBDAO)obj;
isSelectEnable();
} else if(obj instanceof UserDBResourceDAO) {
UserDBResourceDAO userDBResource = (UserDBResourceDAO)obj;
userDB = userDBResource.getParent();
isSelectEnable();
} else if(obj instanceof ResourcesDAO) {
ResourcesDAO resourcesDAO = (ResourcesDAO)obj;
userDB = resourcesDAO.getUserDBDAO();
isSelectEnable();
}
}
}
/**
* is select button enable
*/
private void isSelectEnable() {
if(TadpoleSecurityManager.getInstance().isLock(userDB)) {
if(DBGroupDefine.MONGODB_GROUP != userDB.getDBGroup()) {
setEnabled(true);
}
}
}
}