private void addResult(String name, DartElement element, SearchListener listener)
     throws DartModelException {
   SourceRange range = null;
   switch (element.getElementType()) {
     case DartElement.FIELD:
     case DartElement.METHOD:
       SourceReference method = (SourceReference) element;
       range = method.getNameRange();
       break;
     default:
       return;
   }
   SearchMatch match = new SearchMatch(MatchQuality.EXACT, element, range);
   listener.matchFound(match);
 }
 private void searchForReferences(
     SearchEngine engine,
     DartElement element,
     SearchScope scope,
     SearchFilter filter,
     SearchListener collector,
     IProgressMonitor monitor)
     throws SearchException {
   switch (element.getElementType()) {
     case DartElement.METHOD:
       engine.searchReferences((Method) element, scope, filter, collector, monitor);
       break;
     case DartElement.CLASS_TYPE_ALIAS:
       engine.searchReferences((DartClassTypeAlias) element, scope, filter, collector, monitor);
       break;
     case DartElement.FUNCTION_TYPE_ALIAS:
       engine.searchReferences((DartFunctionTypeAlias) element, scope, filter, collector, monitor);
       break;
     case DartElement.FIELD:
       engine.searchReferences((Field) element, scope, filter, collector, monitor);
       break;
     case DartElement.FUNCTION:
       engine.searchReferences((DartFunction) element, scope, filter, collector, monitor);
       break;
     case DartElement.TYPE:
       engine.searchReferences((Type) element, scope, filter, collector, monitor);
       break;
     case DartElement.IMPORT:
       engine.searchReferences((DartImport) element, scope, filter, collector, monitor);
       break;
     case DartElement.VARIABLE:
       engine.searchReferences(
           (DartVariableDeclaration) element, scope, filter, collector, monitor);
       break;
     default:
       throw new UnsupportedOperationException(
           "unsupported search type: " + element.getClass()); // $NON-NLS-1$
   }
 }
 private void searchForDeclarations(
     SearchEngine engine,
     DartElement element,
     SearchScope scope,
     SearchFilter filter,
     SearchResultCollector listener,
     IProgressMonitor monitor)
     throws CoreException, SearchException {
   switch (element.getElementType()) {
     case DartElement.CLASS_TYPE_ALIAS:
     case DartElement.FUNCTION_TYPE_ALIAS:
     case DartElement.FUNCTION:
     case DartElement.IMPORT:
     case DartElement.TYPE:
     case DartElement.TYPE_PARAMETER:
     case DartElement.VARIABLE:
       {
         SourceRange range = ((SourceReference) element).getSourceRange();
         SearchMatch match = new SearchMatch(MatchQuality.EXACT, element, range);
         if (filter == null || filter.passes(match)) {
           listener.matchFound(match);
         }
         break;
       }
     case DartElement.FIELD:
     case DartElement.METHOD:
       {
         // There's no way to tell which hierarchy an untyped reference might refer to, so find all
         // declarations.
         DartIdentifier identifier = new DartIdentifier(element.getElementName());
         searchForDeclarations(engine, identifier, scope, filter, listener, monitor);
         break;
       }
     default:
       throw new UnsupportedOperationException(
           "unsupported search type: " + element.getClass()); // $NON-NLS-1$
   }
 }
 private void searchForOverrides(
     SearchEngine engine,
     DartElement element,
     SearchScope scope,
     SearchFilter filter,
     SearchResultCollector listener,
     IProgressMonitor monitor)
     throws CoreException {
   switch (element.getElementType()) {
     case DartElement.CLASS_TYPE_ALIAS:
     case DartElement.FUNCTION_TYPE_ALIAS:
     case DartElement.FUNCTION:
     case DartElement.FIELD:
     case DartElement.IMPORT:
     case DartElement.TYPE:
     case DartElement.TYPE_PARAMETER:
     case DartElement.VARIABLE:
       {
         break;
       }
     case DartElement.METHOD:
       {
         MemberDeclarationsReferences memberInfo;
         memberInfo = RenameAnalyzeUtil.findDeclarationsReferences((Method) element, monitor);
         for (TypeMember member : memberInfo.declarations) {
           SearchMatch match =
               new SearchMatch(MatchQuality.EXACT, member, member.getSourceRange());
           listener.matchFound(match);
         }
         break;
       }
     default:
       throw new UnsupportedOperationException(
           "unsupported search type: " + element.getClass()); // $NON-NLS-1$
   }
 }
Beispiel #5
0
  private RenameSupport undoAndCreateRenameSupport(String newName) throws CoreException {
    // Assumption: the linked mode model should be shut down by now.

    final ISourceViewer viewer = fEditor.getViewer();

    try {
      if (!fOriginalName.equals(newName)) {
        fEditor
            .getSite()
            .getWorkbenchWindow()
            .run(
                false,
                true,
                new IRunnableWithProgress() {
                  @Override
                  public void run(IProgressMonitor monitor)
                      throws InvocationTargetException, InterruptedException {
                    if (viewer instanceof ITextViewerExtension6) {
                      IUndoManager undoManager = ((ITextViewerExtension6) viewer).getUndoManager();
                      if (undoManager instanceof IUndoManagerExtension) {
                        IUndoManagerExtension undoManagerExtension =
                            (IUndoManagerExtension) undoManager;
                        IUndoContext undoContext = undoManagerExtension.getUndoContext();
                        IOperationHistory operationHistory =
                            OperationHistoryFactory.getOperationHistory();
                        while (undoManager.undoable()) {
                          if (fStartingUndoOperation != null
                              && fStartingUndoOperation.equals(
                                  operationHistory.getUndoOperation(undoContext))) {
                            return;
                          }
                          undoManager.undo();
                        }
                      }
                    }
                  }
                });
      }
    } catch (InvocationTargetException e) {
      throw new CoreException(
          new Status(
              IStatus.ERROR,
              DartToolsPlugin.getPluginId(),
              ReorgMessages.RenameLinkedMode_error_saving_editor,
              e));
    } catch (InterruptedException e) {
      // canceling is OK
      return null;
    } finally {
      DartModelUtil.reconcile(getCompilationUnit());
    }

    viewer.setSelectedRange(fOriginalSelection.x, fOriginalSelection.y);

    if (newName.length() == 0) {
      return null;
    }

    switch (fDartElement.getElementType()) {
      case DartElement.FUNCTION:
        return RenameSupport.create((DartFunction) fDartElement, newName);
      case DartElement.FUNCTION_TYPE_ALIAS:
        return RenameSupport.create((DartFunctionTypeAlias) fDartElement, newName);
      case DartElement.TYPE:
        return RenameSupport.create((Type) fDartElement, newName);
      case DartElement.TYPE_PARAMETER:
        return RenameSupport.create((DartTypeParameter) fDartElement, newName);
      case DartElement.FIELD:
        return RenameSupport.create((Field) fDartElement, newName);
      case DartElement.METHOD:
        return RenameSupport.create((Method) fDartElement, newName);
      case DartElement.VARIABLE:
        return RenameSupport.create((DartVariableDeclaration) fDartElement, newName);
      default:
        return null;
    }
  }