/* * Copyright (C) 2009 Quadduc <quadduc@gmail.com> * * This file is part of LateralGM. * LateralGM is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package org.lateralgm.ui.swing.propertylink; import javax.swing.JList; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.lateralgm.util.PropertyLink; import org.lateralgm.util.PropertyMap; import org.lateralgm.util.PropertyMap.PropertyUpdateEvent; public class ListLink<K extends Enum<K>, V> extends PropertyLink<K,V> implements ListSelectionListener { public final JList<?> list; public ListLink(JList<?> l, PropertyMap<K> m, K k) { super(m,k); list = l; reset(); list.addListSelectionListener(this); } @Override protected void setComponent(Object v) { list.setSelectedValue(v,true); } @Override public void remove() { super.remove(); list.removeListSelectionListener(this); } @Override public void updated(PropertyUpdateEvent<K> e) { // TODO: Should have a converter interface like ComboBoxLink editComponentIfChanged((V)list.getSelectedValue()); } public void valueChanged(ListSelectionEvent e) { Object v = list.getSelectedValue(); if (v == null ? map.get(key) == null : v.equals(map.get(key))) return; editProperty(v); } }