From 88d5a82d39a140c05735f7429b8052b1a766349a Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Tue, 9 Oct 2012 12:45:29 +0200
Subject: [PATCH] Replaced some Icons; Some refactoring; Localization

---
 .../application/GlobalPropertiesBean.java     |  86 +++--
 .../kieker/webgui/beans/session/UserBean.java |  19 --
 .../beans/view/CurrentAnalysisEditorBean.java |  40 ++-
 .../src/main/resources/global.properties      |   2 +-
 .../lang/AnalysisEditorPage_de.properties     |  50 +++
 .../lang/AnalysisEditorPage_en.properties     |  50 +++
 .../lang/CockpitEditorPage_de.properties      |   6 +
 .../lang/CockpitEditorPage_en.properties      |   6 +
 .../resources/lang/CockpitPage_de.properties  |   6 +
 .../resources/lang/CockpitPage_en.properties  |   6 +
 .../main/resources/lang/Common_de.properties  |  64 ++++
 .../main/resources/lang/Common_en.properties  |  64 ++++
 .../lang/ControllerPage_de.properties         |  16 +
 .../lang/ControllerPage_en.properties         |  16 +
 .../resources/lang/LoginPage_de.properties    |  16 +
 .../resources/lang/LoginPage_en.properties    |  16 +
 .../lang/ProjectOverviewPage_de.properties    |  24 ++
 .../lang/ProjectOverviewPage_en.properties    |  24 ++
 .../src/main/resources/messages_de.properties | 158 ---------
 .../src/main/resources/messages_en.properties | 158 ---------
 .../src/main/webapp/AnalysisEditor.xhtml      | 295 -----------------
 .../src/main/webapp/AnalysisEditorPage.xhtml  | 302 ++++++++++++++++++
 ...itEditor.xhtml => CockpitEditorPage.xhtml} |  11 +-
 .../{Cockpit.xhtml => CockpitPage.xhtml}      |   9 +-
 .../src/main/webapp/Controller.xhtml          | 123 -------
 .../src/main/webapp/ControllerPage.xhtml      | 125 ++++++++
 Kieker.WebGUI/src/main/webapp/Login.xhtml     |  51 ---
 Kieker.WebGUI/src/main/webapp/LoginPage.xhtml |  56 ++++
 .../src/main/webapp/ProjectOverview.xhtml     | 114 -------
 .../src/main/webapp/ProjectOverviewPage.xhtml | 116 +++++++
 .../src/main/webapp/WEB-INF/faces-config.xml  |   6 +-
 .../src/main/webapp/WEB-INF/pretty-config.xml |  14 +-
 ...lysisEditor.css => AnalysisEditorPage.css} |   0
 ...ockpitEditor.css => CockpitEditorPage.css} |   0
 .../css/{Cockpit.css => CockpitPage.css}      |   0
 Kieker.WebGUI/src/main/webapp/css/Common.css  | 168 ----------
 .../{Controller.css => ControllerPage.css}    |   0
 Kieker.WebGUI/src/main/webapp/css/Icons.css   | 185 +++++++++++
 .../webapp/css/{Login.css => LoginPage.css}   |  10 +-
 ...ctOverview.css => ProjectOverviewPage.css} |   0
 ....xhtml => AnalysisEditorPageDialogs.xhtml} |  10 +-
 ...s.xhtml => CockpitEditorPageDialogs.xhtml} |   0
 ...xhtml => ProjectOverviewPageDialogs.xhtml} |  16 +-
 .../main/webapp/img/graphIcons/FilterIcon.png | Bin 13483 -> 14452 bytes
 .../main/webapp/img/graphIcons/ReaderIcon.png | Bin 9831 -> 12409 bytes
 .../webapp/img/graphIcons/RepositoryIcon.png  | Bin 10719 -> 11104 bytes
 .../src/main/webapp/img/icons/Copy.png        | Bin 0 -> 494 bytes
 .../src/main/webapp/img/icons/Delete.png      | Bin 0 -> 694 bytes
 .../src/main/webapp/img/icons/Edit.png        | Bin 0 -> 667 bytes
 .../main/webapp/img/icons/GridDisabled.png    | Bin 898 -> 997 bytes
 .../webapp/img/icons/GridDisabledSmall.png    | Bin 471 -> 515 bytes
 .../src/main/webapp/img/icons/GridEnabled.png | Bin 1270 -> 493 bytes
 .../webapp/img/icons/GridEnabledSmall.png     | Bin 592 -> 368 bytes
 .../src/main/webapp/img/icons/Home.png        | Bin 779 -> 834 bytes
 .../main/webapp/img/icons/gridDisabled.svg    | 100 ++++++
 .../src/main/webapp/img/icons/gridEnabled.svg | 130 ++++++++
 56 files changed, 1508 insertions(+), 1160 deletions(-)
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_de.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_en.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_de.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_en.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/CockpitPage_de.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/CockpitPage_en.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/Common_de.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/Common_en.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/ControllerPage_de.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/ControllerPage_en.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/LoginPage_de.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/LoginPage_en.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_de.properties
 create mode 100644 Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_en.properties
 delete mode 100644 Kieker.WebGUI/src/main/resources/messages_de.properties
 delete mode 100644 Kieker.WebGUI/src/main/resources/messages_en.properties
 delete mode 100644 Kieker.WebGUI/src/main/webapp/AnalysisEditor.xhtml
 create mode 100644 Kieker.WebGUI/src/main/webapp/AnalysisEditorPage.xhtml
 rename Kieker.WebGUI/src/main/webapp/{CockpitEditor.xhtml => CockpitEditorPage.xhtml} (96%)
 rename Kieker.WebGUI/src/main/webapp/{Cockpit.xhtml => CockpitPage.xhtml} (95%)
 delete mode 100644 Kieker.WebGUI/src/main/webapp/Controller.xhtml
 create mode 100644 Kieker.WebGUI/src/main/webapp/ControllerPage.xhtml
 delete mode 100644 Kieker.WebGUI/src/main/webapp/Login.xhtml
 create mode 100644 Kieker.WebGUI/src/main/webapp/LoginPage.xhtml
 delete mode 100644 Kieker.WebGUI/src/main/webapp/ProjectOverview.xhtml
 create mode 100644 Kieker.WebGUI/src/main/webapp/ProjectOverviewPage.xhtml
 rename Kieker.WebGUI/src/main/webapp/css/{AnalysisEditor.css => AnalysisEditorPage.css} (100%)
 rename Kieker.WebGUI/src/main/webapp/css/{CockpitEditor.css => CockpitEditorPage.css} (100%)
 rename Kieker.WebGUI/src/main/webapp/css/{Cockpit.css => CockpitPage.css} (100%)
 rename Kieker.WebGUI/src/main/webapp/css/{Controller.css => ControllerPage.css} (100%)
 create mode 100644 Kieker.WebGUI/src/main/webapp/css/Icons.css
 rename Kieker.WebGUI/src/main/webapp/css/{Login.css => LoginPage.css} (85%)
 rename Kieker.WebGUI/src/main/webapp/css/{ProjectOverview.css => ProjectOverviewPage.css} (100%)
 rename Kieker.WebGUI/src/main/webapp/dialogs/{manageLibrariesDialog.xhtml => AnalysisEditorPageDialogs.xhtml} (80%)
 rename Kieker.WebGUI/src/main/webapp/dialogs/{viewDialogs.xhtml => CockpitEditorPageDialogs.xhtml} (100%)
 rename Kieker.WebGUI/src/main/webapp/dialogs/{projectDialogs.xhtml => ProjectOverviewPageDialogs.xhtml} (80%)
 create mode 100644 Kieker.WebGUI/src/main/webapp/img/icons/Copy.png
 create mode 100644 Kieker.WebGUI/src/main/webapp/img/icons/Delete.png
 create mode 100644 Kieker.WebGUI/src/main/webapp/img/icons/Edit.png
 create mode 100644 Kieker.WebGUI/src/main/webapp/img/icons/gridDisabled.svg
 create mode 100644 Kieker.WebGUI/src/main/webapp/img/icons/gridEnabled.svg

diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java
index 5c83ea36..3ea423fd 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/application/GlobalPropertiesBean.java
@@ -17,12 +17,12 @@
 package kieker.webgui.beans.application;
 
 import java.io.IOException;
-import java.util.Locale;
 import java.util.Properties;
 import java.util.ResourceBundle;
 
 import javax.faces.bean.ApplicationScoped;
 import javax.faces.bean.ManagedBean;
+import javax.faces.context.FacesContext;
 
 import kieker.common.logging.Log;
 import kieker.common.logging.LogFactory;
@@ -42,19 +42,28 @@ public final class GlobalPropertiesBean {
 	private static final Log LOG = LogFactory.getLog(GlobalPropertiesBean.class);
 
 	private static final String PROPERTIES_FILE_GLOBAL = "global.properties";
+	private static final String RESOURCE_BUNDLE_NAME = "lang.Common";
 
 	private static final String PROPERTY_FACES_CONTEXT_THEME_KEY = "kieker.webgui.config.lookAndFeel.facesContextKey";
 	private static final String PROPERTY_THEME_COOKIE_NAME = "kieker.webgui.config.lookAndFeel.cookieName";
 	private static final String PROPERTY_DEFAULT_THEME = "kieker.webgui.config.lookAndFeel.defaultTheme";
-	private static final String PROPERTY_LANGUAGE_COOKIE_NAME = "kieker.webgui.config.language.cookieName";
 	private static final String PROPERTY_PROJECT_OVERVIEW_PAGE = "kieker.webgui.page.projectOverview";
 	private static final String PROPERTY_ANALYSIS_EDITOR_GRID_SIZE_COOKIE_NAME = "kieker.webgui.config.analysisEditor.gridSize.cookieName";
 	private static final String PROPERTY_ANALYSIS_EDITOR_GRID_COLOR_COOKIE_NAME = "kieker.webgui.config.analysisEditor.gridColor.cookieName";
 	private static final String PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_SIZE = "kieker.webgui.config.analysisEditor.defaultGridSize";
 	private static final String PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_COLOR = "kieker.webgui.config.analysisEditor.defaultGridColor";
 
-	private static final String PROPERTY_WELCOME_MESSAGE = "longWelcomeMessage";
-	private static final String PROPERTY_SHORT_WELCOME_MESSAGE = "shortWelcomeMessage";
+	private static final String PROPERTY_MSG_PROJECT_LOADING_EXCEPTION = "msgProjectLoadingException";
+	private static final String PROPERTY_MSG_PROJECT_SAVED = "msgProjectSaved";
+	private static final String PROPERTY_MSG_PLUGIN_CREATION_EXCEPTION = "msgPluginCreationException";
+	private static final String PROPERTY_MSG_REPOSITORY_CREATION_EXCEPTION = "msgRepositoryCreationException";
+	private static final String PROPERTY_MSG_LIBRARY_UPLOADED = "msgLibraryUploaded";
+	private static final String PROPERTY_MSG_PROJECT_CREATED = "msgProjectCreated";
+	private static final String PROPERTY_MSG_PROJECT_SAVING_EXCEPTION = "msgProjectSavingException";
+	private static final String PROPERTY_MSG_PROJECT_NOT_EXISTING_EXCEPTION = "msgProjectNotExistingException";
+	private static final String PROPERTY_MSG_PROJECT_MODIFIED = "msgProjectModified";
+	private static final String PROPERTY_MSG_LIBRARY_EXISTING_EXCEPTION = "msgLibraryExistingException";
+	private static final String PROPERTY_MSG_LIBRARY_UPLOADING_EXCEPTION = "msgLibraryUploadingException";
 
 	private final Properties globalProperties = new Properties();
 
@@ -108,26 +117,6 @@ public final class GlobalPropertiesBean {
 		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_PROJECT_OVERVIEW_PAGE);
 	}
 
-	/**
-	 * Delivers the welcome message.
-	 * 
-	 * @return The value of the property.
-	 */
-	public String getWelcomeMessage(final Locale locale) {
-		// return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_WELCOME_MESSAGE);
-		return ResourceBundle.getBundle("messages", locale).getString(GlobalPropertiesBean.PROPERTY_WELCOME_MESSAGE);
-	}
-
-	/**
-	 * Delivers the short welcome message.
-	 * 
-	 * @return The value of the property.
-	 */
-	public String getShortWelcomeMessage(final Locale locale) {
-		// return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_SHORT_WELCOME_MESSAGE);
-		return ResourceBundle.getBundle("messages", locale).getString(GlobalPropertiesBean.PROPERTY_SHORT_WELCOME_MESSAGE);
-	}
-
 	/**
 	 * Delivers the name of the cookie for the grid size within the analysis editor.
 	 * 
@@ -164,7 +153,52 @@ public final class GlobalPropertiesBean {
 		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_ANALYSIS_EDITOR_DEFAULT_GRID_COLOR);
 	}
 
-	public String getLanguageCookieName() {
-		return this.globalProperties.getProperty(GlobalPropertiesBean.PROPERTY_LANGUAGE_COOKIE_NAME);
+	public String getMsgProjectLoadingException() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PROJECT_LOADING_EXCEPTION);
+	}
+
+	public String getMsgProjectSaved() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PROJECT_SAVED);
+	}
+
+	public String getMsgPluginCreationException() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PLUGIN_CREATION_EXCEPTION);
+	}
+
+	public String getMsgRepositoryCreationException() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_REPOSITORY_CREATION_EXCEPTION);
+	}
+
+	public String getMsgLibraryUploaded() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_LIBRARY_UPLOADED);
+	}
+
+	public String getMsgProjectCreated() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PROJECT_CREATED);
+	}
+
+	public String getMsgProjectSavingException() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PROJECT_SAVING_EXCEPTION);
+	}
+
+	public String getMsgProjectNotExistingException() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PROJECT_NOT_EXISTING_EXCEPTION);
+	}
+
+	public String getMsgProjectModified() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_PROJECT_MODIFIED);
+	}
+
+	public String getMsgLibraryExistingException() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_LIBRARY_EXISTING_EXCEPTION);
+	}
+
+	public String getMsgLibraryUploadingException() {
+		return GlobalPropertiesBean.getLocalizedString(GlobalPropertiesBean.PROPERTY_MSG_LIBRARY_UPLOADING_EXCEPTION);
+	}
+
+	private static String getLocalizedString(final String key) {
+		// Get the correct resource bundle for the current language (taken from the current context) and search it for the given key
+		return ResourceBundle.getBundle(GlobalPropertiesBean.RESOURCE_BUNDLE_NAME, FacesContext.getCurrentInstance().getELContext().getLocale()).getString(key);
 	}
 }
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java
index 8141f452..a8234979 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/session/UserBean.java
@@ -19,12 +19,9 @@ package kieker.webgui.beans.session;
 import javax.faces.bean.ManagedBean;
 import javax.faces.bean.ManagedProperty;
 import javax.faces.bean.SessionScoped;
-import javax.faces.context.FacesContext;
 
 import kieker.webgui.beans.application.GlobalPropertiesBean;
 
-import org.primefaces.context.RequestContext;
-
 /**
  * This bean contains information about the user of this session (like user name and authorization). It provides method to log into the application.<br>
  * This class is a JSF managed bean with session scope. This means also that it is possible to login the same user multiple times.
@@ -36,8 +33,6 @@ import org.primefaces.context.RequestContext;
 @SessionScoped
 public final class UserBean {
 
-	private static final String WELCOME_MSG_TEMPLATE = "growlComp.renderMessage({summary : '%s', detail : '%s', severity: 'info'});";
-
 	private String userName;
 	private String password;
 
@@ -109,18 +104,4 @@ public final class UserBean {
 	public void setGlobalPropertiesBean(final GlobalPropertiesBean globalPropertiesBean) {
 		this.globalPropertiesBean = globalPropertiesBean;
 	}
-
-	/**
-	 * This method shows the welcome message using the growl component and the global properties.
-	 */
-	public void showWelcomeMessage() {
-		if (this.globalPropertiesBean != null) {
-			final String finalMsg = String.format(UserBean.WELCOME_MSG_TEMPLATE,
-					this.globalPropertiesBean.getShortWelcomeMessage(FacesContext.getCurrentInstance().getELContext().getLocale()),
-					this.globalPropertiesBean.getWelcomeMessage(FacesContext.getCurrentInstance().getELContext().getLocale()));
-
-			RequestContext.getCurrentInstance().execute(finalMsg);
-		}
-	}
-
 }
diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java
index 6154d015..a86b2db7 100644
--- a/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java
+++ b/Kieker.WebGUI/src/main/java/kieker/webgui/beans/view/CurrentAnalysisEditorBean.java
@@ -53,6 +53,7 @@ import kieker.analysis.plugin.reader.AbstractReaderPlugin;
 import kieker.analysis.repository.AbstractRepository;
 import kieker.common.logging.Log;
 import kieker.common.logging.LogFactory;
+import kieker.webgui.beans.application.GlobalPropertiesBean;
 import kieker.webgui.beans.application.ProjectsBean;
 import kieker.webgui.beans.session.CurrentConfigurationBean;
 import kieker.webgui.common.ClassAndMethodContainer;
@@ -149,6 +150,9 @@ public final class CurrentAnalysisEditorBean {
 	@ManagedProperty(value = "#{currentConfigurationBean}")
 	private CurrentConfigurationBean currentConfigurationBean;
 
+	@ManagedProperty(value = "#{globalPropertiesBean}")
+	private GlobalPropertiesBean globalPropertiesBean;
+
 	/**
 	 * Creates a new instance of this class. <b>Do not call this constructor manually. It will only be accessed by JSF.</b>
 	 */
@@ -241,11 +245,11 @@ public final class CurrentAnalysisEditorBean {
 				}
 			} catch (final ProjectLoadException ex) {
 				CurrentAnalysisEditorBean.LOG.error("An error occured while loading the project.", ex);
-				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while loading the project.");
+				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgProjectLoadingException());
 			} catch (final NullPointerException ex) {
 				// This exception can occur, when a property has not been initialized
 				CurrentAnalysisEditorBean.LOG.error("An error occured while loading the project.", ex);
-				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while loading the project.");
+				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgProjectLoadingException());
 			}
 		}
 	}
@@ -672,7 +676,7 @@ public final class CurrentAnalysisEditorBean {
 			final MIDependency lib;
 			synchronized (this) {
 				this.projectManagerFacade.uploadLibrary(file, this.projectName);
-				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_INFO, "Libary uploaded.");
+				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_INFO, this.globalPropertiesBean.getMsgLibraryUploaded());
 				// As it seem to have worked, we can add the library to our model.
 				lib = this.factory.createDependency();
 				lib.setFilePath(file.getFileName());
@@ -686,19 +690,19 @@ public final class CurrentAnalysisEditorBean {
 			this.initializeToolPalette();
 		} catch (final LibraryAlreadyExistingException ex) {
 			CurrentAnalysisEditorBean.LOG.info("A library with the same name exists already.", ex);
-			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_WARN, "A library with the same name exists already.");
+			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_WARN, this.globalPropertiesBean.getMsgLibraryExistingException());
 		} catch (final IOException ex) {
 			CurrentAnalysisEditorBean.LOG.error("An error occured while uploading the library.", ex);
-			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while uploading the library.");
+			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgLibraryUploadingException());
 		} catch (final ProjectLoadException ex) {
 			CurrentAnalysisEditorBean.LOG.error("An error occured while uploading the library.", ex);
-			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while uploading the library.");
+			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgLibraryUploadingException());
 		} catch (final ProjectNotExistingException ex) {
 			CurrentAnalysisEditorBean.LOG.error("Project does not exist.", ex);
-			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "Project does not exist.");
+			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgProjectNotExistingException());
 		} catch (final LibraryLoadException ex) {
 			CurrentAnalysisEditorBean.LOG.error("An error occured while uploading the library.", ex);
-			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while uploading the library.");
+			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgLibraryUploadingException());
 		}
 	}
 
@@ -763,20 +767,20 @@ public final class CurrentAnalysisEditorBean {
 		synchronized (this) {
 			try {
 				this.projectManagerFacade.saveProject(this.projectName, this.project, this.timeStamp, overwriteNewerProject);
-				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_INFO, "Project saved.");
+				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_INFO, this.globalPropertiesBean.getMsgProjectSaved());
 				// Update the time stamp!
 				this.resetTimeStamp();
 			} catch (final IOException ex) {
 				CurrentAnalysisEditorBean.LOG.error("An error occured while saving the project.", ex);
-				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured while saving the project.");
+				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgProjectSavingException());
 			} catch (final NewerProjectException ex) {
 				CurrentAnalysisEditorBean.LOG.info("The project has been modified externally in the meanwhile.", ex);
-				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_WARN, "The project has been modified externally in the meanwhile.");
+				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_WARN, this.globalPropertiesBean.getMsgProjectModified());
 				// Give the user the possibility to force-save the project
 				RequestContext.getCurrentInstance().execute("forceSaveDlg.show()");
 			} catch (final ProjectNotExistingException ex) {
 				CurrentAnalysisEditorBean.LOG.error("The project does not exist.", ex);
-				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "The project does not exist.");
+				CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgProjectNotExistingException());
 			}
 		}
 	}
@@ -894,7 +898,7 @@ public final class CurrentAnalysisEditorBean {
 			}
 		} catch (final NoClassDefFoundError ex) {
 			// This exception can occur if (for example) a class is missing
-			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured during the creation of the repository. Check the dependencies.");
+			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgRepositoryCreationException());
 			CurrentAnalysisEditorBean.LOG.error("An error occured during the creation of the repository. Check the dependencies.", ex);
 		}
 	}
@@ -935,7 +939,7 @@ public final class CurrentAnalysisEditorBean {
 			}
 		} catch (final NoClassDefFoundError ex) {
 			// This exception can occur if (for example) a class is missing
-			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, "An error occured during the creation of the plugin. Check the dependencies.");
+			CurrentAnalysisEditorBean.showMessage(FacesMessage.SEVERITY_ERROR, this.globalPropertiesBean.getMsgPluginCreationException());
 			CurrentAnalysisEditorBean.LOG.error("An error occured during the creation of the plugin. Check the dependencies.", ex);
 		}
 	}
@@ -1190,6 +1194,14 @@ public final class CurrentAnalysisEditorBean {
 		}
 	}
 
