blob: f2dc2465ae7684fd1e6b012c783dd1b1ba7304bb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.directory.studio.ldapbrowser.core;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.directory.studio.ldapbrowser.core.events.BookmarkUpdateEvent;
import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
import org.apache.directory.studio.ldapbrowser.core.model.IBookmark;
import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection;
import org.eclipse.osgi.util.NLS;
/**
* This class is used to manage Bookmarks.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public class BookmarkManager implements Serializable
{
private static final long serialVersionUID = 7605293576518974531L;
private List<IBookmark> bookmarkList;
private IBrowserConnection connection;
/**
* Creates a new instance of BookmarkManager.
*
* @param connection
* the attached Connection
*/
public BookmarkManager( IBrowserConnection connection )
{
this.connection = connection;
bookmarkList = new ArrayList<IBookmark>();
}
/**
* Gets the Connection
*
* @return
* the Connection
*/
public IBrowserConnection getConnection()
{
return connection;
}
/**
* Adds a Bookmark
*
* @param bookmark
* the Bookmark to add
*/
public void addBookmark( IBookmark bookmark )
{
addBookmark( bookmarkList.size(), bookmark );
}
/**
* Adds a Bookmark at a specified position.
*
* @param index
* the index at which the specified element is to be inserted.
* @param bookmark
* the Bookmark to add
*/
public void addBookmark( int index, IBookmark bookmark )
{
if ( getBookmark( bookmark.getName() ) != null )
{
String newBookmarkName = NLS.bind( BrowserCoreMessages.copy_n_of_s, "", bookmark.getName() ); //$NON-NLS-1$
for ( int i = 2; this.getBookmark( newBookmarkName ) != null; i++ )
{
newBookmarkName = NLS.bind( BrowserCoreMessages.copy_n_of_s, i + " ", bookmark.getName() ); //$NON-NLS-1$
}
bookmark.setName( newBookmarkName );
}
bookmarkList.add( index, bookmark );
EventRegistry.fireBookmarkUpdated(
new BookmarkUpdateEvent( bookmark, BookmarkUpdateEvent.Detail.BOOKMARK_ADDED ), this );
}
/**
* Gets a Bookmark
*
* @param name
* the name of the Bookmark
* @return
* the corresponding Bookmark
*/
public IBookmark getBookmark( String name )
{
for ( IBookmark bookmark : bookmarkList )
{
if ( bookmark.getName().equals( name ) )
{
return bookmark;
}
}
return null;
}
/**
* Returns the index in the Bookmarks list of the first occurrence of the specified Bookmark
*
* @param bookmark
* the bookmark to search for
* @return
* the index in the Bookmarks list of the first occurrence of the specified Bookmark
*/
public int indexOf( IBookmark bookmark )
{
return bookmarkList.indexOf( bookmark );
}
/**
* Removes a Bookmark
*
* @param bookmark
* the Bookmark to remove
*/
public void removeBookmark( IBookmark bookmark )
{
bookmarkList.remove( bookmark );
EventRegistry.fireBookmarkUpdated( new BookmarkUpdateEvent( bookmark,
BookmarkUpdateEvent.Detail.BOOKMARK_REMOVED ), this );
}
/**
* Removes a Bookmark
*
* @param name
* the name of the Bookmark to remove
*/
public void removeBookmark( String name )
{
this.removeBookmark( this.getBookmark( name ) );
}
/**
* Gets an array containing all Bookmarks
*
* @return
* an array containing all Bookmarks
*/
public IBookmark[] getBookmarks()
{
return bookmarkList.toArray( new IBookmark[0] );
}
/**
* Gets the number of Bookmarks
*
* @return
* the number of Bookmarjs
*/
public int getBookmarkCount()
{
return bookmarkList.size();
}
}