提交 3004601d 编写于 作者: J jurgen

Tunnelized connections icons

Former-commit-id: b6897599
上级 f62f89b6
/*
* Copyright (C) 2010-2014 Serge Rieder
* serge@jkiss.org
*
* This library 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 org.jkiss.dbeaver.model;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
/**
* Object with lock state.
*/
public interface DBPGuardedObject
{
boolean isObjectLocked();
void setObjectLock(DBRProgressMonitor monitor, boolean locked)
throws DBCException;
}
......@@ -20,6 +20,7 @@ package org.jkiss.dbeaver.model.navigator;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.graphics.Image;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.ext.IDataSourceContainerProvider;
......@@ -145,6 +146,19 @@ public class DBNDataSource extends DBNDatabaseNode implements IAdaptable, IDataS
return dataSource.isConnected();
}
@Override
public Image getNodeIcon() {
Image image = super.getNodeIcon();
DataSourceDescriptor dataSource = getDataSourceContainer();
if (dataSource.isConnectionReadOnly()) {
image = DBNModel.getLockedOverlayImage(image);
}
if (dataSource.hasNetworkHandlers()) {
image = DBNModel.getNetworkOverlayImage(image);
}
return image;
}
@Override
public Object getAdapter(Class adapter) {
if (adapter == DBNDataSource.class) {
......
......@@ -117,9 +117,6 @@ public abstract class DBNDatabaseNode extends DBNNode implements IActionFilter,
if (image != null && object instanceof DBSObjectStateful) {
image = DBNModel.getStateOverlayImage(image, ((DBSObjectStateful) object).getObjectState());
}
if (object instanceof DBPGuardedObject && ((DBPGuardedObject) object).isObjectLocked()) {
image = DBNModel.getLockedOverlayImage(image);
}
return image;
}
......
......@@ -56,6 +56,7 @@ public class DBNModel implements IResourceChangeListener {
private static Map<Image, Map<DBSObjectState, Image>> overlayStateImageCache = new IdentityHashMap<Image, Map<DBSObjectState, Image>>();
private static Map<Image, Image> overlayLockImageCache = new IdentityHashMap<Image, Image>();
private static Map<Image, Image> overlayNetworkImageCache = new IdentityHashMap<Image, Image>();
private DBNRoot root;
private final List<IDBNListener> listeners = new ArrayList<IDBNListener>();
......@@ -131,6 +132,10 @@ public class DBNModel implements IResourceChangeListener {
img.dispose();
}
overlayLockImageCache.clear();
for (Image img : overlayNetworkImageCache.values()) {
img.dispose();
}
overlayNetworkImageCache.clear();
}
}
......@@ -507,4 +512,17 @@ public class DBNModel implements IResourceChangeListener {
return result;
}
public static synchronized Image getNetworkOverlayImage(Image image)
{
final ImageDescriptor overlayImage = DBIcon.OVER_EXTERNAL.getImageDescriptor();
Image result = overlayNetworkImageCache.get(image);
if (result == null) {
OverlayImageDescriptor oid = new OverlayImageDescriptor(image.getImageData());
oid.setTopRight(new ImageDescriptor[] {overlayImage} );
result = oid.createImage();
overlayNetworkImageCache.put(image, result);
}
return result;
}
}
......@@ -79,7 +79,6 @@ public class DataSourceDescriptor
IAdaptable,
DBEPrivateObjectEditor,
DBSObjectStateful,
DBPGuardedObject,
DBPRefreshableObject
{
static final Log log = LogFactory.getLog(DataSourceDescriptor.class);
......@@ -515,6 +514,15 @@ public class DataSourceDescriptor
this.description = description;
}
public boolean hasNetworkHandlers() {
for (DBWHandlerConfiguration handler : connectionInfo.getDeclaredHandlers()) {
if (handler.isEnabled()) {
return true;
}
}
return false;
}
public Date getCreateDate()
{
return createDate;
......@@ -1010,19 +1018,6 @@ public class DataSourceDescriptor
// just do nothing
}
@Override
public boolean isObjectLocked()
{
return isConnectionReadOnly();
}
@Override
public void setObjectLock(DBRProgressMonitor monitor, boolean locked) throws DBCException
{
// just do nothing
}
public static String generateNewId(DriverDescriptor driver)
{
return driver.getId() + "-" + System.currentTimeMillis() + "-" + new Random().nextInt();
......
......@@ -231,6 +231,7 @@ public enum DBIcon
OVER_LAMP("over_lamp", "/icons/over/lamp_ovr.png"), //$NON-NLS-1$ //$NON-NLS-2$
OVER_KEY("over_key", "/icons/over/key_ovr.png"), //$NON-NLS-1$ //$NON-NLS-2$
OVER_LOCK("over_lock", "/icons/over/lock_ovr.png"), //$NON-NLS-1$ //$NON-NLS-2$
OVER_EXTERNAL("over_external", "/icons/over/external_ovr.png"), //$NON-NLS-1$ //$NON-NLS-2$
OVER_REFERENCE("over_reference", "/icons/over/reference_ovr.png"); //$NON-NLS-1$ //$NON-NLS-2$
private final String token;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册