/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.mantle.client.solutionbrowser.filepicklist;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
public class RecentPickList extends AbstractFilePickList<RecentPickItem> {
private static RecentPickList recentPickList;
private RecentPickList() {
super();
}
// public RecentPickList(ArrayList<RecentPickItem> filePickList) {
// super(filePickList);
// }
private RecentPickList( JSONArray jsonFilePickList ) {
super( jsonFilePickList );
}
public RecentPickItem createFilePickItem( JSONObject jsonFilePickItem ) {
return new RecentPickItem( jsonFilePickItem );
}
public static RecentPickList getInstance() {
if ( recentPickList == null ) {
recentPickList = new RecentPickList();
}
return recentPickList;
}
public static RecentPickList getInstanceFromJSON( JSONArray jsa ) {
recentPickList = new RecentPickList( jsa );
return recentPickList;
}
/**
* Handle the additional logic associated with adding a new recent including insertion as first item in array and
* checking list size.
*/
@Override
public void add( RecentPickItem pickListItem ) {
recentPickList.getFilePickList().remove( pickListItem );
if ( recentPickList.getMaxSize() > 0 && recentPickList.size() >= recentPickList.getMaxSize() ) {
recentPickList.remove( recentPickList.getMaxSize() - 1 );
}
super.add( 0, pickListItem );
}
/**
* Disable ability to add recent anywhere in list
*/
@Override
public void add( int index, RecentPickItem pickListItem ) {
add( pickListItem );
}
public boolean contains( String fileNameWithPath ) {
return recentPickList.contains( new RecentPickItem( fileNameWithPath ) );
}
}