Page 1 of 1

Dialog anzeigen

PostPosted: Tue Apr 29, 2014 1:18 pm
by Gerhard
Ich versuche gerade dieser Beschreibung zu folgen, um einen Dialog zu öffnen:
http://forum.sibvisions.com/viewtopic.php?f=11&t=829
Leider scheitere ich daran...

Mein Vorgehen:

Ich habe in VisionX einen leeren WorkScreen erstellt und einen Button hinzugefügt.
Auf dem Button hängt ein eventListener
Code: Select all
button.eventAction().addListener(this, "doShowDialog");


In der Funktion doShowDialog versuche ich einen Dialog zu öffnen.
Code: Select all
   public void doShowDialog() throws Throwable {
      UIPanel buttonPanel = new UIPanel(new UIFormLayout());
      buttonPanel.add(new UILabel("testLabel"));
      Dialog dialog = new Dialog(buttonPanel);
//      Dialog.openInternalFrame(getApplication(), "Testdialog", true, dialog);
      getApplication().openContent(this, "Testdialog", false, dialog);
   }


Der Aufruf von openInternalFrame funktioniert nicht, da mir die passende Application-Klasse fehlt.
openContent liefert mir folgenden Fehler:
Method doCloseContent not found in class com.sibvisions.apps.projx.ProjX!


Wie kann ich den Dialog korrekt öffnen?

Re: Dialog anzeigen

PostPosted: Tue Apr 29, 2014 1:30 pm
by manfrede
Hi,

welche Version verwenden sie? Das war ein Bug der in Version 1.4 von ProjX korrigiert wurde.

Re: Dialog anzeigen

PostPosted: Tue Apr 29, 2014 2:11 pm
by Gerhard
VisionX 1.2.169

Die projx.jar im lib/client Ordner des Projekts hat folgendes Manifest
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_24-b07 (Sun Microsystems Inc.)
Implementation-Title: ProjX 1.4
Implementation-Version: b38 01.02.2014 13:10:54
Implementation-Vendor: SIB Visions GmbH

Das heißt um einen Dialog öffnen zu können, brauche ich eine neuere projx.jar. Danke, jetzt weiß ich zumdest mal, worans liegt.

Re: Dialog anzeigen

PostPosted: Tue Apr 29, 2014 2:32 pm
by manfrede
Das Ticket wurde am 16. Februar geschlossen, also ja, neues projx.jar ist angesagt.

VisionX 2.0 ist bereits released, dort sollte das gelöst sein.

Re: Dialog anzeigen

PostPosted: Tue Apr 29, 2014 2:39 pm
by Development@SIB
Besser hätte das nicht beantwortet werden können :D
Vielen Dank.

Mit Ihrer Version könnten Sie den Dialog weglassen und einen Content implementieren (siehe Dialog Source Code). Dann können Sie über openContent arbeiten, nur müssen Sie den Content auch selbst schließen.

Aktuell ist VisionX 2.0.2 und mit den darin enthaltenen libs tritt das Problem nicht mehr auf!

Re: Dialog anzeigen

PostPosted: Mon May 26, 2014 2:36 pm
by Gerhard
Bin mittlerweile auf die neueste Version umgestiegen. Der Dialog geht nun auf. Allerdings kommt beim Klick aufs X, um den Dialog zu schließen, eine Exception.

Code: Select all
UIPanel panel = new UIPanel(new UIBorderLayout());
panel.add(new UILabel("Testtext"));
Dialog dialog = new Dialog(panel);
((ProjX)getApplication()).openContent(this, "Testdialog", false, dialog);


java.lang.NullPointerException
at com.sibvisions.apps.projx.ProjX.destroyContent(Unknown Source)
at com.sibvisions.apps.projx.ProjX.closeContainer(Unknown Source)
at com.sibvisions.apps.projx.ProjX.doCloseContent(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at javax.rad.util.EventHandler$ListenerHandler.dispatchEvent(EventHandler.java:875)
at javax.rad.util.EventHandler.dispatchEvent(EventHandler.java:502)
at javax.rad.util.RuntimeEventHandler.dispatchEvent(RuntimeEventHandler.java:73)
at com.sibvisions.rad.ui.swing.impl.container.SwingInternalFrame.internalFrameClosing(SwingInternalFrame.java:406)
at javax.swing.JInternalFrame.fireInternalFrameEvent(JInternalFrame.java:1570)
at javax.swing.JInternalFrame.doDefaultCloseAction(JInternalFrame.java:1613)
at javax.swing.plaf.basic.BasicInternalFrameTitlePane$CloseAction.actionPerformed(BasicInternalFrameTitlePane.java:610)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)


Außerdem fehlt, wenn ich die den Dialog in einer HTML5 Applikation im Browser starte, der OK Button.

Re: Dialog anzeigen

PostPosted: Mon May 26, 2014 8:38 pm
by rjahn
Ist ein Bug in der Implementierung. Es wird 2x close des Contents aufgerufen und null wurde nicht gecheckt. Das sollte in einer einer der nächsten Versionen behoben sein.

In der Zwischenzeit muss der Content selbst erstellt werden, denn wenn kein Dialog verwendet wird gibt es keine Probleme. Der Dialog hat lediglich das Button Handling...