Necesito agregar un botón a la barra de título de una ventana modal de Wicket. No puedo encontrar nada útil en la API Wicket que me ayude. ¿Hay alguna manera de personalizar la barra de título de esta manera?¿Se puede personalizar la ventana modal de Wicket?
Respuesta
De acuerdo con /org/apache/wicket/extension/ajax/markup/html/modal/res/modal.js no se puede modificar el decorador modal de ventanas mediante wicket api porque el marcado modal de la ventana se define por completo en javascript. Entonces, como siempre, puede seleccionar la manera simple pero mala y reemplazar modal.js por su cuenta, o puede cambiar el modo de ventana modal después de mostrar usando js para modificar el lapso con la clase "w_captionText". O puede ser (no lo estoy probando) usted puede definir su código personalizado en la propiedad Caption y decir wicket para que no se escape caracteres html especiales en este título. Puede ser que ayude
Puede lograr ese tipo de efecto con la ayuda de CSS. Crea tu ventana modal personalizada (en caso de que no quieras crear tu estilo personalizado) y especifica el recurso css.
package org.ru5.test;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.CSSPackageResource;
import org.apache.wicket.markup.html.resources.CompressedResourceReference;
import org.apache.wicket.model.IModel;
public class CustomModalWindow extends ModalWindow {
private static final long serialVersionUID = 1L;
private static ResourceReference CSS = new CompressedResourceReference(
CustomModalWindow.class, "res/custom-modal.css");
/**
* Creates a new modal window component.
*
* @param id
* Id of component
*/
public CustomModalWindow(final String id) {
super(id);
init();
}
/**
* Creates a new modal window component.
*
* @param id
* Id of component
* @param model
* Model
*/
public CustomModalWindow(final String id, final IModel<?> model) {
super(id, model);
init();
}
private void init() {
add(CSSPackageResource.getHeaderContribution(CSS));
}
}
/org/ru5/test/CustomModalWindow.html
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body><wicket:panel><div wicket:id="content"></div></wicket:panel></body>
</html>
todo lo necesario:
/org/ru5/test/res/custom-modal.css
.headBtn{position: absolute; z-index: 20001; top: 2px; left: 200px;}
/org/ru5/test/TestPanelForTestWindow.html
....
<div class="headBtn">
<input type="button" value="ok">
</div>
....
Puede intentar anular la función modal.js o simplemente hacer un truco con la ayuda de JS DOM. Espero que esto ayude.
poco de un truco, pero funciona:
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.model.IModel;
public class FixedModalWindow extends ModalWindow {
private static final long serialVersionUID = 1L;
public FixedModalWindow(String id) {
super(id);
setResizable(false);
}
public FixedModalWindow(String id, IModel<?> model) {
super(id, model);
setResizable(false);
}
@Override
public FixedModalWindow setResizable(boolean resizable) {
// Cannot set resizable on the FixedModalWindow
return this;
}
@Override
public boolean isResizable() {
return false;
}
@Override
protected Object getShowJavascript()
{
// Hack in some JS to remove the onMove handlers
StringBuffer showJS = new StringBuffer();
showJS.append(" ");
showJS.append((String) super.getShowJavascript());
showJS.append("var popupWindow = Wicket.Window.get();\n");
showJS.append("var nullHandler = function() {};\n");
showJS.append("if(popupWindow != null) {\n");
showJS.append("popupWindow.bind(popupWindow.caption, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.bottomRight, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.bottomLeft, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.bottom, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.left, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.right, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.topLeft, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.topRight, nullHandler);\n");
showJS.append("popupWindow.bind(popupWindow.top, nullHandler);\n");
showJS.append("}\n");
return showJS.toString();
}
}
Cómo ocultar botón de cierre de la ventana modal en el portillo? Hemos encontrado una solución de este tipo:
ModalWindow yourModal = new ModalWindow("yourModalID") {
@Override
public void show(AjaxRequestTarget pTarget) {
super.show(pTarget);
pTarget.appendJavascript(""//
+ "var thisWindow = Wicket.Window.get();\n"//
+ "if (thisWindow) {\n"//
+ "$('.w_close').attr('style', 'display:none;');\n"//
+ "}"//
);
}
}
En realidad, puede insertar cualquier clase de ventana modal, y cambiarlo de alguna manera. Espero que ayude a alguien :)
- 1. ¿Cómo se vence la ventana emergente del diálogo del navegador al llamar a Wicket setResponsePage() desde la ventana modal?
- 2. jQuery ejemplo de ventana modal?
- 3. (Capybara) ventana modal de acceso
- 4. ShowDialog() no hace que la ventana modal
- 5. ¿Puede un diálogo modal de JavaScript ser modal solo para la pestaña y no para toda la ventana del navegador?
- 6. Error de Javascript al intentar abrir una ventana modal en una ventana modal
- 7. ¿Se puede personalizar la verificación de errores de Pylint?
- 8. Abrir una ventana emergente modal
- 9. Una ventana que se comporta modal y no modalmente
- 10. Cómo personalizar la barra de título y la ventana
- 11. ¿Cómo puedo enfocar una ventana modal de WPF cuando se hace clic en la ventana principal de la aplicación?
- 12. BadTokenException: no se puede agregar la ventana
- 13. Bootstrap.js: ¿cómo mostrar automáticamente una ventana modal?
- 14. ¿La mejor opción para la ventana emergente modal en ASP.NET?
- 15. ¿Cómo puedo pasar Collection a la ventana de diálogo modal?
- 16. abrir la ventana modal de iframe en el elemento primario
- 17. Uso de la ventana modal de Bootstrap como PartialView
- 18. Creando una ventana modal win32 con CreateWindow
- 19. No se puede obtener el cuadro de diálogo modal de jQuery UI modal
- 20. ¿Cómo llamar al método de la ventana principal de WPF desde la ventana modal?
- 21. La sesión modal requiere un error de ventana modal en Mac
- 22. ¿Cómo cerrar un modal haciendo clic fuera de la ventana modal?
- 23. no se puede llamar a la ventana modal de arranque utilizando javascript en Chrome (funciona en Firefox)
- 24. ¿Se puede personalizar el icono de Google +1?
- 25. ¿Cómo puedo personalizar la ventana emergente QCompleter en PyQt?
- 26. Cómo minimizar la ventana de propietario cuando se muestra un modal?
- 27. Stackoverflow como ventana emergente modal en jquery
- 28. wicket @SpringBean no puede crear bean
- 29. ¿Cómo se centra el diálogo modal en la ventana desplazada con la posición absoluta?
- 30. copiar/pegar no funciona en la ventana modal
Hmpf ... oh bien, gracias de todos modos. – Yuval
Si fuiste de la manera más simple. ¿Qué harías exactamente para anular modal.js? –