.. _wicket_ui_overview: Overview ======== GeoServer uses a web application framework known as `Wicket `_ for its user interface. Wicket differs from most Java web frameworks in that it is component based rather than JSP template based. This makes Wicket a more natural web framework for many Java programmers who are more familiar with Swing programming than web programming. Plug-ins -------- Because of its component based nature Wicket components can be loaded from the classpath. Which means that web applications can be built in a modular fashion, rather than in a monolithic fashion. GeoServer takes this concept one step further to provide a pluggable user interface, in which Wicket components can be plugged in via Spring and the regular GeoServer plug-in mechanism. Each component that is plugged in is described by a **component descriptor**. A component descriptor is an instance of the ``org.geoserver.web.ComponentInfo`` class: .. literalinclude:: ComponentInfo.java :lines: 24-42,105 A ``ComponentInfo`` instance contains meta information about the component being plugged in such as its title and description, as well as the class which implements the component. Each subclass of ``ComponentInfo`` represents a specific :ref:`extension point `. For instance the class ``org.geoserver.web.MenuPageInfo`` represents the extension point for "main" pages, ie pages that are linked to from the main menu of the application.