package org.teiid.designer.runtime.ui.server;
import static org.teiid.designer.runtime.ui.DqpUiConstants.UTIL;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.actions.BaseSelectionListenerAction;
import org.teiid.designer.runtime.TeiidServer;
import org.teiid.designer.runtime.spi.ITeiidServer;
import org.teiid.designer.runtime.ui.DqpUiConstants;
import org.teiid.designer.runtime.ui.DqpUiPlugin;
import org.teiid.designer.ui.common.viewsupport.UiBusyIndicator;
/**
* @since 8.0
*/
public class DisconnectFromServerAction extends BaseSelectionListenerAction {
private final Display display;
/**
* @param display
*/
public DisconnectFromServerAction( Display display ) {
super(UTIL.getString("serverDisconnectActionText")); //$NON-NLS-1$
setToolTipText(UTIL.getString("serverDisconnectActionToolTip")); //$NON-NLS-1$
setImageDescriptor(DqpUiPlugin.getDefault().getImageDescriptor(DqpUiConstants.Images.SERVER_ERROR_ICON));
setEnabled(false);
this.display = display;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
IStructuredSelection sselection = getStructuredSelection();
final ITeiidServer teiidServer = RuntimeAssistant.getServerFromSelection(sselection);
UiBusyIndicator.showWhile(display, new Runnable() {
@Override
public void run() {
teiidServer.disconnect();
}
});
}
/**
* {@inheritDoc}
*
* @see org.eclipse.ui.actions.BaseSelectionListenerAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection)
*/
@Override
protected boolean updateSelection( IStructuredSelection selection ) {
ITeiidServer teiidServer = RuntimeAssistant.getServerFromSelection(selection);
return ((selection.size() == 1) && (teiidServer != null));
}
}