/******************************************************************************* * Copyright (c) 2011 Nokia Corporation * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Comarch team - initial API and implementation *******************************************************************************/ package org.ned.client.library; import com.sun.lwuit.events.DataChangedListener; import com.sun.lwuit.events.SelectionListener; import com.sun.lwuit.list.ListModel; import java.util.Vector; public class LibraryManager implements ListModel { private Vector librariesList = new Vector(); private Vector selectionListeners = new Vector(); private Vector dataChangeListeners = new Vector(); private int selectedIndex = -1; public LibraryManager() { } public boolean addLibrary( NedLibrary lib ) { boolean retval = false; if ( findLibrary( lib.getId() ) == null ) { addItem( lib ); retval = true; } //todo check duplicates; return retval; } public NedLibrary getLibraryByUrl( String url ) { //find libraries return null; } public NedLibrary findLibrary( String id ) { for ( int i = 0; i < librariesList.size(); i++ ) { if ( ((NedLibrary)librariesList.elementAt( i )).getId().equals( id ) ) { return (NedLibrary)librariesList.elementAt( i ); } } return null; } public int findLibraryIndex( String id ) { for ( int i = 0; i < librariesList.size(); i++ ) { if ( ((NedLibrary)librariesList.elementAt( i )).getId().equals( id ) ) { return i; } } return -1; } void selectLibrary( String id ) { for ( int i = 0; i < librariesList.size(); i++ ) { if ( ((NedLibrary)librariesList.elementAt( i )).getId().equals( id ) ) { setSelectedIndex( i ); } } } public Vector getLibrariesList() { return librariesList; } public Vector getVisibleLibrariesList() { Vector vLibraries = new Vector(); for ( int i = 0; i < librariesList.size(); i++ ) { if ( ((NedLibrary)librariesList.elementAt( i )).getVisible() == true ) { vLibraries.addElement( (NedLibrary)librariesList.elementAt( i ) ); } } return vLibraries; } public Object getItemAt( int i ) { return (i < librariesList.size() && i >= 0) ? librariesList.elementAt( i ) : null; } public int getSize() { return librariesList.size(); } public int getSelectedIndex() { return selectedIndex; } public NedLibrary getCurrentLibrary() { if ( librariesList.size() > 0 ) { return (NedLibrary)librariesList.elementAt( selectedIndex ); } else { return null; } } public void setSelectedIndex( int i ) { for ( int j = 0; j < selectionListeners.size(); j++ ) { ((SelectionListener)selectionListeners.elementAt( j )).selectionChanged( selectedIndex, i ); } selectedIndex = i; } public void addDataChangedListener( DataChangedListener dl ) { dataChangeListeners.addElement( dl ); } public void removeDataChangedListener( DataChangedListener dl ) { dataChangeListeners.removeElement( dl ); } public void addSelectionListener( SelectionListener sl ) { selectionListeners.addElement( sl ); } public void removeSelectionListener( SelectionListener sl ) { selectionListeners.removeElement( sl ); } public void addItem( Object o ) { librariesList.addElement( o ); for ( int i = 0; i < dataChangeListeners.size(); i++ ) { ((DataChangedListener)dataChangeListeners.elementAt( i )).dataChanged( DataChangedListener.ADDED, librariesList. size() - 1 ); } } public void removeItem( int index ) { if ( index >= 0 && index < librariesList.size() ) { librariesList.removeElementAt( index ); for ( int i = 0; i < dataChangeListeners.size(); i++ ) { ((DataChangedListener)dataChangeListeners.elementAt( i )).dataChanged( DataChangedListener.REMOVED, index ); } } } }