Las sustituciones de clases m s importantes de XFolder son:
En el sentido descrito en la p gina previa, la clase XFolder es descendiente de la clase WPFolder. De esta manera, puede hacer todo lo que una carpeta com£n. Como nuevas funciones, a¤ade nuevos elementos al men£ emergente de todas las carpeta, posibilita teclas r pidas para las carpetas, cambia los t¡tulos de las ventanas de las carpetas, etc.
Utilizando el polimorfismo XFolder redefine ciertos m‚todos de WPFolder, tal como se describe m s abajo.
Sin embargo, XFolder se registra en el WPS como una sustituci¢n de WPFolder, lo que significa que el WPS utilizar XFolder como clase est ndar para las carpetas, en lugar de WPFolder. Al hacer esto, no se utiliza m s la clase WPFolder de modo directo, sino a trav‚s de las clases que la sustituyen (y las clases que desciendan de ella); consulte la p gina "clases del WPS" de la secci¢n "Introducci¢n" para m s informaci¢n sobre esto.
Algunos de los m‚todos que la clase XFolder sobrepone a los originales son (esto ser probablemente de inter‚s s¢lo para programadores):
Puesto que XFolder juega mucho con los men£s, este es uno de los m‚todos m s importantes a los que XFolder se sobrepone. En este m‚todo, XFolder primero llama al m‚todo wpModifyPopupMenu de la clase padre (WPFOlder) para que se a¤adan todos los elementos de men£ est ndar al men£ emergente del objeto.
A continuaci¢n busca la carpeta de configuraci¢n de XFolder (que debe tener el identificador o ID de objeto <XFOLDER_CONFIG>) y puebla la carpeta de modo invisible. Ahora recorre todos los objetos que hay en el interior, a¤adiendo submen£s y elementos de men£ al men£ emergente. Si no se encuentra la carpeta de configuraci¢n, se muestra un mensaje y se crea una carpeta vac¡a en el Escritorio con el identificador mencionado antes.
Se hace lo mismo para las funciones "Contenido de la carpeta" y carpetas "favoritas". Sin embargo, estos submen£s s¢lo se pueblan con objetos cuando son abiertos por el usuario; esto se hace interceptando el mensaje WM_INITMENU en el procedimiento del marco de la ventana de la carpeta "subclasificada" (ver m s abajo). XFolder tambi‚n "subclasifica" las ventanas de estos submen£s (y s¢lo estas) para poder dibujar los iconos e interceptar llamadas al bot¢n 2 del rat¢n para abrir una carpeta.
(Por favor, note que "subclasificar" no tiene aqu¡ nada que ver con las clases del WPS, sino con la terminolog¡a del Presentation Manager para utilizar un procedimiento de mensaje distinto para una ventana para ser capaz interceptar ciertos mensajes del PM para esa ventana. Esto se hace utilizando el API WinSubclassWindow.)
XFolder tambi‚n modifica otros varios men£s (tales como el submen£ "Clasificar")
en este m‚todo, si las opciones globales lo permiten, y a¤ade otros elementos
de men£ si ‚stos han sido activados en las opciones globales.
XFolder comprueba si se seleccion¢ uno de sus propios elementos (variables) de men£; en tal caso, busca el objeto correspondiente en la carpeta de configuraci¢n y lo abre. Si este objeto es de la clase WPProgram, se realizan los "trucos" anteriormente descritos. Si el objeto es un modelo, no importa de qu‚ clase del WPS, no se abre, sino que se crea un nuevo objeto a partir de ‚l en la carpeta actual (via wpCreateFromTemplate).
Si el elemento seleccionado es uno de los submen£s de "Contenido", simplemente se abre el objeto correspondiente.
Si se selecciona cualquiera de los otros elementos de men£ que XFolder a¤ade a los men£s emergentes, XFolder realizar la acci¢n correspondiente internamente.
Si no se seleccion¢ ning£n elemento de men£ de XFolder, se llama al m‚todo
wpMenuItemSelected de la clase padre (WPFolder) (para no impedir
que funcionen los elementos est ndar de men£).
Primero, se llama al m‚todo padre para tener abierta una vista de la carpeta: el WPS crear una ventana con un control de tipo contenedor en ella y mostrar esta ventana.
XFolder intercepta entonces el manejador (handle) del marco de la ventana, con el que puede entonces modificar el t¡tulo de la ventana de la carpeta y convertirlo en la v¡a completa de acceso de la carpeta (si se ha activado en las opciones globales). B sicamente, es una simple llamada a WinSetWindowText con algunos c lculos para truncar el t¡tulo si hace falta.
En este m‚todo, XFolder tambi‚n "subclasifica" el marco de la ventana de la carpeta para poder manejar los mensajes WM_CHAR para las teclas r pidas de la carpeta y montones de otras cosas. Este me pareci¢ el mejor lugar para la "subclasificaci¢n", puesto que ya se han hecho todas las funciones de inicializaci¢n del WPS necesarias llamando al m‚todo del padre, pero el usuario a£n no puede interactuar con la carpeta, ya que s¢lo se llenar con objetos ("poblar ", en la terminolog¡a del WPS) mediante otro hilo (thread) despu‚s de eso.
En el procedimiento de la nueva ventana, XFolder intercepta todos los mensajes WM_CHAR (que s¢lo se pasan al procedimiento del marco de la ventana si no han sido procesados a£n por el contenedor, como las teclas del cursor) y las eval£a de acuerdo con su lista interna de teclas r pidas, que puede cambiarse en las opciones globales.
tambi‚n se necesita la "subclasificaci¢n" para introducir las barras de estado las carpetas; los mensajes WM_QUERYFRAMECTLCOUNT, WM_FORMATFRAME, y WM_CALCFRAMERECT se interceptan para cambiar el tama¤o del marco de la carpeta y la ventana contenedor hija de acuerdo con el espacio que se necesite para la barra de estado de la carpeta.
XFolder tambi‚n intercepta algunos mensajes de notificaci¢n del contenedor para posibilitar la funci¢n "Desplazamioento autom tico en vistas de rbol" y actualizar el texto de las barras de estado si el usuario cambia el conjunto de objetos que est n seleccionados.
Adem s, XFolder intercepta varios mensajes del men£, como WM_INITMENU y WM_MENUSELECT, para poder manejar algunas funciones de los men£s que no son accesibles a trav‚s de los m‚todos normales del WPS.
Todos los mensajes que no tienen sentido para XFolder se pasan tal cual al procedimiento original de la ventana.
El m‚todo wpOpen se necesita tambi‚n para implementar las
funciones de clasificaci¢n avanzadas de XFolder; Xfolder actualiza la configuraci¢n
del contenedor de acuerdo con el criterio de clasificac¡on que haya especificado.
XFldObject tampoco hace demasiado de forma visible, excepto suprimir elementos del men£ por omisi¢n de OS/2 y a¤adir la opci¢n "Copiar nombre de archivo". No obstante, otras partes de XFolder la necesitan para ser notificadas internamente de algunos sucesos internos del WPS, especialmente la funci¢n Concluir eXtendido, que se describe en detalle en la siguiente p gina.
La clase XFldDesktop clase se implementa para permitir cambiar los elementos del men£ del escritorio y para Concluir eXtendido, que se describe en detalle en la siguiente p gina.
Mientras que las versiones anteriores tambi‚n sustitu¡an la clase WPSystem para que el objeto "Sistema" de la carpeta "Configuraci¢n del sistema" contuviese m s p ginas de opciones para acceder a la configuraci¢n global de XFolder, este comportamiento ha cambiado con la V0.80. En su lugar, XFolder registra dos nuevas clases derivadas de WPSystem sin sustituirla. Estas dos clases son XFldSystem y XFldWPS para los objetos "OS/2 Kernel" y "Workplace Shell", respectivamente. Las opciones que especifica ud. aqu¡ se almacenan (principalmente) en OS2.INI y se eval£an cada vez que XFolder las necesita ( por ejemplo, cada vez que abre un men£ emergente). Por contra, las opciones "locales" de XFolder para cada carpeta individual se almacenan en sus EAs, en el campo .CLASSINFO, donde el WPS almacena las otras opciones de carpeta. Esto lo hace entonces la clase XFolder.
Por favor, note que todas las clases de XFolder est n dise¤adas para
interactuar. No intente eliminar s¢lo ALGUNAS, o XFolder puede comportarse
de modo extra¤o (si tiene ud. suerte). Todas las funciones de XFolder han sido
hachas altamente configurables, de modo que deber¡a poder librarse de todo lo
que no le guste -- o de XFolder en su totalidad.