2011-06-23 9 views
5

Tengo una biblioteca de componentes. Tiene un archivo de manifiesto que tiene este aspecto:¿Cómo puedo hacer que FlashBuilder use un prefijo de espacio de nombre personalizado?

<?xml version="1.0"?> 
<componentPackage> 
    <component id="AutoComplete" class="be.edge.components.AutoComplete" /> 
    <!-- more components left out for brevity --> 
</componentPackage> 

puedo compilar la biblioteca a través FlashBuilder con estos ajustes del compilador:

FlashBuilder library compiler namespace inputs

Cuando uso la biblioteca compilada en otra FlashBuilder proyectos todo funciona como esperado. Consigo la finalización de código y cuando selecciono una sugerencia de la finalización de código un atributo de espacio de nombres se añade automáticamente al componente, como este:

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:ns="library://ns.edge.be" > 

    <ns:AutoComplete /> 

</s:Skin> 

Pero: FlashBuilder crea automáticamente el prefijo '' ns. Me gustaría personalizar esto a 'e' por ejemplo. ¿Cómo puedo hacer que FlashBuilder use este prefijo personalizado de forma predeterminada?

Tengo dos razones para esto:

  1. 'ns' no dice nada: sólo dice Un espacio de nombres se ha utilizado, no lo espacio de nombres.
  2. cuando utilizo otras bibliotecas que también comienzan con una url como 'library: // ns.' FlashBuilder probablemente comenzará a numerar los prefijos para resolver el conflicto (ns, ns1, ns2, etc.), lo que sería aún más confuso.

EDIT:

También me paso un config.xml para el compilador que tiene las siguientes declaraciones en relación con los espacios de nombres:

<compiler> 
    <namespaces> 
     <namespace> 
      <uri>library://ns.edge.be</uri> 
      <manifest>manifest.xml</manifest> 
     </namespace> 
    </namespaces> 
</compiler> 

<include-namespaces> 
    <uri>library://ns.edge.be</uri> 
</include-namespaces> 

Respuesta

6

Este utiliza a trabajar:

Crear un archivo llamado design.xml en la carpeta/src:

<?xml version="1.0" ?> 
<design> 
    <namespaces> 
     <namespace prefix="mangos" uri="http://com.mangofactory.sample/mxml/2010" /> 
    </namespaces> 
</design> 

crear un archivo llamado manifest.xml en la carpeta/src:

<componentPackage> 
     <component id="MyClass" class="com.mangofactory.framework.MyClassTag"/> 
</componentPackage> 

Configure su URL del espacio de nombres, etc. en las propiedades de compilación: enter image description here

Esto se supone para causar constructor de destello para que aparezca la siguiente manera:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       xmlns:mangos="http://com.mangofactory.sample/mxml/2010"> 
    <fx:Declarations> 
     <mangos:MyClass /> 
    </fx:Declarations> 
</s:Application> 

(Tenga en cuenta que la clase aparece como MyClass en lugar de MyClassTag, y el espacio de nombres aparece como mangos)

Sin embargo , Simplemente intenté hacer esto, y aunque la clase fue renombrada correctamente, el espacio de nombres apareció como ns. Sé que esto solía funcionar en FB3.x, quizás he olvidado un paso, o FB4.5 lo ha roto.

+0

Lo intenté, con la esperanza de que funcionara mágicamente en mi sistema. Pero no es así ¿No deberías hacer referencia a ese design.xml en algún lugar? De lo contrario, el compilador no podría saberlo. (Añadiré más información del compilador a mi pregunta.) – RIAstar

+0

También traté de agregar 'prefix =" e "' a la etiqueta 'namespace' en mi config.xml, sin éxito (no recibo ningún error)) – RIAstar

+4

Aha! Acabo de encontrar la parte faltante: debe incluir el archivo design.xml en el swc marcando su casilla en la pestaña 'Activos' en 'Ruta de compilación de la biblioteca Flex'. Me tienes allí, así que aceptaré tu respuesta. – RIAstar

0

Si acaba de cambiar a xmlns:nsxmlns:e o xmlns:foo entonces el analizador MXML se dará cuenta del cambio. No es tan difícil de cambiar, y no creo que haya una manera de cambiar la forma en que genera espacios de nombres por defecto.

+0

Lo sé, pero me canso de cambiarlo cada vez que creo un nuevo componente mxml. – RIAstar

+0

Busqué en las preferencias, y no veo nada que te permita cambiar esto. Probablemente tendrías que reemplazar algunas clases de Java en el plugin para modificar este comportamiento. Con suerte, alguien encontrará una mejor respuesta para usted. –

+0

Desafortunadamente, FlashBuilder no es de código abierto, por lo que sería bastante difícil. Algunos retoques con plantillas de código, tal vez? – RIAstar

Cuestiones relacionadas