summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/qt/QtListPeer.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/java/awt/peer/qt/QtListPeer.java')
-rw-r--r--gnu/java/awt/peer/qt/QtListPeer.java58
1 files changed, 54 insertions, 4 deletions
diff --git a/gnu/java/awt/peer/qt/QtListPeer.java b/gnu/java/awt/peer/qt/QtListPeer.java
index 0ea00ca4c..b1148ae9e 100644
--- a/gnu/java/awt/peer/qt/QtListPeer.java
+++ b/gnu/java/awt/peer/qt/QtListPeer.java
@@ -39,6 +39,8 @@ package gnu.java.awt.peer.qt;
import java.awt.Dimension;
import java.awt.List;
+import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
import java.awt.peer.ListPeer;
public class QtListPeer extends QtComponentPeer implements ListPeer
@@ -54,13 +56,55 @@ public class QtListPeer extends QtComponentPeer implements ListPeer
{
super.setup();
List o = (List)owner;
- String[] items = o.getItems();
+ // Multiple selection
setMultipleMode(o.isMultipleMode());
+ // Add initial list items.
+ String[] items = o.getItems();
for (int i = 0; i < items.length; i++)
add(items[i], i);
+
+ // Initial selections.
int[] selected = o.getSelectedIndexes();
for (int i = 0; i < selected.length; i++)
select(selected[i]);
+
+ // If no initial selection, use 0.
+ if(selected.length == 0 && items.length > 0)
+ select( 0 );
+ }
+
+ private boolean ignoreNextSelect = false;
+
+ /**
+ * Called back when a row is selected. -1 if no row is selected.
+ */
+ private void fireChoice( int index )
+ {
+ ignoreNextSelect = true;
+ if( index == -1)
+ ((List)owner).deselect( ((List)owner).getSelectedIndex() );
+ else
+ {
+ ((List)owner).select( index );
+ ItemEvent e = new ItemEvent((List)owner,
+ ItemEvent.ITEM_STATE_CHANGED,
+ ""+index,
+ ItemEvent.SELECTED);
+ toolkit.eventQueue.postEvent(e);
+ }
+ }
+
+ /**
+ * Called back when an item is double-clicked.
+ */
+ private void itemDoubleClicked( int index, int modifiers )
+ {
+ ActionEvent e = new ActionEvent(owner,
+ ActionEvent.ACTION_PERFORMED,
+ ((List)owner).getItem( index ),
+ System.currentTimeMillis(),
+ modifiers);
+ toolkit.eventQueue.postEvent(e);
}
private native void select(int index, boolean selected);
@@ -85,8 +129,11 @@ public class QtListPeer extends QtComponentPeer implements ListPeer
public native void delItems(int start_index, int end_index);
public void deselect(int index)
- {
- select(index, false);
+ {
+ if( ignoreNextSelect == true )
+ ignoreNextSelect = false;
+ else
+ select(index, false);
}
public native int[] getSelectedIndexes();
@@ -110,7 +157,10 @@ public class QtListPeer extends QtComponentPeer implements ListPeer
public void select(int index)
{
- select(index, true);
+ if( ignoreNextSelect == true )
+ ignoreNextSelect = false;
+ else
+ select(index, true);
}
/**