+	public GlobalPropertiesBean getGlobalPropertiesBean() {
+		return this.globalPropertiesBean;
+	}
+
+	public void setGlobalPropertiesBean(final GlobalPropertiesBean globalPropertiesBean) {
+		this.globalPropertiesBean = globalPropertiesBean;
+	}
+
 	/**
 	 * This method should be delivered if an edge between two plugins has been created.
 	 * 
diff --git a/Kieker.WebGUI/src/main/resources/global.properties b/Kieker.WebGUI/src/main/resources/global.properties
index 915ffb4c..8733db72 100644
--- a/Kieker.WebGUI/src/main/resources/global.properties
+++ b/Kieker.WebGUI/src/main/resources/global.properties
@@ -22,4 +22,4 @@ kieker.webgui.config.analysisEditor.defaultGridColor = 0080FF
 #
 #------------------------------------------------------------------------------
 
-kieker.webgui.page.projectOverview = ProjectOverview.xhtml?faces-redirect=true
+kieker.webgui.page.projectOverview = ProjectOverviewPage.xhtml?faces-redirect=true
diff --git a/Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_de.properties b/Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_de.properties
new file mode 100644
index 00000000..04c380d0
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_de.properties
@@ -0,0 +1,50 @@
+#------------------------------------------------------------------------------
+#
+# Diese Datei beinhaltet sämtliche Nachrichten, Buttonbeschriftungen etc., 
+# welche innerhalb der Seite des Analyseeditors benutzt werden.
+#
+#------------------------------------------------------------------------------
+
+manageLibraries = Bibliotheken Verwalten
+
+graph = Graph
+analysisEditorScaleToFit  =  An Fenstergr\u00f6\u00dfe Anpassen
+grid = Gitter
+snap = Einrasten
+autoLayout = Auto-Layout
+
+disable = Deaktivieren
+enable = Aktivieren
+
+noPropertiesAvailable = Keine Eigenschaften vorhanden
+
+name = Name
+className = ClassName
+
+tooltipClassName = Der Klassenname der Komponente.
+tooltipName = Der Name der Komponente.
+
+availablePlugins = Verf\u00fcgbare Plugins
+
+reader = Reader
+filter = Filter
+repositories = Repositories
+
+configuration = Konfiguration
+dependencies = Abh\u00e4ngigkeiten
+inputPorts = Eingabeports
+outputPorts = Ausgabeports
+repositoryPorts = Repositoryports
+					   
+msgProjectModified = Das Projekt wurde in der Zwischenzeit au\u00dferhalb dieses Editors modifiziert. Wollen Sie die \u00c4nderungen \u00fcberschreiben?
+
+properties = Eigenschaften
+property = Eigenschaft
+value = Wert
+
+libraries = Bibliotheken
+fileName = Dateiname
+fileSize = Gr\u00f6\u00dfe
+libOptions = Optionen
+
+msgOnlyJar = Zur Zeit k\u00f6nnen lediglich *.jar-Abh\u00e4ngigkeiten hochgeladen werden. Die maximale Dateigr\u00f6\u00dfe ist beschr\u00e4nkt auf 100 [MiByte].
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_en.properties b/Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_en.properties
new file mode 100644
index 00000000..d0169ee3
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/AnalysisEditorPage_en.properties
@@ -0,0 +1,50 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used within
+# the analysis editor page.
+#
+#------------------------------------------------------------------------------
+
+manageLibraries = Manage Libraries
+
+graph = Graph
+analysisEditorScaleToFit = Scale To Fit
+grid = Grid
+snap = Snap
+autoLayout = Auto-Layout
+
+disable = Disable
+enable = Enable
+
+noPropertiesAvailable = No properties available
+
+name = Name
+className = ClassName
+
+tooltipClassName = The class name of this component.
+tooltipName = The name of this component.
+
+availablePlugins = Available Plugins
+
+reader = Reader
+filter = Filter
+repositories = Repositories
+
+configuration = Configuration
+dependencies = Dependencies
+inputPorts = Input Ports
+outputPorts = Output Ports
+repositoryPorts = Repository Ports
+					   
+msgProjectModified = The project has been modified externally in the meanwhile. Do you want to overwrite the changes?
+
+properties = Properties
+property = Property
+value = Value
+
+libraries = Libraries
+fileName = Filename
+fileSize = Size
+libOptions = Options
+
+msgOnlyJar = Currently only *.jar-Dependencies can be uploaded. The maximal file size is limited to 100 [MiByte].
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_de.properties b/Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_de.properties
new file mode 100644
index 00000000..c7f54336
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_de.properties
@@ -0,0 +1,6 @@
+#------------------------------------------------------------------------------
+#
+# Diese Datei beinhaltet sämtliche Nachrichten, Buttonbeschriftungen etc., 
+# welche innerhalb der Seite des Cockpiteditors benutzt werden.
+#
+#------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_en.properties b/Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_en.properties
new file mode 100644
index 00000000..34776ea9
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/CockpitEditorPage_en.properties
@@ -0,0 +1,6 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used within
+# the cockpit editor page.
+#
+#------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/CockpitPage_de.properties b/Kieker.WebGUI/src/main/resources/lang/CockpitPage_de.properties
new file mode 100644
index 00000000..2e3d90c2
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/CockpitPage_de.properties
@@ -0,0 +1,6 @@
+#------------------------------------------------------------------------------
+#
+# Diese Datei beinhaltet sämtliche Nachrichten, Buttonbeschriftungen etc., 
+# welche innerhalb des Cockpits benutzt werden.
+#
+#------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/CockpitPage_en.properties b/Kieker.WebGUI/src/main/resources/lang/CockpitPage_en.properties
new file mode 100644
index 00000000..0836a7cf
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/CockpitPage_en.properties
@@ -0,0 +1,6 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used within
+# the cockpit page.
+#
+#------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/Common_de.properties b/Kieker.WebGUI/src/main/resources/lang/Common_de.properties
new file mode 100644
index 00000000..5c3f7d72
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/Common_de.properties
@@ -0,0 +1,64 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used 
+# commonly.
+#
+#------------------------------------------------------------------------------
+
+yes = Ja
+ok = Ok
+cancel = Abbrechen
+
+choose = Durchsuchen
+
+file = Datei
+settings = Einstellungen
+
+help = Hilfe
+userGuide = User Guide
+about = \u00dcber...
+
+analysisEditor = Analyse Editor
+analysis = Analyse
+analysisController = Analyse Controller
+cockpitEditor = Cockpit Editor
+cockpit = Cockpit
+
+saveProject = Projekt Speichern
+saveProjectAs = Projekt Speichern Unter
+reloadProject = Projekt Neu Laden
+closeProject = Projekt schlie\u00dfen
+
+#------------------------------------------------------------------------------
+#
+# These are the messages for the settings dialog.
+#
+#------------------------------------------------------------------------------
+
+common = Allgemein
+lookAndFeel = Aussehen
+chooseTheme = Motiv Ausw\u00e4hlen
+language = Sprache
+
+toolPalette = Werkzeugpalette
+lists = Listen
+gridSize = Gittergr\u00f6\u00dfe
+gridColor = Gitterfarbe
+
+#------------------------------------------------------------------------------
+#
+# The following are error, exception and log messages.
+#
+#------------------------------------------------------------------------------
+
+msgProjectLoadingException = Beim Laden des Projekts ist ein Fehler aufgetreten. Bitte überprüfen Sie den Log für weitere Details. 
+msgProjectSaved = Das Projekt wurde erfolgreich gespeichert.
+msgPluginCreationException = Beim Erzeugen des Plugins ist ein Fehler aufgetreten. Bitte überprüfen Sie die Abhängigkeiten und den Log für weitere Details.
+msgRepositoryCreationException = Beim Erzeugen des Repositories ist ein Fehler aufgetreten. Bitte überprüfen Sie die Abhängigkeiten und den Log für weitere Details.
+msgLibraryUploaded = Die Bibliothek wurde erfolgreich hochgeladen.
+msgProjectCreated = Das Projekt wurde erfolgreich erstellt.
+msgProjectSavingException =  Beim Speichern des Projekts ist ein Fehler aufgetreten. Bitte überprüfen Sie den Log für weitere Details. 
+msgProjectNotExistingException = Das aktuelle Projekt existiert nicht.
+msgProjectModified = Das Projekt wurde in der Zwischenzeit au\u00dferhalb dieses Editors modifiziert.
+msgLibraryExistingException = Eine Bibliothek mit dem gleichen Namen existiert bereits.
+msgLibraryUploadingException =  Beim Hochladen der Bibliothek ist ein Fehler aufgetreten. Bitte überprüfen Sie den Log für weitere Details. 
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/Common_en.properties b/Kieker.WebGUI/src/main/resources/lang/Common_en.properties
new file mode 100644
index 00000000..611958bc
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/Common_en.properties
@@ -0,0 +1,64 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used 
+# commonly.
+#
+#------------------------------------------------------------------------------
+
+yes = Yes
+ok = Ok
+cancel = Cancel
+
+choose = Choose
+
+file = File
+settings = Settings
+
+help = Help
+userGuide = User Guide
+about = About...
+
+analysisEditor = Analysis Editor
+analysis = Analysis
+analysisController = Analysis Controller
+cockpitEditor = Cockpit Editor
+cockpit = Cockpit
+    
+saveProject = Save Project
+saveProjectAs = Save Project As
+reloadProject = Reload Project
+closeProject = Close Project	
+
+#------------------------------------------------------------------------------
+#
+# These are the messages for the settings dialog.
+#
+#------------------------------------------------------------------------------
+
+common = Common
+lookAndFeel = Look and Feel
+chooseTheme = Choose Theme
+language = Language
+
+toolPalette = Tool Palette
+lists = Lists
+gridSize = Grid-Size
+gridColor = Grid-Color
+
+#------------------------------------------------------------------------------
+#
+# The following are error, exception and log messages.
+#
+#------------------------------------------------------------------------------
+
+msgProjectLoadingException = An error occured during the load process of the project. Please check the log for further details.
+msgProjectSaved = The project has been saved successfully.
+msgPluginCreationException = An error occured during the creation of the plugin. Please check the dependencies and the log for further details.
+msgRepositoryCreationException = An error occured during the creation of the repository. Please check the dependencies and the log for further details.
+msgLibraryUploaded = The libary has been uploaded successfully.
+msgProjectCreated = The project has been created successfully.
+msgProjectSavingException =  An error occured while saving the project.
+msgProjectNotExistingException = The project does not exist.
+msgProjectModified = The project has been modified externally in the meanwhile.
+msgLibraryExistingException = A library with the same name exists already.
+msgLibraryUploadingException =   "An error occured while uploading the library.
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/ControllerPage_de.properties b/Kieker.WebGUI/src/main/resources/lang/ControllerPage_de.properties
new file mode 100644
index 00000000..1fbc8559
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/ControllerPage_de.properties
@@ -0,0 +1,16 @@
+#------------------------------------------------------------------------------
+#
+# Diese Datei beinhaltet sämtliche Nachrichten, Buttonbeschriftungen etc., 
+# welche innerhalb der Seite für die Analysesteuerung benutzt werden.
+#
+#------------------------------------------------------------------------------
+
+analysisControllerInstantiateAnalysisController = Analyse Instanziieren
+analysisControllerCleaAnalysisController = Analyse Bereinigen
+analysisControllerStartAnalysis = Analyse Starten
+analysisControllerStopAnalysis = Analyse Stoppen
+
+analysisControllerMsgNotInstantiated = Zeigt an, dass der AnalysisController noch nicht instanziiert wurde.
+analysisControllerMsgReady = Zeigt an, dass der AnalysisController zwar instanziiert, jedoch noch nicht gestartet wurde.
+analysisControllerMsgRunning = Zeigt an, dass der AnalysisController gestartet wurde und zur Zeit läuft.
+analysisControllerMsgFailed = Zeigt an, dass der AnalysisController terminiert oder abgestürzt ist.
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/ControllerPage_en.properties b/Kieker.WebGUI/src/main/resources/lang/ControllerPage_en.properties
new file mode 100644
index 00000000..589350fa
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/ControllerPage_en.properties
@@ -0,0 +1,16 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used within
+# the analysis controller page.
+#
+#------------------------------------------------------------------------------
+
+analysisControllerInstantiateAnalysisController = Instantiate Analysis
+analysisControllerCleaAnalysisController = Clean Analysis
+analysisControllerStartAnalysis = Start Analysis
+analysisControllerStopAnalysis = Stop Analysis
+
+analysisControllerMsgNotInstantiated = Indicates that the AnalysisController has not been instantiated yet.
+analysisControllerMsgReady = Indicates that the AnalysisController has been instantiated, but not yet started.
+analysisControllerMsgRunning = Indicates that the AnalysisController has been started and is running.
+analysisControllerMsgFailed = Indicates that the AnalysisController has been terminated or has failed.
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/LoginPage_de.properties b/Kieker.WebGUI/src/main/resources/lang/LoginPage_de.properties
new file mode 100644
index 00000000..09a1715f
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/LoginPage_de.properties
@@ -0,0 +1,16 @@
+#------------------------------------------------------------------------------
+#
+# Diese Datei beinhaltet sämtliche Nachrichten, Buttonbeschriftungen etc., 
+# welche innerhalb der Anmeldeseite benutzt werden.
+#
+#------------------------------------------------------------------------------
+
+msgWelcomeShort = Willkommen bei der Kieker.WebGUI
+msgWelcome = Dies ist eine fr\u00fche Beta Version der Kieker Web GUI. Deshalb kann diese noch Bugs enthalten und einige Funktionalit\u00e4ten sind m\u00f6glicherweise noch nicht implementiert. Klicken Sie einfach auf "Anmelden" um fortzufahren.
+
+username = Benutzername
+password = Passwort
+
+login = Anmelden
+
+hint = Hinweis: Die Kieker.WebGUI benötigt Cookies und JavaScript, um korrekt zu funktionieren. Bitte stellen Sie sicher, dass beides aktiviert ist.
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/LoginPage_en.properties b/Kieker.WebGUI/src/main/resources/lang/LoginPage_en.properties
new file mode 100644
index 00000000..31473261
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/LoginPage_en.properties
@@ -0,0 +1,16 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used within
+# the login page.
+#
+#------------------------------------------------------------------------------
+
+msgWelcomeShort = Welcome to the Kieker.WebGUI
+msgWelcome = This is an early beta version of the Kieker Web GUI. Therefore it may contain bugs and some functionality may have not been implemented yet. Just click "Login" to continue.
+
+username = Username
+password = Password
+
+login = Login
+
+hint = Hint: The Kieker.WebGUI requires Cookies and JavaScript in order to work correctly. Please make sure that both is enabled.
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_de.properties b/Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_de.properties
new file mode 100644
index 00000000..dd9d1586
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_de.properties
@@ -0,0 +1,24 @@
+#------------------------------------------------------------------------------
+#
+# Diese Datei beinhaltet sämtliche Nachrichten, Buttonbeschriftungen etc., 
+# welche innerhalb der Projektübersichtsseite benutzt werden.
+#
+#------------------------------------------------------------------------------
+
+newProject = Neues Projekt
+importProject = Projekt Importieren
+refreshProjectsList = Projektliste Aktualisieren
+
+projectName = Projektname
+state = Status
+lastModification = Letzte \u00c4nderung
+owner = Besitzer
+
+copyProject = Projekt Kopieren
+renameProject = Projekt Umbenennen
+deleteProject = Projekt L\u00f6schen
+
+name = Name
+newName = Neuer Name 
+
+msgReallyDeleteProject = M\u00f6chten Sie wirklich das ausgew\u00e4hlte Projekt l\u00f6schen?
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_en.properties b/Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_en.properties
new file mode 100644
index 00000000..7e12607f
--- /dev/null
+++ b/Kieker.WebGUI/src/main/resources/lang/ProjectOverviewPage_en.properties
@@ -0,0 +1,24 @@
+#------------------------------------------------------------------------------
+#
+# This file contains all messages, button captions etc. which are used within
+# the project overview page.
+#
+#------------------------------------------------------------------------------
+
+newProject = New Project
+importProject = Import Project
+refreshProjectsList = Refresh Projects List
+
+projectName = Project Name
+state = State
+lastModification = Last Modification
+owner = Owner
+
+copyProject = Copy Project
+renameProject = Rename Project
+deleteProject = Delete Project
+
+name = Name
+newName = New Name 
+
+msgReallyDeleteProject = Do you really want to delete the selected project?
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/messages_de.properties b/Kieker.WebGUI/src/main/resources/messages_de.properties
deleted file mode 100644
index fa6d9e46..00000000
--- a/Kieker.WebGUI/src/main/resources/messages_de.properties
+++ /dev/null
@@ -1,158 +0,0 @@
-#------------------------------------------------------------------------------
-#
-# These are the messages which are commonly used within all pages.
-#
-#------------------------------------------------------------------------------
-
-yes=Ja
-ok=Ok
-cancel=Abbrechen
-
-choose=Durchsuchen
-
-file=Datei
-newProject=Neues Project
-importProject=Projekt Importieren
-refreshProjectsList=Projektliste Aktualisieren
-settings=Einstellungen
-
-help=Hilfe
-userGuide=User Guide
-about=\u00dcber...
-
-analysisEditor=Analyse Editor
-analysis=Analyse
-analysisController=Analyse Controller
-cockpitEditor=Cockpit Editor
-cockpit=Cockpit
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the login page.
-#
-#------------------------------------------------------------------------------
-
-shortWelcomeMessage=Willkommen bei der Kieker.WebGUI
-longWelcomeMessage=Dies ist eine fr\u00fche Alpha Version der Kieker Web GUI. Deshalb kann diese noch Bugs enthalten und einige Funktionalit\u00e4ten sind m\u00f6glicherweise noch nicht implementiert. Klicken Sie einfach auf "Anmelden" um fortzufahren.
-
-username=Benutzername
-password=Passwort
-
-login=Anmelden
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the project overview page.
-#
-#------------------------------------------------------------------------------
-
-projectName=Projektname
-state=Status
-lastModification=Letzte \u00c4nderung
-owner=Besitzer
-
-copyProject=Projekt Kopieren
-renameProject=Projekt Umbenennen
-deleteProject=Projekt L\u00f6schen
-
-name=Name
-newName=Neuer Name 
-
-msgReallyDeleteProject=M\u00f6chten Sie wirklich das ausgew\u00e4hlte Projekt l\u00f6schen?
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the analysis editor page.
-#
-#------------------------------------------------------------------------------
-
-saveProject=Projekt Speichern
-saveProjectAs=Projekt Speichern Unter
-reloadProject=Projekt Neu Laden
-manageLibraries=Bibliotheken Verwalten
-closeProject=Projekt schlie\u00dfen
-
-graph=Graph
-analysisEditorScaleToFit = An Fenstergr\u00f6\u00dfe Anpassen
-grid=Gitter
-snap=Einrasten
-autoLayout=Auto-Layout
-
-disable=Deaktivieren
-enable=Aktivieren
-
-noPropertiesAvailable=Keine Eigenschaften vorhanden
-
-className=ClassName
-
-tooltipClassName=Der Klassenname der Komponente.
-tooltipName=Der Name der Komponente.
-
-availablePlugins=Verf\u00fcgbare Plugins
-
-reader=Reader
-filter=Filter
-repositories=Repositories
-
-configuration=Konfiguration
-dependencies=Abh\u00e4ngigkeiten
-inputPorts=Eingabeports
-outputPorts=Ausgabeports
-repositoryPorts=Repositoryports
-					   
-msgProjectModified=Das Projekt wurde in der Zwischenzeit au\u00dferhalb dieses Editors modifiziert. Wollen Sie die \u00c4nderungen \u00fcberschreiben?
-
-properties=Eigenschaften
-property=Eigenschaft
-value=Wert
-
-libraries=Bibliotheken
-fileName=Dateiname
-fileSize=Gr\u00f6\u00dfe
-libOptions=Optionen
-
-msgOnlyJar=Zur Zeit k\u00f6nnen lediglich *.jar-Abh\u00e4ngigkeiten hochgeladen werden. Die maximale Dateigr\u00f6\u00dfe ist beschr\u00e4nkt auf 100 [MiByte].
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the analysis page.
-#
-#------------------------------------------------------------------------------
-
-analysisControllerInstantiateAnalysisController = Analyse Instanziieren
-analysisControllerCleaAnalysisController = Analyse Bereinigen
-analysisControllerStartAnalysis = Analyse Starten
-analysisControllerStopAnalysis = Analyse Stoppen
-
-analysisControllerMsgNotInstantiated = Zeigt an, dass der AnalysisController noch nicht instanziiert wurde.
-analysisControllerMsgReady = Zeigt an, dass der AnalysisController zwar instanziiert, jedoch noch nicht gestartet wurde.
-analysisControllerMsgRunning = Zeigt an, dass der AnalysisController gestartet wurde und zur Zeit läuft.
-analysisControllerMsgFailed = Zeigt an, dass der AnalysisController terminiert oder abgestürzt ist.
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the cockpit editor page.
-#
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the cockpit page.
-#
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the settings dialog.
-#
-#------------------------------------------------------------------------------
-
-common=Allgemein
-lookAndFeel=Aussehen
-chooseTheme=Motiv Ausw\u00e4hlen
-language=Sprache
-
-toolPalette=Werkzeugpalette
-lists=Listen
-gridSize=Gittergr\u00f6\u00dfe
-gridColor=Gitterfarbe
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/resources/messages_en.properties b/Kieker.WebGUI/src/main/resources/messages_en.properties
deleted file mode 100644
index d1c6a90e..00000000
--- a/Kieker.WebGUI/src/main/resources/messages_en.properties
+++ /dev/null
@@ -1,158 +0,0 @@
-#------------------------------------------------------------------------------
-#
-# These are the messages which are commonly used within all pages.
-#
-#------------------------------------------------------------------------------
-
-yes=Yes
-ok=Ok
-cancel=Cancel
-
-choose=Choose
-
-file=File
-newProject=New Project
-importProject=Import Project
-refreshProjectsList=Refresh Projects List
-settings=Settings
-
-help=Help
-userGuide=User Guide
-about=About...
-
-analysisEditor=Analysis Editor
-analysis=Analysis
-analysisController=Analysis Controller
-cockpitEditor=Cockpit Editor
-cockpit=Cockpit
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the login page.
-#
-#------------------------------------------------------------------------------
-
-shortWelcomeMessage=Welcome to the Kieker.WebGUI
-longWelcomeMessage=This is an early alpha version of the Kieker Web GUI. Therefore it may contain bugs and some functionality may have not been implemented yet. Just click "Login" to continue.
-
-username=Username
-password=Password
-
-login=Login
-           
-#------------------------------------------------------------------------------
-#
-# These are the messages for the project overview page.
-#
-#------------------------------------------------------------------------------
-
-projectName=Project Name
-state=State
-lastModification=Last Modification
-owner=Owner
-
-copyProject=Copy Project
-renameProject=Rename Project
-deleteProject=Delete Project
-
-name=Name
-newName=New Name 
-
-msgReallyDeleteProject=Do you really want to delete the selected project?
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the analysis editor page.
-#
-#------------------------------------------------------------------------------
-
-saveProject=Save Project
-saveProjectAs=Save Project As
-reloadProject=Reload Project
-manageLibraries=Manage Libraries
-closeProject=Close Project
-
-graph=Graph
-analysisEditorScaleToFit=Scale To Fit
-grid=Grid
-snap=Snap
-autoLayout=Auto-Layout
-
-disable=Disable
-enable=Enable
-
-noPropertiesAvailable=No properties available
-
-className=ClassName
-
-tooltipClassName=The class name of this component.
-tooltipName=The name of this component.
-
-availablePlugins=Available Plugins
-
-reader=Reader
-filter=Filter
-repositories=Repositories
-
-configuration=Configuration
-dependencies=Dependencies
-inputPorts=Input Ports
-outputPorts=Output Ports
-repositoryPorts=Repository Ports
-					   
-msgProjectModified=The project has been modified externally in the meanwhile. Do you want to overwrite the changes?
-
-properties=Properties
-property=Property
-value=Value
-
-libraries=Libraries
-fileName=Filename
-fileSize=Size
-libOptions=Options
-
-msgOnlyJar=Currently only *.jar-Dependencies can be uploaded. The maximal file size is limited to 100 [MiByte].
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the analysis page.
-#
-#------------------------------------------------------------------------------
-
-analysisControllerInstantiateAnalysisController = Instantiate Analysis
-analysisControllerCleaAnalysisController = Clean Analysis
-analysisControllerStartAnalysis = Start Analysis
-analysisControllerStopAnalysis = Stop Analysis
-
-analysisControllerMsgNotInstantiated = Indicates that the AnalysisController has not been instantiated yet.
-analysisControllerMsgReady = Indicates that the AnalysisController has been instantiated, but not yet started.
-analysisControllerMsgRunning = Indicates that the AnalysisController has been started and is running.
-analysisControllerMsgFailed = Indicates that the AnalysisController has been terminated or has failed.
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the cockpit editor page.
-#
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the cockpit page.
-#
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-#
-# These are the messages for the settings dialog.
-#
-#------------------------------------------------------------------------------
-
-common=Common
-lookAndFeel=Look and Feel
-chooseTheme=Choose Theme
-language=Language
-
-toolPalette=Tool Palette
-lists=Lists
-gridSize=Grid-Size
-gridColor=Grid-Color
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/AnalysisEditor.xhtml b/Kieker.WebGUI/src/main/webapp/AnalysisEditor.xhtml
deleted file mode 100644
index cc3978dd..00000000
--- a/Kieker.WebGUI/src/main/webapp/AnalysisEditor.xhtml
+++ /dev/null
@@ -1,295 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:f="http://java.sun.com/jsf/core"
-      xmlns:p="http://primefaces.org/ui">
-
-    <!-- The following part makes sure that the assigned parameter will be used to load the project. -->
-    <f:metadata>
-        <f:viewParam id="projectNameParam" name="projectName" value="#{currentAnalysisEditorBean.projectName}"/>
-        <f:event type="preRenderView" listener="#{currentAnalysisEditorBean.initialize()}"  />
-    </f:metadata>
-
-    <f:view>
-        <h:head>
-            <title>Kieker.WebGUI</title>
-            <!-- Load the necessary CSS files. -->
-            <link rel="stylesheet" type="text/css" href="../css/FlowEditor.css"  />
-            <link rel="stylesheet" type="text/css" href="../css/Common.css" />
-            <link rel="stylesheet" type="text/css" href="../css/AnalysisEditor.css" />
-
-            <!-- Load the necessary JS files. -->
-            <script language="javascript" type="text/javascript" src="../js/jit.js"></script>
-            <script language="javascript" type="text/javascript" src="../js/flowEditor.js"></script>
-
-            <script>            
-                nodeClickListener = function(node, info, e) {
-                    nodeClickCommand([{name : 'ID', value : node.id}]);
-                }
-            
-                nodeRemoveListener = function(node) {
-                    nodeRemoveCommand([{name : 'ID', value : node.id}]);
-                }
-            
-                edgeCreateListener = function(sourceNode, targetNode, sourcePort, targetPort) {
-                    edgeCreateCommand([{name : 'sourcePortID', value : sourcePort.id},{name : 'targetPortID', value : targetPort.id}]);
-                }
-            
-                edgeRemoveListener = function(sourceNode, targetNode, sourcePort, targetPort) {
-                    edgeRemoveCommand([{name : 'sourcePortID', value : sourcePort.id},{name : 'targetPortID', value : targetPort.id}]);
-                }
-            </script>
-        </h:head>
-
-        <h:body>         
-            <h:form id="hidden" style="display:none">
-                <p:remoteCommand autoRun="true" name="init" action="#{currentAnalysisEditorBean.initializeGraph()}" />
-            </h:form>
-            <h:form id="hiddenNodeProperties" style="display:none"> 
-                <p:remoteCommand name="nodeClickCommand" action="#{currentAnalysisEditorGraphBean.nodeClicked()}" update=":propertiesForm"/>
-                <p:remoteCommand name="nodeRemoveCommand" action="#{currentAnalysisEditorGraphBean.nodeRemoved()}" update=":propertiesForm"/>
-                <p:remoteCommand name="edgeCreateCommand" action="#{currentAnalysisEditorGraphBean.edgeCreated()}"/>
-                <p:remoteCommand name="edgeRemoveCommand" action="#{currentAnalysisEditorGraphBean.edgeRemoved()}"/>
-            </h:form>
-
-            <p:layout fullPage="true">
-
-                <p:layoutUnit position="north">
-                    <h:form id="menuForm">
-                        <!-- The following is the toolbar to navigate between the different pages. -->
-                        <p:toolbar>
-                            <p:toolbarGroup align="left">
-                                <h:outputText styleClass="kieker-title" value="Kieker &raquo; #{stringBean.shortenLongName(currentAnalysisEditorBean.projectName, 30)}"/>
-                            </p:toolbarGroup>
-                            <p:toolbarGroup align="right">
-                                <p:commandButton styleClass="perspective-button" icon="ui-icon-home" action="ProjectOverview.xhtml?faces-redirect=true" />
-                                <p:separator/>
-                                <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" disabled="true"/>
-                                <p:button styleClass="perspective-button" icon="ui-icon-analysis" value="#{localizedMessages.analysis}" outcome="Controller.xhtml?faces-redirect=true">
-                                    <f:param name="projectName" value="#{currentAnalysisEditorBean.projectName}" rendered="#{not empty currentAnalysisEditorBean.projectName}" />
-                                </p:button>
-                                <p:separator/>
-                                <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" disabled="true">
-                                </p:button>
-                                <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" disabled="true">
-                                </p:button>
-                            </p:toolbarGroup>
-                        </p:toolbar>
-
-                        <!-- The following is the main menu. -->
-                        <p:menubar> 
-                            <p:submenu  label="#{localizedMessages.file}">
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-save" value="  #{localizedMessages.saveProject}" update=":messages" ajax="true" action="#{currentAnalysisEditorBean.saveProject(false)}" disabled="#{empty currentAnalysisEditorBean.project}"/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-saveAs" value="  #{localizedMessages.saveProjectAs}" update=":messages" ajax="true" disabled="#{true or empty currentAnalysisEditorBean.project}"/>
-                                <p:separator />
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-reload" value="  #{localizedMessages.reloadProject}" ajax="false" url="analysisEditor?projectName=#{currentAnalysisEditorBean.projectName}" disabled="#{empty currentAnalysisEditorBean.project}" />
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-manageLibraries" value="  #{localizedMessages.manageLibraries}" onclick="manageLibrariesDialog.show()" ajax="true" disabled="#{empty currentAnalysisEditorBean.project}"/>
-                                <p:separator />
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-settings" value="  #{localizedMessages.settings}" onclick="settingsDlg.show()" ajax="true"/>
-                                <p:separator />
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-close" value="  #{localizedMessages.closeProject}" action="ProjectOverview.xhtml?faces-redirect=true" ajax="false"/>
-                            </p:submenu>
-
-                            <p:submenu label="Graph">
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-scaleToFitSmall" value="  #{localizedMessages.analysisEditorScaleToFit}" ajax="true" action="#{currentAnalysisEditorGraphBean.scaleToFit()}" />
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.gridEnabled ? 'ui-icon-gridEnabledSmall' : 'ui-icon-gridDisabledSmall'}" value="  #{localizedMessages.grid} #{currentAnalysisEditorGraphBean.gridEnabled ? localizedMessages.disable : localizedMessages.enable}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchGrid()}" update=":menuForm"/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.snapEnabled ? 'ui-icon-snapEnabledSmall' : 'ui-icon-snapDisabledSmall'}" value="  #{localizedMessages.snap} #{currentAnalysisEditorGraphBean.snapEnabled ? localizedMessages.disable: localizedMessages.enable}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchSnap()}" update=":menuForm"/>
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-autoLayoutSmall" value="  #{localizedMessages.autoLayout}" ajax="true" />
-                            </p:submenu>
-
-                            <p:submenu label="#{localizedMessages.help}">
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-userGuide" value="  #{localizedMessages.userGuide}" ajax="true" disabled="true"/>
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-about" value="  #{localizedMessages.about}" onclick="aboutDlg.show()" ajax="true"/>
-                            </p:submenu>
-
-                            <p:menuitem styleClass="logOutButton element-with-whitespace" icon="ui-icon-logout" value=" #{userBean.userName}" ajax="true" url="login"/>
-                        </p:menubar> 
-                        <p:spacer height="5"/>
-                        <p:menubar> 
-                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-scaleToFit" ajax="true" action="#{currentAnalysisEditorGraphBean.scaleToFit()}" />
-                            <p:menuitem styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.gridEnabled ? 'ui-icon-gridEnabled' : 'ui-icon-gridDisabled'}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchGrid()}" update=":menuForm"/>
-                            <p:menuitem styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.snapEnabled ? 'ui-icon-snapEnabled' : 'ui-icon-snapDisabled'}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchSnap()}" update=":menuForm"/>
-                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-autoLayout" ajax="true" />
-                        </p:menubar>
-                    </h:form>
-                </p:layoutUnit>
-
-                <!-- This is the center component showing the graph and everything. -->
-                <p:layoutUnit style="font-size: 12px" position="center" id="centerLayout">
-                    <div id="center-container" style="width: 100%;height: 100%">
-                        <div id="infovis"/> 
-                    </div>
-                </p:layoutUnit> 
-
-                <!-- This is the component presenting the available properties. -->
-                <p:layoutUnit style="font-size: 12px" position="south" size="150" header="#{localizedMessages.properties}" resizable="true" collapsible="true">
-                    <h:form id="propertiesForm" >
-                        <p:dataTable editable="true" value="#{currentAnalysisEditorBean.advancedPluginProperties}" var="property" rowIndexVar="rowIndex" emptyMessage="No properties available" rendered="#{not empty currentAnalysisEditorBean.selectedPlugin}">
-                            <p:column headerText="#{localizedMessages.property}" style="width:125px">
-                                <!-- The first property is always the classname, the second one always the normal name. After that, other properties can follow. -->
-                                <h:outputText id="classNameProperty" value="#{localizedMessages.className}" rendered="#{rowIndex == 0}"/>
-                                <h:outputText id="nameProperty" value="#{localizedMessages.name}" rendered="#{rowIndex == 1}"/>
-                                <h:outputText id="normalProperty" value="#{property.name}" rendered="#{rowIndex > 1}"/>
-                                <p:tooltip for="classNameProperty" value="#{localizedMessages.tooltipClassName}" rendered="#{rowIndex == 0}"/>
-                                <p:tooltip for="nameProperty" value="#{localizedMessages.tooltipName}" rendered="#{rowIndex == 1}"/>
-                                <p:tooltip for="normalProperty" value="#{currentAnalysisEditorBean.getDescription(currentAnalysisEditorBean.selectedPlugin, property.name)}" rendered="#{rowIndex > 1}"/>
-                            </p:column>
-
-                            <!-- The classname is not editable, the name is editable with a specific target, other properies are editable normally. -->
-                            <p:column headerText="#{localizedMessages.value}" style="width:125px">
-                                <h:outputText id="className" value="#{currentAnalysisEditorBean.selectedPlugin.classname}" rendered="#{rowIndex == 0}"/>
-                                <p:inplace id="nameEditor" editor="true" rendered="#{rowIndex == 1}" >  
-                                    <p:inputText value="#{currentAnalysisEditorBean.selectedPlugin.name}" />
-                                    <p:ajax event="save" listener="#{currentAnalysisEditorGraphBean.renameNode(currentAnalysisEditorBean.selectedPlugin, currentAnalysisEditorBean.selectedPlugin.name)}" />
-                                </p:inplace>  
-                                <p:inplace id="normalEditor" editor="true" rendered="#{rowIndex > 1}">  
-                                    <p:inputText value="#{property.value}" />
-                                </p:inplace>  
-                                <p:tooltip for="className" value="#{localizedMessages.tooltipClassName}" rendered="#{rowIndex == 0}"/>
-                                <p:tooltip for="nameEditor" value="#{localizedMessages.tooltipName}" rendered="#{rowIndex == 1}"/>
-                                <p:tooltip for="normalEditor" value="#{currentAnalysisEditorBean.getDescription(currentAnalysisEditorBean.selectedPlugin, property.name)}" rendered="#{rowIndex > 1}"/>
-                            </p:column>                       
-                        </p:dataTable>
-                    </h:form>
-                </p:layoutUnit>
-
-                <!-- The following is the toolpalette, presenting the available plugins etc. -->
-                <p:layoutUnit position="east" size="300" header="#{localizedMessages.availablePlugins}" resizable="true" collapsible="true">
-                    <h:form id="toolpalette">
-                        <p:accordionPanel multiple="true" activeIndex="0,1,2">
-                            <p:tab title="#{localizedMessages.reader}">
-                                <ui:repeat value="#{currentAnalysisEditorBean.availableReaders}" var="reader">
-                                    <p:commandLink id="readerLink" value="#{reader.simpleName}" action="#{currentAnalysisEditorBean.addPlugin(reader)}" update=":messages" /><br/>
-                                    <p:tooltip for="readerLink">
-                                        <b><h:outputText value="#{reader.simpleName} (#{reader.name})"/></b>
-                                        <br/>
-                                        <h:outputText value="#{currentAnalysisEditorBean.getDescription(reader)}"/>
-                                        <br/><br/>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getOutputPorts(reader)}">
-                                            <b><h:outputText value="#{localizedMessages.outputPorts}:"/></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getOutputPorts(reader)}" var="port">
-                                                #{port.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getRepositoryPorts(reader)}">
-                                            <b><h:outputText value="#{localizedMessages.repositoryPorts}:" /></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getRepositoryPorts(reader)}" var="port">
-                                                #{port.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getProperties(reader)}">
-                                            <b><h:outputText value="#{localizedMessages.configuration}:"/></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getProperties(reader)}" var="property">
-                                                #{property.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getDependencies(reader)}">
-                                            <b><h:outputText value="#{localizedMessages.dependencies}:"/></b>
-                                            <br/>
-                                            <h:outputText value="#{currentAnalysisEditorBean.getDependencies(reader)}"/>
-                                        </ui:fragment>
-                                    </p:tooltip>
-                                </ui:repeat>
-                            </p:tab>
-                            <p:tab title="#{localizedMessages.filter}">
-                                <ui:repeat value="#{currentAnalysisEditorBean.availableFilters}" var="filter">
-                                    <p:commandLink id="filterLink" value="#{filter.simpleName}" action="#{currentAnalysisEditorBean.addPlugin(filter)}" update=":messages"/><br/>
-                                    <p:tooltip for="filterLink">
-                                        <b><h:outputText value="#{filter.simpleName} (#{filter.name})"/></b>
-                                        <br/>
-                                        <h:outputText value="#{currentAnalysisEditorBean.getDescription(filter)}"/>
-                                        <br/><br/>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getInputPorts(filter)}">
-                                            <b><h:outputText value="#{localizedMessages.inputPorts}:"/></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getInputPorts(filter)}" var="port">
-                                                #{port.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getOutputPorts(filter)}">
-                                            <b><h:outputText value="#{localizedMessages.outputPorts}:"/></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getOutputPorts(filter)}" var="port">
-                                                #{port.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getRepositoryPorts(filter)}">
-                                            <b><h:outputText value="#{localizedMessages.repositoryPorts}:"/></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getRepositoryPorts(filter)}" var="port">
-                                                #{port.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getProperties(filter)}">
-                                            <b><h:outputText value="#{localizedMessages.configuration}:"/></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getProperties(filter)}" var="property">
-                                                #{property.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getDependencies(filter)}">
-                                            <b><h:outputText value="#{localizedMessages.dependencies}:"/></b>
-                                            <br/>
-                                            <h:outputText value="#{currentAnalysisEditorBean.getDependencies(filter)}"/>
-                                        </ui:fragment>
-                                    </p:tooltip>                                
-                                </ui:repeat>
-                            </p:tab>
-                            <p:tab title="#{localizedMessages.repositories}">
-                                <ui:repeat value="#{currentAnalysisEditorBean.availableRepositories}" var="repository">
-                                    <p:commandLink id="repositoryLink" value="#{repository.simpleName}" action="#{currentAnalysisEditorBean.addRepository(repository)}" update=":messages"/><br/>
-                                    <p:tooltip for="repositoryLink">
-                                        <b><h:outputText value="#{repository.simpleName} (#{repository.name})"/></b>
-                                        <br/>
-                                        <h:outputText value="#{currentAnalysisEditorBean.getDescription(repository)}"/>
-                                        <br/><br/>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getProperties(repository)}">
-                                            <b><h:outputText value="#{localizedMessages.configuration}:"/></b>
-                                            <p:dataList value="#{currentAnalysisEditorBean.getProperties(repository)}" var="property">
-                                                #{property.name()}
-                                            </p:dataList>
-                                        </ui:fragment>
-                                        <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getDependencies(repository)}">
-                                            <b><h:outputText value="#{localizedMessages.dependencies}:"/></b>
-                                            <br/>
-                                            <h:outputText value="#{currentAnalysisEditorBean.getDependencies(repository)}"/>
-                                        </ui:fragment>
-                                    </p:tooltip>  
-                                </ui:repeat>
-                            </p:tab>
-                        </p:accordionPanel>
-                    </h:form>
-                </p:layoutUnit>
-            </p:layout>
-
-            <p:dialog header="#{localizedMessages.saveProject}" resizable="false" modal="true" widgetVar="forceSaveDlg">
-                <h:form>
-                    <div style="text-align: center">
-                        <h:outputText value="#{localizedMessages.msgProjectModified}" /> 
-                    </div>
-                    <hr/>
-                    <div style="text-align: right">
-                        <p:commandButton value="#{localizedMessages.yes}" action="#{currentAnalysisEditorBean.saveProject(true)}" oncomplete="forceSaveDlg.hide()" update=":messages" />
-                        <p:spacer width="10px" height="10" />
-                        <p:commandButton value="#{localizedMessages.cancel}" onclick="forceSaveDlg.hide()" />
-                    </div>
-                </h:form>
-            </p:dialog>
-
-            <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
-
-            <!-- Include the dialog for the configuration. -->
-            <ui:include src="dialogs/settingsDialog.xhtml"/>
-
-            <!-- Include the about-dialog. -->
-            <ui:include src="dialogs/aboutDialog.xhtml" />
-
-            <!-- Include the dialog the manage the libraries. -->
-            <ui:include src="dialogs/manageLibrariesDialog.xhtml" />
-
-        </h:body>
-    </f:view>
-</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/AnalysisEditorPage.xhtml b/Kieker.WebGUI/src/main/webapp/AnalysisEditorPage.xhtml
new file mode 100644
index 00000000..f9c018c6
--- /dev/null
+++ b/Kieker.WebGUI/src/main/webapp/AnalysisEditorPage.xhtml
@@ -0,0 +1,302 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:p="http://primefaces.org/ui">
+
+    <!-- The following part makes sure that the assigned parameter will be used to load the project. -->
+    <f:metadata>
+        <f:viewParam id="projectNameParam" name="projectName" value="#{currentAnalysisEditorBean.projectName}"/>
+        <f:event type="preRenderView" listener="#{currentAnalysisEditorBean.initialize()}"  />
+    </f:metadata>
+
+    <f:loadBundle var="localizedMessages" basename="lang.Common"/>
+    <f:loadBundle var="localizedAnalysisEditorPageMessages" basename="lang.AnalysisEditorPage"/>
+
+    <h:head>
+        <title>Kieker.WebGUI</title>
+        <!-- Load the necessary CSS files. -->
+        <link rel="stylesheet" type="text/css" href="../css/FlowEditor.css"  />
+        <link rel="stylesheet" type="text/css" href="../css/Common.css" />
+        <link rel="stylesheet" type="text/css" href="../css/Icons.css" />
+        <link rel="stylesheet" type="text/css" href="../css/AnalysisEditorPage.css" />
+
+        <!-- Load the necessary JS files. -->
+        <script language="javascript" type="text/javascript" src="../js/jit.js"></script>
+        <script language="javascript" type="text/javascript" src="../js/flowEditor.js"></script>
+
+        <script>            
+            nodeClickListener = function(node, info, e) {
+                nodeClickCommand([{name : 'ID', value : node.id}]);
+            }
+            
+            nodeRemoveListener = function(node) {
+                nodeRemoveCommand([{name : 'ID', value : node.id}]);
+            }
+            
+            edgeCreateListener = function(sourceNode, targetNode, sourcePort, targetPort) {
+                edgeCreateCommand([{name : 'sourcePortID', value : sourcePort.id},{name : 'targetPortID', value : targetPort.id}]);
+            }
+            
+            edgeRemoveListener = function(sourceNode, targetNode, sourcePort, targetPort) {
+                edgeRemoveCommand([{name : 'sourcePortID', value : sourcePort.id},{name : 'targetPortID', value : targetPort.id}]);
+            }
+        </script>
+    </h:head>
+
+    <h:body>         
+        <h:form id="hidden" style="display:none">
+            <p:remoteCommand autoRun="true" name="init" action="#{currentAnalysisEditorBean.initializeGraph()}" />
+        </h:form>
+        <h:form id="hiddenNodeProperties" style="display:none"> 
+            <p:remoteCommand name="nodeClickCommand" action="#{currentAnalysisEditorGraphBean.nodeClicked()}" update=":propertiesForm"/>
+            <p:remoteCommand name="nodeRemoveCommand" action="#{currentAnalysisEditorGraphBean.nodeRemoved()}" update=":propertiesForm"/>
+            <p:remoteCommand name="edgeCreateCommand" action="#{currentAnalysisEditorGraphBean.edgeCreated()}"/>
+            <p:remoteCommand name="edgeRemoveCommand" action="#{currentAnalysisEditorGraphBean.edgeRemoved()}"/>
+        </h:form>
+
+        <p:layout fullPage="true">
+
+            <p:layoutUnit position="north">
+                <h:form id="menuForm">
+                    <!-- The following is the toolbar to navigate between the different pages. -->
+                    <p:toolbar>
+                        <p:toolbarGroup align="left">
+                            <h:outputText styleClass="kieker-title" value="Kieker &raquo; #{stringBean.shortenLongName(currentAnalysisEditorBean.projectName, 30)}"/>
+                        </p:toolbarGroup>
+                        <p:toolbarGroup align="right">
+                            <p:commandButton styleClass="perspective-button" icon="ui-icon-home" action="ProjectOverviewPage.xhtml?faces-redirect=true" />
+                            <p:separator/>
+                            <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" disabled="true"/>
+                            <p:button styleClass="perspective-button" icon="ui-icon-analysis" value="#{localizedMessages.analysis}" outcome="ControllerPage.xhtml?faces-redirect=true">
+                                <f:param name="projectName" value="#{currentAnalysisEditorBean.projectName}" rendered="#{not empty currentAnalysisEditorBean.projectName}" />
+                            </p:button>
+                            <p:separator/>
+                            <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" disabled="true">
+                            </p:button>
+                            <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" disabled="true">
+                            </p:button>
+                        </p:toolbarGroup>
+                    </p:toolbar>
+
+                    <!-- The following is the main menu. -->
+                    <p:menubar> 
+                        <p:submenu  label="#{localizedMessages.file}">
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-save" value="  #{localizedMessages.saveProject}" update=":messages" ajax="true" action="#{currentAnalysisEditorBean.saveProject(false)}" disabled="#{empty currentAnalysisEditorBean.project}"/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-saveAs" value="  #{localizedMessages.saveProjectAs}" update=":messages" ajax="true" disabled="#{true or empty currentAnalysisEditorBean.project}"/>
+                            <p:separator />
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-reload" value="  #{localizedMessages.reloadProject}" ajax="false" url="analysisEditor?projectName=#{currentAnalysisEditorBean.projectName}" disabled="#{empty currentAnalysisEditorBean.project}" />
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-manageLibraries" value="  #{localizedAnalysisEditorPageMessages.manageLibraries}" onclick="manageLibrariesDialog.show()" ajax="true" disabled="#{empty currentAnalysisEditorBean.project}"/>
+                            <p:separator />
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-settings" value="  #{localizedMessages.settings}" onclick="settingsDlg.show()" ajax="true"/>
+                            <p:separator />
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-close" value="  #{localizedMessages.closeProject}" action="ProjectOverviewPage.xhtml?faces-redirect=true" ajax="false"/>
+                        </p:submenu>
+
+                        <p:submenu label="Graph">
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-scaleToFitSmall" value="  #{localizedAnalysisEditorPageMessages.analysisEditorScaleToFit}" ajax="true" action="#{currentAnalysisEditorGraphBean.scaleToFit()}" />
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.gridEnabled ? 'ui-icon-gridEnabledSmall' : 'ui-icon-gridDisabledSmall'}" value="  #{localizedAnalysisEditorPageMessages.grid} #{currentAnalysisEditorGraphBean.gridEnabled ? localizedAnalysisEditorPageMessages.disable : localizedAnalysisEditorPageMessages.enable}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchGrid()}" update=":menuForm"/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.snapEnabled ? 'ui-icon-snapEnabledSmall' : 'ui-icon-snapDisabledSmall'}" value="  #{localizedAnalysisEditorPageMessages.snap} #{currentAnalysisEditorGraphBean.snapEnabled ? localizedAnalysisEditorPageMessages.disable: localizedAnalysisEditorPageMessages.enable}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchSnap()}" update=":menuForm"/>
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-autoLayoutSmall" value="  #{localizedAnalysisEditorPageMessages.autoLayout}" ajax="true" />
+                        </p:submenu>
+
+                        <p:submenu label="#{localizedMessages.help}">
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-userGuide" value="  #{localizedMessages.userGuide}" ajax="true" disabled="true"/>
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-about" value="  #{localizedMessages.about}" onclick="aboutDlg.show()" ajax="true"/>
+                        </p:submenu>
+
+                        <p:menuitem styleClass="logOutButton element-with-whitespace" icon="ui-icon-logout" value=" #{userBean.userName}" ajax="true" url="login"/>
+                    </p:menubar> 
+                    <p:spacer height="5"/>
+                    <p:menubar> 
+                        <p:menuitem id="btnScaleToFit" styleClass="element-with-whitespace" icon="ui-icon-scaleToFit" ajax="true" action="#{currentAnalysisEditorGraphBean.scaleToFit()}"/>
+                        <p:menuitem id="btnGrid" styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.gridEnabled ? 'ui-icon-gridEnabled' : 'ui-icon-gridDisabled'}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchGrid()}" update=":menuForm"/>
+                        <p:menuitem id="btnSnap" styleClass="element-with-whitespace" icon="#{currentAnalysisEditorGraphBean.snapEnabled ? 'ui-icon-snapEnabled' : 'ui-icon-snapDisabled'}" ajax="true" action="#{currentAnalysisEditorGraphBean.switchSnap()}" update=":menuForm"/>
+                        <p:menuitem id="btnAutoLayout" styleClass="element-with-whitespace" icon="ui-icon-autoLayout" ajax="true" />
+                    </p:menubar>
+                    <p:tooltip for="btnScaleToFit" value="#{localizedAnalysisEditorPageMessages.analysisEditorScaleToFit}"/>
+                    <p:tooltip for="btnGrid" value="#{localizedAnalysisEditorPageMessages.grid}"/>
+                    <p:tooltip for="btnSnap" value="#{localizedAnalysisEditorPageMessages.snap}"/>
+                    <p:tooltip for="btnAutoLayout" value="#{localizedAnalysisEditorPageMessages.autoLayout}"/>
+                </h:form>
+            </p:layoutUnit>
+
+            <!-- This is the center component showing the graph and everything. -->
+            <p:layoutUnit style="font-size: 12px" position="center" id="centerLayout">
+                <div id="center-container" style="width: 100%;height: 100%">
+                    <div id="infovis"/> 
+                </div>
+            </p:layoutUnit> 
+
+            <!-- This is the component presenting the available properties. -->
+            <p:layoutUnit style="font-size: 12px" position="south" size="150" header="#{localizedAnalysisEditorPageMessages.properties}" resizable="true" collapsible="true">
+                <h:form id="propertiesForm" >
+                    <p:dataTable editable="true" value="#{currentAnalysisEditorBean.advancedPluginProperties}" var="property" rowIndexVar="rowIndex" emptyMessage="No properties available" rendered="#{not empty currentAnalysisEditorBean.selectedPlugin}">
+                        <p:column headerText="#{localizedAnalysisEditorPageMessages.property}" style="width:125px">
+                            <!-- The first property is always the classname, the second one always the normal name. After that, other properties can follow. -->
+                            <h:outputText id="classNameProperty" value="#{localizedAnalysisEditorPageMessages.className}" rendered="#{rowIndex == 0}"/>
+                            <h:outputText id="nameProperty" value="#{localizedAnalysisEditorPageMessages.name}" rendered="#{rowIndex == 1}"/>
+                            <h:outputText id="normalProperty" value="#{property.name}" rendered="#{rowIndex > 1}"/>
+                            <p:tooltip for="classNameProperty" value="#{localizedAnalysisEditorPageMessages.tooltipClassName}" rendered="#{rowIndex == 0}"/>
+                            <p:tooltip for="nameProperty" value="#{localizedAnalysisEditorPageMessages.tooltipName}" rendered="#{rowIndex == 1}"/>
+                            <p:tooltip for="normalProperty" value="#{currentAnalysisEditorBean.getDescription(currentAnalysisEditorBean.selectedPlugin, property.name)}" rendered="#{rowIndex > 1}"/>
+                        </p:column>
+
+                        <!-- The classname is not editable, the name is editable with a specific target, other properies are editable normally. -->
+                        <p:column headerText="#{localizedAnalysisEditorPageMessages.value}" style="width:125px">
+                            <h:outputText id="className" value="#{currentAnalysisEditorBean.selectedPlugin.classname}" rendered="#{rowIndex == 0}"/>
+                            <p:inplace id="nameEditor" editor="true" rendered="#{rowIndex == 1}" >  
+                                <p:inputText value="#{currentAnalysisEditorBean.selectedPlugin.name}" />
+                                <p:ajax event="save" listener="#{currentAnalysisEditorGraphBean.renameNode(currentAnalysisEditorBean.selectedPlugin, currentAnalysisEditorBean.selectedPlugin.name)}" />
+                            </p:inplace>  
+                            <p:inplace id="normalEditor" editor="true" rendered="#{rowIndex > 1}">  
+                                <p:inputText value="#{property.value}" />
+                            </p:inplace>  
+                            <p:tooltip for="className" value="#{localizedAnalysisEditorPageMessages.tooltipClassName}" rendered="#{rowIndex == 0}"/>
+                            <p:tooltip for="nameEditor" value="#{localizedAnalysisEditorPageMessages.tooltipName}" rendered="#{rowIndex == 1}"/>
+                            <p:tooltip for="normalEditor" value="#{currentAnalysisEditorBean.getDescription(currentAnalysisEditorBean.selectedPlugin, property.name)}" rendered="#{rowIndex > 1}"/>
+                        </p:column>                       
+                    </p:dataTable>
+                </h:form>
+            </p:layoutUnit>
+
+            <!-- The following is the toolpalette, presenting the available plugins etc. -->
+            <p:layoutUnit position="east" size="300" header="#{localizedAnalysisEditorPageMessages.availablePlugins}" resizable="true" collapsible="true">
+                <h:form id="toolpalette">
+                    <p:accordionPanel multiple="true" activeIndex="0,1,2">
+                        <p:tab title="#{localizedAnalysisEditorPageMessages.reader}">
+                            <ui:repeat value="#{currentAnalysisEditorBean.availableReaders}" var="reader">
+                                <p:commandLink id="readerLink" value="#{reader.simpleName}" action="#{currentAnalysisEditorBean.addPlugin(reader)}" update=":messages" /><br/>
+                                <p:tooltip for="readerLink">
+                                    <b><h:outputText value="#{reader.simpleName} (#{reader.name})"/></b>
+                                    <br/>
+                                    <h:outputText value="#{currentAnalysisEditorBean.getDescription(reader)}"/>
+                                    <br/><br/>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getOutputPorts(reader)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.outputPorts}:"/></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getOutputPorts(reader)}" var="port">
+                                            #{port.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getRepositoryPorts(reader)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.repositoryPorts}:" /></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getRepositoryPorts(reader)}" var="port">
+                                            #{port.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getProperties(reader)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.configuration}:"/></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getProperties(reader)}" var="property">
+                                            #{property.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getDependencies(reader)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.dependencies}:"/></b>
+                                        <br/>
+                                        <h:outputText value="#{currentAnalysisEditorBean.getDependencies(reader)}"/>
+                                    </ui:fragment>
+                                </p:tooltip>
+                            </ui:repeat>
+                        </p:tab>
+                        <p:tab title="#{localizedAnalysisEditorPageMessages.filter}">
+                            <ui:repeat value="#{currentAnalysisEditorBean.availableFilters}" var="filter">
+                                <p:commandLink id="filterLink" value="#{filter.simpleName}" action="#{currentAnalysisEditorBean.addPlugin(filter)}" update=":messages"/><br/>
+                                <p:tooltip for="filterLink">
+                                    <b><h:outputText value="#{filter.simpleName} (#{filter.name})"/></b>
+                                    <br/>
+                                    <h:outputText value="#{currentAnalysisEditorBean.getDescription(filter)}"/>
+                                    <br/><br/>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getInputPorts(filter)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.inputPorts}:"/></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getInputPorts(filter)}" var="port">
+                                            #{port.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getOutputPorts(filter)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.outputPorts}:"/></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getOutputPorts(filter)}" var="port">
+                                            #{port.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getRepositoryPorts(filter)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.repositoryPorts}:"/></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getRepositoryPorts(filter)}" var="port">
+                                            #{port.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getProperties(filter)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.configuration}:"/></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getProperties(filter)}" var="property">
+                                            #{property.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getDependencies(filter)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.dependencies}:"/></b>
+                                        <br/>
+                                        <h:outputText value="#{currentAnalysisEditorBean.getDependencies(filter)}"/>
+                                    </ui:fragment>
+                                </p:tooltip>                                
+                            </ui:repeat>
+                        </p:tab>
+                        <p:tab title="#{localizedAnalysisEditorPageMessages.repositories}">
+                            <ui:repeat value="#{currentAnalysisEditorBean.availableRepositories}" var="repository">
+                                <p:commandLink id="repositoryLink" value="#{repository.simpleName}" action="#{currentAnalysisEditorBean.addRepository(repository)}" update=":messages"/><br/>
+                                <p:tooltip for="repositoryLink">
+                                    <b><h:outputText value="#{repository.simpleName} (#{repository.name})"/></b>
+                                    <br/>
+                                    <h:outputText value="#{currentAnalysisEditorBean.getDescription(repository)}"/>
+                                    <br/><br/>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getProperties(repository)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.configuration}:"/></b>
+                                        <p:dataList value="#{currentAnalysisEditorBean.getProperties(repository)}" var="property">
+                                            #{property.name()}
+                                        </p:dataList>
+                                    </ui:fragment>
+                                    <ui:fragment rendered="#{not empty currentAnalysisEditorBean.getDependencies(repository)}">
+                                        <b><h:outputText value="#{localizedAnalysisEditorPageMessages.dependencies}:"/></b>
+                                        <br/>
+                                        <h:outputText value="#{currentAnalysisEditorBean.getDependencies(repository)}"/>
+                                    </ui:fragment>
+                                </p:tooltip>  
+                            </ui:repeat>
+                        </p:tab>
+                    </p:accordionPanel>
+                </h:form>
+            </p:layoutUnit>
+        </p:layout>
+
+        <p:dialog header="#{localizedMessages.saveProject}" resizable="false" modal="true" widgetVar="forceSaveDlg">
+            <h:form>
+                <div style="text-align: center">
+                    <h:outputText value="#{localizedAnalysisEditorPageMessages.msgProjectModified}" /> 
+                </div>
+                <hr/>
+                <div style="text-align: right">
+                    <p:commandButton value="#{localizedMessages.yes}" action="#{currentAnalysisEditorBean.saveProject(true)}" oncomplete="forceSaveDlg.hide()" update=":messages" />
+                    <p:spacer width="10px" height="10" />
+                    <p:commandButton value="#{localizedMessages.cancel}" onclick="forceSaveDlg.hide()" />
+                </div>
+            </h:form>
+        </p:dialog>
+
+        <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
+
+        <!-- Include the dialog for the configuration. -->
+        <ui:include src="dialogs/SettingsDialog.xhtml"/>
+
+        <!-- Include the about-dialog. -->
+        <ui:include src="dialogs/AboutDialog.xhtml" />
+
+        <!-- Include the dialog the manage the libraries. -->
+        <ui:include src="dialogs/AnalysisEditorPageDialogs.xhtml" />
+
+    </h:body>
+
+</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/CockpitEditor.xhtml b/Kieker.WebGUI/src/main/webapp/CockpitEditorPage.xhtml
similarity index 96%
rename from Kieker.WebGUI/src/main/webapp/CockpitEditor.xhtml
rename to Kieker.WebGUI/src/main/webapp/CockpitEditorPage.xhtml
index d79976f5..b6e59eba 100644
--- a/Kieker.WebGUI/src/main/webapp/CockpitEditor.xhtml
+++ b/Kieker.WebGUI/src/main/webapp/CockpitEditorPage.xhtml
@@ -12,10 +12,13 @@
         <f:event type="preRenderView" listener="#{currentCockpitEditorBean.initalize()}"  />
     </f:metadata>
 
+    <f:loadBundle var="localizedMessages" basename="lang.Common"/>
+    <f:loadBundle var="localizedCockpitEditorPageMessages" basename="lang.CockpitEditorPage"/>
+
     <h:head>
         <title>Kieker.WebGUI</title>
         <link rel="stylesheet" type="text/css" href="../css/Common.css" />
-        <link rel="stylesheet" type="text/css" href="../css/CockpitEditor.css" />
+        <link rel="stylesheet" type="text/css" href="../css/CockpitEditorPage.css" />
     </h:head> 
 
     <h:body>
@@ -145,12 +148,12 @@
         <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
 
         <!-- Include the dialog for the configuration. -->
-        <ui:include src="dialogs/settingsDialog.xhtml" />
+        <ui:include src="dialogs/SettingsDialog.xhtml" />
 
         <!-- Include the dialogs for the views. -->
-        <ui:include src="dialogs/viewDialogs.xhtml" />
+        <ui:include src="dialogs/CockpitEditorPageDialogs.xhtml" />
 
         <!-- Include the about-dialog. -->
-        <ui:include src="dialogs/aboutDialog.xhtml" />
+        <ui:include src="dialogs/AboutDialog.xhtml" />
     </h:body>
 </html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/Cockpit.xhtml b/Kieker.WebGUI/src/main/webapp/CockpitPage.xhtml
similarity index 95%
rename from Kieker.WebGUI/src/main/webapp/Cockpit.xhtml
rename to Kieker.WebGUI/src/main/webapp/CockpitPage.xhtml
index f0472a9d..87be9c1a 100644
--- a/Kieker.WebGUI/src/main/webapp/Cockpit.xhtml
+++ b/Kieker.WebGUI/src/main/webapp/CockpitPage.xhtml
@@ -12,10 +12,13 @@
         <f:event type="preRenderView" listener="#{currentCockpitBean.initalize()}"  />
     </f:metadata>
 
+    <f:loadBundle var="localizedMessages" basename="lang.Common"/>
+    <f:loadBundle var="localizedCockpitPageMessages" basename="lang.CockpitPage"/>
+
     <h:head>
         <title>Kieker.WebGUI</title>
         <link rel="stylesheet" type="text/css" href="../css/Common.css" />
-        <link rel="stylesheet" type="text/css" href="../css/Cockpit.css" />
+        <link rel="stylesheet" type="text/css" href="../css/CockpitPage.css" />
     </h:head>
 
     <h:body>
@@ -100,10 +103,10 @@
         <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
 
         <!-- Include the dialog for the configuration. -->
-        <ui:include src="dialogs/settingsDialog.xhtml" />
+        <ui:include src="dialogs/SettingsDialog.xhtml" />
 
         <!-- Include the about-dialog. -->
-        <ui:include src="dialogs/aboutDialog.xhtml" />
+        <ui:include src="dialogs/AboutDialog.xhtml" />
 
     </h:body>
 </html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/Controller.xhtml b/Kieker.WebGUI/src/main/webapp/Controller.xhtml
deleted file mode 100644
index 2aea82f2..00000000
--- a/Kieker.WebGUI/src/main/webapp/Controller.xhtml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:f="http://java.sun.com/jsf/core"
-      xmlns:p="http://primefaces.org/ui"
-      xmlns:c="http://java.sun.com/jsp/jstl/core">
-
-    <f:metadata>
-        <f:viewParam name="projectName" value="#{currentControllerBean.projectName}"/>
-    </f:metadata>
-
-    <f:view>
-        <h:head>
-            <title>Kieker.WebGUI</title>
-            <link rel="stylesheet" type="text/css" href="../css/Common.css" />
-            <link rel="stylesheet" type="text/css" href="../css/Controller.css" />
-        </h:head>
-
-        <h:body>
-
-            <!-- This is the layout for the whole page. -->
-            <p:layout id="layout" fullPage="true">
-
-                <p:layoutUnit position="north" collapsible="false">
-                    <h:form>
-                        <p:toolbar>
-                            <p:toolbarGroup align="left">
-                                <h:outputText styleClass="kieker-title" value="Kieker &raquo; #{stringBean.shortenLongName(currentControllerBean.projectName, 30)}"/>
-                            </p:toolbarGroup>
-                            <p:toolbarGroup align="right">
-                                <p:commandButton styleClass="perspective-button" icon="ui-icon-home" action="ProjectOverview.xhtml?faces-redirect=true" />
-                                <p:separator/>
-                                <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" style="white-space: none" outcome="AnalysisEditor.xhtml?faces-redirect=true">
-                                    <f:param name="projectName" value="#{currentControllerBean.projectName}" rendered="#{not empty currentControllerBean.projectName}" />
-                                </p:button>
-                                <p:button styleClass="perspective-button" icon="ui-icon-analysis" value="#{localizedMessages.analysis}" style="white-space: none" disabled="true">
-                                </p:button>
-                                <p:separator/>
-                                <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" disabled="true">
-                                </p:button>
-                                <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" disabled="true">
-                                </p:button>
-                            </p:toolbarGroup>
-                        </p:toolbar>
-
-                        <p:menubar>
-                            <p:submenu label="#{localizedMessages.file}">
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-settings" value="  #{localizedMessages.settings}" onclick="settingsDlg.show()" ajax="true"/>
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-close" value="  #{localizedMessages.closeProject}" action="ProjectOverview.xhtml?faces-redirect=true"  ajax="false"/>   
-                            </p:submenu>
-
-                            <p:submenu label="#{localizedMessages.help}">
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-userGuide" value="  #{localizedMessages.userGuide}" ajax="true" disabled="true"/>
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-about" value="  #{localizedMessages.about}" onclick="aboutDlg.show()" ajax="true"/>
-                            </p:submenu>
-
-                            <p:menuitem styleClass="logOutButton element-with-whitespace" icon="ui-icon-logout" value=" #{userBean.userName}" ajax="true" url="login"/>
-                        </p:menubar>
-
-                    </h:form>
-                </p:layoutUnit>
-
-
-                <p:layoutUnit position="center" id="centerLayout">
-                    <h:form id="logList"> 
-                        <ui:repeat  value="#{currentControllerBean.log}" var="entry">
-                            <h:outputText value="#{entry}"/><br/><br/>
-                        </ui:repeat> 
-                    </h:form>
-                </p:layoutUnit>
-
-                <p:layoutUnit position="south" header="Control" resizable="true" collapsible="true">
-                    <h:form id="controllerForm">
-                        <p:commandButton value="#{localizedMessages.analysisControllerInstantiateAnalysisController}" action="#{currentControllerBean.instantiateAnalysis()}" update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
-                        <p:commandButton value="#{localizedMessages.analysisControllerCleaAnalysisController}" action="#{currentControllerBean.cleanAnalysis()}"  update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
-                        <p:commandButton value="#{localizedMessages.analysisControllerStartAnalysis}" action="#{currentControllerBean.startAnalysis()}"  update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
-                        <p:commandButton value="#{localizedMessages.analysisControllerStopAnalysis}" action="#{currentControllerBean.stopAnalysis()}"  update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
-                        <p:poll interval="1" update=":ledsForm"/>
-                    </h:form>  
-                    <hr/>
-                    <h:form id="ledsForm">
-                        <div align="center">
-                            <h:graphicImage id="iconLEDRed1"  url="../img/LEDs/Icon_LED_Red.png" height="50px" rendered="#{currentControllerBean.isAnalysisNotAvailable()}"/>
-                            <h:graphicImage id="iconLEDRed1_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisNotAvailable()}"/>
-                            <p:spacer height="0" width="15px"/>
-                            <h:graphicImage id="iconLEDYellow"  url="../img/LEDs/Icon_LED_Yellow.png" height="50px" rendered="#{currentControllerBean.isAnalysisReady()}"/>
-                            <h:graphicImage id="iconLEDYellow_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisReady()}"/>
-                            <p:spacer height="0" width="15px"/>
-                            <h:graphicImage id="iconLEDGreen"  url="../img/LEDs/Icon_LED_Green.png" height="50px" rendered="#{currentControllerBean.isAnalysisRunning()}"/>
-                            <h:graphicImage id="iconLEDGreen_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisRunning()}"/>
-                            <p:spacer height="0" width="15px"/>
-                            <h:graphicImage id="iconLEDRed2"  url="../img/LEDs/Icon_LED_Red.png" height="50px" rendered="#{currentControllerBean.isAnalysisTerminated() or currentControllerBean.isAnalysisFailed()}"/>
-                            <h:graphicImage id="iconLEDRed2_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not (currentControllerBean.isAnalysisTerminated() or currentControllerBean.isAnalysisFailed())}"/>
-
-                            <p:tooltip for="iconLEDRed1" value="#{localizedMessages.analysisControllerMsgNotInstantiated}"/>
-                            <p:tooltip for="iconLEDYellow" value="#{localizedMessages.analysisControllerMsgReady}"/>
-                            <p:tooltip for="iconLEDGreen" value="#{localizedMessages.analysisControllerMsgRunning}"/>
-                            <p:tooltip for="iconLEDRed2" value="#{localizedMessages.analysisControllerMsgFailed}"/>
-                            <p:tooltip for="iconLEDRed1_2" value="#{localizedMessages.analysisControllerMsgNotInstantiated}"/>
-                            <p:tooltip for="iconLEDYellow_2" value="#{localizedMessages.analysisControllerMsgReady}"/>
-                            <p:tooltip for="iconLEDGreen_2" value="#{localizedMessages.analysisControllerMsgRunning}"/>
-                            <p:tooltip for="iconLEDRed2_2" value="#{localizedMessages.analysisControllerMsgFailed}"/>
-                        </div>
-                    </h:form>
-
-                </p:layoutUnit>
-            </p:layout>
-
-            <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
-
-            <!-- Include the dialog for the configuration. -->
-            <ui:include src="dialogs/settingsDialog.xhtml" />
-
-            <!-- Include the about-dialog. -->
-            <ui:include src="dialogs/aboutDialog.xhtml" />
-
-        </h:body>
-    </f:view>
-</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/ControllerPage.xhtml b/Kieker.WebGUI/src/main/webapp/ControllerPage.xhtml
new file mode 100644
index 00000000..ac4df2f6
--- /dev/null
+++ b/Kieker.WebGUI/src/main/webapp/ControllerPage.xhtml
@@ -0,0 +1,125 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:p="http://primefaces.org/ui">
+
+    <f:metadata>
+        <f:viewParam name="projectName" value="#{currentControllerBean.projectName}"/>
+    </f:metadata>
+
+    <f:loadBundle var="localizedMessages" basename="lang.Common"/>
+    <f:loadBundle var="localizedControllerPageMessages" basename="lang.ControllerPage"/>
+
+    <h:head>
+        <title>Kieker.WebGUI</title>
+        <link rel="stylesheet" type="text/css" href="../css/Common.css" />
+        <link rel="stylesheet" type="text/css" href="../css/Icons.css" />
+        <link rel="stylesheet" type="text/css" href="../css/ControllerPage.css" />
+    </h:head>
+
+    <h:body>
+
+        <!-- This is the layout for the whole page. -->
+        <p:layout id="layout" fullPage="true">
+
+            <p:layoutUnit position="north" collapsible="false">
+                <h:form>
+                    <p:toolbar>
+                        <p:toolbarGroup align="left">
+                            <h:outputText styleClass="kieker-title" value="Kieker &raquo; #{stringBean.shortenLongName(currentControllerBean.projectName, 30)}"/>
+                        </p:toolbarGroup>
+                        <p:toolbarGroup align="right">
+                            <p:commandButton styleClass="perspective-button" icon="ui-icon-home" action="ProjectOverviewPage.xhtml?faces-redirect=true" />
+                            <p:separator/>
+                            <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" style="white-space: none" outcome="AnalysisEditorPage.xhtml?faces-redirect=true">
+                                <f:param name="projectName" value="#{currentControllerBean.projectName}" rendered="#{not empty currentControllerBean.projectName}" />
+                            </p:button>
+                            <p:button styleClass="perspective-button" icon="ui-icon-analysis" value="#{localizedMessages.analysis}" style="white-space: none" disabled="true">
+                            </p:button>
+                            <p:separator/>
+                            <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" disabled="true">
+                            </p:button>
+                            <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" disabled="true">
+                            </p:button>
+                        </p:toolbarGroup>
+                    </p:toolbar>
+
+                    <p:menubar>
+                        <p:submenu label="#{localizedMessages.file}">
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-settings" value="  #{localizedMessages.settings}" onclick="settingsDlg.show()" ajax="true"/>
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-close" value="  #{localizedMessages.closeProject}" action="ProjectOverviewPage.xhtml?faces-redirect=true"  ajax="false"/>   
+                        </p:submenu>
+
+                        <p:submenu label="#{localizedMessages.help}">
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-userGuide" value="  #{localizedMessages.userGuide}" ajax="true" disabled="true"/>
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-about" value="  #{localizedMessages.about}" onclick="aboutDlg.show()" ajax="true"/>
+                        </p:submenu>
+
+                        <p:menuitem styleClass="logOutButton element-with-whitespace" icon="ui-icon-logout" value=" #{userBean.userName}" ajax="true" url="login"/>
+                    </p:menubar>
+
+                </h:form>
+            </p:layoutUnit>
+
+
+            <p:layoutUnit position="center" id="centerLayout">
+                <h:form id="logList"> 
+                    <ui:repeat  value="#{currentControllerBean.log}" var="entry">
+                        <h:outputText value="#{entry}"/><br/><br/>
+                    </ui:repeat> 
+                </h:form>
+            </p:layoutUnit>
+
+            <p:layoutUnit position="south" header="Control" resizable="true" collapsible="true">
+                <h:form id="controllerForm">
+                    <p:commandButton value="#{localizedControllerPageMessages.analysisControllerInstantiateAnalysisController}" action="#{currentControllerBean.instantiateAnalysis()}" update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
+                    <p:commandButton value="#{localizedControllerPageMessages.analysisControllerCleaAnalysisController}" action="#{currentControllerBean.cleanAnalysis()}"  update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
+                    <p:commandButton value="#{localizedControllerPageMessages.analysisControllerStartAnalysis}" action="#{currentControllerBean.startAnalysis()}"  update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
+                    <p:commandButton value="#{localizedControllerPageMessages.analysisControllerStopAnalysis}" action="#{currentControllerBean.stopAnalysis()}"  update=":messages :logList" disabled="#{empty currentControllerBean.projectName}"/>
+                    <p:poll interval="1" update=":ledsForm"/>
+                </h:form>  
+                <hr/>
+                <h:form id="ledsForm">
+                    <div align="center">
+                        <h:graphicImage id="iconLEDRed1"  url="../img/LEDs/Icon_LED_Red.png" height="50px" rendered="#{currentControllerBean.isAnalysisNotAvailable()}"/>
+                        <h:graphicImage id="iconLEDRed1_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisNotAvailable()}"/>
+                        <p:spacer height="0" width="15px"/>
+                        <h:graphicImage id="iconLEDYellow"  url="../img/LEDs/Icon_LED_Yellow.png" height="50px" rendered="#{currentControllerBean.isAnalysisReady()}"/>
+                        <h:graphicImage id="iconLEDYellow_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisReady()}"/>
+                        <p:spacer height="0" width="15px"/>
+                        <h:graphicImage id="iconLEDGreen"  url="../img/LEDs/Icon_LED_Green.png" height="50px" rendered="#{currentControllerBean.isAnalysisRunning()}"/>
+                        <h:graphicImage id="iconLEDGreen_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not currentControllerBean.isAnalysisRunning()}"/>
+                        <p:spacer height="0" width="15px"/>
+                        <h:graphicImage id="iconLEDRed2"  url="../img/LEDs/Icon_LED_Red.png" height="50px" rendered="#{currentControllerBean.isAnalysisTerminated() or currentControllerBean.isAnalysisFailed()}"/>
+                        <h:graphicImage id="iconLEDRed2_2"  url="../img/LEDs/Icon_LED_Gray.png" height="50px" rendered="#{not (currentControllerBean.isAnalysisTerminated() or currentControllerBean.isAnalysisFailed())}"/>
+
+                        <p:tooltip for="iconLEDRed1" value="#{localizedControllerPageMessages.analysisControllerMsgNotInstantiated}"/>
+                        <p:tooltip for="iconLEDYellow" value="#{localizedControllerPageMessages.analysisControllerMsgReady}"/>
+                        <p:tooltip for="iconLEDGreen" value="#{localizedControllerPageMessages.analysisControllerMsgRunning}"/>
+                        <p:tooltip for="iconLEDRed2" value="#{localizedControllerPageMessages.analysisControllerMsgFailed}"/>
+                        <p:tooltip for="iconLEDRed1_2" value="#{localizedControllerPageMessages.analysisControllerMsgNotInstantiated}"/>
+                        <p:tooltip for="iconLEDYellow_2" value="#{localizedControllerPageMessages.analysisControllerMsgReady}"/>
+                        <p:tooltip for="iconLEDGreen_2" value="#{localizedControllerPageMessages.analysisControllerMsgRunning}"/>
+                        <p:tooltip for="iconLEDRed2_2" value="#{localizedControllerPageMessages.analysisControllerMsgFailed}"/>
+                    </div>
+                </h:form>
+
+            </p:layoutUnit>
+        </p:layout>
+
+        <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
+
+        <!-- Include the dialog for the configuration. -->
+        <ui:include src="dialogs/SettingsDialog.xhtml" />
+
+        <!-- Include the about-dialog. -->
+        <ui:include src="dialogs/AboutDialog.xhtml" />
+
+    </h:body>
+
+</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/Login.xhtml b/Kieker.WebGUI/src/main/webapp/Login.xhtml
deleted file mode 100644
index 567d2d51..00000000
--- a/Kieker.WebGUI/src/main/webapp/Login.xhtml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:p="http://primefaces.org/ui"
-      xmlns:f="http://java.sun.com/jsf/core">
-
-    <f:view>
-        <h:head>
-            <title>Kieker.WebGUI</title>
-            <link rel="stylesheet" type="text/css" href="../css/Common.css" />
-            <link rel="stylesheet" type="text/css" href="../css/Login.css" />
-        </h:head>
-
-
-        <h:body onload="showWelcomeMessage();">
-            <h:form>
-                <p:remoteCommand action="#{userBean.showWelcomeMessage()}" name="showWelcomeMessage"/>
-            </h:form> 
-            <div align="center" >
-                <img src="../img/kieker-header.jpg"/>
-            </div>
-            <div align="center" class="stretch">
-                <div class="custom-background">
-                    <br/>
-                    <p:spacer width="0" height="100"/>
-
-                    <!-- The following is the login form -->
-                    <h:form>  
-                        <div class="stretch" align="center">
-                            <p:panel header="#{localizedMessages.shortWelcomeMessage}" styleClass="login-panel">
-                                <h:panelGrid columnClasses="col1 , col2" styleClass="grid" columns="2" cellpadding="5" >  
-                                    <h:outputLabel for="username" value="#{localizedMessages.username}:" />  
-                                    <p:inputText styleClass="input" id="username" required="true" value="#{userBean.userName}" label="username"/>  
-
-                                    <h:outputLabel for="password" value="#{localizedMessages.password}:" />  
-                                    <p:password styleClass="input" id="password" required="false" value="#{userBean.password}" label="password" />  
-                                </h:panelGrid>  
-                                <hr/>
-                                <div align="right">
-                                    <p:commandButton value="#{localizedMessages.login}" ajax="false" action="#{userBean.login}" />
-                                </div>
-                            </p:panel>
-                            <p:growl sticky="true" autoUpdate="true" widgetVar="growlComp"/>
-                        </div>
-                    </h:form>  
-                </div>
-            </div>
-        </h:body>
-    </f:view>
-</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/LoginPage.xhtml b/Kieker.WebGUI/src/main/webapp/LoginPage.xhtml
new file mode 100644
index 00000000..654ffa44
--- /dev/null
+++ b/Kieker.WebGUI/src/main/webapp/LoginPage.xhtml
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:p="http://primefaces.org/ui"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <!-- Load the localized messages, labels etc. for the login page. -->
+    <f:loadBundle var="localizedMessages" basename="lang.Common"/>
+    <f:loadBundle var="localizedLoginMessages" basename="lang.LoginPage"/>
+
+    <h:head>
+        <title>Kieker.WebGUI</title>
+        <link rel="stylesheet" type="text/css" href="../css/Common.css" />
+        <link rel="stylesheet" type="text/css" href="../css/LoginPage.css" />
+    </h:head>
+
+    <!-- The javascript code in the onload-part of the body shows a localized welcome message via the growl-component. -->
+    <h:body onload="growlComp.renderMessage({summary : '#{localizedLoginMessages.msgWelcomeShort}', detail : '#{localizedLoginMessages.msgWelcome}', severity: 'info'});">
+
+        <div align="center" >
+            <img src="../img/kieker-header.jpg"/>
+        </div>
+
+        <div align="center" class="stretch">
+            <p:spacer width="0" height="120"/>
+
+            <h:form>  
+                <div class="stretch" align="center">
+                    <p:panel header="#{localizedLoginMessages.msgWelcomeShort}" styleClass="login-panel">
+                        <h:panelGrid columnClasses="col1 , col2" styleClass="grid" columns="2" cellpadding="5" >  
+                            <h:outputLabel for="username" value="#{localizedLoginMessages.username}:" />  
+                            <p:inputText styleClass="input" id="username" required="true" value="#{userBean.userName}" label="username"/>  
+
+                            <h:outputLabel for="password" value="#{localizedLoginMessages.password}:" />  
+                            <p:password styleClass="input" id="password" required="false" value="#{userBean.password}" label="password" />  
+                        </h:panelGrid>  
+                        <hr/>
+                        <div align="right">
+                            <p:commandButton value="#{localizedLoginMessages.login}" ajax="false" action="#{userBean.login}" />
+                        </div>
+                    </p:panel>
+
+                    <p:spacer width="0" height="40"/>
+
+                    <div class="hint-panel">
+                        <h:outputText  value="#{localizedLoginMessages.hint}"/>
+                    </div>
+                    
+                    <p:growl sticky="true" autoUpdate="true" widgetVar="growlComp"/>
+                </div>
+            </h:form>  
+        </div>
+    </h:body>
+
+</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/ProjectOverview.xhtml b/Kieker.WebGUI/src/main/webapp/ProjectOverview.xhtml
deleted file mode 100644
index 7bfc480f..00000000
--- a/Kieker.WebGUI/src/main/webapp/ProjectOverview.xhtml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:p="http://primefaces.org/ui"
-      xmlns:f="http://java.sun.com/jsf/core">
-
-    <f:view>
-        <h:head>
-            <title>Kieker.WebGUI</title>
-            <link rel="stylesheet" type="text/css" href="../css/Common.css" />
-            <link rel="stylesheet" type="text/css" href="../css/ProjectOverview.css" />
-        </h:head>
-
-        <h:body>
-            <p:layout fullPage="true">            
-                <p:layoutUnit position="north">
-                    <h:form id="menuForm">
-                        <p:toolbar>
-                            <p:toolbarGroup align="left">
-                                <h:outputText styleClass="kieker-title" value="Kieker"/>
-                            </p:toolbarGroup>
-                            <p:toolbarGroup align="right">
-                                <p:commandButton styleClass="perspective-button" icon="ui-icon-home" disabled="true" action="ProjectOverview.xhtml" />
-                                <p:separator/>
-                                <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" style="white-space: none" outcome="AnalysisEditor.xhtml?faces-redirect=true">
-                                    <f:param name="projectName" value="#{currentProjectOverviewBean.projectName}" rendered="#{not empty currentProjectOverviewBean.projectName}"/>
-                                </p:button>
-                                <p:button styleClass="perspective-button" icon="ui-icon-analysis" value="#{localizedMessages.analysis}" style="white-space: none" outcome="Controller.xhtml?faces-redirect=true">
-                                    <f:param name="projectName" value="#{currentProjectOverviewBean.projectName}" rendered="#{not empty currentProjectOverviewBean.projectName}"/>
-                                </p:button>
-                                <p:separator/>
-                                <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" disabled="true">
-                                </p:button>
-                                <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" disabled="true">
-                                </p:button>
-                            </p:toolbarGroup>
-                        </p:toolbar>
-
-                        <p:menubar>
-                            <p:submenu label="#{localizedMessages.file}">
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-newProject" value="  #{localizedMessages.newProject}" onclick="newProjectDialog.show()" ajax="true"/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-importProject" value="  #{localizedMessages.importProject}" ajax="true" disabled="true"/>
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-reload" value="  #{localizedMessages.refreshProjectsList}" update=":projectsListForm" action="#{currentProjectOverviewBean.updateLists()}" ajax="true"/>
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-settings" value="  #{localizedMessages.settings}" onclick="settingsDlg.show()" ajax="true"/>
-                            </p:submenu>
-
-                            <p:submenu label="#{localizedMessages.help}">
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-userGuide" value="  #{localizedMessages.userGuide}" ajax="true" disabled="true"/>
-                                <p:separator/>
-                                <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-about" value="  #{localizedMessages.about}" onclick="aboutDlg.show()" ajax="true"/>
-                            </p:submenu>
-
-                            <p:menuitem styleClass="logOutButton element-with-whitespace" icon="ui-icon-logout" value=" #{userBean.userName}" ajax="true" url="login"/>
-                        </p:menubar>
-                    </h:form>
-                </p:layoutUnit>
-
-                <!-- Abstand zu Icons -->
-                <p:layoutUnit position="center">
-                    <h:form id="projectsListForm"> 
-                        <p:dataTable rows="15" paginator="true" paginatorPosition="both" var="project" rowsPerPageTemplate="5,10,15,25,50" value="#{currentProjectOverviewBean.projects}" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" selection="#{currentProjectOverviewBean.projectName}" rowKey="#{project}" selectionMode="single">  
-                            <!-- Makes sure that rows are selected instantaneously. -->
-                            <p:ajax event="rowSelect" listener="#{currentProjectOverviewBean.onRowSelect}" update=":menuForm" />
-
-                            <p:column headerText="#{localizedMessages.projectName}" id="modelHeader" sortBy="#{project}">  
-                                <p:commandLink id="dynaButton" value="#{project}"/>
-
-                                <p:menu overlay="true" trigger="dynaButton" my="left top" at="left bottom" style="width:210px">  
-                                    <p:menuitem icon="ui-icon-wrench" id="openButton" value="  #{localizedMessages.analysisEditor}" styleClass="element-with-whitespace" ajax="false" url="analysisEditor?projectName=#{project}"/>
-                                    <p:menuitem icon="ui-icon-circle-triangle-e" id="controlAnalysis"  styleClass="element-with-whitespace" value="  #{localizedMessages.analysis}" ajax="false" url="controller?projectName=#{project}" />
-                                    <p:separator/>
-
-                                    <p:menuitem icon="ui-icon-wrench" id="editAnalysisViews"  styleClass="element-with-whitespace" value="  #{localizedMessages.cockpitEditor}" ajax="false" disabled="true" />
-                                    <p:menuitem icon="ui-icon-image" id="showAnalysis"  styleClass="element-with-whitespace" value="  #{localizedMessages.cockpit}" ajax="false" disabled="true" />
-                                    <p:separator/>
-                                    <p:menuitem id="copyButton" icon="ui-icon-copy"  styleClass="element-with-whitespace" value="  #{localizedMessages.copyProject}" action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="copyProjectDialog.show()"/>
-                                    <p:menuitem id="renameButton" icon="ui-icon-pencil"  styleClass="element-with-whitespace" value="  #{localizedMessages.renameProject}"  action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="renameProjectDialog.show()" disabled="true"/>
-                                    <p:menuitem id="deleteButton" icon="ui-icon-trash"  styleClass="element-with-whitespace" value="  #{localizedMessages.deleteProject}" action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="deleteProjectDialog.show()" disabled="true"/>      
-                                </p:menu>
-                            </p:column>  
-                            <p:column headerText="#{localizedMessages.state}" style="text-align: center" sortBy="#{projectsBean.getAnalysisControllerState(project)}">  
-                                <h:outputText value="#{projectsBean.getAnalysisControllerState(project)}"/>  
-                            </p:column>
-
-                            <p:column headerText="#{localizedMessages.lastModification}" sortBy="#{projectsBean.getCurrTimeStamp(project)}" style="text-align: center">  
-                                <h:outputText value="#{projectsBean.getCurrTimeStamp(project)}" />  
-                            </p:column>  
-
-                            <p:column headerText="#{localizedMessages.owner}" style="text-align: center" rendered="false">   
-                                <h:outputText value="N/A" />  
-                            </p:column>  
-
-                        </p:dataTable>  
-                    </h:form>
-                </p:layoutUnit>
-
-            </p:layout>
-
-            <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
-
-            <!-- Include the about-dialog. -->
-            <ui:include src="dialogs/aboutDialog.xhtml" />
-            <!-- Include the dialogs for the project managment. -->
-            <ui:include src="dialogs/projectDialogs.xhtml" />
-            <!-- Include the dialog for the configuration. -->
-            <ui:include src="dialogs/settingsDialog.xhtml" />
-
-        </h:body>
-    </f:view>
-</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/ProjectOverviewPage.xhtml b/Kieker.WebGUI/src/main/webapp/ProjectOverviewPage.xhtml
new file mode 100644
index 00000000..d92e1bfa
--- /dev/null
+++ b/Kieker.WebGUI/src/main/webapp/ProjectOverviewPage.xhtml
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:p="http://primefaces.org/ui"
+      xmlns:f="http://java.sun.com/jsf/core">
+
+    <f:loadBundle var="localizedMessages" basename="lang.Common"/>
+    <f:loadBundle var="localizedProjectOverviewMessages" basename="lang.ProjectOverviewPage"/>
+
+    <h:head>
+        <title>Kieker.WebGUI</title>
+        <link rel="stylesheet" type="text/css" href="../css/Common.css" />
+        <link rel="stylesheet" type="text/css" href="../css/Icons.css" />
+        <link rel="stylesheet" type="text/css" href="../css/ProjectOverviewPage.css" />
+    </h:head>
+
+    <h:body>
+        <p:layout fullPage="true">            
+            <p:layoutUnit position="north">
+                <h:form id="menuForm">
+                    <p:toolbar>
+                        <p:toolbarGroup align="left">
+                            <h:outputText styleClass="kieker-title" value="Kieker"/>
+                        </p:toolbarGroup>
+                        <p:toolbarGroup align="right">
+                            <p:commandButton styleClass="perspective-button" icon="ui-icon-home" disabled="true" />
+                            <p:separator/>
+                            <p:button styleClass="perspective-button" icon="ui-icon-analysisEditor" value="#{localizedMessages.analysisEditor}" style="white-space: none" outcome="AnalysisEditorPage.xhtml?faces-redirect=true">
+                                <f:param name="projectName" value="#{currentProjectOverviewBean.projectName}" rendered="#{not empty currentProjectOverviewBean.projectName}"/>
+                            </p:button>
+                            <p:button styleClass="perspective-button" icon="ui-icon-analysis" value="#{localizedMessages.analysis}" style="white-space: none" outcome="ControllerPage.xhtml?faces-redirect=true">
+                                <f:param name="projectName" value="#{currentProjectOverviewBean.projectName}" rendered="#{not empty currentProjectOverviewBean.projectName}"/>
+                            </p:button>
+                            <p:separator/>
+                            <p:button styleClass="perspective-button" icon="ui-icon-cockpitEditor" value="#{localizedMessages.cockpitEditor}" disabled="true">
+                            </p:button>
+                            <p:button styleClass="perspective-button" icon="ui-icon-cockpit" value="#{localizedMessages.cockpit}" disabled="true">
+                            </p:button>
+                        </p:toolbarGroup>
+                    </p:toolbar>
+
+                    <p:menubar>
+                        <p:submenu label="#{localizedMessages.file}">
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-newProject" value="  #{localizedProjectOverviewMessages.newProject}" onclick="newProjectDialog.show()" ajax="true"/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-importProject" value="  #{localizedProjectOverviewMessages.importProject}" ajax="true" disabled="true"/>
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-reload" value="  #{localizedProjectOverviewMessages.refreshProjectsList}" update=":projectsListForm" action="#{currentProjectOverviewBean.updateLists()}" ajax="true"/>
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-settings" value="  #{localizedMessages.settings}" onclick="settingsDlg.show()" ajax="true"/>
+                        </p:submenu>
+
+                        <p:submenu label="#{localizedMessages.help}">
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-userGuide" value="  #{localizedMessages.userGuide}" ajax="true" disabled="true"/>
+                            <p:separator/>
+                            <p:menuitem styleClass="element-with-whitespace" icon="ui-icon-about" value="  #{localizedMessages.about}" onclick="aboutDlg.show()" ajax="true"/>
+                        </p:submenu>
+
+                        <p:menuitem styleClass="logOutButton element-with-whitespace" icon="ui-icon-logout" value=" #{userBean.userName}" ajax="true" url="login"/>
+                    </p:menubar>
+                </h:form>
+            </p:layoutUnit>
+
+            <!-- Abstand zu Icons -->
+            <p:layoutUnit position="center">
+                <h:form id="projectsListForm"> 
+                    <p:dataTable rows="15" paginator="true" paginatorPosition="both" var="project" rowsPerPageTemplate="5,10,15,25,50" value="#{currentProjectOverviewBean.projects}" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" selection="#{currentProjectOverviewBean.projectName}" rowKey="#{project}" selectionMode="single">  
+                        <!-- Makes sure that rows are selected instantaneously. -->
+                        <p:ajax event="rowSelect" listener="#{currentProjectOverviewBean.onRowSelect}" update=":menuForm" />
+
+                        <p:column headerText="#{localizedProjectOverviewMessages.projectName}" id="modelHeader" sortBy="#{project}">  
+                            <p:commandLink id="dynaButton" value="#{project}"/>
+
+                            <p:menu overlay="true" trigger="dynaButton" my="left top" at="left bottom" style="width:210px">  
+                                <p:menuitem icon="ui-icon-analysisEditor" id="openButton" value="  #{localizedMessages.analysisEditor}" styleClass="element-with-whitespace" ajax="false" url="analysisEditor?projectName=#{project}"/>
+                                <p:menuitem icon="ui-icon-analysis" id="controlAnalysis"  styleClass="element-with-whitespace" value="  #{localizedMessages.analysis}" ajax="false" url="controller?projectName=#{project}" />
+                                <p:separator/>
+
+                                <p:menuitem icon="ui-icon-cockpitEditor" id="editAnalysisViews"  styleClass="element-with-whitespace" value="  #{localizedMessages.cockpitEditor}" ajax="false" disabled="true" />
+                                <p:menuitem icon="ui-icon-cockpit" id="showAnalysis"  styleClass="element-with-whitespace" value="  #{localizedMessages.cockpit}" ajax="false" disabled="true" />
+                                <p:separator/>
+                                <p:menuitem id="copyButton" icon="ui-icon-copy"  styleClass="element-with-whitespace" value="  #{localizedProjectOverviewMessages.copyProject}" action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="copyProjectDialog.show()"/>
+                                <p:menuitem id="renameButton" icon="ui-icon-edit"  styleClass="element-with-whitespace" value="  #{localizedProjectOverviewMessages.renameProject}"  action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="renameProjectDialog.show()" disabled="true"/>
+                                <p:menuitem id="deleteButton" icon="ui-icon-delete"  styleClass="element-with-whitespace" value="  #{localizedProjectOverviewMessages.deleteProject}" action="#{currentProjectOverviewBean.setProjectName(project)}" onclick="deleteProjectDialog.show()" disabled="true"/>      
+                            </p:menu>
+                        </p:column>  
+                        <p:column headerText="#{localizedProjectOverviewMessages.state}" style="text-align: center" sortBy="#{projectsBean.getAnalysisControllerState(project)}">  
+                            <h:outputText value="#{projectsBean.getAnalysisControllerState(project)}"/>  
+                        </p:column>
+
+                        <p:column headerText="#{localizedProjectOverviewMessages.lastModification}" sortBy="#{projectsBean.getCurrTimeStamp(project)}" style="text-align: center">  
+                            <h:outputText value="#{projectsBean.getCurrTimeStamp(project)}" />  
+                        </p:column>  
+
+                        <p:column headerText="#{localizedProjectOverviewMessages.owner}" style="text-align: center" rendered="false">   
+                            <h:outputText value="N/A" />  
+                        </p:column>  
+
+                    </p:dataTable>  
+                </h:form>
+            </p:layoutUnit>
+
+        </p:layout>
+
+        <p:growl id="messages" life="1500" showDetail="true"  autoUpdate="false" sticky="true"/>  
+
+        <!-- Include the about-dialog. -->
+        <ui:include src="dialogs/AboutDialog.xhtml" />
+        <!-- Include the dialogs for the project managment. -->
+        <ui:include src="dialogs/ProjectOverviewPageDialogs.xhtml" />
+        <!-- Include the dialog for the configuration. -->
+        <ui:include src="dialogs/SettingsDialog.xhtml" />
+
+    </h:body>
+</html>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/WEB-INF/faces-config.xml b/Kieker.WebGUI/src/main/webapp/WEB-INF/faces-config.xml
index 6dfa9de1..47d8e1ab 100644
--- a/Kieker.WebGUI/src/main/webapp/WEB-INF/faces-config.xml
+++ b/Kieker.WebGUI/src/main/webapp/WEB-INF/faces-config.xml
@@ -11,11 +11,7 @@
         <locale-config>
             <default-locale>en</default-locale>
             <supported-locale>de</supported-locale>
-        </locale-config>
-        <resource-bundle>
-            <base-name>messages</base-name>
-            <var>localizedMessages</var>
-        </resource-bundle>
+        </locale-config>        
     </application>
 
 </faces-config>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/WEB-INF/pretty-config.xml b/Kieker.WebGUI/src/main/webapp/WEB-INF/pretty-config.xml
index 411d2880..4555ca09 100644
--- a/Kieker.WebGUI/src/main/webapp/WEB-INF/pretty-config.xml
+++ b/Kieker.WebGUI/src/main/webapp/WEB-INF/pretty-config.xml
@@ -6,37 +6,37 @@
 
     <url-mapping id="home"> 
         <pattern value="/Kieker.WebGUI/" /> 
-        <view-id value="/faces/ProjectOverview.xhtml" />
+        <view-id value="/faces/ProjectOverviewPage.xhtml" />
     </url-mapping>
     
     <url-mapping id="projectOverview"> 
         <pattern value="/Kieker.WebGUI/projectOverview" /> 
-        <view-id value="/faces/ProjectOverview.xhtml" />
+        <view-id value="/faces/ProjectOverviewPage.xhtml" />
     </url-mapping>
     
     <url-mapping id="analysisEditor"> 
         <pattern value="/Kieker.WebGUI/analysisEditor" /> 
-        <view-id value="/faces/AnalysisEditor.xhtml" />
+        <view-id value="/faces/AnalysisEditorPage.xhtml" />
     </url-mapping>
     
     <url-mapping id="cockpitEditor"> 
         <pattern value="/Kieker.WebGUI/cockpitEditor" /> 
-        <view-id value="/faces/CockpitEditor.xhtml" />
+        <view-id value="/faces/CockpitEditorPage.xhtml" />
     </url-mapping> 
     
     <url-mapping id="controller"> 
         <pattern value="/Kieker.WebGUI/controller" /> 
-        <view-id value="/faces/Controller.xhtml" />
+        <view-id value="/faces/ControllerPage.xhtml" />
     </url-mapping> 
     
     <url-mapping id="cockpit"> 
         <pattern value="/Kieker.WebGUI/cockpit" /> 
-        <view-id value="/faces/Cockpit.xhtml" />
+        <view-id value="/faces/CockpitPage.xhtml" />
     </url-mapping> 
     
     <url-mapping id="login"> 
         <pattern value="/Kieker.WebGUI/login" /> 
-        <view-id value="/faces/Login.xhtml" />
+        <view-id value="/faces/LoginPage.xhtml" />
     </url-mapping> 
 
 </pretty-config>
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/css/AnalysisEditor.css b/Kieker.WebGUI/src/main/webapp/css/AnalysisEditorPage.css
similarity index 100%
rename from Kieker.WebGUI/src/main/webapp/css/AnalysisEditor.css
rename to Kieker.WebGUI/src/main/webapp/css/AnalysisEditorPage.css
diff --git a/Kieker.WebGUI/src/main/webapp/css/CockpitEditor.css b/Kieker.WebGUI/src/main/webapp/css/CockpitEditorPage.css
similarity index 100%
rename from Kieker.WebGUI/src/main/webapp/css/CockpitEditor.css
rename to Kieker.WebGUI/src/main/webapp/css/CockpitEditorPage.css
diff --git a/Kieker.WebGUI/src/main/webapp/css/Cockpit.css b/Kieker.WebGUI/src/main/webapp/css/CockpitPage.css
similarity index 100%
rename from Kieker.WebGUI/src/main/webapp/css/Cockpit.css
rename to Kieker.WebGUI/src/main/webapp/css/CockpitPage.css
diff --git a/Kieker.WebGUI/src/main/webapp/css/Common.css b/Kieker.WebGUI/src/main/webapp/css/Common.css
index 614fbdd5..182addb7 100644
--- a/Kieker.WebGUI/src/main/webapp/css/Common.css
+++ b/Kieker.WebGUI/src/main/webapp/css/Common.css
@@ -75,174 +75,6 @@
     font-size: 25px !important;
 }
 
-.ui-icon-close {
-    background: url('../img/icons/Close.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-reload {
-    background: url('../img/icons/Reload.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-settings {
-    background: url('../img/icons/Settings.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-logout {
-    background: url('../img/icons/Logout.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-scaleToFitSmall {
-    background: url('../img/icons/ScaleToFitSmall.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-scaleToFit {
-    background: url('../img/icons/ScaleToFit.png') no-repeat !important;
-    height:32px;
-    width:32px;
-}
-
-.ui-icon-snapEnabled {
-    background: url('../img/icons/SnapEnabled.png') no-repeat !important;
-    height:32px;
-    width:32px;
-}
-
-.ui-icon-snapDisabled {
-    background: url('../img/icons/SnapDisabled.png') no-repeat !important;
-    height:32px;
-    width:32px;
-}
-
-.ui-icon-snapEnabledSmall {
-    background: url('../img/icons/SnapEnabledSmall.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-snapDisabledSmall {
-    background: url('../img/icons/SnapDisabledSmall.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-gridEnabled {
-    background: url('../img/icons/GridEnabled.png') no-repeat !important;
-    height:32px;
-    width:32px;
-}
-
-.ui-icon-gridDisabled {
-    background: url('../img/icons/GridDisabled.png') no-repeat !important;
-    height:32px;
-    width:32px;
-}
-
-.ui-icon-gridEnabledSmall {
-    background: url('../img/icons/GridEnabledSmall.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-gridDisabledSmall {
-    background: url('../img/icons/GridDisabledSmall.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-autoLayoutSmall {
-    background: url('../img/icons/AutoLayoutSmall.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-autoLayout {
-    background: url('../img/icons/AutoLayout.png') no-repeat !important;
-    height:32px;
-    width:32px;
-}
-
-.ui-icon-home {
-    background: url('../img/icons/Home.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-analysisEditor {
-    background: url('../img/icons/AnalysisEditor.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-analysis {
-    background: url('../img/icons/Analysis.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-cockpitEditor {
-    background: url('../img/icons/CockpitEditor.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-cockpit {
-    background: url('../img/icons/Cockpit.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-save {
-    background: url('../img/icons/Save.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-saveAs {
-    background: url('../img/icons/SaveAs.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-newProject {
-    background: url('../img/icons/NewProject.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-importProject {
-    background: url('../img/icons/ImportProject.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-userGuide {
-    background: url('../img/icons/UserGuide.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-about {
-    background: url('../img/icons/About.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
-.ui-icon-manageLibraries {
-    background: url('../img/icons/ManageLibraries.png') no-repeat !important;
-    height:16px;
-    width:16px;
-}
-
 .rightAlignedColumn {
     text-align: right !important;
 }
diff --git a/Kieker.WebGUI/src/main/webapp/css/Controller.css b/Kieker.WebGUI/src/main/webapp/css/ControllerPage.css
similarity index 100%
rename from Kieker.WebGUI/src/main/webapp/css/Controller.css
rename to Kieker.WebGUI/src/main/webapp/css/ControllerPage.css
diff --git a/Kieker.WebGUI/src/main/webapp/css/Icons.css b/Kieker.WebGUI/src/main/webapp/css/Icons.css
new file mode 100644
index 00000000..9e575ab1
--- /dev/null
+++ b/Kieker.WebGUI/src/main/webapp/css/Icons.css
@@ -0,0 +1,185 @@
+.ui-icon-close {
+    background: url('../img/icons/Close.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-reload {
+    background: url('../img/icons/Reload.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-settings {
+    background: url('../img/icons/Settings.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-logout {
+    background: url('../img/icons/Logout.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-scaleToFitSmall {
+    background: url('../img/icons/ScaleToFitSmall.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-scaleToFit {
+    background: url('../img/icons/ScaleToFit.png') no-repeat !important;
+    height:32px;
+    width:32px;
+}
+
+.ui-icon-snapEnabled {
+    background: url('../img/icons/SnapEnabled.png') no-repeat !important;
+    height:32px;
+    width:32px;
+}
+
+.ui-icon-snapDisabled {
+    background: url('../img/icons/SnapDisabled.png') no-repeat !important;
+    height:32px;
+    width:32px;
+}
+
+.ui-icon-snapEnabledSmall {
+    background: url('../img/icons/SnapEnabledSmall.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-snapDisabledSmall {
+    background: url('../img/icons/SnapDisabledSmall.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-gridEnabled {
+    background: url('../img/icons/GridEnabled.png') no-repeat !important;
+    height:32px;
+    width:32px;
+}
+
+.ui-icon-gridDisabled {
+    background: url('../img/icons/GridDisabled.png') no-repeat !important;
+    height:32px;
+    width:32px;
+}
+
+.ui-icon-gridEnabledSmall {
+    background: url('../img/icons/GridEnabledSmall.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-gridDisabledSmall {
+    background: url('../img/icons/GridDisabledSmall.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-autoLayoutSmall {
+    background: url('../img/icons/AutoLayoutSmall.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-autoLayout {
+    background: url('../img/icons/AutoLayout.png') no-repeat !important;
+    height:32px;
+    width:32px;
+}
+
+.ui-icon-home {
+    background: url('../img/icons/Home.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-analysisEditor {
+    background: url('../img/icons/AnalysisEditor.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-analysis {
+    background: url('../img/icons/Analysis.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-cockpitEditor {
+    background: url('../img/icons/CockpitEditor.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-cockpit {
+    background: url('../img/icons/Cockpit.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-save {
+    background: url('../img/icons/Save.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-saveAs {
+    background: url('../img/icons/SaveAs.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-newProject {
+    background: url('../img/icons/NewProject.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-importProject {
+    background: url('../img/icons/ImportProject.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-userGuide {
+    background: url('../img/icons/UserGuide.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-about {
+    background: url('../img/icons/About.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-manageLibraries {
+    background: url('../img/icons/ManageLibraries.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-copy {
+    background: url('../img/icons/Copy.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-edit {
+    background: url('../img/icons/Edit.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
+
+.ui-icon-delete {
+    background: url('../img/icons/Delete.png') no-repeat !important;
+    height:16px;
+    width:16px;
+}
\ No newline at end of file
diff --git a/Kieker.WebGUI/src/main/webapp/css/Login.css b/Kieker.WebGUI/src/main/webapp/css/LoginPage.css
similarity index 85%
rename from Kieker.WebGUI/src/main/webapp/css/Login.css
rename to Kieker.WebGUI/src/main/webapp/css/LoginPage.css
index c45311e1..ad91576c 100644
--- a/Kieker.WebGUI/src/main/webapp/css/Login.css
+++ b/Kieker.WebGUI/src/main/webapp/css/LoginPage.css
@@ -23,7 +23,13 @@
 
 .login-panel {
     width: 50%;
-    text-align: center
+    text-align: center;
+}
+
+.hint-panel {
+    width: 50%;
+    text-align: center;
+    font-size: 11px;
 }
 
 .ui-growl {
@@ -38,12 +44,14 @@
 html {
     height: 100%;
 }
+
 body {
     background-color: #f1f1f1;
     margin: 0;
     padding: 0;
     height: 100%;
 }
+
 div.stretch {
     background: #ffffff;
     padding: 0 0 0 0;
diff --git a/Kieker.WebGUI/src/main/webapp/css/ProjectOverview.css b/Kieker.WebGUI/src/main/webapp/css/ProjectOverviewPage.css
similarity index 100%
rename from Kieker.WebGUI/src/main/webapp/css/ProjectOverview.css
rename to Kieker.WebGUI/src/main/webapp/css/ProjectOverviewPage.css
diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/manageLibrariesDialog.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/AnalysisEditorPageDialogs.xhtml
similarity index 80%
rename from Kieker.WebGUI/src/main/webapp/dialogs/manageLibrariesDialog.xhtml
rename to Kieker.WebGUI/src/main/webapp/dialogs/AnalysisEditorPageDialogs.xhtml
index c2f854dc..1e0a36fe 100644
--- a/Kieker.WebGUI/src/main/webapp/dialogs/manageLibrariesDialog.xhtml
+++ b/Kieker.WebGUI/src/main/webapp/dialogs/AnalysisEditorPageDialogs.xhtml
@@ -11,16 +11,16 @@
         <h:form id="dependenciesForm">
             <p:dataTable id="currentDependencies" value="#{currentAnalysisEditorBean.libraries}"  var="dependency" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" >     
 
-                <p:column headerText="#{localizedMessages.fileName}">  
+                <p:column headerText="#{localizedAnalysisEditorPageMessages.fileName}">  
                     <h:outputText value="#{dependency}"/>
                 </p:column>  
 
-                <p:column headerText="#{localizedMessages.fileSize}" style="text-align: center">  
+                <p:column headerText="#{localizedAnalysisEditorPageMessages.fileSize}" style="text-align: center">  
                     <h:outputText value="N/A [MiByte]"/>
                 </p:column> 
 
-                <p:column headerText="#{localizedMessages.libOptions}" style="text-align: center; width:40px">  
-                    <p:commandButton id="deleteButton" icon="ui-icon-trash" disabled="true"/>    
+                <p:column headerText="#{localizedAnalysisEditorPageMessages.libOptions}" style="text-align: center; width:40px">  
+                    <p:commandButton id="deleteButton" icon="ui-icon-delete" disabled="true"/>    
                     <p:tooltip for="deleteButton" value="Delete Library"/>
                 </p:column> 
             </p:dataTable>  
@@ -29,7 +29,7 @@
         <p:spacer width="0" height="5"/>
         <div>
             <!-- This is the form for the uploading. -->
-            <h:outputText value="#{localizedMessages.msgOnlyJar}" />
+            <h:outputText value="#{localizedAnalysisEditorPageMessages.msgOnlyJar}" />
             <br />
             <br />
             <h:form enctype="multipart/form-data">
diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/viewDialogs.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/CockpitEditorPageDialogs.xhtml
similarity index 100%
rename from Kieker.WebGUI/src/main/webapp/dialogs/viewDialogs.xhtml
rename to Kieker.WebGUI/src/main/webapp/dialogs/CockpitEditorPageDialogs.xhtml
diff --git a/Kieker.WebGUI/src/main/webapp/dialogs/projectDialogs.xhtml b/Kieker.WebGUI/src/main/webapp/dialogs/ProjectOverviewPageDialogs.xhtml
similarity index 80%
rename from Kieker.WebGUI/src/main/webapp/dialogs/projectDialogs.xhtml
rename to Kieker.WebGUI/src/main/webapp/dialogs/ProjectOverviewPageDialogs.xhtml
index ec56dba0..5325a06e 100644
--- a/Kieker.WebGUI/src/main/webapp/dialogs/projectDialogs.xhtml
+++ b/Kieker.WebGUI/src/main/webapp/dialogs/ProjectOverviewPageDialogs.xhtml
@@ -8,13 +8,13 @@
 
     <!-- ******************************************************************************** -->
     <!-- This is the dialog to create a new project. -->
-    <p:dialog id="newProjectDlg" header="#{localizedMessages.newProject}" resizable="false" modal="true" widgetVar="newProjectDialog">
+    <p:dialog id="newProjectDlg" header="#{localizedProjectOverviewMessages.newProject}" resizable="false" modal="true" widgetVar="newProjectDialog">
         <!-- Make sure that closing of the dialog also clears the input field. -->
         <p:ajax event="close" update="newProjectDialogForm:newProjectInputText" />
 
         <h:form id="newProjectDialogForm">  
             <div style="text-align: center">
-                <h:outputText value="#{localizedMessages.name}: " /> 
+                <h:outputText value="#{localizedProjectOverviewMessages.name}: " /> 
                 <p:inputText id="newProjectInputText" value="#{stringBean.string}" />
             </div>
 
@@ -28,13 +28,13 @@
     </p:dialog>
     <!-- ******************************************************************************** -->
 
-    <p:dialog id="renameProjectDlg" header="Rename Project" resizable="false" modal="true" widgetVar="renameProjectDialog">
+    <p:dialog id="renameProjectDlg" header="#{localizedProjectOverviewMessages.renameProject}" resizable="false" modal="true" widgetVar="renameProjectDialog">
         <!-- Make sure that closing of the dialog also clears the input field. -->
         <p:ajax event="close" update="renameProjectDialogForm:renameProjectInputText" />
 
         <h:form id="renameProjectDialogForm">  
             <div style="text-align: center">
-                <h:outputText value="#{localizedMessages.newName}: " /> 
+                <h:outputText value="#{localizedProjectOverviewMessages.newName}: " /> 
                 <p:inputText id="renameProjectInputText" value="#{stringBean.string}" />
             </div>
 
@@ -47,11 +47,11 @@
         </h:form>  
     </p:dialog>
 
-    <p:dialog id="deleteProjectDlg" header="#{localizedMessages.deleteProject}" resizable="false" modal="true" widgetVar="deleteProjectDialog">
+    <p:dialog id="deleteProjectDlg" header="#{localizedProjectOverviewMessages.deleteProject}" resizable="false" modal="true" widgetVar="deleteProjectDialog">
 
         <h:form id="deleteProjectDialogForm">  
             <div style="text-align: center">
-                <h:outputText value="#{localizedMessages.msgReallyDeleteProject}" /> 
+                <h:outputText value="#{localizedProjectOverviewMessages.msgReallyDeleteProject}" /> 
             </div>
 
             <hr/>
@@ -63,13 +63,13 @@
         </h:form>  
     </p:dialog>
 
-    <p:dialog id="copyProjectDlg" header="#{localizedMessages.copyProject}" resizable="false" modal="true" widgetVar="copyProjectDialog">
+    <p:dialog id="copyProjectDlg" header="#{localizedProjectOverviewMessages.copyProject}" resizable="false" modal="true" widgetVar="copyProjectDialog">
         <!-- Make sure that closing of the dialog also clears the input field. -->
         <p:ajax event="close" update="copyProjectDialogForm:copyProjectDialogInputText" />
 
         <h:form id="copyProjectDialogForm">  
             <div style="text-align: center">
-                <h:outputText value="#{localizedMessages.name}: " /> 
+                <h:outputText value="#{localizedProjectOverviewMessages.name}: " /> 
                 <p:inputText id="copyProjectDialogInputText" value="#{stringBean.string}" />
             </div>
 
diff --git a/Kieker.WebGUI/src/main/webapp/img/graphIcons/FilterIcon.png b/Kieker.WebGUI/src/main/webapp/img/graphIcons/FilterIcon.png
index 203f88308a7399448403f54a6b790b1157bcab82..0e32e20e6f6800d98851c079bd2e970b10be1aef 100644
GIT binary patch
literal 14452
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
GLSTaITLq#3

literal 13483
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
Z_J4PhnG`x|L%IL}002ovPDHLkV1k~EFS7su

diff --git a/Kieker.WebGUI/src/main/webapp/img/graphIcons/ReaderIcon.png b/Kieker.WebGUI/src/main/webapp/img/graphIcons/ReaderIcon.png
index edc3e77837261a986b430e52e1b59c0e2da75584..b24a70575bae221a110a5d92e38356f801d531dc 100644
GIT binary patch
literal 12409
zcmV-<Fow^GP)<h;3K|Lk000e1NJLTq003YB003YJ1^@s6;+S_h001yRNkl<Zc-rM%
z2Vhji);_a+lWcmY_XGk67K%vkJrrqz*s;B5FVCkwpZq=_wr4>>p9qLNnm_<Sy7Ukr
zg(QR|goN~LlFe?m*ZF5=@4b6B2@nwU{l6R6ot-;(_Rjgv`R1H6b1w*f=hwp33#C=H
zRecVeI?x-W5CI-QxA`X>ont!}bcpP5UK60H+41TQ{Ckf7b`SQNuNli{$PS!5Fw=xg
zOM|0>yGT`1<i_L=+~C0;L_XO!4|rHTVD6eRG%sVW49&{k@4(eifGuDE6YNb4O8kpP
zs=1Q(U7G6;3BbU222M)NOa1iD@ppEK>lp_QsRK-I6IeY~_BMHZW%{NV5CH<g$M?yX
zn|{Amy_vj=N$E1ISLLZ*NgSV8m+@W3?*hW_2Edfhr-bi3y7RN{cXeMdYThW^Nzn<$
zYQ~}jRRUHZ1t9Xm<i#%XSCqxyFEw6*FLJ&>-{*gi8?+4o8Bho3;B6>^jY&@=HRP<!
z`OWF*cLQMB=hM2T97|a}Vc~>(2j4juFOFCYZ53^AiO{bG04*DxM)YRdoA|5qUx72#
zX@k@76%@di@x$V;R354P&8^_~1Rx>hNXn{N&(0b&J!v}33!4WLB>7E#d-s*y@Yun}
zpz?U74UWV2PzWnjF{)f!jm`dB%i;H%10tX&3<nCpfZ2U!<5{7z*!7T^(yPTpZ}~EJ
zoi|%<cI=mmU+^Ob9)T-IuGrxOY$O1zBmiU*0Ia{Y7=BLxdJzD=r2x$AGZQC=B(v)g
z3!RoZXT~2G+#Dpo`fE@SZFjWtD1PG56Ht1jln3Bz4gkv^4}d?-8j##O8K#9y^LmsR
z0~Yz2!Z&=C`4L~|dkgi)E04o7zdQqFN6Q2YP{*h<tu@v^AOOSyrX@|o6GJAl>mfcr
z=0ITDO}=}}SVTv-3Dw}MltK8v-?5WbC-Do%UV!qW<$?tS!~|wqYRrF30H!2O!Q+C*
zF+uYH(BO*!fIUJz6<{+8x>gzUgY-X^TAhktIsOV%9IFrj(8L928mk)rfB+B*n$&9&
zjM0ptLihf8g$^_#=D=Wog5Lki&$OB}c;n<7P<gCUprEjJ;h7C(x<4QQ!~(|m8jnY4
zMlemMDF+S&mWuFrzajGJRcYLWYMQ1cyn^<%Y2ny8?K%9;>35*&Se0M_Q5~W)Yp-bk
zU;vEp0x-7cSUfansF3sFh3*0uE0a2bn&4`=psSag<%u%18Th?3??Ls6YCDMo7yvPy
zVl!)stN%a%L=pf-5&)i_HDGkl(J&-%2%{X9it{Gmz)AjCnS#L4kw~krU%pCRR&5r1
zaP9-BIa%Wcpa53Jb!n4XRaEhR3xIe3`EO)0n&NV^F5G7}8Sj@X6kTYai23c_p-T{I
zF+eg)465_N$J>s1a#+B~#F2Pl;6SG7E=>NwMFozW*oip+m^JuiJ$X&{G|7O9v!5P8
z_<qN->$35u8J|M^86ECk)!)$8*1cXTli3jPXV7b=4ghVBg|X01oi3NoVYi>{cURx<
z&F03!Ro{H@tAe**1;CtnPj|1X&@PLOZ!@k(&mJmGaIg>vNhAm><Wi8!q-+3){uJ^7
zP;b|wHTj?8J~I>1u!Ldwo`8FZh+T+iJ%fM>od<vjp8><XAnfySn0MphcnLQt^IlNX
zb4WR-J_mo9^(C0kThM~`kKv*5quE6>X(J>Acpid4qtS{iHis}So7IM^E2|*)e0E-C
z<>h4oLGo=whmSXY_VJrHmB{;501O>EYg_lko>Pa67%GX1i3W*8!s!o!zyJlP<T5}K
z-%qeHa$l<q<?!~;FF>c!?cly1_d)-F{)}db&?yj%diXN?BcIKvr8RG#6?n_!Gf$TX
zUuS;}_6rVpbHq}Z)o&iB8(xWcLGZq8b|+NVHG;+J5XND(TH(ye)A+=ZqXil12cPWR
zt^3KW^iwyLN4jYMCQW&CkV>gKIc3&#9330u7w#*Sa^$d>@TG!F5D^}XDk^Glr>>o$
zW9N=c%V?YG#tQV--WPD^(e2RS?t^h(bziRqV6O!bOF&MK6LZ367QoE`UfO9&M||1S
ztloEy7YLNE%g1YS*MKA6iT*llDV}x5Tz38RsF}oKX{XMifIt;)&>5gh*G?!pJ|1i9
zjX*3y7^BT*Lx+DpfKMGiy7TPWJx}$&Ylt@e>~ZIB0>Ix1_n$qL_D+1;wr@_EF%1*G
z@drR5LHW6Pn9c-pnFN{5R&3B4VbatIh!Y1?5dhxaM*tYr4h`xy2=`L=VuE&HhZg|s
zWMFVsz{<3HflfTlsfG7cn^BNQ)Q*%38w&9c7k>a}feZb0C;_0a4}immPJrFzL@K2m
z+iZ5wH#DMQ!|%m57XpXV?U!%L&d9=hckR|5Jn+M${&x>4OzM5NaqX&4ZitF*3V`I<
z4@oPoRDUsS)Yv5>$B$`tT&0jgUUm+cO=jrQy$jJ62VA~%8OBfI+LEzWHI~8K`(FeC
z01W6l01{P+jB*G7?6YZ^zWr$BSCotNMX)J<6Syw9fdBxr`pjk5M1^tUcp7N6b<nOu
zJCG}s?7HtAat~OYn9z~`azV-EV%W2NmuE-H%E>{Rkc{CYCuw)3toOhTylx7Bkz=MQ
z>b1t77Ciju=%l{An`Iz_HEQIv*>GWgAw)+-qQ*uej*gFk$cPAU_L2;?+E|X>KJX&$
zJhC0StIJ)uyQ(|Wdb`I?#O`2PPs>dBgpM2@2lk^AetlO=J7Q|`2=&d56&s52_QLJp
zzU)DN9kLY9>^%ppb~{q3l$dyJaOQLdQmfRMa(&zO@hHAcEH16ofz{^pvw+I73cPFU
z4%m_M^+RsA^XS+Kvr6~v+2X$K0E`}&tgNePJTU*EM~1WnfJ<gXT5}b4xb2)`A+C+c
z3$oUt)#+d1zT<kK{$2XxF3K)m05Ac-;}FW6_A_c?e&N*xeRTjlqB((-uNbc2T}8XV
zdD)2`==BI5+-@k8R#u|8m}nfJRs-iMVC0n$3J-|D5?dI!9N-6lp+S$gZP)_)_HKBi
zp`rT6@snm3|NPVD8=41h3V>-d9}KQ4tNr<*B})c%?9$oq*x9OM@I&5mFglFj_PDP4
z1JujW+jKB>&Q!Rg^Bq9fgem0^p##x;Mme-h>lhVzoGc&{3AOoWQ`+&g+^&q!-`?WA
zU@SC3C<+6WR89EZN#-jVNTt$d5>m_5&?Tf7Jk{?FP)Jq6A%k8I6o3Q!HosF}U$JSz
z<ok>E?Amlg-q1|}u<)Um5=t(WY<~2aB}q{+G1x0m7ur{{9sgLk3TEFu0}V|aie(BJ
z6(+KIY?unuf-Q_z$alKSfoZrZM1?|Cp*TtwMFovWJ?8jdIFFVo1u^CGG@+ntmBkd~
z=Dw3-b(T7uUXu<Mlf_%_Zr+BTZ*$l{Z`LE~fYCMs;)bJV`@e<5RZ+|W+%6a1xOP44
z-}~dgs;i6EOq?>OVE4|AHx!uN8~}@7Of0^1Wz!SSJ)IO08OZ>sGMAxcXI{lq`i+A(
zCcc5J*orxSp3w)@VqWN+mV4=j6ExF)3Kk|p_jrXaF4G=79*@u4;k_WY&%5!f=gRDu
zTXf7L@}jPC4qq<SmBQh|!^q?GuzHn5jUGyR9#8H(m#$y4em1QB0gnE%Yi&tM&gT=S
z&b_#M#|HCl1z_p2Z_%ZKg5j47idVh-*6ST*ayhHdsXGV%%6bDfKC}UPwd*AWQB>Ge
z<2e9Wnbl!Z=Wz&SDrmkfUnU?5ZD<{50shqDhO1MKyGec1<5xLG=bCCmHRM#~Ky72K
zZ(k8PHons=c&zu!5FiU=<KDb(BOKhf?fWZNa+ZfjMCa-1wT-tGfdBbm6}psPIH9QE
z^2*oWeX}h;DP`B6MPKIr4R3j93v`X`Dp&y3UP?QRf;<+c^;F<Q(0o0k9R>)cAh)+n
z>#1e%W!jca!eV;4UYQ3#OfUHA=TK|1I4p3f_7Wo6k6kVo6+9xbpm6T!j??fHNv}eX
zBA8jgp`Z7|&TX3x<>#mVjp`wJ>u)OnFTe2tN;`RSMxZ+Ei)UYbA(jWAK%av?&Uy{6
zoVx-Bb{>e#9y2BaXF}x@Y^2UR2XFvz9FNG{fH}=)z;RaM1;*n8L-2y!*A=?B-uvAx
znjgeqaAk+ffod9SaD|})8cYqoHX;BB>!2B37vV(-e<G8yQUGAr_Km+>ym<Ou(mIR0
zb+;9O$DVvuviGMQj|?0%X4ykeJs!%}H`wdoi|ltn6@+2kqIKYrdcf>93)>4RCDFVh
zr4lv?V=o<1FnDUBZvuw54XLL9@@?$Ir4_s&pJunb1+i&;)3@jt-R`Kf>Y%it6iikV
zxSX!$TOYYT!vZ4VPrcuUfw3b5d8DVEh4rhyP0P(a_9p#G-gUPZfTv!Q?A^8F$$N*4
z`^Tau9?^*X;(YyiyyC(?plx&vdS}u*I3hR#OxT1>ZWE@0C13~(F8stwErDt}0|eWU
z#cjbHIEVm%IRIE2fr7*qaJ_O<4~J;9%k9Drrvvm>J<=Mr%-dm_&U-{||Mt|HlyVi!
z@3sWZ?)->f+>?`;O#vv#%slu4sXj~I+S>}i<4?aX-Mee&>m=xSbNZZ_il%#UE}668
z%Zq<UouWG77e>DTVIg4x07kcwQ4`a6B2-3AT%L#blBm%6<FqaBvQi3SUXX|Le0VR0
zFS}c==fAsMZftd0NyKYKR)-ZEZANf79R7lC2>|kwYIy*j+jAk@-|i{Wuf%V>1s5*D
znr~KK%FI0U3ek|$<WSXZ2Vmb%yOvH#p8wj!=~J2=SF7Y;3@(6|_q+_zq0#W(%=f@8
zaZ~=M0I*L=Ek=)#eeye>`MeL8h-01)r7(7!SOl4zeO{0YuDc_eQj3!WS9TZa$8H9@
zg9LXj(m$D4*)D4rv`jTk`cuk?=J$LMp6>rVG&TU(o8*J4Dk@>czdkL?$vOVE#bVe`
zs>*LG085_ztMbs^z3)w*{lN1h#*Xp}&1tS#MF8m1J_=>loyD&mcnN|-0@1UhpT!};
zA&i2kR#Om&RqzuvB4A)DY#OLFx*OT#%}=~64glgwx$R6NrC5rP3kljuI2(K19;UTK
zz|3=TyWNNg9E$|$^JK0?HR5_oI}#N<)&Dv4Sf6LGLL#T@0;ths^Rs|DZ7nSS=;O-V
z+!Oy}GBxa3`0$^ve81|`R%b+S7=Y(r`Dgg4qbEO|lss+0T?6m&2Y_6YN-3iYGc1>q
ztvd(Hvfe=L<Kpq+p^G6%6Vz$|XuY^hj$`ir0Ix8`0^~g(cZ>Bm1%O%_fammB2(R4p
zS0tCn*@|9Gy%8CVRzCo2Rx2!fXQ?(XFZDx%LA!m?BhMGF{q~bqC**DzfEQj}7JcgI
ziO(iZpEid8;CGD5U8$7QbzpDj<l|)ZVfZrdeTa$*hd)pJGdLwqKMJCP7s^d&iU0r{
z0IVIGgz3<D3Tj%u3XQZ_e+>#!A{ET*{vbSg$8!*_3Kt~RptnH1zImX#^e=BU<mab-
zURPJXe(|F(6s`XE$F1Jxe!~E~^!kULQjeYbdfwtiqdIr%;%5O;DZ&bc%)7WjH~Dy%
z_t1IWIs94fQc#D<(A=SOabQs3f2ReIHZqSKp6UA{dNk=NOf+9usG*W-G}@51-q<Yr
zyX<dE4Hqt)TB+5RuA4ezVg8P--?us=dgFoEUp`JqJ$CZD2OfQBK>LmzngAfda)s2p
z6N1~fAn}?5CLq8+bN+%NqeJnOfm1*gsQT{$zzIm<QQ|@Bk?_T|m0sH66bQH!y2a)|
zl{JQD0DSY=m)6u%`&L&~6@3#O)8>M<roz!$dEPJpJreu(jF0QFYQe(~4rtS^t=}=3
zOad}F0|4m6=yCg~kkOI$Fsvy005p*SFmKd6Mo0e@6h!n@;a0+6BK%>B$&fs9qOie0
zN<QUWzKgDiRn#=kG<>^!h3(|=y+2e|7OseiZIe?|U17Uz0EC1@4H`B)dDG1KbJ|45
z#`x`8#vT&j*sWl(nh_B`ThQQ~BW@E3Lb=9FysF|02x_ZDV+V}Iia-S--qG)80VF_I
zxD_xb?m=|7YbdU$tcJV#^g)4v0lqCZMA_v^1*ijpkikT}E|0$jZ24h>bKjoLo65@z
zmJ<N72mq~4N#6_rgNF`F-ZX2$oOm$+ZkG!+8tTc#x%hsC0Z<2?!eF)8P*KShoNdU2
z^tk;<6BCH<?SC(l21tJ&033i+ZWSIMF%=$aw*-}!*WfGV<#1QuJ}4+400Z(V5FHRP
zYUFUsu~HrA2f&_`U1;aFA5uz6az2cSZJS<GUEb;)b~gjS=!ugTZJRQ4T3}d2xNs2;
zhaKs4T1-75c5&R29uI)kZilm(S?o}c&Yht$pa`wgeT|h7GBjey2%2#IZ2=%Gt#B&P
zgox>QZrmaWmW7~_vT|HfRt9(X?aM4cm;=~$44|}%tS$*w2ZS(Jy9ofh2ml`u0L~Bq
zTD>N4!vKVaMo*fW{P3=c(<ehnsE~^z7T^RU2^F1A2Ov?;bd967t`71F3L!i!6nb{=
z4oZcbZG^gL&4IObUx72i3jOcs4=4b!`-E@%9AIa{hx?-!!OW<6z<E1RrPV@lX(=Rh
z=?W2HVZbjA3wySZghcAZ%_h+?LO#)*O-+OKtG_u~Sa|NA5s}fy2mr?020)uOU1v;~
zJb%mB$rC^mtnm-Th>F^57BHDjWDamK-mh=ap@O0!9H0(>q=X(wA(wIOB}}vOZMo>{
z`j4?R3LqgV0eMuO+iL+fLOV_s9v3<V9*kdtWFQkPwYFZzD5zt*b|@-5T%aHpV5(H0
z(S#tg&5g}ghaUx<JADRiTDSTPi3Q#dkBB@}T~*%dHGvxjpkKeyFWft9<cFiij{%ih
zEnEb3H)S#@rv4|TBa_jH8ygLfm79ym#p7<BJAqoI68O{?D<G6^NyY2*E5RM+L_P29
ziEYSsdjO!CZzr@9It|Z`S_mQX5G33MNM4QPnoG+osHLK|v2m<kE?1zC&=4FD7)TfF
zQGJ6M8_hO9017T#M5|VOnUSA=dRbU_`2JC2r|W)L^F^!D5jO<DKR#NGwr<$?#-RI#
zy*qN;Xi%zrI|Qgj%4Jev|EHU{pg9+Ep{}l$XjEG&d=ObJqaegz0{QQvjnI+qOE84i
zL;IfX!L4#Lm-LoU5N%^+!iW1K7Q&1OFYSmgh`*XTT|Ig0pk13b&?YV(!owp(ds-1R
z7|dWW`a3zLC0B?my8LoZ&hdW)hlK1LJwCa1-FKh0YJ=8|0r2q}>9!4<KNvn{%yUCW
z4g;x7*2DrNnBzuNPt3WrybR*wVo|6@gUuErIP7+xcjO&C76&@{_8hcA_aU~2Ss=Q5
zG_ou0x5fg@gm&zNc0vg4L_fi3hiy_qAXtEea~x<4Q&U$@v_2Gf>DY<PR|@YKIXcoe
zTCv`HE159%^3pQ&?eZ^+v$KzWAdy1KpnFHx?EiUdtMWlN1i(K(StCo?ynWrsabxcv
zJZy-c8S((ovYU7dl~t8Q=oaXe*aJzVQcT=bFq@2sys_Kk_5tACt|ibwy5$sJ+pq#m
zAqEuDJAx*ne;oi+^UVr0K4cocKXM@iOGEtP68`>I>g=mjY8*-?U$e!E>WBix$HWk?
zFW4K^a{v(f!8*N}?eF8qUQ<<#)_=FU`qatY%S@(*%}IUkuFg4srd9c%8v@|DmzT=V
zrDkjyIey&KfkOuS9i#3ijT&i>cAFKdiANC{8Uj&Kk-`tr@zR{Usj(5P7Bf&FIBW2J
z(u9|x5%v}Bg%g^ezz|ahf!zXuSi+4{kc(+P$Ss6+!U^q!&-Z#eO~yncUWGydVPWAU
z&{DH&bU2()U84n=R7x$_?;1^3J5T^T9v{VPt7~B6+I9M4M^ly=jk^Ez?t4!~c2-)e
z@<BHQK&LJViY}e+JUMRir2f77_V%*?B7AmJ2JO*eHX{?!^oXbk2nYyZ8jg4sXX=N+
zMzqXgF=MOMg6LW!H$ZeU?JTLYL1-@pT5J0PH-y%Kw6hf1<hC2LfJVTwMmh9z4u;oy
zze#9E?xPw`qm@b(3JMCufk8o_kjVwhpf`u;8uZvkgdHCj!-k1Ci?P}qxQ+lot(+fw
zeO(>ex_*=C;DJpaHa6C;>vP9|vh$gzTa^#GQ2<n3yWE{VcG84|rU1~uL@M#_0ksjK
zdOU8d2@NJ*gpA{OB<v04($$Dq0Jf8PLEoUmE@Bx@rxWeocL*nT>jqsrc0d{SG`!aE
z71Rb*Bb<PJJL9egfC-R7ufTn+gCMc?9+*0G9FoiBg7-x<1qW#~5E2}UWW+6&Am6od
zLP188nNet1NGLg1CIDcwJ8@lu30xuo40;3lY1<CZ&h4u|Fc`F}`t%!6az5iW0MNN>
zf;yqc;ENNcPifz^dpEyh-UwLY?U3#XrCyO*2@<J9a5fOf{G2riKTd-+VlhxlXe%=-
z8#=XbPX->s8s^(`VU7MvC=M(H=tvsVyx7$!h?Wh6^BWZ~Gxz}*E|~zAFPB2!q@JK5
zZX}tDs6|3>NGQ>MrN{|FzH8*J&ql0}-XB2yf8vS?$BE_xy;;NI^v$u21_OzPe}e5l
z{`(WXUi<I9{RUpn%1CWhLheQZ2<+W^gpo$U?K`#y{$@7b0=$j{fLbB*PH$3)5X*D7
zh<Uw#UK3fK-IuH*gGL1x^D$l2Ap#QGQtxPa{W4q=R0+_IG?ZS&0vZ4-8&xnia0*%&
z@ffz6Y*3@Eg|1yXp<qog)B1p*Ag*7;c|M}JM3ldB*&Ud!Da+(?VlYx6EkQIN*LndE
z#%?8ax_|dxynV}>)m2rOKIz+kU}0AJ?ExUDZ=aEklV?nYc;efO-8iXKA`Bp06Uf#E
ztZwhkc6_}A@!P(ACNCa19ih`^CtU9)lO3H$8ZkHhp>xDLTBTbKHR?)4ECF+Se|!Km
z656R#;PIMiFgs!)(nvJeYOygVr&H(7NTm+IGH;yXpC}YOB94McfvSzi<;E<X&X!lb
zbDM;tTy4Dx><*_ec1oiM_w2*FcWg>2D$4l#9sLL8XQrQORYLBD02n)NLI1Gu=yNmX
z&4Q4yP`_hb5{~s48LWX|;!!l(ZD6+Bg?x%c^ovMj_F@X4Tf`%SgW2}=s=7M11>8>h
zq3a8Iwru!LyBrGTc>qzQu?$!)p9mim1_jIsdk~UIkfoF=AxIqn0qQ_d1`^MPzj=@g
z`g}htgn~Xw<ZkAaa`kqni%D60u2yICyIaQLaKPc856~TQdkPEB{;l7ggYz=ZoorP;
z=!O6oH{pT%LPMjD%$z?9f<r_3J1;m3K!T=(5i^gEjKDUh1FG~5OwIV49YDyEHn#x2
z9H>%4Y(y}7Jb|v!1P%H|WH9Kl!|s3r>jku_?t7eV&j7Q`gd}b$jz?`^c<@*>Cu$)M
z4hVvn$Oz)ygkUpqCmk*)@KlKeG5R|N;@_ra;(j8fR7USp1*6p_EJ^Zh8b}~!HrvJb
z52Is;kK!F$Hk~<t{_u<a?i!qv*sGsm{hH<1O-HmEfPZ}a9XfL0(AbE`*gbO=%>xCS
z#Jna+JCX1dME)PBQlZXmVzE*#hmu+?@f_?THx&Dsf73t=IEqq|c_bnv5C;dUn8#7C
zZ^XnkgocI&ROhJ0T1O33I?GX%ECz=tLZDM%N7ODV21kU4gVQ5H28#_lUHrB<-#x&7
zV2D!9VgQ0vYNQ|lScvtS2*0z`x~PrbXay4mK$M6)cIXJ+wRLl5X6B(6``>l%`JPGr
zb?a7te(L~u|C2S6lShs{6&4=#`GQ9lHt$H{Ghr$5hT6nLKzw94p&%QSY3oSPh5dd^
z>~#pnA)*I9-Ak!0ka$y}8a1dCa<;KbPiTpny_1xw3rPbhrBY1=4_0C&9`UgK`t%i0
zlfm=9PvQZHAQb2#;MEeqU2a#iizcxE=nVc8pK&G~wr|>0aO&iaXUW&h(c_cr4*b0B
zy7{111Mv7WuSs(=^PcXRbjQDDFP!6(k|>l1@C95!Y9;R8A&%~pL)AJ1t}~c?j}QP6
z1$oEr%MbBE8`ry#1tVn|waTftMdA&)Oyc#$i4RM`^-u*Dr40D=0k5G=f7e%!g^8X}
z4-O-q60uyQH=3}X&>v^uepW(n-mW)Tgt5~D=g(#0T|aKC`Q?{QkCK{mV<*he?%T8V
z)&Vej+;mxWg>Kon$<v-2H+6zAFtHi(03fz40^yi&4J3AnLk_14m(?_Y!EEz^<f8>4
zMGeRwM8pY)=MZS2jkrI5dJ_cB{~rTtsh#&XWQ0OPNmLx9R)LLpI8}8G#0_<cXv*id
zI!O#rt2g_NJts38@7VmK_VA&NPmroJ<0j6m-n;w9TL-|H@yT)mz!wvyB|ko9^7yNF
zh<xTuU)|b8L3~sQqp0G_dN5k-9PRpG@Vl6+P?9)s^J~L>7x^=O?VA4%5}ogT5#d8*
zNDu@CC|Q72T2;@yAHM)i^wTafIoIe+e&fD!xde7>+UDA^edRpzHEsOl*%d$U+I-!N
zXzKx(kgTXK*R7iUz{2^1hTY2xpxI+4n+7!sxeRrT567{QA>i?NP)&o8O=2F8h=N+A
zhvpuNSnHd%;nkVH77?`ov|wfYDGHes)A@x=_K0XcuBkIZBePWBgF8SJNb<o~Rh`jq
z>;wS3b8`x8-}co4Qgv#=l>5u}?A&zg02n)QhC*AZ|9R2lj}PzDzb~(qemn>*&=Iv;
zI>@%sVbCEyoJEoblNG9UjmYihyr5>3;J+K8Db)bym4HY%yp;WEhPMcDzY?KLG#-U&
z0*JRJC4rR-Rn{6XeJF?bL?7+=c}m=*P*rdAZOI|^_1Zf8;}4r*$M%0eWwV+069BFd
z0Ir*oZZ!a;!+@HKhJA~lTyk%(zDd_@FAi$>Ux^71hIX-`5TH_!3DgZVt4Jxy>GJrQ
zxVYf!$5&|TDM7Pyu1-zVt0D?PH6AqNO>;XYat-BLJ+)Bqrzrm%k<X%l&H>C*;$M25
z9yYJt0Q>iDdb_^9V&lYVbBlMUY`AVhuGIj{Tlh@dD@7G4PrmqUzxa0Xf(UqRYN?Dw
zYU2&%B`8p>z%daTh>HkebGX&+L}YTt78`Xd-7LIs8npRM!hV|Gd~)V0ebnSV#8Tx-
zxr{`}N~BiGG39-_)sO^L93^6(Wr-$Uu_cPBRo7@?&ISJqbPastcmILCd;aroeSPJo
zNz>+D`YC0@b#K~kH2@Dj@^ZrEf|AWozW7X1Y@1lo>G+yuUQ5N{zLX3;BuLFBXUe~{
zDGi!zWa4Wy*@!Ri^m|aNFzl;M%7TVALyJwYngA6Lq0=X~utgU7TSS1wmp6k`l+{Ec
zw4sIH5ynD3D2>wV<bRXqjlTbS4IJFJeMNcs#g&tj=N0VQ_MhwKgIW#1;zwV;qbR?4
z{Y!7ZnxF{@7Bq|JK~tlVaJn1QTm8xLX6~u4?2AI_Bt|tdHX;~@1gVJsEn`VMdaB*&
zMrNx66D=b_9DQmc=AI!2ezAf$QAYKah9h(hLZy&l8n{saXgeZwOg)<hgB9sb7Vqs&
zqH7Z`)JU3ar=*d*#cX9*&<$HkrGnBHGK-$1MKACBuh+t%eJN|{J;PIG%+K4ob-n3&
za%~j=%RXO=3Uc$u6kNFU&EGzLx1H!@B6JVFTu=mZ<VG4z5L?Z%xiIR~tqW#r0lYcz
zUIZ6((NzNM6{L6H4G|X6RHO+|U_w(g>O~5<l(nTn7X2MJ4*>Q}yyA2?T@a$d8WkX+
z6imDt;?ujRrn1M5S#3@RCh)0+rq?D?6yAso4F*(9Je)u>U(l8f4UM>aVmD9+X;7oZ
zCgg%>x*}!6HrTm!!`91}Gd}8(*gH2rFZ;STZMO=5kCv}P7jrL8EXXZf@wbncwiTaT
zQ&j^cg+-8%*cn_-C*<YigVT*6p?5EcZ5t0F_VAlDQ4@0KiAu^%l60rFl6+Dy=uSE{
znYd}bk3NTvrj_{@UCg1rJ6)rt0;lw1r$Q%l3K2G$>@k~Yo5mNuYiQyyh=fAFA3k^#
zLP9kV5fKK(mx`gbRtIrpTz3z;2M7Q{dpd@_DSKf1rXLPoym<QW<m-88#ZB9-0^phF
z|0+q@vgLun_l^Jf$rqmv7oCmDOUiIr@fC1794Im}97je+L1kqP3eW@+P3gfW8Zh4;
zHF<Q6|9Sv3izdf`w;Qit&iB_Of#w$ncu7i#gvF@|-}z0mq0o$uXvL2kQjlDw#0o;K
zF>PYW#OuZuqY;LV8iMrP?MnO@5ANO%Th^~VmY0|M4tQ_cuD>M!{OQHFB-=M{d1CO8
zvF|T=>1mBf{>W;z;+%7t&^9g>1qKCSi^U4{dOhmcy$cQq3}_at`R9H3IG_a@;Fwh;
zTVDnft~S54P;T;_PbWZ&ePO>nLiD7fg3G9?yb8y~#W5eYrn&~VZ66P9JGLWpiIv+j
z<n8m^sk5+p#fq%#>?5xN{RdKrw|Ywec=p9NB`KSKTrz6xwD%W3{fI_<GQDEE%?3`p
zgV2MVJ$Hvbz(W<F_G{Dh$B@YW{lX<)Xd<86=Y@!&7pE@7nLVF6`;N2_J2Z(cL|yq&
zlABPP$!KERS9tF<NE1jCUSJ>-GoR(9*PWS`0pESKBA>fy`y6@K+!6qudHxOQu5CNs
zO}>BO>&f$Hh?2e6jsvb$_GzVeSVFEI`Pxdr-&*+dkRR<d*Jki*<FhOTA}bR`wj!Ro
zN<`k|T%h*~U^WT6y}=u6UtDk*K7Id#%UM~6Uw6A*C&+=yTLQq7e|}xMCuP^t+4B~^
zHg(Q)k%R8f?>AaT+@d_f(CmIJ-mV4WYM#dSOHqh3o8Z@8G;au)`F;;$QSjAteHeV}
z*y3|(nPw!6#7$<4K3xCR6;<%z-`}sy%{}>dlS#LSG%LF$06h1~(x9UUj(#+2!Mw*u
zj2+H`C{2Kp?S%Uk@&~d1<7XeD3>^~A6I0H$2O*M^pVtGTUv8-n!Kd`=>ncLQ^a(3&
z=7m}9B)%}3;Yx8CeDDqh;KX|-Q^W4XkNvr1^*7hPX}eVby!hHbqD~%3{p^9o^XERe
zXgXFASI|XWJOAe@-&FZ#&ueY@cJ(VR^ILK%YW1*S)}!?oFQ$F0(^YOE09+;jTr(ru
zN&w!EJ9RYe^S9o5Zf4*9z3`=y3NVui2)8B|asBeG=;K=D+tsg7mdj+QL)#eKCN2ub
zj-Id2&re%kTU)lC08mH(xMoJQRRFyF`m(NRC(nNS>R+B2TBS1rw^Y}fQ~wYzN>lXy
zhlH*j;ERvGGMqTEcV$h@m30X{`(C_wA?uo(bXx_$f<@0HR#oU$-8W|Vz;F_5@%2uZ
z6WOgce}eaUea$qbsR;w;1vU4QkbfU7Padu4TP&jHo|r@`MGB?LyI1upYa2IO{$<ZW
z``NTZ-<Or;uZWI`%hlFYT{9!vDgZ)5qxucGZ|b^xM-J^78XhVPOj})rGS8eAZpz@d
zCi=D=3g3L|ynb6y5Vt7bB>MFwj)XoO4m+lI-OwX6;G^TU*{p15wL-20xk7<lE+?kD
zCFlu3fkEsch<3X-)vS;!Fx@>tHvrSVXrq|;c+{y|PfWMi+$sPL?>S&kJ-L5<Y3aok
zQPFYPwc4s{Zc%I%0AXP<gGP*;v6%qSh5#VcS67t7fuDA=AcbZ@St5*;B|=#ukus0o
zTPI};BI5R5H<9<Uy}qfpUgEvyfNOX0Vh&VQm9x5u6K8<cYJqd-Qo(36K-aE`(5+h{
zl$2b8yu9=5+Grb##RBQ+r-0t8Mvr^j6v2fH-Zqau{un5Nq5w(dtr0`3UZ;+nbRXQi
zeM@n1_NN4ZECRqaQ_`&k;NDTAXKfrdc4V6{kp(p9bm-*aL+p_)h))N5g^S21OHE6q
zGFGMuG;h6>tCu43#$FGC_xHWl!U4yQQ{ZSH85ya#tgM(VDL(MPW7upq!jU5fkWN>R
z`}FA#<c$bO`0UwKW;zQNJj%7%4-E}E)Vp_o){eA6qzxOx>u<b@Ob$7_JK<JYz{y`u
z!2X}N?kFtG{3t3qHoaC`ea(A@TM0n)-9v{>TRU#bgoMbbNIw8lj~>HPiC54d{)cur
zp5+D2gF*BCv@Da!I551MU-`g@2$%y=LfXo>wo;UtnTAVCOIUvk7CeGYCKDVxb^tXr
z)MFxCAa4dhdU`68$o%;a^KCc)`jK}12mrZ=wDAJ)mse12qnl70zN$d&b{i_bT!<SD
z4bY}-2NWCMmW}sn?RTf_b{;vjYkP5V&R3C9v1jXQtFO5x(Aqhm&!9mQ{ylB>jJspw
zV?_YequtxLVq>Eb;^W()kdQE<>2fAKs`cChFSyIY+|nR#4KmIGr0h6HMZ$Sv;3!z<
z&!5BP<yTnW^X5HFwA%#7j~^lc=x|cf9YEeFKR*{|WSn8YId|@2z6}F_9B1uF8)8jo
z*ce`W{RLF6HDkIa4J|khG`;@)w&kc?aTy1O1c0N&g+}+DhWqs!#3@{JXJGxRb=K6>
zeVa;43%(-&q~8(%G@7vX0|t!yWZa~QGkV|AN2u2~=pg0CjZjfm%5HejXhI+|GL`@q
z&Ted=U=ZQ?y{SN{uz8*rFM9L5&(9HLkivNvE@VPwWjR|5m^pJH;dc|HrXB$U(aeN|
zK9HE$2QFR8gY4{ctiR;s2d>-Zg_oX%OC@!FH(Q8bS((S-l<ELHocu5Zse&N8I2-nE
z+z<EndmLh;+c#@ZorL8df2L1QKeD>Ix@1#iWK3pVUClKg+|eok?!ISegjAwlHg)>!
zhX)QBC|H2e*oabo+>8tJ^QgcP5jgQQloS9&-k1Us5D-Y}WtbDBs4Qn?{_$o$3!rr5
zwE(`YTrMZtorAU7D%Qu8DYLP~VkVRDDYk36M~|M+y?akoR8)vBT*zYmOqw*4wK;qC
z6rHG1_wI?fTeqH2TwI89bF<hO{`B1AD6gP`Z8dDkRXvuz6OJYxKye-7Fnw-mg|Py;
z&${uW;m<>tw!NFRH|Pzp@{6x()6({TrPI~yh=_>Jt*_VqdN*|b15c>4GBVzsHRr(>
z$B6#L4C;yO*t!|AGSZm^&|7)vTd7nLK-9q9-VcPDATTh9J$J`v4GN~sUN4DHn)y5^
zFZFoa)ALG73ZTBej(s0JdLsLWbh5M4!DMQLPMx}vcQ>GO1l4f*8aZ;pb=y4l_yWkg
zROx*ZVhe;)SaAlPaXb!^P7-!Ur`2MGdrIzsm)pDxvEdz?wJ$3zgYUlnru_KvpFXr$
zj0Z=IoRoj~&`-ZU5Sw-XVtIDf`6a_gOj`Qb65o1&-C;+^e>sTrFXl2Wr4~Q|ApSNY
zpCWI^tI70P3&bL@T1~-Gi@YG@HwVx%e;z*v)YVlpPN!wc=k)fW($Zo?VgVc#6$8=H
zv4{YKtE(&6xO(;K%eP_i0%?Ou8ww&KZJ6lBjUS4NO0*<)@MSbPsj#w2DS^+k-$PZg
zl{i2X0LC&SnyHzC`$r9<OP$TyXQpSu_iI)c9yzj|KE^n8^3?l_ckS5p>vKWLGais-
zpU;|p*ImOuefrN&#f5OYBB<Uf6&R}&e2nE2Byho(kYeWQ5l1(4^5ul>zhc&80iRz5
zqffi#CvqB8(XqQ+E=2#aFFIF9iKj$&WzZYK!M_bl9ZNa)*W+=MfX%y~M<!RGiYh&K
zA3+QIn#hMoW<mM2+1Mj-gBpTRkEp(wi{t#-(>{ONxd*my{m-#;=YIK|RGuC;A-R0-
zo^8KA8#;CRJjuSFQ#uVDI{CZgnX~U3F>1JQGNlZ<fc}3m6NkA4eLnfoVqeI+w}>hN
zUHEr-JT3NFbm=ne+_4+BZ2soU+S<xp;C+tttyvL!e922FBRw@(TT?q>)TrrSj~q2T
zsCS<v-);Qfo^G!ED;IUHTfSZWa%Fnwe`#qMI(Xo)`|zQ?Ij2tT{gxa(9UL5TkwoCP
zW?Kq<-Fep_<+-z`+9V|nc)oAndy;$hOp0&UzU?1A9Ze_ZjLb~?`K+^-GBb}KCa&)h
zQlEa$fcq-aP9M8<dqZd6|DfdHfuDl)`i9;iA>sGM$9EhMAK#$|F=I(<`}qI(BHoU<
zxH!L<xSho$YAzsEX>HoHzuc{R&&FR4|9st?eX9YWuZ4@AknY^EIaIIL(al*M$h!@B
z)9nw^8|ml&(TfV$`)~v=-(P9pzH>>p?ujO%thfGgHS{%Z{B+sbGbaM->uW=R{<F*g
z^r=mMQ~>CUdoBwYVq)SA2?<H&BS-e#zGp|%*Wke;kkw|9l6gp3RaGt}@0;r9|HG?e
r$F3f=I)M7fE_FblD}zh)wf6PDZ~qxkw|8bn00000NkvXXu0mjfLpI60

literal 9831
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
N002ovPDHLkV1gf>u?heH

diff --git a/Kieker.WebGUI/src/main/webapp/img/graphIcons/RepositoryIcon.png b/Kieker.WebGUI/src/main/webapp/img/graphIcons/RepositoryIcon.png
index 9bd7f6994e3a6a01213f4e5db6bd2ae35e93bc16..b7f988d0bf6df74e0665af93656c8164e6ca949c 100644
GIT binary patch
literal 11104
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

literal 10719
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%0ACLd{g)j)bhpTB`l
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
Rad7|u002ovPDHLkV1ls3ZrA_-

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Copy.png b/Kieker.WebGUI/src/main/webapp/img/icons/Copy.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7f287c47e2e4f05b95781f0059212e25ecc4f73
GIT binary patch
literal 494
zcmV<K0TKR*P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005CNkl<Zc-obc
z%WA?v6ozLg-lH`bQJ*2WkV;(WQe6~ED@t_fO7||+h2X+>(CmDGzCdx)23jZ-6zM8^
zsgxSLAU0~}OdE*tg8ktz8HV%m|K|jkN~OzYv-!?2ObD5@TrR&9MY$CO;Sn7XE))tu
zNs<(o%jGmaY`0r9o6XRAz5W~yhhid;==~copU>&{VzE&B{r*iVm3ll1a1xmxH=7N_
zK$@nZ4<fhQeLolsq;xv{x(9GL9L@s{sS^NACKKfGc+hw}9?7zNP5Ry_AfL~l1n2?)
z88mf6B8_^z-W`FwP(Y{CIT%5A00jV+Wzlpxg~7snM%`{Vj73qT0J8&VGM=icBA?Gk
z?*JgBH5v^b=W;m;u-ok?BLINoID|3Q=b}}sRUT)v*<icfK5GVkzkeT)$z;xQpaTq>
z(dzX&kCVwH+iJC*$d0}GBY|-ii^Zzv2SM&YAV3{}$ToffaEU}BjMZwrfCjJEi)*#o
zLo^z_+WF)D8g=aej4Bq3nA9@?2&W<)1(3Dka=9$WVllxO!MIY;YPHfTl}Z>NqQ~QL
kp3ER*ZZw_WHk(cU0h3`69;C4%fdBvi07*qoM6N<$g0ryJ-T(jq

literal 0
HcmV?d00001

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Delete.png b/Kieker.WebGUI/src/main/webapp/img/icons/Delete.png
new file mode 100644
index 0000000000000000000000000000000000000000..a546aad5eab4f6668e5daefabc07e11e6a483484
GIT binary patch
literal 694
zcmV;n0!jUeP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007gNkl<Zc-muR
zpb#()E(1zSt2m{kq~k3u&9!7@rN#O9c)8fv*#7?b@#E{OS8tx)y7l19r%zv2M@IVn
z$7(=bU1PMmx@M=Lp}`|rS*f2K92^WxOpFYF|Ndim_wFOdlPAyR@7}%Z9v&WW8LI)U
ztsSu?B}EIqfB*jH@87>)xVgFhv9Pd!q}V@v`26eLyLX&Nj~=&5OpLjR)qu{<p4ftd
zyam61|M~v^|G$r%oE!{{jEoHb{{7>8{rdg)FJHb0?B9RDDm^_3y8&HYeX)6Y+4KMW
z`TOJb_t&3Ry<Nfe_y1o;Um@TBf`3H6e*5}WVArm_RyjFoxLnW|o0F3<|KGp=KiW^X
z{e8*(g8ApapNxzznHW3GdfvZ%`wnQpZmZ(rT<iw4xA(?oWu?yFes#y+dq3`ePc~2b
zCcq}Z(6ql<K$}hXt2(bH*Y@o@t!ipYu^Z6R(jA+W6gPkJp^5)LaJ>I9!E3^&H^1I6
zPd+r6|J}n6zvK0inYV4*Vb$7Ni`{^xrmonCh>-cuzCZb0a-xXQ&e-nvx4+*QZ(YB|
z+G5=C{`;%nyxX_$u<Ge)#%@4OO-rn+tK$MOF_Hf-{y%4AWoKh}^Ysmb*nbHI#&0Y?
zpFMlYw0rk1^BFVxF%4j5W?{0mbx58zZSpJ`8EJ6z{r>%z0hkIIzJC4A@bcwrhTFFv
z{O{}Qu(@{a;&EU)`H$`bPCh<<kD{XT*$D}8!XhGq46LlIK;i$ubnu_y?c4VZbLTF6
z(9%*D^85EMkPH5x8vtT+GBGg;iHnQttE+1$3kwVJ{s)3LZ{EDWe*OB*w{PEG0dhYA
c@lTj00GSImAYEhtQ2+n{07*qoM6N<$f|3(>fdBvi

literal 0
HcmV?d00001

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Edit.png b/Kieker.WebGUI/src/main/webapp/img/icons/Edit.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d223bb3063ba8c5736ce788519d664a399dc107
GIT binary patch
literal 667
zcmV;M0%ZM(P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007FNkl<Zc-n=N
z-D^@|7{H%%97@#1K*%<=#82=pC~#{HvAghdevlWEV55IQAw*64kQ^gwH{I-R)u2U8
zm*}>(y67yg(rAoSgyU{<t>#B_PVGJC;FhKJTpZrRdw##?<Ge5Ca=9>%$FnIA2;|Tw
z>h*e~SS(&wDwT88dv@g&_w2#;vqXG(5wqEBcqkMi#bWVLFSyleL9JGUYPEWp&uv{}
zVF&L{oIJfeSWGM3ZqF0UYPHe=iA2&@P%f8&&1OU8$999YH($u_UX;3T-Fy3Hb@c{j
zu~=w<R4VN$Xt&#R1qcQnYXRz++u)t$rXzEt1MPkMuYiif`ZvILW}xx;KD^G1z~=sy
zjh72AR2v^sZOm*o<H2B%l*weh1<eXzrN^+J4#CRSIPk~rKt7)*5T~NHv5AQZS|FFp
z{}QyDdw_qPfuHHSu>NHf&S|CrRSJnjg3xNUjKE|v^{xQHtkN`sr(i8R3WD(nC=?2M
zCdp)y(CKu?f<Pe9H3O_whJn%)f*-<qZUp!UMitU<M_@D>839^!3s7eEP6WY^U=6{;
zmmdJCuB$kz1=KntFc=KD-|s&<NO&a!&D2$t`8=Gt6sCK|alA_qkH-mg02zT^ug85p
zA1M-vhFZ1nu={=<h-?ld<4!vBpKwQDx7&{eUayzr^Z7%IPiJA^)F50?jRB9x>j_h_
zw6sJx91cc+rg<bN6bgVY6>vBl_*cYYF~aF|G6J<)jfcZwQYaMmJ&Dxhe~)N1N=!~p
zG6L$M(P(aRx!hsuL+bK$epkPBsZ{!uN~NAt>@Q1lHF9I&ehdHr002ovPDHLkV1ha3
BH_re7

literal 0
HcmV?d00001

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabled.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabled.png
index c39a62f447089f3c7c95bce9a1d69152d7c95cc3..91fe2b5d2db5d0dddf6bdc873d8d29db7ca0ed07 100644
GIT binary patch
delta 976
zcmV;>126o72jvHlBYyw{b3#c}2nYxWd<bNS00009a7bBm000D1000D10nq3SK>z>%
z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H117b-;K~z|U#n(@W)m0P+
z@XvWOj+106hFOAPGLr<NiIu@XiK37a<1Q_d3Sou{Y*9!MCVv#O$U-TyKSXULTG>J@
zXk3I+F+xn!X52*M!u|+hixvjsuf@G1kJr1uCq1MCmj~bP_uk+6opbIv@7IHGa23zv
zFMNRS@Gbtp34DRia1k$JCAMNO9?HMJ<2X)Z3LoPf?!rO*h8LRl?!av@P*s)Ih55LQ
zjqUiXc^aome1Fz_h(`+C$-w!ls_u4!EFu=-N>x>Vx8Vk0QNg=DOk!=95tznEfjcip
zpdHzR{a9Xe_&s>Eg9B@@w7@NDU}qtE6@JE*nh5vgNY&Xclu|qaXRs8@ur7PH0k`8%
z>~6xAV!50ask%?LU>mVy4#PXr4O`Miw-G+YV;I47CVzje!S-V^W0x^phhbrjZjy9g
z8*|}ox`O@q0UMgIR^6y{?_2j?(@916T;Um8dofW})zzGnS*WV&N<{Qz=Pu4+O}U%R
zzo+q2RaLXidz*C;F^o%vXY6iZk@j{yML1syah=r_;n_L|=HU~pt~vZ(Jl?^970OPo
zggtflxPRM~AKq8s4mPBr@GpyqzKEENh_$6xi->&@G2S5p=cJC=&Mx%gSb?0CQgEr}
z@UL;9g9F1gXACv)enf1GhzBC#C`81VG-mto>Kqmko11lb2@kgJZPD$*+YvF8*Ws)?
zjHw3RD0tV4SCosCG|#tmh`<WvcKt+PrmCttJAWMVpRL<*JT1?Mf@UAayB)_<HRE^$
z%W4iE#P)8-ajB71(!iK4@O0k^CmI+lkn?Z^b@kD0C)^1;{>M)E6{!*RBG8|Sc~~G7
z(EUwVt8PS^h^>3C>GB!R7M`&U-pgx^l=tQM97pk5#ujJn2-Y`Y<I;D-`WoGRIF+$Y
z8Gq}?m-rqIVO0h<WzPmPwinx_8!;%=!-A~q$vGTt!CG~PuqR_TXDspyzYJrA{LGjB
zhHa?H?~^#up$6W>)&h5c8$XV3#Z3intkXE2j)-;b_^cU?h%+TV+u5ATcJ?C-b<qh|
zV{?ZHtis{~cf76<T~8;x1$T6az+UP5ph=w_g8^wM3`mV(3qHa#(nrf%cq(ICvSx12
y!}z6X?+&~x-HZeI<zAPr=1@LwC1#{CKl2ZtWA>LCgq0Bh0000<MNUMnLSTYn-O@e)

delta 876
zcmV-y1C#va2Z9HXBYy))Nkl<Zc-p;}J4{+p7{@O*CUtaTVQ_GCG@K?~-HiiF!$i^n
zA3PNwNmHZvK%)X_I*@c|7qJ8kL2+<!W#I@RzTzW9qp5>2lKAFAzwe~SQ187$FW!F1
z336@@-|zmv$NAI=e=HV@nL9c<zBhmgD(&Inp?G$7W^Ze2`+r*N86E#)WMsrYK0a<&
z<G5Td3!*3r#bQyoyu2&}gw1F)e)(5`007w30F+84<{a0}&5dw%byYq-KK=-beybT^
zcz8JA^?FqS;M+ewJ~Dv2yE~z&sYw78#J#;eOJ`^2kN*aM>-zdy(ChU~iPO_lad&su
z($&?a2=N3kG=DS{n3$NT8vx`N3<d+s3xqg1IT5$Fw=E`<NfzP>U~q6SFgZD?ItS1>
zRDp1DaUry{w6J{+0r?<iG8v26Y?eU03IIC7_#*_wo&m8R*Xh{8XN5vROsCW4-rnA@
zEP%)3VE}lb9u@fFK)8>9XlrY0sq^#m_oJhuB?-X5z<)qsYHCU~0EfUZ@RG#b;A$Ym
z#>NKCX0ycS^A!~VRC}+0;LdTOV;&+707^>%`uqFqR)8CKiZEOO1Xy2Rr<<Fb1j=0=
z0CS*@tKdZ-R0DE=f)VJrQUJHx%@oiAfQKTPOj0OEGB!3Q1#r1suNH#mZ_mSk0GI=c
z0QHn%HGk)o0J0%)I-Rdl1xn5<0c4X90n~QFTAZV;tgO&nE=S<bkpegzj=B}#<;OeU
zb4w%=3_!LI*zI-(pmeyJ<H}DZi^t=1Yio;uA9(-_0ZLbEB3652B>>r0Y_r)I0Cp_)
zpbCT<rIweM>CVm$nVFf92f%@Z1889|c~h8>$banYtULgYWO#*YWzlGq!kkFv=H{dT
zFetDP;B~5%MIsTpzrRoB=jY`CFa%mEu(Y&94-O8<!oq?)fYu=hhr{&n@R0cZeknjt
zPY(moG6ai@i}dK|hy;T{DL{93Hv_o8zt<E1s~{8#Ndc@@YhZeM+ID+;``00*dVjuO
ztz|FZOaK7sR4Vlj`hgUnwYBv_Utizn#>U2m$_~dbmY2R)+vjU_b@eCw*YpV{Bk5G!
z-roKe62t%#(HlM$)%y0e>;qi6xw-jQKA$gCKKl*yRPI01|44fP0000<MNUMnLSTZH
C>Y1tl

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabledSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridDisabledSmall.png
index 2ddf3bf9c96c5e53d5531866cfef0766fbb5b39f..c1f98fb78503dd196f029594cce45aee5fbd21e0 100644
GIT binary patch
delta 490
zcmV<G0Tuq&1A_#RBYyw{b3#c}2nYxWd<bNS00009a7bBm0006f0006f0lpGc2mk;8
z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10f0$FK~y-6jnchpRACUt
z@!w?63L!+r#HcAkbd87*l*NxmNZ}m_+KP7(^nSbrYby&uJAb<<28kAaut-3So3YqA
z;pBkeRP&!X?|J8W-U&R%3$wU}clcSngi}>(;}%|3z6INvDKp_F<~w{In=M!EK_}my
zb3Fd^c#7Y>+NUlw7)8V*e8xqbjfmCi|3VWHE4b9kiil~Q9m5k0F~EJCDIVeq?p3d?
zJuV*LX@kSeJb!?QIK;HW)9O!4j))i(i->98gO5GU`}orPX43ayDI&)BhGkrih+*A$
z0t*o_GJ8&#i-@(7v)Z3v0ny<ot^bS$Uo-P{X}W<AnK>yQVIebjj{X?2nVGwl@AW76
zpBVNhn2U%8i9H;a2We*Lr20{{9}zKV<uzu@^APW`fn#;d;{e}r5^H8A9u(ikIb3hB
zlbO#-(*SQWbH8{6%bEGM<H6m`d|CO`z6YlrcYU#L>c*(=!B)i4%dKM^5$!T9n(e`z
g&Y6vfxKR1lUyK=lvcM;PXaE2J07*qoM6N<$f~KY57XSbN

delta 446
zcmV;v0YUzQ1lI$QBYy#&Nkl<Zc-oEAJ8QyF6ae6x&0pXYce}bc_`*m2fkS^qX{Y{(
z4$>O&5k*819DJdo#$B$HAc~6Uls20V4hm{+?}JEcqvXKNg(T<WoO2Tn;1~{vvdiTX
zz@0ds&qz^}cc;_&ar=xTm%(5FL!pq{EEypLj>jX|@Aqi4*?+uwJf6>gfGo=}91fcT
znx=un;Xrr1(0Dw4#qWMu2J{NH+byu!Y_t-LyhNi>@e1_&eHe*EOaT&?%Y{}!7M=%K
zuh-wjV$qS!W)TH?z1~AWZ{>74QEatZsi{<omn2D}K)2h4f*?Euj4dq|3pE~(^O;PB
z0i90A5<rqkC4Zy>0$eL-x7&Azc-sa+2q20gpUdSK&}y|Fo`RmN$8xz;6Nv<$&*vG?
zY&Kyq7^DElaeor^-5B%vTummEe4$WaK%>!se!t(+5RE{oRANBAUWY!P&oVHZ&D3-{
z&6mq%2GnXb==FLn1Jmi00+mXI0o7_1;-AEA*00$dCO4DGPb?O5;4hc~fk5EdZnr;?
o7xl9??zi`MyPYx`jU<x$3sOQTAnrujkN^Mx07*qoM6N<$f=E%)m;e9(

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabled.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabled.png
index 3df73e6c43482f389dd45ea1477495103959df85..61d279d3ef60956b5f820010b63a5c3e98bba59a 100644
GIT binary patch
delta 468
zcmV;_0W1FY3GD-rBYyw{b3#c}2nYxWd<bNS00009a7bBm000C|000C|0YZzD`~Uy|
z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10cuG^K~z|U?bpGI6G0Hh
z@n6MBHcDg{S@7;7cnavjR}nA1g-3l0Pl6{w_9A!?Joywpfqx8$5Lb7T_K;r4#;)<C
zIXDGP5B$HX`ex{!=?SdyRXc9t2Q~?xqQm!u!vYtz&VC$2UrMn*aDsv-EnYQmu*!JV
zoa0r(`pJOve-fjCgB$2DiHK!`E$VzP;c#al|0*UpO*9d<TWB_rT<T~=)RAq|Kh;=4
zk9lL<tw~Q4K7YsCS|sCh+imzdVSNXsl=I(iEn;3TFIv26)>;0J2G&WB!!N?oz-XYu
zG$LL$*wwq?aYQ^!^6z7o<nQ)aCYtWxPk`|}FdF#Z4Rl=l^6kb^ou>(h8w2^*beSgb
z4Y!iSzkMM2+2Ilo8gPO4c#gBA_zNuYXu!Zne895?drjA&lu|zJlZZH}m!Dg_YI<xk
zUNswhNqTG!z6eJH2R9Igf6s5*{x@7Ed}jMDSq=0!sy$jYj(-6pg6>efFA!G%0000<
KMNUMnLSTYdD9^wE

delta 1251
zcmV<91RVSA1NI4!BYy<FNkl<Zc-pm>Nk}Y57=TOXx#5QUf{F((d3co9dF1LbARfGg
zAqOD`w;A^hLd1Q+Wh4Y5BoHrZL`B>V9=r;{RuMN`a2=hvG3vO?Oi#c6FQz)}bdS!A
zFFzF3UDnk9^}p4xA92d~__#JZJNqwx5aOd)tya6yXw+wBW`F+X>2LhlLw$XHUsF?)
z-WSE9C=x*sh}~`{H#axpsnMw8K7IPtTL1$9=zIZiI2=?tj)#W_Vm6z_qobprz@mS6
z3{Y2BXJ~G2rU0WBLjD!l>G+AxSw3WIB7D7IwZX8HACsO)NJt0)R|wnN+xa;;IfGsU
z6kZWxVgQ0u5r58h=PX}?A=(5Y0)XS$Mt=WjAqfcy)Dowsr^43OR(@`7?%<mMwY9Z|
zmX;O@@V$wUf2_{0WQx^>^KYUR9zZ#HvJw8XnWUto(6~T|<KtstV`C#fFE4NKRe+kB
z8bfPqD+Q>yu#*kPhyN@9!w!dk@DGp_JM02|_7^qq?tdU609fxI$e-VsNqTxZ{V9Wh
zco0@rR`Ru4?Vv{h7Z(>KE-voH#<R0Cl9ZGrz2Dv4(K$RkoGQWqJUKa`*?>Vw5BKw<
z>p0)u-U>@gOWNY%;$c;Q>gs9=fSbJqps@-{!Q3P!CWhE-HmVrs%gaj=6%|GI%+1X$
znoOqe8h;uZ914J{swzWUTN?!clhH_)3*@(S5X#fj6P<&DgQd0W>uVAg7AB=6TI2EY
zkt8Q4Q!6bjEbyzVt6WD%hutjzJ|lH(Z0rkw^Ye3(n3yQN-{0TU85PR+#K*@=%5mUX
z(b3U#jRAnAl>n8Mm68QKae*2D+k;<=1KomWp?_NtV19m{UtV73Al=mgFb41{I6OQg
zfq{W90HC^&$jC_P{rUNs&Ot#zZug+T{Xo*v(x^2c26zw-Dy|ZsqN0LY00G`>0lDB=
z=mNCJ?CdNL>Bu!UHYx$i%gZGfye9_ad*lEp2!Ju*7J#K8W`U~<Adg8zM8vBuaNUD~
zS$}{okOQc?pscLyt7HM&!-7zL76VWXLIhxy@Vx*`Im*@570m*a>FH^HZEcN%J4Xpn
zT3RYu0JA`DS`^m^S1UxghgC+otC$O>rlu%>Y8}w)^%MZ<y|n=T1_iUgH3;QrO-@eo
z>+9<r=urni7oh2|q%yO;27rn~LqjD1sDJac7m$nG1q?v76zg<43V;<0FBMl8xJEd0
z!CP5?g(x*Ol|D~QOz@kVn_OpSr#b*OBnTj<X5#vFYC-sx1)%fhp+n-jy1LW>uqDGQ
z)Dr-U#X@Ivfu{gtV`Dt@iClMgw-Nvv1?mDc88#MQs}SLN*rK6~j*jv>J3CxYPk)a(
z0J^|a3;5!Kk&zL8cXyZT?d??u@Wutc01OWg^Lu-HTwh<G5}>H4hytL=u=`=D#RS0u
z0s^FWyk1c>8jagMQ~}&AtdklV8shi&_qqQ5ekDL*VIc)zzWqN00Wb>&1_qP>1qB6$
z_V#ui-d=KXwS>EMcl+cP1AwK)#azX2p&lp!GBPrLC@CrV1x)DAS}J*K_1gPe>uk)-
z%=`^8@-uWs%C0yoD=QcRBn3Jm4f_w>)35hr9pFTWh4X`hgIoFEz5tVW3|%;X7;yjq
N002ovPDHLkV1j9gKTQAt

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabledSmall.png b/Kieker.WebGUI/src/main/webapp/img/icons/GridEnabledSmall.png
index a24f021ddb43517639631603f5d23b9b89a6ce0b..c2eadcbb920b4da7b02e68387ab4c03450dc90a3 100644
GIT binary patch
delta 342
zcmV-c0jd7b1n>foBYyw{b3#c}2nYxWd<bNS00009a7bBm0006h0006h0UDba_5c6?
z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10PRUcK~y-6&C)GP15gyk
z@!#1d4#cL(xgdxp!C)R34PrIeR`v}B`zmHdFl!QDz;B_&tbf5EC^E0XJ3QEAK_9sA
z{LjOIdk!aXj%#1q!7ZLEucCuX-|FMA`W_5RDM~4Dg^k3098I{^?vfuiOsT*b9xCtF
z5uPfqV+j|jXCKGaFTe=x`fjk5cz~0{ZQLh6YGGVTd4-7hz+2+?oYz`O`FQFbw9t)+
zy)@HyM66WaL{BH>Fqe3F>L2jechEvJBHEQ3m`yzMBZo-b44mSz7Jhq3UH-!kdJ!?<
oc^pK<WP~*=M#M1nyd>^@0@N3dYd>Hdf&c&j07*qoM6N<$f`u87oB#j-

delta 568
zcmV-80>}OE0?-7IBYy%HNkl<Zc-n=NNsAgm6vs;^&?+8s@(_Bi!9Xsq?Gg}1a?8=f
ze2S2q@)ZI(NTTA7h$47!L&fbfCn*m>@vcPBj5jBaOS^TYsyf{mb&?0KU%y&@_5S^;
z6#!ei-EJC<#<$=J+wb>iJRX12>-Aqw=M?18YPH~N*A4e$kAD+{T{w0Gwrd`|ym~~#
z;qar=>HK;IXf~Vh!RF>Z|H8=*`{s{tF^?AjdR&7$rvL;&K;3TlgWK)?b_RH1d&7N4
z3_W$T;sNtaCB`cTEFb3J-SY)dsZ?M-pQB!{_uk|2_+>z&(SRH_rBX?$tJMl<G#WWB
z77L(IC;-p%V1K*ag6VWRNu^TPu~-aIK)qgv4u^vyi;0m9TCMi4Nal9C9eu|i^ga{{
zvC(K$pnzJf25mMQC+U(-Ua!|ctyar9F@zA9OeXg}pO1}1A|jw#tx^Cf^O6K9lFf(1
zfk>bLxq?ci0_}GDKP8ZeyFg(?g5U3F<MFr%D3{C7YJaspS;2C-q*9J01Ofpzkw}Pu
zQmF(j7K;ox)=pX{<r08Y5DW&{WHKoNip3%{o6Y}~AXPUSjVK_UPK$s-p#TjA!^H}Y
zyCGFT0O4?$&15nnAfL}elgT8vakJR~hGEX4WP`zg0<zhx2*~Af5dS0`p<lAo@qWMm
z)9dwK<1rg70$eWFtxl(VMHUh#?K+O9<Fnap-05_pWbbd^O@$zRSdE4N0000<MNUMn
GLSTYXq6)bH

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/Home.png b/Kieker.WebGUI/src/main/webapp/img/icons/Home.png
index 2e7d58db9a686cf07c74b6419fc68138d547d37c..9120d2240f9cd433d8515bda24ad18f829ffba72 100644
GIT binary patch
delta 812
zcmV+{1JnGA2EqoABYy)4Nkl<Zc-no_dq`7J90&04-F7#f^SWt8S~Q$1R%SZcG&2iQ
z>yPyye5_>zl|7^gf{KVxC@6^fqk<Ylf25#h!&fTniGNg76s7i#@=;3SrrUJe-OJnA
zoupKD?;rP^bAP|jJ->6#rSPB2w9S|UaGtvQhOThGqs<Z<AAhgN3<QHid22R&36D{;
zB^yhNbH<&cR)K)>$1;k7x?7g6j<&|^3~l<eAK!nNvsSLHm=)MYlD!jS*3DZ>86WG#
z{k!cpsZ3sA*kp(@Y~1v$zpvN4B3<`yz(kV$9;bCnk&#g?)_~(Ue16}Jjyuh^tW|lZ
z%J-F<2L}4h+JDTPzk%%}IpA?vOH4bNB&CX!&mnvZg+hG&_!ic-*5L7~DiQ1TnzR2b
zA)Gwvby;`p-pgpxwD5S`plLB=G8tShC&Xe2x?Vg*dut<d*A<$}_aB-DOeIA*9P6^~
zIdG6k%gjccTn^jF2wdai1fdBM1BF6?u`vf;K7NSWnty6L9TS&dQ*Y^_N=k~CjSlvA
zo;-D8?h1V_7)B1V@?gCzCMMjVD2fLpQ4&l}au~G_<JFT+T)22;Fg|hNYJLXi&z(`4
z%8Y$-#T@cQ318CNClBEK*~_;R7HOc-=kaaUI{};B2DLhs`dvaxi$$r|Yx`s}IYc5c
zA9(N5QGa;e-{S*hx?<$-t>njjtQ!u;7?M>>X8_F>rB0tQ1<-t8=hYK%_gMKhlU0hm
zT_+=e&%*;M)v{@zx#_l2r%UgX#>A2>ivZ7WRKnlW0XH3wgp5My%Z~Bm0Y6K2#Q{~y
z@@b%{sUZSL2_O*hfp4l$Bk<`V0wE64%&o{MJ%17b0xZ9+DeAOoz<lkp(qLF00fZ6Y
zUF})m%Oi+ILijZXq!t~X0(@{1Ks^HxXw%b{RO~i>5RelW9um+|5DkAqLdZ_K6o!TK
zfVs(-4Eo7?j;w<p*KamNzv+JG3j-2qbadi^r1=`LnC54YtWs0tFmdDv)8rgb;s3#I
q8zl+#_kIh7LO~uF7#w;{p7vj-zce_H+*Eu30000<MNUMnLSTYyeu=>V

delta 756
zcmV<Q0t@}Z28#xeBYy(YNkl<Zc-nnaZAepL7(MsiZLPV@nw#@ufo5xcO`#M^(NQK+
zA(kN{s6>rIE2DlCL=uI6D(sIzn3{?Psg+VBk{=mGU?NRjDoN?YZMtkaU2eMVu2&5y
zHJ{6Uf1Puluk%n?C4y4k(+qdr7BA~jfTGFAnpltP>quR^XMZ`C`j_}Nm@krFjaCPo
z*sT)Ff+RF3f*76fqO;#-{iL_lI;M<wM(Ps=R|xneHE1=O*hd*jBC(K<1>$-hz|er*
z33$DLV-~1vvCp)$wO_QnPJFy1Adas}O-)OyIUL1hXhL8ZKotNe<p50(L*t7{T%>_+
z1JK&-@jk77k$*ASs;!{-5qZ8lHD?F1l7nR&4j}Ud;*@~IXXR`rXMoxc!0iUAnygbj
zZDmS|A6bxjI{R{I7|9r?0-{0|%U&(!+t3?<rZ2$Y7*JkZa)lCUN()bBWn731Wswp4
zALg=nsbh%<jjFQBN=lMgRvHqYo+;nx!45ws?rDA2B!3q)I?z18fyKtfP}{@jlqBIn
zu`(&=j8H_@C<Q8xubut+8=(C=@M{|Q)_A{$VpO?#@ws<z^94L8h(OViwFPdr0Ug8z
zb50jN6x}MI;1|1RTY7oBdhcdNC;)Cmx*!uX#0L~H;h#OvKV*PT7mNIlGz>q<-#_ft
z6`wmmL4T-XsNj?*2hU&9s?=l^@IdavBG8wDl#GM;7!wZSMmu1hB3^JY7&VOJU3p1^
zt*`Frq7#K%{RQgm`WWr8eVQ15Y?ARICDjCp0hR@fq~CGk0kd@$I{i5G%}u)D*23f&
z)8~;TD>LFysW@zZzVcAcsqkIFg76R#6cYYI?QLe;90tbhFc^Q#_P#2rHg&aJn>O~2
zt~e&HD3D<|ob6I&WLkhKB3i0Y$a!3vvRlm-bAMNdsju@H>-O|aj}5t3y~e+TC)_~p
mg67T-)623h=k$bUHQa9k90WERPdq~a0000<MNUMnLSTa3m}B|?

diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/gridDisabled.svg b/Kieker.WebGUI/src/main/webapp/img/icons/gridDisabled.svg
new file mode 100644
index 00000000..91986885
--- /dev/null
+++ b/Kieker.WebGUI/src/main/webapp/img/icons/gridDisabled.svg
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="102.5625"
+   height="102.53125"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   sodipodi:docname="gridDisabled.svg"
+   inkscape:export-filename="C:\HiWi\kieker.webgui (working copy)\Kieker.WebGUI\src\main\webapp\img\icons\gridEnabled.png"
+   inkscape:export-xdpi="14.04"
+   inkscape:export-ydpi="14.04">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.9525"
+     inkscape:cx="12.916116"
+     inkscape:cy="44.387869"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1000"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(4.875,3709.4063)">
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3,3;stroke-dashoffset:0"
+       id="rect2985"
+       width="99.549774"
+       height="99.549774"
+       x="-3.3704739"
+       y="-3707.9121" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4,4;stroke-dashoffset:0"
+       d="m 19.462225,-3707.1769 0,98.8476"
+       id="path3755"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3757"
+       d="m 74.519853,-3707.9451 0,98.8476"
+       style="fill:#00000c;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4,4;stroke-dashoffset:0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3757-1"
+       d="m 46.991037,-3707.4329 0,98.8476"
+       style="fill:#00000c;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4,4;stroke-dashoffset:0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3784-0"
+       d="m 95.4441,-3685.6661 -98.8476,0"
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4,4;stroke-dashoffset:0" />
+    <path
+       style="fill:#00000c;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4,4;stroke-dashoffset:0"
+       d="m 96.2123,-3630.6084 -98.8476,0"
+       id="path3786-9"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#00000c;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4,4;stroke-dashoffset:0"
+       d="m 95.7001,-3658.1373 -98.8476,0"
+       id="path3788-4"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/Kieker.WebGUI/src/main/webapp/img/icons/gridEnabled.svg b/Kieker.WebGUI/src/main/webapp/img/icons/gridEnabled.svg
new file mode 100644
index 00000000..4a597e6f
--- /dev/null
+++ b/Kieker.WebGUI/src/main/webapp/img/icons/gridEnabled.svg
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="102.5625"
+   height="102.53125"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   sodipodi:docname="gridEnabled.svg"
+   inkscape:export-filename="C:\HiWi\kieker.webgui (working copy)\Kieker.WebGUI\src\main\webapp\img\icons\gridEnabled.png"
+   inkscape:export-xdpi="28.080439"
+   inkscape:export-ydpi="28.080439">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.905"
+     inkscape:cx="21.048893"
+     inkscape:cy="40.977722"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1000"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(4.875,3709.4063)">
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none"
+       id="rect2985"
+       width="99.549774"
+       height="99.549774"
+       x="-3.3704739"
+       y="-3707.9121" />
+    <g
+       id="g3777"
+       transform="translate(-2.723877e-6,0)"
+       style="fill:none;stroke:#000000;stroke-opacity:0.99215686000000003">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3755"
+         d="m 19.462228,-3707.1769 0,98.8476"
+         style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none" />
+      <path
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none"
+         d="m 74.519856,-3707.9451 0,98.8476"
+         id="path3757"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none"
+         d="m 46.99104,-3707.4329 0,98.8476"
+         id="path3757-1"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="translate(-2.723877e-6,0)"
+       id="g3782"
+       style="fill:none;stroke:#000000;stroke-opacity:0.99215686000000003">
+      <path
+         style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none"
+         d="m 19.462228,-3707.1769 0,98.8476"
+         id="path3784"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3786"
+         d="m 74.519856,-3707.9451 0,98.8476"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3788"
+         d="m 46.99104,-3707.4329 0,98.8476"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none" />
+    </g>
+    <g
+       transform="matrix(0,1,-1,0,-3611.7328,-3705.1283)"
+       id="g3782-4"
+       style="fill:none;stroke:#000000;stroke-opacity:0.99215686000000003">
+      <path
+         style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none"
+         d="m 19.462228,-3707.1769 0,98.8476"
+         id="path3784-0"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3786-9"
+         d="m 74.519856,-3707.9451 0,98.8476"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3788-4"
+         d="m 46.99104,-3707.4329 0,98.8476"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99215686000000003;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
-- 
GitLab