package org.limewire.ui.swing.properties;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import org.limewire.bittorrent.TorrentFileEntry;
import org.limewire.listener.SwingSafePropertyChangeSupport;
/**
* We need this because we don't want to update the real entries
* if the user hits the cancel button
*/
public class TorrentFileEntryWrapper {
private final PropertyChangeSupport support = new SwingSafePropertyChangeSupport(this);
private TorrentFileEntry entry;
private int priority;
private final String subPath;
public TorrentFileEntryWrapper(TorrentFileEntry entry) {
this.entry = entry;
this.priority = entry.getPriority();
this.subPath = getSubPath(entry.getPath());
}
public String getPath() {
return subPath;
}
public long getSize() {
return entry.getSize();
}
public float getProgress() {
return entry.getProgress();
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
public TorrentFileEntry getTorrentFileEntry() {
return entry;
}
public void setTorrentFileEntry(TorrentFileEntry newEntry) {
TorrentFileEntry oldEntry = this.entry;
this.entry = newEntry;
support.firePropertyChange("entry", oldEntry, newEntry);
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
support.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener){
support.removePropertyChangeListener(listener);
}
public boolean hasChanged() {
return getPriority() != getTorrentFileEntry().getPriority();
}
/**
* Removes the torrent file name from the path to show
* only subdirectories and file names.
*/
private static String getSubPath(String path) {
int index = path.indexOf("/");
if(index >= 0 && index + 1 < path.length()) {
return path.substring(index + 1);
} else {
return path;
}
}
}