diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java index 5c5adad3298..58851d8a084 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemView.java @@ -35,7 +35,6 @@ import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; -import org.eclipse.jface.util.Assert; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IBasicPropertyConstants; @@ -72,6 +71,7 @@ import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.model.ISystemContainer; import org.eclipse.rse.core.model.ISystemMessageObject; import org.eclipse.rse.core.model.ISystemRegistry; +import org.eclipse.rse.core.model.SystemMessageObject; import org.eclipse.rse.core.references.IRSEBaseReferencingObject; import org.eclipse.rse.core.subsystems.ISubSystem; import org.eclipse.rse.model.ISystemPromptableObject; @@ -135,6 +135,7 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PropertyDialogAction; import org.eclipse.ui.part.EditorInputTransfer; import org.eclipse.ui.part.PluginTransfer; +import org.eclipse.ui.progress.PendingUpdateAdapter; import org.eclipse.ui.progress.UIJob; import org.eclipse.ui.views.framelist.GoIntoAction; @@ -396,7 +397,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // ----------------------------- // Enable right-click popup menu // ----------------------------- - menuMgr = new MenuManager("#PopupMenu"); + menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$ menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(this); Menu menu = menuMgr.createContextMenu(getTree()); @@ -486,7 +487,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour */ void handleKeyPressed(KeyEvent event) { if ((event.character == SWT.DEL) && (event.stateMask == 0) && (((IStructuredSelection) getSelection()).size() > 0)) { - scanSelections("handleKeyPressed"); + scanSelections("handleKeyPressed"); //$NON-NLS-1$ /* DKM - 53694 if (showDelete() && canDelete()) { @@ -627,7 +628,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour propertyDialogAction = new PropertyDialogAction(new SameShellProvider(getShell()), this); //propertyDialogAction.setToolTipText(" "); } + + propertyDialogAction.selectionChanged(getSelection()); + return propertyDialogAction; } @@ -745,6 +749,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour * This is method is called to populate the popup menu */ public void fillContextMenu(IMenuManager menu) { + if (!showActions) return; //SystemViewPlugin.getDefault().logMessage("inside fillContextMenu"); IStructuredSelection selection = (IStructuredSelection) getSelection(); @@ -776,7 +781,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // WHEN THAT CHANGES, WILL CALL CANDELETE() HERE. THAT IN TURN WILL CALL SCANSELECTIONS. // THIS MEANS SCAN SELECTIONS GETS CALL TWICE ON MOST RIGHT CLICK ACTIONS. if (!selectionFlagsUpdated) // might already be called by the global delete action wh - scanSelections("fillContextMenu"); + scanSelections("fillContextMenu"); //$NON-NLS-1$ // ADD COMMON ACTIONS... @@ -818,6 +823,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // adapters.put(adapter,element); // want only unique adapters } + //Enumeration uniqueAdapters = adapters.keys(); if (!skipAdapterActions && adapter != null) { Shell shell = getShell(); @@ -837,6 +843,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } //} } + // whale through all actions, updating shell and selection IContributionItem[] items = menu.getItems(); @@ -846,7 +853,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour try { item.setInputs(getShell(), this, selection); } catch (Exception e) { - SystemBasePlugin.logError("Error configuring action " + item.getClass().getName(), e); + SystemBasePlugin.logError("Error configuring action " + item.getClass().getName(), e); //$NON-NLS-1$ } } else if (items[idx] instanceof SystemSubMenuManager) { SystemSubMenuManager item = (SystemSubMenuManager) items[idx]; @@ -862,6 +869,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour menu.add(new Separator()); } + + + + // PROPERTIES ACTION... // This is supplied by the system, so we pretty much get it for free. It finds the // registered propertyPages extension points registered for the selected object's class type. @@ -870,10 +881,15 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (!selectionIsRemoteObject) // is not a remote object { PropertyDialogAction pdAction = getPropertyDialogAction(); + if (pdAction.isApplicableForSelection()) menu.appendToGroup(ISystemContextMenuConstants.GROUP_PROPERTIES, pdAction); + + // GO INTO ACTION... // OPEN IN NEW WINDOW ACTION... if (fromSystemViewPart && showOpenViewActions()) { + + GoIntoAction goIntoAction = getGoIntoAction(); goIntoAction.setEnabled(selection.size() == 1); menu.appendToGroup(ISystemContextMenuConstants.GROUP_GOTO, goIntoAction); @@ -883,6 +899,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour menu.appendToGroup(openToPerspectiveAction.getContextMenuGroup(), openToPerspectiveAction); if (showGenericShowInTableAction()) { + + SystemShowInTableAction showInTableAction = getShowInTableAction(); showInTableAction.setSelection(selection); menu.appendToGroup(openToPerspectiveAction.getContextMenuGroup(), showInTableAction); @@ -890,9 +908,12 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour SystemShowInMonitorAction showInMonitorAction = getShowInMonitorAction(); showInMonitorAction.setSelection(selection); menu.appendToGroup(openToPerspectiveAction.getContextMenuGroup(), showInMonitorAction); - + } + + } + } else // is a remote object { //Object firstSelection = selection.getFirstElement(); @@ -908,13 +929,18 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (fromSystemViewPart) // these require an IWorkbenchPart as a parameter, so we can't support them from within dialogs addObjectActions(ourMenu); } + + // GO TO CASCADING ACTIONS... if (fromSystemViewPart && (selectionIsRemoteObject || showOpenViewActions())) { SystemCascadingGoToAction gotoActions = getGoToActions(); gotoActions.setSelection(selection); menu.appendToGroup(gotoActions.getContextMenuGroup(), gotoActions.getSubMenu()); } + + } + } /** @@ -1002,19 +1028,25 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour * @return true if the selection has one or more ancestor relations */ protected boolean hasAncestorRelationSelection() { - - Item[] elements = getSelection(getControl()); + return selectionHasAncestryRelationship(); + /* + TreeItem[] elements = getTree().getSelection(); + + + //Item[] elements = getSelection(getControl()); for (int i = 0; i < elements.length; i++) { - TreeItem parentItem = (TreeItem) elements[i]; - for (int j = 0; j < elements.length; j++) { - if (j != i) { - if (isAncestorOf(parentItem, (TreeItem) elements[j])) { + TreeItem parentItem = elements[i]; + //for (int j = 0; j < elements.length; j++) { + //if (j != i) { + if (isAncestorOf(parentItem, elements)) + { return true; } - } - } + //} + // } } - return false; + return false; + */ } /** @@ -1033,6 +1065,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour boolean enableDelete = true; IStructuredSelection selection = (IStructuredSelection) getSelection(); Iterator elements = selection.iterator(); + while (enableDelete && elements.hasNext()) { Object element = elements.next(); ISystemViewElementAdapter adapter = getAdapter(element); @@ -1058,13 +1091,13 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (element == null) return; else { - logMyDebugMessage(this.getClass().getName(), ": -----------------------------------------------------------"); - logMyDebugMessage(this.getClass().getName(), ": REMOTE SSFID.......: " + element.getSubSystemConfigurationId(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE NAME........: " + element.getName(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPECATEGORY: " + element.getRemoteTypeCategory(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPE........: " + element.getRemoteType(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBTYPE.....: " + element.getRemoteSubType(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBSUBTYPE..: " + element.getRemoteSubSubType(firstSelection)); + logMyDebugMessage(this.getClass().getName(), ": -----------------------------------------------------------"); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE SSFID.......: " + element.getSubSystemConfigurationId(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE NAME........: " + element.getName(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPECATEGORY: " + element.getRemoteTypeCategory(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPE........: " + element.getRemoteType(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBTYPE.....: " + element.getRemoteSubType(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBSUBTYPE..: " + element.getRemoteSubSubType(firstSelection)); //$NON-NLS-1$ } } } @@ -1072,7 +1105,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected void logMyDebugMessage(String prefix, String msg) { if (!debugProperties) return; //RSEUIPlugin.logDebugMessage(prefix, msg); - System.out.println(prefix + " " + msg); + System.out.println(prefix + " " + msg); //$NON-NLS-1$ } /** @@ -1161,8 +1194,11 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (selectedItem == searchItem) found = true; else { - selectedItem = selectedItem.getParentItem(); - if (selectedItem == null) done = true; + if (selectedItem != null) + { + selectedItem = selectedItem.getParentItem(); + if (selectedItem == null) done = true; + } } } return found; @@ -1241,7 +1277,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (showBusy) SystemPromptDialog.setDisplayCursor(shell, null); if (isTiming) { elapsedTime.setEndTime(); - System.out.println("Time to expand for " + item.getItemCount() + " items: " + elapsedTime); + System.out.println("Time to expand for " + item.getItemCount() + " items: " + elapsedTime); //$NON-NLS-1$ //$NON-NLS-2$ } } @@ -1374,23 +1410,36 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour int firstIndex = 0; Item firstItem = null; int firstItemPosition = 0; - for (int i = 0; i < items.length; i++) { - if (items[i] != null) { - Item current = items[i]; - int position = getTreeItemPosition(parentItem, current, items); - - if (firstItem == null || position < firstItemPosition) { - firstItem = current; - firstItemPosition = position; - firstIndex = i; + + Item[] children = null; + if (parentItem instanceof Item) { + if (items == null) + children = getItems((Item) parentItem); + else + children = items; + } else + children = getChildren(parentItem); + if (items != null) + { + for (int i = 0; i < items.length; i++) { + if (items[i] != null) { + Item current = items[i]; + int position = getTreeItemPosition(parentItem, current, children); + + if (firstItem == null || position < firstItemPosition) { + firstItem = current; + firstItemPosition = position; + firstIndex = i; + } } } + + items[firstIndex] = null; } - - items[firstIndex] = null; return firstItem; } + /** * Move one tree item to a new location */ @@ -1421,8 +1470,16 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour for (int idx = 0; idx < src.length; idx++) oldItems[idx] = (Item) internalFindRelativeItem(parentItem, src[idx], 1); - for (int idx = 0; idx < src.length; idx++) { - oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx]) + 1; + + Item[] children = null; + if (parentItem instanceof Item) { + children = getItems((Item) parentItem); + } else + children = getChildren(parentItem); + + for (int idx = 0; idx < src.length; idx++) + { + oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx], children) + 1; } if (delta > 0) // moving down, process backwards @@ -1438,13 +1495,12 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } } - protected int getTreeItemPosition(Widget parentItem, Item childItem) { - return getTreeItemPosition(parentItem, childItem, null); - } + /** * Get the position of a tree item within its parent */ + /* protected int getTreeItemPosition(Widget parentItem, Item childItem, Item[] items) { int pos = -1; Item[] children = null; @@ -1460,6 +1516,19 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } return pos; } + */ + + + /** + * Get the position of a tree item within its parent + */ + protected int getTreeItemPosition(Widget parentItem, Item childItem, Item[] children) { + int pos = -1; + for (int idx = 0; (pos == -1) && (idx < children.length); idx++) { + if (children[idx] == childItem) pos = idx; + } + return pos; + } /** * Expand a given filter, given a subsystem that contains a reference to the filter's pool. @@ -1527,7 +1596,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected SystemView _originatingViewer; public ResourceChangedJob(ISystemResourceChangeEvent event, SystemView originatingViewer) { - super("Resource Changed..."); + super("Resource Changed..."); //$NON-NLS-1$ _originatingViewer = originatingViewer; _event = event; } @@ -1536,6 +1605,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour int type = _event.getType(); Object src = _event.getSource(); Object parent = _event.getParent(); + String[] properties = new String[1]; if (parent == RSEUIPlugin.getTheSystemRegistry()) parent = inputProvider; ISubSystem ss = null; @@ -1581,7 +1651,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour case EVENT_ADD: case EVENT_ADD_RELATIVE: if (debug) { - logDebugMsg("SV event: EVENT_ADD "); + logDebugMsg("SV event: EVENT_ADD "); //$NON-NLS-1$ } clearSelection(); //refresh(parent); @@ -1611,7 +1681,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_ADD_MANY: if (debug) { - logDebugMsg("SV event: EVENT_ADD_MANY"); + logDebugMsg("SV event: EVENT_ADD_MANY"); //$NON-NLS-1$ } multiSource = _event.getMultiSource(); clearSelection(); @@ -1640,7 +1710,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else if (addingConnections && (_event.getParent() instanceof ISystemRegistry) && !inputProvider.showingConnections()) return Status.OK_STATUS; for (int idx = 0; idx < multiSource.length; idx++) { - if (debug && addingConnections) logDebugMsg("... new connection " + ((IHost) multiSource[idx]).getAliasName()); + if (debug && addingConnections) logDebugMsg("... new connection " + ((IHost) multiSource[idx]).getAliasName()); //$NON-NLS-1$ createTreeItem(parentItem, multiSource[idx], -1); } setSelection(new StructuredSelection(multiSource), true); @@ -1648,7 +1718,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_REPLACE_CHILDREN: if (debug) { - logDebugMsg("SV event: EVENT_REPLACE_CHILDREN"); + logDebugMsg("SV event: EVENT_REPLACE_CHILDREN"); //$NON-NLS-1$ } multiSource = _event.getMultiSource(); //logDebugMsg("MULTI-SRC LENGTH : " + multiSource.length); @@ -1675,7 +1745,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_CHANGE_CHILDREN: if (debug) { - logDebugMsg("SV event: EVENT_CHANGE_CHILDREN. src=" + src + ", parent=" + parent); + logDebugMsg("SV event: EVENT_CHANGE_CHILDREN. src=" + src + ", parent=" + parent); //$NON-NLS-1$ //$NON-NLS-2$ //Exception e = new Exception(); //e.fillInStackTrace(); //e.printStackTrace(); @@ -1699,7 +1769,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour clearSelection(); } //refresh(parent); - if (debug) System.out.println("Found item and it was expanded for " + parent); + if (debug) System.out.println("Found item and it was expanded for " + parent); //$NON-NLS-1$ getControl().setRedraw(false); collapseNode(parent, true); // collapse and flush gui widgets from memory setExpandedState(parent, true); // expand the parent @@ -1712,7 +1782,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour collapseNode(parent, true); break; case EVENT_DELETE: - if (debug) logDebugMsg("SV event: EVENT_DELETE "); + if (debug) logDebugMsg("SV event: EVENT_DELETE "); //$NON-NLS-1$ // are we a secondary perspective, and our input or parent of our input was deleted? if (affectsInput(src)) { close(); @@ -1731,7 +1801,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_DELETE_MANY: - if (debug) logDebugMsg("SV event: EVENT_DELETE_MANY "); + if (debug) logDebugMsg("SV event: EVENT_DELETE_MANY "); //$NON-NLS-1$ multiSource = _event.getMultiSource(); // are we a secondary perspective, and our input or parent of our input was deleted? if (affectsInput(multiSource)) { @@ -1771,7 +1841,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; */ case EVENT_RENAME: - if (debug) logDebugMsg("SV event: EVENT_RENAME "); + if (debug) logDebugMsg("SV event: EVENT_RENAME "); //$NON-NLS-1$ properties[0] = IBasicPropertyConstants.P_TEXT; update(src, properties); // for refreshing non-structural properties in viewer when model changes updatePropertySheet(); @@ -1787,7 +1857,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; */ case EVENT_ICON_CHANGE: - if (debug) logDebugMsg("SV event: EVENT_ICON_CHANGE "); + if (debug) logDebugMsg("SV event: EVENT_ICON_CHANGE "); //$NON-NLS-1$ if (initViewerFilters != null && initViewerFilters.length > 0) { Widget w = findItem(src); @@ -1812,7 +1882,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //updatePropertySheet(); //break; case EVENT_REFRESH: - if (debug) logDebugMsg("SV event: EVENT_REFRESH "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH "); //$NON-NLS-1$ //if (src != null) // refresh(src); // ONLY VALID WHEN USER TRULY WANTS TO REQUERY CHILDREN FROM HOST //else @@ -1828,7 +1898,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // refresh the parent of the currently selected items. // todo: intelligently re-select previous selections case EVENT_REFRESH_SELECTED_PARENT: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_PARENT "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_PARENT "); //$NON-NLS-1$ TreeItem[] items = getTree().getSelection(); if ((items != null) && (items.length > 0) && (items[0] != null)) { //System.out.println("Selection not empty"); @@ -1844,7 +1914,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //System.out.println("Selection is empty"); break; case EVENT_REFRESH_SELECTED: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED "); //$NON-NLS-1$ IStructuredSelection selected = (IStructuredSelection) getSelection(); Iterator i = selected.iterator(); // the following is a tweak. Refresh only re-queries the children. If the selected item has no @@ -1855,7 +1925,6 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // memory address changes. Item parentElementItem = null; Vector selectedRemoteObjects = new Vector(); - ss = null; items = getTree().getSelection(); int itemIdx = 0; SystemElapsedTimer timer = null; @@ -1895,9 +1964,9 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else { smartRefresh(getTree().getSelection()); } - if (doTimings) { + if (doTimings && timer != null) { timer.setEndTime(); - System.out.println("Time to refresh selected: " + timer); + System.out.println("Time to refresh selected: " + timer); //$NON-NLS-1$ } //else //{ @@ -1909,7 +1978,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour updatePropertySheet(); break; case EVENT_REFRESH_SELECTED_FILTER: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_FILTER "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_FILTER "); //$NON-NLS-1$ IStructuredSelection selectedItems = (IStructuredSelection) getSelection(); Iterator j = selectedItems.iterator(); // We climb up the tree here until we find a SystemFilterReference data member in the tree. @@ -1919,11 +1988,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // memory address changes. Item parentElemItem = null; Vector selRemoteObjects = new Vector(); - ss = null; if (j.hasNext()) { Object element = j.next(); ISystemViewElementAdapter adapter = _originatingViewer.getAdapter(element); - if ((parentElemItem == null) && (adapter != null)) { + if (adapter != null) { Item parItem = getParentItem((Item) findItem(element)); if (parItem != null) parentElemItem = parItem; //.getData(); @@ -1936,7 +2004,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } if (getRemoteAdapter(element) != null) { selRemoteObjects.addElement(element); - if (ss == null) ss = getRemoteAdapter(element).getSubSystem(element); + ss = getRemoteAdapter(element).getSubSystem(element); } } @@ -1955,17 +2023,17 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } break; case EVENT_REFRESH_REMOTE: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_REMOTE: src = " + src); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_REMOTE: src = " + src); //$NON-NLS-1$ refreshRemoteObject(src, parent, originatedHere); break; case EVENT_SELECT_REMOTE: - if (debug) logDebugMsg("SV event: EVENT_SELECT_REMOTE: src = " + src); + if (debug) logDebugMsg("SV event: EVENT_SELECT_REMOTE: src = " + src); //$NON-NLS-1$ //remoteItemsToSkip = null; // reset selectRemoteObjects(src, (ISubSystem) null, parent); break; case EVENT_MOVE_MANY: - if (debug) logDebugMsg("SV event: EVENT_MOVE_MANY "); + if (debug) logDebugMsg("SV event: EVENT_MOVE_MANY "); //$NON-NLS-1$ multiSource = _event.getMultiSource(); if ((multiSource == null) || (multiSource.length == 0)) return Status.OK_STATUS; parentItem = findItem(parent); @@ -1979,7 +2047,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } break; case EVENT_PROPERTY_CHANGE: - if (debug) logDebugMsg("SV event: EVENT_PROPERTY_CHANGE "); + if (debug) logDebugMsg("SV event: EVENT_PROPERTY_CHANGE "); //$NON-NLS-1$ String[] allProps = { IBasicPropertyConstants.P_TEXT, IBasicPropertyConstants.P_IMAGE }; ISystemRemoteElementAdapter ra = getRemoteAdapter(src); if (ra != null) { @@ -1989,32 +2057,32 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour updatePropertySheet(); break; case EVENT_PROPERTYSHEET_UPDATE: - if (debug) logDebugMsg("SV event: EVENT_PROPERTYSHEET_UPDATE "); + if (debug) logDebugMsg("SV event: EVENT_PROPERTYSHEET_UPDATE "); //$NON-NLS-1$ updatePropertySheet(); break; case EVENT_MUST_COLLAPSE: - if (debug) logDebugMsg("SV event: EVENT_MUST_COLLAPSE "); + if (debug) logDebugMsg("SV event: EVENT_MUST_COLLAPSE "); //$NON-NLS-1$ collapseNode(src, true); // collapse and flush gui widgets from memory break; case EVENT_COLLAPSE_ALL: - if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_ALL "); + if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_ALL "); //$NON-NLS-1$ collapseAll(); // collapse all - if ((src != null) && (src instanceof String) && ((String) src).equals("false")) // defect 41203 + if ((src != null) && (src instanceof String) && ((String) src).equals("false")) // defect 41203 //$NON-NLS-1$ { } else refresh(); // flush gui widgets from memory break; case EVENT_COLLAPSE_SELECTED: // defect 41203 - if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_SELECTED "); + if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_SELECTED "); //$NON-NLS-1$ collapseSelected(); break; case EVENT_EXPAND_SELECTED: // defect 41203 - if (debug) logDebugMsg("SV event: EVENT_EXPAND_SELECTED "); + if (debug) logDebugMsg("SV event: EVENT_EXPAND_SELECTED "); //$NON-NLS-1$ expandSelected(); break; case EVENT_REVEAL_AND_SELECT: - if (debug) logDebugMsg("SV event: EVENT_REVEAL_AND_SELECT "); + if (debug) logDebugMsg("SV event: EVENT_REVEAL_AND_SELECT "); //$NON-NLS-1$ parentItem = findItem(parent); if (parentItem == null) return Status.OK_STATUS; if ((parentItem instanceof Item) && !getExpanded((Item) parentItem)) { @@ -2038,14 +2106,14 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } break; case EVENT_SELECT: - if (debug) logDebugMsg("SV event: EVENT_SELECT "); + if (debug) logDebugMsg("SV event: EVENT_SELECT "); //$NON-NLS-1$ item = findItem(src); if (item == null) // if not showing item, this is a no-op return Status.OK_STATUS; setSelection(new StructuredSelection(src), true); break; case EVENT_SELECT_EXPAND: - if (debug) logDebugMsg("SV event: EVENT_SELECT_EXPAND "); + if (debug) logDebugMsg("SV event: EVENT_SELECT_EXPAND "); //$NON-NLS-1$ item = findItem(src); if (item == null) // if not showing item, this is a no-op return Status.OK_STATUS; @@ -2425,10 +2493,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour */ protected String printTreeItem(Item item) { if (item == null) - return ""; + return ""; //$NON-NLS-1$ else if (item instanceof TreeItem) { TreeItem ti = (TreeItem) item; - return printTreeItem(ti.getParentItem()) + "/" + ti.getText(); + return printTreeItem(ti.getParentItem()) + "/" + ti.getText(); //$NON-NLS-1$ } else return item.toString(); } @@ -2747,8 +2815,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected void doOurInternalRefresh(Widget widget, Object element, boolean doStruct, boolean doTimings) { if (debug) { - logDebugMsg("in doOurInternalRefresh on " + getAdapter(element).getName(element)); - logDebugMsg("...current selection is " + getFirstSelectionName(getSelection())); + logDebugMsg("in doOurInternalRefresh on " + getAdapter(element).getName(element)); //$NON-NLS-1$ + logDebugMsg("...current selection is " + getFirstSelectionName(getSelection())); //$NON-NLS-1$ } SystemElapsedTimer timer = null; if (doTimings) timer = new SystemElapsedTimer(); @@ -2758,8 +2826,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour updatePlus((Item) widget, element); } updateItem(widget, element); - if (doTimings) { - System.out.println("doOurInternalRefresh timer 1: time to updatePlus and updateItem:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 1: time to updatePlus and updateItem:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -2770,8 +2838,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if ((widget instanceof Item) && getExpanded((Item) widget)) { // DKM - get raw children does a query but so does internalRefresh() // newChildren = getRawChildren(widget); - if (doTimings) { - System.out.println("doOurInternalRefresh timer 2: time to getRawChildren:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 2: time to getRawChildren:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -2782,8 +2850,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour internalRefresh(element); } - if (doTimings) { - System.out.println("doOurInternalRefresh timer 3: time to updateChildren:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 3: time to updateChildren:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -2811,19 +2879,19 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour }*/ } } - if (doTimings) { - System.out.println("doOurInternalRefresh timer 4: time to recurse children:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 4: time to recurse children:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } protected Object[] getRawChildren(Widget w) { Object parent = w.getData(); - if (w != null) { - if (parent.equals(getRoot())) return super.getRawChildren(parent); - Object[] result = ((ITreeContentProvider) getContentProvider()).getChildren(parent); - if (result != null) return result; - } + + if (parent.equals(getRoot())) return super.getRawChildren(parent); + Object[] result = ((ITreeContentProvider) getContentProvider()).getChildren(parent); + if (result != null) return result; + return new Object[0]; } @@ -3077,10 +3145,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour setExpandedState(data, false); // collapse temp expansion of prompts else if (currItem.getExpanded()) { //expandedChildren.add(new ExpandedItem(currItem)); we don't need special processing for given items themselves as they will not be refreshed, only their kids - if (doTimings) timer.setStartTime(); + if (doTimings && timer != null) timer.setStartTime(); gatherExpandedChildren((fullRefresh ? null : currItem), currItem, expandedChildren); wasExpanded[idx] = true; - if (doTimings) System.out.println("Refresh Timer 1: time to gatherExpandedChildren: " + timer.setEndTime()); + if (doTimings && timer != null) System.out.println("Refresh Timer 1: time to gatherExpandedChildren: " + timer.setEndTime()); //$NON-NLS-1$ } else wasExpanded[idx] = false; } @@ -3100,26 +3168,26 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // address won't change, only that of its children. for (int idx = 0; idx < itemsToRefresh.length; idx++) { TreeItem currItem = itemsToRefresh[idx]; - if (doTimings) timer.setStartTime(); + if (doTimings && timer != null) timer.setStartTime(); setExpanded(currItem, false); // collapse node - if (doTimings) { - System.out.println("Refresh Timer 2: time to setExpanded(false): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 2: time to setExpanded(false): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } ourInternalRefresh(currItem, currItem.getData(), true, true, doTimings); // dispose of children, update plus - if (doTimings) { - System.out.println("Refresh Timer 3: time to do ourInternalRefresh(...): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 3: time to do ourInternalRefresh(...): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } if (wasExpanded[idx]) { createChildren(currItem); // re-expand - if (doTimings) { - System.out.println("Refresh Timer 4: time to createChildren(...): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 4: time to createChildren(...): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } currItem.setExpanded(true); - if (doTimings) { - System.out.println("Refresh Timer 5: time to setExpanded(true): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 5: time to setExpanded(true): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } else // hmm, item was not expanded so just flush its memory @@ -3143,20 +3211,20 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //setExpanded(item, true); createChildren(item); ((TreeItem) item).setExpanded(true); - if (debug) System.out.println("Re-Expanded RemoteItem: " + itemToExpand.remoteName); - } else if (debug) System.out.println("Re-Expand of RemoteItem '" + itemToExpand.remoteName + "' failed. Not found"); + if (debug) System.out.println("Re-Expanded RemoteItem: " + itemToExpand.remoteName); //$NON-NLS-1$ + } else if (debug) System.out.println("Re-Expand of RemoteItem '" + itemToExpand.remoteName + "' failed. Not found"); //$NON-NLS-1$ //$NON-NLS-2$ } else { setExpandedState(itemToExpand.data, true); - if (debug) System.out.println("Re-Expanded non-remote Item: " + itemToExpand.data); + if (debug) System.out.println("Re-Expanded non-remote Item: " + itemToExpand.data); //$NON-NLS-1$ } } - if (doTimings) { - System.out.println("Refresh Timer 6: time to reExpanded expanded subnodes: " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 6: time to reExpanded expanded subnodes: " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } getControl().setRedraw(true); - if (doTimings) { - System.out.println("Refresh Timer 7: time to setRedraw(true): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 7: time to setRedraw(true): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -3254,9 +3322,9 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour remoteName = remoteAdapter.getAbsoluteName(data); subsystem = remoteAdapter.getSubSystem(data); areAnyRemote = true; - if (debug) System.out.println("ExpandedRemoteItem added. remoteName = " + remoteName); - } else if (debug) System.out.println("ExpandedItem added. Data = " + data); - } else if (debug) System.out.println("ExpandedItem added. Data = null"); + if (debug) System.out.println("ExpandedRemoteItem added. remoteName = " + remoteName); //$NON-NLS-1$ + } else if (debug) System.out.println("ExpandedItem added. Data = " + data); //$NON-NLS-1$ + } else if (debug) System.out.println("ExpandedItem added. Data = null"); //$NON-NLS-1$ } boolean isRemote() { @@ -3333,13 +3401,13 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour String eventType = null; switch (type) { case EVENT_RENAME_FILTER_REFERENCE: - eventType = "EVENT_RENAME_FILTER_REFERENCE"; + eventType = "EVENT_RENAME_FILTER_REFERENCE"; //$NON-NLS-1$ break; case EVENT_CHANGE_FILTER_REFERENCE: - eventType = "EVENT_CHANGE_FILTER_REFERENCE"; + eventType = "EVENT_CHANGE_FILTER_REFERENCE"; //$NON-NLS-1$ break; } - logDebugMsg("SV event: " + eventType); + logDebugMsg("SV event: " + eventType); //$NON-NLS-1$ } // STEP 1. ARE WE EVEN SHOWING THE GIVEN SUBSYSTEM? @@ -3357,20 +3425,20 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // Yes we are showing the subsystem, so widget is the subsystem item if (widget != c && widget instanceof Item) { - if (debug) logDebugMsg("...Found ss " + ss); + if (debug) logDebugMsg("...Found ss " + ss); //$NON-NLS-1$ item = internalFindReferencedItem(widget, filter, SEARCH_INFINITE); } // No, we are not showing the subsystem, so widget is the control else if (widget == c) { - if (debug) logDebugMsg("...Din not find ss " + ss); + if (debug) logDebugMsg("...Din not find ss " + ss); //$NON-NLS-1$ item = internalFindReferencedItem(widget, filter, SEARCH_INFINITE); } if (item == null) - logDebugMsg("......didn't find renamed/updated filter's reference!"); + logDebugMsg("......didn't find renamed/updated filter's reference!"); //$NON-NLS-1$ else { // STEP 3: UPDATE THAT FILTER... if (type == EVENT_RENAME_FILTER_REFERENCE) { @@ -3401,11 +3469,11 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour Widget item = findItem(ss); if (item != null && item != getControl()) { Item ssItem = (Item) item; - if (debug) logDebugMsg("...Found ss " + ss); + if (debug) logDebugMsg("...Found ss " + ss); //$NON-NLS-1$ // STEP 2: ARE WE SHOWING A REFERENCE TO THE UPDATED FILTER STRING? item = internalFindReferencedItem(ssItem, filterString, SEARCH_INFINITE); if (item == null) - logDebugMsg("......didn't find updated filter string's reference!"); + logDebugMsg("......didn't find updated filter string's reference!"); //$NON-NLS-1$ else { // STEP 3: UPDATE THAT FILTER STRING... if (type == EVENT_CHANGE_FILTERSTRING_REFERENCE) // HAD BETTER! @@ -3470,34 +3538,34 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour switch (type) { case EVENT_ADD_FILTER_REFERENCE: add = true; - if (debug) eventType = "EVENT_ADD_FILTER_REFERENCE"; + if (debug) eventType = "EVENT_ADD_FILTER_REFERENCE"; //$NON-NLS-1$ break; case EVENT_DELETE_FILTER_REFERENCE: delete = true; - if (debug) eventType = "EVENT_DELETE_FILTER_REFERENCE"; + if (debug) eventType = "EVENT_DELETE_FILTER_REFERENCE"; //$NON-NLS-1$ break; case EVENT_MOVE_FILTER_REFERENCES: move = true; - if (debug) eventType = "EVENT_MOVE_FILTER_REFERENCES"; + if (debug) eventType = "EVENT_MOVE_FILTER_REFERENCES"; //$NON-NLS-1$ break; case EVENT_ADD_FILTERSTRING_REFERENCE: add = true; afilterstring = true; - if (debug) eventType = "EVENT_ADD_FILTERSTRING_REFERENCE"; + if (debug) eventType = "EVENT_ADD_FILTERSTRING_REFERENCE"; //$NON-NLS-1$ break; case EVENT_DELETE_FILTERSTRING_REFERENCE: delete = true; afilterstring = true; - if (debug) eventType = "EVENT_DELETE_FILTERSTRING_REFERENCE"; + if (debug) eventType = "EVENT_DELETE_FILTERSTRING_REFERENCE"; //$NON-NLS-1$ break; case EVENT_MOVE_FILTERSTRING_REFERENCES: move = true; afilterstring = true; - if (debug) eventType = "EVENT_MOVE_FILTERSTRING_REFERENCES"; + if (debug) eventType = "EVENT_MOVE_FILTERSTRING_REFERENCES"; //$NON-NLS-1$ break; } - if (debug) logDebugMsg("SV event: " + eventType); + if (debug) logDebugMsg("SV event: " + eventType); //$NON-NLS-1$ //} //clearSelection(); @@ -3515,7 +3583,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (item == null) { refresh(); - if (debug) logDebugMsg("...Did not find ss " + ss.getName()); + if (debug) logDebugMsg("...Did not find ss " + ss.getName()); //$NON-NLS-1$ return; } Item ssItem = (Item) item; @@ -3523,7 +3591,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour IStructuredSelection oldSelections = (IStructuredSelection) getSelection(); Object parent = event.getParent(); - if (debug) logDebugMsg("...Found ss " + ss); + if (debug) logDebugMsg("...Found ss " + ss); //$NON-NLS-1$ // STEP 2: ARE WE SHOWING A REFERENCE TO THE FILTER's PARENT POOL? Item parentRefItem = null; @@ -3544,7 +3612,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour parentRefItem = ssItem; } if (parentRefItem != null) { - if (debug) logDebugMsg("......We are showing reference to parent"); + if (debug) logDebugMsg("......We are showing reference to parent"); //$NON-NLS-1$ // STEP 3... YES, SO REFRESH PARENT... IT WILL RE-GEN THE FILTER REFERENCES FOR EACH CHILD FILTER // ... actually, call off the whole show if that parent is currently not expanded!! // HMMM... WE NEED TO REFRESH EVEN IF NOT EXPANDED IF ADDING FIRST CHILD @@ -3578,7 +3646,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //refresh(parentRefItem.getData()); } else // remove { - remove(oldItem.getData()); + if (oldItem != null) + remove(oldItem.getData()); } } else // add operation { @@ -3614,13 +3683,13 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // 4a. ADD ... only select if parent of new filter was previously selected... if (add && isSelected(parentRefItem.getData(), oldSelections)) { - if (debug) logDebugMsg(".........that parent was previously selected"); + if (debug) logDebugMsg(".........that parent was previously selected"); //$NON-NLS-1$ // .... YES, SO SELECT NEW FILTER'S REFERENCE Item filterItem = (Item) internalFindReferencedItem(parentRefItem, afilterstring ? (Object) filterstring : (Object) filter, 1); // start at filter's parent, search for filter if (filterItem == null) { - if (debug) logDebugMsg("Hmm, didn't find new filter's reference!"); + if (debug) logDebugMsg("Hmm, didn't find new filter's reference!"); //$NON-NLS-1$ } else { - if (debug) logDebugMsg(".........Trying to set selection to " + filterItem.getData()); + if (debug) logDebugMsg(".........Trying to set selection to " + filterItem.getData()); //$NON-NLS-1$ setSelection(new StructuredSelection(filterItem.getData()), true); } } @@ -3651,7 +3720,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } } - } else if (debug) logDebugMsg("Did not find parent ref " + parent); + } else if (debug) logDebugMsg("Did not find parent ref " + parent); //$NON-NLS-1$ } /** @@ -3668,8 +3737,14 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour oldItems[idx] = (Item) internalFindReferencedItem(parentItem, masterSrc[idx], 1); src[idx] = oldItems[idx].getData(); } + Item[] children = null; + if (parentItem instanceof Item) { + children = getItems((Item) parentItem); + } else + children = getChildren(parentItem); + for (int idx = 0; idx < src.length; idx++) { - oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx]) + 1; + oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx], children) + 1; //logDebugMsg("::: Old position : " + oldPositions[idx]); } @@ -3798,7 +3873,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else { //recursiveFindAllRemoteItemReferences(parentItem, remoteObjectName, null, subsystem, matches); match = recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, null, subsystem); - if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2,3)"); + if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2,3)"); //$NON-NLS-1$ //$NON-NLS-2$ } //if (matches.size() > 0) // return (Item)matches.elementAt(0); @@ -3826,7 +3901,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else { //recursiveFindAllRemoteItemReferences(parentItem, remoteObjectName, remoteObject, subsystem, matches); match = recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, remoteObject, subsystem); - if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2)"); + if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2)"); //$NON-NLS-1$ //$NON-NLS-2$ } //if (matches.size() > 0) @@ -3910,15 +3985,15 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if ((roots == null) || (roots.length == 0)) return null; Item match = null; if (debugRemote) { - System.out.println("Inside internalFindFirstRemoteItemReference for searchString: " + searchString + ", subsystem null? " + (subsystem == null) + ", nbr roots = " + roots.length); + System.out.println("Inside internalFindFirstRemoteItemReference for searchString: " + searchString + ", subsystem null? " + (subsystem == null) + ", nbr roots = " + roots.length); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } for (int idx = 0; (match == null) && (idx < roots.length); idx++) { match = recursiveFindFirstRemoteItemReference(roots[idx], searchString, elementObject, subsystem); - if (debugRemote) System.out.println("...Inside internalFindFirstRemoteItemReference. Result of searching root " + idx + ": " + roots[idx].getText() + ": " + match); + if (debugRemote) System.out.println("...Inside internalFindFirstRemoteItemReference. Result of searching root " + idx + ": " + roots[idx].getText() + ": " + match); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } if (debugRemote) { - System.out.println("...Inside internalFindFirstRemoteItemReference. Returning " + match); - if (match != null) System.out.println("......set bp here"); + System.out.println("...Inside internalFindFirstRemoteItemReference. Returning " + match); //$NON-NLS-1$ + if (match != null) System.out.println("......set bp here"); //$NON-NLS-1$ } return match; } @@ -3945,15 +4020,15 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // first test for binary match if (elementObject == rawData) { occurrences.addElement(parent); // found a match! - if (debugRemote) System.out.println("Find All: Remote item binary match found"); + if (debugRemote) System.out.println("Find All: Remote item binary match found"); //$NON-NLS-1$ return occurrences; // no point in checking the kids } // now test for absolute name match String fqn = remoteAdapter.getAbsoluteName(rawData); - if (debugRemote) System.out.println("TESTING FINDALL: '" + fqn + "' vs '" + elementName + "'"); + if (debugRemote) System.out.println("TESTING FINDALL: '" + fqn + "' vs '" + elementName + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ if ((fqn != null) && fqn.equals(elementName)) { occurrences.addElement(parent); // found a match! - if (debugRemote) System.out.println("...and remote item name match found"); + if (debugRemote) System.out.println("...and remote item name match found"); //$NON-NLS-1$ return occurrences; // no point in checking the kids } } @@ -4005,20 +4080,20 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (remoteAdapter != null) { // first test for binary match if (elementObject == rawData) { - if (debugRemote) System.out.println("Remote item binary match found"); + if (debugRemote) System.out.println("Remote item binary match found"); //$NON-NLS-1$ return parent; // return the match } // now test for absolute name match String fqn = remoteAdapter.getAbsoluteName(rawData); - if (debugRemote) System.out.println("TESTING FINDFIRST: '" + fqn + "' vs '" + elementName + "'"); + if (debugRemote) System.out.println("TESTING FINDFIRST: '" + fqn + "' vs '" + elementName + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ if ((fqn != null) && fqn.equals(elementName)) { if ((subsystem != null) && (subsystem == remoteAdapter.getSubSystem(rawData))) { - if (debugRemote) System.out.println("Remote item name match found and subsystems matched"); + if (debugRemote) System.out.println("Remote item name match found and subsystems matched"); //$NON-NLS-1$ return parent; // return the match } else if (subsystem == null) { - if (debugRemote) System.out.println("Remote item name match found and subsystem null"); + if (debugRemote) System.out.println("Remote item name match found and subsystem null"); //$NON-NLS-1$ return parent; - } else if (debugRemote) System.out.println("Remote item name match found but subsystem mismatch"); + } else if (debugRemote) System.out.println("Remote item name match found but subsystem mismatch"); //$NON-NLS-1$ } } // ------------------------------------------------------------------------- @@ -4093,22 +4168,22 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (rawData instanceof ISystemFilterReference) { ISystemFilterReference filterRef = (ISystemFilterReference) rawData; if (filterRef.getReferencedFilter().isPromptable()) return occurrences; - if (debugRemote) System.out.println("Testing filter: " + filterRef.getReferencedFilter().getName()); + if (debugRemote) System.out.println("Testing filter: " + filterRef.getReferencedFilter().getName()); //$NON-NLS-1$ ISubSystem fss = (ISubSystem) filterRef.getProvider(); if (fss != null) // should never happen!! { // #1 if (fss.doesFilterMatch(filterRef.getReferencedFilter(), elementName)) { occurrences.addElement(new FilterMatch((TreeItem) parent, true)); // found a match! - if (debugRemote) System.out.println("...Filter match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); + if (debugRemote) System.out.println("...Filter match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); //$NON-NLS-1$ //$NON-NLS-2$ return occurrences; // no point in checking the kids } // #2 else if (fss.doesFilterListContentsOf(filterRef.getReferencedFilter(), elementName)) { occurrences.addElement(new FilterMatch((TreeItem) parent, false)); // found a match! - if (debugRemote) System.out.println("...Filter content match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); + if (debugRemote) System.out.println("...Filter content match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); //$NON-NLS-1$ //$NON-NLS-2$ return occurrences; // no point in checking the kids - } else if (debugRemote) System.out.println("... no match on the filter for element name " + elementName); + } else if (debugRemote) System.out.println("... no match on the filter for element name " + elementName); //$NON-NLS-1$ } } // ---------------------------------------------------------------------- @@ -4208,8 +4283,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour selectionEnableDeleteAction = true; selectionEnableRenameAction = true; selectionIsRemoteObject = true; + selectionHasAncestorRelation = hasAncestorRelationSelection(); + IStructuredSelection selection = (IStructuredSelection) getSelection(); Iterator elements = selection.iterator(); while (elements.hasNext()) { @@ -4242,6 +4319,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } } } + selectionFlagsUpdated = true; //System.out.println("Inside scan selections: selectionShowOpenViewActions = " + selectionShowOpenViewActions); } @@ -4304,7 +4382,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour public boolean showDelete() { if (!selectionFlagsUpdated) { //System.out.println("Inside showDelete. selectFlagsUpdated = false"); - scanSelections("showDelete"); + scanSelections("showDelete"); //$NON-NLS-1$ } return selectionShowDeleteAction; } @@ -4317,7 +4395,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour public boolean canDelete() { if (!selectionFlagsUpdated) { //System.out.println("Inside canDelete. selectFlagsUpdated = false"); - scanSelections("canDelete"); + scanSelections("canDelete"); //$NON-NLS-1$ } return selectionEnableDeleteAction; } @@ -4446,7 +4524,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour * Assumes scanSelections() has already been called */ public boolean canRename() { - if (!selectionFlagsUpdated) scanSelections("canRename"); + if (!selectionFlagsUpdated) scanSelections("canRename"); //$NON-NLS-1$ return selectionEnableRenameAction; } @@ -4498,7 +4576,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected void logDebugMsg(String msg) { //RSEUIPlugin.logDebugMessage(this.getClass().getName(),msg); - msg = this.getClass().getName() + ": " + msg; + msg = this.getClass().getName() + ": " + msg; //$NON-NLS-1$ SystemBasePlugin.logInfo(msg); System.out.println(msg); } @@ -4573,14 +4651,42 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected boolean selectionHasAncestryRelationship() { if (selectionFlagsUpdated) return selectionHasAncestorRelation; + + Tree tree = getTree(); + TreeItem[] items = tree.getSelection(); + return hasSelectedAncestor(items); + /* Tree tree = getTree(); TreeItem[] items = tree.getSelection(); for (int idx = 0; idx < items.length; idx++) { TreeItem item = items[idx]; - for (int c = 0; c < items.length; c++) { - if (item != items[c]) { - if (isAncestorOf(item, items[c])) { + // for (int c = 0; c < items.length; c++) { + // if (item != items[c]) { + if (isAncestorOf(item, items)) { + return true; + } +// } + // } + } + return false; + */ + } + + protected boolean isAncestorOf(TreeItem container, TreeItem[] items) { + TreeItem[] children = container.getItems(); + for (int i = 0; i < children.length; i++) { + TreeItem child = children[i]; + for (int j = 0; j < items.length; j++) + { + TreeItem item = items[j]; + if (child == item) { + return true; + } + else if (child.getItemCount() > 0) + { + if (isAncestorOf(child, items)) + { return true; } } @@ -4588,7 +4694,35 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } return false; } + + + protected boolean hasSelectedAncestor(TreeItem[] items) { + for (int j = 0; j < items.length; j++) + { + TreeItem item = items[j]; + TreeItem parent = item.getParentItem(); + while (parent != null) + { + if (isTreeItemSelected(parent)) + { + return true; + } + else + { + parent = parent.getParentItem(); + } + } + } + return false; + } + + + + + + +/* protected boolean isAncestorOf(TreeItem container, TreeItem item) { TreeItem[] children = container.getItems(); for (int i = 0; i < children.length; i++) { @@ -4603,7 +4737,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } return false; } - +*/ + /** * This is called to accurately get the parent object for the current selection * for this viewer. @@ -4819,19 +4954,28 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour Widget w = findItem(element); if (w == null) return 0; - else { - if (w instanceof TreeItem) { - TreeItem ti = (TreeItem) w; - int count = getItemCount((Item) w); - if (count == 1) // is it a dummy? - { - Item[] items = getItems(ti); - if (items[0].getData() == null) count = 0; // assume a dummy + + if (w instanceof TreeItem) { + TreeItem ti = (TreeItem) w; + int count = getItemCount((Item) w); + int ignoreItems = 0; + if (count > 0) { + Item[] items = getItems(ti); + for (int i=0; i 0)) { - scanSelections("handleKeyPressed"); + scanSelections("handleKeyPressed"); //$NON-NLS-1$ /* DKM - 53694 if (showDelete() && canDelete()) { @@ -627,7 +628,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour propertyDialogAction = new PropertyDialogAction(new SameShellProvider(getShell()), this); //propertyDialogAction.setToolTipText(" "); } + + propertyDialogAction.selectionChanged(getSelection()); + return propertyDialogAction; } @@ -745,6 +749,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour * This is method is called to populate the popup menu */ public void fillContextMenu(IMenuManager menu) { + if (!showActions) return; //SystemViewPlugin.getDefault().logMessage("inside fillContextMenu"); IStructuredSelection selection = (IStructuredSelection) getSelection(); @@ -776,7 +781,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // WHEN THAT CHANGES, WILL CALL CANDELETE() HERE. THAT IN TURN WILL CALL SCANSELECTIONS. // THIS MEANS SCAN SELECTIONS GETS CALL TWICE ON MOST RIGHT CLICK ACTIONS. if (!selectionFlagsUpdated) // might already be called by the global delete action wh - scanSelections("fillContextMenu"); + scanSelections("fillContextMenu"); //$NON-NLS-1$ // ADD COMMON ACTIONS... @@ -818,6 +823,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // adapters.put(adapter,element); // want only unique adapters } + //Enumeration uniqueAdapters = adapters.keys(); if (!skipAdapterActions && adapter != null) { Shell shell = getShell(); @@ -837,6 +843,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } //} } + // whale through all actions, updating shell and selection IContributionItem[] items = menu.getItems(); @@ -846,7 +853,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour try { item.setInputs(getShell(), this, selection); } catch (Exception e) { - SystemBasePlugin.logError("Error configuring action " + item.getClass().getName(), e); + SystemBasePlugin.logError("Error configuring action " + item.getClass().getName(), e); //$NON-NLS-1$ } } else if (items[idx] instanceof SystemSubMenuManager) { SystemSubMenuManager item = (SystemSubMenuManager) items[idx]; @@ -862,6 +869,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour menu.add(new Separator()); } + + + + // PROPERTIES ACTION... // This is supplied by the system, so we pretty much get it for free. It finds the // registered propertyPages extension points registered for the selected object's class type. @@ -870,10 +881,15 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (!selectionIsRemoteObject) // is not a remote object { PropertyDialogAction pdAction = getPropertyDialogAction(); + if (pdAction.isApplicableForSelection()) menu.appendToGroup(ISystemContextMenuConstants.GROUP_PROPERTIES, pdAction); + + // GO INTO ACTION... // OPEN IN NEW WINDOW ACTION... if (fromSystemViewPart && showOpenViewActions()) { + + GoIntoAction goIntoAction = getGoIntoAction(); goIntoAction.setEnabled(selection.size() == 1); menu.appendToGroup(ISystemContextMenuConstants.GROUP_GOTO, goIntoAction); @@ -883,6 +899,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour menu.appendToGroup(openToPerspectiveAction.getContextMenuGroup(), openToPerspectiveAction); if (showGenericShowInTableAction()) { + + SystemShowInTableAction showInTableAction = getShowInTableAction(); showInTableAction.setSelection(selection); menu.appendToGroup(openToPerspectiveAction.getContextMenuGroup(), showInTableAction); @@ -890,9 +908,12 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour SystemShowInMonitorAction showInMonitorAction = getShowInMonitorAction(); showInMonitorAction.setSelection(selection); menu.appendToGroup(openToPerspectiveAction.getContextMenuGroup(), showInMonitorAction); - + } + + } + } else // is a remote object { //Object firstSelection = selection.getFirstElement(); @@ -908,13 +929,18 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (fromSystemViewPart) // these require an IWorkbenchPart as a parameter, so we can't support them from within dialogs addObjectActions(ourMenu); } + + // GO TO CASCADING ACTIONS... if (fromSystemViewPart && (selectionIsRemoteObject || showOpenViewActions())) { SystemCascadingGoToAction gotoActions = getGoToActions(); gotoActions.setSelection(selection); menu.appendToGroup(gotoActions.getContextMenuGroup(), gotoActions.getSubMenu()); } + + } + } /** @@ -1002,19 +1028,25 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour * @return true if the selection has one or more ancestor relations */ protected boolean hasAncestorRelationSelection() { - - Item[] elements = getSelection(getControl()); + return selectionHasAncestryRelationship(); + /* + TreeItem[] elements = getTree().getSelection(); + + + //Item[] elements = getSelection(getControl()); for (int i = 0; i < elements.length; i++) { - TreeItem parentItem = (TreeItem) elements[i]; - for (int j = 0; j < elements.length; j++) { - if (j != i) { - if (isAncestorOf(parentItem, (TreeItem) elements[j])) { + TreeItem parentItem = elements[i]; + //for (int j = 0; j < elements.length; j++) { + //if (j != i) { + if (isAncestorOf(parentItem, elements)) + { return true; } - } - } + //} + // } } - return false; + return false; + */ } /** @@ -1033,6 +1065,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour boolean enableDelete = true; IStructuredSelection selection = (IStructuredSelection) getSelection(); Iterator elements = selection.iterator(); + while (enableDelete && elements.hasNext()) { Object element = elements.next(); ISystemViewElementAdapter adapter = getAdapter(element); @@ -1058,13 +1091,13 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (element == null) return; else { - logMyDebugMessage(this.getClass().getName(), ": -----------------------------------------------------------"); - logMyDebugMessage(this.getClass().getName(), ": REMOTE SSFID.......: " + element.getSubSystemConfigurationId(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE NAME........: " + element.getName(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPECATEGORY: " + element.getRemoteTypeCategory(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPE........: " + element.getRemoteType(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBTYPE.....: " + element.getRemoteSubType(firstSelection)); - logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBSUBTYPE..: " + element.getRemoteSubSubType(firstSelection)); + logMyDebugMessage(this.getClass().getName(), ": -----------------------------------------------------------"); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE SSFID.......: " + element.getSubSystemConfigurationId(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE NAME........: " + element.getName(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPECATEGORY: " + element.getRemoteTypeCategory(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE TYPE........: " + element.getRemoteType(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBTYPE.....: " + element.getRemoteSubType(firstSelection)); //$NON-NLS-1$ + logMyDebugMessage(this.getClass().getName(), ": REMOTE SUBSUBTYPE..: " + element.getRemoteSubSubType(firstSelection)); //$NON-NLS-1$ } } } @@ -1072,7 +1105,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected void logMyDebugMessage(String prefix, String msg) { if (!debugProperties) return; //RSEUIPlugin.logDebugMessage(prefix, msg); - System.out.println(prefix + " " + msg); + System.out.println(prefix + " " + msg); //$NON-NLS-1$ } /** @@ -1161,8 +1194,11 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (selectedItem == searchItem) found = true; else { - selectedItem = selectedItem.getParentItem(); - if (selectedItem == null) done = true; + if (selectedItem != null) + { + selectedItem = selectedItem.getParentItem(); + if (selectedItem == null) done = true; + } } } return found; @@ -1241,7 +1277,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (showBusy) SystemPromptDialog.setDisplayCursor(shell, null); if (isTiming) { elapsedTime.setEndTime(); - System.out.println("Time to expand for " + item.getItemCount() + " items: " + elapsedTime); + System.out.println("Time to expand for " + item.getItemCount() + " items: " + elapsedTime); //$NON-NLS-1$ //$NON-NLS-2$ } } @@ -1374,23 +1410,36 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour int firstIndex = 0; Item firstItem = null; int firstItemPosition = 0; - for (int i = 0; i < items.length; i++) { - if (items[i] != null) { - Item current = items[i]; - int position = getTreeItemPosition(parentItem, current, items); - - if (firstItem == null || position < firstItemPosition) { - firstItem = current; - firstItemPosition = position; - firstIndex = i; + + Item[] children = null; + if (parentItem instanceof Item) { + if (items == null) + children = getItems((Item) parentItem); + else + children = items; + } else + children = getChildren(parentItem); + if (items != null) + { + for (int i = 0; i < items.length; i++) { + if (items[i] != null) { + Item current = items[i]; + int position = getTreeItemPosition(parentItem, current, children); + + if (firstItem == null || position < firstItemPosition) { + firstItem = current; + firstItemPosition = position; + firstIndex = i; + } } } + + items[firstIndex] = null; } - - items[firstIndex] = null; return firstItem; } + /** * Move one tree item to a new location */ @@ -1421,8 +1470,16 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour for (int idx = 0; idx < src.length; idx++) oldItems[idx] = (Item) internalFindRelativeItem(parentItem, src[idx], 1); - for (int idx = 0; idx < src.length; idx++) { - oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx]) + 1; + + Item[] children = null; + if (parentItem instanceof Item) { + children = getItems((Item) parentItem); + } else + children = getChildren(parentItem); + + for (int idx = 0; idx < src.length; idx++) + { + oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx], children) + 1; } if (delta > 0) // moving down, process backwards @@ -1438,13 +1495,12 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } } - protected int getTreeItemPosition(Widget parentItem, Item childItem) { - return getTreeItemPosition(parentItem, childItem, null); - } + /** * Get the position of a tree item within its parent */ + /* protected int getTreeItemPosition(Widget parentItem, Item childItem, Item[] items) { int pos = -1; Item[] children = null; @@ -1460,6 +1516,19 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } return pos; } + */ + + + /** + * Get the position of a tree item within its parent + */ + protected int getTreeItemPosition(Widget parentItem, Item childItem, Item[] children) { + int pos = -1; + for (int idx = 0; (pos == -1) && (idx < children.length); idx++) { + if (children[idx] == childItem) pos = idx; + } + return pos; + } /** * Expand a given filter, given a subsystem that contains a reference to the filter's pool. @@ -1527,7 +1596,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected SystemView _originatingViewer; public ResourceChangedJob(ISystemResourceChangeEvent event, SystemView originatingViewer) { - super("Resource Changed..."); + super("Resource Changed..."); //$NON-NLS-1$ _originatingViewer = originatingViewer; _event = event; } @@ -1536,6 +1605,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour int type = _event.getType(); Object src = _event.getSource(); Object parent = _event.getParent(); + String[] properties = new String[1]; if (parent == RSEUIPlugin.getTheSystemRegistry()) parent = inputProvider; ISubSystem ss = null; @@ -1581,7 +1651,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour case EVENT_ADD: case EVENT_ADD_RELATIVE: if (debug) { - logDebugMsg("SV event: EVENT_ADD "); + logDebugMsg("SV event: EVENT_ADD "); //$NON-NLS-1$ } clearSelection(); //refresh(parent); @@ -1611,7 +1681,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_ADD_MANY: if (debug) { - logDebugMsg("SV event: EVENT_ADD_MANY"); + logDebugMsg("SV event: EVENT_ADD_MANY"); //$NON-NLS-1$ } multiSource = _event.getMultiSource(); clearSelection(); @@ -1640,7 +1710,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else if (addingConnections && (_event.getParent() instanceof ISystemRegistry) && !inputProvider.showingConnections()) return Status.OK_STATUS; for (int idx = 0; idx < multiSource.length; idx++) { - if (debug && addingConnections) logDebugMsg("... new connection " + ((IHost) multiSource[idx]).getAliasName()); + if (debug && addingConnections) logDebugMsg("... new connection " + ((IHost) multiSource[idx]).getAliasName()); //$NON-NLS-1$ createTreeItem(parentItem, multiSource[idx], -1); } setSelection(new StructuredSelection(multiSource), true); @@ -1648,7 +1718,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_REPLACE_CHILDREN: if (debug) { - logDebugMsg("SV event: EVENT_REPLACE_CHILDREN"); + logDebugMsg("SV event: EVENT_REPLACE_CHILDREN"); //$NON-NLS-1$ } multiSource = _event.getMultiSource(); //logDebugMsg("MULTI-SRC LENGTH : " + multiSource.length); @@ -1675,7 +1745,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_CHANGE_CHILDREN: if (debug) { - logDebugMsg("SV event: EVENT_CHANGE_CHILDREN. src=" + src + ", parent=" + parent); + logDebugMsg("SV event: EVENT_CHANGE_CHILDREN. src=" + src + ", parent=" + parent); //$NON-NLS-1$ //$NON-NLS-2$ //Exception e = new Exception(); //e.fillInStackTrace(); //e.printStackTrace(); @@ -1699,7 +1769,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour clearSelection(); } //refresh(parent); - if (debug) System.out.println("Found item and it was expanded for " + parent); + if (debug) System.out.println("Found item and it was expanded for " + parent); //$NON-NLS-1$ getControl().setRedraw(false); collapseNode(parent, true); // collapse and flush gui widgets from memory setExpandedState(parent, true); // expand the parent @@ -1712,7 +1782,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour collapseNode(parent, true); break; case EVENT_DELETE: - if (debug) logDebugMsg("SV event: EVENT_DELETE "); + if (debug) logDebugMsg("SV event: EVENT_DELETE "); //$NON-NLS-1$ // are we a secondary perspective, and our input or parent of our input was deleted? if (affectsInput(src)) { close(); @@ -1731,7 +1801,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; case EVENT_DELETE_MANY: - if (debug) logDebugMsg("SV event: EVENT_DELETE_MANY "); + if (debug) logDebugMsg("SV event: EVENT_DELETE_MANY "); //$NON-NLS-1$ multiSource = _event.getMultiSource(); // are we a secondary perspective, and our input or parent of our input was deleted? if (affectsInput(multiSource)) { @@ -1771,7 +1841,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; */ case EVENT_RENAME: - if (debug) logDebugMsg("SV event: EVENT_RENAME "); + if (debug) logDebugMsg("SV event: EVENT_RENAME "); //$NON-NLS-1$ properties[0] = IBasicPropertyConstants.P_TEXT; update(src, properties); // for refreshing non-structural properties in viewer when model changes updatePropertySheet(); @@ -1787,7 +1857,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour break; */ case EVENT_ICON_CHANGE: - if (debug) logDebugMsg("SV event: EVENT_ICON_CHANGE "); + if (debug) logDebugMsg("SV event: EVENT_ICON_CHANGE "); //$NON-NLS-1$ if (initViewerFilters != null && initViewerFilters.length > 0) { Widget w = findItem(src); @@ -1812,7 +1882,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //updatePropertySheet(); //break; case EVENT_REFRESH: - if (debug) logDebugMsg("SV event: EVENT_REFRESH "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH "); //$NON-NLS-1$ //if (src != null) // refresh(src); // ONLY VALID WHEN USER TRULY WANTS TO REQUERY CHILDREN FROM HOST //else @@ -1828,7 +1898,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // refresh the parent of the currently selected items. // todo: intelligently re-select previous selections case EVENT_REFRESH_SELECTED_PARENT: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_PARENT "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_PARENT "); //$NON-NLS-1$ TreeItem[] items = getTree().getSelection(); if ((items != null) && (items.length > 0) && (items[0] != null)) { //System.out.println("Selection not empty"); @@ -1844,7 +1914,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //System.out.println("Selection is empty"); break; case EVENT_REFRESH_SELECTED: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED "); //$NON-NLS-1$ IStructuredSelection selected = (IStructuredSelection) getSelection(); Iterator i = selected.iterator(); // the following is a tweak. Refresh only re-queries the children. If the selected item has no @@ -1855,7 +1925,6 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // memory address changes. Item parentElementItem = null; Vector selectedRemoteObjects = new Vector(); - ss = null; items = getTree().getSelection(); int itemIdx = 0; SystemElapsedTimer timer = null; @@ -1895,9 +1964,9 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else { smartRefresh(getTree().getSelection()); } - if (doTimings) { + if (doTimings && timer != null) { timer.setEndTime(); - System.out.println("Time to refresh selected: " + timer); + System.out.println("Time to refresh selected: " + timer); //$NON-NLS-1$ } //else //{ @@ -1909,7 +1978,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour updatePropertySheet(); break; case EVENT_REFRESH_SELECTED_FILTER: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_FILTER "); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_SELECTED_FILTER "); //$NON-NLS-1$ IStructuredSelection selectedItems = (IStructuredSelection) getSelection(); Iterator j = selectedItems.iterator(); // We climb up the tree here until we find a SystemFilterReference data member in the tree. @@ -1919,11 +1988,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // memory address changes. Item parentElemItem = null; Vector selRemoteObjects = new Vector(); - ss = null; if (j.hasNext()) { Object element = j.next(); ISystemViewElementAdapter adapter = _originatingViewer.getAdapter(element); - if ((parentElemItem == null) && (adapter != null)) { + if (adapter != null) { Item parItem = getParentItem((Item) findItem(element)); if (parItem != null) parentElemItem = parItem; //.getData(); @@ -1936,7 +2004,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } if (getRemoteAdapter(element) != null) { selRemoteObjects.addElement(element); - if (ss == null) ss = getRemoteAdapter(element).getSubSystem(element); + ss = getRemoteAdapter(element).getSubSystem(element); } } @@ -1955,17 +2023,17 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } break; case EVENT_REFRESH_REMOTE: - if (debug) logDebugMsg("SV event: EVENT_REFRESH_REMOTE: src = " + src); + if (debug) logDebugMsg("SV event: EVENT_REFRESH_REMOTE: src = " + src); //$NON-NLS-1$ refreshRemoteObject(src, parent, originatedHere); break; case EVENT_SELECT_REMOTE: - if (debug) logDebugMsg("SV event: EVENT_SELECT_REMOTE: src = " + src); + if (debug) logDebugMsg("SV event: EVENT_SELECT_REMOTE: src = " + src); //$NON-NLS-1$ //remoteItemsToSkip = null; // reset selectRemoteObjects(src, (ISubSystem) null, parent); break; case EVENT_MOVE_MANY: - if (debug) logDebugMsg("SV event: EVENT_MOVE_MANY "); + if (debug) logDebugMsg("SV event: EVENT_MOVE_MANY "); //$NON-NLS-1$ multiSource = _event.getMultiSource(); if ((multiSource == null) || (multiSource.length == 0)) return Status.OK_STATUS; parentItem = findItem(parent); @@ -1979,7 +2047,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } break; case EVENT_PROPERTY_CHANGE: - if (debug) logDebugMsg("SV event: EVENT_PROPERTY_CHANGE "); + if (debug) logDebugMsg("SV event: EVENT_PROPERTY_CHANGE "); //$NON-NLS-1$ String[] allProps = { IBasicPropertyConstants.P_TEXT, IBasicPropertyConstants.P_IMAGE }; ISystemRemoteElementAdapter ra = getRemoteAdapter(src); if (ra != null) { @@ -1989,32 +2057,32 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour updatePropertySheet(); break; case EVENT_PROPERTYSHEET_UPDATE: - if (debug) logDebugMsg("SV event: EVENT_PROPERTYSHEET_UPDATE "); + if (debug) logDebugMsg("SV event: EVENT_PROPERTYSHEET_UPDATE "); //$NON-NLS-1$ updatePropertySheet(); break; case EVENT_MUST_COLLAPSE: - if (debug) logDebugMsg("SV event: EVENT_MUST_COLLAPSE "); + if (debug) logDebugMsg("SV event: EVENT_MUST_COLLAPSE "); //$NON-NLS-1$ collapseNode(src, true); // collapse and flush gui widgets from memory break; case EVENT_COLLAPSE_ALL: - if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_ALL "); + if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_ALL "); //$NON-NLS-1$ collapseAll(); // collapse all - if ((src != null) && (src instanceof String) && ((String) src).equals("false")) // defect 41203 + if ((src != null) && (src instanceof String) && ((String) src).equals("false")) // defect 41203 //$NON-NLS-1$ { } else refresh(); // flush gui widgets from memory break; case EVENT_COLLAPSE_SELECTED: // defect 41203 - if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_SELECTED "); + if (debug) logDebugMsg("SV event: EVENT_COLLAPSE_SELECTED "); //$NON-NLS-1$ collapseSelected(); break; case EVENT_EXPAND_SELECTED: // defect 41203 - if (debug) logDebugMsg("SV event: EVENT_EXPAND_SELECTED "); + if (debug) logDebugMsg("SV event: EVENT_EXPAND_SELECTED "); //$NON-NLS-1$ expandSelected(); break; case EVENT_REVEAL_AND_SELECT: - if (debug) logDebugMsg("SV event: EVENT_REVEAL_AND_SELECT "); + if (debug) logDebugMsg("SV event: EVENT_REVEAL_AND_SELECT "); //$NON-NLS-1$ parentItem = findItem(parent); if (parentItem == null) return Status.OK_STATUS; if ((parentItem instanceof Item) && !getExpanded((Item) parentItem)) { @@ -2038,14 +2106,14 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } break; case EVENT_SELECT: - if (debug) logDebugMsg("SV event: EVENT_SELECT "); + if (debug) logDebugMsg("SV event: EVENT_SELECT "); //$NON-NLS-1$ item = findItem(src); if (item == null) // if not showing item, this is a no-op return Status.OK_STATUS; setSelection(new StructuredSelection(src), true); break; case EVENT_SELECT_EXPAND: - if (debug) logDebugMsg("SV event: EVENT_SELECT_EXPAND "); + if (debug) logDebugMsg("SV event: EVENT_SELECT_EXPAND "); //$NON-NLS-1$ item = findItem(src); if (item == null) // if not showing item, this is a no-op return Status.OK_STATUS; @@ -2425,10 +2493,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour */ protected String printTreeItem(Item item) { if (item == null) - return ""; + return ""; //$NON-NLS-1$ else if (item instanceof TreeItem) { TreeItem ti = (TreeItem) item; - return printTreeItem(ti.getParentItem()) + "/" + ti.getText(); + return printTreeItem(ti.getParentItem()) + "/" + ti.getText(); //$NON-NLS-1$ } else return item.toString(); } @@ -2747,8 +2815,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected void doOurInternalRefresh(Widget widget, Object element, boolean doStruct, boolean doTimings) { if (debug) { - logDebugMsg("in doOurInternalRefresh on " + getAdapter(element).getName(element)); - logDebugMsg("...current selection is " + getFirstSelectionName(getSelection())); + logDebugMsg("in doOurInternalRefresh on " + getAdapter(element).getName(element)); //$NON-NLS-1$ + logDebugMsg("...current selection is " + getFirstSelectionName(getSelection())); //$NON-NLS-1$ } SystemElapsedTimer timer = null; if (doTimings) timer = new SystemElapsedTimer(); @@ -2758,8 +2826,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour updatePlus((Item) widget, element); } updateItem(widget, element); - if (doTimings) { - System.out.println("doOurInternalRefresh timer 1: time to updatePlus and updateItem:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 1: time to updatePlus and updateItem:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -2770,8 +2838,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if ((widget instanceof Item) && getExpanded((Item) widget)) { // DKM - get raw children does a query but so does internalRefresh() // newChildren = getRawChildren(widget); - if (doTimings) { - System.out.println("doOurInternalRefresh timer 2: time to getRawChildren:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 2: time to getRawChildren:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -2782,8 +2850,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour internalRefresh(element); } - if (doTimings) { - System.out.println("doOurInternalRefresh timer 3: time to updateChildren:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 3: time to updateChildren:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -2811,19 +2879,19 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour }*/ } } - if (doTimings) { - System.out.println("doOurInternalRefresh timer 4: time to recurse children:" + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("doOurInternalRefresh timer 4: time to recurse children:" + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } protected Object[] getRawChildren(Widget w) { Object parent = w.getData(); - if (w != null) { - if (parent.equals(getRoot())) return super.getRawChildren(parent); - Object[] result = ((ITreeContentProvider) getContentProvider()).getChildren(parent); - if (result != null) return result; - } + + if (parent.equals(getRoot())) return super.getRawChildren(parent); + Object[] result = ((ITreeContentProvider) getContentProvider()).getChildren(parent); + if (result != null) return result; + return new Object[0]; } @@ -3077,10 +3145,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour setExpandedState(data, false); // collapse temp expansion of prompts else if (currItem.getExpanded()) { //expandedChildren.add(new ExpandedItem(currItem)); we don't need special processing for given items themselves as they will not be refreshed, only their kids - if (doTimings) timer.setStartTime(); + if (doTimings && timer != null) timer.setStartTime(); gatherExpandedChildren((fullRefresh ? null : currItem), currItem, expandedChildren); wasExpanded[idx] = true; - if (doTimings) System.out.println("Refresh Timer 1: time to gatherExpandedChildren: " + timer.setEndTime()); + if (doTimings && timer != null) System.out.println("Refresh Timer 1: time to gatherExpandedChildren: " + timer.setEndTime()); //$NON-NLS-1$ } else wasExpanded[idx] = false; } @@ -3100,26 +3168,26 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // address won't change, only that of its children. for (int idx = 0; idx < itemsToRefresh.length; idx++) { TreeItem currItem = itemsToRefresh[idx]; - if (doTimings) timer.setStartTime(); + if (doTimings && timer != null) timer.setStartTime(); setExpanded(currItem, false); // collapse node - if (doTimings) { - System.out.println("Refresh Timer 2: time to setExpanded(false): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 2: time to setExpanded(false): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } ourInternalRefresh(currItem, currItem.getData(), true, true, doTimings); // dispose of children, update plus - if (doTimings) { - System.out.println("Refresh Timer 3: time to do ourInternalRefresh(...): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 3: time to do ourInternalRefresh(...): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } if (wasExpanded[idx]) { createChildren(currItem); // re-expand - if (doTimings) { - System.out.println("Refresh Timer 4: time to createChildren(...): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 4: time to createChildren(...): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } currItem.setExpanded(true); - if (doTimings) { - System.out.println("Refresh Timer 5: time to setExpanded(true): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 5: time to setExpanded(true): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } else // hmm, item was not expanded so just flush its memory @@ -3143,20 +3211,20 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //setExpanded(item, true); createChildren(item); ((TreeItem) item).setExpanded(true); - if (debug) System.out.println("Re-Expanded RemoteItem: " + itemToExpand.remoteName); - } else if (debug) System.out.println("Re-Expand of RemoteItem '" + itemToExpand.remoteName + "' failed. Not found"); + if (debug) System.out.println("Re-Expanded RemoteItem: " + itemToExpand.remoteName); //$NON-NLS-1$ + } else if (debug) System.out.println("Re-Expand of RemoteItem '" + itemToExpand.remoteName + "' failed. Not found"); //$NON-NLS-1$ //$NON-NLS-2$ } else { setExpandedState(itemToExpand.data, true); - if (debug) System.out.println("Re-Expanded non-remote Item: " + itemToExpand.data); + if (debug) System.out.println("Re-Expanded non-remote Item: " + itemToExpand.data); //$NON-NLS-1$ } } - if (doTimings) { - System.out.println("Refresh Timer 6: time to reExpanded expanded subnodes: " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 6: time to reExpanded expanded subnodes: " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } getControl().setRedraw(true); - if (doTimings) { - System.out.println("Refresh Timer 7: time to setRedraw(true): " + timer.setEndTime()); + if (doTimings && timer != null) { + System.out.println("Refresh Timer 7: time to setRedraw(true): " + timer.setEndTime()); //$NON-NLS-1$ timer.setStartTime(); } } @@ -3254,9 +3322,9 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour remoteName = remoteAdapter.getAbsoluteName(data); subsystem = remoteAdapter.getSubSystem(data); areAnyRemote = true; - if (debug) System.out.println("ExpandedRemoteItem added. remoteName = " + remoteName); - } else if (debug) System.out.println("ExpandedItem added. Data = " + data); - } else if (debug) System.out.println("ExpandedItem added. Data = null"); + if (debug) System.out.println("ExpandedRemoteItem added. remoteName = " + remoteName); //$NON-NLS-1$ + } else if (debug) System.out.println("ExpandedItem added. Data = " + data); //$NON-NLS-1$ + } else if (debug) System.out.println("ExpandedItem added. Data = null"); //$NON-NLS-1$ } boolean isRemote() { @@ -3333,13 +3401,13 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour String eventType = null; switch (type) { case EVENT_RENAME_FILTER_REFERENCE: - eventType = "EVENT_RENAME_FILTER_REFERENCE"; + eventType = "EVENT_RENAME_FILTER_REFERENCE"; //$NON-NLS-1$ break; case EVENT_CHANGE_FILTER_REFERENCE: - eventType = "EVENT_CHANGE_FILTER_REFERENCE"; + eventType = "EVENT_CHANGE_FILTER_REFERENCE"; //$NON-NLS-1$ break; } - logDebugMsg("SV event: " + eventType); + logDebugMsg("SV event: " + eventType); //$NON-NLS-1$ } // STEP 1. ARE WE EVEN SHOWING THE GIVEN SUBSYSTEM? @@ -3357,20 +3425,20 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // Yes we are showing the subsystem, so widget is the subsystem item if (widget != c && widget instanceof Item) { - if (debug) logDebugMsg("...Found ss " + ss); + if (debug) logDebugMsg("...Found ss " + ss); //$NON-NLS-1$ item = internalFindReferencedItem(widget, filter, SEARCH_INFINITE); } // No, we are not showing the subsystem, so widget is the control else if (widget == c) { - if (debug) logDebugMsg("...Din not find ss " + ss); + if (debug) logDebugMsg("...Din not find ss " + ss); //$NON-NLS-1$ item = internalFindReferencedItem(widget, filter, SEARCH_INFINITE); } if (item == null) - logDebugMsg("......didn't find renamed/updated filter's reference!"); + logDebugMsg("......didn't find renamed/updated filter's reference!"); //$NON-NLS-1$ else { // STEP 3: UPDATE THAT FILTER... if (type == EVENT_RENAME_FILTER_REFERENCE) { @@ -3401,11 +3469,11 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour Widget item = findItem(ss); if (item != null && item != getControl()) { Item ssItem = (Item) item; - if (debug) logDebugMsg("...Found ss " + ss); + if (debug) logDebugMsg("...Found ss " + ss); //$NON-NLS-1$ // STEP 2: ARE WE SHOWING A REFERENCE TO THE UPDATED FILTER STRING? item = internalFindReferencedItem(ssItem, filterString, SEARCH_INFINITE); if (item == null) - logDebugMsg("......didn't find updated filter string's reference!"); + logDebugMsg("......didn't find updated filter string's reference!"); //$NON-NLS-1$ else { // STEP 3: UPDATE THAT FILTER STRING... if (type == EVENT_CHANGE_FILTERSTRING_REFERENCE) // HAD BETTER! @@ -3470,34 +3538,34 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour switch (type) { case EVENT_ADD_FILTER_REFERENCE: add = true; - if (debug) eventType = "EVENT_ADD_FILTER_REFERENCE"; + if (debug) eventType = "EVENT_ADD_FILTER_REFERENCE"; //$NON-NLS-1$ break; case EVENT_DELETE_FILTER_REFERENCE: delete = true; - if (debug) eventType = "EVENT_DELETE_FILTER_REFERENCE"; + if (debug) eventType = "EVENT_DELETE_FILTER_REFERENCE"; //$NON-NLS-1$ break; case EVENT_MOVE_FILTER_REFERENCES: move = true; - if (debug) eventType = "EVENT_MOVE_FILTER_REFERENCES"; + if (debug) eventType = "EVENT_MOVE_FILTER_REFERENCES"; //$NON-NLS-1$ break; case EVENT_ADD_FILTERSTRING_REFERENCE: add = true; afilterstring = true; - if (debug) eventType = "EVENT_ADD_FILTERSTRING_REFERENCE"; + if (debug) eventType = "EVENT_ADD_FILTERSTRING_REFERENCE"; //$NON-NLS-1$ break; case EVENT_DELETE_FILTERSTRING_REFERENCE: delete = true; afilterstring = true; - if (debug) eventType = "EVENT_DELETE_FILTERSTRING_REFERENCE"; + if (debug) eventType = "EVENT_DELETE_FILTERSTRING_REFERENCE"; //$NON-NLS-1$ break; case EVENT_MOVE_FILTERSTRING_REFERENCES: move = true; afilterstring = true; - if (debug) eventType = "EVENT_MOVE_FILTERSTRING_REFERENCES"; + if (debug) eventType = "EVENT_MOVE_FILTERSTRING_REFERENCES"; //$NON-NLS-1$ break; } - if (debug) logDebugMsg("SV event: " + eventType); + if (debug) logDebugMsg("SV event: " + eventType); //$NON-NLS-1$ //} //clearSelection(); @@ -3515,7 +3583,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (item == null) { refresh(); - if (debug) logDebugMsg("...Did not find ss " + ss.getName()); + if (debug) logDebugMsg("...Did not find ss " + ss.getName()); //$NON-NLS-1$ return; } Item ssItem = (Item) item; @@ -3523,7 +3591,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour IStructuredSelection oldSelections = (IStructuredSelection) getSelection(); Object parent = event.getParent(); - if (debug) logDebugMsg("...Found ss " + ss); + if (debug) logDebugMsg("...Found ss " + ss); //$NON-NLS-1$ // STEP 2: ARE WE SHOWING A REFERENCE TO THE FILTER's PARENT POOL? Item parentRefItem = null; @@ -3544,7 +3612,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour parentRefItem = ssItem; } if (parentRefItem != null) { - if (debug) logDebugMsg("......We are showing reference to parent"); + if (debug) logDebugMsg("......We are showing reference to parent"); //$NON-NLS-1$ // STEP 3... YES, SO REFRESH PARENT... IT WILL RE-GEN THE FILTER REFERENCES FOR EACH CHILD FILTER // ... actually, call off the whole show if that parent is currently not expanded!! // HMMM... WE NEED TO REFRESH EVEN IF NOT EXPANDED IF ADDING FIRST CHILD @@ -3578,7 +3646,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour //refresh(parentRefItem.getData()); } else // remove { - remove(oldItem.getData()); + if (oldItem != null) + remove(oldItem.getData()); } } else // add operation { @@ -3614,13 +3683,13 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // 4a. ADD ... only select if parent of new filter was previously selected... if (add && isSelected(parentRefItem.getData(), oldSelections)) { - if (debug) logDebugMsg(".........that parent was previously selected"); + if (debug) logDebugMsg(".........that parent was previously selected"); //$NON-NLS-1$ // .... YES, SO SELECT NEW FILTER'S REFERENCE Item filterItem = (Item) internalFindReferencedItem(parentRefItem, afilterstring ? (Object) filterstring : (Object) filter, 1); // start at filter's parent, search for filter if (filterItem == null) { - if (debug) logDebugMsg("Hmm, didn't find new filter's reference!"); + if (debug) logDebugMsg("Hmm, didn't find new filter's reference!"); //$NON-NLS-1$ } else { - if (debug) logDebugMsg(".........Trying to set selection to " + filterItem.getData()); + if (debug) logDebugMsg(".........Trying to set selection to " + filterItem.getData()); //$NON-NLS-1$ setSelection(new StructuredSelection(filterItem.getData()), true); } } @@ -3651,7 +3720,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } } - } else if (debug) logDebugMsg("Did not find parent ref " + parent); + } else if (debug) logDebugMsg("Did not find parent ref " + parent); //$NON-NLS-1$ } /** @@ -3668,8 +3737,14 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour oldItems[idx] = (Item) internalFindReferencedItem(parentItem, masterSrc[idx], 1); src[idx] = oldItems[idx].getData(); } + Item[] children = null; + if (parentItem instanceof Item) { + children = getItems((Item) parentItem); + } else + children = getChildren(parentItem); + for (int idx = 0; idx < src.length; idx++) { - oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx]) + 1; + oldPositions[idx] = getTreeItemPosition(parentItem, oldItems[idx], children) + 1; //logDebugMsg("::: Old position : " + oldPositions[idx]); } @@ -3798,7 +3873,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else { //recursiveFindAllRemoteItemReferences(parentItem, remoteObjectName, null, subsystem, matches); match = recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, null, subsystem); - if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2,3)"); + if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2,3)"); //$NON-NLS-1$ //$NON-NLS-2$ } //if (matches.size() > 0) // return (Item)matches.elementAt(0); @@ -3826,7 +3901,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour else { //recursiveFindAllRemoteItemReferences(parentItem, remoteObjectName, remoteObject, subsystem, matches); match = recursiveFindFirstRemoteItemReference(parentItem, remoteObjectName, remoteObject, subsystem); - if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2)"); + if (debugRemote) System.out.println("Returning " + match + " from findFirstRemoteItemReference(1,2)"); //$NON-NLS-1$ //$NON-NLS-2$ } //if (matches.size() > 0) @@ -3910,15 +3985,15 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if ((roots == null) || (roots.length == 0)) return null; Item match = null; if (debugRemote) { - System.out.println("Inside internalFindFirstRemoteItemReference for searchString: " + searchString + ", subsystem null? " + (subsystem == null) + ", nbr roots = " + roots.length); + System.out.println("Inside internalFindFirstRemoteItemReference for searchString: " + searchString + ", subsystem null? " + (subsystem == null) + ", nbr roots = " + roots.length); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } for (int idx = 0; (match == null) && (idx < roots.length); idx++) { match = recursiveFindFirstRemoteItemReference(roots[idx], searchString, elementObject, subsystem); - if (debugRemote) System.out.println("...Inside internalFindFirstRemoteItemReference. Result of searching root " + idx + ": " + roots[idx].getText() + ": " + match); + if (debugRemote) System.out.println("...Inside internalFindFirstRemoteItemReference. Result of searching root " + idx + ": " + roots[idx].getText() + ": " + match); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } if (debugRemote) { - System.out.println("...Inside internalFindFirstRemoteItemReference. Returning " + match); - if (match != null) System.out.println("......set bp here"); + System.out.println("...Inside internalFindFirstRemoteItemReference. Returning " + match); //$NON-NLS-1$ + if (match != null) System.out.println("......set bp here"); //$NON-NLS-1$ } return match; } @@ -3945,15 +4020,15 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour // first test for binary match if (elementObject == rawData) { occurrences.addElement(parent); // found a match! - if (debugRemote) System.out.println("Find All: Remote item binary match found"); + if (debugRemote) System.out.println("Find All: Remote item binary match found"); //$NON-NLS-1$ return occurrences; // no point in checking the kids } // now test for absolute name match String fqn = remoteAdapter.getAbsoluteName(rawData); - if (debugRemote) System.out.println("TESTING FINDALL: '" + fqn + "' vs '" + elementName + "'"); + if (debugRemote) System.out.println("TESTING FINDALL: '" + fqn + "' vs '" + elementName + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ if ((fqn != null) && fqn.equals(elementName)) { occurrences.addElement(parent); // found a match! - if (debugRemote) System.out.println("...and remote item name match found"); + if (debugRemote) System.out.println("...and remote item name match found"); //$NON-NLS-1$ return occurrences; // no point in checking the kids } } @@ -4005,20 +4080,20 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (remoteAdapter != null) { // first test for binary match if (elementObject == rawData) { - if (debugRemote) System.out.println("Remote item binary match found"); + if (debugRemote) System.out.println("Remote item binary match found"); //$NON-NLS-1$ return parent; // return the match } // now test for absolute name match String fqn = remoteAdapter.getAbsoluteName(rawData); - if (debugRemote) System.out.println("TESTING FINDFIRST: '" + fqn + "' vs '" + elementName + "'"); + if (debugRemote) System.out.println("TESTING FINDFIRST: '" + fqn + "' vs '" + elementName + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ if ((fqn != null) && fqn.equals(elementName)) { if ((subsystem != null) && (subsystem == remoteAdapter.getSubSystem(rawData))) { - if (debugRemote) System.out.println("Remote item name match found and subsystems matched"); + if (debugRemote) System.out.println("Remote item name match found and subsystems matched"); //$NON-NLS-1$ return parent; // return the match } else if (subsystem == null) { - if (debugRemote) System.out.println("Remote item name match found and subsystem null"); + if (debugRemote) System.out.println("Remote item name match found and subsystem null"); //$NON-NLS-1$ return parent; - } else if (debugRemote) System.out.println("Remote item name match found but subsystem mismatch"); + } else if (debugRemote) System.out.println("Remote item name match found but subsystem mismatch"); //$NON-NLS-1$ } } // ------------------------------------------------------------------------- @@ -4093,22 +4168,22 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour if (rawData instanceof ISystemFilterReference) { ISystemFilterReference filterRef = (ISystemFilterReference) rawData; if (filterRef.getReferencedFilter().isPromptable()) return occurrences; - if (debugRemote) System.out.println("Testing filter: " + filterRef.getReferencedFilter().getName()); + if (debugRemote) System.out.println("Testing filter: " + filterRef.getReferencedFilter().getName()); //$NON-NLS-1$ ISubSystem fss = (ISubSystem) filterRef.getProvider(); if (fss != null) // should never happen!! { // #1 if (fss.doesFilterMatch(filterRef.getReferencedFilter(), elementName)) { occurrences.addElement(new FilterMatch((TreeItem) parent, true)); // found a match! - if (debugRemote) System.out.println("...Filter match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); + if (debugRemote) System.out.println("...Filter match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); //$NON-NLS-1$ //$NON-NLS-2$ return occurrences; // no point in checking the kids } // #2 else if (fss.doesFilterListContentsOf(filterRef.getReferencedFilter(), elementName)) { occurrences.addElement(new FilterMatch((TreeItem) parent, false)); // found a match! - if (debugRemote) System.out.println("...Filter content match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); + if (debugRemote) System.out.println("...Filter content match found for " + elementName + ": " + filterRef.getReferencedFilter().getName()); //$NON-NLS-1$ //$NON-NLS-2$ return occurrences; // no point in checking the kids - } else if (debugRemote) System.out.println("... no match on the filter for element name " + elementName); + } else if (debugRemote) System.out.println("... no match on the filter for element name " + elementName); //$NON-NLS-1$ } } // ---------------------------------------------------------------------- @@ -4208,8 +4283,10 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour selectionEnableDeleteAction = true; selectionEnableRenameAction = true; selectionIsRemoteObject = true; + selectionHasAncestorRelation = hasAncestorRelationSelection(); + IStructuredSelection selection = (IStructuredSelection) getSelection(); Iterator elements = selection.iterator(); while (elements.hasNext()) { @@ -4242,6 +4319,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } } } + selectionFlagsUpdated = true; //System.out.println("Inside scan selections: selectionShowOpenViewActions = " + selectionShowOpenViewActions); } @@ -4304,7 +4382,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour public boolean showDelete() { if (!selectionFlagsUpdated) { //System.out.println("Inside showDelete. selectFlagsUpdated = false"); - scanSelections("showDelete"); + scanSelections("showDelete"); //$NON-NLS-1$ } return selectionShowDeleteAction; } @@ -4317,7 +4395,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour public boolean canDelete() { if (!selectionFlagsUpdated) { //System.out.println("Inside canDelete. selectFlagsUpdated = false"); - scanSelections("canDelete"); + scanSelections("canDelete"); //$NON-NLS-1$ } return selectionEnableDeleteAction; } @@ -4446,7 +4524,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour * Assumes scanSelections() has already been called */ public boolean canRename() { - if (!selectionFlagsUpdated) scanSelections("canRename"); + if (!selectionFlagsUpdated) scanSelections("canRename"); //$NON-NLS-1$ return selectionEnableRenameAction; } @@ -4498,7 +4576,7 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected void logDebugMsg(String msg) { //RSEUIPlugin.logDebugMessage(this.getClass().getName(),msg); - msg = this.getClass().getName() + ": " + msg; + msg = this.getClass().getName() + ": " + msg; //$NON-NLS-1$ SystemBasePlugin.logInfo(msg); System.out.println(msg); } @@ -4573,14 +4651,42 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour protected boolean selectionHasAncestryRelationship() { if (selectionFlagsUpdated) return selectionHasAncestorRelation; + + Tree tree = getTree(); + TreeItem[] items = tree.getSelection(); + return hasSelectedAncestor(items); + /* Tree tree = getTree(); TreeItem[] items = tree.getSelection(); for (int idx = 0; idx < items.length; idx++) { TreeItem item = items[idx]; - for (int c = 0; c < items.length; c++) { - if (item != items[c]) { - if (isAncestorOf(item, items[c])) { + // for (int c = 0; c < items.length; c++) { + // if (item != items[c]) { + if (isAncestorOf(item, items)) { + return true; + } +// } + // } + } + return false; + */ + } + + protected boolean isAncestorOf(TreeItem container, TreeItem[] items) { + TreeItem[] children = container.getItems(); + for (int i = 0; i < children.length; i++) { + TreeItem child = children[i]; + for (int j = 0; j < items.length; j++) + { + TreeItem item = items[j]; + if (child == item) { + return true; + } + else if (child.getItemCount() > 0) + { + if (isAncestorOf(child, items)) + { return true; } } @@ -4588,7 +4694,35 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } return false; } + + + protected boolean hasSelectedAncestor(TreeItem[] items) { + for (int j = 0; j < items.length; j++) + { + TreeItem item = items[j]; + TreeItem parent = item.getParentItem(); + while (parent != null) + { + if (isTreeItemSelected(parent)) + { + return true; + } + else + { + parent = parent.getParentItem(); + } + } + } + return false; + } + + + + + + +/* protected boolean isAncestorOf(TreeItem container, TreeItem item) { TreeItem[] children = container.getItems(); for (int i = 0; i < children.length; i++) { @@ -4603,7 +4737,8 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour } return false; } - +*/ + /** * This is called to accurately get the parent object for the current selection * for this viewer. @@ -4819,19 +4954,28 @@ public class SystemView extends TreeViewer implements ISystemTree, ISystemResour Widget w = findItem(element); if (w == null) return 0; - else { - if (w instanceof TreeItem) { - TreeItem ti = (TreeItem) w; - int count = getItemCount((Item) w); - if (count == 1) // is it a dummy? - { - Item[] items = getItems(ti); - if (items[0].getData() == null) count = 0; // assume a dummy + + if (w instanceof TreeItem) { + TreeItem ti = (TreeItem) w; + int count = getItemCount((Item) w); + int ignoreItems = 0; + if (count > 0) { + Item[] items = getItems(ti); + for (int i=0; i