to start with most people on this forum are happy to help by giving you hints and pointing you in the right direction which is exactly what you seem to be asking for.
Where people tend to be less helpful is if you ask them to do all of your work for you. For more info see the
HowToAskQuestionsFAQ in general and specifically the
NotACodeMill and
DoYourOwnHomework sections.
From a quick look through your code I think a couple of starting points may be:
(i) You don't add to your agenda other than the MazeSquare.START. So first iteration of the loop agenda is not empty. You pop the agenda and then second iteration, agenda will be empty.
(ii) If my understanding of your algorithm is correct then I think you may need to use the concept of an adjacency list. That is each time you pop a MazeSquare from the agenda and it is not the finish and not in the history then you need to somehow add all of the neighbours of the MazeSquare to the agenda. To do this with the MazeSquare enum is probably not possible. To do this I think you will need to have a Node class that is constructed with a type of square (MazeSquare enum) and knowledge of the neighbours (a List of Nodes).
(iii) not sure what you are using the search variable for but you don't test the value.
When I was looking at a maze solving problem at uni the algorithm we had to use was a bit more basic. It was the right turn (left turn works too) algorithm whereby anytime you come to a right turn you take it. It will solve the maze but is inefficient and won't give you the shortest path.
Anyway, your algorithm looks similar to some other path finding algorithms I've seen in the past. Has the algorithm got any specific name (eg Breadth First Search, Depth First Search, Djikstra, A*, etc)? I actually learned how to use A* from the book "Developing Games in Java" by David Brackeen (my uni library had a copy and I've since purchased my own). Google books have the book in an online form
here. Chapter 12 - Pathfinding may be worth a look, even if you're not using the exact A* algorithm then the basic data structures will probably be useful. He even has his own website
here where you can download the source code to have a look at. From what I remember of the implementation of A* it is all done with LinkedList and loops so shouldn't be anything beyond what is in your existing code.