// //////////////////////////////////// // DbRefreshListener SUPPORT // // Overridden public void refreshAfterDbUpdate(DbUpdateEvent evt) throws DbException { if (evt.metaField == DbObject.fComponents) { // add, remove, or move to // another parent if (evt.neighbor instanceof DbGraphicalObjectI) // optimization: // discard // immediately the // graphical objects return; if (evt.op == Db.REMOVE_FROM_RELN) { // DbObject removed or with a new parent: remove the node from // its old parent if loaded. DynamicNode node = getDynamicNode(evt.neighbor, Db.OLD_VALUE, false); if (node != null) removeNode(node); } else if (evt.op == Db.ADD_TO_RELN) { // DbObject added or with a new parent: if its new parent has // its chidren loaded, // add a node for the new child. getDynamicNode(evt.neighbor, false); } else { // Db.REINSERT_IN_RELN DynamicNode node = getDynamicNode(evt.neighbor, false); if ((node != null && !childrenAreSorted(evt.dbo)) || (node != null && !node.getGroupParams().sorted)) { DynamicNode parentNode = (DynamicNode) node.getParent(); updateInsertIndexInChildrenOfNode(parentNode); removeNodeFromParent(node); int index = getInsertionIndex(evt.dbo, evt.neighbor, parentNode, node); insertNodeInto(node, parentNode, index); } } } // name refresh else if (evt.metaField == DbSemanticalObject.fName || tooltipsFields.contains(evt.metaField)) { updateNode(evt.dbo); } }
public Explorer() { super(new DynamicNode(ROOT)); PropertiesSet preferences = PropertiesManager.getPreferencePropertiesSet(); if (preferences != null) { preferences.addPrefixPropertyChangeListener( DisplayToolTipsOptionGroup.class, DisplayToolTipsOptionGroup.TOOLTIPS_FIELD_VISIBILITY_PREFIX, new PreferencesListener()); Db.addDbListener(dbslistener); tooltipsFields.addAll(Arrays.asList(DisplayToolTipsOptionGroup.getAvailableMetaFields())); } }
protected final void loadChildren(DynamicNode node) throws DbException { if (node.hasLoaded() || node.isLeaf()) return; node.setHasLoaded(); Object userObject = node.getUserObject(); if (userObject == ROOT) return; SrVector children = new SrVector(10); boolean isSorted = true; DbObject dbParent = null; if (userObject == DB_RAM) { Db[] dbs = Db.getDbs(); for (int i = 0; i < dbs.length; i++) { if (dbs[i] instanceof DbRAM) insertProjects(children, dbs[i]); } } else if (userObject instanceof Db) { insertProjects(children, (Db) userObject); } else { dbParent = (DbObject) userObject; dbParent.getDb().beginTrans(Db.READ_TRANS); insertComponents(children, dbParent); isSorted = childrenAreSorted(dbParent); dbParent.getDb().commitTrans(); } if (isSorted) { children.sort(getComparator(dbParent)); } ArrayList groupNodeList = new ArrayList(); DynamicNode groupNode = null; Enumeration enumeration = children.elements(); while (enumeration.hasMoreElements()) { DynamicNode childNode = (DynamicNode) enumeration.nextElement(); GroupParams group = childNode.getGroupParams(); if (group.name == null) { node.add(childNode); } else { if (groupNode == null) { groupNode = createGroupNode(group); node.add(groupNode); groupNodeList.add(groupNode); } else if (!groupNode.toString().equals(group.name)) { boolean groupFound = false; for (int i = 0; i < groupNodeList.size(); i++) { groupNode = (DynamicNode) groupNodeList.get(i); if (groupNode.toString().equals(group.name)) { groupFound = true; break; } } if (!groupFound) { groupNode = createGroupNode(group); node.add(groupNode); groupNodeList.add(groupNode); } } groupNode.add(childNode); } } groupNodeList.clear(); }