/** * Constructor * * @param input the breakpoint manager input */ InputData(DefaultBreakpointsViewInput input) { fInput = input; fComparator = (ElementComparator) input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ELEMENT_COMPARATOR); fOrganizers = (IBreakpointOrganizer[]) input.getContext().getProperty(IBreakpointUIConstants.PROP_BREAKPOINTS_ORGANIZERS); // Create the initial container. ModelDelta initialDelta = new ModelDelta(fInput, 0, IModelDelta.NO_CHANGE, -1); IBreakpoint[] breakpoints = filterBreakpoints( fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); fContainer = createRootContainer(initialDelta, fInput, fOrganizers, breakpoints); registerOrganizersListener(null, fOrganizers); input.getContext().addPropertyChangeListener(fPresentationContextListener); IWorkbenchWindow window = fInput.getContext().getWindow(); if (window != null) { IDebugContextService debugContextService = DebugUITools.getDebugContextManager().getContextService(window); ISelection debugContext = debugContextService.getActiveContext(); if (debugContext instanceof IStructuredSelection) { synchronized(this) { fDebugContext = (IStructuredSelection)debugContext; } } debugContextService.addDebugContextListener(fDebugContextListener); } }
void sortContainers() { IBreakpoint[] breakpoints = filterBreakpoints(fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); synchronized (this) { ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); // create a reference container, use for deleting elements and // adding elements ModelDelta dummyDelta = new ModelDelta(null, IModelDelta.NO_CHANGE); BreakpointContainer refContainer = createRootContainer(dummyDelta, fInput, fOrganizers, breakpoints); // delete all elements deleteAllElements(fContainer, delta); // adjust the old organizer with the reference organizer BreakpointContainer.copyOrganizers(fContainer, refContainer); // insert all elements IBreakpoint newBreakpoint = insertAddedElements(fContainer, refContainer, delta); delta.setChildCount(fContainer.getChildren().length); // select the new breakpoint if (newBreakpoint != null) { appendModelDeltaToElement(delta, newBreakpoint, IModelDelta.SELECT); } if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { DebugUIPlugin.trace("POST BREAKPOINT DELTA (setOrganizers)\n"); //$NON-NLS-1$ } postModelChanged(delta, false); } }
void updateContainers() { IBreakpoint[] breakpoints = filterBreakpoints( fInput, getSelectionFilter(fInput, getDebugContext()), fBpManager.getBreakpoints()); synchronized(this) { ModelDelta delta = new ModelDelta(fInput, IModelDelta.NO_CHANGE); // create a reference container, use for deleting elements and adding elements ModelDelta dummyDelta = new ModelDelta(null, IModelDelta.NO_CHANGE); BreakpointContainer refContainer = createRootContainer(dummyDelta, fInput, fOrganizers, breakpoints); // delete the removed elements deleteRemovedElements(fContainer, refContainer, delta); // adjust the old organizer with the reference organizer BreakpointContainer.copyOrganizers(fContainer, refContainer); // insert the added elements IBreakpoint newBreakpoint = insertAddedElements(fContainer, refContainer, delta); delta.setChildCount(fContainer.getChildren().length); // select the new breakpoint if (newBreakpoint != null) { appendModelDeltaToElement(delta, newBreakpoint, IModelDelta.SELECT); } if (DebugUIPlugin.DEBUG_BREAKPOINT_DELTAS) { DebugUIPlugin.trace("POST BREAKPOINT DELTA (setOrganizers)\n"); //$NON-NLS-1$ } postModelChanged(delta, false); } }