示例#1
0
 public void replaceInjectionsWithUndo(
     final Project project,
     final List<? extends BaseInjection> newInjections,
     final List<? extends BaseInjection> originalInjections,
     final List<? extends PsiElement> psiElementsToRemove) {
   replaceInjectionsWithUndo(
       project,
       newInjections,
       originalInjections,
       psiElementsToRemove,
       new PairProcessor<List<? extends BaseInjection>, List<? extends BaseInjection>>() {
         public boolean process(
             final List<? extends BaseInjection> add, final List<? extends BaseInjection> remove) {
           replaceInjections(add, remove);
           return true;
         }
       });
 }
示例#2
0
 public boolean setHostInjectionEnabled(
     final PsiLanguageInjectionHost host,
     final Collection<String> languages,
     final boolean enabled) {
   final ArrayList<BaseInjection> originalInjections = new ArrayList<BaseInjection>();
   final ArrayList<BaseInjection> newInjections = new ArrayList<BaseInjection>();
   for (String supportId : getAllInjectorIds()) {
     for (BaseInjection injection : getInjections(supportId)) {
       if (!languages.contains(injection.getInjectedLanguageId())) continue;
       boolean replace = false;
       final ArrayList<InjectionPlace> newPlaces = new ArrayList<InjectionPlace>();
       for (InjectionPlace place : injection.getInjectionPlaces()) {
         if (place.isEnabled() != enabled
             && place.getElementPattern() != null
             && (place.getElementPattern().accepts(host)
                 || place.getElementPattern().accepts(host.getParent()))) {
           newPlaces.add(new InjectionPlace(place.getText(), place.getElementPattern(), enabled));
           replace = true;
         } else newPlaces.add(place);
       }
       if (replace) {
         originalInjections.add(injection);
         final BaseInjection newInjection = injection.copy();
         newInjection.getInjectionPlaces().clear();
         newInjection.getInjectionPlaces().addAll(newPlaces);
         newInjections.add(newInjection);
       }
     }
   }
   if (!originalInjections.isEmpty()) {
     replaceInjectionsWithUndo(
         host.getProject(),
         newInjections,
         originalInjections,
         Collections.<PsiElement>emptyList());
     return true;
   }
   return false;
 }