/*
* Copyright (C) 2014 Michell Bak
*
* 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 com.miz.abstractclasses;
import com.miz.functions.BrowserFileObject;
import java.util.ArrayList;
import java.util.List;
public abstract class AbstractFileSourceBrowser<T> {
private T mCurrentFolder, mParentFolder;
private T[] mCurrentFiles, mCurrentParentFiles;
private List<BrowserFileObject> mBrowserFiles, mBrowserParentFiles;
public AbstractFileSourceBrowser(T folder) {
mCurrentFolder = folder;
browse(getCurrentFolder());
}
public void setCurrentFolder(T folder) {
mCurrentFolder = folder;
}
public void setParentFolder(T folder) {
mParentFolder = folder;
}
public T getParentFolder() {
return mParentFolder;
}
public T getCurrentFolder() {
return mCurrentFolder;
}
public void setCurrentFiles(T[] files) {
mCurrentFiles = files;
}
public void setCurrentParentFiles(T[] files) {
mCurrentParentFiles = files;
}
public T[] getCurrentFiles() {
return mCurrentFiles;
}
public T[] getCurrentParentFiles() {
return mCurrentParentFiles;
}
public List<BrowserFileObject> getBrowserFiles() {
if (mBrowserFiles == null)
mBrowserFiles = new ArrayList<BrowserFileObject>();
return mBrowserFiles;
}
public List<BrowserFileObject> getBrowserParentFiles() {
if (mBrowserParentFiles == null)
mBrowserParentFiles = new ArrayList<BrowserFileObject>();
return mBrowserParentFiles;
}
public void setBrowserFiles(List<BrowserFileObject> list) {
mBrowserFiles = list;
}
public void setBrowserParentFiles(List<BrowserFileObject> list) {
mBrowserParentFiles = list;
}
public boolean goUp() {
return mParentFolder != null && browse(mParentFolder);
}
public boolean browse(int index, boolean fromParent) {
return browse(fromParent ? getCurrentParentFiles()[index] : getCurrentFiles()[index]);
}
public abstract boolean browse(T folder);
public abstract boolean browseParent();
public abstract String getSubtitle();
}