Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
I'm eager to present my latest feature - the FFSelect. (Not to be confused with the acronym "For the F*ck Sake" ) :D
One of the main reasons why I use Firefox as my main web browser, is because it has such a nice filtering mode. I mean, if your history has grown to thousands of lines, it is usually hard to memorize the links or texts found from there within. With the Firefox textbox, you can easily pick a few words or characters and just combine them in any random order, and voilá - there's what youv'e been searching for! This means you just have to remember something. Sometimes when I have to touch the Internet Explorer, I just get mad at how cumbersome it may be to search through the history. Trying to remember links to your old web applications is just too much, so I usually fetch them from the Firefox textbox:dry:.
So, i ripped off Vaadin's Select (used for ComboBox) and added this very nice feature.
That looks really useful. Would be tempted to say that this feature should be in the core ... :)
Joonas Lehtinen: That looks really useful. Would be tempted to say that this feature should be in the core ... :)
As the VFilterSelect is in need of some major refactoring to be extensible, I assume it'll be rewritten at some point. On the server side, I have heard rumours that the container will have better support for filtering in later versions of Vaadin (to better support lazy loading). So I guess this would not become a core-feature until that. However, you can obtain the component from the Directory
I got the FFSelect JAR from the directory. After copying it to my project and after writing some lines of test code I got this error message at runtime:
Caused by: java.lang.UnsupportedClassVersionError: (org/vaadin/ffselect/ui/Select) bad major version at offset=6 (unable to load class org.vaadin.ffselect.ui.Select)
I use Java 1.5... Any idea what could be wrong?
Eclipse 3.5.1 • Vaadin 6.2.6 • Vaadin Eclipse Integration 1.2.0 • Java 1.5
Windows XP/2000 • IE6/7 • Tomcat 6.0
You can blame me. I had left the compiler compliance level at 1.6. This means it won't run along with java versions below that. But I fixed the issue now, and if you download the latest version from the Directory you'll get a java 1.5-working one.
Thank you for pointing out this problem!
thanks for your quick response. The mentioned error does not occur anymore.
Unfortunately there is another problem. I still working on it and I am not sure if FFSelect causes it. But I describe it here in case anybody knows a solution.
I inserted FFSelect-1.0.1.jar to my project (...WEB-INF/lib). Then I start the application and call the test window (which is basically the same as the FFSelect online demo). These error messages are displayed within the browser window.
Widgetset does not contain implementation for org.vaadin.ffselect.ui.Select. Check its @ClientWidget mapping, widgetsets GWT module descrioption file and re-compile your widgetset. Unrendered UIDL:
OK - I like it when a error message tells me what to do -_- So I use "Compile Vaadin widgets" in Eclipse. But nothing happens and there is no output in the console window. In the error log there are two messages:
java.lang.IllegalStateException: zip file closed at java.lang.Throwable.<init>(Throwable.java:57) at java.lang.Throwable.<init>(Throwable.java:68) at java.util.zip.ZipFile.ensureOpen(ZipFile.java:562) at java.util.zip.ZipFile.entries(ZipFile.java:454) at java.util.jar.JarFile.entries(JarFile.java:293) ... org.eclipse.core.internal.resources.ResourceException(/MyApp/WebContent/WEB-INF/lib): java.lang.IllegalStateException: zip file closed at java.lang.Throwable.<init>(Throwable.java:57) at java.lang.Throwable.<init>(Throwable.java:68) at java.util.zip.ZipFile.ensureOpen(ZipFile.java:562) at java.util.zip.ZipFile.entries(ZipFile.java:454) at java.util.jar.JarFile.entries(JarFile.java:293)
There is also an information that tells me, that No widget set found, org.example.myAppWidgetset will be created... ...what actually happened.
Any ideas what is wrong or what I should do?
It looks like Eclipse has closed some JAR file before accessing their contents, maybe because of incorrect JAR file locking.
If you are using a recent version of the Vaadin Eclipse plugin, try restarting Eclipse. If you can reproduce this after restarting Eclipse, please provide more information about your operating system, Eclipse version, Vaadin plugin version, the stack traces and, if possible, how to reproduce the problem. You can also record these directly in a new ticket for the Eclipse plugin.
Yes, every time you add or remove widgets from the project, you should recompile the widget set.
The error you mention may be a bug similar to http://dev.vaadin.com/ticket/3844
You could try removing the FFSelect jar from your project and recompile the widgetset. If the problem still occurs, then it has probably nothing to do with the FFSelect component.
I guess the problem is in the Vaadin plugin, since I got the component working nicely. I'll check with the r&d team.
Heh, Looks like Henri was faster to answer on this one :)
I think I get it...
For application server compatibility I'm using an IBM J2RE 1.5.0 as my default Eclipse JRE. For some reasons the recompiling does not work with it. After removing it and set JRE 1.5.0_16 as default it works fine and I was able to recompile Vaadin widgets for the first time of my life :grin:
Nice you got the problem solved!
I'm really glad that this works. I use your component to choose a value from a large list. FFSelect is incredibly useful.
Nevertheless I have another question regarding using FFSelect in a form. This is my situation:
- The user chooses a value with the FFSelect component.
- This value is saved in a database.
- After a while the user loads the data into the same form, but in the meantime the original value is not part of the FFSelect datamodel anymore.
- So the value is not displayed... and that's the problem...
I wonder if it is possible to modify the component to display also free text that is not part of the datamodel.