KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > specifier > components > DjListBox


1 /*
2  * Copyright (c) 2001-2005 by Genimen BV (www.genimen.com) All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification, is permitted
5  * provided that the following conditions are met:
6  * - Redistributions of source code must retain the above copyright notice, this list of conditions
7  * and the following disclaimer.
8  * - Redistributions in binary form must reproduce the above copyright notice, this list of
9  * conditions and the following disclaimer in the documentation and/or other materials
10  * provided with the distribution.
11  * - All advertising materials mentioning features or use of this software must display the
12  * following acknowledgment: "This product includes Djeneric."
13  * - Products derived from this software may not be called "Djeneric" nor may
14  * "Djeneric" appear in their names without prior written permission of Genimen BV.
15  * - Redistributions of any form whatsoever must retain the following acknowledgment: "This
16  * product includes Djeneric."
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL GENIMEN BV, DJENERIC.ORG,
22  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.genimen.djeneric.tools.specifier.components;
31
32 import javax.swing.DefaultComboBoxModel JavaDoc;
33 import javax.swing.JComponent JavaDoc;
34 import javax.swing.JList JavaDoc;
35 import javax.swing.ListModel JavaDoc;
36 import javax.swing.event.ListSelectionEvent JavaDoc;
37 import javax.swing.event.ListSelectionListener JavaDoc;
38
39 import com.genimen.djeneric.repository.DjDomainValue;
40 import com.genimen.djeneric.repository.exceptions.DjenericException;
41 import com.genimen.djeneric.tools.specifier.interfaces.ObjectViewer;
42 import com.genimen.djeneric.util.DjLogger;
43
44 public class DjListBox extends JList JavaDoc implements DjBindable, ListSelectionListener JavaDoc
45 {
46   private static final long serialVersionUID = 1L;
47   private BindingMediator _mediator;
48
49   public DjListBox(ObjectViewer viewer, String JavaDoc propertyName, DjDomainValue[] domainValues) throws DjenericException
50   {
51     super();
52     setModel(new DefaultComboBoxModel JavaDoc(domainValues));
53     addListSelectionListener(this);
54
55     _mediator = new BindingMediator(this, viewer, propertyName);
56   }
57
58   public void valueChanged(ListSelectionEvent JavaDoc e)
59   {
60     try
61     {
62       apply();
63     }
64     catch (Exception JavaDoc x)
65     {
66       DjLogger.log(x);
67     }
68   }
69
70   public boolean isComponentWritable()
71   {
72     return _mediator.isComponentWritable();
73   }
74
75   public void clear()
76   {
77     setSelectedIndex(-1);
78     setEnabled(_mediator.isComponentWritable());
79   }
80
81   public void apply() throws DjenericException
82   {
83     if (getSelectedIndex() != -1)
84     {
85       DjDomainValue dv = (DjDomainValue) getSelectedValue();
86       _mediator.setPropertyValue(dv.getValue());
87     }
88   }
89
90   public void setPropertyName(String JavaDoc propertyName) throws DjenericException
91   {
92     _mediator.setPropertyName(propertyName);
93   }
94
95   public void setViewer(ObjectViewer viewer)
96   {
97     _mediator.setViewer(viewer);
98   }
99
100   public void synchronize() throws DjenericException
101   {
102     setEnabled(_mediator.isComponentWritable());
103
104     String JavaDoc curVal = _mediator.getPropertyValueString();
105     int idx = -1;
106     ListModel JavaDoc mdl = getModel();
107
108     if (curVal.length() != 0)
109     {
110       for (int i = 0; i < mdl.getSize(); i++)
111       {
112         DjDomainValue dv = (DjDomainValue) mdl.getElementAt(i);
113         if (dv.getValue().equals(curVal))
114         {
115           idx = i;
116           break;
117         }
118       }
119     }
120
121     setSelectedIndex(idx);
122   }
123
124   public Object JavaDoc getDisplayedValue()
125   {
126     if (getSelectedIndex() != -1) return getSelectedValue();
127     return null;
128   }
129
130   public String JavaDoc getPropertyName()
131   {
132     return _mediator.getPropertyName();
133   }
134
135   public JComponent JavaDoc getFocussableComponent()
136   {
137     return this;
138   }
139 }
Popular Tags