예제 #1
0
 @Override
 public void resourceChanged(final IResourceChangeEvent event) {
   for (final IMarkerDelta delta : event.findMarkerDeltas(IMarker.BOOKMARK, false)) {
     if (delta.getResource().equals(fFile)) {
       if (delta.getKind() == IResourceDelta.REMOVED) {
         final IMarker bookmark = delta.getMarker();
         Display.getDefault()
             .asyncExec(
                 new Runnable() {
                   @Override
                   public void run() {
                     fEventsTable.removeBookmark(bookmark);
                   }
                 });
       } else if (delta.getKind() == IResourceDelta.CHANGED) {
         Display.getDefault()
             .asyncExec(
                 new Runnable() {
                   @Override
                   public void run() {
                     fEventsTable.getTable().refresh();
                   }
                 });
       }
     }
   }
 }
  /* (non-Javadoc)
   * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
   */
  public void resourceChanged(final IResourceChangeEvent event) {
    String[] markerTypes = getMarkerTypes();
    Set handledResources = new HashSet();
    Set changes = new HashSet();

    // Accumulate all distinct resources that have had problem marker
    // changes
    for (int idx = 0; idx < markerTypes.length; idx++) {
      IMarkerDelta[] markerDeltas = event.findMarkerDeltas(markerTypes[idx], true);
      for (int i = 0; i < markerDeltas.length; i++) {
        IMarkerDelta delta = markerDeltas[i];
        IResource resource = delta.getResource();
        if (!handledResources.contains(resource)) {
          handledResources.add(resource);
          ISynchronizeModelElement[] elements =
              provider.getClosestExistingParents(delta.getResource());
          if (elements != null && elements.length > 0) {
            for (int j = 0; j < elements.length; j++) {
              ISynchronizeModelElement element = elements[j];
              changes.add(element);
            }
          }
        }
      }
    }

    if (!changes.isEmpty()) {
      updateMarkersFor(
          (ISynchronizeModelElement[])
              changes.toArray(new ISynchronizeModelElement[changes.size()]));
    }
  }
 private static int hasSpawnpointChanges(IMarkerDelta delta, IScriptBreakpoint breakpoint) {
   final String[] attrs = breakpoint.getUpdatableAttributes();
   try {
     final IMarker marker = delta.getMarker();
     for (int i = 0; i < attrs.length; ++i) {
       final String attr = attrs[i];
       if (IBreakpoint.ENABLED.equals(attr) || IMarker.LINE_NUMBER.equals(attr)) {
         final Object oldValue = delta.getAttribute(attr);
         final Object newValue = marker.getAttribute(attr);
         if (oldValue == null) {
           if (newValue != null) {
             return IMarker.LINE_NUMBER.equals(attr) ? MAJOR_CHANGE : MINOR_CHANGE;
           }
           continue;
         }
         if (newValue == null) {
           return IMarker.LINE_NUMBER.equals(attr) ? MAJOR_CHANGE : MINOR_CHANGE;
         }
         if (!oldValue.equals(newValue)) {
           return IMarker.LINE_NUMBER.equals(attr) ? MAJOR_CHANGE : MINOR_CHANGE;
         }
       }
     }
   } catch (CoreException e) {
     DLTKDebugPlugin.log(e);
   }
   return NO_CHANGES;
 }
  private int hasBreakpointChanges(IMarkerDelta delta, IScriptBreakpoint breakpoint) {
    final String[] attrs = breakpoint.getUpdatableAttributes();
    try {
      final IMarker marker = delta.getMarker();
      for (int i = 0; i < attrs.length; ++i) {
        final String attr = attrs[i];

        final Object oldValue = delta.getAttribute(attr);
        final Object newValue = marker.getAttribute(attr);

        if (oldValue == null) {
          if (newValue != null) {
            return classifyBreakpointChange(delta, breakpoint, attr);
          }
          continue;
        }
        if (newValue == null) {
          return classifyBreakpointChange(delta, breakpoint, attr);
        }
        if (!oldValue.equals(newValue)) {
          return classifyBreakpointChange(delta, breakpoint, attr);
        }
      }
    } catch (CoreException e) {
      DLTKDebugPlugin.log(e);
    }
    return NO_CHANGES;
  }
예제 #5
0
  /**
   * Processes a {@link IMarker} change.
   *
   * @param markerDeltas the list of {@link IMarkerDelta}
   */
  private void processMarkerChanges(IMarkerDelta[] markerDeltas) {
    AndroidManifestDescriptors descriptors = getManifestDescriptors();
    if (descriptors != null && descriptors.getApplicationElement() != null) {
      UiElementNode app_ui_node =
          mUiManifestNode.findUiChildNode(descriptors.getApplicationElement().getXmlName());
      List<UiElementNode> children = app_ui_node.getUiChildren();

      for (IMarkerDelta markerDelta : markerDeltas) {
        processMarker(markerDelta.getMarker(), children, markerDelta.getKind());
      }
    }
  }
예제 #6
0
 private boolean isErrorDelta(IResourceDelta delta) {
   if ((delta.getFlags() & IResourceDelta.MARKERS) != 0) {
     IMarkerDelta[] markerDeltas = delta.getMarkerDeltas();
     for (IMarkerDelta markerDelta : markerDeltas) {
       if (markerDelta.isSubtypeOf(IMarker.PROBLEM)) {
         int kind = markerDelta.getKind();
         if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED) return true;
         int severity = markerDelta.getAttribute(IMarker.SEVERITY, -1);
         int newSeverity = markerDelta.getMarker().getAttribute(IMarker.SEVERITY, -1);
         if (newSeverity != severity) return true;
       }
     }
   }
   return false;
 }
 private int classifyBreakpointChange(
     IMarkerDelta delta, IScriptBreakpoint breakpoint, String attr) throws CoreException {
   final boolean conditional = ScriptBreakpointUtils.isConditional(breakpoint);
   if (conditional && AbstractScriptBreakpoint.EXPRESSION.equals(attr)) {
     return MAJOR_CHANGE;
   }
   final boolean oldExprState =
       delta.getAttribute(AbstractScriptBreakpoint.EXPRESSION_STATE, false);
   final String oldExpr = delta.getAttribute(AbstractScriptBreakpoint.EXPRESSION, null);
   if (ScriptBreakpointUtils.isConditional(oldExprState, oldExpr) != conditional) {
     return MAJOR_CHANGE;
   }
   if (IMarker.LINE_NUMBER.equals(attr)
       && !target.getOptions().get(DebugOption.DBGP_BREAKPOINT_UPDATE_LINE_NUMBER)) {
     return MAJOR_CHANGE;
   }
   return MINOR_CHANGE;
 }