/* * Copyright (c) 2012 Hai Bison * * See the file LICENSE at the root directory of this project for copying * permission. */ package group.pals.android.lib.ui.filechooser.io.localfile; import group.pals.android.lib.ui.filechooser.io.IFile; import group.pals.android.lib.ui.filechooser.utils.history.History; import java.io.File; import java.util.List; import android.os.Parcel; import android.os.Parcelable; /** * This is a wrapper for {@link File}. * * @author Hai Bison * @since v3.2 */ public class LocalFile extends File implements IFile { /** * Auto-generated by Eclipse. */ private static final long serialVersionUID = 2068049445895497580L; public LocalFile(String pathname) { super(pathname); }// LocalFile() public LocalFile(File file) { this(file.getAbsolutePath()); }// LocalFile() @Override public IFile parentFile() { return getParent() == null ? null : new LocalFile(getParent()); }// parentFile() /** * By default, {@link File} compares to another one by its pathname. So if * two different {@link File}'s have same pathname, they are equal. But to * let the {@link History} works, we don't do that.<br> * For example we have this history: 1-2-3-2-4-5, and it is used in a * {@link List}, then if we use {@link File}, we will only get {@code 1} for * method {@link List#indexOf(Object)} with file "2". But we have 2 * positions for "2".<br> * <br> * So, we override this method :-) The result is a comparison of operator * {@code ==} */ @Override public boolean equals(Object obj) { return this == obj; } @Override public boolean equalsToPath(IFile file) { return file == null ? false : getAbsolutePath().equals(file.getAbsolutePath()); }// equalsToPath() @Override public IFile clone() { return new LocalFile(getAbsolutePath()); } /*----------------------------------------------------- * Parcelable */ @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(getAbsolutePath()); } public static final Parcelable.Creator<LocalFile> CREATOR = new Parcelable.Creator<LocalFile>() { public LocalFile createFromParcel(Parcel in) { return new LocalFile(in); } public LocalFile[] newArray(int size) { return new LocalFile[size]; } }; private LocalFile(Parcel in) { this(in.readString()); } }