From 7d34a6360766ae35016aac8e560e46998979c658 Mon Sep 17 00:00:00 2001 From: Sergey Vasiliev Date: Mon, 22 May 2006 14:13:49 +0400 Subject: [PATCH] added WebPath Control for dom elements --- openapi/src/com/intellij/util/xml/ui/DomUIFactory.java | 5 +++++ source/com/intellij/util/xml/ui/DomUIFactoryImpl.java | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/openapi/src/com/intellij/util/xml/ui/DomUIFactory.java b/openapi/src/com/intellij/util/xml/ui/DomUIFactory.java index 184669dceb..4f2b721545 100644 --- a/openapi/src/com/intellij/util/xml/ui/DomUIFactory.java +++ b/openapi/src/com/intellij/util/xml/ui/DomUIFactory.java @@ -81,6 +81,9 @@ public abstract class DomUIFactory implements ApplicationComponent { return getDomUIFactory().createTextControl(wrapper, commitOnEveryChange); } + final BaseControl customControl = getDomUIFactory().createCustomControl(type, new DomStringWrapper(element), commitOnEveryChange); + if (customControl != null) return customControl; + throw new IllegalArgumentException("Not supported: " + type); } @@ -104,6 +107,8 @@ public abstract class DomUIFactory implements ApplicationComponent { public abstract BaseControl createTextControl(DomWrapper wrapper, final boolean commitOnEveryChange); + public abstract BaseControl createCustomControl(final Type type, DomWrapper wrapper, final boolean commitOnEveryChange); + public static BaseControl createTextControl(GenericDomValue value, final boolean commitOnEveryChange) { return getDomUIFactory().createTextControl(new DomStringWrapper(value), commitOnEveryChange); } diff --git a/source/com/intellij/util/xml/ui/DomUIFactoryImpl.java b/source/com/intellij/util/xml/ui/DomUIFactoryImpl.java index 9e9b576613..5c687579d6 100644 --- a/source/com/intellij/util/xml/ui/DomUIFactoryImpl.java +++ b/source/com/intellij/util/xml/ui/DomUIFactoryImpl.java @@ -10,12 +10,15 @@ import com.intellij.psi.PsiClass; import com.intellij.ui.BooleanTableCellEditor; import com.intellij.ui.UserActivityWatcher; import com.intellij.util.xml.DomElement; +import com.intellij.util.xml.DomUtil; +import com.intellij.javaee.web.WebPath; import org.jetbrains.annotations.NonNls; import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.table.TableCellEditor; import java.awt.*; +import java.lang.reflect.Type; /** * @author peter @@ -67,6 +70,14 @@ public class DomUIFactoryImpl extends DomUIFactory { }; } + public BaseControl createCustomControl(final Type type, DomWrapper wrapper, final boolean commitOnEveryChange) { + // todo registry for custom controls + if (WebPath.class.isAssignableFrom(DomUtil.getRawType(type))) { + return new WebPathControl(wrapper, commitOnEveryChange); + } + return null; + } + public BaseControl createPsiClassControl(DomWrapper wrapper, final boolean commitOnEveryChange) { return new PsiClassControl(wrapper, commitOnEveryChange); } -- 2.11.4.GIT