Index: data/UIManagerLayout.xml
===================================================================
RCS file: /cvs/gnome/banshee/data/UIManagerLayout.xml,v
retrieving revision 1.11
diff -u -p -r1.11 UIManagerLayout.xml
--- data/UIManagerLayout.xml	28 Mar 2006 14:18:49 -0000	1.11
+++ data/UIManagerLayout.xml	29 Apr 2006 22:10:52 -0000
@@ -54,6 +54,11 @@
             <menuitem name="FullScreen" action="FullScreenAction" />
             <menuitem name="Columns" action="ColumnsAction" />
             <menuitem name="LoggedEvents" action="LoggedEventsAction" />
+            <separator />
+            <menuitem name="SearchForSameArtist" action="SearchForSameArtistAction" />
+            <menuitem name="SearchForSameAlbum" action="SearchForSameAlbumAction" />
+            <menuitem name="SearchForSameGenre" action="SearchForSameGenreAction" />
         </menu>
         <menu name="HelpMenu" action="HelpMenuAction">
             <menuitem name="VersionInformation" action="VersionInformationAction" />
@@ -77,6 +82,10 @@
         <menuitem name="Rating" action="RatingAction" />
         <menuitem name="RemoveSongs" action="RemoveSongsAction" />
         <menuitem name="DeleteSongsFromDrive" action="DeleteSongsFromDriveAction" />
+        <separator />
+        <menuitem name="SearchForSameArtist" action="SearchForSameArtistAction" />
+        <menuitem name="SearchForSameAlbum" action="SearchForSameAlbumAction" />
+        <menuitem name="SearchForSameGenre" action="SearchForSameGenreAction" />
         <separator />
         <menuitem name="SelectAll" action="SelectAllAction" />
         <menuitem name="SelectNone" action="SelectNoneAction" />
Index: src/PlayerInterface.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/PlayerInterface.cs,v
retrieving revision 1.174
diff -u -p -r1.174 PlayerInterface.cs
--- src/PlayerInterface.cs	14 Apr 2006 15:33:43 -0000	1.174
+++ src/PlayerInterface.cs	29 Apr 2006 22:11:01 -0000
@@ -2200,6 +2200,55 @@ namespace Banshee
             
             log_viewer.Show();
         }
+
+        private void OnSearchForSameAlbumAction(object o, EventArgs args)
+        {
+            SearchBySelectedTrack("album");
+        }
+
+        private void OnSearchForSameArtistAction(object o, EventArgs args)
+        {
+            SearchBySelectedTrack("artist");
+        }
+
+        private void OnSearchForSameGenreAction(object o, EventArgs args)
+        {
+            SearchBySelectedTrack("genre");
+        }
+
+        private void SearchBySelectedTrack(string searchFor)
+        {
+            int selCount = playlistView.Selection.CountSelectedRows();
+
+            if(selCount <= 0) {
+                return;
+            }
+
+            TrackInfo track = playlistView.SelectedTrackInfo;
+
+            if(track == null) {
+                return;
+            }
+
+            switch(searchFor) {
+                case "album":
+                    searchEntry.Query = track.Album;
+                    searchEntry.Field = Catalog.GetString("Album Title");
+                    break;
+                case "artist":
+                    searchEntry.Query = track.Artist;
+                    searchEntry.Field = Catalog.GetString("Artist Name");
+                    break;
+
+                case "genre":
+                    searchEntry.Query = track.Genre;
+                    searchEntry.Field = Catalog.GetString("Genre");
+                    break;
+            }
+
+            searchEntry.Focus(); 
+        }
         
         // --- Help Menu ---
         
Index: src/Banshee.Base/ActionManager.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Banshee.Base/ActionManager.cs,v
retrieving revision 1.13
diff -u -p -r1.13 ActionManager.cs
--- src/Banshee.Base/ActionManager.cs	19 Mar 2006 20:18:37 -0000	1.13
+++ src/Banshee.Base/ActionManager.cs	29 Apr 2006 22:11:03 -0000
@@ -183,6 +186,18 @@ namespace Banshee.Base
                 new ActionEntry("PropertiesAction", Stock.Properties,
                     Catalog.GetString("Edit Song Metadata"), null,
                     Catalog.GetString("Edit metadata on selected songs"), null),
+
+                new ActionEntry("SearchForSameAlbumAction", Stock.Find,
+                    Catalog.GetString("Search for same Album"), null,
+                    Catalog.GetString("Search all songs of this album"), null),
+
+                new ActionEntry("SearchForSameArtistAction", Stock.Find,
+                    Catalog.GetString("Search for same Artist"), null,
+                    Catalog.GetString("Search all songs of this artist"), null),
+
+                new ActionEntry("SearchForSameGenreAction", Stock.Find,
+                    Catalog.GetString("Search for same Genre"), null,
+                    Catalog.GetString("Search all songs of this genre"), null),
                     
                 new ActionEntry("AddToPlaylistAction", null,
                     Catalog.GetString("Add to Playlist"), null,
Index: src/Banshee.Widgets/SearchEntry.cs
===================================================================
RCS file: /cvs/gnome/banshee/src/Banshee.Widgets/SearchEntry.cs,v
retrieving revision 1.7
diff -u -p -r1.7 SearchEntry.cs
--- src/Banshee.Widgets/SearchEntry.cs	13 Feb 2006 22:18:14 -0000	1.7
+++ src/Banshee.Widgets/SearchEntry.cs	29 Apr 2006 22:11:05 -0000
@@ -382,6 +382,19 @@ namespace Banshee.Widgets
             get {
                 return menuMap[activeItem] as string;
             }
+            set {
+                foreach(MenuItem iterItem in popupMenu.Children) {
+                    if(!(iterItem is CheckMenuItem)) {
+                        continue;
+                    }
+
+                    CheckMenuItem checkItem = iterItem as CheckMenuItem;
+
+                    if(menuMap[checkItem] as string == value) {
+                        checkItem.Toggle();
+                    }
+                }
+            }
         }
         
         public void Focus()
