Esempio n. 1
0
 @Override
 public DBPImage getNodeIcon() {
   DBPImage image = null;
   final DBSObject object = getObject();
   if (object instanceof DBPImageProvider) {
     image = ((DBPImageProvider) object).getObjectImage();
   }
   if (image == null) {
     DBXTreeNode meta = getMeta();
     if (meta != null) {
       image = meta.getIcon(this);
     }
   }
   if (image != null && object instanceof DBPStatefulObject) {
     image = DBNModel.getStateOverlayImage(image, ((DBPStatefulObject) object).getObjectState());
   }
   return image;
 }
Esempio n. 2
0
  private void loadChildren(
      DBRProgressMonitor monitor,
      final DBXTreeNode meta,
      final DBNDatabaseNode[] oldList,
      final List<DBNDatabaseNode> toList)
      throws DBException {
    if (monitor.isCanceled()) {
      return;
    }
    this.filtered = false;

    List<DBXTreeNode> childMetas = meta.getChildren(this);
    if (CommonUtils.isEmpty(childMetas)) {
      return;
    }
    monitor.beginTask(ModelMessages.model_navigator_load_items_, childMetas.size());

    for (DBXTreeNode child : childMetas) {
      if (monitor.isCanceled()) {
        break;
      }
      monitor.subTask(
          ModelMessages.model_navigator_load_
              + " "
              + child.getChildrenType(getObject().getDataSource()));
      if (child instanceof DBXTreeItem) {
        final DBXTreeItem item = (DBXTreeItem) child;
        boolean isLoaded = loadTreeItems(monitor, item, oldList, toList);
        if (!isLoaded && item.isOptional() && item.getRecursiveLink() == null) {
          // This may occur only if no child nodes was read
          // Then we try to go on next DBX level
          loadChildren(monitor, item, oldList, toList);
        }
      } else if (child instanceof DBXTreeFolder) {
        if (oldList == null) {
          // Load new folders only if there are no old ones
          toList.add(new DBNDatabaseFolder(this, (DBXTreeFolder) child));
        } else {
          for (DBNDatabaseNode oldFolder : oldList) {
            if (oldFolder.getMeta() == child) {
              oldFolder.reloadChildren(monitor);
              toList.add(oldFolder);
              break;
            }
          }
        }
      } else if (child instanceof DBXTreeObject) {
        if (oldList == null) {
          // Load new objects only if there are no old ones
          toList.add(new DBNDatabaseObject(this, (DBXTreeObject) child));
        } else {
          for (DBNDatabaseNode oldObject : oldList) {
            if (oldObject.getMeta() == child) {
              oldObject.reloadChildren(monitor);
              toList.add(oldObject);
              break;
            }
          }
        }
      } else {
        log.warn("Unsupported meta node type: " + child); // $NON-NLS-1$
      }
      monitor.worked(1);
    }
    monitor.done();

    if (filtered) {
      getModel().fireNodeUpdate(this, this, DBNEvent.NodeChange.REFRESH);
    }
  }