commons.java subversion repository

sventon subversion web client - http://www.sventon.org
[show recent changes]
 
  Help
HEAD
Rev: 691 - https://secure.bioinfweb.info/Code/svn/commons.java / trunk / main / info.bioinfweb.commons.swing / src / info / bioinfweb / commons / swing / ListBackedListModel.java
Show File - ListBackedListModel.java  [show properties]
spinner
/*
 * bioinfweb.commons.java - Shared components of bioinfweb projects made available in a Java library
 * Copyright (C) 2008-2011, 2013-2018  Ben Stöver, Sarah Wiechers
 * <http://commons.bioinfweb.info/Java>
 * 
 * This file is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
10   * 
11   * This file is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   * GNU Lesser General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Lesser General Public License
17   * along with this program. If not, see <http://www.gnu.org/licenses/>.
18   */
19  package info.bioinfweb.commons.swing;
20 
21 
22  import java.util.List;
23 
24  import javax.swing.AbstractListModel;
25 
26 
27 
28  public class ListBackedListModel<E> extends AbstractListModel<E>{
29      private List<E> list;
30      
31      
32      public ListBackedListModel(List<E> list) {
33          super();
34          this.list = list;
35      }
36      
37 
38      public List<E> getList() {
39          return list;
40      }
41 
42      
43      public void setList(List<E> list) {
44          int previousSize = this.list.size();
45          
46          this.list = list;
47          
48          int sharedLength = Math.min(list.size(), previousSize);
49          if (sharedLength > 0) {
50              fireContentsChanged(this, 0, sharedLength - 1);
51          }
52          if (list.size() > previousSize) {
53              fireIntervalAdded(this, previousSize, list.size() - 1);
54          }
55          else if (list.size() < previousSize) {
56              fireIntervalRemoved(this, list.size(), previousSize - 1);
57          }
58      }
59      
60 
61      @Override
62      public E getElementAt(int index) {
63          return list.get(index);
64      }
65 
66      
67      @Override
68      public int getSize() {
69          return list.size();
70      }
71 
72 
73      public boolean add(E e) {
74          list.add(e);
75          int pos = list.size() - 1;
76          fireIntervalAdded(this, pos, pos);
77          return true;
78      }
79 
80 
81      public void add(int index, E element) {
82          list.add(index, element);
83          
84          int lastIndex = list.size() - 1;
85          fireContentsChanged(this, index, lastIndex - 1);
86          fireIntervalAdded(this, lastIndex, lastIndex);
87      }
88 
89 
90      public void clear() {
91          int lastIndex = list.size() - 1;
92          list.clear();
93          fireIntervalRemoved(this, 0, lastIndex);
94      }
95 
96 
97      public E remove(int index) {
98          E result = list.remove(index);
99          fireIntervalRemoved(this, index, index);
100          return result;
101      }
102 
103 
104      public E set(int index, E element) {
105          E result = list.set(index, element);
106          fireContentsChanged(this, index, index);
107          return result;
108      }
109  }


feed icon

sventon 2.5.1

bioinfweb RSS feed bioinfweb on twitter bioinfweb.commons.java on GitHub
bioinfweb - Biology & Informatics Website