turn default xml UI off if more than one place defined

This commit is contained in:
Gregory Shrago
2010-06-04 19:00:35 +04:00
parent 8a9ea7fb09
commit 33113f4c28
2 changed files with 11 additions and 13 deletions
@@ -87,7 +87,7 @@ public abstract class AbstractLanguageInjectionSupport extends LanguageInjection
public void actionPerformed(AnActionEvent e) {
if (!ApplicationManagerEx.getApplicationEx().isInternal()) return;
final BaseInjection originalInjection = producer.create();
final BaseInjection newInjection = showInjectionUI(project, originalInjection.copy());
final BaseInjection newInjection = showDefaultInjectionUI(project, originalInjection.copy());
if (newInjection != null) {
originalInjection.copyFrom(newInjection);
originalInjection.initializePlaces(true);
@@ -103,8 +103,8 @@ public abstract class AbstractLanguageInjectionSupport extends LanguageInjection
@Override
public void actionPerformed(AnActionEvent e) {
final BaseInjection injection = new BaseInjection(support.getId());
injection.setDisplayName("New "+support.getId()+" Injection");
final BaseInjection newInjection = showInjectionUI(project, injection);
injection.setDisplayName("New "+ StringUtil.capitalize(support.getId())+" Injection");
final BaseInjection newInjection = showDefaultInjectionUI(project, injection);
if (newInjection != null) {
consumer.consume(injection);
}
@@ -113,7 +113,8 @@ public abstract class AbstractLanguageInjectionSupport extends LanguageInjection
}
@Nullable
private static BaseInjection showInjectionUI(Project project, BaseInjection injection) {
protected static BaseInjection showDefaultInjectionUI(Project project, BaseInjection injection) {
if (!ApplicationManagerEx.getApplicationEx().isInternal()) return null;
final BaseInjectionPanel panel = new BaseInjectionPanel(injection, project);
panel.reset();
final DialogBuilder builder = new DialogBuilder(project);
@@ -124,12 +124,11 @@ public class XmlLanguageInjectionSupport extends AbstractLanguageInjectionSuppor
final Project project = host.getProject();
final BaseInjection originalInjection = injections.get(0);
final BaseInjection xmlInjection = createFrom(originalInjection, host);
if (xmlInjection == null) return false;
final AbstractTagInjection newInjection = showInjectionUI(project, xmlInjection);
final BaseInjection newInjection =
xmlInjection == null? showDefaultInjectionUI(project, originalInjection.copy()) : showInjectionUI(project, xmlInjection);
if (newInjection != null) {
newInjection.mergeOriginalPlacesFrom(originalInjection, true);
Configuration.getInstance().replaceInjectionsWithUndo(
project, Collections.singletonList(xmlInjection),
project, Collections.singletonList(newInjection),
Collections.singletonList(originalInjection),
Collections.<PsiElement>emptyList());
}
@@ -137,7 +136,7 @@ public class XmlLanguageInjectionSupport extends AbstractLanguageInjectionSuppor
}
@Nullable
private AbstractTagInjection showInjectionUI(final Project project, final BaseInjection xmlInjection) {
private static AbstractTagInjection showInjectionUI(final Project project, final BaseInjection xmlInjection) {
final DialogBuilder builder = new DialogBuilder(project);
final AbstractInjectionPanel panel;
if (xmlInjection instanceof XmlTagInjection) {
@@ -169,6 +168,8 @@ public class XmlLanguageInjectionSupport extends AbstractLanguageInjectionSuppor
@Nullable
private static BaseInjection createFrom(final BaseInjection injection, final PsiLanguageInjectionHost host) {
if (injection.getInjectionPlaces().size() > 1) return null;
final PsiElement element;
AbstractTagInjection result;
if (host instanceof XmlText) {
@@ -217,10 +218,6 @@ public class XmlLanguageInjectionSupport extends AbstractLanguageInjectionSuppor
result.setTagNamespace(StringUtil.notNullize(pair1.second));
}
else continue;
// for debugging
//result.initializePlaces(false);
//if (!place.getText().equals(result.getInjectionPlaces().get(0).getText())) {
//}
break;
}
}