1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.utils.datastructures;
\r
14 import java.util.Collection;
\r
15 import java.util.List;
\r
16 import java.util.ListIterator;
\r
18 public class ListAdapter<Domain,Range,C extends List<Domain>>
\r
19 extends CollectionAdapter<Domain,Range,C>
\r
20 implements List<Range> {
\r
22 public ListAdapter(Converter<Domain,Range> converter, C collection) {
\r
23 super(converter, collection);
\r
27 public void add(int index, Range element) {
\r
28 collection.add(index, converter.convertFrom(element));
\r
31 @SuppressWarnings("unchecked")
\r
33 public boolean addAll(int index, Collection<? extends Range> c) {
\r
34 return collection.addAll(index, new CollectionAdapter<Range, Domain, Collection<Range>>(inverseConverter(converter), (Collection<Range>)c));
\r
38 public Range get(int index) {
\r
39 return converter.convertTo(collection.get(index));
\r
42 @SuppressWarnings("unchecked")
\r
44 public int indexOf(Object o) {
\r
45 return collection.indexOf(converter.convertFrom((Range)o));
\r
48 @SuppressWarnings("unchecked")
\r
50 public int lastIndexOf(Object o) {
\r
51 return collection.lastIndexOf(converter.convertFrom((Range)o));
\r
55 public ListIterator<Range> listIterator() {
\r
56 return new ListIteratorAdapter<Domain, Range, ListIterator<Domain>>
\r
57 (converter, collection.listIterator());
\r
61 public ListIterator<Range> listIterator(int index) {
\r
62 return new ListIteratorAdapter<Domain, Range, ListIterator<Domain>>
\r
63 (converter, collection.listIterator(index));
\r
67 public Range remove(int index) {
\r
68 return converter.convertTo(collection.remove(index));
\r
72 public Range set(int index, Range element) {
\r
73 return converter.convertTo(collection.set(index, converter.convertFrom(element)));
\r
77 public List<Range> subList(int fromIndex, int toIndex) {
\r
78 return new ListAdapter<Domain,Range,List<Domain>>(converter, collection.subList(fromIndex, toIndex));
\r