/*
* This file is part of muCommander, http://www.mucommander.com
* Copyright (C) 2002-2016 Maxence Bernard
*
* muCommander is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* muCommander 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.mucommander.bookmark;
/**
* Represents a bookmark.
* <p>Bookmarks are simple name/location pairs:
* <ul>
* <li>The name is a String describing the bookmark.</li>
* <li>
* The location should designate a path or file URL. The designated location may not exist or may not even be
* a valid path or URL, so it is up to classes that call {@link #getLocation()} to deal with it appropriately.
* </li>
* </ul>
* </p>
* @author Maxence Bernard
*/
public class Bookmark implements Cloneable {
private String name;
private String location;
/**
* Creates a new Bookmark using the given name and location.
*
* @param name name given to this bookmark
* @param location location (path or URL) this bookmark points to
*/
public Bookmark(String name, String location) {
// Use setters to checks for null values
setName(name);
setLocation(location);
}
/**
* Returns this bookmark's name.
* @return this bookmark's name.
* @see #setName(String)
*/
public String getName() {
return name;
}
/**
* Changes this bookmark's name to the given one and fires an event to registered {@link BookmarkListener}
* instances.
* @param newName bookmark's new name.
* @see #getName()
*/
public void setName(String newName) {
// Replace null values by empty strings
if(newName==null)
newName = "";
if(!newName.equals(this.name)) {
this.name = newName;
// Notify registered listeners of the change
BookmarkManager.fireBookmarksChanged();
}
}
/**
* Returns this bookmark's location which should normally designate a path or file URL, but which isn't
* necessarily valid nor exists.
* @return this bookmark's location.
* @see #setLocation(String)
*/
public String getLocation() {
return location;
}
/**
* Changes this bookmark's location to the given one and fires an event to registered {@link BookmarkListener}
* instances.
* @param newLocation bookmark's new location.
* @see #getLocation()
*/
public void setLocation(String newLocation) {
// Replace null values by empty strings
if(newLocation==null)
newLocation = "";
if(!newLocation.equals(this.location)) {
this.location = newLocation;
// Notify registered listeners of the change
BookmarkManager.fireBookmarksChanged();
}
}
/**
* Returns a clone of this bookmark.
*/
@Override
public Object clone() throws CloneNotSupportedException {return super.clone();}
/**
* Returns the bookmark's name.
*/
public String toString() {
return name;
}
public boolean equals(Object object) {
if(!(object instanceof Bookmark))
return false;
Bookmark bookmark;
bookmark = (Bookmark)object;
return bookmark.getName().equals(name);
}
}