<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-2578</id>
	<title>Nabble - GlazedLists - User</title>
	<updated>2009-11-03T09:37:19Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/GlazedLists---User-f2578.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GlazedLists---User-f2578.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26183469</id>
	<title>BasicEventList's ListEvent has no information</title>
	<published>2009-11-03T09:37:19Z</published>
	<updated>2009-11-03T09:37:19Z</updated>
	<author>
		<name>reibans</name>
	</author>
	<content type="html">&lt;br&gt;I want to use glazedlists-1.8.0_java15 in my project and I wrote a little
&lt;br&gt;unit test beforehand to play with the API and get to know how it works. In
&lt;br&gt;the test, I'm using a BasicEventList and I register a mock listener. When I
&lt;br&gt;add one element to the list, the listener is called but the resulting
&lt;br&gt;ListEvent has no info. The test is failing in the first assert because
&lt;br&gt;ListEvent.next() method is returning false. Could somebody tell me what I'm
&lt;br&gt;doing wrong? Here is the test code:
&lt;br&gt;&lt;br&gt;package checklist;
&lt;br&gt;&lt;br&gt;import ca.odell.glazedlists.BasicEventList;
&lt;br&gt;import ca.odell.glazedlists.EventList;
&lt;br&gt;import ca.odell.glazedlists.event.ListEvent;
&lt;br&gt;import ca.odell.glazedlists.event.ListEventListener;
&lt;br&gt;import org.junit.Test;
&lt;br&gt;import static org.junit.Assert.*;
&lt;br&gt;&lt;br&gt;public class BasicEventListTest {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; @Test
&lt;br&gt;&amp;nbsp; &amp;nbsp; public void addElement() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EventList&amp;lt;String&amp;gt; eventList = new BasicEventList&amp;lt;String&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MockListEventListener&amp;lt;String&amp;gt; listener = new
&lt;br&gt;MockListEventListener&amp;lt;String&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; eventList.addListEventListener(listener);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; eventList.add(&amp;quot;hello&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(1, listener.callCount);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertTrue(&amp;quot;true expected&amp;quot;, listener.event.next());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(ListEvent.INSERT, listener.event.getType());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(0, listener.event.getIndex());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private static class MockListEventListener&amp;lt;E&amp;gt; implements
&lt;br&gt;ListEventListener&amp;lt;E&amp;gt; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int callCount;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ListEvent&amp;lt;E&amp;gt; event;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void listChanged(ListEvent&amp;lt;E&amp;gt; listChanges) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; callCount++;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; event = listChanges;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Many thanks,
&lt;br&gt;-- 
&lt;br&gt;View this message in context: &lt;a href=&quot;http://old.nabble.com/BasicEventList%27s-ListEvent-has-no-information-tp26160593p26160593.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/BasicEventList%27s-ListEvent-has-no-information-tp26160593p26160593.html&lt;/a&gt;&lt;br&gt;Sent from the GlazedLists - User mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26183469&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26183469&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/BasicEventList%27s-ListEvent-has-no-information-tp26183469p26183469.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26183452</id>
	<title>BasicEventList's ListEvent has no information</title>
	<published>2009-11-03T09:36:30Z</published>
	<updated>2009-11-03T09:36:30Z</updated>
	<author>
		<name>reibans</name>
	</author>
	<content type="html">&lt;br&gt;I want to use glazedlists-1.8.0_java15 in my project and I wrote a little
&lt;br&gt;unit test beforehand to play with the API and get to know how it works. In
&lt;br&gt;the test, I'm using a BasicEventList and I register a mock listener. When I
&lt;br&gt;add one element to the list, the listener is called but the resulting
&lt;br&gt;ListEvent has no info. The test is failing in the first assert because
&lt;br&gt;ListEvent.next() method is returning false. Could somebody tell me what I'm
&lt;br&gt;doing wrong? Here is the test code:
&lt;br&gt;&lt;br&gt;package checklist;
&lt;br&gt;&lt;br&gt;import ca.odell.glazedlists.BasicEventList;
&lt;br&gt;import ca.odell.glazedlists.EventList;
&lt;br&gt;import ca.odell.glazedlists.event.ListEvent;
&lt;br&gt;import ca.odell.glazedlists.event.ListEventListener;
&lt;br&gt;import org.junit.Test;
&lt;br&gt;import static org.junit.Assert.*;
&lt;br&gt;&lt;br&gt;public class BasicEventListTest {
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; @Test
&lt;br&gt;&amp;nbsp; &amp;nbsp; public void addElement() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EventList&amp;lt;String&amp;gt; eventList = new BasicEventList&amp;lt;String&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MockListEventListener&amp;lt;String&amp;gt; listener = new
&lt;br&gt;MockListEventListener&amp;lt;String&amp;gt;();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; eventList.addListEventListener(listener);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; eventList.add(&amp;quot;hello&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(1, listener.callCount);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertTrue(&amp;quot;true expected&amp;quot;, listener.event.next());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(ListEvent.INSERT, listener.event.getType());
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; assertEquals(0, listener.event.getIndex());
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private static class MockListEventListener&amp;lt;E&amp;gt; implements
&lt;br&gt;ListEventListener&amp;lt;E&amp;gt; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int callCount;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ListEvent&amp;lt;E&amp;gt; event;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void listChanged(ListEvent&amp;lt;E&amp;gt; listChanges) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; callCount++;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; event = listChanges;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Many thanks,
&lt;br&gt;-- 
&lt;br&gt;View this message in context: &lt;a href=&quot;http://old.nabble.com/BasicEventList%27s-ListEvent-has-no-information-tp26160591p26160591.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/BasicEventList%27s-ListEvent-has-no-information-tp26160591p26160591.html&lt;/a&gt;&lt;br&gt;Sent from the GlazedLists - User mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26183452&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26183452&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/BasicEventList%27s-ListEvent-has-no-information-tp26183452p26183452.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26160208</id>
	<title>Re: Request for an SWT Glazedlists &quot;gentil&quot; tutorial</title>
	<published>2009-11-03T07:44:07Z</published>
	<updated>2009-11-03T07:44:07Z</updated>
	<author>
		<name>Oceanys</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;Thanks a lot for your valuable help.
&lt;br&gt;I'm really happy to find this source code because it's useful for my work.
&lt;br&gt;All my best regards and good luck.
&lt;br&gt;God bless.
&lt;br&gt;&lt;quote author=&quot;fab|an&quot;&gt;&lt;br&gt;Ok, here's a running example.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://github.com/fab1an/gl-addons/blob/master/src/at/busta/glazedlists/test/swt/EventTableViewerDemo.java&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/fab1an/gl-addons/blob/master/src/at/busta/glazedlists/test/swt/EventTableViewerDemo.java&lt;/a&gt;&lt;br&gt;&lt;br&gt;you can checkout the whole repo or just this file to build it.
&lt;br&gt;&lt;br&gt;It shows:
&lt;br&gt;* population of Table via a background thread
&lt;br&gt;* locking which is needed in this case
&lt;br&gt;* &amp;quot;filtering via Buttons&amp;quot;
&lt;br&gt;* filtering by a Text-input
&lt;br&gt;* sorting of the table
&lt;br&gt;* selection
&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;quote author=&quot;Oceanys&quot;&gt;&lt;br&gt;Hi,
&lt;br&gt;Thank you for the replay, but the example is still incomplete (for me as a beginner in the GlazedList API).
&lt;br&gt;All that I need is a clear snippet where an SWT table is created and populated and then the sort and filter feature is added.
&lt;br&gt;Thanks in advance and good luck.
&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;fab|an wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp;here's something I quickly copy'n'pasted together: &lt;a href=&quot;http://gist.github.com/224365&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gist.github.com/224365&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Oceanys wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message&quot;&gt;Hi, I'm new to the good GlazedLists API and I'm using SWT tables.
&lt;br&gt;&lt;br&gt;I was happy when I found the GlazedLists API. I have a problem with SWT GlazedLists integration because the majority of the available tutorials are written for Swing or for other SWT widgets (I mean the pixel example in the link 
&lt;br&gt;&lt;a href=&quot;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone have a simple source code or snippet to start with a simple SWT table and Glazed lists in order to show how we can sort and filter it.
&lt;br&gt;Thanks in advance and cordially.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Request-for-an-SWT-Glazedlists-%22gentil%22-tutorial-tp26157774p26160208.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26160203</id>
	<title>Re: Request for an SWT Glazedlists &quot;gentil&quot; tutorial</title>
	<published>2009-11-03T07:41:49Z</published>
	<updated>2009-11-03T07:41:49Z</updated>
	<author>
		<name>Oceanys</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;Thanks a lot for your valuable help.
&lt;br&gt;I'm really happy to find this source code because it's useful for my work.
&lt;br&gt;All my best regards and good luck.
&lt;br&gt;God bless.
&lt;br&gt;&lt;quote author=&quot;fab|an&quot;&gt;&lt;br&gt;Ok, here's a running example.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://github.com/fab1an/gl-addons/blob/master/src/at/busta/glazedlists/test/swt/EventTableViewerDemo.java&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/fab1an/gl-addons/blob/master/src/at/busta/glazedlists/test/swt/EventTableViewerDemo.java&lt;/a&gt;&lt;br&gt;&lt;br&gt;you can checkout the whole repo or just this file to build it.
&lt;br&gt;&lt;br&gt;It shows:
&lt;br&gt;* population of Table via a background thread
&lt;br&gt;* locking which is needed in this case
&lt;br&gt;* &amp;quot;filtering via Buttons&amp;quot;
&lt;br&gt;* filtering by a Text-input
&lt;br&gt;* sorting of the table
&lt;br&gt;* selection
&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;quote author=&quot;Oceanys&quot;&gt;&lt;br&gt;Hi,
&lt;br&gt;Thank you for the replay, but the example is still incomplete (for me as a beginner in the GlazedList API).
&lt;br&gt;All that I need is a clear snippet where an SWT table is created and populated and then the sort and filter feature is added.
&lt;br&gt;Thanks in advance and good luck.
&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;fab|an wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp;here's something I quickly copy'n'pasted together: &lt;a href=&quot;http://gist.github.com/224365&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gist.github.com/224365&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Oceanys wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message&quot;&gt;Hi, I'm new to the good GlazedLists API and I'm using SWT tables.
&lt;br&gt;&lt;br&gt;I was happy when I found the GlazedLists API. I have a problem with SWT GlazedLists integration because the majority of the available tutorials are written for Swing or for other SWT widgets (I mean the pixel example in the link 
&lt;br&gt;&lt;a href=&quot;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone have a simple source code or snippet to start with a simple SWT table and Glazed lists in order to show how we can sort and filter it.
&lt;br&gt;Thanks in advance and cordially.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Request-for-an-SWT-Glazedlists-%22gentil%22-tutorial-tp26157774p26160203.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26160150</id>
	<title>Re: Request for an SWT Glazedlists &quot;gentil&quot; tutorial</title>
	<published>2009-11-03T06:13:37Z</published>
	<updated>2009-11-03T06:13:37Z</updated>
	<author>
		<name>fab|an</name>
	</author>
	<content type="html">Ok, here's a running example.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://github.com/fab1an/gl-addons/blob/master/src/at/busta/glazedlists/test/swt/EventTableViewerDemo.java&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/fab1an/gl-addons/blob/master/src/at/busta/glazedlists/test/swt/EventTableViewerDemo.java&lt;/a&gt;&lt;br&gt;&lt;br&gt;you can checkout the whole repo or just this file to build it.
&lt;br&gt;&lt;br&gt;It shows:
&lt;br&gt;* population of Table via a background thread
&lt;br&gt;* locking which is needed in this case
&lt;br&gt;* &amp;quot;filtering via Buttons&amp;quot;
&lt;br&gt;* filtering by a Text-input
&lt;br&gt;* sorting of the table
&lt;br&gt;* selection
&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;quote author=&quot;Oceanys&quot;&gt;&lt;br&gt;Hi,
&lt;br&gt;Thank you for the replay, but the example is still incomplete (for me as a beginner in the GlazedList API).
&lt;br&gt;All that I need is a clear snippet where an SWT table is created and populated and then the sort and filter feature is added.
&lt;br&gt;Thanks in advance and good luck.
&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;fab|an wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp;here's something I quickly copy'n'pasted together: &lt;a href=&quot;http://gist.github.com/224365&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gist.github.com/224365&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Oceanys wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message&quot;&gt;Hi, I'm new to the good GlazedLists API and I'm using SWT tables.
&lt;br&gt;&lt;br&gt;I was happy when I found the GlazedLists API. I have a problem with SWT GlazedLists integration because the majority of the available tutorials are written for Swing or for other SWT widgets (I mean the pixel example in the link 
&lt;br&gt;&lt;a href=&quot;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone have a simple source code or snippet to start with a simple SWT table and Glazed lists in order to show how we can sort and filter it.
&lt;br&gt;Thanks in advance and cordially.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Request-for-an-SWT-Glazedlists-%22gentil%22-tutorial-tp26157774p26160150.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26160022</id>
	<title>Re: Request for an SWT Glazedlists &quot;gentil&quot; tutorial</title>
	<published>2009-11-03T00:13:37Z</published>
	<updated>2009-11-03T00:13:37Z</updated>
	<author>
		<name>Oceanys</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;Thank you for the replay, but the example is still incomplete (for me as a beginner in the GlazedList API).
&lt;br&gt;All that I need is a clear snippet where an SWT table is created and populated and then the sort and filter feature is added.
&lt;br&gt;Thanks in advance and good luck.
&lt;br&gt;&lt;quote author=&quot;fab|an&quot;&gt;&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp;here's something I quickly copy'n'pasted together: &lt;a href=&quot;http://gist.github.com/224365&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gist.github.com/224365&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Oceanys wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message&quot;&gt;Hi, I'm new to the good GlazedLists API and I'm using SWT tables.
&lt;br&gt;&lt;br&gt;I was happy when I found the GlazedLists API. I have a problem with SWT GlazedLists integration because the majority of the available tutorials are written for Swing or for other SWT widgets (I mean the pixel example in the link 
&lt;br&gt;&lt;a href=&quot;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone have a simple source code or snippet to start with a simple SWT table and Glazed lists in order to show how we can sort and filter it.
&lt;br&gt;Thanks in advance and cordially.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Request-for-an-SWT-Glazedlists-%22gentil%22-tutorial-tp26157774p26160022.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26160021</id>
	<title>Re: Request for an SWT Glazedlists &quot;gentil&quot; tutorial</title>
	<published>2009-11-03T00:08:03Z</published>
	<updated>2009-11-03T00:08:03Z</updated>
	<author>
		<name>Oceanys</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;Thank you for the replay, but the example is still incomplete (for me as a beginner in the GlazedList API).
&lt;br&gt;All that I need is a clear snippet where an SWT table is created and populated and then the sort and filter feature is added.
&lt;br&gt;Thanks in advance and good luck.
&lt;br&gt;&lt;quote author=&quot;fab|an&quot;&gt;&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp;here's something I quickly copy'n'pasted together: &lt;a href=&quot;http://gist.github.com/224365&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gist.github.com/224365&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Oceanys wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message&quot;&gt;Hi, I'm new to the good GlazedLists API and I'm using SWT tables.
&lt;br&gt;&lt;br&gt;I was happy when I found the GlazedLists API. I have a problem with SWT GlazedLists integration because the majority of the available tutorials are written for Swing or for other SWT widgets (I mean the pixel example in the link 
&lt;br&gt;&lt;a href=&quot;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone have a simple source code or snippet to start with a simple SWT table and Glazed lists in order to show how we can sort and filter it.
&lt;br&gt;Thanks in advance and cordially.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/quote&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Request-for-an-SWT-Glazedlists-%22gentil%22-tutorial-tp26157774p26160021.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26157789</id>
	<title>Re: Request for an SWT Glazedlists &quot;gentil&quot; tutorial</title>
	<published>2009-11-02T11:21:04Z</published>
	<updated>2009-11-02T11:21:04Z</updated>
	<author>
		<name>fab|an</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp;here's something I quickly copy'n'pasted together: &lt;a href=&quot;http://gist.github.com/224365&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gist.github.com/224365&lt;/a&gt;&lt;br&gt;&lt;br&gt;HTH
&lt;br&gt;fabian
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Oceanys wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message&quot;&gt;Hi, I'm new to the good GlazedLists API and I'm using SWT tables.
&lt;br&gt;&lt;br&gt;I was happy when I found the GlazedLists API. I have a problem with SWT GlazedLists integration because the majority of the available tutorials are written for Swing or for other SWT widgets (I mean the pixel example in the link 
&lt;br&gt;&lt;a href=&quot;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone have a simple source code or snippet to start with a simple SWT table and Glazed lists in order to show how we can sort and filter it.
&lt;br&gt;Thanks in advance and cordially.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Request-for-an-SWT-Glazedlists-%22gentil%22-tutorial-tp26157774p26157789.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26157774</id>
	<title>Request for an SWT Glazedlists &quot;gentil&quot; tutorial</title>
	<published>2009-11-02T10:54:33Z</published>
	<updated>2009-11-02T10:54:33Z</updated>
	<author>
		<name>Oceanys</name>
	</author>
	<content type="html">Hi, I'm new to the good GlazedLists API and I'm using SWT tables.
&lt;br&gt;&lt;br&gt;I was happy when I found the GlazedLists API. I have a problem with SWT GlazedLists integration because the majority of the available tutorials are written for Swing or for other SWT widgets (I mean the pixel example in the link 
&lt;br&gt;&lt;a href=&quot;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hexapixel.com/2009/01/02/glazed-lists-swt-tables-true&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Is anyone have a simple source code or snippet to start with a simple SWT table and Glazed lists in order to show how we can sort and filter it.
&lt;br&gt;Thanks in advance and cordially.</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Request-for-an-SWT-Glazedlists-%22gentil%22-tutorial-tp26157774p26157774.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26134792</id>
	<title>GoogleWave invitation</title>
	<published>2009-10-30T11:19:27Z</published>
	<updated>2009-10-30T11:19:27Z</updated>
	<author>
		<name>fab|an</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp;sorry if you consider this mail spam, but has anyone access to GW yet? I'm interested but didn't get an invitation.
&lt;br&gt;&lt;br&gt;fabian</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/GoogleWave-invitation-tp26134792p26134792.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25952989</id>
	<title>re[3]: SequenceList</title>
	<published>2009-10-18T20:46:43Z</published>
	<updated>2009-10-18T20:46:43Z</updated>
	<author>
		<name>Kevin Day</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;


&lt;META name=GENERATOR content=&quot;MSHTML 8.00.6001.18812&quot;&gt;&lt;/HEAD&gt;
&lt;BODY leftMargin=1 rightMargin=1 topMargin=1&gt;&lt;FONT size=2 face=Arial&gt;
&lt;DIV&gt;The use case here is fairly common (we do something similar frequently)&amp;nbsp;- but I think the suggested solution is sufficient for the bulk of cases.&amp;nbsp; It would be *much* more useful to have access to the deleted element in delete events (this would allow effective caching of computed values).&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;- K&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;
&lt;DIV style=&quot;FONT-FAMILY: Tahoma; FONT-SIZE: x-small&quot;&gt;
&lt;DIV&gt;----------------------- &lt;B&gt;Original Message&lt;/B&gt; -----------------------&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;From:&lt;/B&gt;&amp;nbsp;cocoa &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25952989&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cocoa@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;To:&lt;/B&gt;&amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25952989&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Cc:&lt;/B&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Date:&lt;/B&gt;&amp;nbsp;Mon, 12 Oct 2009 13:47:10 -0700 (PDT)&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Subject:&amp;nbsp;&lt;U&gt;Re: re: SequenceList&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;FONT size=2 face=Tahoma&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;gt; The SequenceList problem you mention is a legit bug in my opinion. Would&lt;BR&gt;&amp;gt; you mind filing a bug in our bugtracker?&lt;BR&gt;&amp;gt; &lt;BR&gt;&lt;BR&gt;I've filed a bug, see &lt;BR&gt;&lt;A href=&quot;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=482&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;&lt;FONT color=#0000ff&gt;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=482&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;A href=&quot;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=482&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;&lt;FONT color=#0000ff&gt;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=482&lt;/FONT&gt;&lt;/A&gt; . A bug&lt;BR&gt;attachment contains a failing unit test.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;gt; As for the approach to your problem (inserting sequence placeholders into&lt;BR&gt;&amp;gt; a list), that's something that isn't trivial to do with our existing&lt;BR&gt;&amp;gt; transformations. If I was in your shoes, I'd consider extending&lt;BR&gt;&amp;gt; TransformedList and implementing that transformation myself from the&lt;BR&gt;&amp;gt; ground up. It actually shouldn't be that hard to implement, overall.&lt;BR&gt;&amp;gt; &lt;BR&gt;&lt;BR&gt;Implementing my own TransformedList seems daunting :S. I've had a quick look&lt;BR&gt;at some TransformedList implementations. The current solution with the&lt;BR&gt;CompositeList seems to work so far. As long as it works I abstain from&lt;BR&gt;implementing any TransformedList ;). Unless somebody is willing to help me&lt;BR&gt;get up to speed with all those internal details of glazed lists.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;gt; We probably could dream up some type of transformation in the core that,&lt;BR&gt;&amp;gt; given two adjacent items in the source EventList, delegated to a Sequencer&lt;BR&gt;&amp;gt; type of object that filled in the gaps... I'm unsure of how useful that is&lt;BR&gt;&amp;gt; to our general audience.&lt;BR&gt;&amp;gt; &lt;BR&gt;&lt;BR&gt;My use case is to generate a report that shows the total time (or distance)&lt;BR&gt;of activities grouped by a time period (e.g. week, month, ...). Obviously,&lt;BR&gt;it is possible that some period does not contain any activity. So, the&lt;BR&gt;bucket is missing in the GroupingList, which is not acceptable. The missing&lt;BR&gt;bucket is important information by itself (i.e. the user did not perform any&lt;BR&gt;sport activity).&lt;BR&gt;-- &lt;BR&gt;View this message in context: &lt;A href=&quot;http://www.nabble.com/SequenceList-tp25838609p25862874.html&quot; target=&quot;_top&quot;&gt;&lt;FONT color=#0000ff&gt;http://www.nabble.com/SequenceList-tp25838609p25862874.html&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;Sent from the GlazedLists - User mailing list archive at Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;---------------------------------------------------------------------&lt;BR&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25952989&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;&lt;BR&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25952989&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/BODY&gt;&lt;/HTML&gt;


---------------------------------------------------------------------
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25952989&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25952989&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;

</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SequenceList-tp25838609p25952989.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25875817</id>
	<title>TreeList help</title>
	<published>2009-10-13T02:49:13Z</published>
	<updated>2009-10-13T02:49:13Z</updated>
	<author>
		<name>Gal Savranevsky</name>
	</author>
	<content type="html">&lt;div dir=&quot;ltr&quot;&gt;&lt;div&gt;Hi to all,&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I&amp;#39;m using TreeList with JTree. &lt;/div&gt;
&lt;div&gt;Its seems like there is no support for  ExpansionModel in JTree.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;my questions are&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; 1) Am i right? &lt;/div&gt;
&lt;div&gt; 2) What UI componet has a support for this feature? (maybe TreeTable)&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;thanks, &lt;/div&gt;
&lt;div&gt;Gal.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/TreeList-help-tp25875817p25875817.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25862874</id>
	<title>Re: re: SequenceList</title>
	<published>2009-10-12T13:47:08Z</published>
	<updated>2009-10-12T13:47:08Z</updated>
	<author>
		<name>cocoa</name>
	</author>
	<content type="html">&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-message&quot;&gt;The SequenceList problem you mention is a legit bug in my opinion. Would you mind filing a bug in our bugtracker?
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
I've filed a bug, see &lt;a href=&quot;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=482&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=482&lt;/a&gt;. A bug attachment contains a failing unit test.
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-message&quot;&gt;As for the approach to your problem (inserting sequence placeholders into a list), that's something that isn't trivial to do with our existing transformations. If I was in your shoes, I'd consider extending TransformedList and implementing that transformation myself from the ground up. It actually shouldn't be that hard to implement, overall.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
Implementing my own TransformedList seems daunting :S. I've had a quick look at some TransformedList implementations. The current solution with the CompositeList seems to work so far. As long as it works I abstain from implementing any TransformedList ;). Unless somebody is willing to help me get up to speed with all those internal details of glazed lists.
&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-message&quot;&gt;We probably could dream up some type of transformation in the core that, given two adjacent items in the source EventList, delegated to a Sequencer type of object that filled in the gaps... I'm unsure of how useful that is to our general audience.
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
My use case is to generate a report that shows the total time (or distance) of activities grouped by a time period (e.g. week, month, ...). Obviously, it is possible that some period does not contain any activity. So, the bucket is missing in the GroupingList, which is not acceptable. The missing bucket is important information by itself (i.e. the user did not perform any sport activity).</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SequenceList-tp25838609p25862874.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25858893</id>
	<title>Re: re: SequenceList</title>
	<published>2009-10-12T09:29:28Z</published>
	<updated>2009-10-12T09:29:28Z</updated>
	<author>
		<name>James Lemieux</name>
	</author>
	<content type="html">Simon,&lt;br&gt;&lt;br&gt;The SequenceList problem you mention is a legit bug in my opinion. Would you mind filing a bug in our bugtracker?&lt;br&gt;&lt;br&gt;As for the approach to your problem (inserting sequence placeholders into a list), that&amp;#39;s something that isn&amp;#39;t trivial to do with our existing transformations. If I was in your shoes, I&amp;#39;d consider extending TransformedList and implementing that transformation myself from the ground up. It actually shouldn&amp;#39;t be that hard to implement, overall.&lt;br&gt;
&lt;br&gt;We probably could dream up some type of transformation in the core that, given two adjacent items in the source EventList, delegated to a Sequencer type of object that filled in the gaps... I&amp;#39;m unsure of how useful that is to our general audience.&lt;br&gt;
&lt;br&gt;Good Luck,&lt;br&gt;&lt;br&gt;James&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Oct 11, 2009 at 3:02 PM, cocoa &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858893&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cocoa@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;br&gt;
I soon saw that my initial approach does not work. The map, as you mentioned,&lt;br&gt;
is not updated so the approach is broken. Next I&amp;#39;ve tried the proposed&lt;br&gt;
approach using a CompositeList.&lt;br&gt;
&lt;br&gt;
The first list is a SequenceList that produces PlaceholderActivity objects&lt;br&gt;
with a Sequencer. However, I&amp;#39;ve run into an issue with the SequenceList. It&lt;br&gt;
adds the source Activity objects to the SequenceList (not the placeholder&lt;br&gt;
activity objects). This results in incorrect duration totals (i.e. the first&lt;br&gt;
one is twice as large as it should be). So I&amp;#39;ve added a&lt;br&gt;
FunctionList&amp;lt;Activity, PlaceholderActivity&amp;gt; to the source list. That way, I&lt;br&gt;
get the expected sequence lists consisting only of PlaceholderActivity.&lt;br&gt;
&lt;br&gt;
The CompositeList stuff works as advertised. I get the missing buckets with&lt;br&gt;
a 0 total duration.&lt;br&gt;
&lt;br&gt;
Simon&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
PS: I&amp;#39;m not groking why the first value of the SequenceList is duplicated.&lt;br&gt;
It does not hurt in my case, because placeholder activities are not used for&lt;br&gt;
the calculations. Below is a simple snipped that shows what I mean:&lt;br&gt;
&lt;br&gt;
EventList&amp;lt;Integer&amp;gt; src = new BasicEventList&amp;lt;Integer&amp;gt;();&lt;br&gt;
src.add(1);&lt;br&gt;
src.add(3);&lt;br&gt;
&lt;br&gt;
SequenceList&amp;lt;Integer&amp;gt; integers = new SequenceList&amp;lt;Integer&amp;gt;(src, new&lt;br&gt;
Sequencer&amp;lt;Integer&amp;gt;() {&lt;br&gt;
        public Integer next(Integer value) {&lt;br&gt;
                return value + 1;&lt;br&gt;
        }&lt;br&gt;
        public Integer previous(Integer value) {&lt;br&gt;
                return value - 1;&lt;br&gt;
        }&lt;br&gt;
});&lt;br&gt;
&lt;br&gt;
for (Integer value : integers) {&lt;br&gt;
        System.out.println(value);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
Output is :&lt;br&gt;
1&lt;br&gt;
1&lt;br&gt;
2&lt;br&gt;
3&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;
--&lt;br&gt;
View this message in context: &lt;a href=&quot;http://www.nabble.com/SequenceList-tp25838609p25848064.html&quot; target=&quot;_blank&quot;&gt;http://www.nabble.com/SequenceList-tp25838609p25848064.html&lt;/a&gt;&lt;br&gt;
&lt;/font&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;Sent from the GlazedLists - User mailing list archive at Nabble.com.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
---------------------------------------------------------------------&lt;br&gt;
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858893&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;&lt;br&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25858893&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SequenceList-tp25838609p25858893.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25848064</id>
	<title>Re: re: SequenceList</title>
	<published>2009-10-11T15:01:59Z</published>
	<updated>2009-10-11T15:01:59Z</updated>
	<author>
		<name>cocoa</name>
	</author>
	<content type="html">I soon saw that my initial approach does not work. The map, as you mentioned, is not updated so the approach is broken. Next I've tried the proposed approach using a CompositeList. 
&lt;br&gt;&lt;br&gt;The first list is a SequenceList that produces PlaceholderActivity objects with a Sequencer. However, I've run into an issue with the SequenceList. It adds the source Activity objects to the SequenceList (not the placeholder activity objects). This results in incorrect duration totals (i.e. the first one is twice as large as it should be). So I've added a FunctionList&amp;lt;Activity, PlaceholderActivity&amp;gt; to the source list. That way, I get the expected sequence lists consisting only of PlaceholderActivity. 
&lt;br&gt;&lt;br&gt;The CompositeList stuff works as advertised. I get the missing buckets with a 0 total duration.
&lt;br&gt;&lt;br&gt;Simon
&lt;br&gt;&lt;br&gt;&lt;br&gt;PS: I'm not groking why the first value of the SequenceList is duplicated. It does not hurt in my case, because placeholder activities are not used for the calculations. Below is a simple snipped that shows what I mean:
&lt;br&gt;&lt;br&gt;EventList&amp;lt;Integer&amp;gt; src = new BasicEventList&amp;lt;Integer&amp;gt;();
&lt;br&gt;src.add(1);
&lt;br&gt;src.add(3);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;SequenceList&amp;lt;Integer&amp;gt; integers = new SequenceList&amp;lt;Integer&amp;gt;(src, new Sequencer&amp;lt;Integer&amp;gt;() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Integer next(Integer value) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return value + 1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Integer previous(Integer value) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return value - 1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;});
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;for (Integer value : integers) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(value);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Output is : 
&lt;br&gt;1
&lt;br&gt;1
&lt;br&gt;2
&lt;br&gt;3
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SequenceList-tp25838609p25848064.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25840628</id>
	<title>re: SequenceList</title>
	<published>2009-10-10T21:08:50Z</published>
	<updated>2009-10-10T21:08:50Z</updated>
	<author>
		<name>Kevin Day</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;


&lt;META name=GENERATOR content=&quot;MSHTML 8.00.6001.18812&quot;&gt;&lt;/HEAD&gt;
&lt;BODY leftMargin=1 rightMargin=1 topMargin=1&gt;&lt;FONT size=2 face=Arial&gt;
&lt;DIV&gt;I think you may run into some problems with this approach - the map is not a live map.&amp;nbsp; Be sure to test the following scenario:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;1.&amp;nbsp; Initial condition is a setup that is missing data in week3&lt;/DIV&gt;
&lt;DIV&gt;2.&amp;nbsp; Add an element for week 3 - did the summary get re-constructed?&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Repeat, but instead of adding an element for week 3, change an existing element so that it now resides in week 3.&amp;nbsp; Same test.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;There is a lot of nastiness with event publication and dependant listeners that you have to deal with when you introduce a map that is driving another list's behavior.&amp;nbsp; It *can* be done, but the opportunity for error and odd little corner cases (that are really hard to debug) is very high.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Another approach to this problem that doesn't use maps would be to construct a list of dummy PlaceHolderActivity objects - these will not get added to your totals if they appear in a list that a summary operates against.&amp;nbsp; Create one PlaceHolderActivity for each bucket you want to appear in the output (so if you are doing 52 weeks, you'd have 52).&amp;nbsp; Now, composite this list with the source list using CompositeList, then pipe it into your grouping list.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Also, it will simplify things if you make the EventList&amp;lt;PlaceHolderActivity&amp;gt; be a SequenceList built from the source list.&amp;nbsp; Cool, eh?&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;placeHolders = new SequenceList&amp;lt;Activity&amp;gt;(source, sequencer); // sequencer returns a sub-class of Activity - PlaceHolderActivity&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;composite = new CompositeList&amp;lt;Activity&amp;gt;(source.getPubliser(), source.getReadWriteLock());&lt;/DIV&gt;
&lt;DIV&gt;composite.addMemberList(source);&lt;/DIV&gt;
&lt;DIV&gt;composite.addMemberList(placeHolders);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;grouped = new GroupingList&amp;lt;Activity&amp;gt;(composite);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;// then comes a function list whose function calculates the summaries&lt;BR&gt;FunctionList&amp;lt;List&amp;lt;Activity&amp;gt;, SummaryRecord&amp;gt; summaries = ...; // function ignores list entries that are PlaceHolderActivities&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;summaries now contains the list that you want, including the 'missing' buckets, and you don't have the messy event publisher stuff from the map to deal with.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;- K&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;
&lt;DIV style=&quot;FONT-FAMILY: Tahoma; FONT-SIZE: x-small&quot;&gt;
&lt;DIV&gt;----------------------- &lt;B&gt;Original Message&lt;/B&gt; -----------------------&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;From:&lt;/B&gt;&amp;nbsp;cocoa &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840628&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cocoa@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;To:&lt;/B&gt;&amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840628&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Cc:&lt;/B&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Date:&lt;/B&gt;&amp;nbsp;Sat, 10 Oct 2009 15:51:53 -0700 (PDT)&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Subject:&amp;nbsp;&lt;U&gt;SequenceList&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;FONT size=2 face=Tahoma&gt;
&lt;DIV&gt;&lt;BR&gt;In my application a list of sport activities can be tracked and analyzed. I&lt;BR&gt;want to provide a summary view that shows the total time or distance of all&lt;BR&gt;activities within a certain time period (e.g. week) over some time (e.g. the&lt;BR&gt;last year). Below is the basic list setup I use.&lt;BR&gt;&lt;BR&gt;// list of activities&lt;BR&gt;EventList&amp;lt;Activity&amp;gt; source = ...; &lt;BR&gt;&lt;BR&gt;// observe property change events&lt;BR&gt;EventList&amp;lt;Activity&amp;gt; observed = new ObservableElementList(source, ...);&lt;BR&gt;&lt;BR&gt;// group the activities by time period, e.g. per week&lt;BR&gt;GroupingList&amp;lt;Activity&amp;gt; grouped = new&lt;BR&gt;GroupingList&amp;lt;Activity&amp;gt;(observedElementList, ...);&lt;BR&gt;&lt;BR&gt;// then comes a function list whose function calculates the summaries&lt;BR&gt;FunctionList&amp;lt;List&amp;lt;Activity&amp;gt;, SummaryRecord&amp;gt; summaries = ...;&lt;BR&gt;&lt;BR&gt;As GroupingList does not return any empty groups, it happens that the&lt;BR&gt;summaries contains gaps, i.e. time periods for which no group exists. Then I&lt;BR&gt;stumbled upon the SequenceList, which I thought might be of some help. First&lt;BR&gt;I had some problems with the sequencer implementation (the summaries after&lt;BR&gt;the first element where lost). But here is with what I came up with.&lt;BR&gt;&lt;BR&gt;// first create a map that maps a time period to the list of summaries&lt;BR&gt;DisposableMap&amp;lt;Week, List&amp;lt;SummaryRecord&amp;gt;&amp;gt; map =&lt;BR&gt;GlazedLists.syncEventListToMultiMap(summaries, keyMaker());&lt;BR&gt;&lt;BR&gt;// then pass this map to the sequencer implementation&lt;BR&gt;SequenceList&amp;lt;SummaryRecord&amp;gt; sequence = new&lt;BR&gt;SequenceList&amp;lt;SummaryRecord&amp;gt;(summaries, new RecordSequencer(map));&lt;BR&gt;&lt;BR&gt;The sequencer uses the map to implement next and previous so that if there&lt;BR&gt;is already a SummaryRecord for a time period then that SummaryRecord is&lt;BR&gt;returned (otherwise, an empty SummaryRecord). See the implementation of&lt;BR&gt;next().&lt;BR&gt;&lt;BR&gt;public Record next(SummaryRecord value) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Week week = value.week.next();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;SummaryRecord&amp;gt; existing = map.get(week);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return existing != null ? existing.get(0) : new SummaryRecord(week, 0);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;So far, this seems to work. I am just wondering whether there is a simpler&lt;BR&gt;way to achieve the same thing. I'm sure others have done this kind of&lt;BR&gt;reporting over a data set. There is also precious few documentation for&lt;BR&gt;SequenceList, so I'm not sure that this is a supported way of using it&lt;BR&gt;(especially the Sequencer implementation).&lt;BR&gt;&lt;BR&gt;Any suggestions?&lt;BR&gt;Simon&lt;BR&gt;&lt;BR&gt;PS: SequenceList seems to have a bug if the earliest source value is a&lt;BR&gt;sequence value. In that case, the earliest sequence value is duplicated in&lt;BR&gt;the result list (can easily be shown with month sequencer).&lt;BR&gt;&lt;BR&gt;PS: glazedlists is amazing :clap:&lt;BR&gt;-- &lt;BR&gt;View this message in context: &lt;A href=&quot;http://www.nabble.com/SequenceList-tp25838609p25838609.html&quot; target=&quot;_top&quot;&gt;&lt;FONT color=#0000ff&gt;http://www.nabble.com/SequenceList-tp25838609p25838609.html&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;Sent from the GlazedLists - User mailing list archive at Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;---------------------------------------------------------------------&lt;BR&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840628&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;&lt;BR&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840628&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/BODY&gt;&lt;/HTML&gt;


---------------------------------------------------------------------
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840628&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840628&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;

</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SequenceList-tp25838609p25840628.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25838609</id>
	<title>SequenceList</title>
	<published>2009-10-10T15:51:50Z</published>
	<updated>2009-10-10T15:51:50Z</updated>
	<author>
		<name>cocoa</name>
	</author>
	<content type="html">In my application a list of sport activities can be tracked and analyzed. I want to provide a summary view that shows the total time or distance of all activities within a certain time period (e.g. week) over some time (e.g. the last year). Below is the basic list setup I use.
&lt;br&gt;&lt;br&gt;// list of activities
&lt;br&gt;EventList&amp;lt;Activity&amp;gt; source = ...; 
&lt;br&gt;&lt;br&gt;// observe property change events
&lt;br&gt;EventList&amp;lt;Activity&amp;gt; observed = new ObservableElementList(source, ...);
&lt;br&gt;&lt;br&gt;// group the activities by time period, e.g. per week
&lt;br&gt;GroupingList&amp;lt;Activity&amp;gt; grouped = new GroupingList&amp;lt;Activity&amp;gt;(observedElementList, ...);
&lt;br&gt;&lt;br&gt;// then comes a function list whose function calculates the summaries
&lt;br&gt;FunctionList&amp;lt;List&amp;lt;Activity&amp;gt;, SummaryRecord&amp;gt; summaries = ...;
&lt;br&gt;&lt;br&gt;As GroupingList does not return any empty groups, it happens that the summaries contains gaps, i.e. time periods for which no group exists. Then I stumbled upon the SequenceList, which I thought might be of some help. First I had some problems with the sequencer implementation (the summaries after the first element where lost). But here is with what I came up with.
&lt;br&gt;&lt;br&gt;// first create a map that maps a time period to the list of summaries
&lt;br&gt;DisposableMap&amp;lt;Week, List&amp;lt;SummaryRecord&amp;gt;&amp;gt; map = GlazedLists.syncEventListToMultiMap(summaries, keyMaker());
&lt;br&gt;&lt;br&gt;// then pass this map to the sequencer implementation
&lt;br&gt;SequenceList&amp;lt;SummaryRecord&amp;gt; sequence = new SequenceList&amp;lt;SummaryRecord&amp;gt;(summaries, new RecordSequencer(map));
&lt;br&gt;&lt;br&gt;The sequencer uses the map to implement next and previous so that if there is already a SummaryRecord for a time period then that SummaryRecord is returned (otherwise, an empty SummaryRecord). See the implementation of next().
&lt;br&gt;&lt;br&gt;public Record next(SummaryRecord value) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; Week week = value.week.next();
&lt;br&gt;&amp;nbsp; &amp;nbsp; List&amp;lt;SummaryRecord&amp;gt; existing = map.get(week);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return existing != null ? existing.get(0) : new SummaryRecord(week, 0);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;So far, this seems to work. I am just wondering whether there is a simpler way to achieve the same thing. I'm sure others have done this kind of reporting over a data set. There is also precious few documentation for SequenceList, so I'm not sure that this is a supported way of using it (especially the Sequencer implementation).
&lt;br&gt;&lt;br&gt;Any suggestions?
&lt;br&gt;Simon
&lt;br&gt;&lt;br&gt;PS: SequenceList seems to have a bug if the earliest source value is a sequence value. In that case, the earliest sequence value is duplicated in the result list (can easily be shown with month sequencer).
&lt;br&gt;&lt;br&gt;PS: glazedlists is amazing &lt;img class='smiley' src='http://old.nabble.com/images/smiley/anim_claps.gif' /&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SequenceList-tp25838609p25838609.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25773181</id>
	<title>Re: gl-addons</title>
	<published>2009-10-06T10:29:01Z</published>
	<updated>2009-10-06T10:29:01Z</updated>
	<author>
		<name>fab|an</name>
	</author>
	<content type="html">Forgot, the link: &lt;a href=&quot;http://github.com/fab1an/gl-addons&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://github.com/fab1an/gl-addons&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;fab|an wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;I have a nice little repository with stuff i wrote for glazedlists.
&lt;br&gt;May it be of use for anyone.
&lt;br&gt;&lt;br&gt;EventTreeViewer
&lt;br&gt;SWT Viewer for TreeList. Works for me, but lacks VIRTUAL support.
&lt;br&gt;I need comments on &lt;a href=&quot;http://www.nabble.com/2-TreeList-bugs--td24557579.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/2-TreeList-bugs--td24557579.html&lt;/a&gt;&amp;nbsp;though...
&lt;br&gt;&lt;br&gt;Set/ClassSetMatcherEditor
&lt;br&gt;MatcherEditor which tests an (function-)extracted enum property against a set of provided enums. I found that I could generalize much filter-scenarios this way.
&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/gl-addons-tp25755998p25773181.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25757033</id>
	<title>Bug in ThresholdMatcherEditor</title>
	<published>2009-10-05T14:44:18Z</published>
	<updated>2009-10-05T14:44:18Z</updated>
	<author>
		<name>Baljeet</name>
	</author>
	<content type="html">Hi all
&lt;br&gt;&lt;br&gt;ThresholdMatcherEditor extends from AbstractMatcherEditor.
&lt;br&gt;Both the classes have a variable named 'currentMatcher'.
&lt;br&gt;&lt;br&gt;ThresholdMatcherEditor sets its private variable 'currentMatcher' which is not propagated to super.
&lt;br&gt;Also it does not override the getMatcher() method, hence the variable from AbstractMatcherEditor gets picked up. This is incorrect.
&lt;br&gt;&lt;br&gt;Small but caused my CompositeMatcher to behave erratically.
&lt;br&gt;&lt;br&gt;Baljeet</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Bug-in-ThresholdMatcherEditor-tp25757033p25757033.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25755998</id>
	<title>gl-addons</title>
	<published>2009-10-05T12:35:20Z</published>
	<updated>2009-10-05T12:35:20Z</updated>
	<author>
		<name>fab|an</name>
	</author>
	<content type="html">I have a nice little repository with stuff i wrote for glazedlists.
&lt;br&gt;May it be of use for anyone.
&lt;br&gt;&lt;br&gt;EventTreeViewer
&lt;br&gt;SWT Viewer for TreeList. Works for me, but lacks VIRTUAL support.
&lt;br&gt;I need comments on &lt;a href=&quot;http://www.nabble.com/2-TreeList-bugs--td24557579.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/2-TreeList-bugs--td24557579.html&lt;/a&gt;&amp;nbsp;though...
&lt;br&gt;&lt;br&gt;Set/ClassSetMatcherEditor
&lt;br&gt;MatcherEditor which tests an (function-)extracted enum property against a set of provided enums. I found that I could generalize much filter-scenarios this way.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/gl-addons-tp25755998p25755998.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25648685</id>
	<title>Re: Updates off the Swing EDT</title>
	<published>2009-09-28T09:37:29Z</published>
	<updated>2009-09-28T09:37:29Z</updated>
	<author>
		<name>James Lemieux</name>
	</author>
	<content type="html">Richard,&lt;br&gt;&lt;br&gt;   Your 3 points are all spot-on. If you can achieve immutability with your elements, I think that produces the sexiest result, but of course you&amp;#39;ll need to consider code already written.&lt;br&gt;&lt;br&gt;   One note of caution: ThreadSafeList is fine for single-method interactions with an EventList, but keep in mind that you must still manually lock and unlock the list for larger units of atomicity. For example:&lt;br&gt;
&lt;br&gt;Object firstElement = null;&lt;br&gt;if (!myEventList.isEmpty())&lt;br&gt;   firstElement = myEventList.get(0);&lt;br&gt;&lt;br&gt;isn&amp;#39;t concurrently correct, even if myEventList is a ThreadSafeList, since the lock of the list pipeline is unlocked between the calls to isEmpty() and get(). So, this should really be written as:&lt;br&gt;
&lt;br&gt;&lt;br&gt;
Object firstElement = null;&lt;br&gt;myEventList.getReadWriteLock().lock();&lt;br&gt;try {&lt;br&gt;  if (!myEventList.isEmpty())&lt;br&gt;
     firstElement = myEventList.get(0);&lt;br&gt;} finally {&lt;br&gt;  myEventList.getReadWriteLock().unlock();&lt;br&gt;}&lt;br&gt;&lt;br&gt;Keep on Glazin&amp;#39; in the free world,&lt;br&gt;&lt;br&gt;James&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Mon, Sep 28, 2009 at 7:30 AM, Richard &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25648685&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;numberoneskier@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;Hi Gerrit,&lt;br&gt;
&lt;br&gt;
thanks for your response, it does help because it made me aware of FunctionList&lt;br&gt;
and confirmed my suspicion that &amp;#39;something else&amp;#39; needs to be done.&lt;br&gt;
&lt;br&gt;
Cloning is OK for most of my use cases, but i&amp;#39;ve got one case where i&amp;#39;ve got in&lt;br&gt;
the order of 10-15 thousand items in the list and the user has multiple&lt;br&gt;
views over those items... not sure if i want to clone all that multiple times!&lt;br&gt;
Luckily in this case i control the entire code so i might make things immutable&lt;br&gt;
so updates are really forced to be replacements which should make the race&lt;br&gt;
conditions go away.&lt;br&gt;
&lt;br&gt;
Anyway, putting aside specific cases, i&amp;#39;d like to confirm my general&lt;br&gt;
understanding of the situation:&lt;br&gt;
&lt;br&gt;
(1) if you have a mutable list (insertions/deletions) then wrapping it in&lt;br&gt;
ThreadSafeList and using EventTableModel is enough to satisfy Swings EDT rules&lt;br&gt;
even if the mutations to the list are happening OFF the EDT.&lt;br&gt;
&lt;br&gt;
(2) if you have mutable items in the list and the items are being mutated ON&lt;br&gt;
the EDT then you can contain them in an ObservableElementList, wrap that in a&lt;br&gt;
ThreadSafeList and use EventTableModel, you will be safe (allows the list to be&lt;br&gt;
changed off EDT, but items must be changed on EDT).&lt;br&gt;
&lt;br&gt;
(3) if you have mutable items in the list and the items are being mutated OFF&lt;br&gt;
the EDT then this will cause race conditions in JTable painting unless you do&lt;br&gt;
&amp;#39;something else&amp;#39;, such as cloning, or... actually i can&amp;#39;t think of anything&lt;br&gt;
else!?!&lt;br&gt;
&lt;br&gt;
Would that be a fair synopsis?&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
---------------------------------------------------------------------&lt;br&gt;
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25648685&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;&lt;br&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25648685&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Updates-off-the-Swing-EDT-tp25631193p25648685.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25646626</id>
	<title>Re: Updates off the Swing EDT</title>
	<published>2009-09-28T07:30:01Z</published>
	<updated>2009-09-28T07:30:01Z</updated>
	<author>
		<name>Richard-332</name>
	</author>
	<content type="html">Hi Gerrit,
&lt;br&gt;&lt;br&gt;thanks for your response, it does help because it made me aware of FunctionList 
&lt;br&gt;and confirmed my suspicion that 'something else' needs to be done.
&lt;br&gt;&lt;br&gt;Cloning is OK for most of my use cases, but i've got one case where i've got in 
&lt;br&gt;the order of 10-15 thousand items in the list and the user has multiple
&lt;br&gt;views over those items... not sure if i want to clone all that multiple times! 
&lt;br&gt;Luckily in this case i control the entire code so i might make things immutable
&lt;br&gt;so updates are really forced to be replacements which should make the race 
&lt;br&gt;conditions go away.
&lt;br&gt;&lt;br&gt;Anyway, putting aside specific cases, i'd like to confirm my general 
&lt;br&gt;understanding of the situation:
&lt;br&gt;&lt;br&gt;(1) if you have a mutable list (insertions/deletions) then wrapping it in 
&lt;br&gt;ThreadSafeList and using EventTableModel is enough to satisfy Swings EDT rules
&lt;br&gt;even if the mutations to the list are happening OFF the EDT.
&lt;br&gt;&lt;br&gt;(2) if you have mutable items in the list and the items are being mutated ON 
&lt;br&gt;the EDT then you can contain them in an ObservableElementList, wrap that in a 
&lt;br&gt;ThreadSafeList and use EventTableModel, you will be safe (allows the list to be 
&lt;br&gt;changed off EDT, but items must be changed on EDT).
&lt;br&gt;&lt;br&gt;(3) if you have mutable items in the list and the items are being mutated OFF 
&lt;br&gt;the EDT then this will cause race conditions in JTable painting unless you do 
&lt;br&gt;'something else', such as cloning, or... actually i can't think of anything 
&lt;br&gt;else!?!
&lt;br&gt;&lt;br&gt;Would that be a fair synopsis?
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25646626&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25646626&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Updates-off-the-Swing-EDT-tp25631193p25646626.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25631754</id>
	<title>Re: Updates off the Swing EDT</title>
	<published>2009-09-27T01:21:08Z</published>
	<updated>2009-09-27T01:21:08Z</updated>
	<author>
		<name>Gerrit Cap</name>
	</author>
	<content type="html">Hello Richard,
&lt;br&gt;&lt;br&gt;First of all I think the logical easy approach would be to &amp;quot;cache&amp;quot; your 
&lt;br&gt;Things in a consistent state in the event list chain close to the gui. 
&lt;br&gt;you could use a FunctionList for that which use a &amp;quot;cloning&amp;quot; function, 
&lt;br&gt;hence when an update to list is performed the functionlist clones the 
&lt;br&gt;&amp;quot;update&amp;quot; and your GUI will be consistent. If you want automatic updates 
&lt;br&gt;to the list happening when your Things change then you can insert an 
&lt;br&gt;ObservableElementList before the FunctionList, supposing that your 
&lt;br&gt;Things send property change events using the PropertyChangelistener, you 
&lt;br&gt;can use the BeanConnector to link the changes of properties within the 
&lt;br&gt;observable element list, or if the use the java.util.Observable pattern 
&lt;br&gt;there is also a connector for that, if neither is the case you have to 
&lt;br&gt;come up with a connector of your own...
&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;&lt;br&gt;Gerrit
&lt;br&gt;&lt;br&gt;Richard wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; first-up:
&lt;br&gt;&amp;gt; i've just discovered glazed lists and am wetting my pets at the excellent 
&lt;br&gt;&amp;gt; prospect of replacing lots of my hand-crafted junk code with this stuff.
&lt;br&gt;&amp;gt; Thank you and congrats on a great project. &amp;nbsp;Awesome work!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; question:
&lt;br&gt;&amp;gt; I've got a list of Thing's that can be updated OFF the swing EDT.
&lt;br&gt;&amp;gt; i can see how the combination of ThreadSafeList and SwingThreadProxyEventList 
&lt;br&gt;&amp;gt; means that updates to the list (insertions, removals) get applied to the 
&lt;br&gt;&amp;gt; EventTableModel in such a way as to keep swing happy (glazed lists makes 
&lt;br&gt;&amp;gt; changes happen ON the EDT).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unfortunately, the Thing's themselves can be updated OFF the EDT, and i worry 
&lt;br&gt;&amp;gt; about inconsistencies in table painting. For example, while painting the cells 
&lt;br&gt;&amp;gt; in a row the underlying Thing might have a field value change which could cause 
&lt;br&gt;&amp;gt; inconsistency in the visual appearance of the row, or worse.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Does GlazedLists help me out in this scenario, or do i have to do something 
&lt;br&gt;&amp;gt; extra?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Trying to get the hang of it, and liking it so far!
&lt;br&gt;&amp;gt; Thanks...
&lt;br&gt;&amp;gt; &amp;nbsp; - Richard.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25631754&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25631754&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;-------------------- Marble Consulting ----------------------
&lt;br&gt;Gerrit Cap &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.marble.be/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.marble.be/&lt;/a&gt;&lt;br&gt;OO Solutions Engineer &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25631754&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Gerrit.Cap@...&lt;/a&gt;
&lt;br&gt;Marble Consulting &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; gsm : +32 475 72.94.36
&lt;br&gt;Vinkenbosstraat 13 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;tel : +32 16 89.50.55
&lt;br&gt;B-3001 Heverlee &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fax : +32 16 89.50.58
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25631754&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25631754&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Updates-off-the-Swing-EDT-tp25631193p25631754.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25631193</id>
	<title>Updates off the Swing EDT</title>
	<published>2009-09-26T23:14:47Z</published>
	<updated>2009-09-26T23:14:47Z</updated>
	<author>
		<name>Richard-332</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;first-up:
&lt;br&gt;i've just discovered glazed lists and am wetting my pets at the excellent 
&lt;br&gt;prospect of replacing lots of my hand-crafted junk code with this stuff.
&lt;br&gt;Thank you and congrats on a great project. &amp;nbsp;Awesome work!
&lt;br&gt;&lt;br&gt;question:
&lt;br&gt;I've got a list of Thing's that can be updated OFF the swing EDT.
&lt;br&gt;i can see how the combination of ThreadSafeList and SwingThreadProxyEventList 
&lt;br&gt;means that updates to the list (insertions, removals) get applied to the 
&lt;br&gt;EventTableModel in such a way as to keep swing happy (glazed lists makes 
&lt;br&gt;changes happen ON the EDT).
&lt;br&gt;&lt;br&gt;Unfortunately, the Thing's themselves can be updated OFF the EDT, and i worry 
&lt;br&gt;about inconsistencies in table painting. For example, while painting the cells 
&lt;br&gt;in a row the underlying Thing might have a field value change which could cause 
&lt;br&gt;inconsistency in the visual appearance of the row, or worse.
&lt;br&gt;&lt;br&gt;Does GlazedLists help me out in this scenario, or do i have to do something 
&lt;br&gt;extra?
&lt;br&gt;&lt;br&gt;Trying to get the hang of it, and liking it so far!
&lt;br&gt;Thanks...
&lt;br&gt;&amp;nbsp; - Richard.
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25631193&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25631193&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Updates-off-the-Swing-EDT-tp25631193p25631193.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25616825</id>
	<title>JTable within JScrollPane not refreshing</title>
	<published>2009-09-25T11:22:10Z</published>
	<updated>2009-09-25T11:22:10Z</updated>
	<author>
		<name>scb147</name>
	</author>
	<content type="html">I am using a SortedList and FilteredList to display my EventList in a JTable contained within a JScrollPane.
&lt;br&gt;&lt;br&gt;The problem I am having is that when I filter out rows when the scroll bar is not shown, only the first row is removed. &amp;nbsp;If I try selecting one of the rows, it acts like it's not there. &amp;nbsp;If I minimize the frame and restore it, the rows disappear.
&lt;br&gt;&lt;br&gt;The first image here is what is in the list. &amp;nbsp;Note: I am only showing the Info log messages because there are only 7 of those and the vertical scrollbar is not shown.
&lt;br&gt;&lt;img src=&quot;http://old.nabble.com/file/p25616825/beforeFilter.jpg&quot; border=&quot;0&quot; /&gt;&lt;br&gt;&lt;br&gt;Then, when I filter out the Info log messages, I'd expect nothing to show. &amp;nbsp;Instead, I get this:
&lt;br&gt;&lt;img src=&quot;http://old.nabble.com/file/p25616825/afterFilter.jpg&quot; border=&quot;0&quot; /&gt;&lt;br&gt;&lt;br&gt;Finally, if I minimize and restore the window, the JScrollPane/JTable refresh and the rows disappear as expected.
&lt;br&gt;&lt;img src=&quot;http://old.nabble.com/file/p25616825/afterMinimize.jpg&quot; border=&quot;0&quot; /&gt;&lt;br&gt;&lt;br&gt;Any ideas what is causing this?
&lt;br&gt;&lt;br&gt;Thanks.</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/JTable-within-JScrollPane-not-refreshing-tp25616825p25616825.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25584424</id>
	<title>Re: re[2]: How to sort rows by a column through code?</title>
	<published>2009-09-23T13:02:54Z</published>
	<updated>2009-09-23T13:02:54Z</updated>
	<author>
		<name>Holger Brands</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;there are basically two ways to integrate Glazed Lists sorting with JXTable
&lt;br&gt;as outlined here;
&lt;br&gt;&lt;a href=&quot;http://sites.google.com/site/glazedlists/documentation/swingx&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sites.google.com/site/glazedlists/documentation/swingx&lt;/a&gt;&lt;br&gt;&lt;br&gt;1.) using EventListJXTableSorting
&lt;br&gt;&lt;br&gt;with this approach, you could set your initial comparator on the SortedList.
&lt;br&gt;But this doesn't work because of bug
&lt;br&gt;&lt;a href=&quot;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=479&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://glazedlists.dev.java.net/issues/show_bug.cgi?id=479&lt;/a&gt;&lt;br&gt;You could try the latest build, which has an additional install-method
&lt;br&gt;EventListJXTableSorting#install(JXTable, SortedList, Comparator)
&lt;br&gt;which allows to pass in the initial comparator to use.
&lt;br&gt;&lt;br&gt;2.) using TableComparatorChooser
&lt;br&gt;&lt;br&gt;with this approach, you have the option to set the comparator via
&lt;br&gt;AbstractTableComparatorChooser.appendComparator(...)
&lt;br&gt;&lt;br&gt;If you use multi-column sort, you may have to call
&lt;br&gt;AbstractTableComparatorChooser.clearComparator() first,
&lt;br&gt;to clear other comparators.
&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;Holger
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks for the help but I had gone through the GL tutorial long before I
&lt;br&gt;&amp;gt; posted the thread.
&lt;br&gt;&amp;gt; It hadn't helped me a bit.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Now, I believe I have kind of found a solution for now by providing a
&lt;br&gt;&amp;gt; comparator which uses values in 1st column. And by commenting out the
&lt;br&gt;&amp;gt; following line :
&lt;br&gt;&amp;gt; //ca.odell.glazedlists.swing.EventListJXTableSorting.install(jXTable1,sortedList);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am just hoping this won't break something else.
&lt;br&gt;&amp;gt; If at all there are any developments in this regard I expect someone will
&lt;br&gt;&amp;gt; write a line or two about it here.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Kevin Day wrote:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; This should get you started: 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://sites.google.com/site/glazedlists/documentation/tutorial&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sites.google.com/site/glazedlists/documentation/tutorial&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; Be sure to understand that the sorting GL occurs in the list pipeline
&lt;br&gt;&amp;gt; &amp;gt; itself&amp;nbsp;- not in the table model. 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; There are some specifics about using GL with JXTable (I don't have them
&lt;br&gt;&amp;gt; &amp;gt; handy, but you might want to search the GL site or listserv archives for
&lt;br&gt;&amp;gt; &amp;gt; 'JXTable' and see what you find). 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; - K 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; ----------------------- Original Message ----------------------- 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;&amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; From:&amp;nbsp;kaprasi &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kaprasannagt@...&lt;/a&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; To:&amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt; 
&lt;br&gt;&amp;gt; &amp;gt; Cc:&amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; Date:&amp;nbsp;Thu, 17 Sep 2009 03:28:34 -0700 (PDT) 
&lt;br&gt;&amp;gt; &amp;gt; Subject:&amp;nbsp;Re: How to sort rows by a column through code? 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;&amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;gt; Any replies please... All I want to do is sort the jxtable by a particular
&lt;br&gt;&amp;gt; &amp;gt; column through code before user gets to see the table. Anticipating some
&lt;br&gt;&amp;gt; &amp;gt; response. Thanks. -- View this message in context:
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25488718.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25488718.html&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;gt; Sent from the GlazedLists - User mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt; &amp;gt; --------------------------------------------------------------------- To
&lt;br&gt;&amp;gt; &amp;gt; unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt; For
&lt;br&gt;&amp;gt; &amp;gt; additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; &amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; View this message in context: &lt;a href=&quot;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25505743.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25505743.html&lt;/a&gt;&lt;br&gt;&amp;gt; Sent from the GlazedLists - User mailing list archive at Nabble.com.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---------------------------------------------------------------------
&lt;br&gt;&amp;gt; To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&amp;gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;________________________________________________________________
&lt;br&gt;Neu: WEB.DE Doppel-FLAT mit Internet-Flatrate + Telefon-Flatrate
&lt;br&gt;für nur 19,99 Euro/mtl.!* &lt;a href=&quot;http://produkte.web.de/go/02/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://produkte.web.de/go/02/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25584424&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25584424.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25576647</id>
	<title>Misleading GroupingList documentation</title>
	<published>2009-09-23T05:51:32Z</published>
	<updated>2009-09-23T05:51:32Z</updated>
	<author>
		<name>Danilo Tuler-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I was tricked by GroupingList documentation.
&lt;br&gt;Maybe it could be improved.
&lt;br&gt;&lt;br&gt;It only says that &amp;quot;elements for which the Comparator returns 0 are
&lt;br&gt;guaranteed to be contained within the same group within this
&lt;br&gt;GroupingList&amp;quot;.
&lt;br&gt;&lt;br&gt;My comparator implementation returned 0 for similar elements and 1 otherwise.
&lt;br&gt;But in fact I think there must be a proper ordering of all elements,
&lt;br&gt;because if there is an element in between two similar elements, those
&lt;br&gt;two elements are not grouped.
&lt;br&gt;&lt;br&gt;Danilo
&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25576647&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
&lt;br&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25576647&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Misleading-GroupingList-documentation-tp25576647p25576647.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25505743</id>
	<title>Re: re[2]: How to sort rows by a column through code?</title>
	<published>2009-09-18T02:31:04Z</published>
	<updated>2009-09-18T02:31:04Z</updated>
	<author>
		<name>kaprasi</name>
	</author>
	<content type="html">Thanks for the help but I had gone through the GL tutorial long before I posted the thread.
&lt;br&gt;It hadn't helped me a bit.
&lt;br&gt;&lt;br&gt;Now, I believe I have kind of found a solution for now by providing a comparator which uses values in 1st column. And by commenting out the following line :
&lt;br&gt;//ca.odell.glazedlists.swing.EventListJXTableSorting.install(jXTable1,sortedList);
&lt;br&gt;&lt;br&gt;I am just hoping this won't break something else.
&lt;br&gt;If at all there are any developments in this regard I expect someone will write a line or two about it here.
&lt;br&gt;&lt;br&gt;Thanks.
&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Kevin Day wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;This should get you started: 
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&lt;a href=&quot;http://sites.google.com/site/glazedlists/documentation/tutorial&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sites.google.com/site/glazedlists/documentation/tutorial&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;Be sure to understand that the sorting GL occurs in the list pipeline itself&amp;nbsp;- not in the table model. 
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;There are some specifics about using GL with JXTable (I don't have them handy, but you might want to search the GL site or listserv archives for 'JXTable' and see what you find). 
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;- K 
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&lt;br&gt;----------------------- Original Message ----------------------- 
&lt;br&gt;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;From:&amp;nbsp;kaprasi &amp;lt;kaprasannagt@gmail.com&amp;gt; 
&lt;br&gt;To:&amp;nbsp; users@glazedlists.dev.java.net 
&lt;br&gt;Cc:&amp;nbsp; 
&lt;br&gt;Date:&amp;nbsp;Thu, 17 Sep 2009 03:28:34 -0700 (PDT) 
&lt;br&gt;Subject:&amp;nbsp;Re: How to sort rows by a column through code? 
&lt;br&gt;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;Any replies please... All I want to do is sort the jxtable by a particular column through code before user gets to see the table. Anticipating some response. Thanks. -- View this message in context: &lt;a href=&quot;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25488718.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25488718.html&lt;/a&gt;&amp;nbsp;Sent from the GlazedLists - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@glazedlists.dev.java.net For additional commands, e-mail: users-help@glazedlists.dev.java.net 
&lt;br&gt;&lt;br&gt;&lt;br&gt;---------------------------------------------------------------------
&lt;br&gt;To unsubscribe, e-mail: users-unsubscribe@glazedlists.dev.java.net
&lt;br&gt;For additional commands, e-mail: users-help@glazedlists.dev.java.net
&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25505743.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25494192</id>
	<title>re[2]: How to sort rows by a column through code?</title>
	<published>2009-09-17T08:56:18Z</published>
	<updated>2009-09-17T08:56:18Z</updated>
	<author>
		<name>Kevin Day</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;


&lt;META name=GENERATOR content=&quot;MSHTML 8.00.6001.18812&quot;&gt;&lt;/HEAD&gt;
&lt;BODY leftMargin=1 rightMargin=1 topMargin=1&gt;&lt;FONT size=2 face=Arial&gt;
&lt;DIV&gt;This should get you started:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href=&quot;http://sites.google.com/site/glazedlists/documentation/tutorial&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sites.google.com/site/glazedlists/documentation/tutorial&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Be sure to understand that the sorting GL occurs in the list pipeline itself&amp;nbsp;- not in the table model.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;There are some specifics about using GL with JXTable (I don't have them handy, but you might want to search the GL site or listserv archives for 'JXTable' and see what you find).&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;- K&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;
&lt;DIV style=&quot;FONT-FAMILY: Tahoma; FONT-SIZE: x-small&quot;&gt;
&lt;DIV&gt;----------------------- &lt;B&gt;Original Message&lt;/B&gt; -----------------------&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;From:&lt;/B&gt;&amp;nbsp;kaprasi &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25494192&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kaprasannagt@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;To:&lt;/B&gt;&amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25494192&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Cc:&lt;/B&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Date:&lt;/B&gt;&amp;nbsp;Thu, 17 Sep 2009 03:28:34 -0700 (PDT)&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Subject:&amp;nbsp;&lt;U&gt;Re: How to sort rows by a column through code?&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;FONT size=2 face=Tahoma&gt;
&lt;DIV&gt;&lt;BR&gt;Any replies please...&lt;BR&gt;All I want to do is sort the jxtable by a particular column through code&lt;BR&gt;before user gets to see the table.&lt;BR&gt;&lt;BR&gt;Anticipating some response.&lt;BR&gt;Thanks.&lt;BR&gt;-- &lt;BR&gt;View this message in context: &lt;A href=&quot;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25488718.html&quot; target=&quot;_top&quot;&gt;&lt;FONT color=#0000ff&gt;http://www.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25488718.html&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;Sent from the GlazedLists - User mailing list archive at Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;---------------------------------------------------------------------&lt;BR&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25494192&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;&lt;BR&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25494192&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/BODY&gt;&lt;/HTML&gt;


---------------------------------------------------------------------
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25494192&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25494192&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;

</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25494192.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25488718</id>
	<title>Re: How to sort rows by a column through code?</title>
	<published>2009-09-17T03:28:33Z</published>
	<updated>2009-09-17T03:28:33Z</updated>
	<author>
		<name>kaprasi</name>
	</author>
	<content type="html">Any replies please...
&lt;br&gt;All I want to do is sort the jxtable by a particular column through code before user gets to see the table.
&lt;br&gt;&lt;br&gt;Anticipating some response.
&lt;br&gt;Thanks.</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25488718.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25468103</id>
	<title>Re: re[4]: WeakReferenceProxy</title>
	<published>2009-09-16T01:30:31Z</published>
	<updated>2009-09-16T01:30:31Z</updated>
	<author>
		<name>Endre Stølsvik-8</name>
	</author>
	<content type="html">&lt;div class=&quot;gmail_quote&quot;&gt;On Sun, Sep 13, 2009 at 21:23, Kevin Day &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25468103&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;kevin@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;

&lt;div&gt;&lt;font size=&quot;2&quot; face=&quot;Arial&quot;&gt;&lt;div&gt;&lt;div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I was especially inerested in this diagram:&lt;/div&gt;&lt;div class=&quot;im&quot;&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;&lt;span style=&quot;font-family:arial&quot;&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;BL . P -w&amp;gt; SL . P -w&amp;gt; FL . P -w&amp;gt; WL . P -w&amp;gt; Calc&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family:&amp;#39;courier new&amp;#39;, monospace&quot;&gt;  &amp;lt;s-+       &amp;lt;s-+       &amp;lt;s-+       &amp;lt;s-+&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;     |          |          |          |&lt;/font&gt;&lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;Publisher ------+----------+----------/&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;/div&gt;&lt;div&gt;which implies that the downstream list doesn&amp;#39;t technically have to hold a reference to it&amp;#39;s source at all...  This would further imply that it would be possible to create an EventList implementation that would implement the proxy behavior (instead of the *listener* being the weak reference, the list itself would behave as a weak reference to it&amp;#39;s source).  I think that this is similar to what you are currently doing with your shim lists, right?  Are there advantages to this approach, vs having the downstream list hold a hard reference to the source, and only using weak references for the listeners?  It would seem that there would be some modest performance advantages to holding the hard reference - as long as there is no need to detect the need to call dispose()...&lt;/div&gt;

&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I found this hard to read - what do you mean by the first and second period?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&amp;#39;ve made two rounds of shims, where the first use finalize(), while the second use WeakReference&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I will drop the first type, instead focusing on the latter. This because finalizer is very bad for GC - the References with ReferenceQueue gives pretty much the same behaviour, is more flexible, and doesn&amp;#39;t force the GC to make two rounds for any object &amp;quot;implementing&amp;quot; it.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;NB: Note that if you &amp;quot;loose&amp;quot; a Reference, that is, that the WeakReference itself isn&amp;#39;t any longer referenced, it will not upon garbage collection be enqueued to the ReferenceQueue as one might expect. So, only when you actually get a &amp;quot;tearing&amp;quot; of the referent, that is, the referent is nulled WHILE the Reference itself still is referenced, will you get notified through the ReferenceQueue. If the Reference is not referenced anymore, and is GC&amp;#39;ed while the referent isn&amp;#39;t, or both the Reference and the referent is taken out on the same GC cycle, no one will notice! This isn&amp;#39;t necessarily that obvious when you work with them, so watch out - or you&amp;#39;ll loose the entire point. Object.finalize() does NOT behave as such, as any object implementing finalize() will &lt;i&gt;itself&lt;/i&gt; be notified about impending garbage collection.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;What I do now, is that I just have a flag indicating whether dispose has been invoked, and if not, upon handling through the ReferenceQueue, I dispose it, and log a hefty warning along with the &amp;quot;Instantiation Stacktrace&amp;quot; which is stored on construction (typically if log.isDebugEnabled()). It is thus meant to catch errors, not as a fixer.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Currently&lt;/b&gt;, I believe the dispose() should be recursive. (I have re-implemented several EventLists to let dispose be recursive, as they as mentioned earlier are final and/or have private internals where I needed to override dispose functionality)&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;If one at some level doesn&amp;#39;t want such recursion, one could wrap this with a DisposeDontRecurseList.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I also think that it should be possible to register any WeakReferenceProxy with a ReferenceQueue. As I haven&amp;#39;t thought of any better solutions, a suggestion is that GlazedLists has a static method whereby such a ReferenceQueue could be set statically. It could be held weakly.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;PS: Nice to know that I am not totally alone with these problems, Kevin! :-)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Kind regards,&lt;/div&gt;&lt;div&gt;Endre.&lt;/div&gt;&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/WeakReferenceProxy-tp25299875p25468103.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25454154</id>
	<title>How to sort rows by a column through code?</title>
	<published>2009-09-15T06:34:32Z</published>
	<updated>2009-09-15T06:34:32Z</updated>
	<author>
		<name>kaprasi</name>
	</author>
	<content type="html">Hi all,
&lt;br&gt;&lt;br&gt;I am supposed to add some more to the existing code that makes use of GL and JXTable.
&lt;br&gt;I must say they are like, made for each other.
&lt;br&gt;&lt;br&gt;When user double clicks on a column-header the rows in the table get sorted in ascending / descending order. And when user (single) clicks on a column header the rows of that column are sorted.
&lt;br&gt;Everything works just great.
&lt;br&gt;&lt;br&gt;Now, all I need to do is sort the rows in the table by first column (as the primary sort) and then by the second column (as the secondary sort) through code before user gets to see the table. (Default sorting to serve the user better..)
&lt;br&gt;&lt;br&gt;So I believe I have to use some sort keys or something like this :
&lt;br&gt;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting&lt;/a&gt;&amp;nbsp;?
&lt;br&gt;I also searched nabble for some solutions and stumbled upon the following thread :
&lt;br&gt;&lt;a href=&quot;http://www.nabble.com/EventListJXTableSorting-td11801610.html#a23574421&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/EventListJXTableSorting-td11801610.html#a23574421&lt;/a&gt;&lt;br&gt;&lt;br&gt;I was hoping this would be straight forward and easy.. But haven't found a solution yet..
&lt;br&gt;I'd really appreciate if someone could provide me with some hints / solution or point me to the right direction.
&lt;br&gt;&lt;br&gt;Thanks.</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-sort-rows-by-a-column-through-code--tp25454154p25454154.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25444612</id>
	<title>Re: Odd behavior with CollectionList</title>
	<published>2009-09-14T15:11:08Z</published>
	<updated>2009-09-14T15:11:08Z</updated>
	<author>
		<name>Sam Berlin</name>
	</author>
	<content type="html">Also check out: &lt;a href=&quot;http://www.nabble.com/List-Pipelines%2C-Concurrent-Events%2C-listChanged...-and-ObservableList-td24421891.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/List-Pipelines%2C-Concurrent-Events%2C-listChanged...-and-ObservableList-td24421891.html&lt;/a&gt; .  We had a similar kind of issue (although changing the list type wasn&amp;#39;t an option, so I didn&amp;#39;t try it).  Maybe all problems come from the same cause?&lt;br&gt;
&lt;br&gt;Sam&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/9/14 Endre Stølsvik &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25444612&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;java@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;
&lt;div&gt;Check out this message. You /might/ be having a similar problem. I don&amp;#39;t know the reason for the difference I mention.&lt;/div&gt;&lt;div&gt;  &lt;a href=&quot;http://www.nabble.com/forum/ViewPost.jtp?post=23227027&amp;amp;framed=y&quot; target=&quot;_blank&quot;&gt;http://www.nabble.com/forum/ViewPost.jtp?post=23227027&amp;amp;framed=y&lt;/a&gt;&lt;/div&gt;


&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;font color=&quot;#888888&quot;&gt;&lt;div&gt;Endre.&lt;/div&gt;&lt;/font&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Fri, Sep 11, 2009 at 17:26, Jeremy Ford &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25444612&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;caius1@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;&quot;&gt;





&lt;div&gt;
I am seeing an issue when using CollectionList.  I have a very complicated hierarchy of EventLists.  I am attempting to insert in the middle a CollectionList which translates a pojo A into one or more A pojos based on certain criteria.  After adding the CollectionList, it seems like I no longer receive list events in listeners that are attached farther down the list hierarchy.   As a debug measure, I have removed the CollectionList and I have also replaced it with a FilterList and FunctionList.  Everything seems to work correctly when inserting the other list types in my hierarchy.&lt;br&gt;


&lt;br&gt;Due to the complicated nature of the hierarchy, I do not have a test case that will replicate the issue.  I was hoping that maybe someone else has either seen this issue or knows of something that I may be doing wrong.&lt;br&gt;


&lt;br&gt;Thanks,&lt;br&gt;Jeremy ford&lt;br&gt;&lt;br&gt;&lt;hr&gt;With Windows Live, you can organize, edit, and share your photos. &lt;a href=&quot;http://www.windowslive.com/Desktop/PhotoGallery&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Click here.&lt;/a&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Odd-behavior-with-CollectionList-tp25403107p25444612.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25440277</id>
	<title>Re: Odd behavior with CollectionList</title>
	<published>2009-09-14T10:45:43Z</published>
	<updated>2009-09-14T10:45:43Z</updated>
	<author>
		<name>Endre Stølsvik-8</name>
	</author>
	<content type="html">&lt;div&gt;Check out this message. You /might/ be having a similar problem. I don&amp;#39;t know the reason for the difference I mention.&lt;/div&gt;&lt;div&gt;  &lt;a href=&quot;http://www.nabble.com/forum/ViewPost.jtp?post=23227027&amp;amp;framed=y&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/forum/ViewPost.jtp?post=23227027&amp;amp;framed=y&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Endre.&lt;/div&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Fri, Sep 11, 2009 at 17:26, Jeremy Ford &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25440277&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;caius1@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;





&lt;div&gt;
I am seeing an issue when using CollectionList.  I have a very complicated hierarchy of EventLists.  I am attempting to insert in the middle a CollectionList which translates a pojo A into one or more A pojos based on certain criteria.  After adding the CollectionList, it seems like I no longer receive list events in listeners that are attached farther down the list hierarchy.   As a debug measure, I have removed the CollectionList and I have also replaced it with a FilterList and FunctionList.  Everything seems to work correctly when inserting the other list types in my hierarchy.&lt;br&gt;

&lt;br&gt;Due to the complicated nature of the hierarchy, I do not have a test case that will replicate the issue.  I was hoping that maybe someone else has either seen this issue or knows of something that I may be doing wrong.&lt;br&gt;

&lt;br&gt;Thanks,&lt;br&gt;Jeremy ford&lt;br&gt;&lt;br&gt;&lt;hr&gt;With Windows Live, you can organize, edit, and share your photos. &lt;a href=&quot;http://www.windowslive.com/Desktop/PhotoGallery&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Click here.&lt;/a&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Odd-behavior-with-CollectionList-tp25403107p25440277.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25426251</id>
	<title>re[4]: WeakReferenceProxy</title>
	<published>2009-09-13T12:23:10Z</published>
	<updated>2009-09-13T12:23:10Z</updated>
	<author>
		<name>Kevin Day</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META name=GENERATOR content=&quot;MSHTML 8.00.6001.18812&quot;&gt;&lt;/HEAD&gt;
&lt;BODY leftMargin=1 rightMargin=1 topMargin=1&gt;&lt;FONT size=2 face=Arial&gt;
&lt;DIV&gt;Endre - &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;This is a very good explanation of what is going on - thanks for putting it together (especially the ASCII art!).&amp;nbsp; &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;I was especially inerested in this diagram:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial&quot; class=Apple-style-span&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;BL . P -w&amp;gt; SL . P -w&amp;gt;&amp;nbsp;FL . P -w&amp;gt;&amp;nbsp;WL . P -w&amp;gt; Calc&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'courier new', monospace&quot; class=Apple-style-span&gt;&amp;nbsp;&amp;nbsp;&amp;lt;s-+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;s-+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;s-+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;s-+&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;/FONT&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;Publisher ------+----------+----------/&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;which implies that the downstream list doesn't technically have to hold a reference to it's source at all...&amp;nbsp; This would further imply that it would be possible to create an EventList implementation that would implement the proxy behavior (instead of the *listener* being the weak reference, the list itself would behave as a weak reference to it's source).&amp;nbsp; I think that this is similar to what you are currently doing with your shim lists, right?&amp;nbsp; Are there advantages to this approach, vs having the downstream list hold a hard reference to the source, and only using weak references for the listeners?&amp;nbsp; It would seem that there would be some modest performance advantages to holding the hard reference - as long as there is no need to detect the need to call dispose()...&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;To answer your question about how we handle this now, it's a hassle.&amp;nbsp; This is one reason that I'm so interested in the discussion.&amp;nbsp; For simple applications where down stream event list pipelines don't come and go on a regular basis, the current implementation is ok - but as apps increase in complexity (and our app is well into that territory), this becomes a big administrative problem.&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;So, is this all really as simple as just using weak reference proxy listeners in each list implementation?&amp;nbsp; How important is dispose() then (even as an internal implementation detail)?&amp;nbsp; I could certainly see the argument that it should be removed from the EventList interface.&amp;nbsp; Can this be pushed further and just say that all entries registered with the publisher are treated as weak reference proxies (i.e. this would be an internal detail of the publisher, or any other GL class that holds listeners)?&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;I keep coming back to saying that we have to look at what is actually going on in dispose() on some of these lists to get a feel for what the implications here would be.&amp;nbsp; For example, FilterList uses dispose() to releast listeners from matcher editors, and remove references to the matchereditor and matcher (in addition to removing the listener from the publisher).&amp;nbsp; If the FilterList was registered as a weak reference to the MatcherEditor, would things stop working?&amp;nbsp; You would think that, in the general case, users would have to hold a reference to the MatcherEditor to make it do anything useful, so maybe this is OK?&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;CollectionList is another list that has fairly complex dispose() behavior (clearing related listeners, etc...).&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;It would really help if we could get some more counter examples showing why this sort of thing *wouldn't* work.&amp;nbsp; The Calculation-with-reference-not-held is one case, but one that I personally could live with.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Are there other solid use cases that anyone else can suggest?&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;- K&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;
&lt;DIV style=&quot;FONT-FAMILY: Tahoma; FONT-SIZE: x-small&quot;&gt;
&lt;DIV&gt;----------------------- &lt;B&gt;Original Message&lt;/B&gt; -----------------------&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;From:&lt;/B&gt;&amp;nbsp;Endre &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;St&amp;#195;&amp;#184;lsvik&lt;java@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;To:&lt;/B&gt;&amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Cc:&lt;/B&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Date:&lt;/B&gt;&amp;nbsp;Wed, 9 Sep 2009 03:46:18 +0200&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Subject:&amp;nbsp;&lt;U&gt;Re: re[2]: WeakReferenceProxy&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=gmail_quote&gt;
&lt;BLOCKQUOTE style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=gmail_quote&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Arial&gt;
&lt;DIV&gt;Some thoughts:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;If a list in the library itself doesn't hold references that would prevent GC from collecting where it shouldn't, it seems like it should be easy to add those references to the specific&amp;nbsp;list implementations.&amp;nbsp; I know that this is not trivial - there are often lots of crazy intermediate lists generated in some of the more complex systems - but is this really as hard as we think?&amp;nbsp; Perhaps it would be easier with the ability to obtain deleted element references?&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Which EventList implementation would this be?&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;As GL stands now, only BasicEventList, DebugEventList and PersistentEventList directly implement EventList. All of these I believe are meant as &quot;roots&quot; (I don't know PersistentEL, though). The rest actually inherits from TransformedList - which has the source field.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;However, this might be a moot point - read on!&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;SPAN style=&quot;FONT-FAMILY: Arial&quot; class=Apple-style-span&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=gmail_quote&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Arial&gt;
&lt;DIV&gt;A bigger issue is GL users who have code constructed around this behavior.&amp;nbsp; To give a concrete example of where problems could occur, consider a Calculation object that accepts a FilteredList as it's source.&amp;nbsp; If the calculation does not hold a hard reference to it's source (which it very well might not do), and the user does not hold a reference of the FilteredList (it is an intermediate object, after all), then the calculation would just silently stop receiving events.&amp;nbsp; Not good (these sorts of things are just as hard to track down and fix as the possibility for a resource leak we have now!).&lt;BR&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;This argument was pretty good - an extra requirement has apparently been introduced by having WeakReferenceProxies all over: Any listener must hold a reference to its source.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;However, magically, I believe it is not (that big of) a problem anyway - and the savior here is the publisher.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Lets make a longer chain, so that there are more middle nodes.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;BL -s-&amp;gt; SL -s&amp;gt; FL -s&amp;gt; WL -s&amp;gt; Calc&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Introduce proxies&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;BL -s&amp;gt; P -w&amp;gt; SL -s&amp;gt;&amp;nbsp;P -w&amp;gt;&amp;nbsp;FL -s&amp;gt;&amp;nbsp;P -w&amp;gt;&amp;nbsp;WL -s&amp;gt; P -w&amp;gt; Calc&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;s--------- &amp;nbsp;&amp;lt;s--------- &amp;nbsp;&amp;lt;s---------&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;s-- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;s-- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;s--&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial&quot; class=Apple-style-span&gt;
&lt;DIV&gt;The Calc doesn't hold a strong reference backwards. At this point, your argument holds: The WhateverList (WL) has no strong reference to it, nor does anything else up to BasicList (BL - which is held by the static), even though Calc is strongly held by the thread in question. The entire structure would thus be torn down, leaving you with the BasicList and Calc without any connection in between.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;However, if we now make it more realistic&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial&quot; class=Apple-style-span&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;BL . P -w&amp;gt; SL . P -w&amp;gt;&amp;nbsp;FL . P -w&amp;gt;&amp;nbsp;WL . P -w&amp;gt; Calc&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;s-+----- &amp;nbsp;&amp;lt;s-+----- &amp;nbsp;&amp;lt;s-+----- &amp;nbsp; &amp;nbsp; |&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;s-+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;s-+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;s-+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;s-+&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;/FONT&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;Publisher ------+----------+----------/&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial, monospace&quot; class=Apple-style-span&gt;
&lt;DIV&gt;What we see, is that even though Calc doesn't have a strong reference backwards, the publisher, which the BasicList references (and all intermediate lists share, but that is not the point), holds a strong reference to each of the proxies, which hold a strong reference back to the list it proxies. As long as the Calc object is strongly referenced from somewhere, the WeakReferenceProxy's referent will not be nulled. The whole structure thus stands.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;When the Calc object goes out of scope (isn't referenced anymore), it will be GC'ed, and the referent cleared. The publisher will notice this on the next fired event, and drop that proxy out of the system (deregister it (from the publisher), and actually nulls the source reference, an operation which isn't actually needed in this case). At this point, WL is not held by any strong reference, and will eventually be GC'ed, and hence that list's proxy's referent will be cleared. On the next fire, that one will be cleared - and so on. So, after a sequence of a GC then an event fired, repeated four times, the BasicEventList would be alone.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;In my last email, I had this severe nagging about such a &quot;staggering GC backwards&quot; (and that was why i wrote the section above starting with &quot;Back to the above argument&quot;), and now got a full-blown dejavu..! I had however apparently forgotten the complete argument.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial, monospace&quot; class=Apple-style-span&gt;&lt;BR&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;arial, sans-serif&quot;&gt;&lt;SPAN style=&quot;BORDER-COLLAPSE: collapse&quot; class=Apple-style-span&gt;See, even if one drops the reference backwards on the intermediate lists:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;arial, sans-serif&quot;&gt;&lt;SPAN style=&quot;BORDER-COLLAPSE: collapse&quot; class=Apple-style-span&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial&quot; class=Apple-style-span&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial&quot; class=Apple-style-span&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;BL . P -w&amp;gt; SL . P -w&amp;gt;&amp;nbsp;FL . P -w&amp;gt;&amp;nbsp;WL . P -w&amp;gt; Calc&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'courier new', monospace&quot; class=Apple-style-span&gt;&amp;nbsp;&amp;nbsp;&amp;lt;s-+ &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;s-+&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;s-+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;s-+&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; | &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&lt;/FONT&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;Publisher ------+----------+----------/&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;'courier new', monospace&quot;&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: arial, monospace&quot; class=Apple-style-span&gt;
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=&quot;arial, sans-serif&quot;&gt;&lt;SPAN style=&quot;BORDER-COLLAPSE: collapse&quot; class=Apple-style-span&gt;.. the entire argument still seems to stand.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/SPAN&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;HOWEVER&lt;/B&gt;, if the Calc-object itself e.g. have some different event firing system outside of GlazedLists, whereby some new object X hooks itself up as a listener onto Calc's own event system, &lt;B&gt;without X keeping a reference to Calc&lt;/B&gt;,&amp;nbsp;one would be in trouble: Calc would be completely unreferenced and thus GCable, and the chain in front of it would tumble down. That would probably be very hard to track down. One can argue that this would hold for ANY object that one just adds oneself as a reference to without holding a reference back to - it will be GC'ed. Problem is that one could quite possibly expect &quot;an active object&quot; that fires events and all, to obviously somehow be referenced somewhere! Which is the case - only it is through a WeakReference.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;The discussion should probably revolve around what is the most common problem - what would benefit GL users the most.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;One question I sit with, though, is how you guys handle the problem now? With such a chain of intermediate lists that you have not got a reference to (you only reference the tip)? Neither dispose() nor removeListEventListener() recurse.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;That is my reason for needing to extend the classes - which I couldn't, so I had to copy them.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Have this ever been tried implemented?&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;(How I personally handle the problem now is by doing these &quot;reimplementations&quot; to implement recursion, AND having some shim &quot;trackers&quot; that I dish out instead of the actual list instance. These are referenced using WeakReferences that I register with a ReferenceQueue. When the ref-cleaner thread checks in on such a shim (because it was GCed), it checks if the &quot;user&quot; has disposed the list in question. If it hasn't, I do it then - and log a angry error log message, with an &quot;InstantiationStackTrace&quot; for easy debugging!)&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;(Personally, I currently lean towards that dispose() and/or removeListEventListener() should recurse. If one at a certain stage of the pipeline didn't want the recursion to happen, one could insert a DontRecurseDisposeList shim that .. did as its name implies)&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Endre.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;BLOCKQUOTE style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=gmail_quote&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Arial&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV class=h5&gt;
&lt;DIV style=&quot;FONT-FAMILY: Tahoma; FONT-SIZE: x-small&quot;&gt;
&lt;DIV&gt;----------------------- &lt;B&gt;Original Message&lt;/B&gt; -----------------------&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;From:&lt;/B&gt;&amp;nbsp;Endre &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;St&amp;#195;&amp;#184;lsvik%3Cjava@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;To:&lt;/B&gt;&amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users@...&lt;/a&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Cc:&lt;/B&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Date:&lt;/B&gt;&amp;nbsp;Wed, 9 Sep 2009 00:45:01 +0200&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Subject:&amp;nbsp;&lt;U&gt;Re: WeakReferenceProxy&lt;/U&gt;&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;[dispose() has not been a part of the EventList interface for that much time. That is not the problem here, though, IMO]&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;The &quot;leaf logic&quot; is not necessary if I have understood this correctly. I believe that this has been &quot;touched into&quot; before on the list.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Consider:&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;BasicEventList -&amp;gt; SortedList -&amp;gt; FilteredList&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;The BasicEventList is strongly held (say, for the sake of argument, as a static), as is the FilteredList (again, for the sake of the argument, as a stack variable). The SortedList is just a intermediary, which hasn't got any references to it, except that it has registered with BasicEventList as listener, which thus strongly holds it.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;A problem is that if we just let go of the FilteredList, nothing happens - it is still strongly referenced. The API of GL doesn't help us either - there is no way to get at the FilteredList anymore, and it is utterly leaked. (Both &quot;memory leaked&quot;, but maybe more annoyingly, also &quot;processing leaked&quot;, as all events still will be sent to it)&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;A perceived problem of introducing WeakReferenceProxies between the lists, is that SortedList would be GC'ed out of existence as nothing would reference it strongly, thus leaving the FilteredList hanging outside the event stream. This is not so, I believe:&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Reasoning: All current lists except the BasicEventList, which obviously acts as &quot;roots&quot; for these chains, holds a reference to its _source_ (since they all extend TransformedList).&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Thus, we really have this situation&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=&quot;'courier new', monospace&quot;&gt;BasicEventList -&amp;gt; SortedList -&amp;gt; FilteredList&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;When we introduce the WeakReferenceProxies, we end up like this (a WeakReferenceProxy also has a link to its source)&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;FONT face=&quot;'courier new', monospace&quot;&gt;BasicEventList -strong-&amp;gt; WeakRefProxy -weak-&amp;gt; SortedList -strong-&amp;gt; WeakRefProxy -weak-&amp;gt; FilteredList&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;-strong---------------------- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-strong----------------------&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=&quot;'courier new', monospace&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;-strong- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;-strong-&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;We can for now basically ignore the fact that it isn't like this at all: It is not the lists that hold references to their listeners. The list holds a reference to its publisher, which holds a reference to ALL the listeners. But (I believe) it at this point boils down to the same.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;If we let go of the FilteredList, there is nothing that holds it strongly anymore. NEITHER is there for SortedList. They would be free to be GC'ed.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;When they are GC'ed, their referent in the WeakReferenceProxy is also cleared - thats how [Soft|Weak]References work.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;When anything that triggers the WeakReferenceProxy purging happens (see below), these proxies are noticed (there is special handling for them in the publisher), and it will be noticed that they are cleared. Therefore, they are deregistered as listeners to their source (and the source field is nulled), and then they're also GCable.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Thus, we are now left with only the BasicEventList - just as we would want.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;(The &quot;node logic&quot; of the publisher, which I still haven't gotten a proper answer to how really works, would maybe have to be extended to handle the WeakReferenceProxies also when stacking up the listening order (the &quot;if a listener is also a list&quot;-part: If that test fails, it should also check whether it is a WeakReferenceProxy, in which case, it should check the referent whether it is a list instead).&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=gmail_quote&gt;
&lt;BLOCKQUOTE style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=gmail_quote&gt;The conditions under which the WeakReferenceProxy are cleaned up are documented in the class doc:&lt;BR&gt;&lt;PRE&gt;&lt;SPAN&gt;&amp;lt;p&amp;gt;Specifically, the proxy stops listening to &amp;lt;i&amp;gt;L&amp;lt;/i&amp;gt; the&lt;BR&gt;

 * &amp;lt;strong&amp;gt;next&amp;lt;/strong&amp;gt; time any of the following occurs:&lt;BR&gt; *&lt;BR&gt; * &amp;lt;ul&amp;gt;&lt;BR&gt; *   &amp;lt;li&amp;gt; another ListEventListener is registered with the same EventList&lt;BR&gt;


 *   &amp;lt;li&amp;gt; another ListEventListener is deregistered with the same EventList&lt;BR&gt; *   &amp;lt;li&amp;gt; another ListEvent is broadcast for the same EventList&lt;BR&gt; * &amp;lt;/ul&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;It rests on the publisher. Thus, if you register or deregister any listener on &lt;I&gt;any&lt;/I&gt; list that has the same publisher, all cleared WeakReferenceProxies will be purged.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;The same goes for sending an event: If you make a change to any list whose ListEvent ends up going through &lt;I&gt;any&lt;/I&gt; dead WeakReferenceProxy (on any list with the same publisher), the proxy listener will deregister itself, and hence trig the above mentioned situation.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Back to the above argument: The fact that the ASCII-art doesn't really represent the situation doesn't destroy the argument. The FilteredList is still GC'ed, and its proxy listener referent it cleared. This would happen at the same time, or later, or even before, to the SortedList's proxy listener. But, the WeakReferenceProxies themselves are actually strongly referenced still, by the fact that the BasicEventList (which is referenced through a static, remember) holds a reference to the publisher, which holds all the listeners, and thus the proxies. But, the clearing-logic still kicks in: Their referent is cleared, and thus they will be deregistered and out of the system, not incurring neither mem nor processing leaks.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Coincidentally, I've just these latter days used hours - actually, a full day - on hunting down just such a retention-bug due to WeakReferenceProxies and the publisher.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;Here's a static method I ended up with to generically be able to &quot;trig&quot; a manual purging of all WeakReferenceProxies on a publisher, with some JavaDoc to explain (helping&amp;nbsp;&lt;I&gt;me&lt;/I&gt; to remember, at least!).&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * &amp;lt;b&amp;gt;&amp;lt;font color=&quot;red&quot;&amp;gt;Special method for GlazedLists memory leak hunting (using a profiler)&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;: What&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * happens, is that several GlazedLists elements seem to be hanging for no good reason. It turns out that this is a&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * problem caused by two &quot;crashing&quot; aspects during testing: When using {@link Assert#assertEquals(Object, Object)}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * and sticking (typically) some {@link List} as expected and an {@link EventList} as actual, the JUnit-framework&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * typically ends up invoking {@link AbstractList#equals(Object)} (&amp;lt;code&amp;gt;expected.equals(actual)&amp;lt;/code&amp;gt;) which again&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * employs the {@link List#listIterator() ListIterators} of both lists for comparison. The ListIterator is in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * GlazedLists an active iterator, employing a {@link ListEventListener} to listen on the {@link EventList}. Since&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * there is no dispose logic on the iterator, it is implemented using a {@link WeakReferenceProxy}, which is a&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * {@link ListEventListener} proxy implemented using a {@link WeakReference} which one registers on the list one&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * want to listen to. It lets the actual listener become GCable when it is ditched from the universe (it is the&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * WeakReference referent). This is surely handy for the {@link ListIterator} mentioned - when the code is finished&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * with the iterator, it goes out of scope, and since it then is only weakly referenced, it will become GC'ed, and&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * the referent in the WeakReference is cleared (nulled).&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * &amp;lt;p /&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * The WeakReferenceProxy is registered with the source list, and the source reference is contained within the&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * WeakRefrenceProxy. However, listeners are not registered with the list itself, but instead on the publisher for&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * the list. Thus we now end up with a strong reference to the source by way of any other list having the same&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * publisher. (Each EventList holds a reference to some publisher. Lists that want to work together needs the same&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * publisher. Thus, if any list is retained with this publisher, the source list in question will also be retained).&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * &amp;lt;p /&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * The publisher is cleaned of these weak proxies lazily (it is not possible to attach any {@link ReferenceQueue} to&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * them upon creation), and the cleaning can from the outside be triggered by adding or removing a ListEventListener&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * to any list that the publisher handles: When doing such add or remove, the entire set of listeners is traversed -&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * and in this process, any WeakReferenceProxies that is stumbled across that has a null referent is dropped.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * &amp;lt;p /&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * The cleaning can however also be done by making &amp;lt;b&amp;gt;any&amp;lt;/b&amp;gt; list change on &amp;lt;b&amp;gt;any&amp;lt;/b&amp;gt; list that results in a&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * {@link ListEvent} being &amp;lt;i&amp;gt;fired through&amp;lt;/i&amp;gt; &amp;lt;b&amp;gt;any&amp;lt;/b&amp;gt; cleared {@link WeakReferenceProxy} in the&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * publisher-system. This because the proxy (obviously) has to check whether the referent is cleared, in which case&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * it also deregisters itself from the source (which it as mentioned carries a reference to), which triggers the&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * above mentioned process, thus removing &amp;lt;b&amp;gt;all&amp;lt;/b&amp;gt; cleared WeakReferenceProxies in this publisher. Finally it&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * nulls source, which I actually believe thus happens twice for the ONE proxy that starts the process. Note though&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * that this isn't as certain - if you don't quite know how to be sure that you ensure an event is fired through&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * such a proxy, you will have to do some change to all lists. Instead, one only have to do one change to the set of&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * ListEventListeners registered with the publisher to be ensured of clearing.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * &amp;lt;p /&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * &amp;lt;b&amp;gt;How this method works:&amp;lt;/b&amp;gt; This method first GC's to have all WeakReferences cleared (the referent is nulled,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * the referent being the ListEventListener that should get the event). It then then makes a dummy&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * {@link BasicEventList} &amp;lt;i&amp;gt;using the supplied {@link ListEventPublisher}&amp;lt;/i&amp;gt;, makes a dummy&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * {@link ListEventListener}, then adds and remove the latter on the former. This should (and apparently does!)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * ensure that these {@link WeakReferenceProxy}s are removed, and hence that the &amp;lt;i&amp;gt;source&amp;lt;/i&amp;gt; lists of these&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * proxies become GCable.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void cleanListEventPublisherForWeakReferenceProxies(ListEventPublisher publisher) {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.gc();&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread.sleep(500);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch (InterruptedException e) {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread.currentThread().interrupt();&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;EventList&amp;lt;?&amp;gt; dummyList = new BasicEventList&amp;lt;Object&amp;gt;(publisher, LockFactory.DEFAULT.createReadWriteLock());&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ListEventListener&amp;lt;Object&amp;gt; dummyListener = new ListEventListener&amp;lt;Object&amp;gt;() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;@Override&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void listChanged(@SuppressWarnings (&quot;unused&quot;) ListEvent&amp;lt;Object&amp;gt; listChanges) {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* no-op */&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dummyList.addListEventListener(dummyListener);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dummyList.removeListEventListener(dummyListener);&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;BLOCKQUOTE style=&quot;BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex&quot; class=gmail_quote&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;FONT color=#888888&gt;James&lt;/FONT&gt; 
&lt;DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;BR&gt;
&lt;DIV class=gmail_quote&gt;On Fri, Sep 4, 2009 at 11:58 AM, Bruce Alspaugh &lt;SPAN dir=ltr&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;compulinkltd@...&lt;/a&gt;&amp;gt;&lt;/SPAN&gt; wrote:&lt;BR&gt;
&lt;BLOCKQUOTE style=&quot;BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex&quot; class=gmail_quote&gt;After glancing at the JavaDoc for GlazedLists.weakReferenceProxy(EventList&amp;lt;E&amp;gt; source, ListEventListener&amp;lt;E&amp;gt; target), I have a few questions:&lt;BR&gt;&lt;BR&gt;Would it have been possible to eliminate the need for the EventList.dispose() methods if EventList implementations registered weakReferenceProxys on their upstream source lists?&lt;BR&gt;&lt;BR&gt;How does the weakReferenceProxy receive its notification to remove itself from the source? &amp;nbsp;Does it use some sort of background thread to check a java.lang.ref.ReferenceQueue&amp;lt;T&amp;gt;?&lt;BR&gt;&lt;BR&gt;Bruce&lt;BR&gt;&lt;BR&gt;---------------------------------------------------------------------&lt;BR&gt;To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;&lt;BR&gt;For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;&lt;BR&gt;&lt;BR&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;--------------------------------------------------------------------- To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt; For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt; &lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;


---------------------------------------------------------------------
To unsubscribe, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-unsubscribe@...&lt;/a&gt;
For additional commands, e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25426251&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;users-help@...&lt;/a&gt;

</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/WeakReferenceProxy-tp25299875p25426251.html" />
</entry>

</feed>
