/* * $Id$ * This file is a part of the Arakhne Foundation Classes, http://www.arakhne.org/afc * * Copyright (c) 2000-2012 Stephane GALLAND. * Copyright (c) 2005-10, Multiagent Team, Laboratoire Systemes et Transports, * Universite de Technologie de Belfort-Montbeliard. * Copyright (c) 2013-2016 The original authors, and other authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.arakhne.afc.ui.android.filechooser; import java.io.File; import java.io.FileFilter; import java.util.List; import org.arakhne.afc.ui.android.R; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.view.View; import android.widget.ListView; /** * Fragment that displays a list of Files in a given path. * <p> * The path to open at startup should be stored in the * argument with the name "path". * * @author $Author: sgalland$ * @version $Name$ $Revision$ $Date$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ * @deprecated see JavaFX API */ @Deprecated public class FileListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<List<File>> { private FileFilter fileFilter = null; private FileChooserIconSelector iconSelector = null; private FileListAdapter adapter = null; private File path; /** * @param path is the he absolute path of the file (directory) to display. * @param fileFilter is the file filter to use. * @param iconSelector is the selector of icon. * @return the new instance. */ public static FileListFragment newInstance(File path, FileFilter fileFilter, FileChooserIconSelector iconSelector) { FileListFragment fragment = new FileListFragment(); Bundle args = new Bundle(); if (path!=null) { args.putString(FileChooserActivity.SAVED_PATH_NAME, path.getAbsolutePath()); } fragment.setArguments(args); fragment.setFileFilter(fileFilter); fragment.setIconSelector(iconSelector); return fragment; } /** */ public FileListFragment() { // } /** * {@inheritDoc} */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.adapter = new FileListAdapter(getActivity(), this.iconSelector); this.path = Environment.getExternalStorageDirectory(); Bundle args = getArguments(); if (args!=null) { String absPath = args.getString(FileChooserActivity.SAVED_PATH_NAME); if (absPath!=null) { this.path = new File(absPath); } } } /** * Set the filte filter to use. * * @param fileFilter */ public void setFileFilter(FileFilter fileFilter) { this.fileFilter = fileFilter; } /** * Set the icon selector to use. * * @param iconSelector */ public void setIconSelector(FileChooserIconSelector iconSelector) { this.iconSelector = iconSelector; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setEmptyText(getString(R.string.empty_directory)); setListAdapter(this.adapter); setListShown(false); getLoaderManager().initLoader(0, null, this); } @Override public void onListItemClick(ListView l, View v, int position, long id) { FileListAdapter adapter = (FileListAdapter) l.getAdapter(); if (adapter != null) { this.path = adapter.getItem(position); Activity activity = getActivity(); if (activity instanceof FileChooserActivity) { ((FileChooserActivity)getActivity()).onSelectedFile(this.path); } } } /** * {@inheritDoc} */ @Override public Loader<List<File>> onCreateLoader(int id, Bundle args) { return new AsyncFileLoader(getActivity(), this.path, this.fileFilter); } /** * {@inheritDoc} */ @Override public void onLoadFinished(Loader<List<File>> loader, List<File> data) { this.adapter.set(data); if (isResumed()) { setListShown(true); } else { setListShownNoAnimation(true); } } @Override public void onLoaderReset(Loader<List<File>> loader) { this.adapter.clear(); } }