提交 ef5a96a8 编写于 作者: S Serge Rider

Merge remote-tracking branch 'origin/devel' into devel

......@@ -72,6 +72,12 @@
namespace="org.jkiss.dbeaver.core.datasourceContainer"
properties="driverId,driverClass,connected"
type="org.jkiss.dbeaver.model.DBPDataSourceContainer"/>
<propertyTester
class="org.jkiss.dbeaver.ui.actions.FolderPropertyTester"
id="org.jkiss.dbeaver.ui.actions.FolderPropertyTester"
namespace="org.jkiss.dbeaver.core.folder"
properties="connected"
type="org.jkiss.dbeaver.model.navigator.DBNLocalFolder"/>
<propertyTester
class="org.jkiss.dbeaver.ui.views.process.ProcessPropertyTester"
id="org.jkiss.dbeaver.ui.views.process.ProcessPropertyTester"
......@@ -118,6 +124,7 @@
<command id="org.jkiss.dbeaver.core.connect" name="%command.org.jkiss.dbeaver.core.connect.name" description="%command.org.jkiss.dbeaver.core.connect.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.disconnect" name="%command.org.jkiss.dbeaver.core.disconnect.name" description="%command.org.jkiss.dbeaver.core.disconnect.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.folder.disconnect" name="%command.org.jkiss.dbeaver.core.disconnect.name" description="%command.org.jkiss.dbeaver.core.disconnect.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.invalidate" name="%command.org.jkiss.dbeaver.core.invalidate.name" description="%command.org.jkiss.dbeaver.core.invalidate.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.disconnectProject" name="%command.org.jkiss.dbeaver.core.disconnectProject.name" description="%command.org.jkiss.dbeaver.core.disconnectProject.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.disconnectAll" name="%command.org.jkiss.dbeaver.core.disconnectAll.name" description="%command.org.jkiss.dbeaver.core.disconnectAll.description" categoryId="org.jkiss.dbeaver.core.database"/>
......@@ -151,6 +158,7 @@
<image commandId="org.jkiss.dbeaver.core.connect" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/connect.png"/>
<image commandId="org.jkiss.dbeaver.core.invalidate" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/reconnect.png"/>
<image commandId="org.jkiss.dbeaver.core.disconnect" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/disconnect.png"/>
<image commandId="org.jkiss.dbeaver.folder.disconnect" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/disconnect.png"/>
<image commandId="org.jkiss.dbeaver.core.commit" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/commit.png"/>
<image commandId="org.jkiss.dbeaver.core.rollback" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/rollback.png"/>
<image commandId="org.jkiss.dbeaver.core.txn.log" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/txn_log.png"/>
......@@ -228,6 +236,19 @@
</or>
</definition>
<definition id="org.jkiss.dbeaver.core.folder.connected">
<or>
<with variable="selection">
<count value="+"/>
<iterate operator="and">
<adapt type="org.jkiss.dbeaver.model.navigator.DBNLocalFolder">
<test property="org.jkiss.dbeaver.core.folder.connected" value="true"/>
</adapt>
</iterate>
</with>
</or>
</definition>
<definition id="org.jkiss.dbeaver.core.datasource.disconnected">
<or>
<with variable="selection">
......@@ -294,6 +315,9 @@
<handler commandId="org.jkiss.dbeaver.core.disconnect" class="org.jkiss.dbeaver.ui.actions.datasource.DataSourceDisconnectHandler">
<enabledWhen><reference definitionId="org.jkiss.dbeaver.core.datasource.connected"/></enabledWhen>
</handler>
<handler commandId="org.jkiss.dbeaver.folder.disconnect" class="org.jkiss.dbeaver.ui.actions.datasource.FolderDisconnectHandler">
<enabledWhen><reference definitionId="org.jkiss.dbeaver.core.folder.connected"/></enabledWhen>
</handler>
<handler commandId="org.jkiss.dbeaver.core.disconnectAll" class="org.jkiss.dbeaver.ui.actions.datasource.DataSourceDisconnectAllHandler"/>
<handler commandId="org.jkiss.dbeaver.core.disconnectOther" class="org.jkiss.dbeaver.ui.actions.datasource.DataSourceDisconnectOtherHandler">
<enabledWhen>
......@@ -746,6 +770,9 @@
</with>
</visibleWhen>
</command>
<command commandId="org.jkiss.dbeaver.folder.disconnect">
<visibleWhen checkEnabled="true"/>
</command>
</menuContribution>
......
package org.jkiss.dbeaver.ui.actions;
import org.eclipse.core.expressions.PropertyTester;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.navigator.DBNLocalFolder;
public class FolderPropertyTester extends PropertyTester {
static protected final Log log = Log.getLog(FolderPropertyTester.class);
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
if (!(receiver instanceof DBNLocalFolder)) {
log.info(String.format("%s cannot be used with %s type", this.getClass().getName(), receiver.getClass().getName()));
return false;
}
DBNLocalFolder localFolder = (DBNLocalFolder) receiver;
return localFolder.hasConnected();
}
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.ui.actions.datasource;
import java.util.Iterator;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.handlers.HandlerUtil;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.navigator.DBNLocalFolder;
public class FolderDisconnectHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getCurrentSelection(event);
if (selection instanceof IStructuredSelection) {
IStructuredSelection treeSelection = (IStructuredSelection) selection;
@SuppressWarnings("rawtypes")
Iterator it = treeSelection.iterator();
while (it.hasNext()) {
Object el = it.next();
if (el instanceof DBNLocalFolder) {
DBNLocalFolder localFolder = (DBNLocalFolder) el;
localFolder.getNestedDataSources().forEach(ds -> {
final DBPDataSourceContainer dataSourceContainer = ds.getObject();
if (ds!=null && ds.getObject().isConnected()) {
DataSourceHandler.disconnectDataSource(dataSourceContainer, null);
}
});
}
}
}
return null;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册