El jue., 22 oct. 2020 a las 12:07, Francisco Puga (<fp...@icarto.es>)
escribió:

> Hola,
>
> No tenía claro si el sitio adecuado para este mensaje era alguna de las
> listas o el tracker, así que lo envío por aquí por si hubiera más opiniones.
>
> He encontrado que tras insertar una geometría salta un formulario, y el
> comportamiento de esta funcionalidad tiene varios problemas para mi:
>
>
>    - El ancho generalmente está mal ajustado
>
> Por defecto saca un ancho fijo, pero este se puede indicar en el gestor de
columnas para cada tabla en concreto.


>
>    - Los campos no editables como la geometría deberían ser gráficamente
>    distintos (color de fondo, ...)
>    - El texto que sale en la zona de abajo que puede ser el nombre del
>    campo con el foco, o un mensaje de error del campo con foco me parece
>    confuso. Yo lo quitaría. Es redundante con la modal de error cuando pinchas
>    en el campo.
>
> Los datos de una columna, un FeatureAttributeDescriptor, tienen
"descripcion", "etiqueta" y "nombre". En la barra de mensajes de abajo, se
trata de mostrar la descripcion. Si no tiene, la etiqueta, y si no el
nombre. Normalmente si el usuario no ha configurado nada en el gestor de
columnas acaba no teniendo descripcion ni etiqueta y muestra el nombre.
Podriamos evaluar la posibilidad de que si no tiene descripcion no saque
nada; pero tiene mas complicacion de la que parece ya que hemos perdido el
acceso al metodo hasDescription del FeatureAttributeDescriptor en el punto
en el que lo necesitariamos y habria que ver como hacerselo llegar.


>
>    - Los nombres de los campos no aparecen directamente si no que a veces
>    son "traducidos", pero no se donde están esas traducciones ni cómo
>    modificarlas, y son incorrectas.
>
>  Pues parece un error, que habria que corregir. Solo deberia tratar de
traducir las etiquetas, no los nombre de campo; pero corregirlo supondria
hacer llegar a donde toca el metodo hasLabel, igual que pasaba con el
hasDescription. Tomo nota para hacerlo cuando tengamos un rato, y de paso
hariamos llegar el hasDescription tambien.


>    - El tema de la validación de campos está guay, pero es peligrosa. Por
>    ejemplo no tiene en cuenta claves foráneas. Así que puedes rellenar un
>    formulario que pase todas las validaciones y aún así dar error al llegar a
>    la base de datos.
>
> Actualmente verifica que los campos que en la BBDD estan marcados como
"not null" esten rellenos.
Otra cosa es que hayan mas restricciones que gvSIG no sea capaz de leer de
la BBDD (que pueden ser muchas, claro).
(mas a delante comento mas sobre la validacion de campos).


>
>    - Si se pulsa ok, con "campos en rojo" se vuelve a abrir el
>    formulario. Si se pulsa cancelar se cierra el formulario pero la nueva
>    feature también es eliminada de la capa. El funcionamiento de cancelar para
>    mi no tiene sentido. Tienes que tener la opción de introducir varias
>    geometrías seguidas, y rellenarlas a posteriori, por ejemplo mediante la
>    calculadora de campos.
>
> Una cosa es que te guste o no el tema de que te deje meter features con
campos "obligatios" sin rellenar, que puede
ser discutible e ingluso ir con gustos. Lo que hace me parece correcto. O
aceptas la entrada o la cancelas. Si la aceptas
es por que corriges los errores, y si la cancelas, pues eso, la has
cancelado y la nueva feature no se introduce.
(mas a delante comento mas sobre la validacion de campos).


> Desde mi punto de vista que salga siempre el formulario es muy molesto
> para algunos workflows, y debería poder desactivarse esa opción. Sería
> discutible cual debería ser el valor por defecto. Si me indicáis por donde
> tirar puedo preparar un parche añadiendo esa opción en las preferencias o
> el sistema que veáis.
>
> También estaría bien que esta opción del formulario pudiera habilitarse o
> deshabilitarse por código bajo demanda. Alguna idea de como hacer esto.
>
> Si que creo que debiese poder desactivarse aunque con matices que no tengo
claros, y por codido se pueden hacer cosas para hacerlo, aunque no hay GUI
para ello, bueno, gui de verdad, pruebas si que hay. Te cuento lo que hay
para que puedas probar y ver codigo que lo hace, y luego te resumo.

Los matices... no termina de gustarme que se pueda desactivar para
cualquier capa que tengas cargada. Por un lado creo que deberia poderse
desactivar selectivamente, por otro lado entiendo que haya usuarios
avanzados que prefieran pasar de todas las validaciones. No tengo claro
cual seria el comportamiento deseado.

Los mecanismo que hay para hacerlo permiten ser selectivos para todas las
capas.

El "ejemplo".
Esta la herramienta algo como "Herramientas->desarrollo->Monitor de
edicion" (EditingListenerPanel).
Prueba a jugar con ella.
Se trata de un panel que instala un observador sobre el
EditingNotificationManager. Este manager es el encargado de permitir
atrapar las inserciones de registros desde la tabla o las herramientas de
edicion. Si lo activas veras los distintos eventos de edicion que puedes
atrapar, y desde el tienes la opcion de desactivar la validacion de
features. Ojo que es solo con propositos de desarrollo, con lo que cuando
cierras el panel quita el observer y vuelve a estar activa la validacion.
Pero puedes ver el codigo para ver que/como lo hace.

El resumen podria ser algo como:

  EditingNotificationManager editingNotificationManager =
DALSwingLocator.getEditingNotificationManager();
  observer = new Observer() {
      @Override
      public void update(Observable observable, Object notification) {
          EditingNotification n = (EditingNotification) notification;
          if( saltarValidacionEnEsteEstore(n.getStore()) ) {
              n.setSkipFeatureValidation(true);
          }
      }
  };
  editingNotificationManager.addObserver(observer);

Ten cuidado que es responsabilidad tuya mantener una referencia al
observer, el EditingNotificationManager no la mantendra (se queda una
weakreference), con lo que si no lo haces simplemente el obserbador se
destruira cuando salgas del ambito de la variable. Por ejemplo, podrias
quedartela en un propiedad de una Extension.

Espero que te sirva algo de lo que te cuento.
Si tienes mas dudas intetaremos ir resolviendotelas.

Un saludo
Joaquin




> Saludos.
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores@listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>


-- 
--------------------------------------
Joaquin Jose del Cerro Murciano
Development and software arquitecture manager at gvSIG Team
jjdelce...@gvsig.com
gvSIG Association
www.gvsig.com
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores@listserv.gva.es
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de 
baja en esta lista, acuda a la siguiente dirección: 
https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores

Responder a