Closed segonzal closed 9 years ago
ok, después de algunos intentos fallidos, se me ocurrió usar la clase HtmlViewer. (el plugin permite darle el nombre de la función a la cual llamar) Dejé el nombre de la misma función que HelpHtmlViewer (showInternalHtmlViewer). {No está implementada en HelpHtmlViewer, así que debe heredarla. Como no quiero perder tiempo intentando hacer funcionar eclipse para encontrar desde que clase, voy a prueba y error.}
Bueno, resulta que da un error: "Could not find a suitable method named showInternalHtmlViewer in class htmlviewer.HtmlViewer Note: the method must be static, and accept zero or one String or URL parameter." Me da la impresión que no es necesario que herede de alguna clase. Basta que tenga algún método que acepte cero o un String o URL como parámetro, y darle el nombre de dicho método en plugin options.
Voy a crear una clase dummy que recibirá alguno de estos parámetros y tirará todo a la salida estándar. Si funciona el dummy debe evolucionar entregándole la URL/String al handler(framework)
No sé si entendí bien (tampoco he visto la documentación de lo que estás usando), pero al parecer en la clase htmlviewer.HtmlViewer
hay que implementar un método estático (un método "de clase"), llamado showInternalHtmlViewer
.
Si fuera así, luego se invocaría de esta forma: htmlviewer.HtmlViewer.showInternalHtmlViewer(...)
.
En jEdit vas a Plugin>Plugin Options>HTML Viewer>Choose Browser Seleccionas la caja Class in Classpath Por default tiene: clase: HelpHtmlViewer metodo showInternalHtmlViewer
De esta forma cuando haces "Open current buffer with browser" llama al browser interno por defualt. Para cambiar a otro browser hay que cambiar la clase y el método.
Por lo que he leído hasta el momento, nada impide crear una clase nueva, desconectada del resto de HtmlViewer, i.e. sin heredar ni usar otros elementos. La cual contenga el nuevo browser. Solo basta señalar que esta clase contiene este método estático, que recibe estos parametros.
(Aún no reviso el tema de inscribir el browser en un panel, esto podría requerir herencia desde jEdit/HtmlViewer)
sigo buscando el método showInternalHtmlViewer, no está en HelpHtmlViewer, ni en HtmlViewer. Sigo buscando entre los antepasados de HelpHtmlViewer.
usando grep -nr showInternalHtmlViewer
no arroja resultados :(
la unica aparicion es en el archivo properties:
HtmlViewer/HtmlViewer.props:38:htmlviewer.method=showInternalHtmlViewer
sigo pensando en como proceder
yo tampoco lo logro encontrar
lo regrese al estado default... y ahora no funciona.
En jEdit vas a Plugin>Plugin Options>HTML Viewer>Choose Browser
No me funciona el plugin... parece que hay un problema con la versión de Java que tengo.
q version teni? a mi me corre con la 1.8 x64 version java oracle (no la openjdk que viene en linux)
Tengo openJDK 1.7, en Linux.
Subí otra prueba, jEDit soportó una clase simple con un método estático que recibe un string. deje que imprimiera ese string en salida estándar, por consola no apareció nada. Voy a intentar que arroje los resultados a algún archivo, como log.
Nota: para compilar hay que borrar la carpeta demo sino arroja errores. Creo que se puede excluir en el build.xml
logre lanzar la url del archivo a la salida de errores!
Ahora que le he agregado mas funcionalidad a la clase del browser (Test), jEdit no lo soporta.
Could not find a suitable constructor for class: htmlviewer.Test
Note: the class you specified in the options must contain a String, URL or empty constructor.
A pesar de que le he agregado un constructor vacío y un constructor que reciba un string no funciona. Me extraña aún más que la misma clase, sin constructor con el método que solo imprime errores SI FUNCIONA. Alguna idea?
ojo que cuando uno hace esos cambios también puede influir en HtmlViewer.props.
Aun que por el msj de error me tinca que va por otro lado el problema
Basta que el método quede así, para lanzar error.
public static final void launchBrowser(String url){
System.err.println(url);
Display display = new Display();
}
Creo que no permite crear un nuevo display.
podría intentar un workarround con observer pattern. Pero eso podria demorar tiempo. y mucho tiempo más integrarlo a la interfaz de jedit.
Ok, subí una segunda demo, en donde se ve como debió quedar el plugin una vez estuviese embebido. Arroja varios errores a terminal, no son excepciones, y al parecer son problema del framework.
Voy a hacer un último intento de que jEdit llame a esta demo. Si funciona WIN!, el plugin esta terminado, falta solo cambios menores para dejar el browser como default. sino, tenemos una demo que funciona al 100%, (exceptuando los rojos del stderr que son culpa de SWT) Imagenes pronto!
Como la clase no cumple los misteriosos y no documentados requisitos para agregar un browser, no funciono. Tenemos una demo que funciona al 100%!!
Excelente. :grinning: :+1:
Tal como está ahora, el browser default que trae está implementado en la clase HelpHtmlViewer, el cual extiende HtmlViewer e implementa HelpViewerInterface.
Una vez hecha la clase con el nuevo framework se puede probar manualmente, siguiendo las propiedades del plugin en el menu correspondiente.